[OpenStack-Infra] client manager setup in tempest

John Warren jswarren at linux.vnet.ibm.com
Fri Aug 7 00:35:40 UTC 2015


Could somebody explain to me how this code in tempest/test.py can  
possibly work:

     @classmethod
     def setup_credentials(cls):
         """Allocate credentials and the client managers from them.
         A test class that requires network resources must override
         setup_credentials and defined the required resources before super
         is invoked.
         """
         for credentials_type in cls.credentials:
             # This may raise an exception in case credentials are not  
available
             # In that case we want to let the exception through and the test
             # fail accordingly
             if isinstance(credentials_type, six.string_types):
                 manager = cls.get_client_manager(
                     credential_type=credentials_type)
                 setattr(cls, 'os_%s' % credentials_type, manager)
                 # Setup some common aliases
                 # TODO(andreaf) The aliases below are a temporary hack
                 # to avoid changing too much code in one patch. They should
                 # be removed eventually
                 if credentials_type == 'primary':
                     cls.os = cls.manager = cls.os_primary
                 if credentials_type == 'admin':
                     cls.os_adm = cls.admin_manager = cls.os_admin
                 if credentials_type == 'alt':
                     cls.alt_manager = cls.os_alt
             elif isinstance(credentials_type, list):
                 manager = cls.get_client_manager(roles=credentials_type[1:],
                                                  force_new=True)
                 setattr(cls, 'os_roles_%s' % credentials_type[0], manager)

I'm wondering about the following line:

cls.os_adm = cls.admin_manager = cls.os_admin

 From inside the root directory I do a grep search:

$ grep -Hr os_admin tempest
Binary file tempest/test.pyc matches
tempest/test.py:                    cls.os_adm = cls.admin_manager =  
cls.os_admin
tempest/api/baremetal/admin/base.py:        cls.client =  
cls.os_admin.baremetal_client
Binary file tempest/api/baremetal/admin/base.pyc matches

This indicates to me that "os_admin" isn't being assigned a value  
anywhere.  Therefore, I would expect an AttributeError (class  
BaseTestCase has no attribute 'os_admin'), yet this class method seems  
to work.  What am I missing?

Thanks,

John




More information about the OpenStack-Infra mailing list