Ejemplo n.º 1
0
    def get_tenant_name(self, tenant_id=None):
        """Returns tenant name from context or db.

        If tenant id stored in context matches requested one,
        then return tenant name from context.
        If incoming tenant_id is different from context one then query db.
        """
        tenant_id_in_query = tenant_id or self.tenant_id
        if tenant_id_in_query:
            if self.context.tenant_name and (self.context.tenant_id
                                             == tenant_id_in_query):
                return self.context.tenant_name

            if self.grid_config.tenant_name_persistence:
                tenant = dbi.get_tenant(self.context.session,
                                        tenant_id_in_query)
                if tenant:
                    return tenant.tenant_name

        if self.grid_config.tenant_name_persistence:
            # Try resync with keystone if still no tenant name is found
            if km.sync_tenants_from_keystone(self.context):
                tenant = dbi.get_tenant(self.context.session,
                                        tenant_id_in_query)
                if tenant:
                    return tenant.tenant_name
        else:
            tenants = km.get_all_tenants()
            for tenant in tenants:
                if tenant.id == tenant_id_in_query:
                    return tenant.name
        return None
Ejemplo n.º 2
0
    def get_tenant_name(self, tenant_id=None):
        """Returns tenant name from context or db.

        If tenant id stored in context matches requested one,
        then return tenant name from context.
        If incoming tenant_id is different from context one then query db.
        """
        tenant_id_in_query = tenant_id or self.tenant_id
        if tenant_id_in_query:
            if self.context.tenant_name and (
                    self.context.tenant_id == tenant_id_in_query):
                return self.context.tenant_name

            if self.grid_config.tenant_name_persistence:
                tenant = dbi.get_tenant(self.context.session,
                                        tenant_id_in_query)
                if tenant:
                    return tenant.tenant_name

        if self.grid_config.tenant_name_persistence:
            # Try resync with keystone if still no tenant name is found
            if km.sync_tenants_from_keystone(self.context,
                                             self.context.auth_token):
                tenant = dbi.get_tenant(self.context.session,
                                        tenant_id_in_query)
                if tenant:
                    return tenant.tenant_name
        else:
            tenants = km.get_all_tenants(self.context.auth_token)
            for tenant in tenants:
                if tenant.id == tenant_id_in_query:
                    return tenant.name
        return None
Ejemplo n.º 3
0
 def test_sync_tenants_from_keystone(self, AddTenantMock, get_all_tenants):
     # prepare test data
     context = mock.Mock()
     context.session = 'test_session'
     get_all_tenants.return_value = self.tenants
     # call tested function
     ret = keystone_manager.sync_tenants_from_keystone(context)
     # check return value and calls
     assert ret == len(self.tenants)
     get_all_tenants.assert_called_once_with()
     expected_call_list = [
         mock.call(context.session, t.id, t.name) for t in self.tenants
     ]
     assert AddTenantMock.call_args_list == expected_call_list
 def test_sync_tenants_from_keystone(self, AddTenantMock, get_all_tenants):
     # prepare test data
     context = mock.Mock()
     context.session = 'test_session'
     auth_token = 'test_auth_token'
     get_all_tenants.return_value = self.tenants
     # call tested function
     ret = keystone_manager.sync_tenants_from_keystone(context, auth_token)
     # check return value and calls
     assert ret == len(self.tenants)
     get_all_tenants.assert_called_once_with(auth_token)
     expected_call_list = [
         mock.call(context.session, t.id, t.name) for t in self.tenants]
     assert AddTenantMock.call_args_list == expected_call_list
Ejemplo n.º 5
0
 def test_sync_tenants_from_keystone_without_token(self, AddTenantMock,
                                                   get_all_tenants):
     ret = keystone_manager.sync_tenants_from_keystone('context', None)
     assert ret is None
     get_all_tenants.assert_not_called()
     AddTenantMock.assert_not_called