1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9import msrest.serialization
10
11
12class ARMBaseModel(msrest.serialization.Model):
13    """Represents the base class for all object models.
14
15    Variables are only populated by the server, and will be ignored when sending a request.
16
17    :ivar id: The path ID that uniquely identifies the object.
18    :vartype id: str
19    :ivar name: The object name.
20    :vartype name: str
21    :ivar type: The hierarchical type of the object.
22    :vartype type: str
23    """
24
25    _validation = {
26        'id': {'readonly': True},
27        'name': {'readonly': True},
28        'type': {'readonly': True},
29    }
30
31    _attribute_map = {
32        'id': {'key': 'id', 'type': 'str'},
33        'name': {'key': 'name', 'type': 'str'},
34        'type': {'key': 'type', 'type': 'str'},
35    }
36
37    def __init__(
38        self,
39        **kwargs
40    ):
41        super(ARMBaseModel, self).__init__(**kwargs)
42        self.id = None
43        self.name = None
44        self.type = None
45
46
47class Addon(ARMBaseModel):
48    """Role Addon.
49
50    You probably want to use the sub-classes and not this class directly. Known
51    sub-classes are: ArcAddon, IoTAddon.
52
53    Variables are only populated by the server, and will be ignored when sending a request.
54
55    All required parameters must be populated in order to send to Azure.
56
57    :ivar id: The path ID that uniquely identifies the object.
58    :vartype id: str
59    :ivar name: The object name.
60    :vartype name: str
61    :ivar type: The hierarchical type of the object.
62    :vartype type: str
63    :param kind: Required. Addon type.Constant filled by server.  Possible values include:
64     "IotEdge", "ArcForKubernetes".
65    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AddonType
66    :ivar system_data: Addon type.
67    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
68    """
69
70    _validation = {
71        'id': {'readonly': True},
72        'name': {'readonly': True},
73        'type': {'readonly': True},
74        'kind': {'required': True},
75        'system_data': {'readonly': True},
76    }
77
78    _attribute_map = {
79        'id': {'key': 'id', 'type': 'str'},
80        'name': {'key': 'name', 'type': 'str'},
81        'type': {'key': 'type', 'type': 'str'},
82        'kind': {'key': 'kind', 'type': 'str'},
83        'system_data': {'key': 'systemData', 'type': 'SystemData'},
84    }
85
86    _subtype_map = {
87        'kind': {'ArcForKubernetes': 'ArcAddon', 'IotEdge': 'IoTAddon'}
88    }
89
90    def __init__(
91        self,
92        **kwargs
93    ):
94        super(Addon, self).__init__(**kwargs)
95        self.kind = 'Addon'  # type: str
96        self.system_data = None
97
98
99class AddonList(msrest.serialization.Model):
100    """Collection of all the Role addon on the Azure Stack Edge device.
101
102    Variables are only populated by the server, and will be ignored when sending a request.
103
104    :ivar value: The Value.
105    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Addon]
106    :ivar next_link: Link to the next set of results.
107    :vartype next_link: str
108    """
109
110    _validation = {
111        'value': {'readonly': True},
112        'next_link': {'readonly': True},
113    }
114
115    _attribute_map = {
116        'value': {'key': 'value', 'type': '[Addon]'},
117        'next_link': {'key': 'nextLink', 'type': 'str'},
118    }
119
120    def __init__(
121        self,
122        **kwargs
123    ):
124        super(AddonList, self).__init__(**kwargs)
125        self.value = None
126        self.next_link = None
127
128
129class Address(msrest.serialization.Model):
130    """The shipping address of the customer.
131
132    All required parameters must be populated in order to send to Azure.
133
134    :param address_line1: The address line1.
135    :type address_line1: str
136    :param address_line2: The address line2.
137    :type address_line2: str
138    :param address_line3: The address line3.
139    :type address_line3: str
140    :param postal_code: The postal code.
141    :type postal_code: str
142    :param city: The city name.
143    :type city: str
144    :param state: The state name.
145    :type state: str
146    :param country: Required. The country name.
147    :type country: str
148    """
149
150    _validation = {
151        'country': {'required': True},
152    }
153
154    _attribute_map = {
155        'address_line1': {'key': 'addressLine1', 'type': 'str'},
156        'address_line2': {'key': 'addressLine2', 'type': 'str'},
157        'address_line3': {'key': 'addressLine3', 'type': 'str'},
158        'postal_code': {'key': 'postalCode', 'type': 'str'},
159        'city': {'key': 'city', 'type': 'str'},
160        'state': {'key': 'state', 'type': 'str'},
161        'country': {'key': 'country', 'type': 'str'},
162    }
163
164    def __init__(
165        self,
166        **kwargs
167    ):
168        super(Address, self).__init__(**kwargs)
169        self.address_line1 = kwargs.get('address_line1', None)
170        self.address_line2 = kwargs.get('address_line2', None)
171        self.address_line3 = kwargs.get('address_line3', None)
172        self.postal_code = kwargs.get('postal_code', None)
173        self.city = kwargs.get('city', None)
174        self.state = kwargs.get('state', None)
175        self.country = kwargs['country']
176
177
178class Alert(ARMBaseModel):
179    """Alert on the data box edge/gateway device.
180
181    Variables are only populated by the server, and will be ignored when sending a request.
182
183    :ivar id: The path ID that uniquely identifies the object.
184    :vartype id: str
185    :ivar name: The object name.
186    :vartype name: str
187    :ivar type: The hierarchical type of the object.
188    :vartype type: str
189    :ivar system_data: Alert generated in the resource.
190    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
191    :ivar title: Alert title.
192    :vartype title: str
193    :ivar alert_type: Alert type.
194    :vartype alert_type: str
195    :ivar appeared_at_date_time: UTC time when the alert appeared.
196    :vartype appeared_at_date_time: ~datetime.datetime
197    :ivar recommendation: Alert recommendation.
198    :vartype recommendation: str
199    :ivar severity: Severity of the alert. Possible values include: "Informational", "Warning",
200     "Critical".
201    :vartype severity: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AlertSeverity
202    :ivar error_details: Error details of the alert.
203    :vartype error_details: ~azure.mgmt.databoxedge.v2020_12_01.models.AlertErrorDetails
204    :ivar detailed_information: Alert details.
205    :vartype detailed_information: dict[str, str]
206    """
207
208    _validation = {
209        'id': {'readonly': True},
210        'name': {'readonly': True},
211        'type': {'readonly': True},
212        'system_data': {'readonly': True},
213        'title': {'readonly': True},
214        'alert_type': {'readonly': True},
215        'appeared_at_date_time': {'readonly': True},
216        'recommendation': {'readonly': True},
217        'severity': {'readonly': True},
218        'error_details': {'readonly': True},
219        'detailed_information': {'readonly': True},
220    }
221
222    _attribute_map = {
223        'id': {'key': 'id', 'type': 'str'},
224        'name': {'key': 'name', 'type': 'str'},
225        'type': {'key': 'type', 'type': 'str'},
226        'system_data': {'key': 'systemData', 'type': 'SystemData'},
227        'title': {'key': 'properties.title', 'type': 'str'},
228        'alert_type': {'key': 'properties.alertType', 'type': 'str'},
229        'appeared_at_date_time': {'key': 'properties.appearedAtDateTime', 'type': 'iso-8601'},
230        'recommendation': {'key': 'properties.recommendation', 'type': 'str'},
231        'severity': {'key': 'properties.severity', 'type': 'str'},
232        'error_details': {'key': 'properties.errorDetails', 'type': 'AlertErrorDetails'},
233        'detailed_information': {'key': 'properties.detailedInformation', 'type': '{str}'},
234    }
235
236    def __init__(
237        self,
238        **kwargs
239    ):
240        super(Alert, self).__init__(**kwargs)
241        self.system_data = None
242        self.title = None
243        self.alert_type = None
244        self.appeared_at_date_time = None
245        self.recommendation = None
246        self.severity = None
247        self.error_details = None
248        self.detailed_information = None
249
250
251class AlertErrorDetails(msrest.serialization.Model):
252    """Error details for the alert.
253
254    Variables are only populated by the server, and will be ignored when sending a request.
255
256    :ivar error_code: Error code.
257    :vartype error_code: str
258    :ivar error_message: Error Message.
259    :vartype error_message: str
260    :ivar occurrences: Number of occurrences.
261    :vartype occurrences: int
262    """
263
264    _validation = {
265        'error_code': {'readonly': True},
266        'error_message': {'readonly': True},
267        'occurrences': {'readonly': True},
268    }
269
270    _attribute_map = {
271        'error_code': {'key': 'errorCode', 'type': 'str'},
272        'error_message': {'key': 'errorMessage', 'type': 'str'},
273        'occurrences': {'key': 'occurrences', 'type': 'int'},
274    }
275
276    def __init__(
277        self,
278        **kwargs
279    ):
280        super(AlertErrorDetails, self).__init__(**kwargs)
281        self.error_code = None
282        self.error_message = None
283        self.occurrences = None
284
285
286class AlertList(msrest.serialization.Model):
287    """Collection of alerts.
288
289    Variables are only populated by the server, and will be ignored when sending a request.
290
291    :ivar value: The value.
292    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Alert]
293    :ivar next_link: Link to the next set of results.
294    :vartype next_link: str
295    """
296
297    _validation = {
298        'value': {'readonly': True},
299        'next_link': {'readonly': True},
300    }
301
302    _attribute_map = {
303        'value': {'key': 'value', 'type': '[Alert]'},
304        'next_link': {'key': 'nextLink', 'type': 'str'},
305    }
306
307    def __init__(
308        self,
309        **kwargs
310    ):
311        super(AlertList, self).__init__(**kwargs)
312        self.value = None
313        self.next_link = None
314
315
316class ArcAddon(Addon):
317    """Arc Addon.
318
319    Variables are only populated by the server, and will be ignored when sending a request.
320
321    All required parameters must be populated in order to send to Azure.
322
323    :ivar id: The path ID that uniquely identifies the object.
324    :vartype id: str
325    :ivar name: The object name.
326    :vartype name: str
327    :ivar type: The hierarchical type of the object.
328    :vartype type: str
329    :param kind: Required. Addon type.Constant filled by server.  Possible values include:
330     "IotEdge", "ArcForKubernetes".
331    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AddonType
332    :ivar system_data: Addon type.
333    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
334    :param subscription_id: Required. Arc resource subscription Id.
335    :type subscription_id: str
336    :param resource_group_name: Required. Arc resource group name.
337    :type resource_group_name: str
338    :param resource_name: Required. Arc resource Name.
339    :type resource_name: str
340    :param resource_location: Required. Arc resource location.
341    :type resource_location: str
342    :ivar version: Arc resource version.
343    :vartype version: str
344    :ivar host_platform: Host OS supported by the Arc addon. Possible values include: "Windows",
345     "Linux".
346    :vartype host_platform: str or ~azure.mgmt.databoxedge.v2020_12_01.models.PlatformType
347    :ivar host_platform_type: Platform where the runtime is hosted. Possible values include:
348     "KubernetesCluster", "LinuxVM".
349    :vartype host_platform_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.HostPlatformType
350    :ivar provisioning_state: Addon Provisioning State. Possible values include: "Invalid",
351     "Creating", "Created", "Updating", "Reconfiguring", "Failed", "Deleting".
352    :vartype provisioning_state: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AddonState
353    """
354
355    _validation = {
356        'id': {'readonly': True},
357        'name': {'readonly': True},
358        'type': {'readonly': True},
359        'kind': {'required': True},
360        'system_data': {'readonly': True},
361        'subscription_id': {'required': True},
362        'resource_group_name': {'required': True},
363        'resource_name': {'required': True},
364        'resource_location': {'required': True},
365        'version': {'readonly': True},
366        'host_platform': {'readonly': True},
367        'host_platform_type': {'readonly': True},
368        'provisioning_state': {'readonly': True},
369    }
370
371    _attribute_map = {
372        'id': {'key': 'id', 'type': 'str'},
373        'name': {'key': 'name', 'type': 'str'},
374        'type': {'key': 'type', 'type': 'str'},
375        'kind': {'key': 'kind', 'type': 'str'},
376        'system_data': {'key': 'systemData', 'type': 'SystemData'},
377        'subscription_id': {'key': 'properties.subscriptionId', 'type': 'str'},
378        'resource_group_name': {'key': 'properties.resourceGroupName', 'type': 'str'},
379        'resource_name': {'key': 'properties.resourceName', 'type': 'str'},
380        'resource_location': {'key': 'properties.resourceLocation', 'type': 'str'},
381        'version': {'key': 'properties.version', 'type': 'str'},
382        'host_platform': {'key': 'properties.hostPlatform', 'type': 'str'},
383        'host_platform_type': {'key': 'properties.hostPlatformType', 'type': 'str'},
384        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
385    }
386
387    def __init__(
388        self,
389        **kwargs
390    ):
391        super(ArcAddon, self).__init__(**kwargs)
392        self.kind = 'ArcForKubernetes'  # type: str
393        self.subscription_id = kwargs['subscription_id']
394        self.resource_group_name = kwargs['resource_group_name']
395        self.resource_name = kwargs['resource_name']
396        self.resource_location = kwargs['resource_location']
397        self.version = None
398        self.host_platform = None
399        self.host_platform_type = None
400        self.provisioning_state = None
401
402
403class AsymmetricEncryptedSecret(msrest.serialization.Model):
404    """Represent the secrets intended for encryption with asymmetric key pair.
405
406    All required parameters must be populated in order to send to Azure.
407
408    :param value: Required. The value of the secret.
409    :type value: str
410    :param encryption_cert_thumbprint: Thumbprint certificate used to encrypt \"Value\". If the
411     value is unencrypted, it will be null.
412    :type encryption_cert_thumbprint: str
413    :param encryption_algorithm: Required. The algorithm used to encrypt "Value". Possible values
414     include: "None", "AES256", "RSAES_PKCS1_v_1_5".
415    :type encryption_algorithm: str or
416     ~azure.mgmt.databoxedge.v2020_12_01.models.EncryptionAlgorithm
417    """
418
419    _validation = {
420        'value': {'required': True},
421        'encryption_algorithm': {'required': True},
422    }
423
424    _attribute_map = {
425        'value': {'key': 'value', 'type': 'str'},
426        'encryption_cert_thumbprint': {'key': 'encryptionCertThumbprint', 'type': 'str'},
427        'encryption_algorithm': {'key': 'encryptionAlgorithm', 'type': 'str'},
428    }
429
430    def __init__(
431        self,
432        **kwargs
433    ):
434        super(AsymmetricEncryptedSecret, self).__init__(**kwargs)
435        self.value = kwargs['value']
436        self.encryption_cert_thumbprint = kwargs.get('encryption_cert_thumbprint', None)
437        self.encryption_algorithm = kwargs['encryption_algorithm']
438
439
440class Authentication(msrest.serialization.Model):
441    """Authentication mechanism for IoT devices.
442
443    :param symmetric_key: Symmetric key for authentication.
444    :type symmetric_key: ~azure.mgmt.databoxedge.v2020_12_01.models.SymmetricKey
445    """
446
447    _attribute_map = {
448        'symmetric_key': {'key': 'symmetricKey', 'type': 'SymmetricKey'},
449    }
450
451    def __init__(
452        self,
453        **kwargs
454    ):
455        super(Authentication, self).__init__(**kwargs)
456        self.symmetric_key = kwargs.get('symmetric_key', None)
457
458
459class AzureContainerInfo(msrest.serialization.Model):
460    """Azure container mapping of the endpoint.
461
462    All required parameters must be populated in order to send to Azure.
463
464    :param storage_account_credential_id: Required. ID of the storage account credential used to
465     access storage.
466    :type storage_account_credential_id: str
467    :param container_name: Required. Container name (Based on the data format specified, this
468     represents the name of Azure Files/Page blob/Block blob).
469    :type container_name: str
470    :param data_format: Required. Storage format used for the file represented by the share.
471     Possible values include: "BlockBlob", "PageBlob", "AzureFile".
472    :type data_format: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AzureContainerDataFormat
473    """
474
475    _validation = {
476        'storage_account_credential_id': {'required': True},
477        'container_name': {'required': True},
478        'data_format': {'required': True},
479    }
480
481    _attribute_map = {
482        'storage_account_credential_id': {'key': 'storageAccountCredentialId', 'type': 'str'},
483        'container_name': {'key': 'containerName', 'type': 'str'},
484        'data_format': {'key': 'dataFormat', 'type': 'str'},
485    }
486
487    def __init__(
488        self,
489        **kwargs
490    ):
491        super(AzureContainerInfo, self).__init__(**kwargs)
492        self.storage_account_credential_id = kwargs['storage_account_credential_id']
493        self.container_name = kwargs['container_name']
494        self.data_format = kwargs['data_format']
495
496
497class BandwidthSchedule(ARMBaseModel):
498    """The bandwidth schedule details.
499
500    Variables are only populated by the server, and will be ignored when sending a request.
501
502    All required parameters must be populated in order to send to Azure.
503
504    :ivar id: The path ID that uniquely identifies the object.
505    :vartype id: str
506    :ivar name: The object name.
507    :vartype name: str
508    :ivar type: The hierarchical type of the object.
509    :vartype type: str
510    :ivar system_data: Bandwidth object related to ASE resource.
511    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
512    :param start: Required. The start time of the schedule in UTC.
513    :type start: str
514    :param stop: Required. The stop time of the schedule in UTC.
515    :type stop: str
516    :param rate_in_mbps: Required. The bandwidth rate in Mbps.
517    :type rate_in_mbps: int
518    :param days: Required. The days of the week when this schedule is applicable.
519    :type days: list[str or ~azure.mgmt.databoxedge.v2020_12_01.models.DayOfWeek]
520    """
521
522    _validation = {
523        'id': {'readonly': True},
524        'name': {'readonly': True},
525        'type': {'readonly': True},
526        'system_data': {'readonly': True},
527        'start': {'required': True},
528        'stop': {'required': True},
529        'rate_in_mbps': {'required': True},
530        'days': {'required': True},
531    }
532
533    _attribute_map = {
534        'id': {'key': 'id', 'type': 'str'},
535        'name': {'key': 'name', 'type': 'str'},
536        'type': {'key': 'type', 'type': 'str'},
537        'system_data': {'key': 'systemData', 'type': 'SystemData'},
538        'start': {'key': 'properties.start', 'type': 'str'},
539        'stop': {'key': 'properties.stop', 'type': 'str'},
540        'rate_in_mbps': {'key': 'properties.rateInMbps', 'type': 'int'},
541        'days': {'key': 'properties.days', 'type': '[str]'},
542    }
543
544    def __init__(
545        self,
546        **kwargs
547    ):
548        super(BandwidthSchedule, self).__init__(**kwargs)
549        self.system_data = None
550        self.start = kwargs['start']
551        self.stop = kwargs['stop']
552        self.rate_in_mbps = kwargs['rate_in_mbps']
553        self.days = kwargs['days']
554
555
556class BandwidthSchedulesList(msrest.serialization.Model):
557    """The collection of bandwidth schedules.
558
559    Variables are only populated by the server, and will be ignored when sending a request.
560
561    :ivar value: The list of bandwidth schedules.
562    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.BandwidthSchedule]
563    :ivar next_link: Link to the next set of results.
564    :vartype next_link: str
565    """
566
567    _validation = {
568        'value': {'readonly': True},
569        'next_link': {'readonly': True},
570    }
571
572    _attribute_map = {
573        'value': {'key': 'value', 'type': '[BandwidthSchedule]'},
574        'next_link': {'key': 'nextLink', 'type': 'str'},
575    }
576
577    def __init__(
578        self,
579        **kwargs
580    ):
581        super(BandwidthSchedulesList, self).__init__(**kwargs)
582        self.value = None
583        self.next_link = None
584
585
586class ClientAccessRight(msrest.serialization.Model):
587    """The mapping between a particular client IP and the type of access client has on the NFS share.
588
589    All required parameters must be populated in order to send to Azure.
590
591    :param client: Required. IP of the client.
592    :type client: str
593    :param access_permission: Required. Type of access to be allowed for the client. Possible
594     values include: "NoAccess", "ReadOnly", "ReadWrite".
595    :type access_permission: str or ~azure.mgmt.databoxedge.v2020_12_01.models.ClientPermissionType
596    """
597
598    _validation = {
599        'client': {'required': True},
600        'access_permission': {'required': True},
601    }
602
603    _attribute_map = {
604        'client': {'key': 'client', 'type': 'str'},
605        'access_permission': {'key': 'accessPermission', 'type': 'str'},
606    }
607
608    def __init__(
609        self,
610        **kwargs
611    ):
612        super(ClientAccessRight, self).__init__(**kwargs)
613        self.client = kwargs['client']
614        self.access_permission = kwargs['access_permission']
615
616
617class Role(ARMBaseModel):
618    """Compute role.
619
620    You probably want to use the sub-classes and not this class directly. Known
621    sub-classes are: CloudEdgeManagementRole, IoTRole, KubernetesRole, MECRole.
622
623    Variables are only populated by the server, and will be ignored when sending a request.
624
625    All required parameters must be populated in order to send to Azure.
626
627    :ivar id: The path ID that uniquely identifies the object.
628    :vartype id: str
629    :ivar name: The object name.
630    :vartype name: str
631    :ivar type: The hierarchical type of the object.
632    :vartype type: str
633    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
634     "ASA", "Functions", "Cognitive", "MEC", "CloudEdgeManagement", "Kubernetes".
635    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleTypes
636    :ivar system_data: Role configured on ASE resource.
637    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
638    """
639
640    _validation = {
641        'id': {'readonly': True},
642        'name': {'readonly': True},
643        'type': {'readonly': True},
644        'kind': {'required': True},
645        'system_data': {'readonly': True},
646    }
647
648    _attribute_map = {
649        'id': {'key': 'id', 'type': 'str'},
650        'name': {'key': 'name', 'type': 'str'},
651        'type': {'key': 'type', 'type': 'str'},
652        'kind': {'key': 'kind', 'type': 'str'},
653        'system_data': {'key': 'systemData', 'type': 'SystemData'},
654    }
655
656    _subtype_map = {
657        'kind': {'CloudEdgeManagement': 'CloudEdgeManagementRole', 'IOT': 'IoTRole', 'Kubernetes': 'KubernetesRole', 'MEC': 'MECRole'}
658    }
659
660    def __init__(
661        self,
662        **kwargs
663    ):
664        super(Role, self).__init__(**kwargs)
665        self.kind = 'Role'  # type: str
666        self.system_data = None
667
668
669class CloudEdgeManagementRole(Role):
670    """CloudEdgeManagementRole role.
671
672    Variables are only populated by the server, and will be ignored when sending a request.
673
674    All required parameters must be populated in order to send to Azure.
675
676    :ivar id: The path ID that uniquely identifies the object.
677    :vartype id: str
678    :ivar name: The object name.
679    :vartype name: str
680    :ivar type: The hierarchical type of the object.
681    :vartype type: str
682    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
683     "ASA", "Functions", "Cognitive", "MEC", "CloudEdgeManagement", "Kubernetes".
684    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleTypes
685    :ivar system_data: Role configured on ASE resource.
686    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
687    :ivar local_management_status: Local Edge Management Status. Possible values include:
688     "Enabled", "Disabled".
689    :vartype local_management_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleStatus
690    :ivar edge_profile: Edge Profile of the resource.
691    :vartype edge_profile: ~azure.mgmt.databoxedge.v2020_12_01.models.EdgeProfile
692    :param role_status: Role status. Possible values include: "Enabled", "Disabled".
693    :type role_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleStatus
694    """
695
696    _validation = {
697        'id': {'readonly': True},
698        'name': {'readonly': True},
699        'type': {'readonly': True},
700        'kind': {'required': True},
701        'system_data': {'readonly': True},
702        'local_management_status': {'readonly': True},
703        'edge_profile': {'readonly': True},
704    }
705
706    _attribute_map = {
707        'id': {'key': 'id', 'type': 'str'},
708        'name': {'key': 'name', 'type': 'str'},
709        'type': {'key': 'type', 'type': 'str'},
710        'kind': {'key': 'kind', 'type': 'str'},
711        'system_data': {'key': 'systemData', 'type': 'SystemData'},
712        'local_management_status': {'key': 'properties.localManagementStatus', 'type': 'str'},
713        'edge_profile': {'key': 'properties.edgeProfile', 'type': 'EdgeProfile'},
714        'role_status': {'key': 'properties.roleStatus', 'type': 'str'},
715    }
716
717    def __init__(
718        self,
719        **kwargs
720    ):
721        super(CloudEdgeManagementRole, self).__init__(**kwargs)
722        self.kind = 'CloudEdgeManagement'  # type: str
723        self.local_management_status = None
724        self.edge_profile = None
725        self.role_status = kwargs.get('role_status', None)
726
727
728class CloudErrorBody(msrest.serialization.Model):
729    """An error response from the service.
730
731    :param code: An identifier for the error. Codes are invariant and are intended to be consumed
732     programmatically.
733    :type code: str
734    :param message: A message describing the error, intended to be suitable for display in a user
735     interface.
736    :type message: str
737    :param details: A list of additional details about the error.
738    :type details: list[~azure.mgmt.databoxedge.v2020_12_01.models.CloudErrorBody]
739    """
740
741    _attribute_map = {
742        'code': {'key': 'code', 'type': 'str'},
743        'message': {'key': 'message', 'type': 'str'},
744        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
745    }
746
747    def __init__(
748        self,
749        **kwargs
750    ):
751        super(CloudErrorBody, self).__init__(**kwargs)
752        self.code = kwargs.get('code', None)
753        self.message = kwargs.get('message', None)
754        self.details = kwargs.get('details', None)
755
756
757class CniConfig(msrest.serialization.Model):
758    """Cni configuration.
759
760    Variables are only populated by the server, and will be ignored when sending a request.
761
762    :ivar type: Cni type.
763    :vartype type: str
764    :ivar version: Cni version.
765    :vartype version: str
766    :ivar pod_subnet: Pod Subnet.
767    :vartype pod_subnet: str
768    :ivar service_subnet: Service subnet.
769    :vartype service_subnet: str
770    """
771
772    _validation = {
773        'type': {'readonly': True},
774        'version': {'readonly': True},
775        'pod_subnet': {'readonly': True},
776        'service_subnet': {'readonly': True},
777    }
778
779    _attribute_map = {
780        'type': {'key': 'type', 'type': 'str'},
781        'version': {'key': 'version', 'type': 'str'},
782        'pod_subnet': {'key': 'podSubnet', 'type': 'str'},
783        'service_subnet': {'key': 'serviceSubnet', 'type': 'str'},
784    }
785
786    def __init__(
787        self,
788        **kwargs
789    ):
790        super(CniConfig, self).__init__(**kwargs)
791        self.type = None
792        self.version = None
793        self.pod_subnet = None
794        self.service_subnet = None
795
796
797class ComputeResource(msrest.serialization.Model):
798    """Compute infrastructure Resource.
799
800    All required parameters must be populated in order to send to Azure.
801
802    :param processor_count: Required. Processor count.
803    :type processor_count: int
804    :param memory_in_gb: Required. Memory in GB.
805    :type memory_in_gb: long
806    """
807
808    _validation = {
809        'processor_count': {'required': True},
810        'memory_in_gb': {'required': True},
811    }
812
813    _attribute_map = {
814        'processor_count': {'key': 'processorCount', 'type': 'int'},
815        'memory_in_gb': {'key': 'memoryInGB', 'type': 'long'},
816    }
817
818    def __init__(
819        self,
820        **kwargs
821    ):
822        super(ComputeResource, self).__init__(**kwargs)
823        self.processor_count = kwargs['processor_count']
824        self.memory_in_gb = kwargs['memory_in_gb']
825
826
827class ContactDetails(msrest.serialization.Model):
828    """Contains all the contact details of the customer.
829
830    All required parameters must be populated in order to send to Azure.
831
832    :param contact_person: Required. The contact person name.
833    :type contact_person: str
834    :param company_name: Required. The name of the company.
835    :type company_name: str
836    :param phone: Required. The phone number.
837    :type phone: str
838    :param email_list: Required. The email list.
839    :type email_list: list[str]
840    """
841
842    _validation = {
843        'contact_person': {'required': True},
844        'company_name': {'required': True},
845        'phone': {'required': True},
846        'email_list': {'required': True},
847    }
848
849    _attribute_map = {
850        'contact_person': {'key': 'contactPerson', 'type': 'str'},
851        'company_name': {'key': 'companyName', 'type': 'str'},
852        'phone': {'key': 'phone', 'type': 'str'},
853        'email_list': {'key': 'emailList', 'type': '[str]'},
854    }
855
856    def __init__(
857        self,
858        **kwargs
859    ):
860        super(ContactDetails, self).__init__(**kwargs)
861        self.contact_person = kwargs['contact_person']
862        self.company_name = kwargs['company_name']
863        self.phone = kwargs['phone']
864        self.email_list = kwargs['email_list']
865
866
867class Container(ARMBaseModel):
868    """Represents a container on the  Data Box Edge/Gateway device.
869
870    Variables are only populated by the server, and will be ignored when sending a request.
871
872    All required parameters must be populated in order to send to Azure.
873
874    :ivar id: The path ID that uniquely identifies the object.
875    :vartype id: str
876    :ivar name: The object name.
877    :vartype name: str
878    :ivar type: The hierarchical type of the object.
879    :vartype type: str
880    :ivar system_data: Container in DataBoxEdge Resource.
881    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
882    :ivar container_status: Current status of the container. Possible values include: "OK",
883     "Offline", "Unknown", "Updating", "NeedsAttention".
884    :vartype container_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.ContainerStatus
885    :param data_format: Required. DataFormat for Container. Possible values include: "BlockBlob",
886     "PageBlob", "AzureFile".
887    :type data_format: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AzureContainerDataFormat
888    :ivar refresh_details: Details of the refresh job on this container.
889    :vartype refresh_details: ~azure.mgmt.databoxedge.v2020_12_01.models.RefreshDetails
890    :ivar created_date_time: The UTC time when container got created.
891    :vartype created_date_time: ~datetime.datetime
892    """
893
894    _validation = {
895        'id': {'readonly': True},
896        'name': {'readonly': True},
897        'type': {'readonly': True},
898        'system_data': {'readonly': True},
899        'container_status': {'readonly': True},
900        'data_format': {'required': True},
901        'refresh_details': {'readonly': True},
902        'created_date_time': {'readonly': True},
903    }
904
905    _attribute_map = {
906        'id': {'key': 'id', 'type': 'str'},
907        'name': {'key': 'name', 'type': 'str'},
908        'type': {'key': 'type', 'type': 'str'},
909        'system_data': {'key': 'systemData', 'type': 'SystemData'},
910        'container_status': {'key': 'properties.containerStatus', 'type': 'str'},
911        'data_format': {'key': 'properties.dataFormat', 'type': 'str'},
912        'refresh_details': {'key': 'properties.refreshDetails', 'type': 'RefreshDetails'},
913        'created_date_time': {'key': 'properties.createdDateTime', 'type': 'iso-8601'},
914    }
915
916    def __init__(
917        self,
918        **kwargs
919    ):
920        super(Container, self).__init__(**kwargs)
921        self.system_data = None
922        self.container_status = None
923        self.data_format = kwargs['data_format']
924        self.refresh_details = None
925        self.created_date_time = None
926
927
928class ContainerList(msrest.serialization.Model):
929    """Collection of all the containers on the Data Box Edge/Gateway device.
930
931    Variables are only populated by the server, and will be ignored when sending a request.
932
933    :ivar value: The list of containers.
934    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Container]
935    :ivar next_link: Link to the next set of results.
936    :vartype next_link: str
937    """
938
939    _validation = {
940        'value': {'readonly': True},
941        'next_link': {'readonly': True},
942    }
943
944    _attribute_map = {
945        'value': {'key': 'value', 'type': '[Container]'},
946        'next_link': {'key': 'nextLink', 'type': 'str'},
947    }
948
949    def __init__(
950        self,
951        **kwargs
952    ):
953        super(ContainerList, self).__init__(**kwargs)
954        self.value = None
955        self.next_link = None
956
957
958class DataBoxEdgeDevice(ARMBaseModel):
959    """The Data Box Edge/Gateway device.
960
961    Variables are only populated by the server, and will be ignored when sending a request.
962
963    All required parameters must be populated in order to send to Azure.
964
965    :ivar id: The path ID that uniquely identifies the object.
966    :vartype id: str
967    :ivar name: The object name.
968    :vartype name: str
969    :ivar type: The hierarchical type of the object.
970    :vartype type: str
971    :param location: Required. The location of the device. This is a supported and registered Azure
972     geographical region (for example, West US, East US, or Southeast Asia). The geographical region
973     of a device cannot be changed once it is created, but if an identical geographical region is
974     specified on update, the request will succeed.
975    :type location: str
976    :param tags: A set of tags. The list of tags that describe the device. These tags can be used
977     to view and group this device (across resource groups).
978    :type tags: dict[str, str]
979    :param sku: The SKU type.
980    :type sku: ~azure.mgmt.databoxedge.v2020_12_01.models.Sku
981    :param etag: The etag for the devices.
982    :type etag: str
983    :param identity: Msi identity of the resource.
984    :type identity: ~azure.mgmt.databoxedge.v2020_12_01.models.ResourceIdentity
985    :ivar kind: The etag for the devices. Possible values include: "AzureDataBoxGateway",
986     "AzureStackEdge", "AzureStackHub", "AzureModularDataCentre".
987    :vartype kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.DataBoxEdgeDeviceKind
988    :ivar system_data: DataBoxEdge Resource.
989    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
990    :param data_box_edge_device_status: The status of the Data Box Edge/Gateway device. Possible
991     values include: "ReadyToSetup", "Online", "Offline", "NeedsAttention", "Disconnected",
992     "PartiallyDisconnected", "Maintenance".
993    :type data_box_edge_device_status: str or
994     ~azure.mgmt.databoxedge.v2020_12_01.models.DataBoxEdgeDeviceStatus
995    :ivar serial_number: The Serial Number of Data Box Edge/Gateway device.
996    :vartype serial_number: str
997    :ivar description: The Description of the Data Box Edge/Gateway device.
998    :vartype description: str
999    :ivar model_description: The description of the Data Box Edge/Gateway device model.
1000    :vartype model_description: str
1001    :ivar device_type: The type of the Data Box Edge/Gateway device. Possible values include:
1002     "DataBoxEdgeDevice".
1003    :vartype device_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.DeviceType
1004    :ivar friendly_name: The Data Box Edge/Gateway device name.
1005    :vartype friendly_name: str
1006    :ivar culture: The Data Box Edge/Gateway device culture.
1007    :vartype culture: str
1008    :ivar device_model: The Data Box Edge/Gateway device model.
1009    :vartype device_model: str
1010    :ivar device_software_version: The Data Box Edge/Gateway device software version.
1011    :vartype device_software_version: str
1012    :ivar device_local_capacity: The Data Box Edge/Gateway device local capacity in MB.
1013    :vartype device_local_capacity: long
1014    :ivar time_zone: The Data Box Edge/Gateway device timezone.
1015    :vartype time_zone: str
1016    :ivar device_hcs_version: The device software version number of the device (eg: 1.2.18105.6).
1017    :vartype device_hcs_version: str
1018    :ivar configured_role_types: Type of compute roles configured.
1019    :vartype configured_role_types: list[str or
1020     ~azure.mgmt.databoxedge.v2020_12_01.models.RoleTypes]
1021    :ivar node_count: The number of nodes in the cluster.
1022    :vartype node_count: int
1023    :ivar resource_move_details: The details of the move operation on this resource.
1024    :vartype resource_move_details: ~azure.mgmt.databoxedge.v2020_12_01.models.ResourceMoveDetails
1025    :ivar edge_profile: The details of Edge Profile for this resource.
1026    :vartype edge_profile: ~azure.mgmt.databoxedge.v2020_12_01.models.EdgeProfile
1027    """
1028
1029    _validation = {
1030        'id': {'readonly': True},
1031        'name': {'readonly': True},
1032        'type': {'readonly': True},
1033        'location': {'required': True},
1034        'kind': {'readonly': True},
1035        'system_data': {'readonly': True},
1036        'serial_number': {'readonly': True},
1037        'description': {'readonly': True},
1038        'model_description': {'readonly': True},
1039        'device_type': {'readonly': True},
1040        'friendly_name': {'readonly': True},
1041        'culture': {'readonly': True},
1042        'device_model': {'readonly': True},
1043        'device_software_version': {'readonly': True},
1044        'device_local_capacity': {'readonly': True},
1045        'time_zone': {'readonly': True},
1046        'device_hcs_version': {'readonly': True},
1047        'configured_role_types': {'readonly': True},
1048        'node_count': {'readonly': True},
1049        'resource_move_details': {'readonly': True},
1050        'edge_profile': {'readonly': True},
1051    }
1052
1053    _attribute_map = {
1054        'id': {'key': 'id', 'type': 'str'},
1055        'name': {'key': 'name', 'type': 'str'},
1056        'type': {'key': 'type', 'type': 'str'},
1057        'location': {'key': 'location', 'type': 'str'},
1058        'tags': {'key': 'tags', 'type': '{str}'},
1059        'sku': {'key': 'sku', 'type': 'Sku'},
1060        'etag': {'key': 'etag', 'type': 'str'},
1061        'identity': {'key': 'identity', 'type': 'ResourceIdentity'},
1062        'kind': {'key': 'kind', 'type': 'str'},
1063        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1064        'data_box_edge_device_status': {'key': 'properties.dataBoxEdgeDeviceStatus', 'type': 'str'},
1065        'serial_number': {'key': 'properties.serialNumber', 'type': 'str'},
1066        'description': {'key': 'properties.description', 'type': 'str'},
1067        'model_description': {'key': 'properties.modelDescription', 'type': 'str'},
1068        'device_type': {'key': 'properties.deviceType', 'type': 'str'},
1069        'friendly_name': {'key': 'properties.friendlyName', 'type': 'str'},
1070        'culture': {'key': 'properties.culture', 'type': 'str'},
1071        'device_model': {'key': 'properties.deviceModel', 'type': 'str'},
1072        'device_software_version': {'key': 'properties.deviceSoftwareVersion', 'type': 'str'},
1073        'device_local_capacity': {'key': 'properties.deviceLocalCapacity', 'type': 'long'},
1074        'time_zone': {'key': 'properties.timeZone', 'type': 'str'},
1075        'device_hcs_version': {'key': 'properties.deviceHcsVersion', 'type': 'str'},
1076        'configured_role_types': {'key': 'properties.configuredRoleTypes', 'type': '[str]'},
1077        'node_count': {'key': 'properties.nodeCount', 'type': 'int'},
1078        'resource_move_details': {'key': 'properties.resourceMoveDetails', 'type': 'ResourceMoveDetails'},
1079        'edge_profile': {'key': 'properties.edgeProfile', 'type': 'EdgeProfile'},
1080    }
1081
1082    def __init__(
1083        self,
1084        **kwargs
1085    ):
1086        super(DataBoxEdgeDevice, self).__init__(**kwargs)
1087        self.location = kwargs['location']
1088        self.tags = kwargs.get('tags', None)
1089        self.sku = kwargs.get('sku', None)
1090        self.etag = kwargs.get('etag', None)
1091        self.identity = kwargs.get('identity', None)
1092        self.kind = None
1093        self.system_data = None
1094        self.data_box_edge_device_status = kwargs.get('data_box_edge_device_status', None)
1095        self.serial_number = None
1096        self.description = None
1097        self.model_description = None
1098        self.device_type = None
1099        self.friendly_name = None
1100        self.culture = None
1101        self.device_model = None
1102        self.device_software_version = None
1103        self.device_local_capacity = None
1104        self.time_zone = None
1105        self.device_hcs_version = None
1106        self.configured_role_types = None
1107        self.node_count = None
1108        self.resource_move_details = None
1109        self.edge_profile = None
1110
1111
1112class DataBoxEdgeDeviceExtendedInfo(ARMBaseModel):
1113    """The extended Info of the Data Box Edge/Gateway device.
1114
1115    Variables are only populated by the server, and will be ignored when sending a request.
1116
1117    :ivar id: The path ID that uniquely identifies the object.
1118    :vartype id: str
1119    :ivar name: The object name.
1120    :vartype name: str
1121    :ivar type: The hierarchical type of the object.
1122    :vartype type: str
1123    :param encryption_key_thumbprint: The digital signature of encrypted certificate.
1124    :type encryption_key_thumbprint: str
1125    :param encryption_key: The public part of the encryption certificate. Client uses this to
1126     encrypt any secret.
1127    :type encryption_key: str
1128    :ivar resource_key: The Resource ID of the Resource.
1129    :vartype resource_key: str
1130    :param client_secret_store_id: The Key Vault ARM Id for client secrets.
1131    :type client_secret_store_id: str
1132    :param client_secret_store_url: The url to access the Client Key Vault.
1133    :type client_secret_store_url: str
1134    :param channel_integrity_key_name: The name of Channel Integrity Key stored in the Client Key
1135     Vault.
1136    :type channel_integrity_key_name: str
1137    :param channel_integrity_key_version: The version of Channel Integrity Key stored in the Client
1138     Key Vault.
1139    :type channel_integrity_key_version: str
1140    :param key_vault_sync_status: Key vault sync status. Possible values include: "KeyVaultSynced",
1141     "KeyVaultSyncFailed", "KeyVaultNotConfigured", "KeyVaultSyncPending", "KeyVaultSyncing".
1142    :type key_vault_sync_status: str or
1143     ~azure.mgmt.databoxedge.v2020_12_01.models.KeyVaultSyncStatus
1144    :ivar device_secrets: Device secrets, will be returned only with ODataFilter
1145     $expand=deviceSecrets.
1146    :vartype device_secrets: ~azure.mgmt.databoxedge.v2020_12_01.models.DeviceSecrets
1147    """
1148
1149    _validation = {
1150        'id': {'readonly': True},
1151        'name': {'readonly': True},
1152        'type': {'readonly': True},
1153        'resource_key': {'readonly': True},
1154        'device_secrets': {'readonly': True},
1155    }
1156
1157    _attribute_map = {
1158        'id': {'key': 'id', 'type': 'str'},
1159        'name': {'key': 'name', 'type': 'str'},
1160        'type': {'key': 'type', 'type': 'str'},
1161        'encryption_key_thumbprint': {'key': 'properties.encryptionKeyThumbprint', 'type': 'str'},
1162        'encryption_key': {'key': 'properties.encryptionKey', 'type': 'str'},
1163        'resource_key': {'key': 'properties.resourceKey', 'type': 'str'},
1164        'client_secret_store_id': {'key': 'properties.clientSecretStoreId', 'type': 'str'},
1165        'client_secret_store_url': {'key': 'properties.clientSecretStoreUrl', 'type': 'str'},
1166        'channel_integrity_key_name': {'key': 'properties.channelIntegrityKeyName', 'type': 'str'},
1167        'channel_integrity_key_version': {'key': 'properties.channelIntegrityKeyVersion', 'type': 'str'},
1168        'key_vault_sync_status': {'key': 'properties.keyVaultSyncStatus', 'type': 'str'},
1169        'device_secrets': {'key': 'properties.deviceSecrets', 'type': 'DeviceSecrets'},
1170    }
1171
1172    def __init__(
1173        self,
1174        **kwargs
1175    ):
1176        super(DataBoxEdgeDeviceExtendedInfo, self).__init__(**kwargs)
1177        self.encryption_key_thumbprint = kwargs.get('encryption_key_thumbprint', None)
1178        self.encryption_key = kwargs.get('encryption_key', None)
1179        self.resource_key = None
1180        self.client_secret_store_id = kwargs.get('client_secret_store_id', None)
1181        self.client_secret_store_url = kwargs.get('client_secret_store_url', None)
1182        self.channel_integrity_key_name = kwargs.get('channel_integrity_key_name', None)
1183        self.channel_integrity_key_version = kwargs.get('channel_integrity_key_version', None)
1184        self.key_vault_sync_status = kwargs.get('key_vault_sync_status', None)
1185        self.device_secrets = None
1186
1187
1188class DataBoxEdgeDeviceExtendedInfoPatch(msrest.serialization.Model):
1189    """The Data Box Edge/Gateway device extended info patch.
1190
1191    :param client_secret_store_id: The Key Vault ARM Id for client secrets.
1192    :type client_secret_store_id: str
1193    :param client_secret_store_url: The url to access the Client Key Vault.
1194    :type client_secret_store_url: str
1195    :param channel_integrity_key_name: The name for Channel Integrity Key stored in the Client Key
1196     Vault.
1197    :type channel_integrity_key_name: str
1198    :param channel_integrity_key_version: The version of Channel Integrity Key stored in the Client
1199     Key Vault.
1200    :type channel_integrity_key_version: str
1201    :param sync_status: For changing or to initiate the resync to key-vault set the status to
1202     KeyVaultSyncPending, rest of the status will not be applicable. Possible values include:
1203     "KeyVaultSynced", "KeyVaultSyncFailed", "KeyVaultNotConfigured", "KeyVaultSyncPending",
1204     "KeyVaultSyncing".
1205    :type sync_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.KeyVaultSyncStatus
1206    """
1207
1208    _attribute_map = {
1209        'client_secret_store_id': {'key': 'clientSecretStoreId', 'type': 'str'},
1210        'client_secret_store_url': {'key': 'clientSecretStoreUrl', 'type': 'str'},
1211        'channel_integrity_key_name': {'key': 'channelIntegrityKeyName', 'type': 'str'},
1212        'channel_integrity_key_version': {'key': 'channelIntegrityKeyVersion', 'type': 'str'},
1213        'sync_status': {'key': 'syncStatus', 'type': 'str'},
1214    }
1215
1216    def __init__(
1217        self,
1218        **kwargs
1219    ):
1220        super(DataBoxEdgeDeviceExtendedInfoPatch, self).__init__(**kwargs)
1221        self.client_secret_store_id = kwargs.get('client_secret_store_id', None)
1222        self.client_secret_store_url = kwargs.get('client_secret_store_url', None)
1223        self.channel_integrity_key_name = kwargs.get('channel_integrity_key_name', None)
1224        self.channel_integrity_key_version = kwargs.get('channel_integrity_key_version', None)
1225        self.sync_status = kwargs.get('sync_status', None)
1226
1227
1228class DataBoxEdgeDeviceList(msrest.serialization.Model):
1229    """The collection of Data Box Edge/Gateway devices.
1230
1231    Variables are only populated by the server, and will be ignored when sending a request.
1232
1233    :ivar value: The list of Data Box Edge/Gateway devices.
1234    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.DataBoxEdgeDevice]
1235    :ivar next_link: Link to the next set of results.
1236    :vartype next_link: str
1237    """
1238
1239    _validation = {
1240        'value': {'readonly': True},
1241        'next_link': {'readonly': True},
1242    }
1243
1244    _attribute_map = {
1245        'value': {'key': 'value', 'type': '[DataBoxEdgeDevice]'},
1246        'next_link': {'key': 'nextLink', 'type': 'str'},
1247    }
1248
1249    def __init__(
1250        self,
1251        **kwargs
1252    ):
1253        super(DataBoxEdgeDeviceList, self).__init__(**kwargs)
1254        self.value = None
1255        self.next_link = None
1256
1257
1258class DataBoxEdgeDevicePatch(msrest.serialization.Model):
1259    """The Data Box Edge/Gateway device patch.
1260
1261    :param tags: A set of tags. The tags attached to the Data Box Edge/Gateway resource.
1262    :type tags: dict[str, str]
1263    :param identity: Msi identity of the resource.
1264    :type identity: ~azure.mgmt.databoxedge.v2020_12_01.models.ResourceIdentity
1265    :param edge_profile: Edge Profile property of the Data Box Edge/Gateway device.
1266    :type edge_profile: ~azure.mgmt.databoxedge.v2020_12_01.models.EdgeProfilePatch
1267    """
1268
1269    _attribute_map = {
1270        'tags': {'key': 'tags', 'type': '{str}'},
1271        'identity': {'key': 'identity', 'type': 'ResourceIdentity'},
1272        'edge_profile': {'key': 'properties.edgeProfile', 'type': 'EdgeProfilePatch'},
1273    }
1274
1275    def __init__(
1276        self,
1277        **kwargs
1278    ):
1279        super(DataBoxEdgeDevicePatch, self).__init__(**kwargs)
1280        self.tags = kwargs.get('tags', None)
1281        self.identity = kwargs.get('identity', None)
1282        self.edge_profile = kwargs.get('edge_profile', None)
1283
1284
1285class DataBoxEdgeMoveRequest(msrest.serialization.Model):
1286    """Resource Move details.
1287
1288    All required parameters must be populated in order to send to Azure.
1289
1290    :param target_resource_group: Required. Target resource group ARMId.
1291    :type target_resource_group: str
1292    :param resources: Required. List of resources to be moved.
1293    :type resources: list[str]
1294    """
1295
1296    _validation = {
1297        'target_resource_group': {'required': True},
1298        'resources': {'required': True},
1299    }
1300
1301    _attribute_map = {
1302        'target_resource_group': {'key': 'targetResourceGroup', 'type': 'str'},
1303        'resources': {'key': 'resources', 'type': '[str]'},
1304    }
1305
1306    def __init__(
1307        self,
1308        **kwargs
1309    ):
1310        super(DataBoxEdgeMoveRequest, self).__init__(**kwargs)
1311        self.target_resource_group = kwargs['target_resource_group']
1312        self.resources = kwargs['resources']
1313
1314
1315class DataBoxEdgeSku(msrest.serialization.Model):
1316    """The Sku information.
1317
1318    Variables are only populated by the server, and will be ignored when sending a request.
1319
1320    :ivar resource_type: The type of the resource.
1321    :vartype resource_type: str
1322    :ivar name: The Sku name. Possible values include: "Gateway", "Edge", "TEA_1Node",
1323     "TEA_1Node_UPS", "TEA_1Node_Heater", "TEA_1Node_UPS_Heater", "TEA_4Node_Heater",
1324     "TEA_4Node_UPS_Heater", "TMA", "TDC", "TCA_Small", "GPU", "TCA_Large", "EdgeP_Base",
1325     "EdgeP_High", "EdgePR_Base", "EdgePR_Base_UPS", "EdgeMR_Mini", "RCA_Small", "RCA_Large", "RDC".
1326    :vartype name: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SkuName
1327    :ivar kind: The Sku kind.
1328    :vartype kind: str
1329    :ivar tier: The Sku tier. Possible values include: "Standard".
1330    :vartype tier: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SkuTier
1331    :ivar size: The Sku kind.
1332    :vartype size: str
1333    :ivar family: The Sku family.
1334    :vartype family: str
1335    :ivar locations: Availability of the Sku for the region.
1336    :vartype locations: list[str]
1337    :ivar api_versions: The API versions in which Sku is available.
1338    :vartype api_versions: list[str]
1339    :ivar location_info: Availability of the Sku for the location/zone/site.
1340    :vartype location_info: list[~azure.mgmt.databoxedge.v2020_12_01.models.SkuLocationInfo]
1341    :ivar costs: The pricing info of the Sku.
1342    :vartype costs: list[~azure.mgmt.databoxedge.v2020_12_01.models.SkuCost]
1343    :ivar signup_option: Sku can be signed up by customer or not. Possible values include: "None",
1344     "Available".
1345    :vartype signup_option: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SkuSignupOption
1346    :ivar version: Availability of the Sku as preview/stable. Possible values include: "Stable",
1347     "Preview".
1348    :vartype version: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SkuVersion
1349    :ivar availability: Links to the next set of results. Possible values include: "Available",
1350     "Unavailable".
1351    :vartype availability: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SkuAvailability
1352    :ivar shipment_types: List of Shipment Types supported by this SKU.
1353    :vartype shipment_types: list[str or ~azure.mgmt.databoxedge.v2020_12_01.models.ShipmentType]
1354    :ivar capabilities: The capability info of the SKU.
1355    :vartype capabilities: list[~azure.mgmt.databoxedge.v2020_12_01.models.SkuCapability]
1356    """
1357
1358    _validation = {
1359        'resource_type': {'readonly': True},
1360        'name': {'readonly': True},
1361        'kind': {'readonly': True},
1362        'tier': {'readonly': True},
1363        'size': {'readonly': True},
1364        'family': {'readonly': True},
1365        'locations': {'readonly': True},
1366        'api_versions': {'readonly': True},
1367        'location_info': {'readonly': True},
1368        'costs': {'readonly': True},
1369        'signup_option': {'readonly': True},
1370        'version': {'readonly': True},
1371        'availability': {'readonly': True},
1372        'shipment_types': {'readonly': True},
1373        'capabilities': {'readonly': True},
1374    }
1375
1376    _attribute_map = {
1377        'resource_type': {'key': 'resourceType', 'type': 'str'},
1378        'name': {'key': 'name', 'type': 'str'},
1379        'kind': {'key': 'kind', 'type': 'str'},
1380        'tier': {'key': 'tier', 'type': 'str'},
1381        'size': {'key': 'size', 'type': 'str'},
1382        'family': {'key': 'family', 'type': 'str'},
1383        'locations': {'key': 'locations', 'type': '[str]'},
1384        'api_versions': {'key': 'apiVersions', 'type': '[str]'},
1385        'location_info': {'key': 'locationInfo', 'type': '[SkuLocationInfo]'},
1386        'costs': {'key': 'costs', 'type': '[SkuCost]'},
1387        'signup_option': {'key': 'signupOption', 'type': 'str'},
1388        'version': {'key': 'version', 'type': 'str'},
1389        'availability': {'key': 'availability', 'type': 'str'},
1390        'shipment_types': {'key': 'shipmentTypes', 'type': '[str]'},
1391        'capabilities': {'key': 'capabilities', 'type': '[SkuCapability]'},
1392    }
1393
1394    def __init__(
1395        self,
1396        **kwargs
1397    ):
1398        super(DataBoxEdgeSku, self).__init__(**kwargs)
1399        self.resource_type = None
1400        self.name = None
1401        self.kind = None
1402        self.tier = None
1403        self.size = None
1404        self.family = None
1405        self.locations = None
1406        self.api_versions = None
1407        self.location_info = None
1408        self.costs = None
1409        self.signup_option = None
1410        self.version = None
1411        self.availability = None
1412        self.shipment_types = None
1413        self.capabilities = None
1414
1415
1416class DataBoxEdgeSkuList(msrest.serialization.Model):
1417    """List of SKU Information objects.
1418
1419    Variables are only populated by the server, and will be ignored when sending a request.
1420
1421    :ivar value: List of ResourceType Sku.
1422    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.DataBoxEdgeSku]
1423    :ivar next_link: Links to the next set of results.
1424    :vartype next_link: str
1425    """
1426
1427    _validation = {
1428        'value': {'readonly': True},
1429        'next_link': {'readonly': True},
1430    }
1431
1432    _attribute_map = {
1433        'value': {'key': 'value', 'type': '[DataBoxEdgeSku]'},
1434        'next_link': {'key': 'nextLink', 'type': 'str'},
1435    }
1436
1437    def __init__(
1438        self,
1439        **kwargs
1440    ):
1441        super(DataBoxEdgeSkuList, self).__init__(**kwargs)
1442        self.value = None
1443        self.next_link = None
1444
1445
1446class DCAccessCode(msrest.serialization.Model):
1447    """DC Access code in the case of Self Managed Shipping.
1448
1449    :param auth_code: DCAccess Code for the Self Managed shipment.
1450    :type auth_code: str
1451    """
1452
1453    _attribute_map = {
1454        'auth_code': {'key': 'properties.authCode', 'type': 'str'},
1455    }
1456
1457    def __init__(
1458        self,
1459        **kwargs
1460    ):
1461        super(DCAccessCode, self).__init__(**kwargs)
1462        self.auth_code = kwargs.get('auth_code', None)
1463
1464
1465class DeviceSecrets(msrest.serialization.Model):
1466    """Device Secrets.
1467
1468    :param hcs_data_volume_bit_locker_external_key: Keyvault Id of
1469     HcsDataVolumeBitLockerExternalKey.
1470    :type hcs_data_volume_bit_locker_external_key:
1471     ~azure.mgmt.databoxedge.v2020_12_01.models.Secret
1472    :param hcs_internal_volume_bit_locker_external_key: Keyvault Id of
1473     HcsInternalVolumeBitLockerExternalKey.
1474    :type hcs_internal_volume_bit_locker_external_key:
1475     ~azure.mgmt.databoxedge.v2020_12_01.models.Secret
1476    :param system_volume_bit_locker_recovery_key: Keyvault Id of SystemVolumeBitLockerRecoveryKey.
1477    :type system_volume_bit_locker_recovery_key: ~azure.mgmt.databoxedge.v2020_12_01.models.Secret
1478    :param sed_encryption_external_key_id: Keyvault Id of SEDEncryptionExternalKeyId.
1479    :type sed_encryption_external_key_id: ~azure.mgmt.databoxedge.v2020_12_01.models.Secret
1480    :param sed_encryption_external_key: Keyvault Id of SEDEncryptionExternalKey.
1481    :type sed_encryption_external_key: ~azure.mgmt.databoxedge.v2020_12_01.models.Secret
1482    :param bmc_default_user_password: Keyvault Id of BMCDefaultUserPassword.
1483    :type bmc_default_user_password: ~azure.mgmt.databoxedge.v2020_12_01.models.Secret
1484    :param rotate_key_for_data_volume_bitlocker: Keyvault Id of RotateKeyForDataVolumeBitlocker.
1485    :type rotate_key_for_data_volume_bitlocker: ~azure.mgmt.databoxedge.v2020_12_01.models.Secret
1486    :param rotate_keys_for_sed_drives_serialized: Keyvault Id of RotateKeysForSedDrivesSerialized.
1487    :type rotate_keys_for_sed_drives_serialized: ~azure.mgmt.databoxedge.v2020_12_01.models.Secret
1488    """
1489
1490    _attribute_map = {
1491        'hcs_data_volume_bit_locker_external_key': {'key': 'hcsDataVolumeBitLockerExternalKey', 'type': 'Secret'},
1492        'hcs_internal_volume_bit_locker_external_key': {'key': 'hcsInternalVolumeBitLockerExternalKey', 'type': 'Secret'},
1493        'system_volume_bit_locker_recovery_key': {'key': 'systemVolumeBitLockerRecoveryKey', 'type': 'Secret'},
1494        'sed_encryption_external_key_id': {'key': 'sedEncryptionExternalKeyId', 'type': 'Secret'},
1495        'sed_encryption_external_key': {'key': 'sedEncryptionExternalKey', 'type': 'Secret'},
1496        'bmc_default_user_password': {'key': 'bmcDefaultUserPassword', 'type': 'Secret'},
1497        'rotate_key_for_data_volume_bitlocker': {'key': 'rotateKeyForDataVolumeBitlocker', 'type': 'Secret'},
1498        'rotate_keys_for_sed_drives_serialized': {'key': 'rotateKeysForSedDrivesSerialized', 'type': 'Secret'},
1499    }
1500
1501    def __init__(
1502        self,
1503        **kwargs
1504    ):
1505        super(DeviceSecrets, self).__init__(**kwargs)
1506        self.hcs_data_volume_bit_locker_external_key = kwargs.get('hcs_data_volume_bit_locker_external_key', None)
1507        self.hcs_internal_volume_bit_locker_external_key = kwargs.get('hcs_internal_volume_bit_locker_external_key', None)
1508        self.system_volume_bit_locker_recovery_key = kwargs.get('system_volume_bit_locker_recovery_key', None)
1509        self.sed_encryption_external_key_id = kwargs.get('sed_encryption_external_key_id', None)
1510        self.sed_encryption_external_key = kwargs.get('sed_encryption_external_key', None)
1511        self.bmc_default_user_password = kwargs.get('bmc_default_user_password', None)
1512        self.rotate_key_for_data_volume_bitlocker = kwargs.get('rotate_key_for_data_volume_bitlocker', None)
1513        self.rotate_keys_for_sed_drives_serialized = kwargs.get('rotate_keys_for_sed_drives_serialized', None)
1514
1515
1516class EdgeProfile(msrest.serialization.Model):
1517    """Details about Edge Profile for the resource.
1518
1519    :param subscription: Edge Profile Subscription.
1520    :type subscription: ~azure.mgmt.databoxedge.v2020_12_01.models.EdgeProfileSubscription
1521    """
1522
1523    _attribute_map = {
1524        'subscription': {'key': 'subscription', 'type': 'EdgeProfileSubscription'},
1525    }
1526
1527    def __init__(
1528        self,
1529        **kwargs
1530    ):
1531        super(EdgeProfile, self).__init__(**kwargs)
1532        self.subscription = kwargs.get('subscription', None)
1533
1534
1535class EdgeProfilePatch(msrest.serialization.Model):
1536    """The Data Box Edge/Gateway Edge Profile patch.
1537
1538    :param subscription: The Data Box Edge/Gateway Edge Profile Subscription patch.
1539    :type subscription: ~azure.mgmt.databoxedge.v2020_12_01.models.EdgeProfileSubscriptionPatch
1540    """
1541
1542    _attribute_map = {
1543        'subscription': {'key': 'subscription', 'type': 'EdgeProfileSubscriptionPatch'},
1544    }
1545
1546    def __init__(
1547        self,
1548        **kwargs
1549    ):
1550        super(EdgeProfilePatch, self).__init__(**kwargs)
1551        self.subscription = kwargs.get('subscription', None)
1552
1553
1554class EdgeProfileSubscription(msrest.serialization.Model):
1555    """Subscription details for the Edge Profile.
1556
1557    :param registration_id: Edge Subscription Registration ID.
1558    :type registration_id: str
1559    :param id: ARM ID of the subscription.
1560    :type id: str
1561    :param state:  Possible values include: "Registered", "Warned", "Suspended", "Deleted",
1562     "Unregistered".
1563    :type state: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SubscriptionState
1564    :param registration_date:
1565    :type registration_date: str
1566    :param subscription_id:
1567    :type subscription_id: str
1568    :param tenant_id:
1569    :type tenant_id: str
1570    :param location_placement_id:
1571    :type location_placement_id: str
1572    :param quota_id:
1573    :type quota_id: str
1574    :param serialized_details:
1575    :type serialized_details: str
1576    :param registered_features:
1577    :type registered_features:
1578     list[~azure.mgmt.databoxedge.v2020_12_01.models.SubscriptionRegisteredFeatures]
1579    """
1580
1581    _attribute_map = {
1582        'registration_id': {'key': 'registrationId', 'type': 'str'},
1583        'id': {'key': 'id', 'type': 'str'},
1584        'state': {'key': 'state', 'type': 'str'},
1585        'registration_date': {'key': 'registrationDate', 'type': 'str'},
1586        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
1587        'tenant_id': {'key': 'properties.tenantId', 'type': 'str'},
1588        'location_placement_id': {'key': 'properties.locationPlacementId', 'type': 'str'},
1589        'quota_id': {'key': 'properties.quotaId', 'type': 'str'},
1590        'serialized_details': {'key': 'properties.serializedDetails', 'type': 'str'},
1591        'registered_features': {'key': 'properties.registeredFeatures', 'type': '[SubscriptionRegisteredFeatures]'},
1592    }
1593
1594    def __init__(
1595        self,
1596        **kwargs
1597    ):
1598        super(EdgeProfileSubscription, self).__init__(**kwargs)
1599        self.registration_id = kwargs.get('registration_id', None)
1600        self.id = kwargs.get('id', None)
1601        self.state = kwargs.get('state', None)
1602        self.registration_date = kwargs.get('registration_date', None)
1603        self.subscription_id = kwargs.get('subscription_id', None)
1604        self.tenant_id = kwargs.get('tenant_id', None)
1605        self.location_placement_id = kwargs.get('location_placement_id', None)
1606        self.quota_id = kwargs.get('quota_id', None)
1607        self.serialized_details = kwargs.get('serialized_details', None)
1608        self.registered_features = kwargs.get('registered_features', None)
1609
1610
1611class EdgeProfileSubscriptionPatch(msrest.serialization.Model):
1612    """The Data Box Edge/Gateway Edge Profile Subscription patch.
1613
1614    :param id: The path ID that uniquely identifies the subscription of the edge profile.
1615    :type id: str
1616    """
1617
1618    _attribute_map = {
1619        'id': {'key': 'id', 'type': 'str'},
1620    }
1621
1622    def __init__(
1623        self,
1624        **kwargs
1625    ):
1626        super(EdgeProfileSubscriptionPatch, self).__init__(**kwargs)
1627        self.id = kwargs.get('id', None)
1628
1629
1630class EtcdInfo(msrest.serialization.Model):
1631    """Etcd configuration.
1632
1633    Variables are only populated by the server, and will be ignored when sending a request.
1634
1635    :ivar type: Etcd type.
1636    :vartype type: str
1637    :ivar version: Etcd version.
1638    :vartype version: str
1639    """
1640
1641    _validation = {
1642        'type': {'readonly': True},
1643        'version': {'readonly': True},
1644    }
1645
1646    _attribute_map = {
1647        'type': {'key': 'type', 'type': 'str'},
1648        'version': {'key': 'version', 'type': 'str'},
1649    }
1650
1651    def __init__(
1652        self,
1653        **kwargs
1654    ):
1655        super(EtcdInfo, self).__init__(**kwargs)
1656        self.type = None
1657        self.version = None
1658
1659
1660class Trigger(ARMBaseModel):
1661    """Trigger details.
1662
1663    You probably want to use the sub-classes and not this class directly. Known
1664    sub-classes are: FileEventTrigger, PeriodicTimerEventTrigger.
1665
1666    Variables are only populated by the server, and will be ignored when sending a request.
1667
1668    All required parameters must be populated in order to send to Azure.
1669
1670    :ivar id: The path ID that uniquely identifies the object.
1671    :vartype id: str
1672    :ivar name: The object name.
1673    :vartype name: str
1674    :ivar type: The hierarchical type of the object.
1675    :vartype type: str
1676    :ivar system_data: Trigger in DataBoxEdge Resource.
1677    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
1678    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
1679     "FileEvent", "PeriodicTimerEvent".
1680    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.TriggerEventType
1681    """
1682
1683    _validation = {
1684        'id': {'readonly': True},
1685        'name': {'readonly': True},
1686        'type': {'readonly': True},
1687        'system_data': {'readonly': True},
1688        'kind': {'required': True},
1689    }
1690
1691    _attribute_map = {
1692        'id': {'key': 'id', 'type': 'str'},
1693        'name': {'key': 'name', 'type': 'str'},
1694        'type': {'key': 'type', 'type': 'str'},
1695        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1696        'kind': {'key': 'kind', 'type': 'str'},
1697    }
1698
1699    _subtype_map = {
1700        'kind': {'FileEvent': 'FileEventTrigger', 'PeriodicTimerEvent': 'PeriodicTimerEventTrigger'}
1701    }
1702
1703    def __init__(
1704        self,
1705        **kwargs
1706    ):
1707        super(Trigger, self).__init__(**kwargs)
1708        self.system_data = None
1709        self.kind = 'Trigger'  # type: str
1710
1711
1712class FileEventTrigger(Trigger):
1713    """Trigger details.
1714
1715    Variables are only populated by the server, and will be ignored when sending a request.
1716
1717    All required parameters must be populated in order to send to Azure.
1718
1719    :ivar id: The path ID that uniquely identifies the object.
1720    :vartype id: str
1721    :ivar name: The object name.
1722    :vartype name: str
1723    :ivar type: The hierarchical type of the object.
1724    :vartype type: str
1725    :ivar system_data: Trigger in DataBoxEdge Resource.
1726    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
1727    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
1728     "FileEvent", "PeriodicTimerEvent".
1729    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.TriggerEventType
1730    :param source_info: Required. File event source details.
1731    :type source_info: ~azure.mgmt.databoxedge.v2020_12_01.models.FileSourceInfo
1732    :param sink_info: Required. Role sink info.
1733    :type sink_info: ~azure.mgmt.databoxedge.v2020_12_01.models.RoleSinkInfo
1734    :param custom_context_tag: A custom context tag typically used to correlate the trigger against
1735     its usage. For example, if a periodic timer trigger is intended for certain specific IoT
1736     modules in the device, the tag can be the name or the image URL of the module.
1737    :type custom_context_tag: str
1738    """
1739
1740    _validation = {
1741        'id': {'readonly': True},
1742        'name': {'readonly': True},
1743        'type': {'readonly': True},
1744        'system_data': {'readonly': True},
1745        'kind': {'required': True},
1746        'source_info': {'required': True},
1747        'sink_info': {'required': True},
1748        'custom_context_tag': {'max_length': 192, 'min_length': 0},
1749    }
1750
1751    _attribute_map = {
1752        'id': {'key': 'id', 'type': 'str'},
1753        'name': {'key': 'name', 'type': 'str'},
1754        'type': {'key': 'type', 'type': 'str'},
1755        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1756        'kind': {'key': 'kind', 'type': 'str'},
1757        'source_info': {'key': 'properties.sourceInfo', 'type': 'FileSourceInfo'},
1758        'sink_info': {'key': 'properties.sinkInfo', 'type': 'RoleSinkInfo'},
1759        'custom_context_tag': {'key': 'properties.customContextTag', 'type': 'str'},
1760    }
1761
1762    def __init__(
1763        self,
1764        **kwargs
1765    ):
1766        super(FileEventTrigger, self).__init__(**kwargs)
1767        self.kind = 'FileEvent'  # type: str
1768        self.source_info = kwargs['source_info']
1769        self.sink_info = kwargs['sink_info']
1770        self.custom_context_tag = kwargs.get('custom_context_tag', None)
1771
1772
1773class FileSourceInfo(msrest.serialization.Model):
1774    """File source details.
1775
1776    All required parameters must be populated in order to send to Azure.
1777
1778    :param share_id: Required. File share ID.
1779    :type share_id: str
1780    """
1781
1782    _validation = {
1783        'share_id': {'required': True},
1784    }
1785
1786    _attribute_map = {
1787        'share_id': {'key': 'shareId', 'type': 'str'},
1788    }
1789
1790    def __init__(
1791        self,
1792        **kwargs
1793    ):
1794        super(FileSourceInfo, self).__init__(**kwargs)
1795        self.share_id = kwargs['share_id']
1796
1797
1798class GenerateCertResponse(msrest.serialization.Model):
1799    """Used in activation key generation flow.
1800
1801    :param public_key: Gets or sets base64 encoded certificate raw data,
1802     this is the public part needed to be uploaded to cert vault.
1803    :type public_key: str
1804    :param private_key: Gets or sets base64 encoded private part of the certificate,
1805     needed to form the activation key.
1806    :type private_key: str
1807    :param expiry_time_in_utc: Gets or sets expiry time in UTC.
1808    :type expiry_time_in_utc: str
1809    """
1810
1811    _attribute_map = {
1812        'public_key': {'key': 'publicKey', 'type': 'str'},
1813        'private_key': {'key': 'privateKey', 'type': 'str'},
1814        'expiry_time_in_utc': {'key': 'expiryTimeInUTC', 'type': 'str'},
1815    }
1816
1817    def __init__(
1818        self,
1819        **kwargs
1820    ):
1821        super(GenerateCertResponse, self).__init__(**kwargs)
1822        self.public_key = kwargs.get('public_key', None)
1823        self.private_key = kwargs.get('private_key', None)
1824        self.expiry_time_in_utc = kwargs.get('expiry_time_in_utc', None)
1825
1826
1827class ImageRepositoryCredential(msrest.serialization.Model):
1828    """Image repository credential.
1829
1830    All required parameters must be populated in order to send to Azure.
1831
1832    :param image_repository_url: Required. Image repository url (e.g.: mcr.microsoft.com).
1833    :type image_repository_url: str
1834    :param user_name: Required. Repository user name.
1835    :type user_name: str
1836    :param password: Repository user password.
1837    :type password: ~azure.mgmt.databoxedge.v2020_12_01.models.AsymmetricEncryptedSecret
1838    """
1839
1840    _validation = {
1841        'image_repository_url': {'required': True},
1842        'user_name': {'required': True},
1843    }
1844
1845    _attribute_map = {
1846        'image_repository_url': {'key': 'imageRepositoryUrl', 'type': 'str'},
1847        'user_name': {'key': 'userName', 'type': 'str'},
1848        'password': {'key': 'password', 'type': 'AsymmetricEncryptedSecret'},
1849    }
1850
1851    def __init__(
1852        self,
1853        **kwargs
1854    ):
1855        super(ImageRepositoryCredential, self).__init__(**kwargs)
1856        self.image_repository_url = kwargs['image_repository_url']
1857        self.user_name = kwargs['user_name']
1858        self.password = kwargs.get('password', None)
1859
1860
1861class IoTAddon(Addon):
1862    """IoT Addon.
1863
1864    Variables are only populated by the server, and will be ignored when sending a request.
1865
1866    All required parameters must be populated in order to send to Azure.
1867
1868    :ivar id: The path ID that uniquely identifies the object.
1869    :vartype id: str
1870    :ivar name: The object name.
1871    :vartype name: str
1872    :ivar type: The hierarchical type of the object.
1873    :vartype type: str
1874    :param kind: Required. Addon type.Constant filled by server.  Possible values include:
1875     "IotEdge", "ArcForKubernetes".
1876    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AddonType
1877    :ivar system_data: Addon type.
1878    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
1879    :param io_t_device_details: Required. IoT device metadata to which appliance needs to be
1880     connected.
1881    :type io_t_device_details: ~azure.mgmt.databoxedge.v2020_12_01.models.IoTDeviceInfo
1882    :param io_t_edge_device_details: Required. IoT edge device to which the IoT Addon needs to be
1883     configured.
1884    :type io_t_edge_device_details: ~azure.mgmt.databoxedge.v2020_12_01.models.IoTDeviceInfo
1885    :ivar version: Version of IoT running on the appliance.
1886    :vartype version: str
1887    :ivar host_platform: Host OS supported by the IoT addon. Possible values include: "Windows",
1888     "Linux".
1889    :vartype host_platform: str or ~azure.mgmt.databoxedge.v2020_12_01.models.PlatformType
1890    :ivar host_platform_type: Platform where the runtime is hosted. Possible values include:
1891     "KubernetesCluster", "LinuxVM".
1892    :vartype host_platform_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.HostPlatformType
1893    :ivar provisioning_state: Addon Provisioning State. Possible values include: "Invalid",
1894     "Creating", "Created", "Updating", "Reconfiguring", "Failed", "Deleting".
1895    :vartype provisioning_state: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AddonState
1896    """
1897
1898    _validation = {
1899        'id': {'readonly': True},
1900        'name': {'readonly': True},
1901        'type': {'readonly': True},
1902        'kind': {'required': True},
1903        'system_data': {'readonly': True},
1904        'io_t_device_details': {'required': True},
1905        'io_t_edge_device_details': {'required': True},
1906        'version': {'readonly': True},
1907        'host_platform': {'readonly': True},
1908        'host_platform_type': {'readonly': True},
1909        'provisioning_state': {'readonly': True},
1910    }
1911
1912    _attribute_map = {
1913        'id': {'key': 'id', 'type': 'str'},
1914        'name': {'key': 'name', 'type': 'str'},
1915        'type': {'key': 'type', 'type': 'str'},
1916        'kind': {'key': 'kind', 'type': 'str'},
1917        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1918        'io_t_device_details': {'key': 'properties.ioTDeviceDetails', 'type': 'IoTDeviceInfo'},
1919        'io_t_edge_device_details': {'key': 'properties.ioTEdgeDeviceDetails', 'type': 'IoTDeviceInfo'},
1920        'version': {'key': 'properties.version', 'type': 'str'},
1921        'host_platform': {'key': 'properties.hostPlatform', 'type': 'str'},
1922        'host_platform_type': {'key': 'properties.hostPlatformType', 'type': 'str'},
1923        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1924    }
1925
1926    def __init__(
1927        self,
1928        **kwargs
1929    ):
1930        super(IoTAddon, self).__init__(**kwargs)
1931        self.kind = 'IotEdge'  # type: str
1932        self.io_t_device_details = kwargs['io_t_device_details']
1933        self.io_t_edge_device_details = kwargs['io_t_edge_device_details']
1934        self.version = None
1935        self.host_platform = None
1936        self.host_platform_type = None
1937        self.provisioning_state = None
1938
1939
1940class IoTDeviceInfo(msrest.serialization.Model):
1941    """Metadata of IoT device/IoT Edge device to be configured.
1942
1943    All required parameters must be populated in order to send to Azure.
1944
1945    :param device_id: Required. ID of the IoT device/edge device.
1946    :type device_id: str
1947    :param io_t_host_hub: Required. Host name for the IoT hub associated to the device.
1948    :type io_t_host_hub: str
1949    :param io_t_host_hub_id: Id for the IoT hub associated to the device.
1950    :type io_t_host_hub_id: str
1951    :param authentication: Encrypted IoT device/IoT edge device connection string.
1952    :type authentication: ~azure.mgmt.databoxedge.v2020_12_01.models.Authentication
1953    """
1954
1955    _validation = {
1956        'device_id': {'required': True},
1957        'io_t_host_hub': {'required': True},
1958    }
1959
1960    _attribute_map = {
1961        'device_id': {'key': 'deviceId', 'type': 'str'},
1962        'io_t_host_hub': {'key': 'ioTHostHub', 'type': 'str'},
1963        'io_t_host_hub_id': {'key': 'ioTHostHubId', 'type': 'str'},
1964        'authentication': {'key': 'authentication', 'type': 'Authentication'},
1965    }
1966
1967    def __init__(
1968        self,
1969        **kwargs
1970    ):
1971        super(IoTDeviceInfo, self).__init__(**kwargs)
1972        self.device_id = kwargs['device_id']
1973        self.io_t_host_hub = kwargs['io_t_host_hub']
1974        self.io_t_host_hub_id = kwargs.get('io_t_host_hub_id', None)
1975        self.authentication = kwargs.get('authentication', None)
1976
1977
1978class IoTEdgeAgentInfo(msrest.serialization.Model):
1979    """IoT edge agent details is optional, this will be used for download system Agent module while bootstrapping IoT Role if specified.
1980
1981    All required parameters must be populated in order to send to Azure.
1982
1983    :param image_name: Required. Name of the IoT edge agent image.
1984    :type image_name: str
1985    :param tag: Required. Image Tag.
1986    :type tag: str
1987    :param image_repository: Image repository details.
1988    :type image_repository: ~azure.mgmt.databoxedge.v2020_12_01.models.ImageRepositoryCredential
1989    """
1990
1991    _validation = {
1992        'image_name': {'required': True},
1993        'tag': {'required': True},
1994    }
1995
1996    _attribute_map = {
1997        'image_name': {'key': 'imageName', 'type': 'str'},
1998        'tag': {'key': 'tag', 'type': 'str'},
1999        'image_repository': {'key': 'imageRepository', 'type': 'ImageRepositoryCredential'},
2000    }
2001
2002    def __init__(
2003        self,
2004        **kwargs
2005    ):
2006        super(IoTEdgeAgentInfo, self).__init__(**kwargs)
2007        self.image_name = kwargs['image_name']
2008        self.tag = kwargs['tag']
2009        self.image_repository = kwargs.get('image_repository', None)
2010
2011
2012class IoTRole(Role):
2013    """Compute role.
2014
2015    Variables are only populated by the server, and will be ignored when sending a request.
2016
2017    All required parameters must be populated in order to send to Azure.
2018
2019    :ivar id: The path ID that uniquely identifies the object.
2020    :vartype id: str
2021    :ivar name: The object name.
2022    :vartype name: str
2023    :ivar type: The hierarchical type of the object.
2024    :vartype type: str
2025    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
2026     "ASA", "Functions", "Cognitive", "MEC", "CloudEdgeManagement", "Kubernetes".
2027    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleTypes
2028    :ivar system_data: Role configured on ASE resource.
2029    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
2030    :param host_platform: Host OS supported by the IoT role. Possible values include: "Windows",
2031     "Linux".
2032    :type host_platform: str or ~azure.mgmt.databoxedge.v2020_12_01.models.PlatformType
2033    :param io_t_device_details: IoT device metadata to which data box edge device needs to be
2034     connected.
2035    :type io_t_device_details: ~azure.mgmt.databoxedge.v2020_12_01.models.IoTDeviceInfo
2036    :param io_t_edge_device_details: IoT edge device to which the IoT role needs to be configured.
2037    :type io_t_edge_device_details: ~azure.mgmt.databoxedge.v2020_12_01.models.IoTDeviceInfo
2038    :param share_mappings: Mount points of shares in role(s).
2039    :type share_mappings: list[~azure.mgmt.databoxedge.v2020_12_01.models.MountPointMap]
2040    :param io_t_edge_agent_info: Iot edge agent details to download the agent and bootstrap iot
2041     runtime.
2042    :type io_t_edge_agent_info: ~azure.mgmt.databoxedge.v2020_12_01.models.IoTEdgeAgentInfo
2043    :ivar host_platform_type: Platform where the Iot runtime is hosted. Possible values include:
2044     "KubernetesCluster", "LinuxVM".
2045    :vartype host_platform_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.HostPlatformType
2046    :param compute_resource: Resource allocation.
2047    :type compute_resource: ~azure.mgmt.databoxedge.v2020_12_01.models.ComputeResource
2048    :param role_status: Role status. Possible values include: "Enabled", "Disabled".
2049    :type role_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleStatus
2050    """
2051
2052    _validation = {
2053        'id': {'readonly': True},
2054        'name': {'readonly': True},
2055        'type': {'readonly': True},
2056        'kind': {'required': True},
2057        'system_data': {'readonly': True},
2058        'host_platform_type': {'readonly': True},
2059    }
2060
2061    _attribute_map = {
2062        'id': {'key': 'id', 'type': 'str'},
2063        'name': {'key': 'name', 'type': 'str'},
2064        'type': {'key': 'type', 'type': 'str'},
2065        'kind': {'key': 'kind', 'type': 'str'},
2066        'system_data': {'key': 'systemData', 'type': 'SystemData'},
2067        'host_platform': {'key': 'properties.hostPlatform', 'type': 'str'},
2068        'io_t_device_details': {'key': 'properties.ioTDeviceDetails', 'type': 'IoTDeviceInfo'},
2069        'io_t_edge_device_details': {'key': 'properties.ioTEdgeDeviceDetails', 'type': 'IoTDeviceInfo'},
2070        'share_mappings': {'key': 'properties.shareMappings', 'type': '[MountPointMap]'},
2071        'io_t_edge_agent_info': {'key': 'properties.ioTEdgeAgentInfo', 'type': 'IoTEdgeAgentInfo'},
2072        'host_platform_type': {'key': 'properties.hostPlatformType', 'type': 'str'},
2073        'compute_resource': {'key': 'properties.computeResource', 'type': 'ComputeResource'},
2074        'role_status': {'key': 'properties.roleStatus', 'type': 'str'},
2075    }
2076
2077    def __init__(
2078        self,
2079        **kwargs
2080    ):
2081        super(IoTRole, self).__init__(**kwargs)
2082        self.kind = 'IOT'  # type: str
2083        self.host_platform = kwargs.get('host_platform', None)
2084        self.io_t_device_details = kwargs.get('io_t_device_details', None)
2085        self.io_t_edge_device_details = kwargs.get('io_t_edge_device_details', None)
2086        self.share_mappings = kwargs.get('share_mappings', None)
2087        self.io_t_edge_agent_info = kwargs.get('io_t_edge_agent_info', None)
2088        self.host_platform_type = None
2089        self.compute_resource = kwargs.get('compute_resource', None)
2090        self.role_status = kwargs.get('role_status', None)
2091
2092
2093class Ipv4Config(msrest.serialization.Model):
2094    """Details related to the IPv4 address configuration.
2095
2096    Variables are only populated by the server, and will be ignored when sending a request.
2097
2098    :ivar ip_address: The IPv4 address of the network adapter.
2099    :vartype ip_address: str
2100    :ivar subnet: The IPv4 subnet of the network adapter.
2101    :vartype subnet: str
2102    :ivar gateway: The IPv4 gateway of the network adapter.
2103    :vartype gateway: str
2104    """
2105
2106    _validation = {
2107        'ip_address': {'readonly': True},
2108        'subnet': {'readonly': True},
2109        'gateway': {'readonly': True},
2110    }
2111
2112    _attribute_map = {
2113        'ip_address': {'key': 'ipAddress', 'type': 'str'},
2114        'subnet': {'key': 'subnet', 'type': 'str'},
2115        'gateway': {'key': 'gateway', 'type': 'str'},
2116    }
2117
2118    def __init__(
2119        self,
2120        **kwargs
2121    ):
2122        super(Ipv4Config, self).__init__(**kwargs)
2123        self.ip_address = None
2124        self.subnet = None
2125        self.gateway = None
2126
2127
2128class Ipv6Config(msrest.serialization.Model):
2129    """Details related to the IPv6 address configuration.
2130
2131    Variables are only populated by the server, and will be ignored when sending a request.
2132
2133    :ivar ip_address: The IPv6 address of the network adapter.
2134    :vartype ip_address: str
2135    :ivar prefix_length: The IPv6 prefix of the network adapter.
2136    :vartype prefix_length: int
2137    :ivar gateway: The IPv6 gateway of the network adapter.
2138    :vartype gateway: str
2139    """
2140
2141    _validation = {
2142        'ip_address': {'readonly': True},
2143        'prefix_length': {'readonly': True},
2144        'gateway': {'readonly': True},
2145    }
2146
2147    _attribute_map = {
2148        'ip_address': {'key': 'ipAddress', 'type': 'str'},
2149        'prefix_length': {'key': 'prefixLength', 'type': 'int'},
2150        'gateway': {'key': 'gateway', 'type': 'str'},
2151    }
2152
2153    def __init__(
2154        self,
2155        **kwargs
2156    ):
2157        super(Ipv6Config, self).__init__(**kwargs)
2158        self.ip_address = None
2159        self.prefix_length = None
2160        self.gateway = None
2161
2162
2163class Job(msrest.serialization.Model):
2164    """A device job.
2165
2166    Variables are only populated by the server, and will be ignored when sending a request.
2167
2168    :ivar id: The path ID that uniquely identifies the object.
2169    :vartype id: str
2170    :ivar name: The name of the object.
2171    :vartype name: str
2172    :ivar type: The hierarchical type of the object.
2173    :vartype type: str
2174    :ivar status: The current status of the job. Possible values include: "Invalid", "Running",
2175     "Succeeded", "Failed", "Canceled", "Paused", "Scheduled".
2176    :vartype status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.JobStatus
2177    :ivar start_time: The UTC date and time at which the job started.
2178    :vartype start_time: ~datetime.datetime
2179    :ivar end_time: The UTC date and time at which the job completed.
2180    :vartype end_time: ~datetime.datetime
2181    :ivar percent_complete: The percentage of the job that is complete.
2182    :vartype percent_complete: int
2183    :ivar error: The error details.
2184    :vartype error: ~azure.mgmt.databoxedge.v2020_12_01.models.JobErrorDetails
2185    :ivar job_type: The type of the job. Possible values include: "Invalid", "ScanForUpdates",
2186     "DownloadUpdates", "InstallUpdates", "RefreshShare", "RefreshContainer", "Backup", "Restore",
2187     "TriggerSupportPackage".
2188    :vartype job_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.JobType
2189    :ivar current_stage: Current stage of the update operation. Possible values include: "Unknown",
2190     "Initial", "ScanStarted", "ScanComplete", "ScanFailed", "DownloadStarted", "DownloadComplete",
2191     "DownloadFailed", "InstallStarted", "InstallComplete", "InstallFailed", "RebootInitiated",
2192     "Success", "Failure", "RescanStarted", "RescanComplete", "RescanFailed".
2193    :vartype current_stage: str or ~azure.mgmt.databoxedge.v2020_12_01.models.UpdateOperationStage
2194    :ivar download_progress: The download progress.
2195    :vartype download_progress: ~azure.mgmt.databoxedge.v2020_12_01.models.UpdateDownloadProgress
2196    :ivar install_progress: The install progress.
2197    :vartype install_progress: ~azure.mgmt.databoxedge.v2020_12_01.models.UpdateInstallProgress
2198    :ivar total_refresh_errors: Total number of errors encountered during the refresh process.
2199    :vartype total_refresh_errors: int
2200    :ivar error_manifest_file: Local share/remote container relative path to the error manifest
2201     file of the refresh.
2202    :vartype error_manifest_file: str
2203    :ivar refreshed_entity_id: ARM ID of the entity that was refreshed.
2204    :vartype refreshed_entity_id: str
2205    :param folder: If only subfolders need to be refreshed, then the subfolder path inside the
2206     share or container. (The path is empty if there are no subfolders.).
2207    :type folder: str
2208    """
2209
2210    _validation = {
2211        'id': {'readonly': True},
2212        'name': {'readonly': True},
2213        'type': {'readonly': True},
2214        'status': {'readonly': True},
2215        'start_time': {'readonly': True},
2216        'end_time': {'readonly': True},
2217        'percent_complete': {'readonly': True},
2218        'error': {'readonly': True},
2219        'job_type': {'readonly': True},
2220        'current_stage': {'readonly': True},
2221        'download_progress': {'readonly': True},
2222        'install_progress': {'readonly': True},
2223        'total_refresh_errors': {'readonly': True},
2224        'error_manifest_file': {'readonly': True},
2225        'refreshed_entity_id': {'readonly': True},
2226    }
2227
2228    _attribute_map = {
2229        'id': {'key': 'id', 'type': 'str'},
2230        'name': {'key': 'name', 'type': 'str'},
2231        'type': {'key': 'type', 'type': 'str'},
2232        'status': {'key': 'status', 'type': 'str'},
2233        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2234        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
2235        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
2236        'error': {'key': 'error', 'type': 'JobErrorDetails'},
2237        'job_type': {'key': 'properties.jobType', 'type': 'str'},
2238        'current_stage': {'key': 'properties.currentStage', 'type': 'str'},
2239        'download_progress': {'key': 'properties.downloadProgress', 'type': 'UpdateDownloadProgress'},
2240        'install_progress': {'key': 'properties.installProgress', 'type': 'UpdateInstallProgress'},
2241        'total_refresh_errors': {'key': 'properties.totalRefreshErrors', 'type': 'int'},
2242        'error_manifest_file': {'key': 'properties.errorManifestFile', 'type': 'str'},
2243        'refreshed_entity_id': {'key': 'properties.refreshedEntityId', 'type': 'str'},
2244        'folder': {'key': 'properties.folder', 'type': 'str'},
2245    }
2246
2247    def __init__(
2248        self,
2249        **kwargs
2250    ):
2251        super(Job, self).__init__(**kwargs)
2252        self.id = None
2253        self.name = None
2254        self.type = None
2255        self.status = None
2256        self.start_time = None
2257        self.end_time = None
2258        self.percent_complete = None
2259        self.error = None
2260        self.job_type = None
2261        self.current_stage = None
2262        self.download_progress = None
2263        self.install_progress = None
2264        self.total_refresh_errors = None
2265        self.error_manifest_file = None
2266        self.refreshed_entity_id = None
2267        self.folder = kwargs.get('folder', None)
2268
2269
2270class JobErrorDetails(msrest.serialization.Model):
2271    """The job error information containing the list of job errors.
2272
2273    Variables are only populated by the server, and will be ignored when sending a request.
2274
2275    :ivar error_details: The error details.
2276    :vartype error_details: list[~azure.mgmt.databoxedge.v2020_12_01.models.JobErrorItem]
2277    :ivar code: The code intended for programmatic access.
2278    :vartype code: str
2279    :ivar message: The message that describes the error in detail.
2280    :vartype message: str
2281    """
2282
2283    _validation = {
2284        'error_details': {'readonly': True},
2285        'code': {'readonly': True},
2286        'message': {'readonly': True},
2287    }
2288
2289    _attribute_map = {
2290        'error_details': {'key': 'errorDetails', 'type': '[JobErrorItem]'},
2291        'code': {'key': 'code', 'type': 'str'},
2292        'message': {'key': 'message', 'type': 'str'},
2293    }
2294
2295    def __init__(
2296        self,
2297        **kwargs
2298    ):
2299        super(JobErrorDetails, self).__init__(**kwargs)
2300        self.error_details = None
2301        self.code = None
2302        self.message = None
2303
2304
2305class JobErrorItem(msrest.serialization.Model):
2306    """The job error items.
2307
2308    Variables are only populated by the server, and will be ignored when sending a request.
2309
2310    :ivar recommendations: The recommended actions.
2311    :vartype recommendations: list[str]
2312    :ivar code: The code intended for programmatic access.
2313    :vartype code: str
2314    :ivar message: The message that describes the error in detail.
2315    :vartype message: str
2316    """
2317
2318    _validation = {
2319        'recommendations': {'readonly': True},
2320        'code': {'readonly': True},
2321        'message': {'readonly': True},
2322    }
2323
2324    _attribute_map = {
2325        'recommendations': {'key': 'recommendations', 'type': '[str]'},
2326        'code': {'key': 'code', 'type': 'str'},
2327        'message': {'key': 'message', 'type': 'str'},
2328    }
2329
2330    def __init__(
2331        self,
2332        **kwargs
2333    ):
2334        super(JobErrorItem, self).__init__(**kwargs)
2335        self.recommendations = None
2336        self.code = None
2337        self.message = None
2338
2339
2340class KubernetesClusterInfo(msrest.serialization.Model):
2341    """Kubernetes cluster configuration.
2342
2343    Variables are only populated by the server, and will be ignored when sending a request.
2344
2345    All required parameters must be populated in order to send to Azure.
2346
2347    :ivar etcd_info: Etcd configuration.
2348    :vartype etcd_info: ~azure.mgmt.databoxedge.v2020_12_01.models.EtcdInfo
2349    :ivar nodes: Kubernetes cluster nodes.
2350    :vartype nodes: list[~azure.mgmt.databoxedge.v2020_12_01.models.NodeInfo]
2351    :param version: Required. Kubernetes cluster version.
2352    :type version: str
2353    """
2354
2355    _validation = {
2356        'etcd_info': {'readonly': True},
2357        'nodes': {'readonly': True},
2358        'version': {'required': True},
2359    }
2360
2361    _attribute_map = {
2362        'etcd_info': {'key': 'etcdInfo', 'type': 'EtcdInfo'},
2363        'nodes': {'key': 'nodes', 'type': '[NodeInfo]'},
2364        'version': {'key': 'version', 'type': 'str'},
2365    }
2366
2367    def __init__(
2368        self,
2369        **kwargs
2370    ):
2371        super(KubernetesClusterInfo, self).__init__(**kwargs)
2372        self.etcd_info = None
2373        self.nodes = None
2374        self.version = kwargs['version']
2375
2376
2377class KubernetesIPConfiguration(msrest.serialization.Model):
2378    """Kubernetes node IP configuration.
2379
2380    Variables are only populated by the server, and will be ignored when sending a request.
2381
2382    :ivar port: Port of the Kubernetes node.
2383    :vartype port: str
2384    :param ip_address: IP address of the Kubernetes node.
2385    :type ip_address: str
2386    """
2387
2388    _validation = {
2389        'port': {'readonly': True},
2390    }
2391
2392    _attribute_map = {
2393        'port': {'key': 'port', 'type': 'str'},
2394        'ip_address': {'key': 'ipAddress', 'type': 'str'},
2395    }
2396
2397    def __init__(
2398        self,
2399        **kwargs
2400    ):
2401        super(KubernetesIPConfiguration, self).__init__(**kwargs)
2402        self.port = None
2403        self.ip_address = kwargs.get('ip_address', None)
2404
2405
2406class KubernetesRole(Role):
2407    """Kubernetes role.
2408
2409    Variables are only populated by the server, and will be ignored when sending a request.
2410
2411    All required parameters must be populated in order to send to Azure.
2412
2413    :ivar id: The path ID that uniquely identifies the object.
2414    :vartype id: str
2415    :ivar name: The object name.
2416    :vartype name: str
2417    :ivar type: The hierarchical type of the object.
2418    :vartype type: str
2419    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
2420     "ASA", "Functions", "Cognitive", "MEC", "CloudEdgeManagement", "Kubernetes".
2421    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleTypes
2422    :ivar system_data: Role configured on ASE resource.
2423    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
2424    :param host_platform: Host OS supported by the Kubernetes role. Possible values include:
2425     "Windows", "Linux".
2426    :type host_platform: str or ~azure.mgmt.databoxedge.v2020_12_01.models.PlatformType
2427    :ivar provisioning_state: State of Kubernetes deployment. Possible values include: "Invalid",
2428     "Creating", "Created", "Updating", "Reconfiguring", "Failed", "Deleting".
2429    :vartype provisioning_state: str or ~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesState
2430    :ivar host_platform_type: Platform where the runtime is hosted. Possible values include:
2431     "KubernetesCluster", "LinuxVM".
2432    :vartype host_platform_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.HostPlatformType
2433    :param kubernetes_cluster_info: Kubernetes cluster configuration.
2434    :type kubernetes_cluster_info: ~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesClusterInfo
2435    :param kubernetes_role_resources: Kubernetes role resources.
2436    :type kubernetes_role_resources:
2437     ~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesRoleResources
2438    :param role_status: Role status. Possible values include: "Enabled", "Disabled".
2439    :type role_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleStatus
2440    """
2441
2442    _validation = {
2443        'id': {'readonly': True},
2444        'name': {'readonly': True},
2445        'type': {'readonly': True},
2446        'kind': {'required': True},
2447        'system_data': {'readonly': True},
2448        'provisioning_state': {'readonly': True},
2449        'host_platform_type': {'readonly': True},
2450    }
2451
2452    _attribute_map = {
2453        'id': {'key': 'id', 'type': 'str'},
2454        'name': {'key': 'name', 'type': 'str'},
2455        'type': {'key': 'type', 'type': 'str'},
2456        'kind': {'key': 'kind', 'type': 'str'},
2457        'system_data': {'key': 'systemData', 'type': 'SystemData'},
2458        'host_platform': {'key': 'properties.hostPlatform', 'type': 'str'},
2459        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2460        'host_platform_type': {'key': 'properties.hostPlatformType', 'type': 'str'},
2461        'kubernetes_cluster_info': {'key': 'properties.kubernetesClusterInfo', 'type': 'KubernetesClusterInfo'},
2462        'kubernetes_role_resources': {'key': 'properties.kubernetesRoleResources', 'type': 'KubernetesRoleResources'},
2463        'role_status': {'key': 'properties.roleStatus', 'type': 'str'},
2464    }
2465
2466    def __init__(
2467        self,
2468        **kwargs
2469    ):
2470        super(KubernetesRole, self).__init__(**kwargs)
2471        self.kind = 'Kubernetes'  # type: str
2472        self.host_platform = kwargs.get('host_platform', None)
2473        self.provisioning_state = None
2474        self.host_platform_type = None
2475        self.kubernetes_cluster_info = kwargs.get('kubernetes_cluster_info', None)
2476        self.kubernetes_role_resources = kwargs.get('kubernetes_role_resources', None)
2477        self.role_status = kwargs.get('role_status', None)
2478
2479
2480class KubernetesRoleCompute(msrest.serialization.Model):
2481    """Kubernetes role compute resource.
2482
2483    Variables are only populated by the server, and will be ignored when sending a request.
2484
2485    All required parameters must be populated in order to send to Azure.
2486
2487    :param vm_profile: Required. VM profile.
2488    :type vm_profile: str
2489    :ivar memory_in_bytes: Memory in bytes.
2490    :vartype memory_in_bytes: long
2491    :ivar processor_count: Processor count.
2492    :vartype processor_count: int
2493    """
2494
2495    _validation = {
2496        'vm_profile': {'required': True},
2497        'memory_in_bytes': {'readonly': True},
2498        'processor_count': {'readonly': True},
2499    }
2500
2501    _attribute_map = {
2502        'vm_profile': {'key': 'vmProfile', 'type': 'str'},
2503        'memory_in_bytes': {'key': 'memoryInBytes', 'type': 'long'},
2504        'processor_count': {'key': 'processorCount', 'type': 'int'},
2505    }
2506
2507    def __init__(
2508        self,
2509        **kwargs
2510    ):
2511        super(KubernetesRoleCompute, self).__init__(**kwargs)
2512        self.vm_profile = kwargs['vm_profile']
2513        self.memory_in_bytes = None
2514        self.processor_count = None
2515
2516
2517class KubernetesRoleNetwork(msrest.serialization.Model):
2518    """Kubernetes role network resource.
2519
2520    Variables are only populated by the server, and will be ignored when sending a request.
2521
2522    :ivar cni_config: Cni configuration.
2523    :vartype cni_config: ~azure.mgmt.databoxedge.v2020_12_01.models.CniConfig
2524    :ivar load_balancer_config: Load balancer configuration.
2525    :vartype load_balancer_config: ~azure.mgmt.databoxedge.v2020_12_01.models.LoadBalancerConfig
2526    """
2527
2528    _validation = {
2529        'cni_config': {'readonly': True},
2530        'load_balancer_config': {'readonly': True},
2531    }
2532
2533    _attribute_map = {
2534        'cni_config': {'key': 'cniConfig', 'type': 'CniConfig'},
2535        'load_balancer_config': {'key': 'loadBalancerConfig', 'type': 'LoadBalancerConfig'},
2536    }
2537
2538    def __init__(
2539        self,
2540        **kwargs
2541    ):
2542        super(KubernetesRoleNetwork, self).__init__(**kwargs)
2543        self.cni_config = None
2544        self.load_balancer_config = None
2545
2546
2547class KubernetesRoleResources(msrest.serialization.Model):
2548    """Kubernetes role resources.
2549
2550    Variables are only populated by the server, and will be ignored when sending a request.
2551
2552    All required parameters must be populated in order to send to Azure.
2553
2554    :param storage: Kubernetes role storage resource.
2555    :type storage: ~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesRoleStorage
2556    :param compute: Required. Kubernetes role compute resource.
2557    :type compute: ~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesRoleCompute
2558    :ivar network: Kubernetes role network resource.
2559    :vartype network: ~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesRoleNetwork
2560    """
2561
2562    _validation = {
2563        'compute': {'required': True},
2564        'network': {'readonly': True},
2565    }
2566
2567    _attribute_map = {
2568        'storage': {'key': 'storage', 'type': 'KubernetesRoleStorage'},
2569        'compute': {'key': 'compute', 'type': 'KubernetesRoleCompute'},
2570        'network': {'key': 'network', 'type': 'KubernetesRoleNetwork'},
2571    }
2572
2573    def __init__(
2574        self,
2575        **kwargs
2576    ):
2577        super(KubernetesRoleResources, self).__init__(**kwargs)
2578        self.storage = kwargs.get('storage', None)
2579        self.compute = kwargs['compute']
2580        self.network = None
2581
2582
2583class KubernetesRoleStorage(msrest.serialization.Model):
2584    """Kubernetes role storage resource.
2585
2586    Variables are only populated by the server, and will be ignored when sending a request.
2587
2588    :ivar storage_classes: Kubernetes storage class info.
2589    :vartype storage_classes:
2590     list[~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesRoleStorageClassInfo]
2591    :param endpoints: Mount points of shares in role(s).
2592    :type endpoints: list[~azure.mgmt.databoxedge.v2020_12_01.models.MountPointMap]
2593    """
2594
2595    _validation = {
2596        'storage_classes': {'readonly': True},
2597    }
2598
2599    _attribute_map = {
2600        'storage_classes': {'key': 'storageClasses', 'type': '[KubernetesRoleStorageClassInfo]'},
2601        'endpoints': {'key': 'endpoints', 'type': '[MountPointMap]'},
2602    }
2603
2604    def __init__(
2605        self,
2606        **kwargs
2607    ):
2608        super(KubernetesRoleStorage, self).__init__(**kwargs)
2609        self.storage_classes = None
2610        self.endpoints = kwargs.get('endpoints', None)
2611
2612
2613class KubernetesRoleStorageClassInfo(msrest.serialization.Model):
2614    """Kubernetes storage class info.
2615
2616    Variables are only populated by the server, and will be ignored when sending a request.
2617
2618    :ivar name: Storage class name.
2619    :vartype name: str
2620    :ivar type: Storage class type.
2621    :vartype type: str
2622    :ivar posix_compliant: If provisioned storage is posix compliant. Possible values include:
2623     "Invalid", "Enabled", "Disabled".
2624    :vartype posix_compliant: str or
2625     ~azure.mgmt.databoxedge.v2020_12_01.models.PosixComplianceStatus
2626    """
2627
2628    _validation = {
2629        'name': {'readonly': True},
2630        'type': {'readonly': True},
2631        'posix_compliant': {'readonly': True},
2632    }
2633
2634    _attribute_map = {
2635        'name': {'key': 'name', 'type': 'str'},
2636        'type': {'key': 'type', 'type': 'str'},
2637        'posix_compliant': {'key': 'posixCompliant', 'type': 'str'},
2638    }
2639
2640    def __init__(
2641        self,
2642        **kwargs
2643    ):
2644        super(KubernetesRoleStorageClassInfo, self).__init__(**kwargs)
2645        self.name = None
2646        self.type = None
2647        self.posix_compliant = None
2648
2649
2650class LoadBalancerConfig(msrest.serialization.Model):
2651    """Load balancer configuration.
2652
2653    Variables are only populated by the server, and will be ignored when sending a request.
2654
2655    :ivar type: Load balancer type.
2656    :vartype type: str
2657    :ivar version: Load balancer version.
2658    :vartype version: str
2659    """
2660
2661    _validation = {
2662        'type': {'readonly': True},
2663        'version': {'readonly': True},
2664    }
2665
2666    _attribute_map = {
2667        'type': {'key': 'type', 'type': 'str'},
2668        'version': {'key': 'version', 'type': 'str'},
2669    }
2670
2671    def __init__(
2672        self,
2673        **kwargs
2674    ):
2675        super(LoadBalancerConfig, self).__init__(**kwargs)
2676        self.type = None
2677        self.version = None
2678
2679
2680class MECRole(Role):
2681    """MEC role.
2682
2683    Variables are only populated by the server, and will be ignored when sending a request.
2684
2685    All required parameters must be populated in order to send to Azure.
2686
2687    :ivar id: The path ID that uniquely identifies the object.
2688    :vartype id: str
2689    :ivar name: The object name.
2690    :vartype name: str
2691    :ivar type: The hierarchical type of the object.
2692    :vartype type: str
2693    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
2694     "ASA", "Functions", "Cognitive", "MEC", "CloudEdgeManagement", "Kubernetes".
2695    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleTypes
2696    :ivar system_data: Role configured on ASE resource.
2697    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
2698    :param connection_string: Activation key of the MEC.
2699    :type connection_string: ~azure.mgmt.databoxedge.v2020_12_01.models.AsymmetricEncryptedSecret
2700    :param role_status: Role status. Possible values include: "Enabled", "Disabled".
2701    :type role_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleStatus
2702    """
2703
2704    _validation = {
2705        'id': {'readonly': True},
2706        'name': {'readonly': True},
2707        'type': {'readonly': True},
2708        'kind': {'required': True},
2709        'system_data': {'readonly': True},
2710    }
2711
2712    _attribute_map = {
2713        'id': {'key': 'id', 'type': 'str'},
2714        'name': {'key': 'name', 'type': 'str'},
2715        'type': {'key': 'type', 'type': 'str'},
2716        'kind': {'key': 'kind', 'type': 'str'},
2717        'system_data': {'key': 'systemData', 'type': 'SystemData'},
2718        'connection_string': {'key': 'properties.connectionString', 'type': 'AsymmetricEncryptedSecret'},
2719        'role_status': {'key': 'properties.roleStatus', 'type': 'str'},
2720    }
2721
2722    def __init__(
2723        self,
2724        **kwargs
2725    ):
2726        super(MECRole, self).__init__(**kwargs)
2727        self.kind = 'MEC'  # type: str
2728        self.connection_string = kwargs.get('connection_string', None)
2729        self.role_status = kwargs.get('role_status', None)
2730
2731
2732class MetricConfiguration(msrest.serialization.Model):
2733    """Metric configuration.
2734
2735    All required parameters must be populated in order to send to Azure.
2736
2737    :param resource_id: Required. The Resource ID on which the metrics should be pushed.
2738    :type resource_id: str
2739    :param mdm_account: The MDM account to which the counters should be pushed.
2740    :type mdm_account: str
2741    :param metric_name_space: The MDM namespace to which the counters should be pushed. This is
2742     required if MDMAccount is specified.
2743    :type metric_name_space: str
2744    :param counter_sets: Required. Host name for the IoT hub associated to the device.
2745    :type counter_sets: list[~azure.mgmt.databoxedge.v2020_12_01.models.MetricCounterSet]
2746    """
2747
2748    _validation = {
2749        'resource_id': {'required': True},
2750        'counter_sets': {'required': True},
2751    }
2752
2753    _attribute_map = {
2754        'resource_id': {'key': 'resourceId', 'type': 'str'},
2755        'mdm_account': {'key': 'mdmAccount', 'type': 'str'},
2756        'metric_name_space': {'key': 'metricNameSpace', 'type': 'str'},
2757        'counter_sets': {'key': 'counterSets', 'type': '[MetricCounterSet]'},
2758    }
2759
2760    def __init__(
2761        self,
2762        **kwargs
2763    ):
2764        super(MetricConfiguration, self).__init__(**kwargs)
2765        self.resource_id = kwargs['resource_id']
2766        self.mdm_account = kwargs.get('mdm_account', None)
2767        self.metric_name_space = kwargs.get('metric_name_space', None)
2768        self.counter_sets = kwargs['counter_sets']
2769
2770
2771class MetricCounter(msrest.serialization.Model):
2772    """The metric counter.
2773
2774    All required parameters must be populated in order to send to Azure.
2775
2776    :param name: Required. The counter name.
2777    :type name: str
2778    :param instance: The instance from which counter should be collected.
2779    :type instance: str
2780    :param dimension_filter: The dimension filter.
2781    :type dimension_filter: list[~azure.mgmt.databoxedge.v2020_12_01.models.MetricDimension]
2782    :param additional_dimensions: The additional dimensions to be added to metric.
2783    :type additional_dimensions: list[~azure.mgmt.databoxedge.v2020_12_01.models.MetricDimension]
2784    """
2785
2786    _validation = {
2787        'name': {'required': True},
2788    }
2789
2790    _attribute_map = {
2791        'name': {'key': 'name', 'type': 'str'},
2792        'instance': {'key': 'instance', 'type': 'str'},
2793        'dimension_filter': {'key': 'dimensionFilter', 'type': '[MetricDimension]'},
2794        'additional_dimensions': {'key': 'additionalDimensions', 'type': '[MetricDimension]'},
2795    }
2796
2797    def __init__(
2798        self,
2799        **kwargs
2800    ):
2801        super(MetricCounter, self).__init__(**kwargs)
2802        self.name = kwargs['name']
2803        self.instance = kwargs.get('instance', None)
2804        self.dimension_filter = kwargs.get('dimension_filter', None)
2805        self.additional_dimensions = kwargs.get('additional_dimensions', None)
2806
2807
2808class MetricCounterSet(msrest.serialization.Model):
2809    """The metric counter set.
2810
2811    All required parameters must be populated in order to send to Azure.
2812
2813    :param counters: Required. The counters that should be collected in this set.
2814    :type counters: list[~azure.mgmt.databoxedge.v2020_12_01.models.MetricCounter]
2815    """
2816
2817    _validation = {
2818        'counters': {'required': True},
2819    }
2820
2821    _attribute_map = {
2822        'counters': {'key': 'counters', 'type': '[MetricCounter]'},
2823    }
2824
2825    def __init__(
2826        self,
2827        **kwargs
2828    ):
2829        super(MetricCounterSet, self).__init__(**kwargs)
2830        self.counters = kwargs['counters']
2831
2832
2833class MetricDimension(msrest.serialization.Model):
2834    """The metric dimension.
2835
2836    All required parameters must be populated in order to send to Azure.
2837
2838    :param source_type: Required. The dimension type.
2839    :type source_type: str
2840    :param source_name: Required. The dimension value.
2841    :type source_name: str
2842    """
2843
2844    _validation = {
2845        'source_type': {'required': True},
2846        'source_name': {'required': True},
2847    }
2848
2849    _attribute_map = {
2850        'source_type': {'key': 'sourceType', 'type': 'str'},
2851        'source_name': {'key': 'sourceName', 'type': 'str'},
2852    }
2853
2854    def __init__(
2855        self,
2856        **kwargs
2857    ):
2858        super(MetricDimension, self).__init__(**kwargs)
2859        self.source_type = kwargs['source_type']
2860        self.source_name = kwargs['source_name']
2861
2862
2863class MetricDimensionV1(msrest.serialization.Model):
2864    """Metric Dimension v1.
2865
2866    :param name: Name of the metrics dimension.
2867    :type name: str
2868    :param display_name: Display name of the metrics dimension.
2869    :type display_name: str
2870    :param to_be_exported_for_shoebox: To be exported to shoe box.
2871    :type to_be_exported_for_shoebox: bool
2872    """
2873
2874    _attribute_map = {
2875        'name': {'key': 'name', 'type': 'str'},
2876        'display_name': {'key': 'displayName', 'type': 'str'},
2877        'to_be_exported_for_shoebox': {'key': 'toBeExportedForShoebox', 'type': 'bool'},
2878    }
2879
2880    def __init__(
2881        self,
2882        **kwargs
2883    ):
2884        super(MetricDimensionV1, self).__init__(**kwargs)
2885        self.name = kwargs.get('name', None)
2886        self.display_name = kwargs.get('display_name', None)
2887        self.to_be_exported_for_shoebox = kwargs.get('to_be_exported_for_shoebox', None)
2888
2889
2890class MetricSpecificationV1(msrest.serialization.Model):
2891    """Metric specification version 1.
2892
2893    :param name: Name of the metric.
2894    :type name: str
2895    :param display_name: Display name of the metric.
2896    :type display_name: str
2897    :param display_description: Description of the metric to be displayed.
2898    :type display_description: str
2899    :param unit: Metric units. Possible values include: "NotSpecified", "Percent", "Count",
2900     "Seconds", "Milliseconds", "Bytes", "BytesPerSecond", "CountPerSecond".
2901    :type unit: str or ~azure.mgmt.databoxedge.v2020_12_01.models.MetricUnit
2902    :param aggregation_type: Metric aggregation type. Possible values include: "NotSpecified",
2903     "None", "Average", "Minimum", "Maximum", "Total", "Count".
2904    :type aggregation_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.MetricAggregationType
2905    :param dimensions: Metric dimensions, other than default dimension which is resource.
2906    :type dimensions: list[~azure.mgmt.databoxedge.v2020_12_01.models.MetricDimensionV1]
2907    :param fill_gap_with_zero: Set true to fill the gaps with zero.
2908    :type fill_gap_with_zero: bool
2909    :param category: Metric category. Possible values include: "Capacity", "Transaction".
2910    :type category: str or ~azure.mgmt.databoxedge.v2020_12_01.models.MetricCategory
2911    :param resource_id_dimension_name_override: Resource name override.
2912    :type resource_id_dimension_name_override: str
2913    :param supported_time_grain_types: Support granularity of metrics.
2914    :type supported_time_grain_types: list[str or
2915     ~azure.mgmt.databoxedge.v2020_12_01.models.TimeGrain]
2916    :param supported_aggregation_types: Support metric aggregation type.
2917    :type supported_aggregation_types: list[str or
2918     ~azure.mgmt.databoxedge.v2020_12_01.models.MetricAggregationType]
2919    """
2920
2921    _attribute_map = {
2922        'name': {'key': 'name', 'type': 'str'},
2923        'display_name': {'key': 'displayName', 'type': 'str'},
2924        'display_description': {'key': 'displayDescription', 'type': 'str'},
2925        'unit': {'key': 'unit', 'type': 'str'},
2926        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
2927        'dimensions': {'key': 'dimensions', 'type': '[MetricDimensionV1]'},
2928        'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'},
2929        'category': {'key': 'category', 'type': 'str'},
2930        'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'},
2931        'supported_time_grain_types': {'key': 'supportedTimeGrainTypes', 'type': '[str]'},
2932        'supported_aggregation_types': {'key': 'supportedAggregationTypes', 'type': '[str]'},
2933    }
2934
2935    def __init__(
2936        self,
2937        **kwargs
2938    ):
2939        super(MetricSpecificationV1, self).__init__(**kwargs)
2940        self.name = kwargs.get('name', None)
2941        self.display_name = kwargs.get('display_name', None)
2942        self.display_description = kwargs.get('display_description', None)
2943        self.unit = kwargs.get('unit', None)
2944        self.aggregation_type = kwargs.get('aggregation_type', None)
2945        self.dimensions = kwargs.get('dimensions', None)
2946        self.fill_gap_with_zero = kwargs.get('fill_gap_with_zero', None)
2947        self.category = kwargs.get('category', None)
2948        self.resource_id_dimension_name_override = kwargs.get('resource_id_dimension_name_override', None)
2949        self.supported_time_grain_types = kwargs.get('supported_time_grain_types', None)
2950        self.supported_aggregation_types = kwargs.get('supported_aggregation_types', None)
2951
2952
2953class MonitoringMetricConfiguration(ARMBaseModel):
2954    """The metric setting details for the role.
2955
2956    Variables are only populated by the server, and will be ignored when sending a request.
2957
2958    All required parameters must be populated in order to send to Azure.
2959
2960    :ivar id: The path ID that uniquely identifies the object.
2961    :vartype id: str
2962    :ivar name: The object name.
2963    :vartype name: str
2964    :ivar type: The hierarchical type of the object.
2965    :vartype type: str
2966    :param metric_configurations: Required. The metrics configuration details.
2967    :type metric_configurations:
2968     list[~azure.mgmt.databoxedge.v2020_12_01.models.MetricConfiguration]
2969    """
2970
2971    _validation = {
2972        'id': {'readonly': True},
2973        'name': {'readonly': True},
2974        'type': {'readonly': True},
2975        'metric_configurations': {'required': True},
2976    }
2977
2978    _attribute_map = {
2979        'id': {'key': 'id', 'type': 'str'},
2980        'name': {'key': 'name', 'type': 'str'},
2981        'type': {'key': 'type', 'type': 'str'},
2982        'metric_configurations': {'key': 'properties.metricConfigurations', 'type': '[MetricConfiguration]'},
2983    }
2984
2985    def __init__(
2986        self,
2987        **kwargs
2988    ):
2989        super(MonitoringMetricConfiguration, self).__init__(**kwargs)
2990        self.metric_configurations = kwargs['metric_configurations']
2991
2992
2993class MonitoringMetricConfigurationList(msrest.serialization.Model):
2994    """Collection of metric configurations.
2995
2996    Variables are only populated by the server, and will be ignored when sending a request.
2997
2998    :ivar value: The list of metric configurations.
2999    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.MonitoringMetricConfiguration]
3000    :ivar next_link: Link to the next set of results.
3001    :vartype next_link: str
3002    """
3003
3004    _validation = {
3005        'value': {'readonly': True},
3006        'next_link': {'readonly': True},
3007    }
3008
3009    _attribute_map = {
3010        'value': {'key': 'value', 'type': '[MonitoringMetricConfiguration]'},
3011        'next_link': {'key': 'nextLink', 'type': 'str'},
3012    }
3013
3014    def __init__(
3015        self,
3016        **kwargs
3017    ):
3018        super(MonitoringMetricConfigurationList, self).__init__(**kwargs)
3019        self.value = None
3020        self.next_link = None
3021
3022
3023class MountPointMap(msrest.serialization.Model):
3024    """The share mount point.
3025
3026    Variables are only populated by the server, and will be ignored when sending a request.
3027
3028    All required parameters must be populated in order to send to Azure.
3029
3030    :param share_id: Required. ID of the share mounted to the role VM.
3031    :type share_id: str
3032    :ivar role_id: ID of the role to which share is mounted.
3033    :vartype role_id: str
3034    :ivar mount_point: Mount point for the share.
3035    :vartype mount_point: str
3036    :ivar mount_type: Mounting type. Possible values include: "Volume", "HostPath".
3037    :vartype mount_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.MountType
3038    :ivar role_type: Role type. Possible values include: "IOT", "ASA", "Functions", "Cognitive",
3039     "MEC", "CloudEdgeManagement", "Kubernetes".
3040    :vartype role_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.RoleTypes
3041    """
3042
3043    _validation = {
3044        'share_id': {'required': True},
3045        'role_id': {'readonly': True},
3046        'mount_point': {'readonly': True},
3047        'mount_type': {'readonly': True},
3048        'role_type': {'readonly': True},
3049    }
3050
3051    _attribute_map = {
3052        'share_id': {'key': 'shareId', 'type': 'str'},
3053        'role_id': {'key': 'roleId', 'type': 'str'},
3054        'mount_point': {'key': 'mountPoint', 'type': 'str'},
3055        'mount_type': {'key': 'mountType', 'type': 'str'},
3056        'role_type': {'key': 'roleType', 'type': 'str'},
3057    }
3058
3059    def __init__(
3060        self,
3061        **kwargs
3062    ):
3063        super(MountPointMap, self).__init__(**kwargs)
3064        self.share_id = kwargs['share_id']
3065        self.role_id = None
3066        self.mount_point = None
3067        self.mount_type = None
3068        self.role_type = None
3069
3070
3071class NetworkAdapter(msrest.serialization.Model):
3072    """Represents the networkAdapter on a device.
3073
3074    Variables are only populated by the server, and will be ignored when sending a request.
3075
3076    :ivar adapter_id: Instance ID of network adapter.
3077    :vartype adapter_id: str
3078    :ivar adapter_position: Hardware position of network adapter.
3079    :vartype adapter_position: ~azure.mgmt.databoxedge.v2020_12_01.models.NetworkAdapterPosition
3080    :ivar index: Logical index of the adapter.
3081    :vartype index: int
3082    :ivar node_id: Node ID of the network adapter.
3083    :vartype node_id: str
3084    :ivar network_adapter_name: Network adapter name.
3085    :vartype network_adapter_name: str
3086    :ivar label: Hardware label for the adapter.
3087    :vartype label: str
3088    :ivar mac_address: MAC address.
3089    :vartype mac_address: str
3090    :ivar link_speed: Link speed.
3091    :vartype link_speed: long
3092    :ivar status: Value indicating whether this adapter is valid. Possible values include:
3093     "Inactive", "Active".
3094    :vartype status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.NetworkAdapterStatus
3095    :param rdma_status: Value indicating whether this adapter is RDMA capable. Possible values
3096     include: "Incapable", "Capable".
3097    :type rdma_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.NetworkAdapterRDMAStatus
3098    :param dhcp_status: Value indicating whether this adapter has DHCP enabled. Possible values
3099     include: "Disabled", "Enabled".
3100    :type dhcp_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.NetworkAdapterDHCPStatus
3101    :ivar ipv4_configuration: The IPv4 configuration of the network adapter.
3102    :vartype ipv4_configuration: ~azure.mgmt.databoxedge.v2020_12_01.models.Ipv4Config
3103    :ivar ipv6_configuration: The IPv6 configuration of the network adapter.
3104    :vartype ipv6_configuration: ~azure.mgmt.databoxedge.v2020_12_01.models.Ipv6Config
3105    :ivar ipv6_link_local_address: The IPv6 local address.
3106    :vartype ipv6_link_local_address: str
3107    :ivar dns_servers: The list of DNS Servers of the device.
3108    :vartype dns_servers: list[str]
3109    """
3110
3111    _validation = {
3112        'adapter_id': {'readonly': True},
3113        'adapter_position': {'readonly': True},
3114        'index': {'readonly': True},
3115        'node_id': {'readonly': True},
3116        'network_adapter_name': {'readonly': True},
3117        'label': {'readonly': True},
3118        'mac_address': {'readonly': True},
3119        'link_speed': {'readonly': True},
3120        'status': {'readonly': True},
3121        'ipv4_configuration': {'readonly': True},
3122        'ipv6_configuration': {'readonly': True},
3123        'ipv6_link_local_address': {'readonly': True},
3124        'dns_servers': {'readonly': True},
3125    }
3126
3127    _attribute_map = {
3128        'adapter_id': {'key': 'adapterId', 'type': 'str'},
3129        'adapter_position': {'key': 'adapterPosition', 'type': 'NetworkAdapterPosition'},
3130        'index': {'key': 'index', 'type': 'int'},
3131        'node_id': {'key': 'nodeId', 'type': 'str'},
3132        'network_adapter_name': {'key': 'networkAdapterName', 'type': 'str'},
3133        'label': {'key': 'label', 'type': 'str'},
3134        'mac_address': {'key': 'macAddress', 'type': 'str'},
3135        'link_speed': {'key': 'linkSpeed', 'type': 'long'},
3136        'status': {'key': 'status', 'type': 'str'},
3137        'rdma_status': {'key': 'rdmaStatus', 'type': 'str'},
3138        'dhcp_status': {'key': 'dhcpStatus', 'type': 'str'},
3139        'ipv4_configuration': {'key': 'ipv4Configuration', 'type': 'Ipv4Config'},
3140        'ipv6_configuration': {'key': 'ipv6Configuration', 'type': 'Ipv6Config'},
3141        'ipv6_link_local_address': {'key': 'ipv6LinkLocalAddress', 'type': 'str'},
3142        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
3143    }
3144
3145    def __init__(
3146        self,
3147        **kwargs
3148    ):
3149        super(NetworkAdapter, self).__init__(**kwargs)
3150        self.adapter_id = None
3151        self.adapter_position = None
3152        self.index = None
3153        self.node_id = None
3154        self.network_adapter_name = None
3155        self.label = None
3156        self.mac_address = None
3157        self.link_speed = None
3158        self.status = None
3159        self.rdma_status = kwargs.get('rdma_status', None)
3160        self.dhcp_status = kwargs.get('dhcp_status', None)
3161        self.ipv4_configuration = None
3162        self.ipv6_configuration = None
3163        self.ipv6_link_local_address = None
3164        self.dns_servers = None
3165
3166
3167class NetworkAdapterPosition(msrest.serialization.Model):
3168    """The network adapter position.
3169
3170    Variables are only populated by the server, and will be ignored when sending a request.
3171
3172    :ivar network_group: The network group. Possible values include: "None", "NonRDMA", "RDMA".
3173    :vartype network_group: str or ~azure.mgmt.databoxedge.v2020_12_01.models.NetworkGroup
3174    :ivar port: The port.
3175    :vartype port: int
3176    """
3177
3178    _validation = {
3179        'network_group': {'readonly': True},
3180        'port': {'readonly': True},
3181    }
3182
3183    _attribute_map = {
3184        'network_group': {'key': 'networkGroup', 'type': 'str'},
3185        'port': {'key': 'port', 'type': 'int'},
3186    }
3187
3188    def __init__(
3189        self,
3190        **kwargs
3191    ):
3192        super(NetworkAdapterPosition, self).__init__(**kwargs)
3193        self.network_group = None
3194        self.port = None
3195
3196
3197class NetworkSettings(ARMBaseModel):
3198    """The network settings of a device.
3199
3200    Variables are only populated by the server, and will be ignored when sending a request.
3201
3202    :ivar id: The path ID that uniquely identifies the object.
3203    :vartype id: str
3204    :ivar name: The object name.
3205    :vartype name: str
3206    :ivar type: The hierarchical type of the object.
3207    :vartype type: str
3208    :ivar network_adapters: The network adapter list on the device.
3209    :vartype network_adapters: list[~azure.mgmt.databoxedge.v2020_12_01.models.NetworkAdapter]
3210    """
3211
3212    _validation = {
3213        'id': {'readonly': True},
3214        'name': {'readonly': True},
3215        'type': {'readonly': True},
3216        'network_adapters': {'readonly': True},
3217    }
3218
3219    _attribute_map = {
3220        'id': {'key': 'id', 'type': 'str'},
3221        'name': {'key': 'name', 'type': 'str'},
3222        'type': {'key': 'type', 'type': 'str'},
3223        'network_adapters': {'key': 'properties.networkAdapters', 'type': '[NetworkAdapter]'},
3224    }
3225
3226    def __init__(
3227        self,
3228        **kwargs
3229    ):
3230        super(NetworkSettings, self).__init__(**kwargs)
3231        self.network_adapters = None
3232
3233
3234class Node(ARMBaseModel):
3235    """Represents a single node in a Data box Edge/Gateway device
3236Gateway devices, standalone Edge devices and a single node cluster Edge device will all have 1 node
3237Multi-node Edge devices will have more than 1 nodes.
3238
3239    Variables are only populated by the server, and will be ignored when sending a request.
3240
3241    :ivar id: The path ID that uniquely identifies the object.
3242    :vartype id: str
3243    :ivar name: The object name.
3244    :vartype name: str
3245    :ivar type: The hierarchical type of the object.
3246    :vartype type: str
3247    :ivar node_status: The current status of the individual node. Possible values include:
3248     "Unknown", "Up", "Down", "Rebooting", "ShuttingDown".
3249    :vartype node_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.NodeStatus
3250    :ivar node_chassis_serial_number: Serial number of the Chassis.
3251    :vartype node_chassis_serial_number: str
3252    :ivar node_serial_number: Serial number of the individual node.
3253    :vartype node_serial_number: str
3254    :ivar node_display_name: Display Name of the individual node.
3255    :vartype node_display_name: str
3256    :ivar node_friendly_software_version: Friendly software version name that is currently
3257     installed on the node.
3258    :vartype node_friendly_software_version: str
3259    :ivar node_hcs_version: HCS version that is currently installed on the node.
3260    :vartype node_hcs_version: str
3261    :ivar node_instance_id: Guid instance id of the node.
3262    :vartype node_instance_id: str
3263    """
3264
3265    _validation = {
3266        'id': {'readonly': True},
3267        'name': {'readonly': True},
3268        'type': {'readonly': True},
3269        'node_status': {'readonly': True},
3270        'node_chassis_serial_number': {'readonly': True},
3271        'node_serial_number': {'readonly': True},
3272        'node_display_name': {'readonly': True},
3273        'node_friendly_software_version': {'readonly': True},
3274        'node_hcs_version': {'readonly': True},
3275        'node_instance_id': {'readonly': True},
3276    }
3277
3278    _attribute_map = {
3279        'id': {'key': 'id', 'type': 'str'},
3280        'name': {'key': 'name', 'type': 'str'},
3281        'type': {'key': 'type', 'type': 'str'},
3282        'node_status': {'key': 'properties.nodeStatus', 'type': 'str'},
3283        'node_chassis_serial_number': {'key': 'properties.nodeChassisSerialNumber', 'type': 'str'},
3284        'node_serial_number': {'key': 'properties.nodeSerialNumber', 'type': 'str'},
3285        'node_display_name': {'key': 'properties.nodeDisplayName', 'type': 'str'},
3286        'node_friendly_software_version': {'key': 'properties.nodeFriendlySoftwareVersion', 'type': 'str'},
3287        'node_hcs_version': {'key': 'properties.nodeHcsVersion', 'type': 'str'},
3288        'node_instance_id': {'key': 'properties.nodeInstanceId', 'type': 'str'},
3289    }
3290
3291    def __init__(
3292        self,
3293        **kwargs
3294    ):
3295        super(Node, self).__init__(**kwargs)
3296        self.node_status = None
3297        self.node_chassis_serial_number = None
3298        self.node_serial_number = None
3299        self.node_display_name = None
3300        self.node_friendly_software_version = None
3301        self.node_hcs_version = None
3302        self.node_instance_id = None
3303
3304
3305class NodeInfo(msrest.serialization.Model):
3306    """Kubernetes node info.
3307
3308    Variables are only populated by the server, and will be ignored when sending a request.
3309
3310    :ivar name: Node name.
3311    :vartype name: str
3312    :ivar type: Node type - Master/Worker. Possible values include: "Invalid", "Master", "Worker".
3313    :vartype type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesNodeType
3314    :param ip_configuration: IP Configuration of the Kubernetes node.
3315    :type ip_configuration:
3316     list[~azure.mgmt.databoxedge.v2020_12_01.models.KubernetesIPConfiguration]
3317    """
3318
3319    _validation = {
3320        'name': {'readonly': True},
3321        'type': {'readonly': True},
3322    }
3323
3324    _attribute_map = {
3325        'name': {'key': 'name', 'type': 'str'},
3326        'type': {'key': 'type', 'type': 'str'},
3327        'ip_configuration': {'key': 'ipConfiguration', 'type': '[KubernetesIPConfiguration]'},
3328    }
3329
3330    def __init__(
3331        self,
3332        **kwargs
3333    ):
3334        super(NodeInfo, self).__init__(**kwargs)
3335        self.name = None
3336        self.type = None
3337        self.ip_configuration = kwargs.get('ip_configuration', None)
3338
3339
3340class NodeList(msrest.serialization.Model):
3341    """Collection of Nodes.
3342
3343    Variables are only populated by the server, and will be ignored when sending a request.
3344
3345    :ivar value: The list of Nodes.
3346    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Node]
3347    :param next_link: Link to the next set of results.
3348    :type next_link: str
3349    """
3350
3351    _validation = {
3352        'value': {'readonly': True},
3353    }
3354
3355    _attribute_map = {
3356        'value': {'key': 'value', 'type': '[Node]'},
3357        'next_link': {'key': 'nextLink', 'type': 'str'},
3358    }
3359
3360    def __init__(
3361        self,
3362        **kwargs
3363    ):
3364        super(NodeList, self).__init__(**kwargs)
3365        self.value = None
3366        self.next_link = kwargs.get('next_link', None)
3367
3368
3369class Operation(msrest.serialization.Model):
3370    """Operations.
3371
3372    :param name: Name of the operation.
3373    :type name: str
3374    :param is_data_action: Is data action.
3375    :type is_data_action: bool
3376    :param display: Properties displayed for the operation.
3377    :type display: ~azure.mgmt.databoxedge.v2020_12_01.models.OperationDisplay
3378    :param origin: Origin of the operation.
3379    :type origin: str
3380    :param service_specification: Service specification.
3381    :type service_specification: ~azure.mgmt.databoxedge.v2020_12_01.models.ServiceSpecification
3382    """
3383
3384    _attribute_map = {
3385        'name': {'key': 'name', 'type': 'str'},
3386        'is_data_action': {'key': 'isDataAction', 'type': 'bool'},
3387        'display': {'key': 'display', 'type': 'OperationDisplay'},
3388        'origin': {'key': 'origin', 'type': 'str'},
3389        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'ServiceSpecification'},
3390    }
3391
3392    def __init__(
3393        self,
3394        **kwargs
3395    ):
3396        super(Operation, self).__init__(**kwargs)
3397        self.name = kwargs.get('name', None)
3398        self.is_data_action = kwargs.get('is_data_action', None)
3399        self.display = kwargs.get('display', None)
3400        self.origin = kwargs.get('origin', None)
3401        self.service_specification = kwargs.get('service_specification', None)
3402
3403
3404class OperationDisplay(msrest.serialization.Model):
3405    """Operation display properties.
3406
3407    :param provider: Provider name.
3408    :type provider: str
3409    :param resource: The type of resource in which the operation is performed.
3410    :type resource: str
3411    :param operation: Operation to be performed on the resource.
3412    :type operation: str
3413    :param description: Description of the operation to be performed.
3414    :type description: str
3415    """
3416
3417    _attribute_map = {
3418        'provider': {'key': 'provider', 'type': 'str'},
3419        'resource': {'key': 'resource', 'type': 'str'},
3420        'operation': {'key': 'operation', 'type': 'str'},
3421        'description': {'key': 'description', 'type': 'str'},
3422    }
3423
3424    def __init__(
3425        self,
3426        **kwargs
3427    ):
3428        super(OperationDisplay, self).__init__(**kwargs)
3429        self.provider = kwargs.get('provider', None)
3430        self.resource = kwargs.get('resource', None)
3431        self.operation = kwargs.get('operation', None)
3432        self.description = kwargs.get('description', None)
3433
3434
3435class OperationsList(msrest.serialization.Model):
3436    """The list of operations used for the discovery of available provider operations.
3437
3438    All required parameters must be populated in order to send to Azure.
3439
3440    :param value: Required. The value.
3441    :type value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Operation]
3442    :param next_link: Link to the next set of results.
3443    :type next_link: str
3444    """
3445
3446    _validation = {
3447        'value': {'required': True},
3448    }
3449
3450    _attribute_map = {
3451        'value': {'key': 'value', 'type': '[Operation]'},
3452        'next_link': {'key': 'nextLink', 'type': 'str'},
3453    }
3454
3455    def __init__(
3456        self,
3457        **kwargs
3458    ):
3459        super(OperationsList, self).__init__(**kwargs)
3460        self.value = kwargs['value']
3461        self.next_link = kwargs.get('next_link', None)
3462
3463
3464class Order(ARMBaseModel):
3465    """The order details.
3466
3467    Variables are only populated by the server, and will be ignored when sending a request.
3468
3469    :ivar id: The path ID that uniquely identifies the object.
3470    :vartype id: str
3471    :ivar name: The object name.
3472    :vartype name: str
3473    :ivar type: The hierarchical type of the object.
3474    :vartype type: str
3475    :param contact_information: The contact details.
3476    :type contact_information: ~azure.mgmt.databoxedge.v2020_12_01.models.ContactDetails
3477    :param shipping_address: The shipping address.
3478    :type shipping_address: ~azure.mgmt.databoxedge.v2020_12_01.models.Address
3479    :ivar current_status: Current status of the order.
3480    :vartype current_status: ~azure.mgmt.databoxedge.v2020_12_01.models.OrderStatus
3481    :ivar order_history: List of status changes in the order.
3482    :vartype order_history: list[~azure.mgmt.databoxedge.v2020_12_01.models.OrderStatus]
3483    :ivar serial_number: Serial number of the device.
3484    :vartype serial_number: str
3485    :ivar delivery_tracking_info: Tracking information for the package delivered to the customer
3486     whether it has an original or a replacement device.
3487    :vartype delivery_tracking_info: list[~azure.mgmt.databoxedge.v2020_12_01.models.TrackingInfo]
3488    :ivar return_tracking_info: Tracking information for the package returned from the customer
3489     whether it has an original or a replacement device.
3490    :vartype return_tracking_info: list[~azure.mgmt.databoxedge.v2020_12_01.models.TrackingInfo]
3491    :param shipment_type: ShipmentType of the order. Possible values include: "NotApplicable",
3492     "ShippedToCustomer", "SelfPickup".
3493    :type shipment_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.ShipmentType
3494    """
3495
3496    _validation = {
3497        'id': {'readonly': True},
3498        'name': {'readonly': True},
3499        'type': {'readonly': True},
3500        'current_status': {'readonly': True},
3501        'order_history': {'readonly': True},
3502        'serial_number': {'readonly': True},
3503        'delivery_tracking_info': {'readonly': True},
3504        'return_tracking_info': {'readonly': True},
3505    }
3506
3507    _attribute_map = {
3508        'id': {'key': 'id', 'type': 'str'},
3509        'name': {'key': 'name', 'type': 'str'},
3510        'type': {'key': 'type', 'type': 'str'},
3511        'contact_information': {'key': 'properties.contactInformation', 'type': 'ContactDetails'},
3512        'shipping_address': {'key': 'properties.shippingAddress', 'type': 'Address'},
3513        'current_status': {'key': 'properties.currentStatus', 'type': 'OrderStatus'},
3514        'order_history': {'key': 'properties.orderHistory', 'type': '[OrderStatus]'},
3515        'serial_number': {'key': 'properties.serialNumber', 'type': 'str'},
3516        'delivery_tracking_info': {'key': 'properties.deliveryTrackingInfo', 'type': '[TrackingInfo]'},
3517        'return_tracking_info': {'key': 'properties.returnTrackingInfo', 'type': '[TrackingInfo]'},
3518        'shipment_type': {'key': 'properties.shipmentType', 'type': 'str'},
3519    }
3520
3521    def __init__(
3522        self,
3523        **kwargs
3524    ):
3525        super(Order, self).__init__(**kwargs)
3526        self.contact_information = kwargs.get('contact_information', None)
3527        self.shipping_address = kwargs.get('shipping_address', None)
3528        self.current_status = None
3529        self.order_history = None
3530        self.serial_number = None
3531        self.delivery_tracking_info = None
3532        self.return_tracking_info = None
3533        self.shipment_type = kwargs.get('shipment_type', None)
3534
3535
3536class OrderList(msrest.serialization.Model):
3537    """List of order entities.
3538
3539    Variables are only populated by the server, and will be ignored when sending a request.
3540
3541    :ivar value: The list of orders.
3542    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Order]
3543    :ivar next_link: Link to the next set of results.
3544    :vartype next_link: str
3545    """
3546
3547    _validation = {
3548        'value': {'readonly': True},
3549        'next_link': {'readonly': True},
3550    }
3551
3552    _attribute_map = {
3553        'value': {'key': 'value', 'type': '[Order]'},
3554        'next_link': {'key': 'nextLink', 'type': 'str'},
3555    }
3556
3557    def __init__(
3558        self,
3559        **kwargs
3560    ):
3561        super(OrderList, self).__init__(**kwargs)
3562        self.value = None
3563        self.next_link = None
3564
3565
3566class OrderStatus(msrest.serialization.Model):
3567    """Represents a single status change.
3568
3569    Variables are only populated by the server, and will be ignored when sending a request.
3570
3571    All required parameters must be populated in order to send to Azure.
3572
3573    :param status: Required. Status of the order as per the allowed status types. Possible values
3574     include: "Untracked", "AwaitingFulfilment", "AwaitingPreparation", "AwaitingShipment",
3575     "Shipped", "Arriving", "Delivered", "ReplacementRequested", "LostDevice", "Declined",
3576     "ReturnInitiated", "AwaitingReturnShipment", "ShippedBack", "CollectedAtMicrosoft",
3577     "AwaitingPickup", "PickupCompleted", "AwaitingDrop".
3578    :type status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.OrderState
3579    :ivar update_date_time: Time of status update.
3580    :vartype update_date_time: ~datetime.datetime
3581    :param comments: Comments related to this status change.
3582    :type comments: str
3583    :ivar tracking_information: Tracking information related to the state in the ordering flow.
3584    :vartype tracking_information: ~azure.mgmt.databoxedge.v2020_12_01.models.TrackingInfo
3585    :ivar additional_order_details: Dictionary to hold generic information which is not stored
3586     by the already existing properties.
3587    :vartype additional_order_details: dict[str, str]
3588    """
3589
3590    _validation = {
3591        'status': {'required': True},
3592        'update_date_time': {'readonly': True},
3593        'tracking_information': {'readonly': True},
3594        'additional_order_details': {'readonly': True},
3595    }
3596
3597    _attribute_map = {
3598        'status': {'key': 'status', 'type': 'str'},
3599        'update_date_time': {'key': 'updateDateTime', 'type': 'iso-8601'},
3600        'comments': {'key': 'comments', 'type': 'str'},
3601        'tracking_information': {'key': 'trackingInformation', 'type': 'TrackingInfo'},
3602        'additional_order_details': {'key': 'additionalOrderDetails', 'type': '{str}'},
3603    }
3604
3605    def __init__(
3606        self,
3607        **kwargs
3608    ):
3609        super(OrderStatus, self).__init__(**kwargs)
3610        self.status = kwargs['status']
3611        self.update_date_time = None
3612        self.comments = kwargs.get('comments', None)
3613        self.tracking_information = None
3614        self.additional_order_details = None
3615
3616
3617class PeriodicTimerEventTrigger(Trigger):
3618    """Trigger details.
3619
3620    Variables are only populated by the server, and will be ignored when sending a request.
3621
3622    All required parameters must be populated in order to send to Azure.
3623
3624    :ivar id: The path ID that uniquely identifies the object.
3625    :vartype id: str
3626    :ivar name: The object name.
3627    :vartype name: str
3628    :ivar type: The hierarchical type of the object.
3629    :vartype type: str
3630    :ivar system_data: Trigger in DataBoxEdge Resource.
3631    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
3632    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
3633     "FileEvent", "PeriodicTimerEvent".
3634    :type kind: str or ~azure.mgmt.databoxedge.v2020_12_01.models.TriggerEventType
3635    :param source_info: Required. Periodic timer details.
3636    :type source_info: ~azure.mgmt.databoxedge.v2020_12_01.models.PeriodicTimerSourceInfo
3637    :param sink_info: Required. Role Sink information.
3638    :type sink_info: ~azure.mgmt.databoxedge.v2020_12_01.models.RoleSinkInfo
3639    :param custom_context_tag: A custom context tag typically used to correlate the trigger against
3640     its usage. For example, if a periodic timer trigger is intended for certain specific IoT
3641     modules in the device, the tag can be the name or the image URL of the module.
3642    :type custom_context_tag: str
3643    """
3644
3645    _validation = {
3646        'id': {'readonly': True},
3647        'name': {'readonly': True},
3648        'type': {'readonly': True},
3649        'system_data': {'readonly': True},
3650        'kind': {'required': True},
3651        'source_info': {'required': True},
3652        'sink_info': {'required': True},
3653        'custom_context_tag': {'max_length': 192, 'min_length': 0},
3654    }
3655
3656    _attribute_map = {
3657        'id': {'key': 'id', 'type': 'str'},
3658        'name': {'key': 'name', 'type': 'str'},
3659        'type': {'key': 'type', 'type': 'str'},
3660        'system_data': {'key': 'systemData', 'type': 'SystemData'},
3661        'kind': {'key': 'kind', 'type': 'str'},
3662        'source_info': {'key': 'properties.sourceInfo', 'type': 'PeriodicTimerSourceInfo'},
3663        'sink_info': {'key': 'properties.sinkInfo', 'type': 'RoleSinkInfo'},
3664        'custom_context_tag': {'key': 'properties.customContextTag', 'type': 'str'},
3665    }
3666
3667    def __init__(
3668        self,
3669        **kwargs
3670    ):
3671        super(PeriodicTimerEventTrigger, self).__init__(**kwargs)
3672        self.kind = 'PeriodicTimerEvent'  # type: str
3673        self.source_info = kwargs['source_info']
3674        self.sink_info = kwargs['sink_info']
3675        self.custom_context_tag = kwargs.get('custom_context_tag', None)
3676
3677
3678class PeriodicTimerSourceInfo(msrest.serialization.Model):
3679    """Periodic timer event source.
3680
3681    All required parameters must be populated in order to send to Azure.
3682
3683    :param start_time: Required. The time of the day that results in a valid trigger. Schedule is
3684     computed with reference to the time specified upto seconds. If timezone is not specified the
3685     time will considered to be in device timezone. The value will always be returned as UTC time.
3686    :type start_time: ~datetime.datetime
3687    :param schedule: Required. Periodic frequency at which timer event needs to be raised. Supports
3688     daily, hourly, minutes, and seconds.
3689    :type schedule: str
3690    :param topic: Topic where periodic events are published to IoT device.
3691    :type topic: str
3692    """
3693
3694    _validation = {
3695        'start_time': {'required': True},
3696        'schedule': {'required': True},
3697    }
3698
3699    _attribute_map = {
3700        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
3701        'schedule': {'key': 'schedule', 'type': 'str'},
3702        'topic': {'key': 'topic', 'type': 'str'},
3703    }
3704
3705    def __init__(
3706        self,
3707        **kwargs
3708    ):
3709        super(PeriodicTimerSourceInfo, self).__init__(**kwargs)
3710        self.start_time = kwargs['start_time']
3711        self.schedule = kwargs['schedule']
3712        self.topic = kwargs.get('topic', None)
3713
3714
3715class RefreshDetails(msrest.serialization.Model):
3716    """Fields for tracking refresh job on the share or container.
3717
3718    :param in_progress_refresh_job_id: If a refresh job is currently in progress on this share or
3719     container, this field indicates the ARM resource ID of that job. The field is empty if no job
3720     is in progress.
3721    :type in_progress_refresh_job_id: str
3722    :param last_completed_refresh_job_time_in_utc: Indicates the completed time for the last
3723     refresh job on this particular share or container, if any.This could be a failed job or a
3724     successful job.
3725    :type last_completed_refresh_job_time_in_utc: ~datetime.datetime
3726    :param error_manifest_file: Indicates the relative path of the error xml for the last refresh
3727     job on this particular share or container, if any. This could be a failed job or a successful
3728     job.
3729    :type error_manifest_file: str
3730    :param last_job: Indicates the id of the last refresh job on this particular share or
3731     container,if any. This could be a failed job or a successful job.
3732    :type last_job: str
3733    """
3734
3735    _attribute_map = {
3736        'in_progress_refresh_job_id': {'key': 'inProgressRefreshJobId', 'type': 'str'},
3737        'last_completed_refresh_job_time_in_utc': {'key': 'lastCompletedRefreshJobTimeInUTC', 'type': 'iso-8601'},
3738        'error_manifest_file': {'key': 'errorManifestFile', 'type': 'str'},
3739        'last_job': {'key': 'lastJob', 'type': 'str'},
3740    }
3741
3742    def __init__(
3743        self,
3744        **kwargs
3745    ):
3746        super(RefreshDetails, self).__init__(**kwargs)
3747        self.in_progress_refresh_job_id = kwargs.get('in_progress_refresh_job_id', None)
3748        self.last_completed_refresh_job_time_in_utc = kwargs.get('last_completed_refresh_job_time_in_utc', None)
3749        self.error_manifest_file = kwargs.get('error_manifest_file', None)
3750        self.last_job = kwargs.get('last_job', None)
3751
3752
3753class ResourceIdentity(msrest.serialization.Model):
3754    """Msi identity details of the resource.
3755
3756    Variables are only populated by the server, and will be ignored when sending a request.
3757
3758    :param type: Identity type. Possible values include: "None", "SystemAssigned", "UserAssigned".
3759    :type type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.MsiIdentityType
3760    :ivar principal_id: Service Principal Id backing the Msi.
3761    :vartype principal_id: str
3762    :ivar tenant_id: Home Tenant Id.
3763    :vartype tenant_id: str
3764    """
3765
3766    _validation = {
3767        'principal_id': {'readonly': True},
3768        'tenant_id': {'readonly': True},
3769    }
3770
3771    _attribute_map = {
3772        'type': {'key': 'type', 'type': 'str'},
3773        'principal_id': {'key': 'principalId', 'type': 'str'},
3774        'tenant_id': {'key': 'tenantId', 'type': 'str'},
3775    }
3776
3777    def __init__(
3778        self,
3779        **kwargs
3780    ):
3781        super(ResourceIdentity, self).__init__(**kwargs)
3782        self.type = kwargs.get('type', None)
3783        self.principal_id = None
3784        self.tenant_id = None
3785
3786
3787class ResourceMoveDetails(msrest.serialization.Model):
3788    """Fields for tracking resource move.
3789
3790    :param operation_in_progress: Denotes whether move operation is in progress. Possible values
3791     include: "None", "ResourceMoveInProgress", "ResourceMoveFailed".
3792    :type operation_in_progress: str or
3793     ~azure.mgmt.databoxedge.v2020_12_01.models.ResourceMoveStatus
3794    :param operation_in_progress_lock_timeout_in_utc: Denotes the timeout of the operation to
3795     finish.
3796    :type operation_in_progress_lock_timeout_in_utc: ~datetime.datetime
3797    """
3798
3799    _attribute_map = {
3800        'operation_in_progress': {'key': 'operationInProgress', 'type': 'str'},
3801        'operation_in_progress_lock_timeout_in_utc': {'key': 'operationInProgressLockTimeoutInUTC', 'type': 'iso-8601'},
3802    }
3803
3804    def __init__(
3805        self,
3806        **kwargs
3807    ):
3808        super(ResourceMoveDetails, self).__init__(**kwargs)
3809        self.operation_in_progress = kwargs.get('operation_in_progress', None)
3810        self.operation_in_progress_lock_timeout_in_utc = kwargs.get('operation_in_progress_lock_timeout_in_utc', None)
3811
3812
3813class ResourceTypeSku(msrest.serialization.Model):
3814    """Resource type Sku object.
3815
3816    Variables are only populated by the server, and will be ignored when sending a request.
3817
3818    :ivar resource_type: The resource type.
3819    :vartype resource_type: str
3820    :ivar skus: The skus.
3821    :vartype skus: list[~azure.mgmt.databoxedge.v2020_12_01.models.SkuInformation]
3822    """
3823
3824    _validation = {
3825        'resource_type': {'readonly': True},
3826        'skus': {'readonly': True},
3827    }
3828
3829    _attribute_map = {
3830        'resource_type': {'key': 'resourceType', 'type': 'str'},
3831        'skus': {'key': 'skus', 'type': '[SkuInformation]'},
3832    }
3833
3834    def __init__(
3835        self,
3836        **kwargs
3837    ):
3838        super(ResourceTypeSku, self).__init__(**kwargs)
3839        self.resource_type = None
3840        self.skus = None
3841
3842
3843class RoleList(msrest.serialization.Model):
3844    """Collection of all the roles on the Data Box Edge device.
3845
3846    Variables are only populated by the server, and will be ignored when sending a request.
3847
3848    :ivar value: The Value.
3849    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Role]
3850    :ivar next_link: Link to the next set of results.
3851    :vartype next_link: str
3852    """
3853
3854    _validation = {
3855        'value': {'readonly': True},
3856        'next_link': {'readonly': True},
3857    }
3858
3859    _attribute_map = {
3860        'value': {'key': 'value', 'type': '[Role]'},
3861        'next_link': {'key': 'nextLink', 'type': 'str'},
3862    }
3863
3864    def __init__(
3865        self,
3866        **kwargs
3867    ):
3868        super(RoleList, self).__init__(**kwargs)
3869        self.value = None
3870        self.next_link = None
3871
3872
3873class RoleSinkInfo(msrest.serialization.Model):
3874    """Compute role against which events will be raised.
3875
3876    All required parameters must be populated in order to send to Azure.
3877
3878    :param role_id: Required. Compute role ID.
3879    :type role_id: str
3880    """
3881
3882    _validation = {
3883        'role_id': {'required': True},
3884    }
3885
3886    _attribute_map = {
3887        'role_id': {'key': 'roleId', 'type': 'str'},
3888    }
3889
3890    def __init__(
3891        self,
3892        **kwargs
3893    ):
3894        super(RoleSinkInfo, self).__init__(**kwargs)
3895        self.role_id = kwargs['role_id']
3896
3897
3898class Secret(msrest.serialization.Model):
3899    """Holds device secret either as a KeyVault reference or as an encrypted value.
3900
3901    :param encrypted_secret: Encrypted (using device public key) secret value.
3902    :type encrypted_secret: ~azure.mgmt.databoxedge.v2020_12_01.models.AsymmetricEncryptedSecret
3903    :param key_vault_id: Id of the Key-Vault where secret is stored (ex:
3904     secrets/AuthClientSecret/82ef4346187a4033a10d629cde07d740).
3905    :type key_vault_id: str
3906    """
3907
3908    _attribute_map = {
3909        'encrypted_secret': {'key': 'encryptedSecret', 'type': 'AsymmetricEncryptedSecret'},
3910        'key_vault_id': {'key': 'keyVaultId', 'type': 'str'},
3911    }
3912
3913    def __init__(
3914        self,
3915        **kwargs
3916    ):
3917        super(Secret, self).__init__(**kwargs)
3918        self.encrypted_secret = kwargs.get('encrypted_secret', None)
3919        self.key_vault_id = kwargs.get('key_vault_id', None)
3920
3921
3922class SecuritySettings(ARMBaseModel):
3923    """The security settings of a device.
3924
3925    Variables are only populated by the server, and will be ignored when sending a request.
3926
3927    All required parameters must be populated in order to send to Azure.
3928
3929    :ivar id: The path ID that uniquely identifies the object.
3930    :vartype id: str
3931    :ivar name: The object name.
3932    :vartype name: str
3933    :ivar type: The hierarchical type of the object.
3934    :vartype type: str
3935    :param device_admin_password: Required. Device administrator password as an encrypted string
3936     (encrypted using RSA PKCS #1) is used to sign into the  local web UI of the device. The Actual
3937     password should have at least 8 characters that are a combination of  uppercase, lowercase,
3938     numeric, and special characters.
3939    :type device_admin_password:
3940     ~azure.mgmt.databoxedge.v2020_12_01.models.AsymmetricEncryptedSecret
3941    """
3942
3943    _validation = {
3944        'id': {'readonly': True},
3945        'name': {'readonly': True},
3946        'type': {'readonly': True},
3947        'device_admin_password': {'required': True},
3948    }
3949
3950    _attribute_map = {
3951        'id': {'key': 'id', 'type': 'str'},
3952        'name': {'key': 'name', 'type': 'str'},
3953        'type': {'key': 'type', 'type': 'str'},
3954        'device_admin_password': {'key': 'properties.deviceAdminPassword', 'type': 'AsymmetricEncryptedSecret'},
3955    }
3956
3957    def __init__(
3958        self,
3959        **kwargs
3960    ):
3961        super(SecuritySettings, self).__init__(**kwargs)
3962        self.device_admin_password = kwargs['device_admin_password']
3963
3964
3965class ServiceSpecification(msrest.serialization.Model):
3966    """Service specification.
3967
3968    :param metric_specifications: Metric specification as defined by shoebox.
3969    :type metric_specifications:
3970     list[~azure.mgmt.databoxedge.v2020_12_01.models.MetricSpecificationV1]
3971    """
3972
3973    _attribute_map = {
3974        'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecificationV1]'},
3975    }
3976
3977    def __init__(
3978        self,
3979        **kwargs
3980    ):
3981        super(ServiceSpecification, self).__init__(**kwargs)
3982        self.metric_specifications = kwargs.get('metric_specifications', None)
3983
3984
3985class Share(ARMBaseModel):
3986    """Represents a share on the  Data Box Edge/Gateway device.
3987
3988    Variables are only populated by the server, and will be ignored when sending a request.
3989
3990    All required parameters must be populated in order to send to Azure.
3991
3992    :ivar id: The path ID that uniquely identifies the object.
3993    :vartype id: str
3994    :ivar name: The object name.
3995    :vartype name: str
3996    :ivar type: The hierarchical type of the object.
3997    :vartype type: str
3998    :ivar system_data: Share on ASE device.
3999    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
4000    :param description: Description for the share.
4001    :type description: str
4002    :param share_status: Required. Current status of the share. Possible values include: "Offline",
4003     "Unknown", "OK", "Updating", "NeedsAttention".
4004    :type share_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.ShareStatus
4005    :param monitoring_status: Required. Current monitoring status of the share. Possible values
4006     include: "Enabled", "Disabled".
4007    :type monitoring_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.MonitoringStatus
4008    :param azure_container_info: Azure container mapping for the share.
4009    :type azure_container_info: ~azure.mgmt.databoxedge.v2020_12_01.models.AzureContainerInfo
4010    :param access_protocol: Required. Access protocol to be used by the share. Possible values
4011     include: "SMB", "NFS".
4012    :type access_protocol: str or ~azure.mgmt.databoxedge.v2020_12_01.models.ShareAccessProtocol
4013    :param user_access_rights: Mapping of users and corresponding access rights on the share
4014     (required for SMB protocol).
4015    :type user_access_rights: list[~azure.mgmt.databoxedge.v2020_12_01.models.UserAccessRight]
4016    :param client_access_rights: List of IP addresses and corresponding access rights on the
4017     share(required for NFS protocol).
4018    :type client_access_rights: list[~azure.mgmt.databoxedge.v2020_12_01.models.ClientAccessRight]
4019    :param refresh_details: Details of the refresh job on this share.
4020    :type refresh_details: ~azure.mgmt.databoxedge.v2020_12_01.models.RefreshDetails
4021    :ivar share_mappings: Share mount point to the role.
4022    :vartype share_mappings: list[~azure.mgmt.databoxedge.v2020_12_01.models.MountPointMap]
4023    :param data_policy: Data policy of the share. Possible values include: "Cloud", "Local".
4024    :type data_policy: str or ~azure.mgmt.databoxedge.v2020_12_01.models.DataPolicy
4025    """
4026
4027    _validation = {
4028        'id': {'readonly': True},
4029        'name': {'readonly': True},
4030        'type': {'readonly': True},
4031        'system_data': {'readonly': True},
4032        'share_status': {'required': True},
4033        'monitoring_status': {'required': True},
4034        'access_protocol': {'required': True},
4035        'share_mappings': {'readonly': True},
4036    }
4037
4038    _attribute_map = {
4039        'id': {'key': 'id', 'type': 'str'},
4040        'name': {'key': 'name', 'type': 'str'},
4041        'type': {'key': 'type', 'type': 'str'},
4042        'system_data': {'key': 'systemData', 'type': 'SystemData'},
4043        'description': {'key': 'properties.description', 'type': 'str'},
4044        'share_status': {'key': 'properties.shareStatus', 'type': 'str'},
4045        'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'},
4046        'azure_container_info': {'key': 'properties.azureContainerInfo', 'type': 'AzureContainerInfo'},
4047        'access_protocol': {'key': 'properties.accessProtocol', 'type': 'str'},
4048        'user_access_rights': {'key': 'properties.userAccessRights', 'type': '[UserAccessRight]'},
4049        'client_access_rights': {'key': 'properties.clientAccessRights', 'type': '[ClientAccessRight]'},
4050        'refresh_details': {'key': 'properties.refreshDetails', 'type': 'RefreshDetails'},
4051        'share_mappings': {'key': 'properties.shareMappings', 'type': '[MountPointMap]'},
4052        'data_policy': {'key': 'properties.dataPolicy', 'type': 'str'},
4053    }
4054
4055    def __init__(
4056        self,
4057        **kwargs
4058    ):
4059        super(Share, self).__init__(**kwargs)
4060        self.system_data = None
4061        self.description = kwargs.get('description', None)
4062        self.share_status = kwargs['share_status']
4063        self.monitoring_status = kwargs['monitoring_status']
4064        self.azure_container_info = kwargs.get('azure_container_info', None)
4065        self.access_protocol = kwargs['access_protocol']
4066        self.user_access_rights = kwargs.get('user_access_rights', None)
4067        self.client_access_rights = kwargs.get('client_access_rights', None)
4068        self.refresh_details = kwargs.get('refresh_details', None)
4069        self.share_mappings = None
4070        self.data_policy = kwargs.get('data_policy', None)
4071
4072
4073class ShareAccessRight(msrest.serialization.Model):
4074    """Specifies the mapping between this particular user and the type of access he has on shares on this device.
4075
4076    All required parameters must be populated in order to send to Azure.
4077
4078    :param share_id: Required. The share ID.
4079    :type share_id: str
4080    :param access_type: Required. Type of access to be allowed on the share for this user. Possible
4081     values include: "Change", "Read", "Custom".
4082    :type access_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.ShareAccessType
4083    """
4084
4085    _validation = {
4086        'share_id': {'required': True},
4087        'access_type': {'required': True},
4088    }
4089
4090    _attribute_map = {
4091        'share_id': {'key': 'shareId', 'type': 'str'},
4092        'access_type': {'key': 'accessType', 'type': 'str'},
4093    }
4094
4095    def __init__(
4096        self,
4097        **kwargs
4098    ):
4099        super(ShareAccessRight, self).__init__(**kwargs)
4100        self.share_id = kwargs['share_id']
4101        self.access_type = kwargs['access_type']
4102
4103
4104class ShareList(msrest.serialization.Model):
4105    """Collection of all the shares on the Data Box Edge/Gateway device.
4106
4107    Variables are only populated by the server, and will be ignored when sending a request.
4108
4109    :ivar value: The list of shares.
4110    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Share]
4111    :ivar next_link: Link to the next set of results.
4112    :vartype next_link: str
4113    """
4114
4115    _validation = {
4116        'value': {'readonly': True},
4117        'next_link': {'readonly': True},
4118    }
4119
4120    _attribute_map = {
4121        'value': {'key': 'value', 'type': '[Share]'},
4122        'next_link': {'key': 'nextLink', 'type': 'str'},
4123    }
4124
4125    def __init__(
4126        self,
4127        **kwargs
4128    ):
4129        super(ShareList, self).__init__(**kwargs)
4130        self.value = None
4131        self.next_link = None
4132
4133
4134class Sku(msrest.serialization.Model):
4135    """The SKU type.
4136
4137    :param name: SKU name. Possible values include: "Gateway", "Edge", "TEA_1Node",
4138     "TEA_1Node_UPS", "TEA_1Node_Heater", "TEA_1Node_UPS_Heater", "TEA_4Node_Heater",
4139     "TEA_4Node_UPS_Heater", "TMA", "TDC", "TCA_Small", "GPU", "TCA_Large", "EdgeP_Base",
4140     "EdgeP_High", "EdgePR_Base", "EdgePR_Base_UPS", "EdgeMR_Mini", "RCA_Small", "RCA_Large", "RDC".
4141    :type name: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SkuName
4142    :param tier: The SKU tier. This is based on the SKU name. Possible values include: "Standard".
4143    :type tier: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SkuTier
4144    """
4145
4146    _attribute_map = {
4147        'name': {'key': 'name', 'type': 'str'},
4148        'tier': {'key': 'tier', 'type': 'str'},
4149    }
4150
4151    def __init__(
4152        self,
4153        **kwargs
4154    ):
4155        super(Sku, self).__init__(**kwargs)
4156        self.name = kwargs.get('name', None)
4157        self.tier = kwargs.get('tier', None)
4158
4159
4160class SkuCapability(msrest.serialization.Model):
4161    """The metadata to describe the capability.
4162
4163    Variables are only populated by the server, and will be ignored when sending a request.
4164
4165    :ivar name: An invariant to describe the feature.
4166    :vartype name: str
4167    :ivar value: An invariant if the feature is measured by quantity.
4168    :vartype value: str
4169    """
4170
4171    _validation = {
4172        'name': {'readonly': True},
4173        'value': {'readonly': True},
4174    }
4175
4176    _attribute_map = {
4177        'name': {'key': 'name', 'type': 'str'},
4178        'value': {'key': 'value', 'type': 'str'},
4179    }
4180
4181    def __init__(
4182        self,
4183        **kwargs
4184    ):
4185        super(SkuCapability, self).__init__(**kwargs)
4186        self.name = None
4187        self.value = None
4188
4189
4190class SkuCost(msrest.serialization.Model):
4191    """The metadata for retrieving price info.
4192
4193    Variables are only populated by the server, and will be ignored when sending a request.
4194
4195    :ivar meter_id: Used for querying price from commerce.
4196    :vartype meter_id: str
4197    :ivar quantity: The cost quantity.
4198    :vartype quantity: long
4199    :ivar extended_unit: The extended unit.
4200    :vartype extended_unit: str
4201    """
4202
4203    _validation = {
4204        'meter_id': {'readonly': True},
4205        'quantity': {'readonly': True},
4206        'extended_unit': {'readonly': True},
4207    }
4208
4209    _attribute_map = {
4210        'meter_id': {'key': 'meterId', 'type': 'str'},
4211        'quantity': {'key': 'quantity', 'type': 'long'},
4212        'extended_unit': {'key': 'extendedUnit', 'type': 'str'},
4213    }
4214
4215    def __init__(
4216        self,
4217        **kwargs
4218    ):
4219        super(SkuCost, self).__init__(**kwargs)
4220        self.meter_id = None
4221        self.quantity = None
4222        self.extended_unit = None
4223
4224
4225class SkuInformation(msrest.serialization.Model):
4226    """Sku information.
4227
4228    Variables are only populated by the server, and will be ignored when sending a request.
4229
4230    :ivar name: The sku name.
4231    :vartype name: str
4232    :ivar tier: The sku tier.
4233    :vartype tier: str
4234    :ivar kind: The sku kind.
4235    :vartype kind: str
4236    :ivar family: The Sku family.
4237    :vartype family: str
4238    :ivar costs: The pricing info of the Sku.
4239    :vartype costs: list[~azure.mgmt.databoxedge.v2020_12_01.models.SkuCost]
4240    :ivar locations: The locations where Sku is available.
4241    :vartype locations: list[str]
4242    :ivar location_info: The locations where Sku is available with zones and sites info.
4243    :vartype location_info: list[~azure.mgmt.databoxedge.v2020_12_01.models.SkuLocationInfo]
4244    :ivar required_quota_ids: The required quotaIds for the sku to be available.
4245    :vartype required_quota_ids: list[str]
4246    :ivar required_features: The required features for the sku to be available.
4247    :vartype required_features: list[str]
4248    """
4249
4250    _validation = {
4251        'name': {'readonly': True},
4252        'tier': {'readonly': True},
4253        'kind': {'readonly': True},
4254        'family': {'readonly': True},
4255        'costs': {'readonly': True},
4256        'locations': {'readonly': True},
4257        'location_info': {'readonly': True},
4258        'required_quota_ids': {'readonly': True},
4259        'required_features': {'readonly': True},
4260    }
4261
4262    _attribute_map = {
4263        'name': {'key': 'name', 'type': 'str'},
4264        'tier': {'key': 'tier', 'type': 'str'},
4265        'kind': {'key': 'kind', 'type': 'str'},
4266        'family': {'key': 'family', 'type': 'str'},
4267        'costs': {'key': 'costs', 'type': '[SkuCost]'},
4268        'locations': {'key': 'locations', 'type': '[str]'},
4269        'location_info': {'key': 'locationInfo', 'type': '[SkuLocationInfo]'},
4270        'required_quota_ids': {'key': 'requiredQuotaIds', 'type': '[str]'},
4271        'required_features': {'key': 'requiredFeatures', 'type': '[str]'},
4272    }
4273
4274    def __init__(
4275        self,
4276        **kwargs
4277    ):
4278        super(SkuInformation, self).__init__(**kwargs)
4279        self.name = None
4280        self.tier = None
4281        self.kind = None
4282        self.family = None
4283        self.costs = None
4284        self.locations = None
4285        self.location_info = None
4286        self.required_quota_ids = None
4287        self.required_features = None
4288
4289
4290class SkuInformationList(msrest.serialization.Model):
4291    """List of SKU Information objects.
4292
4293    Variables are only populated by the server, and will be ignored when sending a request.
4294
4295    :ivar value: List of ResourceTypeSku objects.
4296    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.ResourceTypeSku]
4297    :ivar next_link: Links to the next set of results.
4298    :vartype next_link: str
4299    """
4300
4301    _validation = {
4302        'value': {'readonly': True},
4303        'next_link': {'readonly': True},
4304    }
4305
4306    _attribute_map = {
4307        'value': {'key': 'value', 'type': '[ResourceTypeSku]'},
4308        'next_link': {'key': 'nextLink', 'type': 'str'},
4309    }
4310
4311    def __init__(
4312        self,
4313        **kwargs
4314    ):
4315        super(SkuInformationList, self).__init__(**kwargs)
4316        self.value = None
4317        self.next_link = None
4318
4319
4320class SkuLocationInfo(msrest.serialization.Model):
4321    """The location info.
4322
4323    Variables are only populated by the server, and will be ignored when sending a request.
4324
4325    :ivar location: The location.
4326    :vartype location: str
4327    :ivar zones: The zones.
4328    :vartype zones: list[str]
4329    :ivar sites: The sites.
4330    :vartype sites: list[str]
4331    """
4332
4333    _validation = {
4334        'location': {'readonly': True},
4335        'zones': {'readonly': True},
4336        'sites': {'readonly': True},
4337    }
4338
4339    _attribute_map = {
4340        'location': {'key': 'location', 'type': 'str'},
4341        'zones': {'key': 'zones', 'type': '[str]'},
4342        'sites': {'key': 'sites', 'type': '[str]'},
4343    }
4344
4345    def __init__(
4346        self,
4347        **kwargs
4348    ):
4349        super(SkuLocationInfo, self).__init__(**kwargs)
4350        self.location = None
4351        self.zones = None
4352        self.sites = None
4353
4354
4355class StorageAccount(ARMBaseModel):
4356    """Represents a Storage Account on the  Data Box Edge/Gateway device.
4357
4358    Variables are only populated by the server, and will be ignored when sending a request.
4359
4360    All required parameters must be populated in order to send to Azure.
4361
4362    :ivar id: The path ID that uniquely identifies the object.
4363    :vartype id: str
4364    :ivar name: The object name.
4365    :vartype name: str
4366    :ivar type: The hierarchical type of the object.
4367    :vartype type: str
4368    :ivar system_data: StorageAccount object on ASE device.
4369    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
4370    :param description: Description for the storage Account.
4371    :type description: str
4372    :param storage_account_status: Current status of the storage account. Possible values include:
4373     "OK", "Offline", "Unknown", "Updating", "NeedsAttention".
4374    :type storage_account_status: str or
4375     ~azure.mgmt.databoxedge.v2020_12_01.models.StorageAccountStatus
4376    :param data_policy: Required. Data policy of the storage Account. Possible values include:
4377     "Cloud", "Local".
4378    :type data_policy: str or ~azure.mgmt.databoxedge.v2020_12_01.models.DataPolicy
4379    :param storage_account_credential_id: Storage Account Credential Id.
4380    :type storage_account_credential_id: str
4381    :ivar blob_endpoint: BlobEndpoint of Storage Account.
4382    :vartype blob_endpoint: str
4383    :ivar container_count: The Container Count. Present only for Storage Accounts with DataPolicy
4384     set to Cloud.
4385    :vartype container_count: int
4386    """
4387
4388    _validation = {
4389        'id': {'readonly': True},
4390        'name': {'readonly': True},
4391        'type': {'readonly': True},
4392        'system_data': {'readonly': True},
4393        'data_policy': {'required': True},
4394        'blob_endpoint': {'readonly': True},
4395        'container_count': {'readonly': True},
4396    }
4397
4398    _attribute_map = {
4399        'id': {'key': 'id', 'type': 'str'},
4400        'name': {'key': 'name', 'type': 'str'},
4401        'type': {'key': 'type', 'type': 'str'},
4402        'system_data': {'key': 'systemData', 'type': 'SystemData'},
4403        'description': {'key': 'properties.description', 'type': 'str'},
4404        'storage_account_status': {'key': 'properties.storageAccountStatus', 'type': 'str'},
4405        'data_policy': {'key': 'properties.dataPolicy', 'type': 'str'},
4406        'storage_account_credential_id': {'key': 'properties.storageAccountCredentialId', 'type': 'str'},
4407        'blob_endpoint': {'key': 'properties.blobEndpoint', 'type': 'str'},
4408        'container_count': {'key': 'properties.containerCount', 'type': 'int'},
4409    }
4410
4411    def __init__(
4412        self,
4413        **kwargs
4414    ):
4415        super(StorageAccount, self).__init__(**kwargs)
4416        self.system_data = None
4417        self.description = kwargs.get('description', None)
4418        self.storage_account_status = kwargs.get('storage_account_status', None)
4419        self.data_policy = kwargs['data_policy']
4420        self.storage_account_credential_id = kwargs.get('storage_account_credential_id', None)
4421        self.blob_endpoint = None
4422        self.container_count = None
4423
4424
4425class StorageAccountCredential(ARMBaseModel):
4426    """The storage account credential.
4427
4428    Variables are only populated by the server, and will be ignored when sending a request.
4429
4430    All required parameters must be populated in order to send to Azure.
4431
4432    :ivar id: The path ID that uniquely identifies the object.
4433    :vartype id: str
4434    :ivar name: The object name.
4435    :vartype name: str
4436    :ivar type: The hierarchical type of the object.
4437    :vartype type: str
4438    :ivar system_data: StorageAccountCredential object.
4439    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
4440    :param alias: Required. Alias for the storage account.
4441    :type alias: str
4442    :param user_name: Username for the storage account.
4443    :type user_name: str
4444    :param account_key: Encrypted storage key.
4445    :type account_key: ~azure.mgmt.databoxedge.v2020_12_01.models.AsymmetricEncryptedSecret
4446    :param connection_string: Connection string for the storage account. Use this string if
4447     username and account key are not specified.
4448    :type connection_string: str
4449    :param ssl_status: Required. Signifies whether SSL needs to be enabled or not. Possible values
4450     include: "Enabled", "Disabled".
4451    :type ssl_status: str or ~azure.mgmt.databoxedge.v2020_12_01.models.SSLStatus
4452    :param blob_domain_name: Blob end point for private clouds.
4453    :type blob_domain_name: str
4454    :param account_type: Required. Type of storage accessed on the storage account. Possible values
4455     include: "GeneralPurposeStorage", "BlobStorage".
4456    :type account_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AccountType
4457    :param storage_account_id: Id of the storage account.
4458    :type storage_account_id: str
4459    """
4460
4461    _validation = {
4462        'id': {'readonly': True},
4463        'name': {'readonly': True},
4464        'type': {'readonly': True},
4465        'system_data': {'readonly': True},
4466        'alias': {'required': True},
4467        'ssl_status': {'required': True},
4468        'account_type': {'required': True},
4469    }
4470
4471    _attribute_map = {
4472        'id': {'key': 'id', 'type': 'str'},
4473        'name': {'key': 'name', 'type': 'str'},
4474        'type': {'key': 'type', 'type': 'str'},
4475        'system_data': {'key': 'systemData', 'type': 'SystemData'},
4476        'alias': {'key': 'properties.alias', 'type': 'str'},
4477        'user_name': {'key': 'properties.userName', 'type': 'str'},
4478        'account_key': {'key': 'properties.accountKey', 'type': 'AsymmetricEncryptedSecret'},
4479        'connection_string': {'key': 'properties.connectionString', 'type': 'str'},
4480        'ssl_status': {'key': 'properties.sslStatus', 'type': 'str'},
4481        'blob_domain_name': {'key': 'properties.blobDomainName', 'type': 'str'},
4482        'account_type': {'key': 'properties.accountType', 'type': 'str'},
4483        'storage_account_id': {'key': 'properties.storageAccountId', 'type': 'str'},
4484    }
4485
4486    def __init__(
4487        self,
4488        **kwargs
4489    ):
4490        super(StorageAccountCredential, self).__init__(**kwargs)
4491        self.system_data = None
4492        self.alias = kwargs['alias']
4493        self.user_name = kwargs.get('user_name', None)
4494        self.account_key = kwargs.get('account_key', None)
4495        self.connection_string = kwargs.get('connection_string', None)
4496        self.ssl_status = kwargs['ssl_status']
4497        self.blob_domain_name = kwargs.get('blob_domain_name', None)
4498        self.account_type = kwargs['account_type']
4499        self.storage_account_id = kwargs.get('storage_account_id', None)
4500
4501
4502class StorageAccountCredentialList(msrest.serialization.Model):
4503    """The collection of storage account credentials.
4504
4505    Variables are only populated by the server, and will be ignored when sending a request.
4506
4507    :ivar value: The value.
4508    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.StorageAccountCredential]
4509    :ivar next_link: Link to the next set of results.
4510    :vartype next_link: str
4511    """
4512
4513    _validation = {
4514        'value': {'readonly': True},
4515        'next_link': {'readonly': True},
4516    }
4517
4518    _attribute_map = {
4519        'value': {'key': 'value', 'type': '[StorageAccountCredential]'},
4520        'next_link': {'key': 'nextLink', 'type': 'str'},
4521    }
4522
4523    def __init__(
4524        self,
4525        **kwargs
4526    ):
4527        super(StorageAccountCredentialList, self).__init__(**kwargs)
4528        self.value = None
4529        self.next_link = None
4530
4531
4532class StorageAccountList(msrest.serialization.Model):
4533    """Collection of all the Storage Accounts on the Data Box Edge/Gateway device.
4534
4535    Variables are only populated by the server, and will be ignored when sending a request.
4536
4537    :ivar value: The list of storageAccounts.
4538    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.StorageAccount]
4539    :ivar next_link: Link to the next set of results.
4540    :vartype next_link: str
4541    """
4542
4543    _validation = {
4544        'value': {'readonly': True},
4545        'next_link': {'readonly': True},
4546    }
4547
4548    _attribute_map = {
4549        'value': {'key': 'value', 'type': '[StorageAccount]'},
4550        'next_link': {'key': 'nextLink', 'type': 'str'},
4551    }
4552
4553    def __init__(
4554        self,
4555        **kwargs
4556    ):
4557        super(StorageAccountList, self).__init__(**kwargs)
4558        self.value = None
4559        self.next_link = None
4560
4561
4562class SubscriptionRegisteredFeatures(msrest.serialization.Model):
4563    """SubscriptionRegisteredFeatures.
4564
4565    :param name:
4566    :type name: str
4567    :param state:
4568    :type state: str
4569    """
4570
4571    _attribute_map = {
4572        'name': {'key': 'name', 'type': 'str'},
4573        'state': {'key': 'state', 'type': 'str'},
4574    }
4575
4576    def __init__(
4577        self,
4578        **kwargs
4579    ):
4580        super(SubscriptionRegisteredFeatures, self).__init__(**kwargs)
4581        self.name = kwargs.get('name', None)
4582        self.state = kwargs.get('state', None)
4583
4584
4585class SymmetricKey(msrest.serialization.Model):
4586    """Symmetric key for authentication.
4587
4588    :param connection_string: Connection string based on the symmetric key.
4589    :type connection_string: ~azure.mgmt.databoxedge.v2020_12_01.models.AsymmetricEncryptedSecret
4590    """
4591
4592    _attribute_map = {
4593        'connection_string': {'key': 'connectionString', 'type': 'AsymmetricEncryptedSecret'},
4594    }
4595
4596    def __init__(
4597        self,
4598        **kwargs
4599    ):
4600        super(SymmetricKey, self).__init__(**kwargs)
4601        self.connection_string = kwargs.get('connection_string', None)
4602
4603
4604class SystemData(msrest.serialization.Model):
4605    """Metadata pertaining to creation and last modification of the resource.
4606
4607    :param created_by: The identity that created the resource.
4608    :type created_by: str
4609    :param created_by_type: The type of identity that created the resource. Possible values
4610     include: "User", "Application", "ManagedIdentity", "Key".
4611    :type created_by_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.CreatedByType
4612    :param created_at: The timestamp of resource creation (UTC).
4613    :type created_at: ~datetime.datetime
4614    :param last_modified_by: The identity that last modified the resource.
4615    :type last_modified_by: str
4616    :param last_modified_by_type: The type of identity that last modified the resource. Possible
4617     values include: "User", "Application", "ManagedIdentity", "Key".
4618    :type last_modified_by_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.CreatedByType
4619    :param last_modified_at: The type of identity that last modified the resource.
4620    :type last_modified_at: ~datetime.datetime
4621    """
4622
4623    _attribute_map = {
4624        'created_by': {'key': 'createdBy', 'type': 'str'},
4625        'created_by_type': {'key': 'createdByType', 'type': 'str'},
4626        'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
4627        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
4628        'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
4629        'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
4630    }
4631
4632    def __init__(
4633        self,
4634        **kwargs
4635    ):
4636        super(SystemData, self).__init__(**kwargs)
4637        self.created_by = kwargs.get('created_by', None)
4638        self.created_by_type = kwargs.get('created_by_type', None)
4639        self.created_at = kwargs.get('created_at', None)
4640        self.last_modified_by = kwargs.get('last_modified_by', None)
4641        self.last_modified_by_type = kwargs.get('last_modified_by_type', None)
4642        self.last_modified_at = kwargs.get('last_modified_at', None)
4643
4644
4645class TrackingInfo(msrest.serialization.Model):
4646    """Tracking courier information.
4647
4648    :param serial_number: Serial number of the device being tracked.
4649    :type serial_number: str
4650    :param carrier_name: Name of the carrier used in the delivery.
4651    :type carrier_name: str
4652    :param tracking_id: Tracking ID of the shipment.
4653    :type tracking_id: str
4654    :param tracking_url: Tracking URL of the shipment.
4655    :type tracking_url: str
4656    """
4657
4658    _attribute_map = {
4659        'serial_number': {'key': 'serialNumber', 'type': 'str'},
4660        'carrier_name': {'key': 'carrierName', 'type': 'str'},
4661        'tracking_id': {'key': 'trackingId', 'type': 'str'},
4662        'tracking_url': {'key': 'trackingUrl', 'type': 'str'},
4663    }
4664
4665    def __init__(
4666        self,
4667        **kwargs
4668    ):
4669        super(TrackingInfo, self).__init__(**kwargs)
4670        self.serial_number = kwargs.get('serial_number', None)
4671        self.carrier_name = kwargs.get('carrier_name', None)
4672        self.tracking_id = kwargs.get('tracking_id', None)
4673        self.tracking_url = kwargs.get('tracking_url', None)
4674
4675
4676class TriggerList(msrest.serialization.Model):
4677    """Collection of all trigger on the data box edge device.
4678
4679    Variables are only populated by the server, and will be ignored when sending a request.
4680
4681    :ivar value: The list of triggers.
4682    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.Trigger]
4683    :ivar next_link: Link to the next set of results.
4684    :vartype next_link: str
4685    """
4686
4687    _validation = {
4688        'value': {'readonly': True},
4689        'next_link': {'readonly': True},
4690    }
4691
4692    _attribute_map = {
4693        'value': {'key': 'value', 'type': '[Trigger]'},
4694        'next_link': {'key': 'nextLink', 'type': 'str'},
4695    }
4696
4697    def __init__(
4698        self,
4699        **kwargs
4700    ):
4701        super(TriggerList, self).__init__(**kwargs)
4702        self.value = None
4703        self.next_link = None
4704
4705
4706class UpdateDownloadProgress(msrest.serialization.Model):
4707    """Details about the download progress of update.
4708
4709    Variables are only populated by the server, and will be ignored when sending a request.
4710
4711    :ivar download_phase: The download phase. Possible values include: "Unknown", "Initializing",
4712     "Downloading", "Verifying".
4713    :vartype download_phase: str or ~azure.mgmt.databoxedge.v2020_12_01.models.DownloadPhase
4714    :ivar percent_complete: Percentage of completion.
4715    :vartype percent_complete: int
4716    :ivar total_bytes_to_download: Total bytes to download.
4717    :vartype total_bytes_to_download: float
4718    :ivar total_bytes_downloaded: Total bytes downloaded.
4719    :vartype total_bytes_downloaded: float
4720    :ivar number_of_updates_to_download: Number of updates to download.
4721    :vartype number_of_updates_to_download: int
4722    :ivar number_of_updates_downloaded: Number of updates downloaded.
4723    :vartype number_of_updates_downloaded: int
4724    """
4725
4726    _validation = {
4727        'download_phase': {'readonly': True},
4728        'percent_complete': {'readonly': True},
4729        'total_bytes_to_download': {'readonly': True},
4730        'total_bytes_downloaded': {'readonly': True},
4731        'number_of_updates_to_download': {'readonly': True},
4732        'number_of_updates_downloaded': {'readonly': True},
4733    }
4734
4735    _attribute_map = {
4736        'download_phase': {'key': 'downloadPhase', 'type': 'str'},
4737        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
4738        'total_bytes_to_download': {'key': 'totalBytesToDownload', 'type': 'float'},
4739        'total_bytes_downloaded': {'key': 'totalBytesDownloaded', 'type': 'float'},
4740        'number_of_updates_to_download': {'key': 'numberOfUpdatesToDownload', 'type': 'int'},
4741        'number_of_updates_downloaded': {'key': 'numberOfUpdatesDownloaded', 'type': 'int'},
4742    }
4743
4744    def __init__(
4745        self,
4746        **kwargs
4747    ):
4748        super(UpdateDownloadProgress, self).__init__(**kwargs)
4749        self.download_phase = None
4750        self.percent_complete = None
4751        self.total_bytes_to_download = None
4752        self.total_bytes_downloaded = None
4753        self.number_of_updates_to_download = None
4754        self.number_of_updates_downloaded = None
4755
4756
4757class UpdateInstallProgress(msrest.serialization.Model):
4758    """Progress details during installation of updates.
4759
4760    Variables are only populated by the server, and will be ignored when sending a request.
4761
4762    :ivar percent_complete: Percentage completed.
4763    :vartype percent_complete: int
4764    :ivar number_of_updates_to_install: Number of updates to install.
4765    :vartype number_of_updates_to_install: int
4766    :ivar number_of_updates_installed: Number of updates installed.
4767    :vartype number_of_updates_installed: int
4768    """
4769
4770    _validation = {
4771        'percent_complete': {'readonly': True},
4772        'number_of_updates_to_install': {'readonly': True},
4773        'number_of_updates_installed': {'readonly': True},
4774    }
4775
4776    _attribute_map = {
4777        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
4778        'number_of_updates_to_install': {'key': 'numberOfUpdatesToInstall', 'type': 'int'},
4779        'number_of_updates_installed': {'key': 'numberOfUpdatesInstalled', 'type': 'int'},
4780    }
4781
4782    def __init__(
4783        self,
4784        **kwargs
4785    ):
4786        super(UpdateInstallProgress, self).__init__(**kwargs)
4787        self.percent_complete = None
4788        self.number_of_updates_to_install = None
4789        self.number_of_updates_installed = None
4790
4791
4792class UpdateSummary(ARMBaseModel):
4793    """Details about ongoing updates and availability of updates on the device.
4794
4795    Variables are only populated by the server, and will be ignored when sending a request.
4796
4797    :ivar id: The path ID that uniquely identifies the object.
4798    :vartype id: str
4799    :ivar name: The object name.
4800    :vartype name: str
4801    :ivar type: The hierarchical type of the object.
4802    :vartype type: str
4803    :param device_version_number: The current version of the device in format: 1.2.17312.13.",.
4804    :type device_version_number: str
4805    :param friendly_device_version_name: The current version of the device in text format.
4806    :type friendly_device_version_name: str
4807    :param device_last_scanned_date_time: The last time when a scan was done on the device.
4808    :type device_last_scanned_date_time: ~datetime.datetime
4809    :param last_completed_scan_job_date_time: The time when the last scan job was completed
4810     (success/cancelled/failed) on the appliance.
4811    :type last_completed_scan_job_date_time: ~datetime.datetime
4812    :ivar last_completed_download_job_date_time: The time when the last Download job was completed
4813     (success/cancelled/failed) on the appliance.
4814    :vartype last_completed_download_job_date_time: ~datetime.datetime
4815    :ivar last_completed_install_job_date_time: The time when the last Install job was completed
4816     (success/cancelled/failed) on the appliance.
4817    :vartype last_completed_install_job_date_time: ~datetime.datetime
4818    :ivar total_number_of_updates_available: The number of updates available for the current device
4819     version as per the last device scan.
4820    :vartype total_number_of_updates_available: int
4821    :ivar total_number_of_updates_pending_download: The total number of items pending download.
4822    :vartype total_number_of_updates_pending_download: int
4823    :ivar total_number_of_updates_pending_install: The total number of items pending install.
4824    :vartype total_number_of_updates_pending_install: int
4825    :ivar reboot_behavior: Indicates if updates are available and at least one of the updates needs
4826     a reboot. Possible values include: "NeverReboots", "RequiresReboot", "RequestReboot".
4827    :vartype reboot_behavior: str or
4828     ~azure.mgmt.databoxedge.v2020_12_01.models.InstallRebootBehavior
4829    :ivar ongoing_update_operation: The current update operation. Possible values include: "None",
4830     "Scan", "Download", "Install".
4831    :vartype ongoing_update_operation: str or
4832     ~azure.mgmt.databoxedge.v2020_12_01.models.UpdateOperation
4833    :ivar in_progress_download_job_id: The job ID of the download job in progress.
4834    :vartype in_progress_download_job_id: str
4835    :ivar in_progress_install_job_id: The job ID of the install job in progress.
4836    :vartype in_progress_install_job_id: str
4837    :ivar in_progress_download_job_started_date_time: The time when the currently running download
4838     (if any) started.
4839    :vartype in_progress_download_job_started_date_time: ~datetime.datetime
4840    :ivar in_progress_install_job_started_date_time: The time when the currently running install
4841     (if any) started.
4842    :vartype in_progress_install_job_started_date_time: ~datetime.datetime
4843    :ivar update_titles: The list of updates available for install.
4844    :vartype update_titles: list[str]
4845    :ivar total_update_size_in_bytes: The total size of updates available for download in bytes.
4846    :vartype total_update_size_in_bytes: float
4847    """
4848
4849    _validation = {
4850        'id': {'readonly': True},
4851        'name': {'readonly': True},
4852        'type': {'readonly': True},
4853        'last_completed_download_job_date_time': {'readonly': True},
4854        'last_completed_install_job_date_time': {'readonly': True},
4855        'total_number_of_updates_available': {'readonly': True},
4856        'total_number_of_updates_pending_download': {'readonly': True},
4857        'total_number_of_updates_pending_install': {'readonly': True},
4858        'reboot_behavior': {'readonly': True},
4859        'ongoing_update_operation': {'readonly': True},
4860        'in_progress_download_job_id': {'readonly': True},
4861        'in_progress_install_job_id': {'readonly': True},
4862        'in_progress_download_job_started_date_time': {'readonly': True},
4863        'in_progress_install_job_started_date_time': {'readonly': True},
4864        'update_titles': {'readonly': True},
4865        'total_update_size_in_bytes': {'readonly': True},
4866    }
4867
4868    _attribute_map = {
4869        'id': {'key': 'id', 'type': 'str'},
4870        'name': {'key': 'name', 'type': 'str'},
4871        'type': {'key': 'type', 'type': 'str'},
4872        'device_version_number': {'key': 'properties.deviceVersionNumber', 'type': 'str'},
4873        'friendly_device_version_name': {'key': 'properties.friendlyDeviceVersionName', 'type': 'str'},
4874        'device_last_scanned_date_time': {'key': 'properties.deviceLastScannedDateTime', 'type': 'iso-8601'},
4875        'last_completed_scan_job_date_time': {'key': 'properties.lastCompletedScanJobDateTime', 'type': 'iso-8601'},
4876        'last_completed_download_job_date_time': {'key': 'properties.lastCompletedDownloadJobDateTime', 'type': 'iso-8601'},
4877        'last_completed_install_job_date_time': {'key': 'properties.lastCompletedInstallJobDateTime', 'type': 'iso-8601'},
4878        'total_number_of_updates_available': {'key': 'properties.totalNumberOfUpdatesAvailable', 'type': 'int'},
4879        'total_number_of_updates_pending_download': {'key': 'properties.totalNumberOfUpdatesPendingDownload', 'type': 'int'},
4880        'total_number_of_updates_pending_install': {'key': 'properties.totalNumberOfUpdatesPendingInstall', 'type': 'int'},
4881        'reboot_behavior': {'key': 'properties.rebootBehavior', 'type': 'str'},
4882        'ongoing_update_operation': {'key': 'properties.ongoingUpdateOperation', 'type': 'str'},
4883        'in_progress_download_job_id': {'key': 'properties.inProgressDownloadJobId', 'type': 'str'},
4884        'in_progress_install_job_id': {'key': 'properties.inProgressInstallJobId', 'type': 'str'},
4885        'in_progress_download_job_started_date_time': {'key': 'properties.inProgressDownloadJobStartedDateTime', 'type': 'iso-8601'},
4886        'in_progress_install_job_started_date_time': {'key': 'properties.inProgressInstallJobStartedDateTime', 'type': 'iso-8601'},
4887        'update_titles': {'key': 'properties.updateTitles', 'type': '[str]'},
4888        'total_update_size_in_bytes': {'key': 'properties.totalUpdateSizeInBytes', 'type': 'float'},
4889    }
4890
4891    def __init__(
4892        self,
4893        **kwargs
4894    ):
4895        super(UpdateSummary, self).__init__(**kwargs)
4896        self.device_version_number = kwargs.get('device_version_number', None)
4897        self.friendly_device_version_name = kwargs.get('friendly_device_version_name', None)
4898        self.device_last_scanned_date_time = kwargs.get('device_last_scanned_date_time', None)
4899        self.last_completed_scan_job_date_time = kwargs.get('last_completed_scan_job_date_time', None)
4900        self.last_completed_download_job_date_time = None
4901        self.last_completed_install_job_date_time = None
4902        self.total_number_of_updates_available = None
4903        self.total_number_of_updates_pending_download = None
4904        self.total_number_of_updates_pending_install = None
4905        self.reboot_behavior = None
4906        self.ongoing_update_operation = None
4907        self.in_progress_download_job_id = None
4908        self.in_progress_install_job_id = None
4909        self.in_progress_download_job_started_date_time = None
4910        self.in_progress_install_job_started_date_time = None
4911        self.update_titles = None
4912        self.total_update_size_in_bytes = None
4913
4914
4915class UploadCertificateRequest(msrest.serialization.Model):
4916    """The upload certificate request.
4917
4918    All required parameters must be populated in order to send to Azure.
4919
4920    :param authentication_type: The authentication type. Possible values include: "Invalid",
4921     "AzureActiveDirectory".
4922    :type authentication_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AuthenticationType
4923    :param certificate: Required. The base64 encoded certificate raw data.
4924    :type certificate: str
4925    """
4926
4927    _validation = {
4928        'certificate': {'required': True},
4929    }
4930
4931    _attribute_map = {
4932        'authentication_type': {'key': 'properties.authenticationType', 'type': 'str'},
4933        'certificate': {'key': 'properties.certificate', 'type': 'str'},
4934    }
4935
4936    def __init__(
4937        self,
4938        **kwargs
4939    ):
4940        super(UploadCertificateRequest, self).__init__(**kwargs)
4941        self.authentication_type = kwargs.get('authentication_type', None)
4942        self.certificate = kwargs['certificate']
4943
4944
4945class UploadCertificateResponse(msrest.serialization.Model):
4946    """The upload registration certificate response.
4947
4948    Variables are only populated by the server, and will be ignored when sending a request.
4949
4950    :param auth_type: Specifies authentication type. Possible values include: "Invalid",
4951     "AzureActiveDirectory".
4952    :type auth_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.AuthenticationType
4953    :ivar resource_id: The resource ID of the Data Box Edge/Gateway device.
4954    :vartype resource_id: str
4955    :ivar aad_authority: Azure Active Directory tenant authority.
4956    :vartype aad_authority: str
4957    :ivar aad_tenant_id: Azure Active Directory tenant ID.
4958    :vartype aad_tenant_id: str
4959    :ivar service_principal_client_id: Azure Active Directory service principal client ID.
4960    :vartype service_principal_client_id: str
4961    :ivar service_principal_object_id: Azure Active Directory service principal object ID.
4962    :vartype service_principal_object_id: str
4963    :ivar azure_management_endpoint_audience: The azure management endpoint audience.
4964    :vartype azure_management_endpoint_audience: str
4965    :ivar aad_audience: Identifier of the target resource that is the recipient of the requested
4966     token.
4967    :vartype aad_audience: str
4968    """
4969
4970    _validation = {
4971        'resource_id': {'readonly': True},
4972        'aad_authority': {'readonly': True},
4973        'aad_tenant_id': {'readonly': True},
4974        'service_principal_client_id': {'readonly': True},
4975        'service_principal_object_id': {'readonly': True},
4976        'azure_management_endpoint_audience': {'readonly': True},
4977        'aad_audience': {'readonly': True},
4978    }
4979
4980    _attribute_map = {
4981        'auth_type': {'key': 'authType', 'type': 'str'},
4982        'resource_id': {'key': 'resourceId', 'type': 'str'},
4983        'aad_authority': {'key': 'aadAuthority', 'type': 'str'},
4984        'aad_tenant_id': {'key': 'aadTenantId', 'type': 'str'},
4985        'service_principal_client_id': {'key': 'servicePrincipalClientId', 'type': 'str'},
4986        'service_principal_object_id': {'key': 'servicePrincipalObjectId', 'type': 'str'},
4987        'azure_management_endpoint_audience': {'key': 'azureManagementEndpointAudience', 'type': 'str'},
4988        'aad_audience': {'key': 'aadAudience', 'type': 'str'},
4989    }
4990
4991    def __init__(
4992        self,
4993        **kwargs
4994    ):
4995        super(UploadCertificateResponse, self).__init__(**kwargs)
4996        self.auth_type = kwargs.get('auth_type', None)
4997        self.resource_id = None
4998        self.aad_authority = None
4999        self.aad_tenant_id = None
5000        self.service_principal_client_id = None
5001        self.service_principal_object_id = None
5002        self.azure_management_endpoint_audience = None
5003        self.aad_audience = None
5004
5005
5006class User(ARMBaseModel):
5007    """Represents a user who has access to one or more shares on the Data Box Edge/Gateway device.
5008
5009    Variables are only populated by the server, and will be ignored when sending a request.
5010
5011    All required parameters must be populated in order to send to Azure.
5012
5013    :ivar id: The path ID that uniquely identifies the object.
5014    :vartype id: str
5015    :ivar name: The object name.
5016    :vartype name: str
5017    :ivar type: The hierarchical type of the object.
5018    :vartype type: str
5019    :ivar system_data: User in DataBoxEdge Resource.
5020    :vartype system_data: ~azure.mgmt.databoxedge.v2020_12_01.models.SystemData
5021    :param encrypted_password: The password details.
5022    :type encrypted_password: ~azure.mgmt.databoxedge.v2020_12_01.models.AsymmetricEncryptedSecret
5023    :ivar share_access_rights: List of shares that the user has rights on. This field should not be
5024     specified during user creation.
5025    :vartype share_access_rights: list[~azure.mgmt.databoxedge.v2020_12_01.models.ShareAccessRight]
5026    :param user_type: Required. Type of the user. Possible values include: "Share",
5027     "LocalManagement", "ARM".
5028    :type user_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.UserType
5029    """
5030
5031    _validation = {
5032        'id': {'readonly': True},
5033        'name': {'readonly': True},
5034        'type': {'readonly': True},
5035        'system_data': {'readonly': True},
5036        'share_access_rights': {'readonly': True},
5037        'user_type': {'required': True},
5038    }
5039
5040    _attribute_map = {
5041        'id': {'key': 'id', 'type': 'str'},
5042        'name': {'key': 'name', 'type': 'str'},
5043        'type': {'key': 'type', 'type': 'str'},
5044        'system_data': {'key': 'systemData', 'type': 'SystemData'},
5045        'encrypted_password': {'key': 'properties.encryptedPassword', 'type': 'AsymmetricEncryptedSecret'},
5046        'share_access_rights': {'key': 'properties.shareAccessRights', 'type': '[ShareAccessRight]'},
5047        'user_type': {'key': 'properties.userType', 'type': 'str'},
5048    }
5049
5050    def __init__(
5051        self,
5052        **kwargs
5053    ):
5054        super(User, self).__init__(**kwargs)
5055        self.system_data = None
5056        self.encrypted_password = kwargs.get('encrypted_password', None)
5057        self.share_access_rights = None
5058        self.user_type = kwargs['user_type']
5059
5060
5061class UserAccessRight(msrest.serialization.Model):
5062    """The mapping between a particular user and the access type on the SMB share.
5063
5064    All required parameters must be populated in order to send to Azure.
5065
5066    :param user_id: Required. User ID (already existing in the device).
5067    :type user_id: str
5068    :param access_type: Required. Type of access to be allowed for the user. Possible values
5069     include: "Change", "Read", "Custom".
5070    :type access_type: str or ~azure.mgmt.databoxedge.v2020_12_01.models.ShareAccessType
5071    """
5072
5073    _validation = {
5074        'user_id': {'required': True},
5075        'access_type': {'required': True},
5076    }
5077
5078    _attribute_map = {
5079        'user_id': {'key': 'userId', 'type': 'str'},
5080        'access_type': {'key': 'accessType', 'type': 'str'},
5081    }
5082
5083    def __init__(
5084        self,
5085        **kwargs
5086    ):
5087        super(UserAccessRight, self).__init__(**kwargs)
5088        self.user_id = kwargs['user_id']
5089        self.access_type = kwargs['access_type']
5090
5091
5092class UserList(msrest.serialization.Model):
5093    """Collection of users.
5094
5095    Variables are only populated by the server, and will be ignored when sending a request.
5096
5097    :ivar value: The list of users.
5098    :vartype value: list[~azure.mgmt.databoxedge.v2020_12_01.models.User]
5099    :ivar next_link: Link to the next set of results.
5100    :vartype next_link: str
5101    """
5102
5103    _validation = {
5104        'value': {'readonly': True},
5105        'next_link': {'readonly': True},
5106    }
5107
5108    _attribute_map = {
5109        'value': {'key': 'value', 'type': '[User]'},
5110        'next_link': {'key': 'nextLink', 'type': 'str'},
5111    }
5112
5113    def __init__(
5114        self,
5115        **kwargs
5116    ):
5117        super(UserList, self).__init__(**kwargs)
5118        self.value = None
5119        self.next_link = None
5120