def _store_or_update(self, action, status, reason): self.action = action self.status = status self.status_reason = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save( { "action": self.action, "status": self.status, "status_reason": reason, "stack_id": self.stack.id, "updated_at": self.updated_time, "nova_instance": self.resource_id, } ) except Exception as ex: LOG.error(_("DB error %s") % ex) # store resource in DB on transition to CREATE_IN_PROGRESS # all other transitions (other than to DELETE_COMPLETE) # should be handled by the update_and_save above.. elif (action, status) in [(self.CREATE, self.IN_PROGRESS), (self.ADOPT, self.IN_PROGRESS)]: self._store()
def state_set(self, new_state, reason="state changed"): self.state, old_state = new_state, self.state self.state_description = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({ 'state': self.state, 'state_description': reason, 'nova_instance': self.instance_id }) self.stack.updated_time = datetime.utcnow() except Exception as ex: logger.error('DB error %s' % str(ex)) # store resource in DB on transition to CREATE_IN_PROGRESS # all other transistions (other than to DELETE_COMPLETE) # should be handled by the update_and_save above.. elif new_state == self.CREATE_IN_PROGRESS: self._store() if new_state != old_state: self._add_event(new_state, reason)
def refresh(self, attrs=None): resource_db = db_api.resource_get(self._context, self.id) resource_db.refresh(attrs=attrs) return self.__class__._from_db_object( self, self._context, resource_db)
def _store_or_update(self, action, status, reason): self.action = action self.status = status self.status_reason = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save( { "action": self.action, "status": self.status, "status_reason": reason, "nova_instance": self.resource_id, } ) self.stack.updated_time = datetime.utcnow() except Exception as ex: logger.error("DB error %s" % str(ex)) # store resource in DB on transition to CREATE_IN_PROGRESS # all other transistions (other than to DELETE_COMPLETE) # should be handled by the update_and_save above.. elif (action, status) == (self.CREATE, self.IN_PROGRESS): self._store()
def _store_or_update(self, action, status, reason): self.action = action self.status = status self.status_reason = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({ 'action': self.action, 'status': self.status, 'status_reason': reason, 'stack_id': self.stack.id, 'updated_at': self.updated_time, 'nova_instance': self.resource_id }) except Exception as ex: LOG.error(_('DB error %s') % ex) # store resource in DB on transition to CREATE_IN_PROGRESS # all other transitions (other than to DELETE_COMPLETE) # should be handled by the update_and_save above.. elif (action, status) in [(self.CREATE, self.IN_PROGRESS), (self.ADOPT, self.IN_PROGRESS)]: self._store()
def _store_or_update(self, action, status, reason): self.action = action self.status = status self.status_reason = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({ 'action': self.action, 'status': self.status, 'status_reason': reason, 'stack_id': self.stack.id, 'nova_instance': self.resource_id }) self.stack.updated_time = datetime.utcnow() except Exception as ex: logger.error('DB error %s' % str(ex)) # store resource in DB on transition to CREATE_IN_PROGRESS # all other transistions (other than to DELETE_COMPLETE) # should be handled by the update_and_save above.. elif (action, status) == (self.CREATE, self.IN_PROGRESS): self._store()
def _store_or_update(self, action, status, reason): self.action = action self.status = status self.status_reason = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({ 'action': self.action, 'status': self.status, 'status_reason': reason, 'stack_id': self.stack.id, 'updated_at': self.updated_time, 'properties_data': self._stored_properties_data, 'nova_instance': self.resource_id}) except Exception as ex: LOG.error(_LE('DB error %s'), ex) # store resource in DB on transition to CREATE_IN_PROGRESS # all other transitions (other than to DELETE_COMPLETE) # should be handled by the update_and_save above.. elif (action, status) in [(self.CREATE, self.IN_PROGRESS), (self.ADOPT, self.IN_PROGRESS)]: self._store()
def resource_id_set(self, inst): self.resource_id = inst if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({'nova_instance': self.resource_id}) except Exception as ex: logger.warn('db error %s' % str(ex))
def resource_id_set(self, inst): self.resource_id = inst if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({"nova_instance": self.resource_id}) except Exception as ex: LOG.warn(_("db error %s") % ex)
def resource_id_set(self, inst): self.resource_id = inst if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({'nova_instance': self.resource_id}) except Exception as ex: LOG.warn(_('db error %s') % ex)
def instance_id_set(self, inst): self.instance_id = inst if self.id is not None: try: rs = db_api.resource_get(self.stack.context, self.id) rs.update_and_save({'nova_instance': self.instance_id}) except Exception as ex: logger.warn('db error %s' % str(ex))
def destroy(self): ''' Delete the resource and remove it from the database. ''' yield self.delete() if self.id is None: return try: db_api.resource_get(self.context, self.id).delete() except exception.NotFound: # Don't fail on delete if the db entry has # not been created yet. pass self.id = None
def __get__(self, resource, resource_class): '''Return the metadata for the owning resource.''' if resource is None: return None if resource.id is None: return resource.parsed_template('Metadata') rs = db_api.resource_get(resource.stack.context, resource.id) rs.refresh(attrs=['rsrc_metadata']) return rs.rsrc_metadata
def __get__(self, resource, resource_class): """Return the metadata for the owning resource.""" if resource is None: return None if resource.id is None: return resource.parsed_template("Metadata") rs = db_api.resource_get(resource.stack.context, resource.id) rs.refresh(attrs=["rsrc_metadata"]) return rs.rsrc_metadata
def delete_blocking(self): ''' delete all the resources in the reverse order specified by get_create_order(). ''' self.status_set(self.DELETE_IN_PROGRESS) order = self.get_create_order() order.reverse() for r in order: try: self.resources[r].delete() db_api.resource_get(None, self.resources[r].id).delete() except Exception as ex: logger.error('delete: %s' % str(ex)) db_api.stack_delete(None, self.name) self.status_set(self.DELETE_COMPLETE)
def metadata_get(self, refresh=False): if refresh: self._rsrc_metadata = None if self.id is None: return self.parsed_template('Metadata') if self._rsrc_metadata is not None: return self._rsrc_metadata rs = db_api.resource_get(self.stack.context, self.id) rs.refresh(attrs=['rsrc_metadata']) self._rsrc_metadata = rs.rsrc_metadata return rs.rsrc_metadata
def metadata_get(self, refresh=False): if refresh: self._rsrc_metadata = None if self.id is None: return self.t.metadata() if self._rsrc_metadata is not None: return self._rsrc_metadata rs = db_api.resource_get(self.stack.context, self.id) rs.refresh(attrs=["rsrc_metadata"]) self._rsrc_metadata = rs.rsrc_metadata return rs.rsrc_metadata
def metadata_get(self, refresh=False): if refresh: self._rsrc_metadata = None if self.id is None: return self.t.metadata() if self._rsrc_metadata is not None: return self._rsrc_metadata rs = db_api.resource_get(self.stack.context, self.id) rs.refresh(attrs=['rsrc_metadata']) self._rsrc_metadata = rs.rsrc_metadata return rs.rsrc_metadata
def destroy(self): ''' Delete the resource and remove it from the database. ''' result = self.delete() if result: return result if self.id is None: return try: db_api.resource_get(self.context, self.id).delete() except exception.NotFound: # Don't fail on delete if the db entry has # not been created yet. pass except Exception as ex: logger.exception('Delete %s from DB' % str(self)) return str(ex) self.id = None
def state_set(self, new_state, reason="state changed"): self.state, old_state = new_state, self.state self.state_description = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({'state': self.state, 'state_description': reason, 'nova_instance': self.instance_id}) self.stack.updated_time = datetime.utcnow() except Exception as ex: logger.error('DB error %s' % str(ex)) elif new_state in (self.CREATE_COMPLETE, self.CREATE_FAILED): self._store() if new_state != old_state: self._add_event(new_state, reason)
def _store_or_update(self, new_state, reason): self.state = new_state self.state_description = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({'state': self.state, 'state_description': reason, 'nova_instance': self.resource_id}) self.stack.updated_time = datetime.utcnow() except Exception as ex: logger.error('DB error %s' % str(ex)) # store resource in DB on transition to CREATE_IN_PROGRESS # all other transistions (other than to DELETE_COMPLETE) # should be handled by the update_and_save above.. elif new_state == self.CREATE_IN_PROGRESS: self._store()
def test_store_or_update(self): tmpl = {'Type': 'Foo'} res = generic_rsrc.GenericResource('test_res_upd', tmpl, self.stack) res._store_or_update(res.CREATE, res.IN_PROGRESS, 'test_store') self.assertNotEqual(None, res.id) self.assertEqual(res.action, res.CREATE) self.assertEqual(res.status, res.IN_PROGRESS) self.assertEqual(res.status_reason, 'test_store') db_res = r = db_api.resource_get(None, res.id) self.assertEqual(db_res.action, res.CREATE) self.assertEqual(db_res.status, res.IN_PROGRESS) self.assertEqual(db_res.status_reason, 'test_store') res._store_or_update(res.CREATE, res.COMPLETE, 'test_update') self.assertEqual(res.action, res.CREATE) self.assertEqual(res.status, res.COMPLETE) self.assertEqual(res.status_reason, 'test_update') self.assertEqual(db_res.action, res.CREATE) self.assertEqual(db_res.status, res.COMPLETE) self.assertEqual(db_res.status_reason, 'test_update')
def test_store_or_update(self): tmpl = {"Type": "Foo"} res = generic_rsrc.GenericResource("test_res_upd", tmpl, self.stack) res._store_or_update(res.CREATE, res.IN_PROGRESS, "test_store") self.assertNotEqual(None, res.id) self.assertEqual(res.action, res.CREATE) self.assertEqual(res.status, res.IN_PROGRESS) self.assertEqual(res.status_reason, "test_store") db_res = r = db_api.resource_get(None, res.id) self.assertEqual(db_res.action, res.CREATE) self.assertEqual(db_res.status, res.IN_PROGRESS) self.assertEqual(db_res.status_reason, "test_store") res._store_or_update(res.CREATE, res.COMPLETE, "test_update") self.assertEqual(res.action, res.CREATE) self.assertEqual(res.status, res.COMPLETE) self.assertEqual(res.status_reason, "test_update") self.assertEqual(db_res.action, res.CREATE) self.assertEqual(db_res.status, res.COMPLETE) self.assertEqual(db_res.status_reason, "test_update")
def test_store_or_update(self): tmpl = {"Type": "Foo"} res = generic_rsrc.GenericResource("test_res_upd", tmpl, self.stack) res._store_or_update(res.CREATE, res.IN_PROGRESS, "test_store") self.assertIsNotNone(res.id) self.assertEqual(res.CREATE, res.action) self.assertEqual(res.IN_PROGRESS, res.status) self.assertEqual("test_store", res.status_reason) db_res = db_api.resource_get(res.context, res.id) self.assertEqual(res.CREATE, db_res.action) self.assertEqual(res.IN_PROGRESS, db_res.status) self.assertEqual("test_store", db_res.status_reason) res._store_or_update(res.CREATE, res.COMPLETE, "test_update") self.assertEqual(res.CREATE, res.action) self.assertEqual(res.COMPLETE, res.status) self.assertEqual("test_update", res.status_reason) self.assertEqual(res.CREATE, db_res.action) self.assertEqual(res.COMPLETE, db_res.status) self.assertEqual("test_update", db_res.status_reason)
def state_set(self, new_state, reason="state changed"): self.state, old_state = new_state, self.state self.state_description = reason if self.id is not None: try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({ 'state': self.state, 'state_description': reason, 'nova_instance': self.instance_id }) self.stack.updated_time = datetime.utcnow() except Exception as ex: logger.error('DB error %s' % str(ex)) elif new_state in (self.CREATE_COMPLETE, self.CREATE_FAILED): self._store() if new_state != old_state: self._add_event(new_state, reason)
def _store_or_update(self, action, status, reason): LOG.info("==== inside state_or_update") self.action = action self.status = status self.status_reason = reason from hashlib import sha1 sha = sha1() self.frozen_defn = dict(self.frozen_definition()) sha.update(str(self.frozen_defn)) self.rsrc_defn_hash = sha.hexdigest() rsrc_defn = json.dumps(dict(self.frozen_definition())) if self.id is not None: LOG.info("==== Update resource with id %s", self.id) try: rs = db_api.resource_get(self.context, self.id) rs.update_and_save({ 'action': self.action, 'status': self.status, 'status_reason': reason, 'stack_id': self.stack.id, 'updated_at': self.updated_time, 'properties_data': self._stored_properties_data, 'nova_instance': self.resource_id, 'rsrc_defn': rsrc_defn, 'rsrc_defn_hash': self.rsrc_defn_hash, 'version': self.version}) except Exception as ex: LOG.error(_LE('DB error %s'), ex) # store resource in DB on transition to CREATE_IN_PROGRESS # all other transitions (other than to DELETE_COMPLETE) # should be handled by the update_and_save above.. elif (action, status) in [(self.CREATE, self.IN_PROGRESS), (self.ADOPT, self.IN_PROGRESS)]: self._store()
def metadata_set(self, metadata): if self.id is None: raise exception.ResourceNotAvailable(resource_name=self.name) rs = db_api.resource_get(self.stack.context, self.id) rs.update_and_save({'rsrc_metadata': metadata}) self._rsrc_metadata = metadata
def refresh(self): resource_db = db_api.resource_get(self._context, self.id, refresh=True) return self.__class__._from_db_object(self, self._context, resource_db)
def update_and_save(self, values): resource_db = db_api.resource_get(self._context, self.id) resource_db.update_and_save(values) return self.refresh()
def get_obj(cls, context, resource_id): resource_db = db_api.resource_get(context, resource_id) resource = cls._from_db_object(cls(context), context, resource_db) return resource
def get_obj(cls, context, resource_id, refresh=False): resource_db = db_api.resource_get(context, resource_id, refresh=refresh) return cls._from_db_object(cls(context), context, resource_db)
def update_by_id(cls, context, resource_id, values): resource_db = db_api.resource_get(context, resource_id) resource_db.update_and_save(values)
def __set__(self, resource, metadata): '''Update the metadata for the owning resource.''' if resource.id is None: raise exception.ResourceNotAvailable(resource_name=resource.name) rs = db_api.resource_get(resource.stack.context, resource.id) rs.update_and_save({'rsrc_metadata': metadata})
def delete(cls, context, resource_id): resource_db = db_api.resource_get(context, resource_id) resource_db.delete()
def __set__(self, resource, metadata): '''Update the metadata for the owning resource.''' if resource.id is None: raise AttributeError("Resource has not yet been created") rs = db_api.resource_get(resource.stack.context, resource.id) rs.update_and_save({'rsrc_metadata': metadata})
def get_obj(cls, context, resource_id): resource_db = db_api.resource_get(context, resource_id) return cls._from_db_object(cls(context), context, resource_db)
def update_and_save(self, values): resource_db = db_api.resource_get(self._context, self.id) resource_db.update_and_save(values) self._refresh() return resource_db
def refresh(self, attrs=None): resource_db = db_api.resource_get(self._context, self.id) resource_db.refresh(attrs=attrs) return self._refresh()
def refresh(self): resource_db = db_api.resource_get(self._context, self.id, refresh=True) return self.__class__._from_db_object( self, self._context, resource_db)