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