code: def request(self, config, format='xml', target='candidate', default_operation=None,
              test_option=None, error_option=None):
          
          node = new_ele("edit-config")
          node.append(util.datastore_or_url("target", target, self._assert))
          if error_option is not None:
              if error_option == "rollback-on-error":
                  self._assert(":rollback-on-error")
              sub_ele(node, "error-option").text = error_option
          if test_option is not None:
              self._assert(':validate')
              sub_ele(node, "test-option").text = test_option
          if default_operation is not None:
          # TODO: check if it is a valid default-operation
              sub_ele(node, "default-operation").text = default_operation
  # <<<<<<< HEAD
  #         node.append(validated_element(config, ("config", qualify("config"))))
  # =======
          if format == 'xml':
              node.append(validated_element(config, ("config", qualify("config"))))
          if format == 'text':
              config_text = sub_ele(node, "config-text")
              sub_ele(config_text, "configuration-text").text = config
  # >>>>>>> juniper
          return self._request(node)
docs: Loads all or part of the specified *config* to the *target* configuration datastore.
  
          *target* is the name of the configuration datastore being edited
  
          *config* is the configuration, which must be rooted in the `config` element. It can be specified either as a string or an :class:`~xml.etree.ElementTree.Element`.
  
          *default_operation* if specified must be one of { `"merge"`, `"replace"`, or `"none"` }
  
          *test_option* if specified must be one of { `"test_then_set"`, `"set"` }
  
          *error_option* if specified must be one of { `"stop-on-error"`, `"continue-on-error"`, `"rollback-on-error"` }
  
          The `"rollback-on-error"` *error_option* depends on the `:rollback-on-error` capability.