Exemple #1
0
class Credential(base.SenlinObject, base.VersionedObjectDictCompat):
    """Senlin credential object."""

    fields = {
        'user': fields.StringField(),
        'project': fields.StringField(),
        'cred': fields.JsonField(),
        'data': fields.JsonField(nullable=True),
    }

    @classmethod
    def create(cls, context, values):
        obj = db_api.cred_create(context, values)
        return cls._from_db_object(context, cls(context), obj)

    @classmethod
    def get(cls, context, user, project):
        obj = db_api.cred_get(context, user, project)
        return cls._from_db_object(context, cls(), obj)

    @classmethod
    def update(cls, context, user, project, values):
        obj = db_api.cred_update(context, user, project, values)
        return cls._from_db_object(context, cls(), obj)

    @classmethod
    def delete(cls, context, user, project):
        return db_api.cred_delete(context, user, project)

    @classmethod
    def update_or_create(cls, context, values):
        obj = db_api.cred_create_update(context, values)
        return cls._from_db_object(context, cls(), obj)
Exemple #2
0
class ClusterUpdatePolicyRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'policy_id': fields.StringField(),
        'enabled': fields.BooleanField(nullable=True, default=True),
    }
Exemple #3
0
 class TestSenlinObject(obj_base.SenlinObject,
                        obj_base.VersionedObjectDictCompat):
     fields = {
         "key1": obj_fields.StringField(),
         "key2": obj_fields.StringField(),
         "metadata": obj_fields.JsonField()
     }
Exemple #4
0
class ClusterUpdateRequest(base.SenlinObject):

    # VERSION 1.0: initial version
    # VERSION 1.1: added field 'profile_only'
    # VERSION 1.2: added field 'config'
    VERSION = '1.2'
    VERSION_MAP = {
        '1.6': '1.1',
        '1.7': '1.2',
    }

    fields = {
        'identity': fields.StringField(),
        'name': fields.NameField(nullable=True),
        'profile_id': fields.StringField(nullable=True),
        'metadata': fields.JsonField(nullable=True),
        'timeout': fields.NonNegativeIntegerField(nullable=True),
        'profile_only': fields.BooleanField(nullable=True),
        'config': fields.JsonField(nullable=True),
    }

    def obj_make_compatible(self, primitive, target_version):
        super(ClusterUpdateRequest, self).obj_make_compatible(
            primitive, target_version)
        target_version = versionutils.convert_version_to_tuple(target_version)
        if target_version < (1, 1):
            if 'profile_only' in primitive['senlin_object.data']:
                del primitive['senlin_object.data']['profile_only']
        if target_version < (1, 2):
            if 'config' in primitive['senlin_object.data']:
                del primitive['senlin_object.data']['config']
Exemple #5
0
class ActionCreateRequestBody(base.SenlinObject):
    fields = {
        'name': fields.NameField(),
        'cluster_id': fields.StringField(),
        'action': fields.StringField(),
        'inputs': fields.JsonField(nullable=True, default={}),
    }
Exemple #6
0
class NodeOperationRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'operation': fields.StringField(),
        'params': fields.JsonField(nullable=True)
    }
Exemple #7
0
class ActionUpdateRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'status': fields.StringField(),
        'force': fields.BooleanField(default=False)
    }
Exemple #8
0
class NodeAdoptPreviewRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'type': fields.StringField(),
        'overrides': fields.JsonField(nullable=True),
        'snapshot': fields.BooleanField(nullable=True, default=False)
    }
class TestPayload(base.NotificationObject):
    VERSION = '1.0'

    fields = {
        'extra_field': fields.StringField(),
        'field_1': fields.StringField(),
        'field_2': fields.IntegerField(),
    }
Exemple #10
0
class ClusterOperationRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'operation': fields.StringField(),
        'filters': fields.JsonField(nullable=True, default={}),
        'params': fields.JsonField(nullable=True, default={}),
    }
Exemple #11
0
class ClusterUpdateRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'name': fields.NameField(nullable=True),
        'profile_id': fields.StringField(nullable=True),
        'metadata': fields.JsonField(nullable=True),
        'timeout': fields.IntegerField(nullable=True),
    }
Exemple #12
0
class NodeCreateRequestBody(base.SenlinObject):

    fields = {
        'cluster_id': fields.StringField(nullable=True, default=''),
        'metadata': fields.JsonField(nullable=True, default={}),
        'name': fields.NameField(),
        'profile_id': fields.StringField(),
        'role': fields.fields.StringField(nullable=True, default='')
    }
Exemple #13
0
class NodeUpdateRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'metadata': fields.JsonField(nullable=True),
        'name': fields.NameField(nullable=True),
        'profile_id': fields.StringField(nullable=True),
        'role': fields.fields.StringField(nullable=True)
    }
Exemple #14
0
class NodePayload(NotificationObject):

    VERSION = '1.0'

    fields = {
        'id': fields.UUIDField(),
        'name': fields.StringField(),
        'profile_id': fields.UUIDField(),
        'cluster_id': fields.StringField(),
        'physical_id': fields.StringField(nullable=True),
        'index': fields.IntegerField(),
        'role': fields.StringField(nullable=True),
        'init_at': fields.DateTimeField(),
        'created_at': fields.DateTimeField(nullable=True),
        'updated_at': fields.DateTimeField(nullable=True),
        'status': fields.StringField(),
        'status_reason': fields.StringField(),
        'metadata': fields.JsonField(nullable=True),
        'data': fields.JsonField(nullable=True),
        'user': fields.StringField(),
        'project': fields.StringField(),
        'domain': fields.StringField(nullable=True),
        'dependents': fields.JsonField(nullable=True),
    }

    @classmethod
    def from_node(cls, node):
        values = {}
        for field in cls.fields:
            values[field] = getattr(node, field)
        obj = cls(**values)
        obj.obj_reset_changes(recursive=False)
        return obj
Exemple #15
0
class NodeAdoptRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'type': fields.StringField(),
        'name': fields.NameField(nullable=True),
        'role': fields.StringField(nullable=True),
        'metadata': fields.JsonField(nullable=True, default={}),
        'overrides': fields.JsonField(nullable=True),
        'snapshot': fields.BooleanField(nullable=True, default=False)
    }
Exemple #16
0
class NotificationPublisher(base.SenlinObject):
    VERSION = '1.0'

    fields = {
        'host': fields.StringField(nullable=False),
        'binary': fields.StringField(nullable=False),
    }

    @classmethod
    def from_service_obj(cls, service):
        return cls(host=service.host, binary=service.binary)
Exemple #17
0
class Policy(base.SenlinObject, base.VersionedObjectDictCompat):
    """Senlin policy object."""

    fields = {
        'id': fields.UUIDField(),
        'name': fields.StringField(),
        'type': fields.StringField(),
        'spec': fields.JsonField(),
        'cooldown': fields.IntegerField(nullable=True),
        'level': fields.IntegerField(nullable=True),
        'data': fields.JsonField(nullable=True),
        'created_at': fields.DateTimeField(),
        'updated_at': fields.DateTimeField(nullable=True),
        'user': fields.StringField(),
        'project': fields.StringField(),
        'domain': fields.StringField(nullable=True),
    }

    @classmethod
    def create(cls, context, values):
        obj = db_api.policy_create(context, values)
        return cls._from_db_object(context, cls(context), obj)

    @classmethod
    def get(cls, context, policy_id, **kwargs):
        obj = db_api.policy_get(context, policy_id, **kwargs)
        return cls._from_db_object(context, cls(), obj)

    @classmethod
    def get_by_name(cls, context, name, **kwargs):
        obj = db_api.policy_get_by_name(context, name, **kwargs)
        return cls._from_db_object(context, cls(), obj)

    @classmethod
    def get_by_short_id(cls, context, short_id, **kwargs):
        obj = db_api.policy_get_by_short_id(context, short_id, **kwargs)
        return cls._from_db_object(context, cls(), obj)

    @classmethod
    def get_all(cls, context, **kwargs):
        objs = db_api.policy_get_all(context, **kwargs)
        return [cls._from_db_object(context, cls(), obj) for obj in objs]

    @classmethod
    def update(cls, context, obj_id, values):
        obj = db_api.policy_update(context, obj_id, values)
        return cls._from_db_object(context, cls(), obj)

    @classmethod
    def delete(cls, context, obj_id):
        db_api.policy_delete(context, obj_id)
Exemple #18
0
class ClusterPolicyListRequest(base.SenlinObject):

    fields = {
        'identity':
        fields.StringField(),
        'policy_name':
        fields.NameField(nullable=True),
        'policy_type':
        fields.StringField(nullable=True),
        'enabled':
        fields.BooleanField(nullable=True),
        'sort':
        fields.SortField(valid_keys=list(consts.CLUSTER_POLICY_SORT_KEYS),
                         nullable=True)
    }
Exemple #19
0
class NotificationPublisher(NotificationObject):
    VERSION = '1.0'

    fields = {
        'host': fields.StringField(),
        'binary': fields.StringField(),
    }

    @classmethod
    def from_service(cls, service):
        return cls(host=service.host, binary=service.binary)

    @property
    def publisher_id(self):
        return '%s:%s' % (self.binary, self.host)
Exemple #20
0
class EventType(NotificationObject):
    VERSION = '1.0'

    fields = {
        'object': fields.StringField(nullable=False),
        'action': fields.StringField(nullable=False),
        'phase': fields.NotificationPhaseField(nullable=True),
    }

    def to_notification_field(self):
        """Serialize the object to the wire format."""
        s = '%s.%s' % (self.object, self.action)
        if self.obj_attr_is_set('phase'):
            s += '.%s' % self.phase
        return s
Exemple #21
0
class ClusterCreateRequestBody(base.SenlinObject):

    fields = {
        'name':
        fields.NameField(),
        'profile_id':
        fields.StringField(),
        'min_size':
        fields.CapacityField(nullable=True,
                             minimum=0,
                             default=consts.CLUSTER_DEFAULT_MIN_SIZE),
        'max_size':
        fields.CapacityField(nullable=True,
                             minimum=-1,
                             default=consts.CLUSTER_DEFAULT_MAX_SIZE),
        'desired_capacity':
        fields.CapacityField(nullable=True,
                             minimum=0,
                             default=consts.CLUSTER_DEFAULT_MIN_SIZE),
        'metadata':
        fields.JsonField(nullable=True, default={}),
        'timeout':
        fields.NonNegativeIntegerField(nullable=True,
                                       default=CONF.default_action_timeout),
    }
class TestObject(vo_base.SenlinObject):
    VERSION = '1.0'
    fields = {
        'field_1': fields.StringField(),
        'field_2': fields.IntegerField(),
        'not_important_field': fields.IntegerField(),
    }
Exemple #23
0
class ClusterScaleOutRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'count': fields.NonNegativeIntegerField(nullable=True),
        'health_check': fields.BooleanField(nullable=True, default=False)
    }
Exemple #24
0
class NodeGetRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'show_details': fields.FlexibleBooleanField(nullable=True,
                                                    default=False)
    }
Exemple #25
0
class HealthRegistry(base.SenlinObject, base.VersionedObjectDictCompat):
    """Senlin health registry object."""

    fields = {
        'id': fields.UUIDField(),
        'cluster_id': fields.UUIDField(),
        'check_type': fields.StringField(),
        'interval': fields.IntegerField(nullable=True),
        'params': fields.JsonField(nullable=True),
        'engine_id': fields.UUIDField(),
    }

    @classmethod
    def create(cls, context, cluster_id, check_type, interval, params,
               engine_id):
        obj = db_api.registry_create(context, cluster_id, check_type,
                                     interval, params, engine_id)
        return cls._from_db_object(context, cls(context), obj)

    @classmethod
    def claim(cls, context, engine_id):
        objs = db_api.registry_claim(context, engine_id)
        return [cls._from_db_object(context, cls(), obj) for obj in objs]

    @classmethod
    def delete(cls, context, cluster_id):
        db_api.registry_delete(context, cluster_id)
class TestPayload(notification.NotificationPayloadBase):
    VERSION = '1.0'

    schema = {
        'field_1': ('source_field', 'field_1'),
        'field_2': ('source_field', 'field_2'),
    }

    fields = {
        'extra_field': fields.StringField(),  # filled by ctor
        'field_1': fields.StringField(),  # filled by the schema
        'field_2': fields.IntegerField(),  # filled by the schema
    }

    def populate_schema(self, source_field):
        super(TestPayload, self).populate_schema(source_field=source_field)
Exemple #27
0
class ClusterCreateRequestBody(base.SenlinObject):

    # VERSION 1.0: initial version
    # VERSION 1.1: added field 'config'
    VERSION = '1.1'
    VERSION_MAP = {
        '1.7': '1.1',
    }

    fields = {
        'name': fields.NameField(),
        'profile_id': fields.StringField(),
        'min_size': fields.CapacityField(
            nullable=True, minimum=0,
            default=consts.CLUSTER_DEFAULT_MIN_SIZE),
        'max_size': fields.CapacityField(
            nullable=True, minimum=-1,
            default=consts.CLUSTER_DEFAULT_MAX_SIZE),
        'desired_capacity': fields.CapacityField(
            nullable=True, minimum=0),
        'metadata': fields.JsonField(nullable=True, default={}),
        'timeout': fields.NonNegativeIntegerField(
            nullable=True, default=CONF.default_action_timeout),
        'config': fields.JsonField(nullable=True, default={}),
    }

    def obj_make_compatible(self, primitive, target_version):
        super(ClusterCreateRequest, self).obj_make_compatible(
            primitive, target_version)
        target_version = versionutils.convert_version_to_tuple(target_version)
        if target_version < (1, 1):
            if 'config' in primitive['senlin_object.data']:
                del primitive['senlin_object.data']['config']
Exemple #28
0
class ReceiverUpdateRequest(base.SenlinObject):

    fields = {
        'identity': fields.StringField(),
        'name': fields.NameField(nullable=True),
        'action': fields.ClusterActionNameField(nullable=True),
        'params': fields.JsonField(nullable=True, default={})
    }
Exemple #29
0
class Service(base.SenlinObject, base.VersionedObjectDictCompat):
    """Senlin service object."""

    fields = {
        'id': fields.UUIDField(),
        'host': fields.StringField(),
        'binary': fields.StringField(),
        'topic': fields.StringField(),
        'disabled': fields.BooleanField(),
        'disabled_reason': fields.StringField(nullable=True),
        'created_at': fields.DateTimeField(),
        'updated_at': fields.DateTimeField(),
    }

    @classmethod
    def create(cls, context, service_id, host=None, binary=None, topic=None):
        obj = db_api.service_create(service_id,
                                    host=host,
                                    binary=binary,
                                    topic=topic)
        return cls._from_db_object(context, cls(context), obj)

    @classmethod
    def get(cls, context, service_id):
        obj = db_api.service_get(service_id)
        return cls._from_db_object(context, cls(), obj)

    @classmethod
    def get_all(cls, context):
        objs = db_api.service_get_all()
        return [cls._from_db_object(context, cls(), obj) for obj in objs]

    @classmethod
    def update(cls, context, obj_id, values=None):
        obj = db_api.service_update(obj_id, values=values)
        return cls._from_db_object(context, cls(), obj)

    @classmethod
    def delete(cls, obj_id):
        db_api.service_delete(obj_id)

    @classmethod
    def gc_by_engine(cls, engine_id):
        db_api.gc_by_engine(engine_id)
Exemple #30
0
class ReceiverCreateRequestBody(base.SenlinObject):

    fields = {
        'name': fields.NameField(),
        'type': fields.ReceiverTypeField(),
        'cluster_id': fields.StringField(nullable=True),
        'action': fields.ClusterActionNameField(nullable=True),
        'actor': fields.JsonField(nullable=True, default={}),
        'params': fields.JsonField(nullable=True, default={})
    }