Beispiel #1
0
    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
Beispiel #2
0
    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