def store(self, context): '''Store the cluster in database and return its ID. If the ID already exists, we do an update. ''' values = { 'name': self.name, 'profile_id': self.profile_id, 'user': self.user, 'project': self.project, 'domain': self.domain, 'parent': self.parent, 'init_time': self.init_time, 'created_time': self.created_time, 'updated_time': self.updated_time, 'deleted_time': self.deleted_time, 'min_size': self.min_size, 'max_size': self.max_size, 'desired_capacity': self.desired_capacity, 'next_index': self.next_index, 'timeout': self.timeout, 'status': self.status, 'status_reason': self.status_reason, 'meta_data': self.metadata, 'data': self.data, } timestamp = timeutils.utcnow() if self.id: values['updated_time'] = timestamp db_api.cluster_update(context, self.id, values) event_mod.info(context, self, 'update') else: self.init_time = timestamp values['init_time'] = timestamp cluster = db_api.cluster_create(context, values) self.id = cluster.id event_mod.info(context, self, 'create') self._load_runtime_data(context) return self.id
def set_status(self, context, status, reason=None): '''Set status of the cluster.''' values = {} now = datetime.datetime.utcnow() if status == self.ACTIVE and self.status == self.CREATING: values['created_time'] = now elif status == self.DELETED: values['deleted_time'] = now elif status == self.ACTIVE and self.status == self.UPDATING: values['updated_time'] = now self.status = status values['status'] = status if reason: values['status_reason'] = reason db_api.cluster_update(context, self.id, values) # TODO(anyone): generate event record return
def set_status(self, context, status, reason=None, **kwargs): """Set status of the cluster. :param context: A DB session for accessing the backend database. :param status: A string providing the new status of the cluster. :param reason: A string containing the reason for the status change. It can be omitted when invoking this method. :param dict kwargs: Other optional attributes to be updated. :returns: Nothing. """ values = {} now = timeutils.utcnow() if status == self.ACTIVE and self.status == self.CREATING: self.created_time = now values['created_time'] = now elif status == self.DELETED: self.deleted_time = now values['deleted_time'] = now elif status == self.ACTIVE and self.status == self.UPDATING: self.updated_time = now values['updated_time'] = now self.status = status values['status'] = status if reason: self.status_reason = reason values['status_reason'] = reason for k, v in kwargs.items(): if hasattr(self, k): setattr(self, k, v) values[k] = v # There is a possibility that the profile id is changed if 'profile_id' in values: self.rt['profile'] = profile_base.Profile.load( context, self.profile_id) db_api.cluster_update(context, self.id, values) return
def set_status(self, context, status, reason=None, **kwargs): """Set status of the cluster. :param context: A DB session for accessing the backend database. :param status: A string providing the new status of the cluster. :param reason: A string containing the reason for the status change. It can be omitted when invoking this method. :param dict kwargs: Other optional attributes to be updated. :returns: Nothing. """ values = {} now = timeutils.utcnow() if status == self.ACTIVE and self.status == self.CREATING: self.created_time = now values['created_time'] = now elif status == self.DELETED: self.deleted_time = now values['deleted_time'] = now elif status == self.ACTIVE and self.status == self.UPDATING: self.updated_time = now values['updated_time'] = now self.status = status values['status'] = status if reason: self.status_reason = reason values['status_reason'] = reason for k, v in kwargs.items(): if hasattr(self, k): setattr(self, k, v) values[k] = v # There is a possibility that the profile id is changed if 'profile_id' in values: self.rt['profile'] = profile_base.Profile.load(context, self.profile_id) db_api.cluster_update(context, self.id, values) return
def store(self, context): '''Store the cluster in database and return its ID. If the ID already exists, we do an update. ''' values = { 'name': self.name, 'profile_id': self.profile_id, 'user': self.user, 'project': self.project, 'domain': self.domain, 'parent': self.parent, 'init_time': self.init_time, 'created_time': self.created_time, 'updated_time': self.updated_time, 'deleted_time': self.deleted_time, 'size': self.size, 'next_index': self.next_index, 'timeout': self.timeout, 'status': self.status, 'status_reason': self.status_reason, 'tags': self.tags, 'data': self.data, } if self.id: db_api.cluster_update(context, self.id, values) event_mod.info(context, self, 'update') else: values['init_time'] = datetime.datetime.utcnow() cluster = db_api.cluster_create(context, values) self.id = cluster.id event_mod.info(context, self, 'create') self._load_runtime_data(context) return self.id
def update(cls, context, obj_id, values): values = cls._transpose_metadata(values) return db_api.cluster_update(context, obj_id, values)
def update(cls, context, obj_id, values): db_api.cluster_update(context, obj_id, values)
def update(cls, context, obj_id, values): values = cls._transpose_metadata(values) values['updated_at'] = timeutils.utcnow(True) return db_api.cluster_update(context, obj_id, values)