Beispiel #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)
    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)
Beispiel #3
0
 def test_delete(self):
     site = {'site_id': 'test_site_uuid',
             'site_name': 'test_site',
             'az_id': 'test_az_uuid'}
     models.create_site(self.context, site)
     models.delete_site(self.context, 'test_site_uuid')
     self.assertRaises(exception.ResourceNotFound, models.get_site,
                       self.context, 'test_site_uuid')
Beispiel #4
0
 def test_update(self):
     site = {'site_id': 'test_site_uuid',
             'site_name': 'test_site',
             'az_id': 'test_az1_uuid'}
     models.create_site(self.context, site)
     update_dict = {'site_id': 'fake_uuid',
                    'site_name': 'test_site2',
                    'az_id': 'test_az2_uuid'}
     ret = models.update_site(self.context, 'test_site_uuid', update_dict)
     # primary key value will not be updated
     self.assertEqual(ret['site_id'], 'test_site_uuid')
     self.assertEqual(ret['site_name'], 'test_site2')
     self.assertEqual(ret['az_id'], 'test_az2_uuid')
Beispiel #5
0
    def post(self, **kw):
        context = _extract_context_from_environ(_get_environment())
        if not context.is_admin:
            pecan.abort(400, 'Admin role required to create sites')
            return

        site_name = kw.get('name')
        is_top_site = kw.get('top', False)

        if not site_name:
            pecan.abort(400, 'Name of site required')
            return

        site_filters = [{
            'key': 'site_name',
            'comparator': 'eq',
            'value': site_name
        }]
        sites = models.list_sites(context, site_filters)
        if sites:
            pecan.abort(409, 'Site with name %s exists' % site_name)
            return

        ag_name = 'ag_%s' % site_name
        # top site doesn't need az
        az_name = 'az_%s' % site_name if not is_top_site else ''

        try:
            site_dict = {
                'site_id': str(uuid.uuid4()),
                'site_name': site_name,
                'az_id': az_name
            }
            site = models.create_site(context, site_dict)
        except Exception as e:
            LOG.debug(e.message)
            pecan.abort(500, 'Fail to create site')
            return

        # top site doesn't need aggregate
        if is_top_site:
            pecan.response.status = 201
            return {'site': site}
        else:
            try:
                top_client = client.Client()
                top_client.create_aggregates(context, ag_name, az_name)
            except Exception as e:
                LOG.debug(e.message)
                # delete previously created site
                models.delete_site(context, site['site_id'])
                pecan.abort(500, 'Fail to create aggregate')
                return
            pecan.response.status = 201
            return {'site': site}
Beispiel #6
0
 def test_query(self):
     site1 = {'site_id': 'test_site1_uuid',
              'site_name': 'test_site1',
              'az_id': 'test_az1_uuid'}
     site2 = {'site_id': 'test_site2_uuid',
              'site_name': 'test_site2',
              'az_id': 'test_az2_uuid'}
     models.create_site(self.context, site1)
     models.create_site(self.context, site2)
     filters = [{'key': 'site_name',
                 'comparator': 'eq',
                 'value': 'test_site2'}]
     sites = models.list_sites(self.context, filters)
     self.assertEqual(len(sites), 1)
     self.assertEqual(sites[0], site2)
     filters = [{'key': 'site_name',
                 'comparator': 'eq',
                 'value': 'test_site3'}]
     sites = models.list_sites(self.context, filters)
     self.assertEqual(len(sites), 0)
Beispiel #7
0
    def post(self, **kw):
        context = _extract_context_from_environ(_get_environment())
        if not context.is_admin:
            pecan.abort(400, 'Admin role required to create sites')
            return

        site_name = kw.get('name')
        is_top_site = kw.get('top', False)

        if not site_name:
            pecan.abort(400, 'Name of site required')
            return

        site_filters = [{'key': 'site_name', 'comparator': 'eq',
                         'value': site_name}]
        sites = models.list_sites(context, site_filters)
        if sites:
            pecan.abort(409, 'Site with name %s exists' % site_name)
            return

        ag_name = utils.get_ag_name(site_name)
        # top site doesn't need az
        az_name = utils.get_az_name(site_name) if not is_top_site else ''

        try:
            site_dict = {'site_id': str(uuid.uuid4()),
                         'site_name': site_name,
                         'az_id': az_name}
            site = models.create_site(context, site_dict)
        except Exception as e:
            LOG.debug(e.message)
            pecan.abort(500, 'Fail to create site')
            return

        # top site doesn't need aggregate
        if is_top_site:
            pecan.response.status = 201
            return {'site': site}
        else:
            try:
                top_client = client.Client()
                top_client.create_aggregates(context, ag_name, az_name)
                site_api = cascading_site_api.CascadingSiteNotifyAPI()
                site_api.create_site(context, site_name)
            except Exception as e:
                LOG.debug(e.message)
                # delete previously created site
                models.delete_site(context, site['site_id'])
                pecan.abort(500, 'Fail to create aggregate')
                return
            pecan.response.status = 201
            return {'site': site}
    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)