def login(self, name, username=None, password=None, nossl=None, port=None, proxy=None, auto_refresh=YesOrNo.FALSE, dump_xml=None, force=False): """ login method authenticates and connects to IMC. - name specifies the IP Address IMC Server. - username specifies the username credential. - password specifies the password credential. - nossl specifies if the connection is made via http(True) or https(False). Default is False. - port specifies the port. Default is 80(http) or 443(https). - proxy specifies if the is made via proxy. - auto_refresh specifes to True to keep the cookie alive.Default is False. """ #from ImcBase import ManagedObject, CoreUtils, ImcException, ImcValidationException from ImcMos import FirmwareRunning import getpass if name == None: raise ImcValidationException( '[Error]: Hostname/IP was not specified') if username == None: username = raw_input("Username: "******"": if not force: cr_dn = self.config_resolve_dn( ManagedObject(NamingId.TOP_SYSTEM).make_rn(), False, dump_xml) if cr_dn.error_code == 0: if str(name).lower() == str(self.__name).lower() and str( username).lower() == str(self.__username).lower(): return True else: raise ImcValidationException( "Handle has active connection with IMC %s using username %s .Create new handle to connect to IMC %s with username %s" % (self.__name, self.__username, name, username)) else: self.logout(dump_xml) self.__imc = name self.__name = name self.__username = username self.__password = password # self.__nossl = nossl if nossl != None and port != None: self.__nossl = nossl self.__port = int(port) elif nossl != None and port == None: if nossl: self.__port = 80 self.__nossl = True else: self.__port = 443 self.__nossl = False elif nossl == None and port != None: if int(port) == 80: self.__nossl = True self.__port = 80 elif int(port) == 443: self.__nossl = False self.__port = 443 else: self.__nossl = False self.__port = int(port) else: self.__nossl = False self.__port = 443 # if port != None: # self.__port = port # elif nossl == True: # self.__port = 80 # else: # self.__port = 443 if proxy != None: self.__proxy = proxy self.__cookie = "" response = self.aaa_login(username, password, dump_xml) if response == None: return False # No Reason to throw exception. if response.error_code != 0: self.__imc = None self.__virtual_ipv4_address = None self.__name = None self.__username = None self.__password = None self.__nossl = False self.__port = 443 raise ImcException(response.error_code, response.error_descr) self.__cookie = response.OutCookie self.__last_update_time = str(time.asctime()) self.__domains = response.OutDomains self.__priv = response.OutPriv.split(',') self.__refresh_period = int(response.OutRefreshPeriod) self.__session_id = response.OutSessionId self.__version = ImcVersion(response.OutVersion) #Validate CSeries if not self.__validate_imc(): self.logout() raise ImcValidationException( '[Error]: login : Invalid IMC Server <%s>' % (self.__name)) cr_dn = self.config_resolve_dn( ManagedObject(NamingId.TOP_SYSTEM).make_rn(), False, dump_xml) if cr_dn.error_code == 0: for top_system in cr_dn.OutConfig.child: self.__imc = top_system.Name self.__virtual_ipv4_address = top_system.Address if response.OutVersion == "" or response.OutVersion == None: firmware_obj = ManagedObject(NamingId.FIRMWARE_RUNNING) firmware_obj.Deployment = FirmwareRunning.CONST_DEPLOYMENT_SYSTEM rn_array = [ ManagedObject(NamingId.TOP_SYSTEM).make_rn(), ManagedObject(NamingId.MGMT_CONTROLLER).make_rn(), firmware_obj.make_rn() ] cr_dn = self.config_resolve_dn(CoreUtils.make_dn(rn_array), False, dump_xml) if cr_dn.error_code == 0: for firmware in cr_dn.OutConfig.child: self.__version = ImcVersion(firmware.Version) if auto_refresh in ImcUtils.AFFIRMATIVE_LIST: self.__refreshable = auto_refresh self.__start_refresh_timer() else: self.__stop_refresh_timer() if self.__imc not in default_imc: default_imc[self.__imc] = self return True
def login(self, name, username=None, password=None, nossl=None, port=None, proxy=None, auto_refresh=YesOrNo.FALSE, dump_xml=None, force=False): """ login method authenticates and connects to IMC. - name specifies the IP Address IMC Server. - username specifies the username credential. - password specifies the password credential. - nossl specifies if the connection is made via http(True) or https(False). Default is False. - port specifies the port. Default is 80(http) or 443(https). - proxy specifies if the is made via proxy. - auto_refresh specifes to True to keep the cookie alive.Default is False. """ #from ImcBase import ManagedObject, CoreUtils, ImcException, ImcValidationException from ImcMos import FirmwareRunning import getpass if name == None: raise ImcValidationException('[Error]: Hostname/IP was not specified') if username == None: username = raw_input("Username: "******"": if not force: cr_dn = self.config_resolve_dn(ManagedObject(NamingId.TOP_SYSTEM).make_rn(), False, dump_xml) if cr_dn.error_code == 0: if str(name).lower() == str(self.__name).lower() and str(username).lower() == str(self.__username).lower(): return True else: raise ImcValidationException("Handle has active connection with IMC %s using username %s .Create new handle to connect to IMC %s with username %s" %(self.__name,self.__username,name,username ) ) else : self.logout(dump_xml) self.__imc = name self.__name = name self.__username = username self.__password = password # self.__nossl = nossl if nossl != None and port != None: self.__nossl = nossl self.__port = int(port) elif nossl != None and port==None: if nossl: self.__port = 80 self.__nossl = True else: self.__port = 443 self.__nossl = False elif nossl == None and port != None: if int(port) == 80: self.__nossl = True self.__port = 80 elif int(port) == 443: self.__nossl = False self.__port = 443 else: self.__nossl = False self.__port = int(port) else: self.__nossl = False self.__port = 443 # if port != None: # self.__port = port # elif nossl == True: # self.__port = 80 # else: # self.__port = 443 if proxy != None: self.__proxy = proxy self.__cookie = "" response = self.aaa_login(username, password, dump_xml) if response == None: return False # No Reason to throw exception. if response.error_code != 0: self.__imc = None self.__virtual_ipv4_address = None self.__name = None self.__username = None self.__password = None self.__nossl = False self.__port = 443 raise ImcException(response.error_code, response.error_descr) self.__cookie = response.OutCookie self.__last_update_time = str(time.asctime()) self.__domains = response.OutDomains self.__priv = response.OutPriv.split(',') self.__refresh_period = int(response.OutRefreshPeriod) self.__session_id = response.OutSessionId self.__version = ImcVersion(response.OutVersion) #Validate CSeries if not self.__validate_imc(): self.logout() raise ImcValidationException('[Error]: login : Invalid IMC Server <%s>' %(self.__name)) cr_dn = self.config_resolve_dn(ManagedObject(NamingId.TOP_SYSTEM).make_rn(), False, dump_xml) if cr_dn.error_code == 0: for top_system in cr_dn.OutConfig.child: self.__imc = top_system.Name self.__virtual_ipv4_address = top_system.Address if response.OutVersion == "" or response.OutVersion == None: firmware_obj = ManagedObject(NamingId.FIRMWARE_RUNNING) firmware_obj.Deployment = FirmwareRunning.CONST_DEPLOYMENT_SYSTEM rn_array = [ManagedObject(NamingId.TOP_SYSTEM).make_rn(), ManagedObject(NamingId.MGMT_CONTROLLER).make_rn(), firmware_obj.make_rn()] cr_dn = self.config_resolve_dn(CoreUtils.make_dn(rn_array), False, dump_xml) if cr_dn.error_code == 0: for firmware in cr_dn.OutConfig.child: self.__version = ImcVersion(firmware.Version) if auto_refresh in ImcUtils.AFFIRMATIVE_LIST: self.__refreshable = auto_refresh self.__start_refresh_timer() else: self.__stop_refresh_timer() if self.__imc not in default_imc: default_imc[self.__imc] = self return True