Esempio n. 1
0
    def get_config(self, provider, source, read_filter):
        if None in (provider, source, read_filter):
            raise _YPYServiceError(
                "provider, source, and filter cannot be None")

        with _handle_error():
            return self._ns.get_config(provider, source, read_filter)
Esempio n. 2
0
    def _encode(self, provider, entity, pretty, subtree):
        """Encode a YDK entity to string payload.

        Args:
            provider (ydk.providers.CodecServiceProvider): Codec provider.
            entity (ydk.types.Entity) : Encoding target.
            pretty (bool): Pretty formatting if True.

        Returns:
            Encoded payload if success.

        Raises:
            Instance of YPYError is encoding fails.
        """
        bundle_name = _get_bundle_name(entity)
        provider.initialize(bundle_name, _get_yang_path(entity))
        root_schema = provider.get_root_schema(bundle_name)

        if subtree:
            if provider.encoding != EncodingFormat.XML:
                raise _YPYServiceError(
                    'Subtree option can only be used with XML encoding')
            xml_codec = XmlSubtreeCodec()
            return xml_codec.encode(entity, root_schema)

        with _handle_error():
            data_node = _get_data_node_from_entity(entity, root_schema)
            codec_service = _Codec()
            result = codec_service.encode(data_node, provider.encoding, pretty)
            self.logger.debug(
                "Performing encode operation, resulting in {}".format(result))
            return result
Esempio n. 3
0
    def cancel_commit(self, provider, persist_id=None):
        if provider is None:
            raise _YPYServiceError("provider cannot be None")

        if persist_id is None:
            persist_id = -1

        with _handle_error():
            return self._ns.cancel_commit(provider, persist_id)
Esempio n. 4
0
    def validate(self, provider, source=None, url="", source_config=None):
        if provider is None or (source is None and source_config is None):
            raise _YPYServiceError(
                "provider and source/source_config cannot be None")

        with _handle_error():
            if type(source) == Datastore:
                return self._ns.validate(provider, source, url)
            elif source_config is not None:
                return self._ns.validate(provider, source_config)
            else:
                return self._ns.validate(provider, source)
Esempio n. 5
0
    def commit(self,
               provider,
               confirmed=False,
               confirm_timeout=-1,
               persist=-1,
               persist_id=-1):
        if provider is None:
            raise _YPYServiceError("provider cannot be None")

        with _handle_error():
            return self._ns.commit(provider, confirmed, confirm_timeout,
                                   persist, persist_id)
Esempio n. 6
0
    def edit_config(self,
                    provider,
                    target,
                    config,
                    default_operation="",
                    test_option="",
                    error_option=""):

        if None in (provider, target, config):
            raise _YPYServiceError(
                "provider, target, and config cannot be None")

        with _handle_error():
            return self._ns.edit_config(provider, target, config,
                                        default_operation, test_option,
                                        error_option)
Esempio n. 7
0
    def copy_config(self,
                    provider,
                    target,
                    source=None,
                    url="",
                    source_config=None):
        if None in (provider, target) or (source is None
                                          and source_config is None):
            raise _YPYServiceError(
                "provider, target, and source/source_config cannot be None")

        with _handle_error():
            if isinstance(source, Datastore):
                return self._ns.copy_config(provider, target, source, url)
            elif source_config is not None:
                return self._ns.copy_config(provider, target, source_config)
            else:
                return self._ns.copy_config(provider, target, source)
Esempio n. 8
0
    def _decode(self, provider, payload, subtree):
        """Decode payload to a YDK entity instance.

        Args:
            provider (ydk.providers.CodecServiceProvider): Codec provider.
            payload (str): Incoming payload, formatted in XML or JSON.

        Returns:
            A YDK entity (ydk.types.Entity) instance with children populated.

        Raises:
            - YPYServiceProviderError with _PAYLOAD_ERROR_MSG if payload
              contains more than one top level containers.
            - YPYServiceProviderError with _ENTITY_ERROR_MSG if no such entity
              could be found in local installed YDK model packages.
        """
        entity = self._get_top_entity(payload, provider.encoding)

        if subtree:
            if provider.encoding != EncodingFormat.XML:
                raise _YPYServiceError(
                    'Subtree option can only be used with XML encoding')
            xml_codec = XmlSubtreeCodec()
            return xml_codec.decode(payload, entity)

        bundle_name = _get_bundle_name(entity)
        provider.initialize(bundle_name, _get_yang_path(entity))

        root_schema = provider.get_root_schema(bundle_name)

        self.logger.debug("Performing decode operation on {}".format(payload))

        codec_service = _Codec()
        root_data_node = codec_service.decode(root_schema, payload,
                                              provider.encoding)

        if len(root_data_node.get_children()) != 1:
            self.logger.debug(_PAYLOAD_ERROR_MSG)
            raise _YPYServiceProviderError(_PAYLOAD_ERROR_MSG)
        else:
            for data_node in root_data_node.get_children():
                _get_entity_from_data_node(data_node, entity)
        return entity
Esempio n. 9
0
def handle_runtime_error():
    _exc = None
    try:
        yield
    except RuntimeError as err:
        msg = str(err)
        if ":" in msg:
            etype_str, msg = msg.split(":", 1)
            etype = _ERRORS.get(etype_str, _YPYError)
        else:
            etype = _YPYError
            msg = msg
        _exc = etype(msg)
    except TypeError as err:
        msg = str(err)
        if ':' in msg:
            etype_str, msg = msg.split(':', 1)
            _exc = _YPYServiceError(msg)
        else:
            _exc = _YPYError(msg)
    finally:
        if _exc:
            _raise(_exc)
Esempio n. 10
0
 def helper(self, provider, entity, *args, **kwargs):
     _, pname, ename = inspect.getargspec(func).args[:3]
     if provider is None or entity is None:
         err_msg = "'{0}' and '{1}' cannot be None".format(pname, ename)
         raise _YPYServiceError(error_msg=err_msg)
     return func(self, provider, entity, *args, **kwargs)
Esempio n. 11
0
    def kill_session(self, provider, session_id):
        if None in (provider, session_id):
            raise _YPYServiceError("provider and session_id cannot be None")

        with _handle_error():
            return self._ns.kill_session(provider, session_id)
Esempio n. 12
0
    def execute_rpc(self, provider, entity, top_entity=None):
        if None in (provider, entity):
            raise _YPYServiceError("provider and entity cannot be None")

        with _handle_error():
            return self._es.execute_rpc(provider, entity, top_entity)
Esempio n. 13
0
    def unlock(self, provider, target):
        if None in (provider, target):
            raise _YPYServiceError("provider and target cannot be None")

        with _handle_error():
            return self._ns.unlock(provider, target)
Esempio n. 14
0
    def discard_changes(self, provider):
        if provider is None:
            raise _YPYServiceError("provider cannot be None")

        with _handle_error():
            return self._ns.discard_changes(provider)
Esempio n. 15
0
    def delete_config(self, provider, target, url=""):
        if None in (provider, target):
            raise _YPYServiceError("provider and target cannot be None")

        with _handle_error():
            return self._ns.delete_config(provider, target, url)
Esempio n. 16
0
    def cancel_commit(self, provider, persist_id=-1):
        if None in (provider, persist_id):
            raise _YPYServiceError("provider and persist_id cannot be None")

        with _handle_error():
            return self._ns.cancel_commit(provider, persist_id)
Esempio n. 17
0
    def close_session(self, provider):
        if provider is None:
            raise _YPYServiceError("provider cannot be None")

        with _handle_error():
            return self._ns.close_session(provider)