def get_resources(cls): """Returns Ext Resources.""" exts = [] parent = dict(member_name="agent", collection_name="agents") controller = resource.Resource(NetworkSchedulerController(), base.FAULT_MAP) exts.append(extensions.ResourceExtension(DHCP_NETS, controller, parent)) controller = resource.Resource(RouterSchedulerController(), base.FAULT_MAP) exts.append( extensions.ResourceExtension(L3_ROUTERS, controller, parent)) parent = dict(member_name="network", collection_name="networks") controller = resource.Resource(DhcpAgentsHostingNetworkController(), base.FAULT_MAP) exts.append( extensions.ResourceExtension(DHCP_AGENTS, controller, parent)) parent = dict(member_name="router", collection_name="routers") controller = resource.Resource(L3AgentsHostingRouterController(), base.FAULT_MAP) exts.append(extensions.ResourceExtension(L3_AGENTS, controller, parent)) return exts
def get_resources(cls): my_plurals = [(key, key[:-1]) for key in RESOURCE_ATTRIBUTE_MAP.keys()] attr.PLURALS.update(dict(my_plurals)) resources = [] plugin = manager.QuantumManager.get_service_plugins()[ constants.LOADBALANCER] for collection_name in RESOURCE_ATTRIBUTE_MAP: # Special handling needed for resources with 'y' ending # (e.g. proxies -> proxy) resource_name = collection_name[:-1] params = RESOURCE_ATTRIBUTE_MAP[collection_name] member_actions = {} if resource_name == 'pool': member_actions = {'stats': 'GET'} controller = base.create_resource( collection_name, resource_name, plugin, params, member_actions=member_actions, allow_pagination=cfg.CONF.allow_pagination, allow_sorting=cfg.CONF.allow_sorting) resource = extensions.ResourceExtension( collection_name, controller, path_prefix=constants.COMMON_PREFIXES[constants.LOADBALANCER], member_actions=member_actions, attr_map=params) resources.append(resource) for collection_name in SUB_RESOURCE_ATTRIBUTE_MAP: # Special handling needed for sub-resources with 'y' ending # (e.g. proxies -> proxy) resource_name = collection_name[:-1] parent = SUB_RESOURCE_ATTRIBUTE_MAP[collection_name].get('parent') params = SUB_RESOURCE_ATTRIBUTE_MAP[collection_name].get( 'parameters') controller = base.create_resource(collection_name, resource_name, plugin, params, allow_bulk=True, parent=parent) resource = extensions.ResourceExtension( collection_name, controller, parent, path_prefix=constants.COMMON_PREFIXES[constants.LOADBALANCER], attr_map=params) resources.append(resource) return resources
def setUp(self): """ Set up function """ super(QosExtensionTest, self).setUp() parent_resource = dict(member_name="tenant", collection_name="extensions/csco/tenants") controller = qos.QosController(QuantumManager.get_plugin()) res_ext = extensions.ResourceExtension('qos', controller, parent=parent_resource) self.test_app = setup_extensions_test_app( SimpleExtensionManager(res_ext)) self.contenttype = 'application/json' self.qos_path = '/extensions/csco/tenants/tt/qos' self.qos_second_path = '/extensions/csco/tenants/tt/qos/' self.test_qos_data = { 'qos': { 'qos_name': 'cisco_test_qos', 'qos_desc': { 'PPS': 50, 'TTL': 5, }, }, } self._l2network_plugin = l2network_plugin.L2Network()
def test_plugin_prefix_with_parent_resource(self): controller = self.DummySvcPlugin() parent = dict(member_name="tenant", collection_name="tenants") member = {'custom_member_action': "GET"} collections = {'collection_action': "GET"} res_ext = extensions.ResourceExtension('tweedles', controller, parent, path_prefix="/dummy_svc", member_actions=member, collection_actions=collections) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) index_response = test_app.get("/dummy_svc/tenants/1/tweedles") self.assertEqual(200, index_response.status_int) response = test_app.get("/dummy_svc/tenants/1/" "tweedles/1/custom_member_action") self.assertEqual(200, response.status_int) self.assertEqual(jsonutils.loads(response.body)['member_action'], "value") response = test_app.get("/dummy_svc/tenants/2/" "tweedles/collection_action") self.assertEqual(200, response.status_int) self.assertEqual(jsonutils.loads(response.body)['collection'], "value")
def get_resources(cls): """Returns Ext Resources.""" parent_resource = dict(member_name="tenant", collection_name="extensions/csco/tenants") controller = CredentialController(QuantumManager.get_plugin()) return [extensions.ResourceExtension('credentials', controller, parent=parent_resource)]
def get_resources(cls): """Returns Ext Resources.""" my_plurals = [(key, key[:-1]) for key in RESOURCE_ATTRIBUTE_MAP.keys()] attr.PLURALS.update(dict(my_plurals)) exts = [] plugin = manager.QuantumManager.get_plugin() for resource_name in ['router', 'floatingip']: collection_name = resource_name + "s" params = RESOURCE_ATTRIBUTE_MAP.get(collection_name, dict()) member_actions = {} if resource_name == 'router': member_actions = { 'add_router_interface': 'PUT', 'remove_router_interface': 'PUT' } quota.QUOTAS.register_resource_by_name(resource_name) controller = base.create_resource( collection_name, resource_name, plugin, params, member_actions=member_actions, allow_pagination=cfg.CONF.allow_pagination, allow_sorting=cfg.CONF.allow_sorting) ex = extensions.ResourceExtension(collection_name, controller, member_actions=member_actions, attr_map=params) exts.append(ex) return exts
def test_resource_extension_with_custom_member_action_and_attr_map(self): controller = self.ResourceExtensionController() member = {'custom_member_action': "GET"} params = { 'tweedles': { 'id': { 'allow_post': False, 'allow_put': False, 'validate': { 'type:uuid': None }, 'is_visible': True }, 'name': { 'allow_post': True, 'allow_put': True, 'validate': { 'type:string': None }, 'default': '', 'is_visible': True }, } } res_ext = extensions.ResourceExtension('tweedles', controller, member_actions=member, attr_map=params) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) response = test_app.get("/tweedles/some_id/custom_member_action") self.assertEqual(200, response.status_int) self.assertEqual( jsonutils.loads(response.body)['member_action'], "value")
def get_resources(cls): """ Returns Ext Resources """ exts = [] plugin = manager.QuantumManager.get_plugin() for resource_name in ['router', 'floatingip']: collection_name = resource_name + "s" params = RESOURCE_ATTRIBUTE_MAP.get(collection_name, dict()) member_actions = {} if resource_name == 'router': member_actions = { 'add_router_interface': 'PUT', 'remove_router_interface': 'PUT' } quota.QUOTAS.register_resource_by_name(resource_name) controller = base.create_resource(collection_name, resource_name, plugin, params, member_actions=member_actions) ex = extensions.ResourceExtension(collection_name, controller, member_actions=member_actions) exts.append(ex) return exts
def get_resources(cls): """ Returns Ext Resources """ controller = QuotaSetsController(QuantumManager.get_plugin()) return [ extensions.ResourceExtension(Quotasv2.get_alias(), controller, collection_actions={'tenant': 'GET'}) ]
def get_resources(cls): """Returns Extended Resource for dummy management.""" q_mgr = manager.QuantumManager.get_instance() dummy_inst = q_mgr.get_service_plugins()['DUMMY'] controller = base.create_resource( COLLECTION_NAME, RESOURCE_NAME, dummy_inst, RESOURCE_ATTRIBUTE_MAP[COLLECTION_NAME]) return [extensions.ResourceExtension(COLLECTION_NAME, controller)]
def get_resources(self): resource = base.create_resource('packet_filters', 'packet_filter', QuantumManager.get_plugin(), PACKET_FILTER_ATTR_MAP) qresource = quota.CountableResource('packet_filter', quota._count_resource, 'quota_packet_filter') quota.QUOTAS.register_resource(qresource) return [extensions.ResourceExtension('packet_filters', resource)]
def test_resource_can_be_added_as_extension(self): res_ext = extensions.ResourceExtension( 'tweedles', self.ResourceExtensionController()) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) index_response = test_app.get("/tweedles") self.assertEqual(200, index_response.status_int) self.assertEqual("resource index", index_response.body) show_response = test_app.get("/tweedles/25266") self.assertEqual({'data': {'id': "25266"}}, show_response.json)
def get_resources(cls): """Returns Ext Resources.""" controller = resource.Resource(QuotaSetsController( QuantumManager.get_plugin()), faults=base.FAULT_MAP) return [ extensions.ResourceExtension(Quotasv2.get_alias(), controller, collection_actions={'tenant': 'GET'}) ]
def test_resource_extension_with_custom_member_action(self): controller = self.ResourceExtensionController() member = {'custom_member_action': "GET"} res_ext = extensions.ResourceExtension('tweedles', controller, member_actions=member) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) response = test_app.get("/tweedles/some_id/custom_member_action") self.assertEqual(200, response.status_int) self.assertEqual(jsonutils.loads(response.body)['member_action'], "value")
def get_resources(cls): """ Returns Ext Resource """ parent_resource = dict(member_name="tenant", collection_name="extensions/csco/tenants") member_actions = {'schedule_host': "PUT", 'associate_port': "PUT", 'detach_port': "PUT"} controller = NovatenantsController(QuantumManager.get_plugin()) return [extensions.ResourceExtension('novatenants', controller, parent=parent_resource, member_actions=member_actions)]
def test_resource_extension_for_delete_custom_collection_action(self): controller = self.ResourceExtensionController() collections = {'custom_collection_action': "DELETE"} res_ext = extensions.ResourceExtension('tweedles', controller, collection_actions=collections) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) response = test_app.delete("/tweedles/custom_collection_action") self.assertEqual(200, response.status_int) self.assertEqual(jsonutils.loads(response.body)['collection'], 'value')
def test_resource_ext_for_formatted_req_on_custom_collection_action(self): controller = self.ResourceExtensionController() collections = {'custom_collection_action': "GET"} res_ext = extensions.ResourceExtension('tweedles', controller, collection_actions=collections) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) response = test_app.get("/tweedles/custom_collection_action.json") self.assertEqual(200, response.status_int) self.assertEqual(jsonutils.loads(response.body)['collection'], "value")
def get_resources(cls): """ Returns Ext Resources """ my_plurals = [(key, key[:-1]) for key in RESOURCE_ATTRIBUTE_MAP.keys()] attr.PLURALS.update(dict(my_plurals)) plugin = manager.QuantumManager.get_plugin() params = RESOURCE_ATTRIBUTE_MAP.get(RESOURCE_NAME + 's') controller = base.create_resource(RESOURCE_NAME + 's', RESOURCE_NAME, plugin, params) ex = extensions.ResourceExtension(RESOURCE_NAME + 's', controller) return [ex]
def test_resource_gets_prefix_of_plugin(self): class DummySvcPlugin(wsgi.Controller): def index(self, request): return "" def get_plugin_type(self): return constants.DUMMY res_ext = extensions.ResourceExtension( 'tweedles', DummySvcPlugin(), path_prefix="/dummy_svc") test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) index_response = test_app.get("/dummy_svc/tweedles") self.assertEqual(200, index_response.status_int)
def test_resource_ext_for_nested_resource_custom_collection_action(self): controller = self.ResourceExtensionController() collections = {'custom_collection_action': "GET"} parent = dict(collection_name='beetles', member_name='beetle') res_ext = extensions.ResourceExtension('tweedles', controller, collection_actions=collections, parent=parent) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) response = test_app.get("/beetles/beetle_id" "/tweedles/custom_collection_action") self.assertEqual(200, response.status_int) self.assertEqual(jsonutils.loads(response.body)['collection'], "value")
def get_resources(cls): """Returns Extended Resource for service type management.""" my_plurals = [(key, key[:-1]) for key in RESOURCE_ATTRIBUTE_MAP.keys()] my_plurals.append(('service_definitions', 'service_definition')) attributes.PLURALS.update(dict(my_plurals)) attr_map = RESOURCE_ATTRIBUTE_MAP[COLLECTION_NAME] collection_name = COLLECTION_NAME.replace('_', '-') controller = base.create_resource( collection_name, RESOURCE_NAME, servicetype_db.ServiceTypeManager.get_instance(), attr_map) return [ extensions.ResourceExtension(collection_name, controller, attr_map=attr_map) ]
def get_resources(cls): """ Returns all defined resources """ parent_resource = dict(member_name="tenant", collection_name="extensions/csco/tenants") member_actions = { 'associate_portprofile': "PUT", 'disassociate_portprofile': "PUT" } controller = PortprofilesController(QuantumManager.get_plugin()) return [ extensions.ResourceExtension('portprofiles', controller, parent=parent_resource, member_actions=member_actions) ]
def get_resources(cls): """Returns Ext Resources.""" exts = [] plugin = manager.QuantumManager.get_plugin() resource_name = 'qos_queue' collection_name = resource_name.replace('_', '-') + "s" params = RESOURCE_ATTRIBUTE_MAP.get(resource_name + "s", dict()) controller = base.create_resource(collection_name, resource_name, plugin, params, allow_bulk=False) ex = extensions.ResourceExtension(collection_name, controller) exts.append(ex) return exts
def test_exceptions_notimplemented(self): controller = self.ResourceExtensionController() member = {'notimplemented_function': "GET"} res_ext = extensions.ResourceExtension('tweedles', controller, member_actions=member) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) # Ideally we would check for a 501 code here but webtest doesn't take # anything that is below 200 or above 400 so we can't actually check # it. It thows AppError instead. try: response = ( test_app.get("/tweedles/some_id/notimplemented_function")) # Shouldn't be reached self.assertTrue(False) except AppError: pass
def get_resources(cls): """ Returns Ext Resources """ exts = [] plugin = manager.QuantumManager.get_plugin() for resource_name in ['security_group', 'security_group_rule']: collection_name = resource_name.replace('_', '-') + "s" params = RESOURCE_ATTRIBUTE_MAP.get(resource_name + "s", dict()) quota.QUOTAS.register_resource_by_name(resource_name) controller = base.create_resource(collection_name, resource_name, plugin, params, allow_bulk=True) ex = extensions.ResourceExtension(collection_name, controller) exts.append(ex) return exts
def get_resources(cls): """Returns Ext Resources.""" plugin = manager.QuantumManager.get_plugin() params = RESOURCE_ATTRIBUTE_MAP.get(COLLECTION_NAME, dict()) member_actions = {'connect_network': 'PUT', 'disconnect_network': 'PUT'} # register quotas for network gateways quota.QUOTAS.register_resource_by_name(RESOURCE_NAME) collection_name = COLLECTION_NAME.replace('_', '-') controller = base.create_resource(collection_name, RESOURCE_NAME, plugin, params, member_actions=member_actions) return [extensions.ResourceExtension(COLLECTION_NAME, controller, member_actions=member_actions)]
def test_resource_ext_with_custom_member_action_gets_plugin_prefix(self): controller = self.DummySvcPlugin() member = {'custom_member_action': "GET"} collections = {'collection_action': "GET"} res_ext = extensions.ResourceExtension('tweedles', controller, path_prefix="/dummy_svc", member_actions=member, collection_actions=collections) test_app = _setup_extensions_test_app(SimpleExtensionManager(res_ext)) response = test_app.get("/dummy_svc/tweedles/1/custom_member_action") self.assertEqual(200, response.status_int) self.assertEqual(jsonutils.loads(response.body)['member_action'], "value") response = test_app.get("/dummy_svc/tweedles/collection_action") self.assertEqual(200, response.status_int) self.assertEqual(jsonutils.loads(response.body)['collection'], "value")
def get_resources(cls): """Returns Ext Resources.""" exts = [] plugin = manager.QuantumManager.get_plugin() resource_name = 'ext_test_resource' collection_name = resource_name + "s" params = RESOURCE_ATTRIBUTE_MAP.get(collection_name, dict()) quota.QUOTAS.register_resource_by_name(resource_name) controller = base.create_resource(collection_name, resource_name, plugin, params, member_actions={}) ex = extensions.ResourceExtension(collection_name, controller, member_actions={}) exts.append(ex) return exts
def get_resources(cls): """ Returns Ext Resources """ my_plurals = [(key, key[:-1]) for key in RESOURCE_ATTRIBUTE_MAP.keys()] attr.PLURALS.update(dict(my_plurals)) exts = [] plugin = manager.QuantumManager.get_plugin() for resource_name in ['security_group', 'security_group_rule']: collection_name = resource_name.replace('_', '-') + "s" params = RESOURCE_ATTRIBUTE_MAP.get(resource_name + "s", dict()) quota.QUOTAS.register_resource_by_name(resource_name) controller = base.create_resource(collection_name, resource_name, plugin, params, allow_bulk=True, allow_pagination=True, allow_sorting=True) ex = extensions.ResourceExtension(collection_name, controller, attr_map=params) exts.append(ex) return exts
def setUp(self): """ Set up function """ super(CredentialExtensionTest, self).setUp() parent_resource = dict(member_name="tenant", collection_name="extensions/csco/tenants") controller = credential.CredentialController( QuantumManager.get_plugin()) res_ext = extensions.ResourceExtension('credentials', controller, parent=parent_resource) self.test_app = setup_extensions_test_app( SimpleExtensionManager(res_ext)) self.contenttype = 'application/json' self.credential_path = '/extensions/csco/tenants/tt/credentials' self.cred_second_path = '/extensions/csco/tenants/tt/credentials/' self.test_credential_data = { 'credential': { 'credential_name': 'cred8', 'user_name': 'newUser2', 'password': '******', }, } self._l2network_plugin = l2network_plugin.L2Network()