コード例 #1
0
 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)
コード例 #2
0
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
コード例 #3
0
    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)
コード例 #4
0
ファイル: service.py プロジェクト: xiaoliukai/magnum
    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)
コード例 #5
0
ファイル: k8s_conductor.py プロジェクト: sidx64/magnum
    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
コード例 #6
0
 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)
コード例 #7
0
 def mock_service(self):
     return objects.Service({})
コード例 #8
0
 def test_retrieve_bay_from_service(self,
                                    mock_bay_get_by_uuid):
     self._test_retrieve_bay(objects.Service({}), mock_bay_get_by_uuid)