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 datetime
10from typing import Dict, List, Optional, Union
11
12import msrest.serialization
13
14from ._data_box_edge_management_client_enums import *
15
16
17class Address(msrest.serialization.Model):
18    """The shipping address of the customer.
19
20    All required parameters must be populated in order to send to Azure.
21
22    :param address_line1: Required. The address line1.
23    :type address_line1: str
24    :param address_line2: The address line2.
25    :type address_line2: str
26    :param address_line3: The address line3.
27    :type address_line3: str
28    :param postal_code: Required. The postal code.
29    :type postal_code: str
30    :param city: Required. The city name.
31    :type city: str
32    :param state: Required. The state name.
33    :type state: str
34    :param country: Required. The country name.
35    :type country: str
36    """
37
38    _validation = {
39        'address_line1': {'required': True},
40        'postal_code': {'required': True},
41        'city': {'required': True},
42        'state': {'required': True},
43        'country': {'required': True},
44    }
45
46    _attribute_map = {
47        'address_line1': {'key': 'addressLine1', 'type': 'str'},
48        'address_line2': {'key': 'addressLine2', 'type': 'str'},
49        'address_line3': {'key': 'addressLine3', 'type': 'str'},
50        'postal_code': {'key': 'postalCode', 'type': 'str'},
51        'city': {'key': 'city', 'type': 'str'},
52        'state': {'key': 'state', 'type': 'str'},
53        'country': {'key': 'country', 'type': 'str'},
54    }
55
56    def __init__(
57        self,
58        *,
59        address_line1: str,
60        postal_code: str,
61        city: str,
62        state: str,
63        country: str,
64        address_line2: Optional[str] = None,
65        address_line3: Optional[str] = None,
66        **kwargs
67    ):
68        super(Address, self).__init__(**kwargs)
69        self.address_line1 = address_line1
70        self.address_line2 = address_line2
71        self.address_line3 = address_line3
72        self.postal_code = postal_code
73        self.city = city
74        self.state = state
75        self.country = country
76
77
78class ARMBaseModel(msrest.serialization.Model):
79    """Represents the base class for all object models.
80
81    Variables are only populated by the server, and will be ignored when sending a request.
82
83    :ivar id: The path ID that uniquely identifies the object.
84    :vartype id: str
85    :ivar name: The object name.
86    :vartype name: str
87    :ivar type: The hierarchical type of the object.
88    :vartype type: str
89    """
90
91    _validation = {
92        'id': {'readonly': True},
93        'name': {'readonly': True},
94        'type': {'readonly': True},
95    }
96
97    _attribute_map = {
98        'id': {'key': 'id', 'type': 'str'},
99        'name': {'key': 'name', 'type': 'str'},
100        'type': {'key': 'type', 'type': 'str'},
101    }
102
103    def __init__(
104        self,
105        **kwargs
106    ):
107        super(ARMBaseModel, self).__init__(**kwargs)
108        self.id = None
109        self.name = None
110        self.type = None
111
112
113class Alert(ARMBaseModel):
114    """Alert on the data box edge/gateway device.
115
116    Variables are only populated by the server, and will be ignored when sending a request.
117
118    :ivar id: The path ID that uniquely identifies the object.
119    :vartype id: str
120    :ivar name: The object name.
121    :vartype name: str
122    :ivar type: The hierarchical type of the object.
123    :vartype type: str
124    :ivar title: Alert title.
125    :vartype title: str
126    :ivar alert_type: Alert type.
127    :vartype alert_type: str
128    :ivar appeared_at_date_time: UTC time when the alert appeared.
129    :vartype appeared_at_date_time: ~datetime.datetime
130    :ivar recommendation: Alert recommendation.
131    :vartype recommendation: str
132    :ivar severity: Severity of the alert. Possible values include: "Informational", "Warning",
133     "Critical".
134    :vartype severity: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AlertSeverity
135    :ivar error_details: Error details of the alert.
136    :vartype error_details: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AlertErrorDetails
137    :ivar detailed_information: Alert details.
138    :vartype detailed_information: dict[str, str]
139    """
140
141    _validation = {
142        'id': {'readonly': True},
143        'name': {'readonly': True},
144        'type': {'readonly': True},
145        'title': {'readonly': True},
146        'alert_type': {'readonly': True},
147        'appeared_at_date_time': {'readonly': True},
148        'recommendation': {'readonly': True},
149        'severity': {'readonly': True},
150        'error_details': {'readonly': True},
151        'detailed_information': {'readonly': True},
152    }
153
154    _attribute_map = {
155        'id': {'key': 'id', 'type': 'str'},
156        'name': {'key': 'name', 'type': 'str'},
157        'type': {'key': 'type', 'type': 'str'},
158        'title': {'key': 'properties.title', 'type': 'str'},
159        'alert_type': {'key': 'properties.alertType', 'type': 'str'},
160        'appeared_at_date_time': {'key': 'properties.appearedAtDateTime', 'type': 'iso-8601'},
161        'recommendation': {'key': 'properties.recommendation', 'type': 'str'},
162        'severity': {'key': 'properties.severity', 'type': 'str'},
163        'error_details': {'key': 'properties.errorDetails', 'type': 'AlertErrorDetails'},
164        'detailed_information': {'key': 'properties.detailedInformation', 'type': '{str}'},
165    }
166
167    def __init__(
168        self,
169        **kwargs
170    ):
171        super(Alert, self).__init__(**kwargs)
172        self.title = None
173        self.alert_type = None
174        self.appeared_at_date_time = None
175        self.recommendation = None
176        self.severity = None
177        self.error_details = None
178        self.detailed_information = None
179
180
181class AlertErrorDetails(msrest.serialization.Model):
182    """Error details for the alert.
183
184    Variables are only populated by the server, and will be ignored when sending a request.
185
186    :ivar error_code: Error code.
187    :vartype error_code: str
188    :ivar error_message: Error Message.
189    :vartype error_message: str
190    :ivar occurrences: Number of occurrences.
191    :vartype occurrences: int
192    """
193
194    _validation = {
195        'error_code': {'readonly': True},
196        'error_message': {'readonly': True},
197        'occurrences': {'readonly': True},
198    }
199
200    _attribute_map = {
201        'error_code': {'key': 'errorCode', 'type': 'str'},
202        'error_message': {'key': 'errorMessage', 'type': 'str'},
203        'occurrences': {'key': 'occurrences', 'type': 'int'},
204    }
205
206    def __init__(
207        self,
208        **kwargs
209    ):
210        super(AlertErrorDetails, self).__init__(**kwargs)
211        self.error_code = None
212        self.error_message = None
213        self.occurrences = None
214
215
216class AlertList(msrest.serialization.Model):
217    """Collection of alerts.
218
219    Variables are only populated by the server, and will be ignored when sending a request.
220
221    :ivar value: The value.
222    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.Alert]
223    :ivar next_link: Link to the next set of results.
224    :vartype next_link: str
225    """
226
227    _validation = {
228        'value': {'readonly': True},
229        'next_link': {'readonly': True},
230    }
231
232    _attribute_map = {
233        'value': {'key': 'value', 'type': '[Alert]'},
234        'next_link': {'key': 'nextLink', 'type': 'str'},
235    }
236
237    def __init__(
238        self,
239        **kwargs
240    ):
241        super(AlertList, self).__init__(**kwargs)
242        self.value = None
243        self.next_link = None
244
245
246class AsymmetricEncryptedSecret(msrest.serialization.Model):
247    """Represent the secrets intended for encryption with asymmetric key pair.
248
249    All required parameters must be populated in order to send to Azure.
250
251    :param value: Required. The value of the secret.
252    :type value: str
253    :param encryption_cert_thumbprint: Thumbprint certificate used to encrypt \"Value\". If the
254     value is unencrypted, it will be null.
255    :type encryption_cert_thumbprint: str
256    :param encryption_algorithm: Required. The algorithm used to encrypt "Value". Possible values
257     include: "None", "AES256", "RSAES_PKCS1_v_1_5".
258    :type encryption_algorithm: str or
259     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.EncryptionAlgorithm
260    """
261
262    _validation = {
263        'value': {'required': True},
264        'encryption_algorithm': {'required': True},
265    }
266
267    _attribute_map = {
268        'value': {'key': 'value', 'type': 'str'},
269        'encryption_cert_thumbprint': {'key': 'encryptionCertThumbprint', 'type': 'str'},
270        'encryption_algorithm': {'key': 'encryptionAlgorithm', 'type': 'str'},
271    }
272
273    def __init__(
274        self,
275        *,
276        value: str,
277        encryption_algorithm: Union[str, "EncryptionAlgorithm"],
278        encryption_cert_thumbprint: Optional[str] = None,
279        **kwargs
280    ):
281        super(AsymmetricEncryptedSecret, self).__init__(**kwargs)
282        self.value = value
283        self.encryption_cert_thumbprint = encryption_cert_thumbprint
284        self.encryption_algorithm = encryption_algorithm
285
286
287class Authentication(msrest.serialization.Model):
288    """Authentication mechanism for IoT devices.
289
290    :param symmetric_key: Symmetric key for authentication.
291    :type symmetric_key: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SymmetricKey
292    """
293
294    _attribute_map = {
295        'symmetric_key': {'key': 'symmetricKey', 'type': 'SymmetricKey'},
296    }
297
298    def __init__(
299        self,
300        *,
301        symmetric_key: Optional["SymmetricKey"] = None,
302        **kwargs
303    ):
304        super(Authentication, self).__init__(**kwargs)
305        self.symmetric_key = symmetric_key
306
307
308class AzureContainerInfo(msrest.serialization.Model):
309    """Azure container mapping of the endpoint.
310
311    All required parameters must be populated in order to send to Azure.
312
313    :param storage_account_credential_id: Required. ID of the storage account credential used to
314     access storage.
315    :type storage_account_credential_id: str
316    :param container_name: Required. Container name (Based on the data format specified, this
317     represents the name of Azure Files/Page blob/Block blob).
318    :type container_name: str
319    :param data_format: Required. Storage format used for the file represented by the share.
320     Possible values include: "BlockBlob", "PageBlob", "AzureFile".
321    :type data_format: str or
322     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AzureContainerDataFormat
323    """
324
325    _validation = {
326        'storage_account_credential_id': {'required': True},
327        'container_name': {'required': True},
328        'data_format': {'required': True},
329    }
330
331    _attribute_map = {
332        'storage_account_credential_id': {'key': 'storageAccountCredentialId', 'type': 'str'},
333        'container_name': {'key': 'containerName', 'type': 'str'},
334        'data_format': {'key': 'dataFormat', 'type': 'str'},
335    }
336
337    def __init__(
338        self,
339        *,
340        storage_account_credential_id: str,
341        container_name: str,
342        data_format: Union[str, "AzureContainerDataFormat"],
343        **kwargs
344    ):
345        super(AzureContainerInfo, self).__init__(**kwargs)
346        self.storage_account_credential_id = storage_account_credential_id
347        self.container_name = container_name
348        self.data_format = data_format
349
350
351class BandwidthSchedule(ARMBaseModel):
352    """The bandwidth schedule details.
353
354    Variables are only populated by the server, and will be ignored when sending a request.
355
356    All required parameters must be populated in order to send to Azure.
357
358    :ivar id: The path ID that uniquely identifies the object.
359    :vartype id: str
360    :ivar name: The object name.
361    :vartype name: str
362    :ivar type: The hierarchical type of the object.
363    :vartype type: str
364    :param start: Required. The start time of the schedule in UTC.
365    :type start: str
366    :param stop: Required. The stop time of the schedule in UTC.
367    :type stop: str
368    :param rate_in_mbps: Required. The bandwidth rate in Mbps.
369    :type rate_in_mbps: int
370    :param days: Required. The days of the week when this schedule is applicable.
371    :type days: list[str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.DayOfWeek]
372    """
373
374    _validation = {
375        'id': {'readonly': True},
376        'name': {'readonly': True},
377        'type': {'readonly': True},
378        'start': {'required': True},
379        'stop': {'required': True},
380        'rate_in_mbps': {'required': True},
381        'days': {'required': True},
382    }
383
384    _attribute_map = {
385        'id': {'key': 'id', 'type': 'str'},
386        'name': {'key': 'name', 'type': 'str'},
387        'type': {'key': 'type', 'type': 'str'},
388        'start': {'key': 'properties.start', 'type': 'str'},
389        'stop': {'key': 'properties.stop', 'type': 'str'},
390        'rate_in_mbps': {'key': 'properties.rateInMbps', 'type': 'int'},
391        'days': {'key': 'properties.days', 'type': '[str]'},
392    }
393
394    def __init__(
395        self,
396        *,
397        start: str,
398        stop: str,
399        rate_in_mbps: int,
400        days: List[Union[str, "DayOfWeek"]],
401        **kwargs
402    ):
403        super(BandwidthSchedule, self).__init__(**kwargs)
404        self.start = start
405        self.stop = stop
406        self.rate_in_mbps = rate_in_mbps
407        self.days = days
408
409
410class BandwidthSchedulesList(msrest.serialization.Model):
411    """The collection of bandwidth schedules.
412
413    Variables are only populated by the server, and will be ignored when sending a request.
414
415    :ivar value: The list of bandwidth schedules.
416    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.BandwidthSchedule]
417    :ivar next_link: Link to the next set of results.
418    :vartype next_link: str
419    """
420
421    _validation = {
422        'value': {'readonly': True},
423        'next_link': {'readonly': True},
424    }
425
426    _attribute_map = {
427        'value': {'key': 'value', 'type': '[BandwidthSchedule]'},
428        'next_link': {'key': 'nextLink', 'type': 'str'},
429    }
430
431    def __init__(
432        self,
433        **kwargs
434    ):
435        super(BandwidthSchedulesList, self).__init__(**kwargs)
436        self.value = None
437        self.next_link = None
438
439
440class ClientAccessRight(msrest.serialization.Model):
441    """The mapping between a particular client IP and the type of access client has on the NFS share.
442
443    All required parameters must be populated in order to send to Azure.
444
445    :param client: Required. IP of the client.
446    :type client: str
447    :param access_permission: Required. Type of access to be allowed for the client. Possible
448     values include: "NoAccess", "ReadOnly", "ReadWrite".
449    :type access_permission: str or
450     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ClientPermissionType
451    """
452
453    _validation = {
454        'client': {'required': True},
455        'access_permission': {'required': True},
456    }
457
458    _attribute_map = {
459        'client': {'key': 'client', 'type': 'str'},
460        'access_permission': {'key': 'accessPermission', 'type': 'str'},
461    }
462
463    def __init__(
464        self,
465        *,
466        client: str,
467        access_permission: Union[str, "ClientPermissionType"],
468        **kwargs
469    ):
470        super(ClientAccessRight, self).__init__(**kwargs)
471        self.client = client
472        self.access_permission = access_permission
473
474
475class CloudErrorBody(msrest.serialization.Model):
476    """An error response from the service.
477
478    :param code: An identifier for the error. Codes are invariant and are intended to be consumed
479     programmatically.
480    :type code: str
481    :param message: A message describing the error, intended to be suitable for display in a user
482     interface.
483    :type message: str
484    :param details: A list of additional details about the error.
485    :type details: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.CloudErrorBody]
486    """
487
488    _attribute_map = {
489        'code': {'key': 'code', 'type': 'str'},
490        'message': {'key': 'message', 'type': 'str'},
491        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
492    }
493
494    def __init__(
495        self,
496        *,
497        code: Optional[str] = None,
498        message: Optional[str] = None,
499        details: Optional[List["CloudErrorBody"]] = None,
500        **kwargs
501    ):
502        super(CloudErrorBody, self).__init__(**kwargs)
503        self.code = code
504        self.message = message
505        self.details = details
506
507
508class ContactDetails(msrest.serialization.Model):
509    """Contains all the contact details of the customer.
510
511    All required parameters must be populated in order to send to Azure.
512
513    :param contact_person: Required. The contact person name.
514    :type contact_person: str
515    :param company_name: Required. The name of the company.
516    :type company_name: str
517    :param phone: Required. The phone number.
518    :type phone: str
519    :param email_list: Required. The email list.
520    :type email_list: list[str]
521    """
522
523    _validation = {
524        'contact_person': {'required': True},
525        'company_name': {'required': True},
526        'phone': {'required': True},
527        'email_list': {'required': True},
528    }
529
530    _attribute_map = {
531        'contact_person': {'key': 'contactPerson', 'type': 'str'},
532        'company_name': {'key': 'companyName', 'type': 'str'},
533        'phone': {'key': 'phone', 'type': 'str'},
534        'email_list': {'key': 'emailList', 'type': '[str]'},
535    }
536
537    def __init__(
538        self,
539        *,
540        contact_person: str,
541        company_name: str,
542        phone: str,
543        email_list: List[str],
544        **kwargs
545    ):
546        super(ContactDetails, self).__init__(**kwargs)
547        self.contact_person = contact_person
548        self.company_name = company_name
549        self.phone = phone
550        self.email_list = email_list
551
552
553class Container(ARMBaseModel):
554    """Represents a container on the  Data Box Edge/Gateway device.
555
556    Variables are only populated by the server, and will be ignored when sending a request.
557
558    All required parameters must be populated in order to send to Azure.
559
560    :ivar id: The path ID that uniquely identifies the object.
561    :vartype id: str
562    :ivar name: The object name.
563    :vartype name: str
564    :ivar type: The hierarchical type of the object.
565    :vartype type: str
566    :ivar container_status: Current status of the container. Possible values include: "OK",
567     "Offline", "Unknown", "Updating", "NeedsAttention".
568    :vartype container_status: str or
569     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ContainerStatus
570    :param data_format: Required. DataFormat for Container. Possible values include: "BlockBlob",
571     "PageBlob", "AzureFile".
572    :type data_format: str or
573     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AzureContainerDataFormat
574    :ivar refresh_details: Details of the refresh job on this container.
575    :vartype refresh_details: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RefreshDetails
576    :ivar created_date_time: The UTC time when container got created.
577    :vartype created_date_time: ~datetime.datetime
578    """
579
580    _validation = {
581        'id': {'readonly': True},
582        'name': {'readonly': True},
583        'type': {'readonly': True},
584        'container_status': {'readonly': True},
585        'data_format': {'required': True},
586        'refresh_details': {'readonly': True},
587        'created_date_time': {'readonly': True},
588    }
589
590    _attribute_map = {
591        'id': {'key': 'id', 'type': 'str'},
592        'name': {'key': 'name', 'type': 'str'},
593        'type': {'key': 'type', 'type': 'str'},
594        'container_status': {'key': 'properties.containerStatus', 'type': 'str'},
595        'data_format': {'key': 'properties.dataFormat', 'type': 'str'},
596        'refresh_details': {'key': 'properties.refreshDetails', 'type': 'RefreshDetails'},
597        'created_date_time': {'key': 'properties.createdDateTime', 'type': 'iso-8601'},
598    }
599
600    def __init__(
601        self,
602        *,
603        data_format: Union[str, "AzureContainerDataFormat"],
604        **kwargs
605    ):
606        super(Container, self).__init__(**kwargs)
607        self.container_status = None
608        self.data_format = data_format
609        self.refresh_details = None
610        self.created_date_time = None
611
612
613class ContainerList(msrest.serialization.Model):
614    """Collection of all the containers on the Data Box Edge/Gateway device.
615
616    Variables are only populated by the server, and will be ignored when sending a request.
617
618    :ivar value: The list of containers.
619    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.Container]
620    :ivar next_link: Link to the next set of results.
621    :vartype next_link: str
622    """
623
624    _validation = {
625        'value': {'readonly': True},
626        'next_link': {'readonly': True},
627    }
628
629    _attribute_map = {
630        'value': {'key': 'value', 'type': '[Container]'},
631        'next_link': {'key': 'nextLink', 'type': 'str'},
632    }
633
634    def __init__(
635        self,
636        **kwargs
637    ):
638        super(ContainerList, self).__init__(**kwargs)
639        self.value = None
640        self.next_link = None
641
642
643class DataBoxEdgeDevice(ARMBaseModel):
644    """The Data Box Edge/Gateway device.
645
646    Variables are only populated by the server, and will be ignored when sending a request.
647
648    All required parameters must be populated in order to send to Azure.
649
650    :ivar id: The path ID that uniquely identifies the object.
651    :vartype id: str
652    :ivar name: The object name.
653    :vartype name: str
654    :ivar type: The hierarchical type of the object.
655    :vartype type: str
656    :param location: Required. The location of the device. This is a supported and registered Azure
657     geographical region (for example, West US, East US, or Southeast Asia). The geographical region
658     of a device cannot be changed once it is created, but if an identical geographical region is
659     specified on update, the request will succeed.
660    :type location: str
661    :param tags: A set of tags. The list of tags that describe the device. These tags can be used
662     to view and group this device (across resource groups).
663    :type tags: dict[str, str]
664    :param sku: The SKU type.
665    :type sku: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.Sku
666    :param etag: The etag for the devices.
667    :type etag: str
668    :param data_box_edge_device_status: The status of the Data Box Edge/Gateway device. Possible
669     values include: "ReadyToSetup", "Online", "Offline", "NeedsAttention", "Disconnected",
670     "PartiallyDisconnected", "Maintenance".
671    :type data_box_edge_device_status: str or
672     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.DataBoxEdgeDeviceStatus
673    :ivar serial_number: The Serial Number of Data Box Edge/Gateway device.
674    :vartype serial_number: str
675    :param description: The Description of the Data Box Edge/Gateway device.
676    :type description: str
677    :param model_description: The description of the Data Box Edge/Gateway device model.
678    :type model_description: str
679    :ivar device_type: The type of the Data Box Edge/Gateway device. Possible values include:
680     "DataBoxEdgeDevice".
681    :vartype device_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.DeviceType
682    :param friendly_name: The Data Box Edge/Gateway device name.
683    :type friendly_name: str
684    :ivar culture: The Data Box Edge/Gateway device culture.
685    :vartype culture: str
686    :ivar device_model: The Data Box Edge/Gateway device model.
687    :vartype device_model: str
688    :ivar device_software_version: The Data Box Edge/Gateway device software version.
689    :vartype device_software_version: str
690    :ivar device_local_capacity: The Data Box Edge/Gateway device local capacity in MB.
691    :vartype device_local_capacity: long
692    :ivar time_zone: The Data Box Edge/Gateway device timezone.
693    :vartype time_zone: str
694    :ivar device_hcs_version: The device software version number of the device (eg: 1.2.18105.6).
695    :vartype device_hcs_version: str
696    :ivar configured_role_types: Type of compute roles configured.
697    :vartype configured_role_types: list[str or
698     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RoleTypes]
699    :ivar node_count: The number of nodes in the cluster.
700    :vartype node_count: int
701    """
702
703    _validation = {
704        'id': {'readonly': True},
705        'name': {'readonly': True},
706        'type': {'readonly': True},
707        'location': {'required': True},
708        'serial_number': {'readonly': True},
709        'device_type': {'readonly': True},
710        'culture': {'readonly': True},
711        'device_model': {'readonly': True},
712        'device_software_version': {'readonly': True},
713        'device_local_capacity': {'readonly': True},
714        'time_zone': {'readonly': True},
715        'device_hcs_version': {'readonly': True},
716        'configured_role_types': {'readonly': True},
717        'node_count': {'readonly': True},
718    }
719
720    _attribute_map = {
721        'id': {'key': 'id', 'type': 'str'},
722        'name': {'key': 'name', 'type': 'str'},
723        'type': {'key': 'type', 'type': 'str'},
724        'location': {'key': 'location', 'type': 'str'},
725        'tags': {'key': 'tags', 'type': '{str}'},
726        'sku': {'key': 'sku', 'type': 'Sku'},
727        'etag': {'key': 'etag', 'type': 'str'},
728        'data_box_edge_device_status': {'key': 'properties.dataBoxEdgeDeviceStatus', 'type': 'str'},
729        'serial_number': {'key': 'properties.serialNumber', 'type': 'str'},
730        'description': {'key': 'properties.description', 'type': 'str'},
731        'model_description': {'key': 'properties.modelDescription', 'type': 'str'},
732        'device_type': {'key': 'properties.deviceType', 'type': 'str'},
733        'friendly_name': {'key': 'properties.friendlyName', 'type': 'str'},
734        'culture': {'key': 'properties.culture', 'type': 'str'},
735        'device_model': {'key': 'properties.deviceModel', 'type': 'str'},
736        'device_software_version': {'key': 'properties.deviceSoftwareVersion', 'type': 'str'},
737        'device_local_capacity': {'key': 'properties.deviceLocalCapacity', 'type': 'long'},
738        'time_zone': {'key': 'properties.timeZone', 'type': 'str'},
739        'device_hcs_version': {'key': 'properties.deviceHcsVersion', 'type': 'str'},
740        'configured_role_types': {'key': 'properties.configuredRoleTypes', 'type': '[str]'},
741        'node_count': {'key': 'properties.nodeCount', 'type': 'int'},
742    }
743
744    def __init__(
745        self,
746        *,
747        location: str,
748        tags: Optional[Dict[str, str]] = None,
749        sku: Optional["Sku"] = None,
750        etag: Optional[str] = None,
751        data_box_edge_device_status: Optional[Union[str, "DataBoxEdgeDeviceStatus"]] = None,
752        description: Optional[str] = None,
753        model_description: Optional[str] = None,
754        friendly_name: Optional[str] = None,
755        **kwargs
756    ):
757        super(DataBoxEdgeDevice, self).__init__(**kwargs)
758        self.location = location
759        self.tags = tags
760        self.sku = sku
761        self.etag = etag
762        self.data_box_edge_device_status = data_box_edge_device_status
763        self.serial_number = None
764        self.description = description
765        self.model_description = model_description
766        self.device_type = None
767        self.friendly_name = friendly_name
768        self.culture = None
769        self.device_model = None
770        self.device_software_version = None
771        self.device_local_capacity = None
772        self.time_zone = None
773        self.device_hcs_version = None
774        self.configured_role_types = None
775        self.node_count = None
776
777
778class DataBoxEdgeDeviceExtendedInfo(ARMBaseModel):
779    """The extended Info of the Data Box Edge/Gateway device.
780
781    Variables are only populated by the server, and will be ignored when sending a request.
782
783    :ivar id: The path ID that uniquely identifies the object.
784    :vartype id: str
785    :ivar name: The object name.
786    :vartype name: str
787    :ivar type: The hierarchical type of the object.
788    :vartype type: str
789    :param encryption_key_thumbprint: The digital signature of encrypted certificate.
790    :type encryption_key_thumbprint: str
791    :param encryption_key: The public part of the encryption certificate. Client uses this to
792     encrypt any secret.
793    :type encryption_key: str
794    :ivar resource_key: The Resource ID of the Resource.
795    :vartype resource_key: str
796    """
797
798    _validation = {
799        'id': {'readonly': True},
800        'name': {'readonly': True},
801        'type': {'readonly': True},
802        'resource_key': {'readonly': True},
803    }
804
805    _attribute_map = {
806        'id': {'key': 'id', 'type': 'str'},
807        'name': {'key': 'name', 'type': 'str'},
808        'type': {'key': 'type', 'type': 'str'},
809        'encryption_key_thumbprint': {'key': 'properties.encryptionKeyThumbprint', 'type': 'str'},
810        'encryption_key': {'key': 'properties.encryptionKey', 'type': 'str'},
811        'resource_key': {'key': 'properties.resourceKey', 'type': 'str'},
812    }
813
814    def __init__(
815        self,
816        *,
817        encryption_key_thumbprint: Optional[str] = None,
818        encryption_key: Optional[str] = None,
819        **kwargs
820    ):
821        super(DataBoxEdgeDeviceExtendedInfo, self).__init__(**kwargs)
822        self.encryption_key_thumbprint = encryption_key_thumbprint
823        self.encryption_key = encryption_key
824        self.resource_key = None
825
826
827class DataBoxEdgeDeviceList(msrest.serialization.Model):
828    """The collection of Data Box Edge/Gateway devices.
829
830    Variables are only populated by the server, and will be ignored when sending a request.
831
832    :ivar value: The list of Data Box Edge/Gateway devices.
833    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.DataBoxEdgeDevice]
834    :ivar next_link: Link to the next set of results.
835    :vartype next_link: str
836    """
837
838    _validation = {
839        'value': {'readonly': True},
840        'next_link': {'readonly': True},
841    }
842
843    _attribute_map = {
844        'value': {'key': 'value', 'type': '[DataBoxEdgeDevice]'},
845        'next_link': {'key': 'nextLink', 'type': 'str'},
846    }
847
848    def __init__(
849        self,
850        **kwargs
851    ):
852        super(DataBoxEdgeDeviceList, self).__init__(**kwargs)
853        self.value = None
854        self.next_link = None
855
856
857class DataBoxEdgeDevicePatch(msrest.serialization.Model):
858    """The Data Box Edge/Gateway device patch.
859
860    :param tags: A set of tags. The tags attached to the Data Box Edge/Gateway resource.
861    :type tags: dict[str, str]
862    """
863
864    _attribute_map = {
865        'tags': {'key': 'tags', 'type': '{str}'},
866    }
867
868    def __init__(
869        self,
870        *,
871        tags: Optional[Dict[str, str]] = None,
872        **kwargs
873    ):
874        super(DataBoxEdgeDevicePatch, self).__init__(**kwargs)
875        self.tags = tags
876
877
878class DataBoxEdgeSku(msrest.serialization.Model):
879    """The Sku information.
880
881    Variables are only populated by the server, and will be ignored when sending a request.
882
883    :ivar resource_type: The type of the resource.
884    :vartype resource_type: str
885    :ivar name: The Sku name. Possible values include: "Gateway", "Edge", "TEA_1Node",
886     "TEA_1Node_UPS", "TEA_1Node_Heater", "TEA_1Node_UPS_Heater", "TEA_4Node_Heater",
887     "TEA_4Node_UPS_Heater", "TMA", "TDC", "TCA_Large", "TCA_Small", "GPU".
888    :vartype name: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuName
889    :ivar kind: The Sku kind.
890    :vartype kind: str
891    :ivar tier: The Sku tier. Possible values include: "Standard".
892    :vartype tier: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuTier
893    :ivar size: The Sku kind.
894    :vartype size: str
895    :ivar family: The Sku family.
896    :vartype family: str
897    :ivar locations: Availability of the Sku for the region.
898    :vartype locations: list[str]
899    :ivar api_versions: The API versions in which Sku is available.
900    :vartype api_versions: list[str]
901    :ivar location_info: Availability of the Sku for the location/zone/site.
902    :vartype location_info:
903     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuLocationInfo]
904    :ivar costs: The pricing info of the Sku.
905    :vartype costs: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuCost]
906    :ivar restrictions: Restriction info of the SKU.
907    :vartype restrictions: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuRestriction]
908    :ivar signup_option: Can the SKU be signed up.. Possible values include: "None", "Available".
909    :vartype signup_option: str or
910     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuSignupOption
911    :ivar version: Sku version. Possible values include: "Stable", "Preview".
912    :vartype version: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuVersion
913    :ivar availability: Is SKU available. Possible values include: "Available", "Unavailable".
914    :vartype availability: str or
915     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuAvailability
916    """
917
918    _validation = {
919        'resource_type': {'readonly': True},
920        'name': {'readonly': True},
921        'kind': {'readonly': True},
922        'tier': {'readonly': True},
923        'size': {'readonly': True},
924        'family': {'readonly': True},
925        'locations': {'readonly': True},
926        'api_versions': {'readonly': True},
927        'location_info': {'readonly': True},
928        'costs': {'readonly': True},
929        'restrictions': {'readonly': True},
930        'signup_option': {'readonly': True},
931        'version': {'readonly': True},
932        'availability': {'readonly': True},
933    }
934
935    _attribute_map = {
936        'resource_type': {'key': 'resourceType', 'type': 'str'},
937        'name': {'key': 'name', 'type': 'str'},
938        'kind': {'key': 'kind', 'type': 'str'},
939        'tier': {'key': 'tier', 'type': 'str'},
940        'size': {'key': 'size', 'type': 'str'},
941        'family': {'key': 'family', 'type': 'str'},
942        'locations': {'key': 'locations', 'type': '[str]'},
943        'api_versions': {'key': 'apiVersions', 'type': '[str]'},
944        'location_info': {'key': 'locationInfo', 'type': '[SkuLocationInfo]'},
945        'costs': {'key': 'costs', 'type': '[SkuCost]'},
946        'restrictions': {'key': 'restrictions', 'type': '[SkuRestriction]'},
947        'signup_option': {'key': 'signupOption', 'type': 'str'},
948        'version': {'key': 'version', 'type': 'str'},
949        'availability': {'key': 'availability', 'type': 'str'},
950    }
951
952    def __init__(
953        self,
954        **kwargs
955    ):
956        super(DataBoxEdgeSku, self).__init__(**kwargs)
957        self.resource_type = None
958        self.name = None
959        self.kind = None
960        self.tier = None
961        self.size = None
962        self.family = None
963        self.locations = None
964        self.api_versions = None
965        self.location_info = None
966        self.costs = None
967        self.restrictions = None
968        self.signup_option = None
969        self.version = None
970        self.availability = None
971
972
973class DataBoxEdgeSkuList(msrest.serialization.Model):
974    """List of SKU Information objects.
975
976    Variables are only populated by the server, and will be ignored when sending a request.
977
978    :ivar value: List of ResourceType Sku.
979    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.DataBoxEdgeSku]
980    :ivar next_link: Links to the next set of results.
981    :vartype next_link: str
982    """
983
984    _validation = {
985        'value': {'readonly': True},
986        'next_link': {'readonly': True},
987    }
988
989    _attribute_map = {
990        'value': {'key': 'value', 'type': '[DataBoxEdgeSku]'},
991        'next_link': {'key': 'nextLink', 'type': 'str'},
992    }
993
994    def __init__(
995        self,
996        **kwargs
997    ):
998        super(DataBoxEdgeSkuList, self).__init__(**kwargs)
999        self.value = None
1000        self.next_link = None
1001
1002
1003class Trigger(ARMBaseModel):
1004    """Trigger details.
1005
1006    You probably want to use the sub-classes and not this class directly. Known
1007    sub-classes are: FileEventTrigger, PeriodicTimerEventTrigger.
1008
1009    Variables are only populated by the server, and will be ignored when sending a request.
1010
1011    All required parameters must be populated in order to send to Azure.
1012
1013    :ivar id: The path ID that uniquely identifies the object.
1014    :vartype id: str
1015    :ivar name: The object name.
1016    :vartype name: str
1017    :ivar type: The hierarchical type of the object.
1018    :vartype type: str
1019    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
1020     "FileEvent", "PeriodicTimerEvent".
1021    :type kind: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.TriggerEventType
1022    """
1023
1024    _validation = {
1025        'id': {'readonly': True},
1026        'name': {'readonly': True},
1027        'type': {'readonly': True},
1028        'kind': {'required': True},
1029    }
1030
1031    _attribute_map = {
1032        'id': {'key': 'id', 'type': 'str'},
1033        'name': {'key': 'name', 'type': 'str'},
1034        'type': {'key': 'type', 'type': 'str'},
1035        'kind': {'key': 'kind', 'type': 'str'},
1036    }
1037
1038    _subtype_map = {
1039        'kind': {'FileEvent': 'FileEventTrigger', 'PeriodicTimerEvent': 'PeriodicTimerEventTrigger'}
1040    }
1041
1042    def __init__(
1043        self,
1044        **kwargs
1045    ):
1046        super(Trigger, self).__init__(**kwargs)
1047        self.kind = 'Trigger'  # type: str
1048
1049
1050class FileEventTrigger(Trigger):
1051    """Trigger details.
1052
1053    Variables are only populated by the server, and will be ignored when sending a request.
1054
1055    All required parameters must be populated in order to send to Azure.
1056
1057    :ivar id: The path ID that uniquely identifies the object.
1058    :vartype id: str
1059    :ivar name: The object name.
1060    :vartype name: str
1061    :ivar type: The hierarchical type of the object.
1062    :vartype type: str
1063    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
1064     "FileEvent", "PeriodicTimerEvent".
1065    :type kind: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.TriggerEventType
1066    :param source_info: Required. File event source details.
1067    :type source_info: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.FileSourceInfo
1068    :param sink_info: Required. Role sink info.
1069    :type sink_info: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RoleSinkInfo
1070    :param custom_context_tag: A custom context tag typically used to correlate the trigger against
1071     its usage. For example, if a periodic timer trigger is intended for certain specific IoT
1072     modules in the device, the tag can be the name or the image URL of the module.
1073    :type custom_context_tag: str
1074    """
1075
1076    _validation = {
1077        'id': {'readonly': True},
1078        'name': {'readonly': True},
1079        'type': {'readonly': True},
1080        'kind': {'required': True},
1081        'source_info': {'required': True},
1082        'sink_info': {'required': True},
1083    }
1084
1085    _attribute_map = {
1086        'id': {'key': 'id', 'type': 'str'},
1087        'name': {'key': 'name', 'type': 'str'},
1088        'type': {'key': 'type', 'type': 'str'},
1089        'kind': {'key': 'kind', 'type': 'str'},
1090        'source_info': {'key': 'properties.sourceInfo', 'type': 'FileSourceInfo'},
1091        'sink_info': {'key': 'properties.sinkInfo', 'type': 'RoleSinkInfo'},
1092        'custom_context_tag': {'key': 'properties.customContextTag', 'type': 'str'},
1093    }
1094
1095    def __init__(
1096        self,
1097        *,
1098        source_info: "FileSourceInfo",
1099        sink_info: "RoleSinkInfo",
1100        custom_context_tag: Optional[str] = None,
1101        **kwargs
1102    ):
1103        super(FileEventTrigger, self).__init__(**kwargs)
1104        self.kind = 'FileEvent'  # type: str
1105        self.source_info = source_info
1106        self.sink_info = sink_info
1107        self.custom_context_tag = custom_context_tag
1108
1109
1110class FileSourceInfo(msrest.serialization.Model):
1111    """File source details.
1112
1113    All required parameters must be populated in order to send to Azure.
1114
1115    :param share_id: Required. File share ID.
1116    :type share_id: str
1117    """
1118
1119    _validation = {
1120        'share_id': {'required': True},
1121    }
1122
1123    _attribute_map = {
1124        'share_id': {'key': 'shareId', 'type': 'str'},
1125    }
1126
1127    def __init__(
1128        self,
1129        *,
1130        share_id: str,
1131        **kwargs
1132    ):
1133        super(FileSourceInfo, self).__init__(**kwargs)
1134        self.share_id = share_id
1135
1136
1137class ImageRepositoryCredential(msrest.serialization.Model):
1138    """Image repository credential.
1139
1140    All required parameters must be populated in order to send to Azure.
1141
1142    :param image_repository_url: Required. Image repository url (e.g.: mcr.microsoft.com).
1143    :type image_repository_url: str
1144    :param user_name: Required. Repository user name.
1145    :type user_name: str
1146    :param password: Repository user password.
1147    :type password: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AsymmetricEncryptedSecret
1148    """
1149
1150    _validation = {
1151        'image_repository_url': {'required': True},
1152        'user_name': {'required': True},
1153    }
1154
1155    _attribute_map = {
1156        'image_repository_url': {'key': 'imageRepositoryUrl', 'type': 'str'},
1157        'user_name': {'key': 'userName', 'type': 'str'},
1158        'password': {'key': 'password', 'type': 'AsymmetricEncryptedSecret'},
1159    }
1160
1161    def __init__(
1162        self,
1163        *,
1164        image_repository_url: str,
1165        user_name: str,
1166        password: Optional["AsymmetricEncryptedSecret"] = None,
1167        **kwargs
1168    ):
1169        super(ImageRepositoryCredential, self).__init__(**kwargs)
1170        self.image_repository_url = image_repository_url
1171        self.user_name = user_name
1172        self.password = password
1173
1174
1175class IoTDeviceInfo(msrest.serialization.Model):
1176    """Metadata of IoT device/IoT Edge device to be configured.
1177
1178    All required parameters must be populated in order to send to Azure.
1179
1180    :param device_id: Required. ID of the IoT device/edge device.
1181    :type device_id: str
1182    :param io_t_host_hub: Required. Host name for the IoT hub associated to the device.
1183    :type io_t_host_hub: str
1184    :param io_t_host_hub_id: Id for the IoT hub associated to the device.
1185    :type io_t_host_hub_id: str
1186    :param authentication: Encrypted IoT device/IoT edge device connection string.
1187    :type authentication: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.Authentication
1188    """
1189
1190    _validation = {
1191        'device_id': {'required': True},
1192        'io_t_host_hub': {'required': True},
1193    }
1194
1195    _attribute_map = {
1196        'device_id': {'key': 'deviceId', 'type': 'str'},
1197        'io_t_host_hub': {'key': 'ioTHostHub', 'type': 'str'},
1198        'io_t_host_hub_id': {'key': 'ioTHostHubId', 'type': 'str'},
1199        'authentication': {'key': 'authentication', 'type': 'Authentication'},
1200    }
1201
1202    def __init__(
1203        self,
1204        *,
1205        device_id: str,
1206        io_t_host_hub: str,
1207        io_t_host_hub_id: Optional[str] = None,
1208        authentication: Optional["Authentication"] = None,
1209        **kwargs
1210    ):
1211        super(IoTDeviceInfo, self).__init__(**kwargs)
1212        self.device_id = device_id
1213        self.io_t_host_hub = io_t_host_hub
1214        self.io_t_host_hub_id = io_t_host_hub_id
1215        self.authentication = authentication
1216
1217
1218class IoTEdgeAgentInfo(msrest.serialization.Model):
1219    """IoT edge agent details is optional, this will be used for download system Agent module while bootstrapping IoT Role if specified.
1220
1221    All required parameters must be populated in order to send to Azure.
1222
1223    :param image_name: Required. Name of the IoT edge agent image.
1224    :type image_name: str
1225    :param tag: Required. Image Tag.
1226    :type tag: str
1227    :param image_repository: Image repository details.
1228    :type image_repository:
1229     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ImageRepositoryCredential
1230    """
1231
1232    _validation = {
1233        'image_name': {'required': True},
1234        'tag': {'required': True},
1235    }
1236
1237    _attribute_map = {
1238        'image_name': {'key': 'imageName', 'type': 'str'},
1239        'tag': {'key': 'tag', 'type': 'str'},
1240        'image_repository': {'key': 'imageRepository', 'type': 'ImageRepositoryCredential'},
1241    }
1242
1243    def __init__(
1244        self,
1245        *,
1246        image_name: str,
1247        tag: str,
1248        image_repository: Optional["ImageRepositoryCredential"] = None,
1249        **kwargs
1250    ):
1251        super(IoTEdgeAgentInfo, self).__init__(**kwargs)
1252        self.image_name = image_name
1253        self.tag = tag
1254        self.image_repository = image_repository
1255
1256
1257class Role(ARMBaseModel):
1258    """Compute role.
1259
1260    You probably want to use the sub-classes and not this class directly. Known
1261    sub-classes are: IoTRole.
1262
1263    Variables are only populated by the server, and will be ignored when sending a request.
1264
1265    All required parameters must be populated in order to send to Azure.
1266
1267    :ivar id: The path ID that uniquely identifies the object.
1268    :vartype id: str
1269    :ivar name: The object name.
1270    :vartype name: str
1271    :ivar type: The hierarchical type of the object.
1272    :vartype type: str
1273    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
1274     "ASA", "Functions", "Cognitive".
1275    :type kind: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RoleTypes
1276    """
1277
1278    _validation = {
1279        'id': {'readonly': True},
1280        'name': {'readonly': True},
1281        'type': {'readonly': True},
1282        'kind': {'required': True},
1283    }
1284
1285    _attribute_map = {
1286        'id': {'key': 'id', 'type': 'str'},
1287        'name': {'key': 'name', 'type': 'str'},
1288        'type': {'key': 'type', 'type': 'str'},
1289        'kind': {'key': 'kind', 'type': 'str'},
1290    }
1291
1292    _subtype_map = {
1293        'kind': {'IOT': 'IoTRole'}
1294    }
1295
1296    def __init__(
1297        self,
1298        **kwargs
1299    ):
1300        super(Role, self).__init__(**kwargs)
1301        self.kind = 'Role'  # type: str
1302
1303
1304class IoTRole(Role):
1305    """Compute role.
1306
1307    Variables are only populated by the server, and will be ignored when sending a request.
1308
1309    All required parameters must be populated in order to send to Azure.
1310
1311    :ivar id: The path ID that uniquely identifies the object.
1312    :vartype id: str
1313    :ivar name: The object name.
1314    :vartype name: str
1315    :ivar type: The hierarchical type of the object.
1316    :vartype type: str
1317    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
1318     "ASA", "Functions", "Cognitive".
1319    :type kind: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RoleTypes
1320    :param host_platform: Host OS supported by the IoT role. Possible values include: "Windows",
1321     "Linux".
1322    :type host_platform: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.PlatformType
1323    :param io_t_device_details: IoT device metadata to which data box edge device needs to be
1324     connected.
1325    :type io_t_device_details: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.IoTDeviceInfo
1326    :param io_t_edge_device_details: IoT edge device to which the IoT role needs to be configured.
1327    :type io_t_edge_device_details:
1328     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.IoTDeviceInfo
1329    :param share_mappings: Mount points of shares in role(s).
1330    :type share_mappings: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.MountPointMap]
1331    :param io_t_edge_agent_info: Iot edge agent details to download the agent and bootstrap iot
1332     runtime.
1333    :type io_t_edge_agent_info: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.IoTEdgeAgentInfo
1334    :ivar host_platform_type: Platform where the Iot runtime is hosted. Possible values include:
1335     "KubernetesCluster", "LinuxVM".
1336    :vartype host_platform_type: str or
1337     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.HostPlatformType
1338    :param role_status: Role status. Possible values include: "Enabled", "Disabled".
1339    :type role_status: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RoleStatus
1340    """
1341
1342    _validation = {
1343        'id': {'readonly': True},
1344        'name': {'readonly': True},
1345        'type': {'readonly': True},
1346        'kind': {'required': True},
1347        'host_platform_type': {'readonly': True},
1348    }
1349
1350    _attribute_map = {
1351        'id': {'key': 'id', 'type': 'str'},
1352        'name': {'key': 'name', 'type': 'str'},
1353        'type': {'key': 'type', 'type': 'str'},
1354        'kind': {'key': 'kind', 'type': 'str'},
1355        'host_platform': {'key': 'properties.hostPlatform', 'type': 'str'},
1356        'io_t_device_details': {'key': 'properties.ioTDeviceDetails', 'type': 'IoTDeviceInfo'},
1357        'io_t_edge_device_details': {'key': 'properties.ioTEdgeDeviceDetails', 'type': 'IoTDeviceInfo'},
1358        'share_mappings': {'key': 'properties.shareMappings', 'type': '[MountPointMap]'},
1359        'io_t_edge_agent_info': {'key': 'properties.ioTEdgeAgentInfo', 'type': 'IoTEdgeAgentInfo'},
1360        'host_platform_type': {'key': 'properties.hostPlatformType', 'type': 'str'},
1361        'role_status': {'key': 'properties.roleStatus', 'type': 'str'},
1362    }
1363
1364    def __init__(
1365        self,
1366        *,
1367        host_platform: Optional[Union[str, "PlatformType"]] = None,
1368        io_t_device_details: Optional["IoTDeviceInfo"] = None,
1369        io_t_edge_device_details: Optional["IoTDeviceInfo"] = None,
1370        share_mappings: Optional[List["MountPointMap"]] = None,
1371        io_t_edge_agent_info: Optional["IoTEdgeAgentInfo"] = None,
1372        role_status: Optional[Union[str, "RoleStatus"]] = None,
1373        **kwargs
1374    ):
1375        super(IoTRole, self).__init__(**kwargs)
1376        self.kind = 'IOT'  # type: str
1377        self.host_platform = host_platform
1378        self.io_t_device_details = io_t_device_details
1379        self.io_t_edge_device_details = io_t_edge_device_details
1380        self.share_mappings = share_mappings
1381        self.io_t_edge_agent_info = io_t_edge_agent_info
1382        self.host_platform_type = None
1383        self.role_status = role_status
1384
1385
1386class Ipv4Config(msrest.serialization.Model):
1387    """Details related to the IPv4 address configuration.
1388
1389    Variables are only populated by the server, and will be ignored when sending a request.
1390
1391    :ivar ip_address: The IPv4 address of the network adapter.
1392    :vartype ip_address: str
1393    :ivar subnet: The IPv4 subnet of the network adapter.
1394    :vartype subnet: str
1395    :ivar gateway: The IPv4 gateway of the network adapter.
1396    :vartype gateway: str
1397    """
1398
1399    _validation = {
1400        'ip_address': {'readonly': True},
1401        'subnet': {'readonly': True},
1402        'gateway': {'readonly': True},
1403    }
1404
1405    _attribute_map = {
1406        'ip_address': {'key': 'ipAddress', 'type': 'str'},
1407        'subnet': {'key': 'subnet', 'type': 'str'},
1408        'gateway': {'key': 'gateway', 'type': 'str'},
1409    }
1410
1411    def __init__(
1412        self,
1413        **kwargs
1414    ):
1415        super(Ipv4Config, self).__init__(**kwargs)
1416        self.ip_address = None
1417        self.subnet = None
1418        self.gateway = None
1419
1420
1421class Ipv6Config(msrest.serialization.Model):
1422    """Details related to the IPv6 address configuration.
1423
1424    Variables are only populated by the server, and will be ignored when sending a request.
1425
1426    :ivar ip_address: The IPv6 address of the network adapter.
1427    :vartype ip_address: str
1428    :ivar prefix_length: The IPv6 prefix of the network adapter.
1429    :vartype prefix_length: int
1430    :ivar gateway: The IPv6 gateway of the network adapter.
1431    :vartype gateway: str
1432    """
1433
1434    _validation = {
1435        'ip_address': {'readonly': True},
1436        'prefix_length': {'readonly': True},
1437        'gateway': {'readonly': True},
1438    }
1439
1440    _attribute_map = {
1441        'ip_address': {'key': 'ipAddress', 'type': 'str'},
1442        'prefix_length': {'key': 'prefixLength', 'type': 'int'},
1443        'gateway': {'key': 'gateway', 'type': 'str'},
1444    }
1445
1446    def __init__(
1447        self,
1448        **kwargs
1449    ):
1450        super(Ipv6Config, self).__init__(**kwargs)
1451        self.ip_address = None
1452        self.prefix_length = None
1453        self.gateway = None
1454
1455
1456class Job(msrest.serialization.Model):
1457    """A device job.
1458
1459    Variables are only populated by the server, and will be ignored when sending a request.
1460
1461    :ivar id: The path ID that uniquely identifies the object.
1462    :vartype id: str
1463    :ivar name: The name of the object.
1464    :vartype name: str
1465    :ivar type: The hierarchical type of the object.
1466    :vartype type: str
1467    :ivar status: The current status of the job. Possible values include: "Invalid", "Running",
1468     "Succeeded", "Failed", "Canceled", "Paused", "Scheduled".
1469    :vartype status: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.JobStatus
1470    :ivar start_time: The UTC date and time at which the job started.
1471    :vartype start_time: ~datetime.datetime
1472    :ivar end_time: The UTC date and time at which the job completed.
1473    :vartype end_time: ~datetime.datetime
1474    :ivar percent_complete: The percentage of the job that is complete.
1475    :vartype percent_complete: int
1476    :ivar error: The error details.
1477    :vartype error: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.JobErrorDetails
1478    :ivar job_type: The type of the job. Possible values include: "Invalid", "ScanForUpdates",
1479     "DownloadUpdates", "InstallUpdates", "RefreshShare", "RefreshContainer".
1480    :vartype job_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.JobType
1481    :ivar current_stage: Current stage of the update operation. Possible values include: "Unknown",
1482     "Initial", "ScanStarted", "ScanComplete", "ScanFailed", "DownloadStarted", "DownloadComplete",
1483     "DownloadFailed", "InstallStarted", "InstallComplete", "InstallFailed", "RebootInitiated",
1484     "Success", "Failure", "RescanStarted", "RescanComplete", "RescanFailed".
1485    :vartype current_stage: str or
1486     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.UpdateOperationStage
1487    :ivar download_progress: The download progress.
1488    :vartype download_progress:
1489     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.UpdateDownloadProgress
1490    :ivar install_progress: The install progress.
1491    :vartype install_progress:
1492     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.UpdateInstallProgress
1493    :ivar total_refresh_errors: Total number of errors encountered during the refresh process.
1494    :vartype total_refresh_errors: int
1495    :ivar error_manifest_file: Local share/remote container relative path to the error manifest
1496     file of the refresh.
1497    :vartype error_manifest_file: str
1498    :ivar refreshed_entity_id: ARM ID of the entity that was refreshed.
1499    :vartype refreshed_entity_id: str
1500    :param folder: If only subfolders need to be refreshed, then the subfolder path inside the
1501     share or container. (The path is empty if there are no subfolders.).
1502    :type folder: str
1503    """
1504
1505    _validation = {
1506        'id': {'readonly': True},
1507        'name': {'readonly': True},
1508        'type': {'readonly': True},
1509        'status': {'readonly': True},
1510        'start_time': {'readonly': True},
1511        'end_time': {'readonly': True},
1512        'percent_complete': {'readonly': True},
1513        'error': {'readonly': True},
1514        'job_type': {'readonly': True},
1515        'current_stage': {'readonly': True},
1516        'download_progress': {'readonly': True},
1517        'install_progress': {'readonly': True},
1518        'total_refresh_errors': {'readonly': True},
1519        'error_manifest_file': {'readonly': True},
1520        'refreshed_entity_id': {'readonly': True},
1521    }
1522
1523    _attribute_map = {
1524        'id': {'key': 'id', 'type': 'str'},
1525        'name': {'key': 'name', 'type': 'str'},
1526        'type': {'key': 'type', 'type': 'str'},
1527        'status': {'key': 'status', 'type': 'str'},
1528        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
1529        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
1530        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
1531        'error': {'key': 'error', 'type': 'JobErrorDetails'},
1532        'job_type': {'key': 'properties.jobType', 'type': 'str'},
1533        'current_stage': {'key': 'properties.currentStage', 'type': 'str'},
1534        'download_progress': {'key': 'properties.downloadProgress', 'type': 'UpdateDownloadProgress'},
1535        'install_progress': {'key': 'properties.installProgress', 'type': 'UpdateInstallProgress'},
1536        'total_refresh_errors': {'key': 'properties.totalRefreshErrors', 'type': 'int'},
1537        'error_manifest_file': {'key': 'properties.errorManifestFile', 'type': 'str'},
1538        'refreshed_entity_id': {'key': 'properties.refreshedEntityId', 'type': 'str'},
1539        'folder': {'key': 'properties.folder', 'type': 'str'},
1540    }
1541
1542    def __init__(
1543        self,
1544        *,
1545        folder: Optional[str] = None,
1546        **kwargs
1547    ):
1548        super(Job, self).__init__(**kwargs)
1549        self.id = None
1550        self.name = None
1551        self.type = None
1552        self.status = None
1553        self.start_time = None
1554        self.end_time = None
1555        self.percent_complete = None
1556        self.error = None
1557        self.job_type = None
1558        self.current_stage = None
1559        self.download_progress = None
1560        self.install_progress = None
1561        self.total_refresh_errors = None
1562        self.error_manifest_file = None
1563        self.refreshed_entity_id = None
1564        self.folder = folder
1565
1566
1567class JobErrorDetails(msrest.serialization.Model):
1568    """The job error information containing the list of job errors.
1569
1570    Variables are only populated by the server, and will be ignored when sending a request.
1571
1572    :ivar error_details: The error details.
1573    :vartype error_details: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.JobErrorItem]
1574    :ivar code: The code intended for programmatic access.
1575    :vartype code: str
1576    :ivar message: The message that describes the error in detail.
1577    :vartype message: str
1578    """
1579
1580    _validation = {
1581        'error_details': {'readonly': True},
1582        'code': {'readonly': True},
1583        'message': {'readonly': True},
1584    }
1585
1586    _attribute_map = {
1587        'error_details': {'key': 'errorDetails', 'type': '[JobErrorItem]'},
1588        'code': {'key': 'code', 'type': 'str'},
1589        'message': {'key': 'message', 'type': 'str'},
1590    }
1591
1592    def __init__(
1593        self,
1594        **kwargs
1595    ):
1596        super(JobErrorDetails, self).__init__(**kwargs)
1597        self.error_details = None
1598        self.code = None
1599        self.message = None
1600
1601
1602class JobErrorItem(msrest.serialization.Model):
1603    """The job error items.
1604
1605    Variables are only populated by the server, and will be ignored when sending a request.
1606
1607    :ivar recommendations: The recommended actions.
1608    :vartype recommendations: list[str]
1609    :ivar code: The code intended for programmatic access.
1610    :vartype code: str
1611    :ivar message: The message that describes the error in detail.
1612    :vartype message: str
1613    """
1614
1615    _validation = {
1616        'recommendations': {'readonly': True},
1617        'code': {'readonly': True},
1618        'message': {'readonly': True},
1619    }
1620
1621    _attribute_map = {
1622        'recommendations': {'key': 'recommendations', 'type': '[str]'},
1623        'code': {'key': 'code', 'type': 'str'},
1624        'message': {'key': 'message', 'type': 'str'},
1625    }
1626
1627    def __init__(
1628        self,
1629        **kwargs
1630    ):
1631        super(JobErrorItem, self).__init__(**kwargs)
1632        self.recommendations = None
1633        self.code = None
1634        self.message = None
1635
1636
1637class MetricDimensionV1(msrest.serialization.Model):
1638    """Metric Dimension v1.
1639
1640    :param name: Name of the metrics dimension.
1641    :type name: str
1642    :param display_name: Display name of the metrics dimension.
1643    :type display_name: str
1644    :param to_be_exported_for_shoebox: To be exported to shoe box.
1645    :type to_be_exported_for_shoebox: bool
1646    """
1647
1648    _attribute_map = {
1649        'name': {'key': 'name', 'type': 'str'},
1650        'display_name': {'key': 'displayName', 'type': 'str'},
1651        'to_be_exported_for_shoebox': {'key': 'toBeExportedForShoebox', 'type': 'bool'},
1652    }
1653
1654    def __init__(
1655        self,
1656        *,
1657        name: Optional[str] = None,
1658        display_name: Optional[str] = None,
1659        to_be_exported_for_shoebox: Optional[bool] = None,
1660        **kwargs
1661    ):
1662        super(MetricDimensionV1, self).__init__(**kwargs)
1663        self.name = name
1664        self.display_name = display_name
1665        self.to_be_exported_for_shoebox = to_be_exported_for_shoebox
1666
1667
1668class MetricSpecificationV1(msrest.serialization.Model):
1669    """Metric specification version 1.
1670
1671    :param name: Name of the metric.
1672    :type name: str
1673    :param display_name: Display name of the metric.
1674    :type display_name: str
1675    :param display_description: Description of the metric to be displayed.
1676    :type display_description: str
1677    :param unit: Metric units. Possible values include: "NotSpecified", "Percent", "Count",
1678     "Seconds", "Milliseconds", "Bytes", "BytesPerSecond", "CountPerSecond".
1679    :type unit: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.MetricUnit
1680    :param aggregation_type: Metric aggregation type. Possible values include: "NotSpecified",
1681     "None", "Average", "Minimum", "Maximum", "Total", "Count".
1682    :type aggregation_type: str or
1683     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.MetricAggregationType
1684    :param dimensions: Metric dimensions, other than default dimension which is resource.
1685    :type dimensions: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.MetricDimensionV1]
1686    :param fill_gap_with_zero: Set true to fill the gaps with zero.
1687    :type fill_gap_with_zero: bool
1688    :param category: Metric category. Possible values include: "Capacity", "Transaction".
1689    :type category: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.MetricCategory
1690    :param resource_id_dimension_name_override: Resource name override.
1691    :type resource_id_dimension_name_override: str
1692    :param supported_time_grain_types: Support granularity of metrics.
1693    :type supported_time_grain_types: list[str or
1694     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.TimeGrain]
1695    :param supported_aggregation_types: Support metric aggregation type.
1696    :type supported_aggregation_types: list[str or
1697     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.MetricAggregationType]
1698    """
1699
1700    _attribute_map = {
1701        'name': {'key': 'name', 'type': 'str'},
1702        'display_name': {'key': 'displayName', 'type': 'str'},
1703        'display_description': {'key': 'displayDescription', 'type': 'str'},
1704        'unit': {'key': 'unit', 'type': 'str'},
1705        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
1706        'dimensions': {'key': 'dimensions', 'type': '[MetricDimensionV1]'},
1707        'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'},
1708        'category': {'key': 'category', 'type': 'str'},
1709        'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'},
1710        'supported_time_grain_types': {'key': 'supportedTimeGrainTypes', 'type': '[str]'},
1711        'supported_aggregation_types': {'key': 'supportedAggregationTypes', 'type': '[str]'},
1712    }
1713
1714    def __init__(
1715        self,
1716        *,
1717        name: Optional[str] = None,
1718        display_name: Optional[str] = None,
1719        display_description: Optional[str] = None,
1720        unit: Optional[Union[str, "MetricUnit"]] = None,
1721        aggregation_type: Optional[Union[str, "MetricAggregationType"]] = None,
1722        dimensions: Optional[List["MetricDimensionV1"]] = None,
1723        fill_gap_with_zero: Optional[bool] = None,
1724        category: Optional[Union[str, "MetricCategory"]] = None,
1725        resource_id_dimension_name_override: Optional[str] = None,
1726        supported_time_grain_types: Optional[List[Union[str, "TimeGrain"]]] = None,
1727        supported_aggregation_types: Optional[List[Union[str, "MetricAggregationType"]]] = None,
1728        **kwargs
1729    ):
1730        super(MetricSpecificationV1, self).__init__(**kwargs)
1731        self.name = name
1732        self.display_name = display_name
1733        self.display_description = display_description
1734        self.unit = unit
1735        self.aggregation_type = aggregation_type
1736        self.dimensions = dimensions
1737        self.fill_gap_with_zero = fill_gap_with_zero
1738        self.category = category
1739        self.resource_id_dimension_name_override = resource_id_dimension_name_override
1740        self.supported_time_grain_types = supported_time_grain_types
1741        self.supported_aggregation_types = supported_aggregation_types
1742
1743
1744class MountPointMap(msrest.serialization.Model):
1745    """The share mount point.
1746
1747    Variables are only populated by the server, and will be ignored when sending a request.
1748
1749    All required parameters must be populated in order to send to Azure.
1750
1751    :param share_id: Required. ID of the share mounted to the role VM.
1752    :type share_id: str
1753    :ivar role_id: ID of the role to which share is mounted.
1754    :vartype role_id: str
1755    :ivar mount_point: Mount point for the share.
1756    :vartype mount_point: str
1757    :ivar mount_type: Mounting type. Possible values include: "Volume", "HostPath".
1758    :vartype mount_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.MountType
1759    :ivar role_type: Role type. Possible values include: "IOT", "ASA", "Functions", "Cognitive".
1760    :vartype role_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RoleTypes
1761    """
1762
1763    _validation = {
1764        'share_id': {'required': True},
1765        'role_id': {'readonly': True},
1766        'mount_point': {'readonly': True},
1767        'mount_type': {'readonly': True},
1768        'role_type': {'readonly': True},
1769    }
1770
1771    _attribute_map = {
1772        'share_id': {'key': 'shareId', 'type': 'str'},
1773        'role_id': {'key': 'roleId', 'type': 'str'},
1774        'mount_point': {'key': 'mountPoint', 'type': 'str'},
1775        'mount_type': {'key': 'mountType', 'type': 'str'},
1776        'role_type': {'key': 'roleType', 'type': 'str'},
1777    }
1778
1779    def __init__(
1780        self,
1781        *,
1782        share_id: str,
1783        **kwargs
1784    ):
1785        super(MountPointMap, self).__init__(**kwargs)
1786        self.share_id = share_id
1787        self.role_id = None
1788        self.mount_point = None
1789        self.mount_type = None
1790        self.role_type = None
1791
1792
1793class NetworkAdapter(msrest.serialization.Model):
1794    """Represents the networkAdapter on a device.
1795
1796    Variables are only populated by the server, and will be ignored when sending a request.
1797
1798    :ivar adapter_id: Instance ID of network adapter.
1799    :vartype adapter_id: str
1800    :ivar adapter_position: Hardware position of network adapter.
1801    :vartype adapter_position:
1802     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.NetworkAdapterPosition
1803    :ivar index: Logical index of the adapter.
1804    :vartype index: int
1805    :ivar node_id: Node ID of the network adapter.
1806    :vartype node_id: str
1807    :ivar network_adapter_name: Network adapter name.
1808    :vartype network_adapter_name: str
1809    :ivar label: Hardware label for the adapter.
1810    :vartype label: str
1811    :ivar mac_address: MAC address.
1812    :vartype mac_address: str
1813    :ivar link_speed: Link speed.
1814    :vartype link_speed: long
1815    :ivar status: Value indicating whether this adapter is valid. Possible values include:
1816     "Inactive", "Active".
1817    :vartype status: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.NetworkAdapterStatus
1818    :param rdma_status: Value indicating whether this adapter is RDMA capable. Possible values
1819     include: "Incapable", "Capable".
1820    :type rdma_status: str or
1821     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.NetworkAdapterRDMAStatus
1822    :param dhcp_status: Value indicating whether this adapter has DHCP enabled. Possible values
1823     include: "Disabled", "Enabled".
1824    :type dhcp_status: str or
1825     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.NetworkAdapterDHCPStatus
1826    :ivar ipv4_configuration: The IPv4 configuration of the network adapter.
1827    :vartype ipv4_configuration: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.Ipv4Config
1828    :ivar ipv6_configuration: The IPv6 configuration of the network adapter.
1829    :vartype ipv6_configuration: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.Ipv6Config
1830    :ivar ipv6_link_local_address: The IPv6 local address.
1831    :vartype ipv6_link_local_address: str
1832    :ivar dns_servers: The list of DNS Servers of the device.
1833    :vartype dns_servers: list[str]
1834    """
1835
1836    _validation = {
1837        'adapter_id': {'readonly': True},
1838        'adapter_position': {'readonly': True},
1839        'index': {'readonly': True},
1840        'node_id': {'readonly': True},
1841        'network_adapter_name': {'readonly': True},
1842        'label': {'readonly': True},
1843        'mac_address': {'readonly': True},
1844        'link_speed': {'readonly': True},
1845        'status': {'readonly': True},
1846        'ipv4_configuration': {'readonly': True},
1847        'ipv6_configuration': {'readonly': True},
1848        'ipv6_link_local_address': {'readonly': True},
1849        'dns_servers': {'readonly': True},
1850    }
1851
1852    _attribute_map = {
1853        'adapter_id': {'key': 'adapterId', 'type': 'str'},
1854        'adapter_position': {'key': 'adapterPosition', 'type': 'NetworkAdapterPosition'},
1855        'index': {'key': 'index', 'type': 'int'},
1856        'node_id': {'key': 'nodeId', 'type': 'str'},
1857        'network_adapter_name': {'key': 'networkAdapterName', 'type': 'str'},
1858        'label': {'key': 'label', 'type': 'str'},
1859        'mac_address': {'key': 'macAddress', 'type': 'str'},
1860        'link_speed': {'key': 'linkSpeed', 'type': 'long'},
1861        'status': {'key': 'status', 'type': 'str'},
1862        'rdma_status': {'key': 'rdmaStatus', 'type': 'str'},
1863        'dhcp_status': {'key': 'dhcpStatus', 'type': 'str'},
1864        'ipv4_configuration': {'key': 'ipv4Configuration', 'type': 'Ipv4Config'},
1865        'ipv6_configuration': {'key': 'ipv6Configuration', 'type': 'Ipv6Config'},
1866        'ipv6_link_local_address': {'key': 'ipv6LinkLocalAddress', 'type': 'str'},
1867        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
1868    }
1869
1870    def __init__(
1871        self,
1872        *,
1873        rdma_status: Optional[Union[str, "NetworkAdapterRDMAStatus"]] = None,
1874        dhcp_status: Optional[Union[str, "NetworkAdapterDHCPStatus"]] = None,
1875        **kwargs
1876    ):
1877        super(NetworkAdapter, self).__init__(**kwargs)
1878        self.adapter_id = None
1879        self.adapter_position = None
1880        self.index = None
1881        self.node_id = None
1882        self.network_adapter_name = None
1883        self.label = None
1884        self.mac_address = None
1885        self.link_speed = None
1886        self.status = None
1887        self.rdma_status = rdma_status
1888        self.dhcp_status = dhcp_status
1889        self.ipv4_configuration = None
1890        self.ipv6_configuration = None
1891        self.ipv6_link_local_address = None
1892        self.dns_servers = None
1893
1894
1895class NetworkAdapterPosition(msrest.serialization.Model):
1896    """The network adapter position.
1897
1898    Variables are only populated by the server, and will be ignored when sending a request.
1899
1900    :ivar network_group: The network group. Possible values include: "None", "NonRDMA", "RDMA".
1901    :vartype network_group: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.NetworkGroup
1902    :ivar port: The port.
1903    :vartype port: int
1904    """
1905
1906    _validation = {
1907        'network_group': {'readonly': True},
1908        'port': {'readonly': True},
1909    }
1910
1911    _attribute_map = {
1912        'network_group': {'key': 'networkGroup', 'type': 'str'},
1913        'port': {'key': 'port', 'type': 'int'},
1914    }
1915
1916    def __init__(
1917        self,
1918        **kwargs
1919    ):
1920        super(NetworkAdapterPosition, self).__init__(**kwargs)
1921        self.network_group = None
1922        self.port = None
1923
1924
1925class NetworkSettings(ARMBaseModel):
1926    """The network settings of a device.
1927
1928    Variables are only populated by the server, and will be ignored when sending a request.
1929
1930    :ivar id: The path ID that uniquely identifies the object.
1931    :vartype id: str
1932    :ivar name: The object name.
1933    :vartype name: str
1934    :ivar type: The hierarchical type of the object.
1935    :vartype type: str
1936    :ivar network_adapters: The network adapter list on the device.
1937    :vartype network_adapters:
1938     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.NetworkAdapter]
1939    """
1940
1941    _validation = {
1942        'id': {'readonly': True},
1943        'name': {'readonly': True},
1944        'type': {'readonly': True},
1945        'network_adapters': {'readonly': True},
1946    }
1947
1948    _attribute_map = {
1949        'id': {'key': 'id', 'type': 'str'},
1950        'name': {'key': 'name', 'type': 'str'},
1951        'type': {'key': 'type', 'type': 'str'},
1952        'network_adapters': {'key': 'properties.networkAdapters', 'type': '[NetworkAdapter]'},
1953    }
1954
1955    def __init__(
1956        self,
1957        **kwargs
1958    ):
1959        super(NetworkSettings, self).__init__(**kwargs)
1960        self.network_adapters = None
1961
1962
1963class Node(ARMBaseModel):
1964    """Represents a single node in a Data box Edge/Gateway device
1965Gateway devices, standalone Edge devices and a single node cluster Edge device will all have 1 node
1966Multi-node Edge devices will have more than 1 nodes.
1967
1968    Variables are only populated by the server, and will be ignored when sending a request.
1969
1970    :ivar id: The path ID that uniquely identifies the object.
1971    :vartype id: str
1972    :ivar name: The object name.
1973    :vartype name: str
1974    :ivar type: The hierarchical type of the object.
1975    :vartype type: str
1976    :ivar node_status: The current status of the individual node. Possible values include:
1977     "Unknown", "Up", "Down", "Rebooting", "ShuttingDown".
1978    :vartype node_status: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.NodeStatus
1979    :ivar node_chassis_serial_number: Serial number of the Chassis.
1980    :vartype node_chassis_serial_number: str
1981    :ivar node_serial_number: Serial number of the individual node.
1982    :vartype node_serial_number: str
1983    :ivar node_display_name: Display Name of the individual node.
1984    :vartype node_display_name: str
1985    :ivar node_friendly_software_version: Friendly software version name that is currently
1986     installed on the node.
1987    :vartype node_friendly_software_version: str
1988    :ivar node_hcs_version: HCS version that is currently installed on the node.
1989    :vartype node_hcs_version: str
1990    :ivar node_instance_id: Guid instance id of the node.
1991    :vartype node_instance_id: str
1992    """
1993
1994    _validation = {
1995        'id': {'readonly': True},
1996        'name': {'readonly': True},
1997        'type': {'readonly': True},
1998        'node_status': {'readonly': True},
1999        'node_chassis_serial_number': {'readonly': True},
2000        'node_serial_number': {'readonly': True},
2001        'node_display_name': {'readonly': True},
2002        'node_friendly_software_version': {'readonly': True},
2003        'node_hcs_version': {'readonly': True},
2004        'node_instance_id': {'readonly': True},
2005    }
2006
2007    _attribute_map = {
2008        'id': {'key': 'id', 'type': 'str'},
2009        'name': {'key': 'name', 'type': 'str'},
2010        'type': {'key': 'type', 'type': 'str'},
2011        'node_status': {'key': 'properties.nodeStatus', 'type': 'str'},
2012        'node_chassis_serial_number': {'key': 'properties.nodeChassisSerialNumber', 'type': 'str'},
2013        'node_serial_number': {'key': 'properties.nodeSerialNumber', 'type': 'str'},
2014        'node_display_name': {'key': 'properties.nodeDisplayName', 'type': 'str'},
2015        'node_friendly_software_version': {'key': 'properties.nodeFriendlySoftwareVersion', 'type': 'str'},
2016        'node_hcs_version': {'key': 'properties.nodeHcsVersion', 'type': 'str'},
2017        'node_instance_id': {'key': 'properties.nodeInstanceId', 'type': 'str'},
2018    }
2019
2020    def __init__(
2021        self,
2022        **kwargs
2023    ):
2024        super(Node, self).__init__(**kwargs)
2025        self.node_status = None
2026        self.node_chassis_serial_number = None
2027        self.node_serial_number = None
2028        self.node_display_name = None
2029        self.node_friendly_software_version = None
2030        self.node_hcs_version = None
2031        self.node_instance_id = None
2032
2033
2034class NodeList(msrest.serialization.Model):
2035    """Collection of Nodes.
2036
2037    Variables are only populated by the server, and will be ignored when sending a request.
2038
2039    :ivar value: The list of Nodes.
2040    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.Node]
2041    """
2042
2043    _validation = {
2044        'value': {'readonly': True},
2045    }
2046
2047    _attribute_map = {
2048        'value': {'key': 'value', 'type': '[Node]'},
2049    }
2050
2051    def __init__(
2052        self,
2053        **kwargs
2054    ):
2055        super(NodeList, self).__init__(**kwargs)
2056        self.value = None
2057
2058
2059class Operation(msrest.serialization.Model):
2060    """Operations.
2061
2062    :param name: Name of the operation.
2063    :type name: str
2064    :param display: Properties displayed for the operation.
2065    :type display: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.OperationDisplay
2066    :param origin: Origin of the operation.
2067    :type origin: str
2068    :param service_specification: Service specification.
2069    :type service_specification:
2070     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ServiceSpecification
2071    """
2072
2073    _attribute_map = {
2074        'name': {'key': 'name', 'type': 'str'},
2075        'display': {'key': 'display', 'type': 'OperationDisplay'},
2076        'origin': {'key': 'origin', 'type': 'str'},
2077        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'ServiceSpecification'},
2078    }
2079
2080    def __init__(
2081        self,
2082        *,
2083        name: Optional[str] = None,
2084        display: Optional["OperationDisplay"] = None,
2085        origin: Optional[str] = None,
2086        service_specification: Optional["ServiceSpecification"] = None,
2087        **kwargs
2088    ):
2089        super(Operation, self).__init__(**kwargs)
2090        self.name = name
2091        self.display = display
2092        self.origin = origin
2093        self.service_specification = service_specification
2094
2095
2096class OperationDisplay(msrest.serialization.Model):
2097    """Operation display properties.
2098
2099    :param provider: Provider name.
2100    :type provider: str
2101    :param resource: The type of resource in which the operation is performed.
2102    :type resource: str
2103    :param operation: Operation to be performed on the resource.
2104    :type operation: str
2105    :param description: Description of the operation to be performed.
2106    :type description: str
2107    """
2108
2109    _attribute_map = {
2110        'provider': {'key': 'provider', 'type': 'str'},
2111        'resource': {'key': 'resource', 'type': 'str'},
2112        'operation': {'key': 'operation', 'type': 'str'},
2113        'description': {'key': 'description', 'type': 'str'},
2114    }
2115
2116    def __init__(
2117        self,
2118        *,
2119        provider: Optional[str] = None,
2120        resource: Optional[str] = None,
2121        operation: Optional[str] = None,
2122        description: Optional[str] = None,
2123        **kwargs
2124    ):
2125        super(OperationDisplay, self).__init__(**kwargs)
2126        self.provider = provider
2127        self.resource = resource
2128        self.operation = operation
2129        self.description = description
2130
2131
2132class OperationsList(msrest.serialization.Model):
2133    """The list of operations used for the discovery of available provider operations.
2134
2135    All required parameters must be populated in order to send to Azure.
2136
2137    :param value: Required. The value.
2138    :type value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.Operation]
2139    :param next_link: Link to the next set of results.
2140    :type next_link: str
2141    """
2142
2143    _validation = {
2144        'value': {'required': True},
2145    }
2146
2147    _attribute_map = {
2148        'value': {'key': 'value', 'type': '[Operation]'},
2149        'next_link': {'key': 'nextLink', 'type': 'str'},
2150    }
2151
2152    def __init__(
2153        self,
2154        *,
2155        value: List["Operation"],
2156        next_link: Optional[str] = None,
2157        **kwargs
2158    ):
2159        super(OperationsList, self).__init__(**kwargs)
2160        self.value = value
2161        self.next_link = next_link
2162
2163
2164class Order(ARMBaseModel):
2165    """The order details.
2166
2167    Variables are only populated by the server, and will be ignored when sending a request.
2168
2169    :ivar id: The path ID that uniquely identifies the object.
2170    :vartype id: str
2171    :ivar name: The object name.
2172    :vartype name: str
2173    :ivar type: The hierarchical type of the object.
2174    :vartype type: str
2175    :param contact_information: The contact details.
2176    :type contact_information: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ContactDetails
2177    :param shipping_address: The shipping address.
2178    :type shipping_address: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.Address
2179    :param current_status: Current status of the order.
2180    :type current_status: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.OrderStatus
2181    :ivar order_history: List of status changes in the order.
2182    :vartype order_history: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.OrderStatus]
2183    :ivar serial_number: Serial number of the device.
2184    :vartype serial_number: str
2185    :ivar delivery_tracking_info: Tracking information for the package delivered to the customer
2186     whether it has an original or a replacement device.
2187    :vartype delivery_tracking_info:
2188     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.TrackingInfo]
2189    :ivar return_tracking_info: Tracking information for the package returned from the customer
2190     whether it has an original or a replacement device.
2191    :vartype return_tracking_info:
2192     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.TrackingInfo]
2193    """
2194
2195    _validation = {
2196        'id': {'readonly': True},
2197        'name': {'readonly': True},
2198        'type': {'readonly': True},
2199        'order_history': {'readonly': True},
2200        'serial_number': {'readonly': True},
2201        'delivery_tracking_info': {'readonly': True},
2202        'return_tracking_info': {'readonly': True},
2203    }
2204
2205    _attribute_map = {
2206        'id': {'key': 'id', 'type': 'str'},
2207        'name': {'key': 'name', 'type': 'str'},
2208        'type': {'key': 'type', 'type': 'str'},
2209        'contact_information': {'key': 'properties.contactInformation', 'type': 'ContactDetails'},
2210        'shipping_address': {'key': 'properties.shippingAddress', 'type': 'Address'},
2211        'current_status': {'key': 'properties.currentStatus', 'type': 'OrderStatus'},
2212        'order_history': {'key': 'properties.orderHistory', 'type': '[OrderStatus]'},
2213        'serial_number': {'key': 'properties.serialNumber', 'type': 'str'},
2214        'delivery_tracking_info': {'key': 'properties.deliveryTrackingInfo', 'type': '[TrackingInfo]'},
2215        'return_tracking_info': {'key': 'properties.returnTrackingInfo', 'type': '[TrackingInfo]'},
2216    }
2217
2218    def __init__(
2219        self,
2220        *,
2221        contact_information: Optional["ContactDetails"] = None,
2222        shipping_address: Optional["Address"] = None,
2223        current_status: Optional["OrderStatus"] = None,
2224        **kwargs
2225    ):
2226        super(Order, self).__init__(**kwargs)
2227        self.contact_information = contact_information
2228        self.shipping_address = shipping_address
2229        self.current_status = current_status
2230        self.order_history = None
2231        self.serial_number = None
2232        self.delivery_tracking_info = None
2233        self.return_tracking_info = None
2234
2235
2236class OrderList(msrest.serialization.Model):
2237    """List of order entities.
2238
2239    Variables are only populated by the server, and will be ignored when sending a request.
2240
2241    :ivar value: The list of orders.
2242    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.Order]
2243    :ivar next_link: Link to the next set of results.
2244    :vartype next_link: str
2245    """
2246
2247    _validation = {
2248        'value': {'readonly': True},
2249        'next_link': {'readonly': True},
2250    }
2251
2252    _attribute_map = {
2253        'value': {'key': 'value', 'type': '[Order]'},
2254        'next_link': {'key': 'nextLink', 'type': 'str'},
2255    }
2256
2257    def __init__(
2258        self,
2259        **kwargs
2260    ):
2261        super(OrderList, self).__init__(**kwargs)
2262        self.value = None
2263        self.next_link = None
2264
2265
2266class OrderStatus(msrest.serialization.Model):
2267    """Represents a single status change.
2268
2269    Variables are only populated by the server, and will be ignored when sending a request.
2270
2271    All required parameters must be populated in order to send to Azure.
2272
2273    :param status: Required. Status of the order as per the allowed status types. Possible values
2274     include: "Untracked", "AwaitingFulfilment", "AwaitingPreparation", "AwaitingShipment",
2275     "Shipped", "Arriving", "Delivered", "ReplacementRequested", "LostDevice", "Declined",
2276     "ReturnInitiated", "AwaitingReturnShipment", "ShippedBack", "CollectedAtMicrosoft".
2277    :type status: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.OrderState
2278    :ivar update_date_time: Time of status update.
2279    :vartype update_date_time: ~datetime.datetime
2280    :param comments: Comments related to this status change.
2281    :type comments: str
2282    :ivar additional_order_details: Dictionary to hold generic information which is not stored
2283     by the already existing properties.
2284    :vartype additional_order_details: dict[str, str]
2285    """
2286
2287    _validation = {
2288        'status': {'required': True},
2289        'update_date_time': {'readonly': True},
2290        'additional_order_details': {'readonly': True},
2291    }
2292
2293    _attribute_map = {
2294        'status': {'key': 'status', 'type': 'str'},
2295        'update_date_time': {'key': 'updateDateTime', 'type': 'iso-8601'},
2296        'comments': {'key': 'comments', 'type': 'str'},
2297        'additional_order_details': {'key': 'additionalOrderDetails', 'type': '{str}'},
2298    }
2299
2300    def __init__(
2301        self,
2302        *,
2303        status: Union[str, "OrderState"],
2304        comments: Optional[str] = None,
2305        **kwargs
2306    ):
2307        super(OrderStatus, self).__init__(**kwargs)
2308        self.status = status
2309        self.update_date_time = None
2310        self.comments = comments
2311        self.additional_order_details = None
2312
2313
2314class PeriodicTimerEventTrigger(Trigger):
2315    """Trigger details.
2316
2317    Variables are only populated by the server, and will be ignored when sending a request.
2318
2319    All required parameters must be populated in order to send to Azure.
2320
2321    :ivar id: The path ID that uniquely identifies the object.
2322    :vartype id: str
2323    :ivar name: The object name.
2324    :vartype name: str
2325    :ivar type: The hierarchical type of the object.
2326    :vartype type: str
2327    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
2328     "FileEvent", "PeriodicTimerEvent".
2329    :type kind: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.TriggerEventType
2330    :param source_info: Required. Periodic timer details.
2331    :type source_info: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.PeriodicTimerSourceInfo
2332    :param sink_info: Required. Role Sink information.
2333    :type sink_info: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RoleSinkInfo
2334    :param custom_context_tag: A custom context tag typically used to correlate the trigger against
2335     its usage. For example, if a periodic timer trigger is intended for certain specific IoT
2336     modules in the device, the tag can be the name or the image URL of the module.
2337    :type custom_context_tag: str
2338    """
2339
2340    _validation = {
2341        'id': {'readonly': True},
2342        'name': {'readonly': True},
2343        'type': {'readonly': True},
2344        'kind': {'required': True},
2345        'source_info': {'required': True},
2346        'sink_info': {'required': True},
2347    }
2348
2349    _attribute_map = {
2350        'id': {'key': 'id', 'type': 'str'},
2351        'name': {'key': 'name', 'type': 'str'},
2352        'type': {'key': 'type', 'type': 'str'},
2353        'kind': {'key': 'kind', 'type': 'str'},
2354        'source_info': {'key': 'properties.sourceInfo', 'type': 'PeriodicTimerSourceInfo'},
2355        'sink_info': {'key': 'properties.sinkInfo', 'type': 'RoleSinkInfo'},
2356        'custom_context_tag': {'key': 'properties.customContextTag', 'type': 'str'},
2357    }
2358
2359    def __init__(
2360        self,
2361        *,
2362        source_info: "PeriodicTimerSourceInfo",
2363        sink_info: "RoleSinkInfo",
2364        custom_context_tag: Optional[str] = None,
2365        **kwargs
2366    ):
2367        super(PeriodicTimerEventTrigger, self).__init__(**kwargs)
2368        self.kind = 'PeriodicTimerEvent'  # type: str
2369        self.source_info = source_info
2370        self.sink_info = sink_info
2371        self.custom_context_tag = custom_context_tag
2372
2373
2374class PeriodicTimerSourceInfo(msrest.serialization.Model):
2375    """Periodic timer event source.
2376
2377    All required parameters must be populated in order to send to Azure.
2378
2379    :param start_time: Required. The time of the day that results in a valid trigger. Schedule is
2380     computed with reference to the time specified upto seconds. If timezone is not specified the
2381     time will considered to be in device timezone. The value will always be returned as UTC time.
2382    :type start_time: ~datetime.datetime
2383    :param schedule: Required. Periodic frequency at which timer event needs to be raised. Supports
2384     daily, hourly, minutes, and seconds.
2385    :type schedule: str
2386    :param topic: Topic where periodic events are published to IoT device.
2387    :type topic: str
2388    """
2389
2390    _validation = {
2391        'start_time': {'required': True},
2392        'schedule': {'required': True},
2393    }
2394
2395    _attribute_map = {
2396        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2397        'schedule': {'key': 'schedule', 'type': 'str'},
2398        'topic': {'key': 'topic', 'type': 'str'},
2399    }
2400
2401    def __init__(
2402        self,
2403        *,
2404        start_time: datetime.datetime,
2405        schedule: str,
2406        topic: Optional[str] = None,
2407        **kwargs
2408    ):
2409        super(PeriodicTimerSourceInfo, self).__init__(**kwargs)
2410        self.start_time = start_time
2411        self.schedule = schedule
2412        self.topic = topic
2413
2414
2415class RefreshDetails(msrest.serialization.Model):
2416    """Fields for tracking refresh job on the share or container.
2417
2418    :param in_progress_refresh_job_id: If a refresh job is currently in progress on this share or
2419     container, this field indicates the ARM resource ID of that job. The field is empty if no job
2420     is in progress.
2421    :type in_progress_refresh_job_id: str
2422    :param last_completed_refresh_job_time_in_utc: Indicates the completed time for the last
2423     refresh job on this particular share or container, if any.This could be a failed job or a
2424     successful job.
2425    :type last_completed_refresh_job_time_in_utc: ~datetime.datetime
2426    :param error_manifest_file: Indicates the relative path of the error xml for the last refresh
2427     job on this particular share or container, if any. This could be a failed job or a successful
2428     job.
2429    :type error_manifest_file: str
2430    :param last_job: Indicates the id of the last refresh job on this particular share or
2431     container,if any. This could be a failed job or a successful job.
2432    :type last_job: str
2433    """
2434
2435    _attribute_map = {
2436        'in_progress_refresh_job_id': {'key': 'inProgressRefreshJobId', 'type': 'str'},
2437        'last_completed_refresh_job_time_in_utc': {'key': 'lastCompletedRefreshJobTimeInUTC', 'type': 'iso-8601'},
2438        'error_manifest_file': {'key': 'errorManifestFile', 'type': 'str'},
2439        'last_job': {'key': 'lastJob', 'type': 'str'},
2440    }
2441
2442    def __init__(
2443        self,
2444        *,
2445        in_progress_refresh_job_id: Optional[str] = None,
2446        last_completed_refresh_job_time_in_utc: Optional[datetime.datetime] = None,
2447        error_manifest_file: Optional[str] = None,
2448        last_job: Optional[str] = None,
2449        **kwargs
2450    ):
2451        super(RefreshDetails, self).__init__(**kwargs)
2452        self.in_progress_refresh_job_id = in_progress_refresh_job_id
2453        self.last_completed_refresh_job_time_in_utc = last_completed_refresh_job_time_in_utc
2454        self.error_manifest_file = error_manifest_file
2455        self.last_job = last_job
2456
2457
2458class ResourceTypeSku(msrest.serialization.Model):
2459    """SkuInformation object.
2460
2461    Variables are only populated by the server, and will be ignored when sending a request.
2462
2463    :ivar resource_type: The type of the resource.
2464    :vartype resource_type: str
2465    :ivar name: The Sku name. Possible values include: "Gateway", "Edge", "TEA_1Node",
2466     "TEA_1Node_UPS", "TEA_1Node_Heater", "TEA_1Node_UPS_Heater", "TEA_4Node_Heater",
2467     "TEA_4Node_UPS_Heater", "TMA", "TDC", "TCA_Large", "TCA_Small", "GPU".
2468    :vartype name: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuName
2469    :ivar kind: The Sku kind.
2470    :vartype kind: str
2471    :ivar tier: The Sku tier. Possible values include: "Standard".
2472    :vartype tier: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuTier
2473    :ivar family: The Sku family.
2474    :vartype family: str
2475    :ivar locations: Availability of the SKU for the region.
2476    :vartype locations: list[str]
2477    :ivar api_versions: The API versions in which SKU is available.
2478    :vartype api_versions: list[str]
2479    :ivar location_info: Availability of the SKU for the location/zone.
2480    :vartype location_info:
2481     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuLocationInfo]
2482    :ivar costs: The pricing info of the Sku.
2483    :vartype costs: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuCost]
2484    :ivar restrictions: Restrictions of the SKU availability.
2485    :vartype restrictions: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuRestriction]
2486    """
2487
2488    _validation = {
2489        'resource_type': {'readonly': True},
2490        'name': {'readonly': True},
2491        'kind': {'readonly': True},
2492        'tier': {'readonly': True},
2493        'family': {'readonly': True},
2494        'locations': {'readonly': True},
2495        'api_versions': {'readonly': True},
2496        'location_info': {'readonly': True},
2497        'costs': {'readonly': True},
2498        'restrictions': {'readonly': True},
2499    }
2500
2501    _attribute_map = {
2502        'resource_type': {'key': 'resourceType', 'type': 'str'},
2503        'name': {'key': 'name', 'type': 'str'},
2504        'kind': {'key': 'kind', 'type': 'str'},
2505        'tier': {'key': 'tier', 'type': 'str'},
2506        'family': {'key': 'family', 'type': 'str'},
2507        'locations': {'key': 'locations', 'type': '[str]'},
2508        'api_versions': {'key': 'apiVersions', 'type': '[str]'},
2509        'location_info': {'key': 'locationInfo', 'type': '[SkuLocationInfo]'},
2510        'costs': {'key': 'costs', 'type': '[SkuCost]'},
2511        'restrictions': {'key': 'restrictions', 'type': '[SkuRestriction]'},
2512    }
2513
2514    def __init__(
2515        self,
2516        **kwargs
2517    ):
2518        super(ResourceTypeSku, self).__init__(**kwargs)
2519        self.resource_type = None
2520        self.name = None
2521        self.kind = None
2522        self.tier = None
2523        self.family = None
2524        self.locations = None
2525        self.api_versions = None
2526        self.location_info = None
2527        self.costs = None
2528        self.restrictions = None
2529
2530
2531class RoleList(msrest.serialization.Model):
2532    """Collection of all the roles on the Data Box Edge device.
2533
2534    Variables are only populated by the server, and will be ignored when sending a request.
2535
2536    :ivar value: The Value.
2537    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.Role]
2538    :ivar next_link: Link to the next set of results.
2539    :vartype next_link: str
2540    """
2541
2542    _validation = {
2543        'value': {'readonly': True},
2544        'next_link': {'readonly': True},
2545    }
2546
2547    _attribute_map = {
2548        'value': {'key': 'value', 'type': '[Role]'},
2549        'next_link': {'key': 'nextLink', 'type': 'str'},
2550    }
2551
2552    def __init__(
2553        self,
2554        **kwargs
2555    ):
2556        super(RoleList, self).__init__(**kwargs)
2557        self.value = None
2558        self.next_link = None
2559
2560
2561class RoleSinkInfo(msrest.serialization.Model):
2562    """Compute role against which events will be raised.
2563
2564    All required parameters must be populated in order to send to Azure.
2565
2566    :param role_id: Required. Compute role ID.
2567    :type role_id: str
2568    """
2569
2570    _validation = {
2571        'role_id': {'required': True},
2572    }
2573
2574    _attribute_map = {
2575        'role_id': {'key': 'roleId', 'type': 'str'},
2576    }
2577
2578    def __init__(
2579        self,
2580        *,
2581        role_id: str,
2582        **kwargs
2583    ):
2584        super(RoleSinkInfo, self).__init__(**kwargs)
2585        self.role_id = role_id
2586
2587
2588class SecuritySettings(ARMBaseModel):
2589    """The security settings of a device.
2590
2591    Variables are only populated by the server, and will be ignored when sending a request.
2592
2593    All required parameters must be populated in order to send to Azure.
2594
2595    :ivar id: The path ID that uniquely identifies the object.
2596    :vartype id: str
2597    :ivar name: The object name.
2598    :vartype name: str
2599    :ivar type: The hierarchical type of the object.
2600    :vartype type: str
2601    :param device_admin_password: Required. Device administrator password as an encrypted string
2602     (encrypted using RSA PKCS #1) is used to sign into the  local web UI of the device. The Actual
2603     password should have at least 8 characters that are a combination of  uppercase, lowercase,
2604     numeric, and special characters.
2605    :type device_admin_password:
2606     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AsymmetricEncryptedSecret
2607    """
2608
2609    _validation = {
2610        'id': {'readonly': True},
2611        'name': {'readonly': True},
2612        'type': {'readonly': True},
2613        'device_admin_password': {'required': True},
2614    }
2615
2616    _attribute_map = {
2617        'id': {'key': 'id', 'type': 'str'},
2618        'name': {'key': 'name', 'type': 'str'},
2619        'type': {'key': 'type', 'type': 'str'},
2620        'device_admin_password': {'key': 'properties.deviceAdminPassword', 'type': 'AsymmetricEncryptedSecret'},
2621    }
2622
2623    def __init__(
2624        self,
2625        *,
2626        device_admin_password: "AsymmetricEncryptedSecret",
2627        **kwargs
2628    ):
2629        super(SecuritySettings, self).__init__(**kwargs)
2630        self.device_admin_password = device_admin_password
2631
2632
2633class ServiceSpecification(msrest.serialization.Model):
2634    """Service specification.
2635
2636    :param metric_specifications: Metric specification as defined by shoebox.
2637    :type metric_specifications:
2638     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.MetricSpecificationV1]
2639    """
2640
2641    _attribute_map = {
2642        'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecificationV1]'},
2643    }
2644
2645    def __init__(
2646        self,
2647        *,
2648        metric_specifications: Optional[List["MetricSpecificationV1"]] = None,
2649        **kwargs
2650    ):
2651        super(ServiceSpecification, self).__init__(**kwargs)
2652        self.metric_specifications = metric_specifications
2653
2654
2655class Share(ARMBaseModel):
2656    """Represents a share on the  Data Box Edge/Gateway device.
2657
2658    Variables are only populated by the server, and will be ignored when sending a request.
2659
2660    All required parameters must be populated in order to send to Azure.
2661
2662    :ivar id: The path ID that uniquely identifies the object.
2663    :vartype id: str
2664    :ivar name: The object name.
2665    :vartype name: str
2666    :ivar type: The hierarchical type of the object.
2667    :vartype type: str
2668    :param description: Description for the share.
2669    :type description: str
2670    :param share_status: Required. Current status of the share. Possible values include: "Offline",
2671     "Unknown", "OK", "Updating", "NeedsAttention".
2672    :type share_status: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ShareStatus
2673    :param monitoring_status: Required. Current monitoring status of the share. Possible values
2674     include: "Enabled", "Disabled".
2675    :type monitoring_status: str or
2676     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.MonitoringStatus
2677    :param azure_container_info: Azure container mapping for the share.
2678    :type azure_container_info:
2679     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AzureContainerInfo
2680    :param access_protocol: Required. Access protocol to be used by the share. Possible values
2681     include: "SMB", "NFS".
2682    :type access_protocol: str or
2683     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ShareAccessProtocol
2684    :param user_access_rights: Mapping of users and corresponding access rights on the share
2685     (required for SMB protocol).
2686    :type user_access_rights:
2687     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.UserAccessRight]
2688    :param client_access_rights: List of IP addresses and corresponding access rights on the
2689     share(required for NFS protocol).
2690    :type client_access_rights:
2691     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.ClientAccessRight]
2692    :param refresh_details: Details of the refresh job on this share.
2693    :type refresh_details: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.RefreshDetails
2694    :ivar share_mappings: Share mount point to the role.
2695    :vartype share_mappings: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.MountPointMap]
2696    :param data_policy: Data policy of the share. Possible values include: "Cloud", "Local".
2697    :type data_policy: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.DataPolicy
2698    """
2699
2700    _validation = {
2701        'id': {'readonly': True},
2702        'name': {'readonly': True},
2703        'type': {'readonly': True},
2704        'share_status': {'required': True},
2705        'monitoring_status': {'required': True},
2706        'access_protocol': {'required': True},
2707        'share_mappings': {'readonly': True},
2708    }
2709
2710    _attribute_map = {
2711        'id': {'key': 'id', 'type': 'str'},
2712        'name': {'key': 'name', 'type': 'str'},
2713        'type': {'key': 'type', 'type': 'str'},
2714        'description': {'key': 'properties.description', 'type': 'str'},
2715        'share_status': {'key': 'properties.shareStatus', 'type': 'str'},
2716        'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'},
2717        'azure_container_info': {'key': 'properties.azureContainerInfo', 'type': 'AzureContainerInfo'},
2718        'access_protocol': {'key': 'properties.accessProtocol', 'type': 'str'},
2719        'user_access_rights': {'key': 'properties.userAccessRights', 'type': '[UserAccessRight]'},
2720        'client_access_rights': {'key': 'properties.clientAccessRights', 'type': '[ClientAccessRight]'},
2721        'refresh_details': {'key': 'properties.refreshDetails', 'type': 'RefreshDetails'},
2722        'share_mappings': {'key': 'properties.shareMappings', 'type': '[MountPointMap]'},
2723        'data_policy': {'key': 'properties.dataPolicy', 'type': 'str'},
2724    }
2725
2726    def __init__(
2727        self,
2728        *,
2729        share_status: Union[str, "ShareStatus"],
2730        monitoring_status: Union[str, "MonitoringStatus"],
2731        access_protocol: Union[str, "ShareAccessProtocol"],
2732        description: Optional[str] = None,
2733        azure_container_info: Optional["AzureContainerInfo"] = None,
2734        user_access_rights: Optional[List["UserAccessRight"]] = None,
2735        client_access_rights: Optional[List["ClientAccessRight"]] = None,
2736        refresh_details: Optional["RefreshDetails"] = None,
2737        data_policy: Optional[Union[str, "DataPolicy"]] = None,
2738        **kwargs
2739    ):
2740        super(Share, self).__init__(**kwargs)
2741        self.description = description
2742        self.share_status = share_status
2743        self.monitoring_status = monitoring_status
2744        self.azure_container_info = azure_container_info
2745        self.access_protocol = access_protocol
2746        self.user_access_rights = user_access_rights
2747        self.client_access_rights = client_access_rights
2748        self.refresh_details = refresh_details
2749        self.share_mappings = None
2750        self.data_policy = data_policy
2751
2752
2753class ShareAccessRight(msrest.serialization.Model):
2754    """Specifies the mapping between this particular user and the type of access he has on shares on this device.
2755
2756    All required parameters must be populated in order to send to Azure.
2757
2758    :param share_id: Required. The share ID.
2759    :type share_id: str
2760    :param access_type: Required. Type of access to be allowed on the share for this user. Possible
2761     values include: "Change", "Read", "Custom".
2762    :type access_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ShareAccessType
2763    """
2764
2765    _validation = {
2766        'share_id': {'required': True},
2767        'access_type': {'required': True},
2768    }
2769
2770    _attribute_map = {
2771        'share_id': {'key': 'shareId', 'type': 'str'},
2772        'access_type': {'key': 'accessType', 'type': 'str'},
2773    }
2774
2775    def __init__(
2776        self,
2777        *,
2778        share_id: str,
2779        access_type: Union[str, "ShareAccessType"],
2780        **kwargs
2781    ):
2782        super(ShareAccessRight, self).__init__(**kwargs)
2783        self.share_id = share_id
2784        self.access_type = access_type
2785
2786
2787class ShareList(msrest.serialization.Model):
2788    """Collection of all the shares on the Data Box Edge/Gateway device.
2789
2790    Variables are only populated by the server, and will be ignored when sending a request.
2791
2792    :ivar value: The list of shares.
2793    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.Share]
2794    :ivar next_link: Link to the next set of results.
2795    :vartype next_link: str
2796    """
2797
2798    _validation = {
2799        'value': {'readonly': True},
2800        'next_link': {'readonly': True},
2801    }
2802
2803    _attribute_map = {
2804        'value': {'key': 'value', 'type': '[Share]'},
2805        'next_link': {'key': 'nextLink', 'type': 'str'},
2806    }
2807
2808    def __init__(
2809        self,
2810        **kwargs
2811    ):
2812        super(ShareList, self).__init__(**kwargs)
2813        self.value = None
2814        self.next_link = None
2815
2816
2817class Sku(msrest.serialization.Model):
2818    """The SKU type.
2819
2820    :param name: SKU name. Possible values include: "Gateway", "Edge", "TEA_1Node",
2821     "TEA_1Node_UPS", "TEA_1Node_Heater", "TEA_1Node_UPS_Heater", "TEA_4Node_Heater",
2822     "TEA_4Node_UPS_Heater", "TMA", "TDC", "TCA_Large", "TCA_Small", "GPU".
2823    :type name: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuName
2824    :param tier: The SKU tier. This is based on the SKU name. Possible values include: "Standard".
2825    :type tier: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuTier
2826    """
2827
2828    _attribute_map = {
2829        'name': {'key': 'name', 'type': 'str'},
2830        'tier': {'key': 'tier', 'type': 'str'},
2831    }
2832
2833    def __init__(
2834        self,
2835        *,
2836        name: Optional[Union[str, "SkuName"]] = None,
2837        tier: Optional[Union[str, "SkuTier"]] = None,
2838        **kwargs
2839    ):
2840        super(Sku, self).__init__(**kwargs)
2841        self.name = name
2842        self.tier = tier
2843
2844
2845class SKUCapability(msrest.serialization.Model):
2846    """The capabilities of the SKU.
2847
2848    Variables are only populated by the server, and will be ignored when sending a request.
2849
2850    :ivar name: The capability name.
2851    :vartype name: str
2852    :ivar value: The capability value.
2853    :vartype value: str
2854    """
2855
2856    _validation = {
2857        'name': {'readonly': True},
2858        'value': {'readonly': True},
2859    }
2860
2861    _attribute_map = {
2862        'name': {'key': 'name', 'type': 'str'},
2863        'value': {'key': 'value', 'type': 'str'},
2864    }
2865
2866    def __init__(
2867        self,
2868        **kwargs
2869    ):
2870        super(SKUCapability, self).__init__(**kwargs)
2871        self.name = None
2872        self.value = None
2873
2874
2875class SkuCost(msrest.serialization.Model):
2876    """The metadata for retrieving price info.
2877
2878    Variables are only populated by the server, and will be ignored when sending a request.
2879
2880    :ivar meter_id: Used for querying price from commerce.
2881    :vartype meter_id: str
2882    :ivar quantity: The cost quantity.
2883    :vartype quantity: long
2884    :ivar extended_unit: The extended unit.
2885    :vartype extended_unit: str
2886    """
2887
2888    _validation = {
2889        'meter_id': {'readonly': True},
2890        'quantity': {'readonly': True},
2891        'extended_unit': {'readonly': True},
2892    }
2893
2894    _attribute_map = {
2895        'meter_id': {'key': 'meterId', 'type': 'str'},
2896        'quantity': {'key': 'quantity', 'type': 'long'},
2897        'extended_unit': {'key': 'extendedUnit', 'type': 'str'},
2898    }
2899
2900    def __init__(
2901        self,
2902        **kwargs
2903    ):
2904        super(SkuCost, self).__init__(**kwargs)
2905        self.meter_id = None
2906        self.quantity = None
2907        self.extended_unit = None
2908
2909
2910class SkuInformation(msrest.serialization.Model):
2911    """Sku information.
2912
2913    Variables are only populated by the server, and will be ignored when sending a request.
2914
2915    :ivar resource_type: The resource type.
2916    :vartype resource_type: str
2917    :ivar name: The sku name.
2918    :vartype name: str
2919    :ivar tier: The sku tier.
2920    :vartype tier: str
2921    :ivar kind: The sku kind.
2922    :vartype kind: str
2923    :ivar size: The sku size.
2924    :vartype size: str
2925    :ivar family: The sku family.
2926    :vartype family: str
2927    :ivar locations: The locations where Sku is available.
2928    :vartype locations: list[str]
2929    :ivar location_info: The locations where Sku is available with zones and sites info.
2930    :vartype location_info:
2931     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuLocationInfo]
2932    :ivar required_quota_ids: The required quotaIds for the sku to be available.
2933    :vartype required_quota_ids: list[str]
2934    :ivar required_features: The required features for the sku to be available.
2935    :vartype required_features: list[str]
2936    :ivar costs: The cost of the SKU.
2937    :vartype costs: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuCost]
2938    :ivar capabilities: The capabilities of the SKU.
2939    :vartype capabilities: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.SKUCapability]
2940    """
2941
2942    _validation = {
2943        'resource_type': {'readonly': True},
2944        'name': {'readonly': True},
2945        'tier': {'readonly': True},
2946        'kind': {'readonly': True},
2947        'size': {'readonly': True},
2948        'family': {'readonly': True},
2949        'locations': {'readonly': True},
2950        'location_info': {'readonly': True},
2951        'required_quota_ids': {'readonly': True},
2952        'required_features': {'readonly': True},
2953        'costs': {'readonly': True},
2954        'capabilities': {'readonly': True},
2955    }
2956
2957    _attribute_map = {
2958        'resource_type': {'key': 'resourceType', 'type': 'str'},
2959        'name': {'key': 'name', 'type': 'str'},
2960        'tier': {'key': 'tier', 'type': 'str'},
2961        'kind': {'key': 'kind', 'type': 'str'},
2962        'size': {'key': 'size', 'type': 'str'},
2963        'family': {'key': 'family', 'type': 'str'},
2964        'locations': {'key': 'locations', 'type': '[str]'},
2965        'location_info': {'key': 'locationInfo', 'type': '[SkuLocationInfo]'},
2966        'required_quota_ids': {'key': 'requiredQuotaIds', 'type': '[str]'},
2967        'required_features': {'key': 'requiredFeatures', 'type': '[str]'},
2968        'costs': {'key': 'costs', 'type': '[SkuCost]'},
2969        'capabilities': {'key': 'capabilities', 'type': '[SKUCapability]'},
2970    }
2971
2972    def __init__(
2973        self,
2974        **kwargs
2975    ):
2976        super(SkuInformation, self).__init__(**kwargs)
2977        self.resource_type = None
2978        self.name = None
2979        self.tier = None
2980        self.kind = None
2981        self.size = None
2982        self.family = None
2983        self.locations = None
2984        self.location_info = None
2985        self.required_quota_ids = None
2986        self.required_features = None
2987        self.costs = None
2988        self.capabilities = None
2989
2990
2991class SkuInformationList(msrest.serialization.Model):
2992    """List of SKU Information objects.
2993
2994    Variables are only populated by the server, and will be ignored when sending a request.
2995
2996    :ivar value: List of ResourceType Sku.
2997    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.ResourceTypeSku]
2998    :ivar next_link: Links to the next set of results.
2999    :vartype next_link: str
3000    """
3001
3002    _validation = {
3003        'value': {'readonly': True},
3004        'next_link': {'readonly': True},
3005    }
3006
3007    _attribute_map = {
3008        'value': {'key': 'value', 'type': '[ResourceTypeSku]'},
3009        'next_link': {'key': 'nextLink', 'type': 'str'},
3010    }
3011
3012    def __init__(
3013        self,
3014        **kwargs
3015    ):
3016        super(SkuInformationList, self).__init__(**kwargs)
3017        self.value = None
3018        self.next_link = None
3019
3020
3021class SkuLocationInfo(msrest.serialization.Model):
3022    """The location info.
3023
3024    Variables are only populated by the server, and will be ignored when sending a request.
3025
3026    :ivar location: The location.
3027    :vartype location: str
3028    :ivar zones: The zones.
3029    :vartype zones: list[str]
3030    :ivar sites: The sites.
3031    :vartype sites: list[str]
3032    """
3033
3034    _validation = {
3035        'location': {'readonly': True},
3036        'zones': {'readonly': True},
3037        'sites': {'readonly': True},
3038    }
3039
3040    _attribute_map = {
3041        'location': {'key': 'location', 'type': 'str'},
3042        'zones': {'key': 'zones', 'type': '[str]'},
3043        'sites': {'key': 'sites', 'type': '[str]'},
3044    }
3045
3046    def __init__(
3047        self,
3048        **kwargs
3049    ):
3050        super(SkuLocationInfo, self).__init__(**kwargs)
3051        self.location = None
3052        self.zones = None
3053        self.sites = None
3054
3055
3056class SkuRestriction(msrest.serialization.Model):
3057    """The restrictions because of which SKU cannot be used.
3058
3059    Variables are only populated by the server, and will be ignored when sending a request.
3060
3061    :ivar type: The type of the restriction.
3062    :vartype type: str
3063    :ivar values: The locations where sku is restricted.
3064    :vartype values: list[str]
3065    :ivar reason_code: The SKU restriction reason. Possible values include:
3066     "NotAvailableForSubscription", "QuotaId".
3067    :vartype reason_code: str or
3068     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuRestrictionReasonCode
3069    :ivar restriction_info: Restriction of the SKU for the location/zone.
3070    :vartype restriction_info:
3071     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SkuRestrictionInfo
3072    """
3073
3074    _validation = {
3075        'type': {'readonly': True},
3076        'values': {'readonly': True},
3077        'reason_code': {'readonly': True},
3078        'restriction_info': {'readonly': True},
3079    }
3080
3081    _attribute_map = {
3082        'type': {'key': 'type', 'type': 'str'},
3083        'values': {'key': 'values', 'type': '[str]'},
3084        'reason_code': {'key': 'reasonCode', 'type': 'str'},
3085        'restriction_info': {'key': 'restrictionInfo', 'type': 'SkuRestrictionInfo'},
3086    }
3087
3088    def __init__(
3089        self,
3090        **kwargs
3091    ):
3092        super(SkuRestriction, self).__init__(**kwargs)
3093        self.type = None
3094        self.values = None
3095        self.reason_code = None
3096        self.restriction_info = None
3097
3098
3099class SkuRestrictionInfo(msrest.serialization.Model):
3100    """The restriction info with locations and zones.
3101
3102    Variables are only populated by the server, and will be ignored when sending a request.
3103
3104    :ivar locations: The locations.
3105    :vartype locations: list[str]
3106    :ivar zones: The zones.
3107    :vartype zones: list[str]
3108    """
3109
3110    _validation = {
3111        'locations': {'readonly': True},
3112        'zones': {'readonly': True},
3113    }
3114
3115    _attribute_map = {
3116        'locations': {'key': 'locations', 'type': '[str]'},
3117        'zones': {'key': 'zones', 'type': '[str]'},
3118    }
3119
3120    def __init__(
3121        self,
3122        **kwargs
3123    ):
3124        super(SkuRestrictionInfo, self).__init__(**kwargs)
3125        self.locations = None
3126        self.zones = None
3127
3128
3129class StorageAccount(ARMBaseModel):
3130    """Represents a Storage Account on the  Data Box Edge/Gateway device.
3131
3132    Variables are only populated by the server, and will be ignored when sending a request.
3133
3134    :ivar id: The path ID that uniquely identifies the object.
3135    :vartype id: str
3136    :ivar name: The object name.
3137    :vartype name: str
3138    :ivar type: The hierarchical type of the object.
3139    :vartype type: str
3140    :param description: Description for the storage Account.
3141    :type description: str
3142    :param storage_account_status: Current status of the storage account. Possible values include:
3143     "OK", "Offline", "Unknown", "Updating", "NeedsAttention".
3144    :type storage_account_status: str or
3145     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.StorageAccountStatus
3146    :param data_policy: Data policy of the storage Account. Possible values include: "Cloud",
3147     "Local".
3148    :type data_policy: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.DataPolicy
3149    :param storage_account_credential_id: Storage Account Credential Id.
3150    :type storage_account_credential_id: str
3151    :ivar blob_endpoint: BlobEndpoint of Storage Account.
3152    :vartype blob_endpoint: str
3153    :ivar container_count: The Container Count. Present only for Storage Accounts with DataPolicy
3154     set to Cloud.
3155    :vartype container_count: int
3156    """
3157
3158    _validation = {
3159        'id': {'readonly': True},
3160        'name': {'readonly': True},
3161        'type': {'readonly': True},
3162        'blob_endpoint': {'readonly': True},
3163        'container_count': {'readonly': True},
3164    }
3165
3166    _attribute_map = {
3167        'id': {'key': 'id', 'type': 'str'},
3168        'name': {'key': 'name', 'type': 'str'},
3169        'type': {'key': 'type', 'type': 'str'},
3170        'description': {'key': 'properties.description', 'type': 'str'},
3171        'storage_account_status': {'key': 'properties.storageAccountStatus', 'type': 'str'},
3172        'data_policy': {'key': 'properties.dataPolicy', 'type': 'str'},
3173        'storage_account_credential_id': {'key': 'properties.storageAccountCredentialId', 'type': 'str'},
3174        'blob_endpoint': {'key': 'properties.blobEndpoint', 'type': 'str'},
3175        'container_count': {'key': 'properties.containerCount', 'type': 'int'},
3176    }
3177
3178    def __init__(
3179        self,
3180        *,
3181        description: Optional[str] = None,
3182        storage_account_status: Optional[Union[str, "StorageAccountStatus"]] = None,
3183        data_policy: Optional[Union[str, "DataPolicy"]] = None,
3184        storage_account_credential_id: Optional[str] = None,
3185        **kwargs
3186    ):
3187        super(StorageAccount, self).__init__(**kwargs)
3188        self.description = description
3189        self.storage_account_status = storage_account_status
3190        self.data_policy = data_policy
3191        self.storage_account_credential_id = storage_account_credential_id
3192        self.blob_endpoint = None
3193        self.container_count = None
3194
3195
3196class StorageAccountCredential(ARMBaseModel):
3197    """The storage account credential.
3198
3199    Variables are only populated by the server, and will be ignored when sending a request.
3200
3201    All required parameters must be populated in order to send to Azure.
3202
3203    :ivar id: The path ID that uniquely identifies the object.
3204    :vartype id: str
3205    :ivar name: The object name.
3206    :vartype name: str
3207    :ivar type: The hierarchical type of the object.
3208    :vartype type: str
3209    :param alias: Required. Alias for the storage account.
3210    :type alias: str
3211    :param user_name: Username for the storage account.
3212    :type user_name: str
3213    :param account_key: Encrypted storage key.
3214    :type account_key: ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AsymmetricEncryptedSecret
3215    :param connection_string: Connection string for the storage account. Use this string if
3216     username and account key are not specified.
3217    :type connection_string: str
3218    :param ssl_status: Required. Signifies whether SSL needs to be enabled or not. Possible values
3219     include: "Enabled", "Disabled".
3220    :type ssl_status: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.SSLStatus
3221    :param blob_domain_name: Blob end point for private clouds.
3222    :type blob_domain_name: str
3223    :param account_type: Required. Type of storage accessed on the storage account. Possible values
3224     include: "GeneralPurposeStorage", "BlobStorage".
3225    :type account_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AccountType
3226    :param storage_account_id: Id of the storage account.
3227    :type storage_account_id: str
3228    """
3229
3230    _validation = {
3231        'id': {'readonly': True},
3232        'name': {'readonly': True},
3233        'type': {'readonly': True},
3234        'alias': {'required': True},
3235        'ssl_status': {'required': True},
3236        'account_type': {'required': True},
3237    }
3238
3239    _attribute_map = {
3240        'id': {'key': 'id', 'type': 'str'},
3241        'name': {'key': 'name', 'type': 'str'},
3242        'type': {'key': 'type', 'type': 'str'},
3243        'alias': {'key': 'properties.alias', 'type': 'str'},
3244        'user_name': {'key': 'properties.userName', 'type': 'str'},
3245        'account_key': {'key': 'properties.accountKey', 'type': 'AsymmetricEncryptedSecret'},
3246        'connection_string': {'key': 'properties.connectionString', 'type': 'str'},
3247        'ssl_status': {'key': 'properties.sslStatus', 'type': 'str'},
3248        'blob_domain_name': {'key': 'properties.blobDomainName', 'type': 'str'},
3249        'account_type': {'key': 'properties.accountType', 'type': 'str'},
3250        'storage_account_id': {'key': 'properties.storageAccountId', 'type': 'str'},
3251    }
3252
3253    def __init__(
3254        self,
3255        *,
3256        alias: str,
3257        ssl_status: Union[str, "SSLStatus"],
3258        account_type: Union[str, "AccountType"],
3259        user_name: Optional[str] = None,
3260        account_key: Optional["AsymmetricEncryptedSecret"] = None,
3261        connection_string: Optional[str] = None,
3262        blob_domain_name: Optional[str] = None,
3263        storage_account_id: Optional[str] = None,
3264        **kwargs
3265    ):
3266        super(StorageAccountCredential, self).__init__(**kwargs)
3267        self.alias = alias
3268        self.user_name = user_name
3269        self.account_key = account_key
3270        self.connection_string = connection_string
3271        self.ssl_status = ssl_status
3272        self.blob_domain_name = blob_domain_name
3273        self.account_type = account_type
3274        self.storage_account_id = storage_account_id
3275
3276
3277class StorageAccountCredentialList(msrest.serialization.Model):
3278    """The collection of storage account credentials.
3279
3280    Variables are only populated by the server, and will be ignored when sending a request.
3281
3282    :ivar value: The value.
3283    :vartype value:
3284     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.StorageAccountCredential]
3285    :ivar next_link: Link to the next set of results.
3286    :vartype next_link: str
3287    """
3288
3289    _validation = {
3290        'value': {'readonly': True},
3291        'next_link': {'readonly': True},
3292    }
3293
3294    _attribute_map = {
3295        'value': {'key': 'value', 'type': '[StorageAccountCredential]'},
3296        'next_link': {'key': 'nextLink', 'type': 'str'},
3297    }
3298
3299    def __init__(
3300        self,
3301        **kwargs
3302    ):
3303        super(StorageAccountCredentialList, self).__init__(**kwargs)
3304        self.value = None
3305        self.next_link = None
3306
3307
3308class StorageAccountList(msrest.serialization.Model):
3309    """Collection of all the Storage Accounts on the Data Box Edge/Gateway device.
3310
3311    Variables are only populated by the server, and will be ignored when sending a request.
3312
3313    :ivar value: The list of storageAccounts.
3314    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.StorageAccount]
3315    :ivar next_link: Link to the next set of results.
3316    :vartype next_link: str
3317    """
3318
3319    _validation = {
3320        'value': {'readonly': True},
3321        'next_link': {'readonly': True},
3322    }
3323
3324    _attribute_map = {
3325        'value': {'key': 'value', 'type': '[StorageAccount]'},
3326        'next_link': {'key': 'nextLink', 'type': 'str'},
3327    }
3328
3329    def __init__(
3330        self,
3331        **kwargs
3332    ):
3333        super(StorageAccountList, self).__init__(**kwargs)
3334        self.value = None
3335        self.next_link = None
3336
3337
3338class SymmetricKey(msrest.serialization.Model):
3339    """Symmetric key for authentication.
3340
3341    :param connection_string: Connection string based on the symmetric key.
3342    :type connection_string:
3343     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AsymmetricEncryptedSecret
3344    """
3345
3346    _attribute_map = {
3347        'connection_string': {'key': 'connectionString', 'type': 'AsymmetricEncryptedSecret'},
3348    }
3349
3350    def __init__(
3351        self,
3352        *,
3353        connection_string: Optional["AsymmetricEncryptedSecret"] = None,
3354        **kwargs
3355    ):
3356        super(SymmetricKey, self).__init__(**kwargs)
3357        self.connection_string = connection_string
3358
3359
3360class TrackingInfo(msrest.serialization.Model):
3361    """Tracking courier information.
3362
3363    :param serial_number: Serial number of the device being tracked.
3364    :type serial_number: str
3365    :param carrier_name: Name of the carrier used in the delivery.
3366    :type carrier_name: str
3367    :param tracking_id: Tracking ID of the shipment.
3368    :type tracking_id: str
3369    :param tracking_url: Tracking URL of the shipment.
3370    :type tracking_url: str
3371    """
3372
3373    _attribute_map = {
3374        'serial_number': {'key': 'serialNumber', 'type': 'str'},
3375        'carrier_name': {'key': 'carrierName', 'type': 'str'},
3376        'tracking_id': {'key': 'trackingId', 'type': 'str'},
3377        'tracking_url': {'key': 'trackingUrl', 'type': 'str'},
3378    }
3379
3380    def __init__(
3381        self,
3382        *,
3383        serial_number: Optional[str] = None,
3384        carrier_name: Optional[str] = None,
3385        tracking_id: Optional[str] = None,
3386        tracking_url: Optional[str] = None,
3387        **kwargs
3388    ):
3389        super(TrackingInfo, self).__init__(**kwargs)
3390        self.serial_number = serial_number
3391        self.carrier_name = carrier_name
3392        self.tracking_id = tracking_id
3393        self.tracking_url = tracking_url
3394
3395
3396class TriggerList(msrest.serialization.Model):
3397    """Collection of all trigger on the data box edge device.
3398
3399    Variables are only populated by the server, and will be ignored when sending a request.
3400
3401    :ivar value: The list of triggers.
3402    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.Trigger]
3403    :ivar next_link: Link to the next set of results.
3404    :vartype next_link: str
3405    """
3406
3407    _validation = {
3408        'value': {'readonly': True},
3409        'next_link': {'readonly': True},
3410    }
3411
3412    _attribute_map = {
3413        'value': {'key': 'value', 'type': '[Trigger]'},
3414        'next_link': {'key': 'nextLink', 'type': 'str'},
3415    }
3416
3417    def __init__(
3418        self,
3419        **kwargs
3420    ):
3421        super(TriggerList, self).__init__(**kwargs)
3422        self.value = None
3423        self.next_link = None
3424
3425
3426class UpdateDownloadProgress(msrest.serialization.Model):
3427    """Details about the download progress of update.
3428
3429    Variables are only populated by the server, and will be ignored when sending a request.
3430
3431    :ivar download_phase: The download phase. Possible values include: "Unknown", "Initializing",
3432     "Downloading", "Verifying".
3433    :vartype download_phase: str or
3434     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.DownloadPhase
3435    :ivar percent_complete: Percentage of completion.
3436    :vartype percent_complete: int
3437    :ivar total_bytes_to_download: Total bytes to download.
3438    :vartype total_bytes_to_download: float
3439    :ivar total_bytes_downloaded: Total bytes downloaded.
3440    :vartype total_bytes_downloaded: float
3441    :ivar number_of_updates_to_download: Number of updates to download.
3442    :vartype number_of_updates_to_download: int
3443    :ivar number_of_updates_downloaded: Number of updates downloaded.
3444    :vartype number_of_updates_downloaded: int
3445    """
3446
3447    _validation = {
3448        'download_phase': {'readonly': True},
3449        'percent_complete': {'readonly': True},
3450        'total_bytes_to_download': {'readonly': True},
3451        'total_bytes_downloaded': {'readonly': True},
3452        'number_of_updates_to_download': {'readonly': True},
3453        'number_of_updates_downloaded': {'readonly': True},
3454    }
3455
3456    _attribute_map = {
3457        'download_phase': {'key': 'downloadPhase', 'type': 'str'},
3458        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
3459        'total_bytes_to_download': {'key': 'totalBytesToDownload', 'type': 'float'},
3460        'total_bytes_downloaded': {'key': 'totalBytesDownloaded', 'type': 'float'},
3461        'number_of_updates_to_download': {'key': 'numberOfUpdatesToDownload', 'type': 'int'},
3462        'number_of_updates_downloaded': {'key': 'numberOfUpdatesDownloaded', 'type': 'int'},
3463    }
3464
3465    def __init__(
3466        self,
3467        **kwargs
3468    ):
3469        super(UpdateDownloadProgress, self).__init__(**kwargs)
3470        self.download_phase = None
3471        self.percent_complete = None
3472        self.total_bytes_to_download = None
3473        self.total_bytes_downloaded = None
3474        self.number_of_updates_to_download = None
3475        self.number_of_updates_downloaded = None
3476
3477
3478class UpdateInstallProgress(msrest.serialization.Model):
3479    """Progress details during installation of updates.
3480
3481    Variables are only populated by the server, and will be ignored when sending a request.
3482
3483    :ivar percent_complete: Percentage completed.
3484    :vartype percent_complete: int
3485    :ivar number_of_updates_to_install: Number of updates to install.
3486    :vartype number_of_updates_to_install: int
3487    :ivar number_of_updates_installed: Number of updates installed.
3488    :vartype number_of_updates_installed: int
3489    """
3490
3491    _validation = {
3492        'percent_complete': {'readonly': True},
3493        'number_of_updates_to_install': {'readonly': True},
3494        'number_of_updates_installed': {'readonly': True},
3495    }
3496
3497    _attribute_map = {
3498        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
3499        'number_of_updates_to_install': {'key': 'numberOfUpdatesToInstall', 'type': 'int'},
3500        'number_of_updates_installed': {'key': 'numberOfUpdatesInstalled', 'type': 'int'},
3501    }
3502
3503    def __init__(
3504        self,
3505        **kwargs
3506    ):
3507        super(UpdateInstallProgress, self).__init__(**kwargs)
3508        self.percent_complete = None
3509        self.number_of_updates_to_install = None
3510        self.number_of_updates_installed = None
3511
3512
3513class UpdateSummary(ARMBaseModel):
3514    """Details about ongoing updates and availability of updates on the device.
3515
3516    Variables are only populated by the server, and will be ignored when sending a request.
3517
3518    :ivar id: The path ID that uniquely identifies the object.
3519    :vartype id: str
3520    :ivar name: The object name.
3521    :vartype name: str
3522    :ivar type: The hierarchical type of the object.
3523    :vartype type: str
3524    :param device_version_number: The current version of the device in format: 1.2.17312.13.",.
3525    :type device_version_number: str
3526    :param friendly_device_version_name: The current version of the device in text format.
3527    :type friendly_device_version_name: str
3528    :param device_last_scanned_date_time: The last time when a scan was done on the device.
3529    :type device_last_scanned_date_time: ~datetime.datetime
3530    :param last_completed_scan_job_date_time: The time when the last scan job was completed
3531     (success/cancelled/failed) on the appliance.
3532    :type last_completed_scan_job_date_time: ~datetime.datetime
3533    :ivar last_completed_download_job_date_time: The time when the last Download job was completed
3534     (success/cancelled/failed) on the appliance.
3535    :vartype last_completed_download_job_date_time: ~datetime.datetime
3536    :ivar last_completed_install_job_date_time: The time when the last Install job was completed
3537     (success/cancelled/failed) on the appliance.
3538    :vartype last_completed_install_job_date_time: ~datetime.datetime
3539    :ivar total_number_of_updates_available: The number of updates available for the current device
3540     version as per the last device scan.
3541    :vartype total_number_of_updates_available: int
3542    :ivar total_number_of_updates_pending_download: The total number of items pending download.
3543    :vartype total_number_of_updates_pending_download: int
3544    :ivar total_number_of_updates_pending_install: The total number of items pending install.
3545    :vartype total_number_of_updates_pending_install: int
3546    :ivar reboot_behavior: Indicates if updates are available and at least one of the updates needs
3547     a reboot. Possible values include: "NeverReboots", "RequiresReboot", "RequestReboot".
3548    :vartype reboot_behavior: str or
3549     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.InstallRebootBehavior
3550    :ivar ongoing_update_operation: The current update operation. Possible values include: "None",
3551     "Scan", "Download", "Install".
3552    :vartype ongoing_update_operation: str or
3553     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.UpdateOperation
3554    :ivar in_progress_download_job_id: The job ID of the download job in progress.
3555    :vartype in_progress_download_job_id: str
3556    :ivar in_progress_install_job_id: The job ID of the install job in progress.
3557    :vartype in_progress_install_job_id: str
3558    :ivar in_progress_download_job_started_date_time: The time when the currently running download
3559     (if any) started.
3560    :vartype in_progress_download_job_started_date_time: ~datetime.datetime
3561    :ivar in_progress_install_job_started_date_time: The time when the currently running install
3562     (if any) started.
3563    :vartype in_progress_install_job_started_date_time: ~datetime.datetime
3564    :ivar update_titles: The list of updates available for install.
3565    :vartype update_titles: list[str]
3566    :ivar total_update_size_in_bytes: The total size of updates available for download in bytes.
3567    :vartype total_update_size_in_bytes: float
3568    """
3569
3570    _validation = {
3571        'id': {'readonly': True},
3572        'name': {'readonly': True},
3573        'type': {'readonly': True},
3574        'last_completed_download_job_date_time': {'readonly': True},
3575        'last_completed_install_job_date_time': {'readonly': True},
3576        'total_number_of_updates_available': {'readonly': True},
3577        'total_number_of_updates_pending_download': {'readonly': True},
3578        'total_number_of_updates_pending_install': {'readonly': True},
3579        'reboot_behavior': {'readonly': True},
3580        'ongoing_update_operation': {'readonly': True},
3581        'in_progress_download_job_id': {'readonly': True},
3582        'in_progress_install_job_id': {'readonly': True},
3583        'in_progress_download_job_started_date_time': {'readonly': True},
3584        'in_progress_install_job_started_date_time': {'readonly': True},
3585        'update_titles': {'readonly': True},
3586        'total_update_size_in_bytes': {'readonly': True},
3587    }
3588
3589    _attribute_map = {
3590        'id': {'key': 'id', 'type': 'str'},
3591        'name': {'key': 'name', 'type': 'str'},
3592        'type': {'key': 'type', 'type': 'str'},
3593        'device_version_number': {'key': 'properties.deviceVersionNumber', 'type': 'str'},
3594        'friendly_device_version_name': {'key': 'properties.friendlyDeviceVersionName', 'type': 'str'},
3595        'device_last_scanned_date_time': {'key': 'properties.deviceLastScannedDateTime', 'type': 'iso-8601'},
3596        'last_completed_scan_job_date_time': {'key': 'properties.lastCompletedScanJobDateTime', 'type': 'iso-8601'},
3597        'last_completed_download_job_date_time': {'key': 'properties.lastCompletedDownloadJobDateTime', 'type': 'iso-8601'},
3598        'last_completed_install_job_date_time': {'key': 'properties.lastCompletedInstallJobDateTime', 'type': 'iso-8601'},
3599        'total_number_of_updates_available': {'key': 'properties.totalNumberOfUpdatesAvailable', 'type': 'int'},
3600        'total_number_of_updates_pending_download': {'key': 'properties.totalNumberOfUpdatesPendingDownload', 'type': 'int'},
3601        'total_number_of_updates_pending_install': {'key': 'properties.totalNumberOfUpdatesPendingInstall', 'type': 'int'},
3602        'reboot_behavior': {'key': 'properties.rebootBehavior', 'type': 'str'},
3603        'ongoing_update_operation': {'key': 'properties.ongoingUpdateOperation', 'type': 'str'},
3604        'in_progress_download_job_id': {'key': 'properties.inProgressDownloadJobId', 'type': 'str'},
3605        'in_progress_install_job_id': {'key': 'properties.inProgressInstallJobId', 'type': 'str'},
3606        'in_progress_download_job_started_date_time': {'key': 'properties.inProgressDownloadJobStartedDateTime', 'type': 'iso-8601'},
3607        'in_progress_install_job_started_date_time': {'key': 'properties.inProgressInstallJobStartedDateTime', 'type': 'iso-8601'},
3608        'update_titles': {'key': 'properties.updateTitles', 'type': '[str]'},
3609        'total_update_size_in_bytes': {'key': 'properties.totalUpdateSizeInBytes', 'type': 'float'},
3610    }
3611
3612    def __init__(
3613        self,
3614        *,
3615        device_version_number: Optional[str] = None,
3616        friendly_device_version_name: Optional[str] = None,
3617        device_last_scanned_date_time: Optional[datetime.datetime] = None,
3618        last_completed_scan_job_date_time: Optional[datetime.datetime] = None,
3619        **kwargs
3620    ):
3621        super(UpdateSummary, self).__init__(**kwargs)
3622        self.device_version_number = device_version_number
3623        self.friendly_device_version_name = friendly_device_version_name
3624        self.device_last_scanned_date_time = device_last_scanned_date_time
3625        self.last_completed_scan_job_date_time = last_completed_scan_job_date_time
3626        self.last_completed_download_job_date_time = None
3627        self.last_completed_install_job_date_time = None
3628        self.total_number_of_updates_available = None
3629        self.total_number_of_updates_pending_download = None
3630        self.total_number_of_updates_pending_install = None
3631        self.reboot_behavior = None
3632        self.ongoing_update_operation = None
3633        self.in_progress_download_job_id = None
3634        self.in_progress_install_job_id = None
3635        self.in_progress_download_job_started_date_time = None
3636        self.in_progress_install_job_started_date_time = None
3637        self.update_titles = None
3638        self.total_update_size_in_bytes = None
3639
3640
3641class UploadCertificateRequest(msrest.serialization.Model):
3642    """The upload certificate request.
3643
3644    All required parameters must be populated in order to send to Azure.
3645
3646    :param authentication_type: The authentication type. Possible values include: "Invalid",
3647     "AzureActiveDirectory".
3648    :type authentication_type: str or
3649     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AuthenticationType
3650    :param certificate: Required. The base64 encoded certificate raw data.
3651    :type certificate: str
3652    """
3653
3654    _validation = {
3655        'certificate': {'required': True},
3656    }
3657
3658    _attribute_map = {
3659        'authentication_type': {'key': 'properties.authenticationType', 'type': 'str'},
3660        'certificate': {'key': 'properties.certificate', 'type': 'str'},
3661    }
3662
3663    def __init__(
3664        self,
3665        *,
3666        certificate: str,
3667        authentication_type: Optional[Union[str, "AuthenticationType"]] = None,
3668        **kwargs
3669    ):
3670        super(UploadCertificateRequest, self).__init__(**kwargs)
3671        self.authentication_type = authentication_type
3672        self.certificate = certificate
3673
3674
3675class UploadCertificateResponse(msrest.serialization.Model):
3676    """The upload registration certificate response.
3677
3678    Variables are only populated by the server, and will be ignored when sending a request.
3679
3680    :param auth_type: Specifies authentication type. Possible values include: "Invalid",
3681     "AzureActiveDirectory".
3682    :type auth_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AuthenticationType
3683    :ivar resource_id: The resource ID of the Data Box Edge/Gateway device.
3684    :vartype resource_id: str
3685    :ivar aad_authority: Azure Active Directory tenant authority.
3686    :vartype aad_authority: str
3687    :ivar aad_tenant_id: Azure Active Directory tenant ID.
3688    :vartype aad_tenant_id: str
3689    :ivar service_principal_client_id: Azure Active Directory service principal client ID.
3690    :vartype service_principal_client_id: str
3691    :ivar service_principal_object_id: Azure Active Directory service principal object ID.
3692    :vartype service_principal_object_id: str
3693    :ivar azure_management_endpoint_audience: The azure management endpoint audience.
3694    :vartype azure_management_endpoint_audience: str
3695    :ivar aad_audience: Identifier of the target resource that is the recipient of the requested
3696     token.
3697    :vartype aad_audience: str
3698    """
3699
3700    _validation = {
3701        'resource_id': {'readonly': True},
3702        'aad_authority': {'readonly': True},
3703        'aad_tenant_id': {'readonly': True},
3704        'service_principal_client_id': {'readonly': True},
3705        'service_principal_object_id': {'readonly': True},
3706        'azure_management_endpoint_audience': {'readonly': True},
3707        'aad_audience': {'readonly': True},
3708    }
3709
3710    _attribute_map = {
3711        'auth_type': {'key': 'authType', 'type': 'str'},
3712        'resource_id': {'key': 'resourceId', 'type': 'str'},
3713        'aad_authority': {'key': 'aadAuthority', 'type': 'str'},
3714        'aad_tenant_id': {'key': 'aadTenantId', 'type': 'str'},
3715        'service_principal_client_id': {'key': 'servicePrincipalClientId', 'type': 'str'},
3716        'service_principal_object_id': {'key': 'servicePrincipalObjectId', 'type': 'str'},
3717        'azure_management_endpoint_audience': {'key': 'azureManagementEndpointAudience', 'type': 'str'},
3718        'aad_audience': {'key': 'aadAudience', 'type': 'str'},
3719    }
3720
3721    def __init__(
3722        self,
3723        *,
3724        auth_type: Optional[Union[str, "AuthenticationType"]] = None,
3725        **kwargs
3726    ):
3727        super(UploadCertificateResponse, self).__init__(**kwargs)
3728        self.auth_type = auth_type
3729        self.resource_id = None
3730        self.aad_authority = None
3731        self.aad_tenant_id = None
3732        self.service_principal_client_id = None
3733        self.service_principal_object_id = None
3734        self.azure_management_endpoint_audience = None
3735        self.aad_audience = None
3736
3737
3738class User(ARMBaseModel):
3739    """Represents a user who has access to one or more shares on the Data Box Edge/Gateway device.
3740
3741    Variables are only populated by the server, and will be ignored when sending a request.
3742
3743    All required parameters must be populated in order to send to Azure.
3744
3745    :ivar id: The path ID that uniquely identifies the object.
3746    :vartype id: str
3747    :ivar name: The object name.
3748    :vartype name: str
3749    :ivar type: The hierarchical type of the object.
3750    :vartype type: str
3751    :param encrypted_password: The password details.
3752    :type encrypted_password:
3753     ~azure.mgmt.databoxedge.v2020_05_01_preview.models.AsymmetricEncryptedSecret
3754    :ivar share_access_rights: List of shares that the user has rights on. This field should not be
3755     specified during user creation.
3756    :vartype share_access_rights:
3757     list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.ShareAccessRight]
3758    :param user_type: Required. Type of the user. Possible values include: "Share",
3759     "LocalManagement", "ARM".
3760    :type user_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.UserType
3761    """
3762
3763    _validation = {
3764        'id': {'readonly': True},
3765        'name': {'readonly': True},
3766        'type': {'readonly': True},
3767        'share_access_rights': {'readonly': True},
3768        'user_type': {'required': True},
3769    }
3770
3771    _attribute_map = {
3772        'id': {'key': 'id', 'type': 'str'},
3773        'name': {'key': 'name', 'type': 'str'},
3774        'type': {'key': 'type', 'type': 'str'},
3775        'encrypted_password': {'key': 'properties.encryptedPassword', 'type': 'AsymmetricEncryptedSecret'},
3776        'share_access_rights': {'key': 'properties.shareAccessRights', 'type': '[ShareAccessRight]'},
3777        'user_type': {'key': 'properties.userType', 'type': 'str'},
3778    }
3779
3780    def __init__(
3781        self,
3782        *,
3783        user_type: Union[str, "UserType"],
3784        encrypted_password: Optional["AsymmetricEncryptedSecret"] = None,
3785        **kwargs
3786    ):
3787        super(User, self).__init__(**kwargs)
3788        self.encrypted_password = encrypted_password
3789        self.share_access_rights = None
3790        self.user_type = user_type
3791
3792
3793class UserAccessRight(msrest.serialization.Model):
3794    """The mapping between a particular user and the access type on the SMB share.
3795
3796    All required parameters must be populated in order to send to Azure.
3797
3798    :param user_id: Required. User ID (already existing in the device).
3799    :type user_id: str
3800    :param access_type: Required. Type of access to be allowed for the user. Possible values
3801     include: "Change", "Read", "Custom".
3802    :type access_type: str or ~azure.mgmt.databoxedge.v2020_05_01_preview.models.ShareAccessType
3803    """
3804
3805    _validation = {
3806        'user_id': {'required': True},
3807        'access_type': {'required': True},
3808    }
3809
3810    _attribute_map = {
3811        'user_id': {'key': 'userId', 'type': 'str'},
3812        'access_type': {'key': 'accessType', 'type': 'str'},
3813    }
3814
3815    def __init__(
3816        self,
3817        *,
3818        user_id: str,
3819        access_type: Union[str, "ShareAccessType"],
3820        **kwargs
3821    ):
3822        super(UserAccessRight, self).__init__(**kwargs)
3823        self.user_id = user_id
3824        self.access_type = access_type
3825
3826
3827class UserList(msrest.serialization.Model):
3828    """Collection of users.
3829
3830    Variables are only populated by the server, and will be ignored when sending a request.
3831
3832    :ivar value: The list of users.
3833    :vartype value: list[~azure.mgmt.databoxedge.v2020_05_01_preview.models.User]
3834    :ivar next_link: Link to the next set of results.
3835    :vartype next_link: str
3836    """
3837
3838    _validation = {
3839        'value': {'readonly': True},
3840        'next_link': {'readonly': True},
3841    }
3842
3843    _attribute_map = {
3844        'value': {'key': 'value', 'type': '[User]'},
3845        'next_link': {'key': 'nextLink', 'type': 'str'},
3846    }
3847
3848    def __init__(
3849        self,
3850        **kwargs
3851    ):
3852        super(UserList, self).__init__(**kwargs)
3853        self.value = None
3854        self.next_link = None
3855