コード例 #1
0
    def setUp(self):
        core.initialize()
        core.ModelBase.metadata.create_all(core.get_engine())
        # enforce foreign key constraint for sqlite
        core.get_engine().execute('pragma foreign_keys=on')
        self.context = context.Context()

        site_dict = {
            'site_id': FAKE_SITE_ID,
            'site_name': FAKE_SITE_NAME,
            'az_id': FAKE_AZ
        }
        config_dict = {
            'service_id': FAKE_SERVICE_ID,
            'site_id': FAKE_SITE_ID,
            'service_type': FAKE_TYPE,
            'service_url': FAKE_URL
        }
        models.create_site(self.context, site_dict)
        models.create_site_service_configuration(self.context, config_dict)

        global FAKE_RESOURCES
        FAKE_RESOURCES = [{'name': 'res1'}, {'name': 'res2'}]

        cfg.CONF.set_override(name='top_site_name', override=FAKE_SITE_NAME,
                              group='client')
        self.client = client.Client()
        self.client.resource_service_map[FAKE_RESOURCE] = FAKE_TYPE
        self.client.operation_resources_map['list'].add(FAKE_RESOURCE)
        self.client.operation_resources_map['create'].add(FAKE_RESOURCE)
        self.client.operation_resources_map['delete'].add(FAKE_RESOURCE)
        self.client.operation_resources_map['action'].add(FAKE_RESOURCE)
        self.client.service_handle_map[FAKE_TYPE] = FakeResHandle(None)
コード例 #2
0
    def setUp(self):
        core.initialize()
        core.ModelBase.metadata.create_all(core.get_engine())
        # enforce foreign key constraint for sqlite
        core.get_engine().execute('pragma foreign_keys=on')
        self.context = context.Context()

        site_dict = {
            'site_id': FAKE_SITE_ID,
            'site_name': FAKE_SITE_NAME,
            'az_id': FAKE_AZ
        }
        config_dict = {
            'service_id': FAKE_SERVICE_ID,
            'site_id': FAKE_SITE_ID,
            'service_type': FAKE_TYPE,
            'service_url': FAKE_URL
        }
        models.create_site(self.context, site_dict)
        models.create_site_service_configuration(self.context, config_dict)

        global FAKE_RESOURCES
        FAKE_RESOURCES = [{'name': 'res1'}, {'name': 'res2'}]

        cfg.CONF.set_override(name='top_site_name',
                              override=FAKE_SITE_NAME,
                              group='client')
        self.client = client.Client()
        self.client.resource_service_map[FAKE_RESOURCE] = FAKE_TYPE
        self.client.operation_resources_map['list'].add(FAKE_RESOURCE)
        self.client.operation_resources_map['create'].add(FAKE_RESOURCE)
        self.client.operation_resources_map['delete'].add(FAKE_RESOURCE)
        self.client.service_handle_map[FAKE_TYPE] = FakeResHandle(None)
コード例 #3
0
 def test_list_endpoint_not_unique(self):
     # add a new configuration with same site and service type
     config_dict = {
         'service_id': FAKE_SERVICE_ID + '_new',
         'site_id': FAKE_SITE_ID,
         'service_type': FAKE_TYPE,
         'service_url': FAKE_URL
     }
     models.create_site_service_configuration(self.context, config_dict)
     self.assertRaises(exception.EndpointNotUnique,
                       self.client.list_resources,
                       FAKE_RESOURCE, self.context, [])
コード例 #4
0
 def test_list_endpoint_not_unique(self):
     # add a new configuration with same site and service type
     config_dict = {
         'service_id': FAKE_SERVICE_ID + '_new',
         'site_id': FAKE_SITE_ID,
         'service_type': FAKE_TYPE,
         'service_url': FAKE_URL
     }
     models.create_site_service_configuration(self.context, config_dict)
     self.assertRaises(exception.EndpointNotUnique,
                       self.client.list_resources, FAKE_RESOURCE,
                       self.context, [])
コード例 #5
0
ファイル: client.py プロジェクト: MorS25/tricircle
    def _update_endpoint_from_keystone(self, cxt, is_internal):
        """Update the database by querying service endpoint url from Keystone

        :param cxt: context object
        :param is_internal: if True, this method utilizes pre-configured admin
        username and password to apply an new admin token, this happens only
        when auto_refresh_endpoint is set to True. if False, token in cxt is
        directly used, users should prepare admin token themselves
        :return: None
        """
        if is_internal:
            admin_context = tricircle_context.Context()
            admin_context.auth_token = self._get_admin_token()
            endpoint_map = self._get_endpoint_from_keystone(admin_context)
        else:
            endpoint_map = self._get_endpoint_from_keystone(cxt)
        for region in endpoint_map:
            # use region name to query site
            site_filters = [{'key': 'site_name', 'comparator': 'eq',
                             'value': region}]
            site_list = models.list_sites(cxt, site_filters)

            # skip region/site not registered in cascade service
            if len(site_list) != 1:
                continue
            for service in endpoint_map[region]:
                site_id = site_list[0]['site_id']
                config_filters = [{'key': 'site_id', 'comparator': 'eq',
                                   'value': site_id},
                                  {'key': 'service_type', 'comparator': 'eq',
                                   'value': service}]
                config_list = models.list_site_service_configuration(
                    cxt, config_filters)

                if len(config_list) > 1:
                    raise exception.EndpointNotUnique(site_id, service)
                if len(config_list) == 1:
                    config_id = config_list[0]['service_id']
                    update_dict = {
                        'service_url': endpoint_map[region][service]}
                    models.update_site_service_configuration(
                        cxt, config_id, update_dict)
                else:
                    config_dict = {
                        'service_id': str(uuid.uuid4()),
                        'site_id': site_id,
                        'service_name': '%s_%s' % (region, service),
                        'service_type': service,
                        'service_url': endpoint_map[region][service]
                    }
                    models.create_site_service_configuration(
                        cxt, config_dict)
コード例 #6
0
ファイル: client.py プロジェクト: kevin-zhangsen/tricircle
    def _update_endpoint_from_keystone(self, cxt, is_internal):
        """Update the database by querying service endpoint url from Keystone

        :param cxt: context object
        :param is_internal: if True, this method utilizes pre-configured admin
        username and password to apply an new admin token, this happens only
        when auto_refresh_endpoint is set to True. if False, token in cxt is
        directly used, users should prepare admin token themselves
        :return: None
        """
        if is_internal:
            admin_context = tricircle_context.Context()
            admin_context.auth_token = self._get_admin_token()
            endpoint_map = self._get_endpoint_from_keystone(admin_context)
        else:
            endpoint_map = self._get_endpoint_from_keystone(cxt)

        for region in endpoint_map:
            # use region name to query site
            site_filters = [{'key': 'site_name', 'comparator': 'eq',
                             'value': region}]
            site_list = models.list_sites(cxt, site_filters)
            # skip region/site not registered in cascade service
            if len(site_list) != 1:
                continue
            for service in endpoint_map[region]:
                site_id = site_list[0]['site_id']
                config_filters = [{'key': 'site_id', 'comparator': 'eq',
                                   'value': site_id},
                                  {'key': 'service_type', 'comparator': 'eq',
                                   'value': service}]
                config_list = models.list_site_service_configurations(
                    cxt, config_filters)

                if len(config_list) > 1:
                    raise exception.EndpointNotUnique(site_id, service)
                if len(config_list) == 1:
                    config_id = config_list[0]['service_id']
                    update_dict = {
                        'service_url': endpoint_map[region][service]}
                    models.update_site_service_configuration(
                        cxt, config_id, update_dict)
                else:
                    config_dict = {
                        'service_id': str(uuid.uuid4()),
                        'site_id': site_id,
                        'service_type': service,
                        'service_url': endpoint_map[region][service]
                    }
                    models.create_site_service_configuration(
                        cxt, config_dict)
コード例 #7
0
    def test_create(self):
        site = {'site_id': 'test_site_uuid',
                'site_name': 'test_site',
                'az_id': 'test_az_uuid'}
        site_ret = models.create_site(self.context, site)
        self.assertEqual(site_ret, site)

        configuration = {
            'service_id': 'test_config_uuid',
            'site_id': 'test_site_uuid',
            'service_type': 'nova',
            'service_url': 'http://test_url'
        }
        config_ret = models.create_site_service_configuration(self.context,
                                                              configuration)
        self.assertEqual(config_ret, configuration)