Example #1
0
 def _push_metadata_software_deployments(self, cnxt, server_id):
     rs = db_api.resource_get_by_physical_resource_id(cnxt, server_id)
     if rs:
         deployments = self.metadata_software_deployments(cnxt, server_id)
         md = rs.rsrc_metadata or {}
         md['deployments'] = deployments
         rs.update_and_save({'rsrc_metadata': md})
Example #2
0
    def describe_stack_resources(self, context, stack_identity,
                                 physical_resource_id, logical_resource_id):
        if stack_identity is not None:
            s = self._get_stack(context, stack_identity)
        else:
            rs = db_api.resource_get_by_physical_resource_id(
                context, physical_resource_id)
            if not rs:
                msg = "The specified PhysicalResourceId doesn't exist"
                raise AttributeError(msg)
            s = rs.stack

        if not s:
            raise AttributeError("The specified stack doesn't exist")

        stack = parser.Stack.load(context, stack=s)

        if logical_resource_id is not None:
            name_match = lambda r: r.name == logical_resource_id
        else:
            name_match = lambda r: True

        return [
            api.format_stack_resource(resource) for resource in stack
            if resource.id is not None and name_match(resource)
        ]
Example #3
0
 def _push_metadata_software_deployments(self, cnxt, server_id):
     rs = db_api.resource_get_by_physical_resource_id(cnxt, server_id)
     if rs:
         deployments = self.metadata_software_deployments(cnxt, server_id)
         md = rs.rsrc_metadata or {}
         md['deployments'] = deployments
         rs.update_and_save({'rsrc_metadata': md})
    def _push_metadata_software_deployments(
            self, cnxt, server_id, stack_user_project_id):
        rs = db_api.resource_get_by_physical_resource_id(cnxt, server_id)
        if not rs:
            return
        deployments = self.metadata_software_deployments(cnxt, server_id)
        md = rs.rsrc_metadata or {}
        md['deployments'] = deployments
        rows_updated = db_api.resource_update(
            cnxt, rs.id, {'rsrc_metadata': md}, rs.atomic_key)
        if not rows_updated:
            action = "deployments of server %s" % server_id
            raise exception.ConcurrentTransaction(action=action)

        metadata_put_url = None
        metadata_queue_id = None
        for rd in rs.data:
            if rd.key == 'metadata_put_url':
                metadata_put_url = rd.value
            if rd.key == 'metadata_queue_id':
                metadata_queue_id = rd.value
        if metadata_put_url:
            json_md = jsonutils.dumps(md)
            requests.put(metadata_put_url, json_md)
        if metadata_queue_id:
            project = stack_user_project_id
            token = self._get_user_token(cnxt, rs, project)
            zaqar_plugin = cnxt.clients.client_plugin('zaqar')
            zaqar = zaqar_plugin.create_for_tenant(project, token)
            queue = zaqar.queue(metadata_queue_id)
            queue.post({'body': md, 'ttl': zaqar_plugin.DEFAULT_TTL})
Example #5
0
    def _push_metadata_software_deployments(
            self, cnxt, server_id, stack_user_project_id):
        rs = db_api.resource_get_by_physical_resource_id(cnxt, server_id)
        if not rs:
            return
        deployments = self.metadata_software_deployments(cnxt, server_id)
        md = rs.rsrc_metadata or {}
        md['deployments'] = deployments
        rows_updated = db_api.resource_update(
            cnxt, rs.id, {'rsrc_metadata': md}, rs.atomic_key)
        if not rows_updated:
            action = _('deployments of server %s') % server_id
            raise exception.ConcurrentTransaction(action=action)

        metadata_put_url = None
        metadata_queue_id = None
        for rd in rs.data:
            if rd.key == 'metadata_put_url':
                metadata_put_url = rd.value
            if rd.key == 'metadata_queue_id':
                metadata_queue_id = rd.value
        if metadata_put_url:
            json_md = jsonutils.dumps(md)
            requests.put(metadata_put_url, json_md)
        if metadata_queue_id:
            project = stack_user_project_id
            queue = self._get_zaqar_queue(cnxt, rs, project, metadata_queue_id)
            zaqar_plugin = cnxt.clients.client_plugin('zaqar')
            queue.post({'body': md, 'ttl': zaqar_plugin.DEFAULT_TTL})
    def _push_metadata_software_deployments(self, cnxt, server_id, sd):
        rs = db_api.resource_get_by_physical_resource_id(cnxt, server_id)
        if not rs:
            return
        deployments = self.metadata_software_deployments(cnxt, server_id)
        md = rs.rsrc_metadata or {}
        md['deployments'] = deployments
        rows_updated = db_api.resource_update(cnxt, rs.id,
                                              {'rsrc_metadata': md},
                                              rs.atomic_key)
        if not rows_updated:
            raise db_exc.RetryRequest(
                exception.DeploymentConcurrentTransaction(server=server_id))

        metadata_put_url = None
        metadata_queue_id = None
        for rd in rs.data:
            if rd.key == 'metadata_put_url':
                metadata_put_url = rd.value
            if rd.key == 'metadata_queue_id':
                metadata_queue_id = rd.value
        if metadata_put_url:
            json_md = jsonutils.dumps(md)
            requests.put(metadata_put_url, json_md)
        if metadata_queue_id:
            project = sd.stack_user_project_id
            token = self._get_user_token(cnxt, rs, project)
            zaqar_plugin = cnxt.clients.client_plugin('zaqar')
            zaqar = zaqar_plugin.create_for_tenant(project, token)
            queue = zaqar.queue(metadata_queue_id)
            queue.post({'body': md, 'ttl': zaqar_plugin.DEFAULT_TTL})
Example #7
0
    def _push_metadata_software_deployments(self, cnxt, server_id, sd):
        rs = db_api.resource_get_by_physical_resource_id(cnxt, server_id)
        if not rs:
            return
        deployments = self.metadata_software_deployments(cnxt, server_id)
        md = rs.rsrc_metadata or {}
        md["deployments"] = deployments
        rows_updated = db_api.resource_update(cnxt, rs.id, {"rsrc_metadata": md}, rs.atomic_key)
        if not rows_updated:
            raise db_exc.RetryRequest(exception.DeploymentConcurrentTransaction(server=server_id))

        metadata_put_url = None
        metadata_queue_id = None
        for rd in rs.data:
            if rd.key == "metadata_put_url":
                metadata_put_url = rd.value
            if rd.key == "metadata_queue_id":
                metadata_queue_id = rd.value
        if metadata_put_url:
            json_md = jsonutils.dumps(md)
            requests.put(metadata_put_url, json_md)
        if metadata_queue_id:
            project = sd.stack_user_project_id
            token = self._get_user_token(cnxt, rs, project)
            zaqar_plugin = cnxt.clients.client_plugin("zaqar")
            zaqar = zaqar_plugin.create_for_tenant(project, token)
            queue = zaqar.queue(metadata_queue_id)
            queue.post({"body": md, "ttl": zaqar_plugin.DEFAULT_TTL})
Example #8
0
    def describe_stack_resources(self, context, stack_identity,
                                 physical_resource_id, logical_resource_id):
        if stack_identity is not None:
            s = self._get_stack(context, stack_identity)
        else:
            rs = db_api.resource_get_by_physical_resource_id(context,
                    physical_resource_id)
            if not rs:
                msg = "The specified PhysicalResourceId doesn't exist"
                raise AttributeError(msg)
            s = rs.stack

        if not s:
            raise AttributeError("The specified stack doesn't exist")

        stack = parser.Stack.load(context, s.id)

        if logical_resource_id is not None:
            name_match = lambda r: r.name == logical_resource_id
        else:
            name_match = lambda r: True

        return [api.format_stack_resource(resource)
                for resource in stack if resource.id is not None and
                                         name_match(resource)]
Example #9
0
    def _refresh_zaqar_software_deployment(self, cnxt, sd, deploy_queue_id):
        rs = db_api.resource_get_by_physical_resource_id(cnxt, sd.id)
        project = sd.stack_user_project_id
        queue = self._get_zaqar_queue(cnxt, rs, project, deploy_queue_id)

        messages = list(queue.pop())
        if messages:
            self.signal_software_deployment(
                cnxt, sd.id, messages[0].body, None)

        return software_deployment_object.SoftwareDeployment.get_by_id(
            cnxt, sd.id)
    def _refresh_zaqar_software_deployment(self, cnxt, sd, deploy_queue_id):
        rs = db_api.resource_get_by_physical_resource_id(cnxt, sd.id)
        project = sd.stack_user_project_id
        queue = self._get_zaqar_queue(cnxt, rs, project, deploy_queue_id)

        messages = list(queue.pop())
        if messages:
            self.signal_software_deployment(
                cnxt, sd.id, messages[0].body, None)

        return software_deployment_object.SoftwareDeployment.get_by_id(
            cnxt, sd.id)
Example #11
0
    def _refresh_zaqar_software_deployment(self, cnxt, sd, deploy_queue_id):
        rs = db_api.resource_get_by_physical_resource_id(cnxt, sd.server_id)
        project = sd.stack_user_project_id
        token = self._get_user_token(cnxt, rs, project)
        zaqar_plugin = cnxt.clients.client_plugin("zaqar")
        zaqar = zaqar_plugin.create_for_tenant(project, token)
        queue = zaqar.queue(deploy_queue_id)

        messages = list(queue.pop())
        if messages:
            self.signal_software_deployment(cnxt, sd.id, messages[0].body, None)

        return software_deployment_object.SoftwareDeployment.get_by_id(cnxt, sd.id)
Example #12
0
    def find_physical_resource(self, cnxt, physical_resource_id):
        """
        Return an identifier for the resource with the specified physical
        resource ID.
        arg1 -> RPC context.
        arg2 -> The physical resource ID to look up.
        """
        rs = db_api.resource_get_by_physical_resource_id(cnxt, physical_resource_id)
        if not rs:
            raise exception.PhysicalResourceNotFound(resource_id=physical_resource_id)

        stack = parser.Stack.load(cnxt, stack=rs.stack)
        resource = stack[rs.name]

        return dict(resource.identifier())
    def _refresh_zaqar_software_deployment(self, cnxt, sd, deploy_queue_id):
        rs = db_api.resource_get_by_physical_resource_id(cnxt, sd.server_id)
        project = sd.stack_user_project_id
        token = self._get_user_token(cnxt, rs, project)
        zaqar_plugin = cnxt.clients.client_plugin('zaqar')
        zaqar = zaqar_plugin.create_for_tenant(project, token)
        queue = zaqar.queue(deploy_queue_id)

        messages = list(queue.pop())
        if messages:
            self.signal_software_deployment(cnxt, sd.id, messages[0].body,
                                            None)

        return software_deployment_object.SoftwareDeployment.get_by_id(
            cnxt, sd.id)
Example #14
0
    def find_physical_resource(self, context, physical_resource_id):
        """
        Return an identifier for the resource with the specified physical
        resource ID.
        arg1 -> RPC context.
        arg2 -> The physical resource ID to look up.
        """
        rs = db_api.resource_get_by_physical_resource_id(context, physical_resource_id)
        if not rs:
            msg = "The specified PhysicalResourceId doesn't exist"
            raise AttributeError(msg)

        stack = parser.Stack.load(context, stack=rs.stack)
        resource = stack[rs.name]

        return dict(resource.identifier())
Example #15
0
    def find_physical_resource(self, cnxt, physical_resource_id):
        """
        Return an identifier for the resource with the specified physical
        resource ID.
        arg1 -> RPC context.
        arg2 -> The physical resource ID to look up.
        """
        rs = db_api.resource_get_by_physical_resource_id(
            cnxt, physical_resource_id)
        if not rs:
            raise exception.PhysicalResourceNotFound(
                resource_id=physical_resource_id)

        stack = parser.Stack.load(cnxt, stack=rs.stack)
        resource = stack[rs.name]

        return dict(resource.identifier())
Example #16
0
 def get_by_physical_resource_id(cls, context, physical_resource_id):
     resource_db = db_api.resource_get_by_physical_resource_id(
         context, physical_resource_id)
     return cls._from_db_object(cls(context), context, resource_db)
Example #17
0
 def get_by_physical_resource_id(cls, context, physical_resource_id):
     resource_db = db_api.resource_get_by_physical_resource_id(
         context,
         physical_resource_id)
     return cls._from_db_object(cls(context), context, resource_db)