def query_dn(self, dn, hierarchy=False, need_response=False): """ Finds an object using it's distinguished name. Args: dn (str): distinguished name of the object to be queried for. hierarchy(bool): True/False, get all objects in hierarchy if True need_response(bool): True/False, return the response xml node, instead of parsed objects Returns: managedobject or None by default\n managedobject list if hierarchy=True\n externalmethod object if need_response=True\n Example: obj = handle.lookup_by_dn("fabric/lan/net-100")\n obj = handle.lookup_by_dn("fabric/lan/net-100", hierarchy=True)\n obj = handle.lookup_by_dn("fabric/lan/net-100", need_response=True)\n obj = handle.lookup_by_dn("fabric/lan/net-100", hierarchy=True, need_response=True)\n """ from ucsbasetype import DnSet, Dn from ucsmethodfactory import config_resolve_dns if not dn: raise ValueError("Provide dn.") dn_set = DnSet() dn_obj = Dn() dn_obj.value = dn dn_set.child_add(dn_obj) elem = config_resolve_dns(cookie=self.cookie, in_dns=dn_set, in_hierarchical=hierarchy) response = self.post_elem(elem) if response.error_code != 0: raise UcsException(response.error_code, response.error_descr) if need_response: return response if hierarchy: out_mo_list = ucscoreutils.extract_molist_from_method_response( response, hierarchy) return out_mo_list mo = None if len(response.out_configs.child) > 0: mo = response.out_configs.child[0] return mo
def query_children(self, in_mo=None, in_dn=None, class_id=None, hierarchy=False): """ Finds children of a given managed object or distinguished name. Arguments can be specified to query only a specific type(class_id) of children. Arguments can also be specified to query only direct children or the entire hierarchy of children. Args: in_mo (managed object): query children managed object under this object. in_dn (dn string): query children managed object for a given managed object of the respective dn. class_id(str): by default None, if given find only specific children object for a given class_id. hierarchy(bool): if set to True will return all the child hierarchical objects. Returns: managedobjectlist or None by default\n managedobjectlist or None if hierarchy=True\n Example: mo_list = handle.query_children(in_mo=mo)\n mo_list = handle.query_children(in_mo=mo, class_id="classid")\n mo_list = handle.query_children(in_dn=dn)\n mo_list = handle.query_children(in_dn=dn, class_id="classid")\n """ from ucsmeta import MO_CLASS_ID from ucsmethodfactory import config_resolve_children if not in_mo and not in_dn: raise ValueError('[Error]: GetChild: Provide in_mo or in_dn.') if in_mo: parent_dn = in_mo.dn elif in_dn: parent_dn = in_dn if class_id: if ucsgenutils.word_u(class_id) in MO_CLASS_ID: meta_class_id = ucsgenutils.word_l(class_id) else: meta_class_id = class_id else: meta_class_id = class_id elem = config_resolve_children(cookie=self.cookie, class_id=meta_class_id, in_dn=parent_dn, in_filter=None, in_hierarchical=hierarchy) response = self.post_elem(elem) if response.error_code != 0: raise UcsException(response.error_code, response.error_descr) out_mo_list = ucscoreutils.extract_molist_from_method_response( response, hierarchy) return out_mo_list
def query_classid(self, class_id=None, filter_str=None, hierarchy=False, need_response=False): """ Finds an object using it's class id. Args: class_id (str): class id of the object to be queried for. filter_str(str): query objects with specific property with specific value or pattern specifying value. (property_name, "property_value, type="filter_type")\n property_name: Name of the Property\n property_value: Value of the property (str or regular expression)\n filter_type: eq - equal to\n ne - not equal to\n ge - greater than or equal to\n gt - greater than\n le - less than or equal to\n lt - less than\n re - regular expression\n logical filter type: not, and, or\n e.g. '(dn,"org-root/ls-C1_B1", type="eq") or (name, "event", type="re", flag="I")'\n hierarchy(bool): if set to True will return all the child hierarchical objects. need_response(bool): if set to True will return only response object. Returns: managedobjectlist or None by default\n managedobjectlist or None if hierarchy=True\n methodresponse if need_response=True\n Example: obj = handle.query_classid(class_id="LsServer")\n obj = handle.query_classid(class_id="LsServer", hierarchy=True)\n obj = handle.query_classid(class_id="LsServer", need_response=True)\n filter_str = '(dn,"org-root/ls-C1_B1", type="eq") or (name, "event", type="re", flag="I")'\n obj = handle.query_classid(class_id="LsServer", filter_str=filter_str)\n """ # ToDo - How to handle unknown class_id from ucsmeta import MO_CLASS_ID from ucsfilter import generate_infilter from ucsmethodfactory import config_resolve_class if not class_id: raise ValueError("Provide Parameter class_id") meta_class_id = ucscoreutils.find_class_id_in_mo_meta_ignore_case( class_id) if meta_class_id: is_meta_class_id = True else: meta_class_id = class_id is_meta_class_id = False if filter_str: in_filter = generate_infilter(meta_class_id, filter_str, is_meta_class_id) else: in_filter = None elem = config_resolve_class(cookie=self.cookie, class_id=meta_class_id, in_filter=in_filter, in_hierarchical=hierarchy) response = self.post_elem(elem) if response.error_code != 0: raise UcsException(response.error_code, response.error_descr) if need_response: return response out_mo_list = ucscoreutils.extract_molist_from_method_response( response, hierarchy) return out_mo_list