Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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
Пример #7
0
 def update(cls, context, obj_id, values):
     values = cls._transpose_metadata(values)
     return db_api.cluster_update(context, obj_id, values)
Пример #8
0
 def update(cls, context, obj_id, values):
     db_api.cluster_update(context, obj_id, values)
Пример #9
0
 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)
Пример #10
0
 def update(cls, context, obj_id, values):
     db_api.cluster_update(context, obj_id, values)