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)
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
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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)
def discard_changes(self, provider): if provider is None: raise _YPYServiceError("provider cannot be None") with _handle_error(): return self._ns.discard_changes(provider)
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)
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)
def close_session(self, provider): if provider is None: raise _YPYServiceError("provider cannot be None") with _handle_error(): return self._ns.close_session(provider)