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 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) ]
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})
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})
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})
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)]
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)
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)
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)
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())
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 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)
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)