1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# ---------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# ---------------------------------------------------------
from marshmallow import fields
from marshmallow.decorators import post_load
# pylint: disable=unused-argument
from azure.ai.ml._schema import PathAwareSchema
from azure.ai.ml.constants._compute import ComputeType, ComputeSizeTier
from ..core.fields import ExperimentalField, NestedField, StringTransformedEnum
from .compute import ComputeSchema, IdentitySchema, NetworkSettingsSchema
from .schedule import ComputeSchedulesSchema
from .setup_scripts import SetupScriptsSchema
from .custom_applications import CustomApplicationsSchema
class ComputeInstanceSshSettingsSchema(PathAwareSchema):
admin_username = fields.Str(dump_only=True)
ssh_port = fields.Str(dump_only=True)
ssh_key_value = fields.Str()
@post_load
def make(self, data, **kwargs):
from azure.ai.ml.entities import ComputeInstanceSshSettings
return ComputeInstanceSshSettings(**data)
class CreateOnBehalfOfSchema(PathAwareSchema):
user_tenant_id = fields.Str()
user_object_id = fields.Str()
@post_load
def make(self, data, **kwargs):
from azure.ai.ml.entities import AssignedUserConfiguration
return AssignedUserConfiguration(**data)
class OsImageMetadataSchema(PathAwareSchema):
is_latest_os_image_version = fields.Bool(dump_only=True)
current_image_version = fields.Str(dump_only=True)
latest_image_version = fields.Str(dump_only=True)
@post_load
def make(self, data, **kwargs):
from azure.ai.ml.entities import ImageMetadata
return ImageMetadata(**data)
class ComputeInstanceSchema(ComputeSchema):
type = StringTransformedEnum(allowed_values=[ComputeType.COMPUTEINSTANCE], required=True)
size = fields.Str(metadata={"arm_type": ComputeSizeTier.COMPUTE_INSTANCE})
network_settings = NestedField(NetworkSettingsSchema)
create_on_behalf_of = NestedField(CreateOnBehalfOfSchema)
ssh_settings = NestedField(ComputeInstanceSshSettingsSchema)
ssh_public_access_enabled = fields.Bool(dump_default=None)
state = fields.Str(dump_only=True)
last_operation = fields.Dict(keys=fields.Str(), values=fields.Str(), dump_only=True)
services = fields.List(fields.Dict(keys=fields.Str(), values=fields.Str()), dump_only=True)
schedules = NestedField(ComputeSchedulesSchema)
identity = ExperimentalField(NestedField(IdentitySchema))
idle_time_before_shutdown = fields.Str()
idle_time_before_shutdown_minutes = fields.Int()
custom_applications = fields.List(NestedField(CustomApplicationsSchema))
setup_scripts = NestedField(SetupScriptsSchema)
os_image_metadata = NestedField(OsImageMetadataSchema, dump_only=True)
enable_node_public_ip = fields.Bool(
metadata={"description": "Enable or disable node public IP address provisioning."}
)
enable_sso = fields.Bool(metadata={"description": "Enable or disable single sign-on for the compute instance."})
enable_root_access = fields.Bool(
metadata={"description": "Enable or disable root access for the compute instance."}
)
release_quota_on_stop = fields.Bool(
metadata={"description": "Release quota on stop for the compute instance. Defaults to False."}
)
enable_os_patching = fields.Bool(
metadata={"description": "Enable or disable OS patching for the compute instance. Defaults to False."}
)
|