예제 #1
0
    class Schema(model.Schema):
        object_id = model.PrimaryKey('id')
        name = fields.String(required=True)
        security_groups = model.Nested(SecurityGroup, many=True, missing=list)
        status = fields.String(required=True)
        tenant = model.Dependency(keystone.Tenant)
        image = model.Dependency(glance.Image, allow_none=True)
        image_membership = model.Dependency(glance.ImageMember,
                                            allow_none=True)
        user_id = fields.String(required=True)  # TODO: user reference
        key_name = fields.String(required=True, allow_none=True)
        flavor = model.Dependency(Flavor)
        config_drive = fields.String(required=True)
        availability_zone = fields.String(required=True, allow_none=True)
        host = fields.String(required=True)
        hypervisor_hostname = fields.String(required=True)
        instance_name = fields.String(required=True)
        metadata = fields.Dict(missing=dict)
        ephemeral_disks = model.Nested(EphemeralDisk, many=True, missing=list)
        attached_volumes = model.Dependency(cinder.Volume,
                                            many=True,
                                            missing=list)
        # TODO: ports

        FIELD_MAPPING = {
            'host': HOST,
            'hypervisor_hostname': 'OS-EXT-SRV-ATTR:hypervisor_hostname',
            'instance_name': 'OS-EXT-SRV-ATTR:instance_name',
            'availability_zone': 'OS-EXT-AZ:availability_zone',
            'attached_volumes': VOLUMES_ATTACHED,
            'tenant': 'tenant_id',
        }
        FIELD_VALUE_TRANSFORMERS = {'image': lambda x: x or None}
예제 #2
0
 class Schema(model.Schema):
     foo = model.fields.String(required=True)
     ref = model.Dependency(ExampleReferenced, required=True)
     refs = model.Dependency(ExampleReferenced, required=True, many=True)
     ref_none = model.Dependency(ExampleReferenced,
                                 missing=None,
                                 allow_none=True)
     refs_none = model.Dependency(ExampleReferenced,
                                  missing=None,
                                  many=True,
                                  allow_none=True)
예제 #3
0
 class Schema(model.Schema):
     object_id = model.PrimaryKey()
     bar = model.fields.String(required=True)
     baz = model.Nested(ExampleNested)
     ref = model.Dependency(ExampleReferenced, required=True)
     refs = model.Dependency(ExampleReferenced, required=True, many=True)
     ref_none = model.Dependency(ExampleReferenced,
                                 missing=None,
                                 allow_none=True)
     refs_none = model.Dependency(ExampleReferenced,
                                  missing=None,
                                  many=True,
                                  allow_none=True)
예제 #4
0
 class Schema(model.Schema):
     object_id = model.PrimaryKey('id')
     name = fields.String(required=True)
     tenant = model.Dependency(keystone.Tenant,
                               required=True,
                               load_from='owner',
                               dump_to='owner')
     checksum = fields.String(required=True, allow_none=True)
     size = fields.Integer(required=True)
     virtual_size = fields.Integer(required=True,
                                   allow_none=True,
                                   missing=None)
     is_public = fields.Boolean(required=True)
     protected = fields.Boolean(required=True)
     container_format = fields.String(required=True)
     disk_format = fields.String(required=True)
     min_disk = fields.Integer(required=True)
     min_ram = fields.Integer(required=True)
     properties = fields.Dict()
     members = model.Reference(ImageMember, many=True, missing=list)
예제 #5
0
    class Schema(model.Schema):
        object_id = model.PrimaryKey('id')
        name = fields.String(required=True, allow_none=True)
        description = fields.String(required=True, allow_none=True)
        availability_zone = fields.String(required=True)
        encrypted = fields.Boolean(missing=False)
        host = fields.String(required=True)
        snapshot_id = fields.String(required=True, allow_none=True)
        source_volid = fields.String(required=True, allow_none=True)
        size = fields.Integer(required=True)
        tenant = model.Dependency(keystone.Tenant, required=True)
        metadata = fields.Dict(missing=dict)
        volume_type = fields.String(required=True)
        attachments = model.Nested(Attachment, many=True, missing=list)

        FIELD_MAPPING = {
            'name': 'display_name',
            'description': 'display_description',
            'host': 'os-vol-host-attr:host',
            'tenant': 'os-vol-tenant-attr:tenant_id',
        }
예제 #6
0
 class Schema(model.Schema):
     object_id = model.PrimaryKey()
     image = model.Dependency('cloudferrylib.os.discovery.glance.Image')
     member = model.Dependency('cloudferrylib.os.discovery.keystone.Tenant')
     can_share = fields.Boolean(missing=False)
예제 #7
0
 class Schema(model.Schema):
     object_id = model.PrimaryKey()
     ref = model.Dependency('tests.cloudferrylib.os.'
                            'discovery.test_model.Example')