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)
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')
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')
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}
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)
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)