def _login(self, auto_refresh=False, force=False): """ Internal method responsible to do a login on UCSM server. Args: auto_refresh (bool): if set to True, it refresh the cookie continuously force (bool): if set to True it reconnects even if cookie exists and is valid for respective connection. Returns: True on successful connect """ from mometa.top.TopSystem import TopSystem from mometa.firmware.FirmwareRunning import FirmwareRunning, \ FirmwareRunningConsts from ucscoremeta import UcsVersion from ucsmethodfactory import aaa_login from ucsmethodfactory import config_resolve_class from ucsmethodfactory import config_resolve_dn if self.__validate_connection(): return True elem = aaa_login(in_name=self.__username, in_password=self.__password) response = self.post_elem(elem) if response.error_code != 0: self.__clear() raise UcsException(response.error_code, response.error_descr) self.__update(response) # Verify not to connect to IMC nw_elem = config_resolve_class(cookie=self.__cookie, in_filter=None, class_id="networkElement") nw_elem_response = self.post_elem(nw_elem) # To Do - returns error tag if nw_elem_response.error_code != 0: self.__clear() return False top_system = TopSystem() if response.out_version is None or response.out_version == "": firmware = FirmwareRunning(top_system, FirmwareRunningConsts.DEPLOYMENT_SYSTEM) elem = config_resolve_dn(cookie=self.__cookie, dn=firmware.dn) response = self.post_elem(elem) if response.error_code != 0: raise UcsException(response.error_code, response.error_descr) firmware = response.out_config.child[0] self._version = UcsVersion(firmware.version) top_system = TopSystem() elem = config_resolve_dn(cookie=self.__cookie, dn=top_system.dn) response = self.post_elem(elem) if response.error_code != 0: raise UcsException(response.error_code, response.error_descr) top_system = response.out_config.child[0] self._ucs = top_system.name self.__virtual_ipv4_address = top_system.address if auto_refresh: self.__start_refresh_timer() return True
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