Exemple #1
0
class ResponseZone(Model):
    name = KubeName(required=True, min_length=3)
    region_name = KubeName()
    vm_cluster = StringType(required=True)
    vm_datastore = StringType(required=True)
    vm_folder = StringType()
    core_provision_percent = IntType(required=True)
    ram_provision_percent = IntType(required=True)
    schedulable = BooleanType(required=True)
    state = EnumType(ResourceState, required=True)
    error_message = StringType()
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, zone: Zone):
        zone_model = cls()
        zone_model.name = zone.name
        zone_model.region_name = zone.region_name
        zone_model.vm_cluster = zone.vm_cluster
        zone_model.vm_datastore = zone.vm_datastore
        zone_model.vm_folder = zone.vm_folder
        zone_model.core_provision_percent = zone.core_provision_percent
        zone_model.ram_provision_percent = zone.ram_provision_percent
        zone_model.schedulable = zone.schedulable

        zone_model.state = zone.state
        if zone.error_message != "":
            zone_model.error_message = zone.error_message
        zone_model.created_at = zone.created_at
        zone_model.updated_at = zone.updated_at

        return zone_model
Exemple #2
0
class ResponseNetwork(Model):
    name = KubeName(required=True, min_length=3)
    port_group = StringType(required=True)
    cidr = IPv4NetworkType(required=True)
    gateway = IPv4AddressType(required=True)
    dns_servers = ListType(IPv4AddressType, min_size=1, required=True)
    pool_start = IPv4AddressType(required=True)
    pool_end = IPv4AddressType(required=True)
    region_name = KubeName()
    state = EnumType(ResourceState, required=True)
    error_message = StringType()
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, network: Network):
        network_model = cls()
        network_model.name = network.name

        network_model.port_group = network.port_group
        network_model.cidr = network.cidr
        network_model.gateway = network.gateway
        network_model.dns_servers = network.dns_servers
        network_model.pool_start = network.pool_start
        network_model.pool_end = network.pool_end
        network_model.region_name = network.region_name

        network_model.state = network.state
        if network.error_message != "":
            network_model.error_message = network.error_message
        network_model.created_at = network.created_at
        network_model.updated_at = network.updated_at

        return network_model
Exemple #3
0
class RequestCreateZone(Model):
    name = KubeName(required=True, min_length=3)
    region_name = KubeName(required=True)
    vm_cluster = StringType(required=True)
    vm_datastore = StringType(required=True)
    vm_folder = StringType()
    core_provision_percent = IntType(min_value=0, required=True)
    ram_provision_percent = IntType(min_value=0, required=True)
Exemple #4
0
class ResponseImage(Model):
    project_name = StringType(required=True)
    name = KubeName(required=True, min_length=3)
    file_name = StringType()
    region_name = StringType(required=True)
    state = EnumType(ResourceState, required=True)
    error_message = StringType()
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, image: Image):
        image_model = cls()
        image_model.project_name = image.project_name
        image_model.name = image.name

        image_model.file_name = image.file_name
        image_model.region_name = image.region_name

        image_model.state = image.state
        if image.error_message != "":
            image_model.error_message = image.error_message
        image_model.created_at = image.created_at
        image_model.updated_at = image.updated_at

        return image_model
Exemple #5
0
class ResponseRegion(Model):
    name = KubeName(required=True, min_length=3)
    datacenter = StringType(required=True, )
    image_datastore = StringType(required=True)
    image_folder = StringType()
    schedulable = BooleanType(required=True)
    state = EnumType(ResourceState, required=True)
    error_message = StringType()
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, region: Region):
        region_model = cls()
        region_model.name = region.name
        region_model.datacenter = region.datacenter
        region_model.image_datastore = region.image_datastore
        region_model.image_folder = region.image_folder
        region_model.schedulable = region.schedulable

        region_model.state = region.state
        if region.error_message != "":
            region_model.error_message = region.error_message

        region_model.created_at = region.created_at
        region_model.updated_at = region.updated_at

        return region_model
Exemple #6
0
class ResponseVolume(Model):
    name = KubeName(required=True, min_length=3)
    zone_name = UUIDType(required=True)
    size = IntType(required=True)
    attached_to = UUIDType()
    state = EnumType(ResourceState, required=True)
    task = EnumType(VolumeTask)
    error_message = StringType()
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, volume: Volume):
        model = cls()
        model.name = volume.name
        model.zone_name = volume.zone_name
        model.size = volume.size
        model.state = volume.state
        model.attached_to = volume.attached_to_name
        model.task = volume.task
        model.error_message = volume.error_message
        model.created_at = volume.created_at
        model.updated_at = volume.updated_at

        return model
Exemple #7
0
class ResponseInstance(Model):
    name = KubeName(required=True, min_length=3)
    image_name = KubeName()
    network_port_id = KubeName(required=True)
    region_name = KubeName(required=True)
    zone_name = KubeName()
    service_account_name = KubeName()
    keypair_names = ListType(KubeName, default=list)
    state = EnumType(ResourceState, required=True)
    power_state = EnumType(VMPowerState, required=True)

    flavor_name = KubeName(required=True)
    vcpus = IntType(required=True)
    ram = IntType(required=True)
    disk = IntType(required=True)

    task = EnumType(VMTask)
    tags = DictType(KubeString, default=dict)
    user_data = StringType()
    error_message = StringType()
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, instance: Instance):
        instance_model = cls()
        instance_model.name = instance.name
        instance_model.image_name = instance.image_name

        instance_model.network_port_id = instance.network_port_id
        instance_model.service_account_name = instance.service_account_name

        instance_model.region_name = instance.region_name
        if instance.zone_name is not None:
            instance_model.zone_name = instance.zone_name

        for keypair_name in instance.keypair_names:
            instance_model.keypair_names.append(keypair_name)

        instance_model.state = instance.state
        if instance.error_message != "":
            instance_model.error_message = instance.error_message

        instance_model.power_state = instance.power_state

        if instance.flavor_name is not None:
            instance_model.flavor_name = instance.flavor_name

        instance_model.vcpus = instance.vcpus
        instance_model.ram = instance.ram
        instance_model.disk = instance.disk

        instance_model.task = instance.task

        instance_model.tags = instance.tags
        instance_model.user_data = instance.user_data
        instance_model.created_at = instance.created_at
        instance_model.updated_at = instance.updated_at
        return instance_model
Exemple #8
0
class PolicyBinding(Model):
    role = KubeName(required=True)
    members = ListType(BindingMemberType, required=True)

    def validate_members(self, data, value):
        for member in value:
            if value.count(member) > 1:
                raise ValidationError(member + " appears multiple times in the binding")

        return value
Exemple #9
0
class ResponseRole(Model):
    name = KubeName(required=True, min_length=3)
    permissions = ListType(StringType, default=list)
    state = EnumType(ResourceState, required=True)
    created_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, role):
        model = cls()
        model.name = role.name
        model.permissions = role.permissions
        model.state = role.state
        model.created_at = role.created_at

        return model
Exemple #10
0
class ResponseKeypair(Model):
    name = KubeName(required=True, min_length=3)
    public_key = StringType(required=True)
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, keypair: Keypair):
        model = cls()
        model.name = keypair.name
        model.public_key = keypair.public_key
        model.created_at = keypair.created_at
        model.updated_at = keypair.updated_at

        return model
Exemple #11
0
class RequestCreateNetwork(Model):
    name = KubeName(required=True, min_length=3)
    port_group = StringType(required=True)
    cidr = IPv4NetworkType(required=True)
    gateway = IPv4AddressType(required=True)
    dns_servers = ListType(IPv4AddressType, min_size=1, required=True)
    pool_start = IPv4AddressType(required=True)
    pool_end = IPv4AddressType(required=True)
    region_name = KubeName(required=True)

    def validate_gateway(self, data, value):
        cidr: ipaddress.IPv4Network = data['cidr']

        if value not in cidr:
            raise ValidationError('is not an address within ' + str(cidr))

        return value

    def validate_pool_start(self, data, value):
        cidr: ipaddress.IPv4Network = data['cidr']

        if value not in cidr:
            raise ValidationError('is not an address within ' + str(cidr))

        return value

    def validate_pool_end(self, data, value):
        cidr: ipaddress.IPv4Network = data['cidr']

        if value not in cidr:
            raise ValidationError('is not an address within ' + str(cidr))

        if value < self.pool_start:
            raise ValidationError('needs to be larger than pool_start')

        return value
Exemple #12
0
class RequestCreateKeypair(Model):
    name = KubeName(required=True, min_length=3)
    public_key = StringType(required=True)

    def validate_public_key(self, data, value):
        try:
            load_ssh_public_key(value.encode(), default_backend())
        except ValueError:
            raise ValidationError(
                "public_key could not be decoded or is not in the proper format"
            )
        except UnsupportedAlgorithm:
            raise ValidationError(
                "public_key serialization type is not supported")

        return value
class ResponseServiceAccount(Model):
    name = KubeName(required=True, min_length=3)
    email = EmailType(required=True)
    keys = DictType(ArrowType, required=True)
    state = EnumType(ResourceState, required=True)
    created_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, service_account):
        model = cls()
        model.name = service_account.name
        model.email = service_account.email
        model.keys = service_account.keys
        model.state = service_account.state
        model.created_at = service_account.created_at

        return model
Exemple #14
0
class ResponseFlavor(Model):
    name = KubeName(required=True, min_length=3)
    vcpus = IntType(required=True)
    ram = IntType(required=True)
    disk = IntType(required=True)
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, flavor: Flavor):
        model = cls()
        model.name = flavor.name
        model.vcpus = flavor.vcpus
        model.ram = flavor.ram
        model.disk = flavor.disk
        model.created_at = flavor.created_at
        model.updated_at = flavor.updated_at

        return model
Exemple #15
0
class ResponseNetworkPort(Model):
    id = UUIDType(required=True)
    network_name = KubeName(required=True)
    ip_address = IPv4AddressType(required=True)
    state = EnumType(ResourceState, required=True)
    created_at = ArrowType(required=True)
    updated_at = ArrowType(required=True)

    @classmethod
    def from_database(cls, network_port: NetworkPort):
        model = cls()
        model.id = network_port.name
        model.network_name = network_port.network_name
        model.ip_address = network_port.ip_address
        model.state = network_port.state
        model.created_at = network_port.created_at
        model.updated_at = network_port.updated_at

        return model
Exemple #16
0
class RequestCreateInstance(Model):
    name = KubeName(required=True, min_length=3)
    image_name = KubeName(required=True)
    service_account_name = KubeName()
    network_name = KubeName(required=True)
    region_name = KubeName(required=True)
    zone_name = KubeName()
    keypair_names = ListType(KubeName, default=list)
    tags = DictType(KubeString, default=dict)
    user_data = StringType()

    flavor_name = KubeName(required=True)
    disk = IntType()
    initial_volumes = ListType(ModelType(RequestInitialVolumes), default=list)

    def validate_disk(self, data, value):
        if value is not None and value != 0:
            IntType(min_value=5).validate_range(value)
Exemple #17
0
class RequestCreateRole(Model):
    name = KubeName(required=True, min_length=3)
    permissions = ListType(StringType, default=list)
Exemple #18
0
class ParamsZone(Model):
    zone_name = KubeName(required=True)
Exemple #19
0
class ParamsListZone(Model):
    region_name = KubeName()
    limit = IntType(default=100, max_value=100, min_value=1)
    marker = UUIDType()
Exemple #20
0
class RequestInstanceImage(Model):
    name = KubeName(required=True)
Exemple #21
0
class RequestCreateRegion(Model):
    name = KubeName(required=True, min_length=3)
    datacenter = StringType(required=True)
    image_datastore = StringType(required=True)
    image_folder = StringType()
Exemple #22
0
class ParamsListNetwork(Model):
    name = KubeName()
    region = KubeName()
    limit = IntType(default=100, max_value=100, min_value=1)
    marker = UUIDType()
Exemple #23
0
class ParamsRegion(Model):
    region_name = KubeName(required=True)
Exemple #24
0
class RequestCloneVolume(Model):
    name = KubeName(required=True, min_length=3)
Exemple #25
0
class ParamsListInstance(Model):
    image_name = KubeName()
    zone_name = KubeName()
    region_name = KubeName()
    limit = IntType(default=100, max_value=100, min_value=1)
    marker = UUIDType()
Exemple #26
0
class ParamsKeypair(Model):
    keypair_name = KubeName(required=True)
Exemple #27
0
class ParamsInstance(Model):
    instance_name = KubeName(required=True)
Exemple #28
0
class RequestCreateImage(Model):
    name = KubeName(required=True, min_length=3)
    file_name = StringType(required=True)
    region_name = KubeName(required=True)
Exemple #29
0
class ParamsNetwork(Model):
    network_name = KubeName(required=True)
Exemple #30
0
class RequestCreateVolume(Model):
    name = KubeName(required=True, min_length=3)
    zone_name = UUIDType(required=True)
    size = IntType(required=True, min_value=5)