def test_create(self): with mock.patch.object(self.dbapi, 'create_service', autospec=True) as mock_create_service: mock_create_service.return_value = self.fake_service service = objects.Service(self.context, **self.fake_service) service.create() mock_create_service.assert_called_once_with(self.fake_service) self.assertEqual(self.context, service._context)
def get_test_service(context, **kw): """Return a Service object with appropriate attributes. NOTE: The object leaves the attributes marked as changed, such that a create() could be used to commit it to the DB. """ db_service = db_utils.get_test_service(**kw) # Let DB generate ID if it isn't specified explicitly if 'id' not in kw: del db_service['id'] service = objects.Service(context) for key in db_service: setattr(service, key, db_service[key]) return service
def post(self, service): """Create a new service. :param service: a service within the request body. """ service.parse_manifest() service_dict = service.as_dict() context = pecan.request.context service_dict['project_id'] = context.project_id service_dict['user_id'] = context.user_id service_obj = objects.Service(context, **service_dict) new_service = pecan.request.rpcapi.service_create(service_obj) if new_service is None: raise exception.InvalidState() # Set the HTTP Location Header pecan.response.location = link.build_url('services', new_service.uuid) return Service.convert_with_links(new_service)
def post(self, service): """Create a new service. :param service: a service within the request body. """ if self.from_services: raise exception.OperationNotPermitted service.parse_manifest() service_dict = service.as_dict() context = pecan.request.context auth_token = context.auth_token_info['token'] service_dict['project_id'] = auth_token['project']['id'] service_dict['user_id'] = auth_token['user']['id'] service_obj = objects.Service(context, **service_dict) new_service = pecan.request.rpcapi.service_create(service_obj) # Set the HTTP Location Header pecan.response.location = link.build_url('services', new_service.uuid) return Service.convert_with_links(new_service)
def service_list(self, context, bay_ident): # Since bay identifier is specified verify whether its a UUID # or Name. If name is specified as bay identifier need to extract # the bay uuid since its needed to get the k8s_api object. bay_uuid = conductor_utils.retrieve_bay_uuid(context, bay_ident) self.k8s_api = k8s.create_k8s_api(context, bay_uuid) try: resp = self.k8s_api.list_namespaced_service(namespace='default') except rest.ApiException as err: raise exception.KubernetesAPIFailed(err=err) if resp is None: raise exception.ServiceListNotFound(bay_uuid=bay_uuid) services = [] for service_entry in resp.items: service = {} service['uuid'] = service_entry.metadata.uid service['name'] = service_entry.metadata.name service['project_id'] = context.project_id service['user_id'] = context.user_id service['bay_uuid'] = bay_uuid service['labels'] = ast.literal_eval(service_entry.metadata.labels) if not service_entry.spec.selector: service['selector'] = {} else: service['selector'] = ast.literal_eval( service_entry.spec.selector) service['ip'] = service_entry.spec.cluster_ip service_value = [] for p in service_entry.spec.ports: ports = p.to_dict() if not ports['name']: ports['name'] = 'k8s-service' service_value.append(ports) service['ports'] = service_value service_obj = objects.Service(context, **service) services.append(service_obj) return services
def test_retrieve_bay_from_service(self, mock_bay_get_by_uuid): service = objects.Service({}) service.bay_uuid = '5d12f6fd-a196-4bf0-ae4c-1f639a523a52' self._test_retrieve_bay(service.bay_uuid, mock_bay_get_by_uuid)
def mock_service(self): return objects.Service({})
def test_retrieve_bay_from_service(self, mock_bay_get_by_uuid): self._test_retrieve_bay(objects.Service({}), mock_bay_get_by_uuid)