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.v2019_03_01.models.AlertSeverity
122    :ivar error_details: Error details of the alert.
123    :vartype error_details: ~azure.mgmt.databoxedge.v2019_03_01.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.v2019_03_01.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.v2019_03_01.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.v2019_03_01.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 ~azure.mgmt.databoxedge.v2019_03_01.models.AzureContainerDataFormat
303    """
304
305    _validation = {
306        'storage_account_credential_id': {'required': True},
307        'container_name': {'required': True},
308        'data_format': {'required': True},
309    }
310
311    _attribute_map = {
312        'storage_account_credential_id': {'key': 'storageAccountCredentialId', 'type': 'str'},
313        'container_name': {'key': 'containerName', 'type': 'str'},
314        'data_format': {'key': 'dataFormat', 'type': 'str'},
315    }
316
317    def __init__(
318        self,
319        **kwargs
320    ):
321        super(AzureContainerInfo, self).__init__(**kwargs)
322        self.storage_account_credential_id = kwargs['storage_account_credential_id']
323        self.container_name = kwargs['container_name']
324        self.data_format = kwargs['data_format']
325
326
327class BandwidthSchedule(ARMBaseModel):
328    """The bandwidth schedule details.
329
330    Variables are only populated by the server, and will be ignored when sending a request.
331
332    All required parameters must be populated in order to send to Azure.
333
334    :ivar id: The path ID that uniquely identifies the object.
335    :vartype id: str
336    :ivar name: The object name.
337    :vartype name: str
338    :ivar type: The hierarchical type of the object.
339    :vartype type: str
340    :param start: Required. The start time of the schedule in UTC.
341    :type start: str
342    :param stop: Required. The stop time of the schedule in UTC.
343    :type stop: str
344    :param rate_in_mbps: Required. The bandwidth rate in Mbps.
345    :type rate_in_mbps: int
346    :param days: Required. The days of the week when this schedule is applicable.
347    :type days: list[str or ~azure.mgmt.databoxedge.v2019_03_01.models.DayOfWeek]
348    """
349
350    _validation = {
351        'id': {'readonly': True},
352        'name': {'readonly': True},
353        'type': {'readonly': True},
354        'start': {'required': True},
355        'stop': {'required': True},
356        'rate_in_mbps': {'required': True},
357        'days': {'required': True},
358    }
359
360    _attribute_map = {
361        'id': {'key': 'id', 'type': 'str'},
362        'name': {'key': 'name', 'type': 'str'},
363        'type': {'key': 'type', 'type': 'str'},
364        'start': {'key': 'properties.start', 'type': 'str'},
365        'stop': {'key': 'properties.stop', 'type': 'str'},
366        'rate_in_mbps': {'key': 'properties.rateInMbps', 'type': 'int'},
367        'days': {'key': 'properties.days', 'type': '[str]'},
368    }
369
370    def __init__(
371        self,
372        **kwargs
373    ):
374        super(BandwidthSchedule, self).__init__(**kwargs)
375        self.start = kwargs['start']
376        self.stop = kwargs['stop']
377        self.rate_in_mbps = kwargs['rate_in_mbps']
378        self.days = kwargs['days']
379
380
381class BandwidthSchedulesList(msrest.serialization.Model):
382    """The collection of bandwidth schedules.
383
384    Variables are only populated by the server, and will be ignored when sending a request.
385
386    :ivar value: The list of bandwidth schedules.
387    :vartype value: list[~azure.mgmt.databoxedge.v2019_03_01.models.BandwidthSchedule]
388    :ivar next_link: Link to the next set of results.
389    :vartype next_link: str
390    """
391
392    _validation = {
393        'value': {'readonly': True},
394        'next_link': {'readonly': True},
395    }
396
397    _attribute_map = {
398        'value': {'key': 'value', 'type': '[BandwidthSchedule]'},
399        'next_link': {'key': 'nextLink', 'type': 'str'},
400    }
401
402    def __init__(
403        self,
404        **kwargs
405    ):
406        super(BandwidthSchedulesList, self).__init__(**kwargs)
407        self.value = None
408        self.next_link = None
409
410
411class ClientAccessRight(msrest.serialization.Model):
412    """The mapping between a particular client IP and the type of access client has on the NFS share.
413
414    All required parameters must be populated in order to send to Azure.
415
416    :param client: Required. IP of the client.
417    :type client: str
418    :param access_permission: Required. Type of access to be allowed for the client. Possible
419     values include: "NoAccess", "ReadOnly", "ReadWrite".
420    :type access_permission: str or ~azure.mgmt.databoxedge.v2019_03_01.models.ClientPermissionType
421    """
422
423    _validation = {
424        'client': {'required': True},
425        'access_permission': {'required': True},
426    }
427
428    _attribute_map = {
429        'client': {'key': 'client', 'type': 'str'},
430        'access_permission': {'key': 'accessPermission', 'type': 'str'},
431    }
432
433    def __init__(
434        self,
435        **kwargs
436    ):
437        super(ClientAccessRight, self).__init__(**kwargs)
438        self.client = kwargs['client']
439        self.access_permission = kwargs['access_permission']
440
441
442class CloudErrorBody(msrest.serialization.Model):
443    """An error response from the service.
444
445    :param code: An identifier for the error. Codes are invariant and are intended to be consumed
446     programmatically.
447    :type code: str
448    :param message: A message describing the error, intended to be suitable for display in a user
449     interface.
450    :type message: str
451    :param details: A list of additional details about the error.
452    :type details: list[~azure.mgmt.databoxedge.v2019_03_01.models.CloudErrorBody]
453    """
454
455    _attribute_map = {
456        'code': {'key': 'code', 'type': 'str'},
457        'message': {'key': 'message', 'type': 'str'},
458        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
459    }
460
461    def __init__(
462        self,
463        **kwargs
464    ):
465        super(CloudErrorBody, self).__init__(**kwargs)
466        self.code = kwargs.get('code', None)
467        self.message = kwargs.get('message', None)
468        self.details = kwargs.get('details', None)
469
470
471class ContactDetails(msrest.serialization.Model):
472    """Contains all the contact details of the customer.
473
474    All required parameters must be populated in order to send to Azure.
475
476    :param contact_person: Required. The contact person name.
477    :type contact_person: str
478    :param company_name: Required. The name of the company.
479    :type company_name: str
480    :param phone: Required. The phone number.
481    :type phone: str
482    :param email_list: Required. The email list.
483    :type email_list: list[str]
484    """
485
486    _validation = {
487        'contact_person': {'required': True},
488        'company_name': {'required': True},
489        'phone': {'required': True},
490        'email_list': {'required': True},
491    }
492
493    _attribute_map = {
494        'contact_person': {'key': 'contactPerson', 'type': 'str'},
495        'company_name': {'key': 'companyName', 'type': 'str'},
496        'phone': {'key': 'phone', 'type': 'str'},
497        'email_list': {'key': 'emailList', 'type': '[str]'},
498    }
499
500    def __init__(
501        self,
502        **kwargs
503    ):
504        super(ContactDetails, self).__init__(**kwargs)
505        self.contact_person = kwargs['contact_person']
506        self.company_name = kwargs['company_name']
507        self.phone = kwargs['phone']
508        self.email_list = kwargs['email_list']
509
510
511class DataBoxEdgeDevice(ARMBaseModel):
512    """The Data Box Edge/Gateway device.
513
514    Variables are only populated by the server, and will be ignored when sending a request.
515
516    All required parameters must be populated in order to send to Azure.
517
518    :ivar id: The path ID that uniquely identifies the object.
519    :vartype id: str
520    :ivar name: The object name.
521    :vartype name: str
522    :ivar type: The hierarchical type of the object.
523    :vartype type: str
524    :param location: Required. The location of the device. This is a supported and registered Azure
525     geographical region (for example, West US, East US, or Southeast Asia). The geographical region
526     of a device cannot be changed once it is created, but if an identical geographical region is
527     specified on update, the request will succeed.
528    :type location: str
529    :param tags: A set of tags. The list of tags that describe the device. These tags can be used
530     to view and group this device (across resource groups).
531    :type tags: dict[str, str]
532    :param sku: The SKU type.
533    :type sku: ~azure.mgmt.databoxedge.v2019_03_01.models.Sku
534    :param etag: The etag for the devices.
535    :type etag: str
536    :param data_box_edge_device_status: The status of the Data Box Edge/Gateway device. Possible
537     values include: "ReadyToSetup", "Online", "Offline", "NeedsAttention", "Disconnected",
538     "PartiallyDisconnected".
539    :type data_box_edge_device_status: str or
540     ~azure.mgmt.databoxedge.v2019_03_01.models.DataBoxEdgeDeviceStatus
541    :ivar serial_number: The Serial Number of Data Box Edge/Gateway device.
542    :vartype serial_number: str
543    :param description: The Description of the Data Box Edge/Gateway device.
544    :type description: str
545    :param model_description: The description of the Data Box Edge/Gateway device model.
546    :type model_description: str
547    :ivar device_type: The type of the Data Box Edge/Gateway device. Possible values include:
548     "DataBoxEdgeDevice".
549    :vartype device_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.DeviceType
550    :param friendly_name: The Data Box Edge/Gateway device name.
551    :type friendly_name: str
552    :ivar culture: The Data Box Edge/Gateway device culture.
553    :vartype culture: str
554    :ivar device_model: The Data Box Edge/Gateway device model.
555    :vartype device_model: str
556    :ivar device_software_version: The Data Box Edge/Gateway device software version.
557    :vartype device_software_version: str
558    :ivar device_local_capacity: The Data Box Edge/Gateway device local capacity in MB.
559    :vartype device_local_capacity: long
560    :ivar time_zone: The Data Box Edge/Gateway device timezone.
561    :vartype time_zone: str
562    :ivar device_hcs_version: The device software version number of the device (eg: 1.2.18105.6).
563    :vartype device_hcs_version: str
564    :ivar configured_role_types: Type of compute roles configured.
565    :vartype configured_role_types: list[str or
566     ~azure.mgmt.databoxedge.v2019_03_01.models.RoleTypes]
567    """
568
569    _validation = {
570        'id': {'readonly': True},
571        'name': {'readonly': True},
572        'type': {'readonly': True},
573        'location': {'required': True},
574        'serial_number': {'readonly': True},
575        'device_type': {'readonly': True},
576        'culture': {'readonly': True},
577        'device_model': {'readonly': True},
578        'device_software_version': {'readonly': True},
579        'device_local_capacity': {'readonly': True},
580        'time_zone': {'readonly': True},
581        'device_hcs_version': {'readonly': True},
582        'configured_role_types': {'readonly': True},
583    }
584
585    _attribute_map = {
586        'id': {'key': 'id', 'type': 'str'},
587        'name': {'key': 'name', 'type': 'str'},
588        'type': {'key': 'type', 'type': 'str'},
589        'location': {'key': 'location', 'type': 'str'},
590        'tags': {'key': 'tags', 'type': '{str}'},
591        'sku': {'key': 'sku', 'type': 'Sku'},
592        'etag': {'key': 'etag', 'type': 'str'},
593        'data_box_edge_device_status': {'key': 'properties.dataBoxEdgeDeviceStatus', 'type': 'str'},
594        'serial_number': {'key': 'properties.serialNumber', 'type': 'str'},
595        'description': {'key': 'properties.description', 'type': 'str'},
596        'model_description': {'key': 'properties.modelDescription', 'type': 'str'},
597        'device_type': {'key': 'properties.deviceType', 'type': 'str'},
598        'friendly_name': {'key': 'properties.friendlyName', 'type': 'str'},
599        'culture': {'key': 'properties.culture', 'type': 'str'},
600        'device_model': {'key': 'properties.deviceModel', 'type': 'str'},
601        'device_software_version': {'key': 'properties.deviceSoftwareVersion', 'type': 'str'},
602        'device_local_capacity': {'key': 'properties.deviceLocalCapacity', 'type': 'long'},
603        'time_zone': {'key': 'properties.timeZone', 'type': 'str'},
604        'device_hcs_version': {'key': 'properties.deviceHcsVersion', 'type': 'str'},
605        'configured_role_types': {'key': 'properties.configuredRoleTypes', 'type': '[str]'},
606    }
607
608    def __init__(
609        self,
610        **kwargs
611    ):
612        super(DataBoxEdgeDevice, self).__init__(**kwargs)
613        self.location = kwargs['location']
614        self.tags = kwargs.get('tags', None)
615        self.sku = kwargs.get('sku', None)
616        self.etag = kwargs.get('etag', None)
617        self.data_box_edge_device_status = kwargs.get('data_box_edge_device_status', None)
618        self.serial_number = None
619        self.description = kwargs.get('description', None)
620        self.model_description = kwargs.get('model_description', None)
621        self.device_type = None
622        self.friendly_name = kwargs.get('friendly_name', None)
623        self.culture = None
624        self.device_model = None
625        self.device_software_version = None
626        self.device_local_capacity = None
627        self.time_zone = None
628        self.device_hcs_version = None
629        self.configured_role_types = None
630
631
632class DataBoxEdgeDeviceExtendedInfo(ARMBaseModel):
633    """The extended Info of the Data Box Edge/Gateway device.
634
635    Variables are only populated by the server, and will be ignored when sending a request.
636
637    :ivar id: The path ID that uniquely identifies the object.
638    :vartype id: str
639    :ivar name: The object name.
640    :vartype name: str
641    :ivar type: The hierarchical type of the object.
642    :vartype type: str
643    :param encryption_key_thumbprint: The digital signature of encrypted certificate.
644    :type encryption_key_thumbprint: str
645    :param encryption_key: The public part of the encryption certificate. Client uses this to
646     encrypt any secret.
647    :type encryption_key: str
648    :ivar resource_key: The Resource ID of the Resource.
649    :vartype resource_key: str
650    """
651
652    _validation = {
653        'id': {'readonly': True},
654        'name': {'readonly': True},
655        'type': {'readonly': True},
656        'resource_key': {'readonly': True},
657    }
658
659    _attribute_map = {
660        'id': {'key': 'id', 'type': 'str'},
661        'name': {'key': 'name', 'type': 'str'},
662        'type': {'key': 'type', 'type': 'str'},
663        'encryption_key_thumbprint': {'key': 'properties.encryptionKeyThumbprint', 'type': 'str'},
664        'encryption_key': {'key': 'properties.encryptionKey', 'type': 'str'},
665        'resource_key': {'key': 'properties.resourceKey', 'type': 'str'},
666    }
667
668    def __init__(
669        self,
670        **kwargs
671    ):
672        super(DataBoxEdgeDeviceExtendedInfo, self).__init__(**kwargs)
673        self.encryption_key_thumbprint = kwargs.get('encryption_key_thumbprint', None)
674        self.encryption_key = kwargs.get('encryption_key', None)
675        self.resource_key = None
676
677
678class DataBoxEdgeDeviceList(msrest.serialization.Model):
679    """The collection of Data Box Edge/Gateway devices.
680
681    Variables are only populated by the server, and will be ignored when sending a request.
682
683    :ivar value: The list of Data Box Edge/Gateway devices.
684    :vartype value: list[~azure.mgmt.databoxedge.v2019_03_01.models.DataBoxEdgeDevice]
685    :ivar next_link: Link to the next set of results.
686    :vartype next_link: str
687    """
688
689    _validation = {
690        'value': {'readonly': True},
691        'next_link': {'readonly': True},
692    }
693
694    _attribute_map = {
695        'value': {'key': 'value', 'type': '[DataBoxEdgeDevice]'},
696        'next_link': {'key': 'nextLink', 'type': 'str'},
697    }
698
699    def __init__(
700        self,
701        **kwargs
702    ):
703        super(DataBoxEdgeDeviceList, self).__init__(**kwargs)
704        self.value = None
705        self.next_link = None
706
707
708class DataBoxEdgeDevicePatch(msrest.serialization.Model):
709    """The Data Box Edge/Gateway device patch.
710
711    :param tags: A set of tags. The tags attached to the Data Box Edge/Gateway resource.
712    :type tags: dict[str, str]
713    """
714
715    _attribute_map = {
716        'tags': {'key': 'tags', 'type': '{str}'},
717    }
718
719    def __init__(
720        self,
721        **kwargs
722    ):
723        super(DataBoxEdgeDevicePatch, self).__init__(**kwargs)
724        self.tags = kwargs.get('tags', None)
725
726
727class Trigger(ARMBaseModel):
728    """Trigger details.
729
730    You probably want to use the sub-classes and not this class directly. Known
731    sub-classes are: FileEventTrigger, PeriodicTimerEventTrigger.
732
733    Variables are only populated by the server, and will be ignored when sending a request.
734
735    All required parameters must be populated in order to send to Azure.
736
737    :ivar id: The path ID that uniquely identifies the object.
738    :vartype id: str
739    :ivar name: The object name.
740    :vartype name: str
741    :ivar type: The hierarchical type of the object.
742    :vartype type: str
743    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
744     "FileEvent", "PeriodicTimerEvent".
745    :type kind: str or ~azure.mgmt.databoxedge.v2019_03_01.models.TriggerEventType
746    """
747
748    _validation = {
749        'id': {'readonly': True},
750        'name': {'readonly': True},
751        'type': {'readonly': True},
752        'kind': {'required': True},
753    }
754
755    _attribute_map = {
756        'id': {'key': 'id', 'type': 'str'},
757        'name': {'key': 'name', 'type': 'str'},
758        'type': {'key': 'type', 'type': 'str'},
759        'kind': {'key': 'kind', 'type': 'str'},
760    }
761
762    _subtype_map = {
763        'kind': {'FileEvent': 'FileEventTrigger', 'PeriodicTimerEvent': 'PeriodicTimerEventTrigger'}
764    }
765
766    def __init__(
767        self,
768        **kwargs
769    ):
770        super(Trigger, self).__init__(**kwargs)
771        self.kind = 'Trigger'  # type: str
772
773
774class FileEventTrigger(Trigger):
775    """Trigger details.
776
777    Variables are only populated by the server, and will be ignored when sending a request.
778
779    All required parameters must be populated in order to send to Azure.
780
781    :ivar id: The path ID that uniquely identifies the object.
782    :vartype id: str
783    :ivar name: The object name.
784    :vartype name: str
785    :ivar type: The hierarchical type of the object.
786    :vartype type: str
787    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
788     "FileEvent", "PeriodicTimerEvent".
789    :type kind: str or ~azure.mgmt.databoxedge.v2019_03_01.models.TriggerEventType
790    :param source_info: Required. File event source details.
791    :type source_info: ~azure.mgmt.databoxedge.v2019_03_01.models.FileSourceInfo
792    :param sink_info: Required. Role sink info.
793    :type sink_info: ~azure.mgmt.databoxedge.v2019_03_01.models.RoleSinkInfo
794    :param custom_context_tag: A custom context tag typically used to correlate the trigger against
795     its usage. For example, if a periodic timer trigger is intended for certain specific IoT
796     modules in the device, the tag can be the name or the image URL of the module.
797    :type custom_context_tag: str
798    """
799
800    _validation = {
801        'id': {'readonly': True},
802        'name': {'readonly': True},
803        'type': {'readonly': True},
804        'kind': {'required': True},
805        'source_info': {'required': True},
806        'sink_info': {'required': True},
807    }
808
809    _attribute_map = {
810        'id': {'key': 'id', 'type': 'str'},
811        'name': {'key': 'name', 'type': 'str'},
812        'type': {'key': 'type', 'type': 'str'},
813        'kind': {'key': 'kind', 'type': 'str'},
814        'source_info': {'key': 'properties.sourceInfo', 'type': 'FileSourceInfo'},
815        'sink_info': {'key': 'properties.sinkInfo', 'type': 'RoleSinkInfo'},
816        'custom_context_tag': {'key': 'properties.customContextTag', 'type': 'str'},
817    }
818
819    def __init__(
820        self,
821        **kwargs
822    ):
823        super(FileEventTrigger, self).__init__(**kwargs)
824        self.kind = 'FileEvent'  # type: str
825        self.source_info = kwargs['source_info']
826        self.sink_info = kwargs['sink_info']
827        self.custom_context_tag = kwargs.get('custom_context_tag', None)
828
829
830class FileSourceInfo(msrest.serialization.Model):
831    """File source details.
832
833    All required parameters must be populated in order to send to Azure.
834
835    :param share_id: Required. File share ID.
836    :type share_id: str
837    """
838
839    _validation = {
840        'share_id': {'required': True},
841    }
842
843    _attribute_map = {
844        'share_id': {'key': 'shareId', 'type': 'str'},
845    }
846
847    def __init__(
848        self,
849        **kwargs
850    ):
851        super(FileSourceInfo, self).__init__(**kwargs)
852        self.share_id = kwargs['share_id']
853
854
855class IoTDeviceInfo(msrest.serialization.Model):
856    """Metadata of IoT device/IoT Edge device to be configured.
857
858    All required parameters must be populated in order to send to Azure.
859
860    :param device_id: Required. ID of the IoT device/edge device.
861    :type device_id: str
862    :param io_t_host_hub: Required. Host name for the IoT hub associated to the device.
863    :type io_t_host_hub: str
864    :param authentication: IoT device authentication info.
865    :type authentication: ~azure.mgmt.databoxedge.v2019_03_01.models.Authentication
866    """
867
868    _validation = {
869        'device_id': {'required': True},
870        'io_t_host_hub': {'required': True},
871    }
872
873    _attribute_map = {
874        'device_id': {'key': 'deviceId', 'type': 'str'},
875        'io_t_host_hub': {'key': 'ioTHostHub', 'type': 'str'},
876        'authentication': {'key': 'authentication', 'type': 'Authentication'},
877    }
878
879    def __init__(
880        self,
881        **kwargs
882    ):
883        super(IoTDeviceInfo, self).__init__(**kwargs)
884        self.device_id = kwargs['device_id']
885        self.io_t_host_hub = kwargs['io_t_host_hub']
886        self.authentication = kwargs.get('authentication', None)
887
888
889class Role(ARMBaseModel):
890    """Compute role.
891
892    You probably want to use the sub-classes and not this class directly. Known
893    sub-classes are: IoTRole.
894
895    Variables are only populated by the server, and will be ignored when sending a request.
896
897    All required parameters must be populated in order to send to Azure.
898
899    :ivar id: The path ID that uniquely identifies the object.
900    :vartype id: str
901    :ivar name: The object name.
902    :vartype name: str
903    :ivar type: The hierarchical type of the object.
904    :vartype type: str
905    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
906     "ASA", "Functions", "Cognitive".
907    :type kind: str or ~azure.mgmt.databoxedge.v2019_03_01.models.RoleTypes
908    """
909
910    _validation = {
911        'id': {'readonly': True},
912        'name': {'readonly': True},
913        'type': {'readonly': True},
914        'kind': {'required': True},
915    }
916
917    _attribute_map = {
918        'id': {'key': 'id', 'type': 'str'},
919        'name': {'key': 'name', 'type': 'str'},
920        'type': {'key': 'type', 'type': 'str'},
921        'kind': {'key': 'kind', 'type': 'str'},
922    }
923
924    _subtype_map = {
925        'kind': {'IOT': 'IoTRole'}
926    }
927
928    def __init__(
929        self,
930        **kwargs
931    ):
932        super(Role, self).__init__(**kwargs)
933        self.kind = 'Role'  # type: str
934
935
936class IoTRole(Role):
937    """Compute role.
938
939    Variables are only populated by the server, and will be ignored when sending a request.
940
941    All required parameters must be populated in order to send to Azure.
942
943    :ivar id: The path ID that uniquely identifies the object.
944    :vartype id: str
945    :ivar name: The object name.
946    :vartype name: str
947    :ivar type: The hierarchical type of the object.
948    :vartype type: str
949    :param kind: Required. Role type.Constant filled by server.  Possible values include: "IOT",
950     "ASA", "Functions", "Cognitive".
951    :type kind: str or ~azure.mgmt.databoxedge.v2019_03_01.models.RoleTypes
952    :param host_platform: Host OS supported by the IoT role. Possible values include: "Windows",
953     "Linux".
954    :type host_platform: str or ~azure.mgmt.databoxedge.v2019_03_01.models.PlatformType
955    :param io_t_device_details: IoT device metadata to which data box edge device needs to be
956     connected.
957    :type io_t_device_details: ~azure.mgmt.databoxedge.v2019_03_01.models.IoTDeviceInfo
958    :param io_t_edge_device_details: IoT edge device to which the IoT role needs to be configured.
959    :type io_t_edge_device_details: ~azure.mgmt.databoxedge.v2019_03_01.models.IoTDeviceInfo
960    :param share_mappings: Mount points of shares in role(s).
961    :type share_mappings: list[~azure.mgmt.databoxedge.v2019_03_01.models.MountPointMap]
962    :param role_status: Role status. Possible values include: "Enabled", "Disabled".
963    :type role_status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.RoleStatus
964    """
965
966    _validation = {
967        'id': {'readonly': True},
968        'name': {'readonly': True},
969        'type': {'readonly': True},
970        'kind': {'required': True},
971    }
972
973    _attribute_map = {
974        'id': {'key': 'id', 'type': 'str'},
975        'name': {'key': 'name', 'type': 'str'},
976        'type': {'key': 'type', 'type': 'str'},
977        'kind': {'key': 'kind', 'type': 'str'},
978        'host_platform': {'key': 'properties.hostPlatform', 'type': 'str'},
979        'io_t_device_details': {'key': 'properties.ioTDeviceDetails', 'type': 'IoTDeviceInfo'},
980        'io_t_edge_device_details': {'key': 'properties.ioTEdgeDeviceDetails', 'type': 'IoTDeviceInfo'},
981        'share_mappings': {'key': 'properties.shareMappings', 'type': '[MountPointMap]'},
982        'role_status': {'key': 'properties.roleStatus', 'type': 'str'},
983    }
984
985    def __init__(
986        self,
987        **kwargs
988    ):
989        super(IoTRole, self).__init__(**kwargs)
990        self.kind = 'IOT'  # type: str
991        self.host_platform = kwargs.get('host_platform', None)
992        self.io_t_device_details = kwargs.get('io_t_device_details', None)
993        self.io_t_edge_device_details = kwargs.get('io_t_edge_device_details', None)
994        self.share_mappings = kwargs.get('share_mappings', None)
995        self.role_status = kwargs.get('role_status', None)
996
997
998class Ipv4Config(msrest.serialization.Model):
999    """Details related to the IPv4 address configuration.
1000
1001    Variables are only populated by the server, and will be ignored when sending a request.
1002
1003    :ivar ip_address: The IPv4 address of the network adapter.
1004    :vartype ip_address: str
1005    :ivar subnet: The IPv4 subnet of the network adapter.
1006    :vartype subnet: str
1007    :ivar gateway: The IPv4 gateway of the network adapter.
1008    :vartype gateway: str
1009    """
1010
1011    _validation = {
1012        'ip_address': {'readonly': True},
1013        'subnet': {'readonly': True},
1014        'gateway': {'readonly': True},
1015    }
1016
1017    _attribute_map = {
1018        'ip_address': {'key': 'ipAddress', 'type': 'str'},
1019        'subnet': {'key': 'subnet', 'type': 'str'},
1020        'gateway': {'key': 'gateway', 'type': 'str'},
1021    }
1022
1023    def __init__(
1024        self,
1025        **kwargs
1026    ):
1027        super(Ipv4Config, self).__init__(**kwargs)
1028        self.ip_address = None
1029        self.subnet = None
1030        self.gateway = None
1031
1032
1033class Ipv6Config(msrest.serialization.Model):
1034    """Details related to the IPv6 address configuration.
1035
1036    Variables are only populated by the server, and will be ignored when sending a request.
1037
1038    :ivar ip_address: The IPv6 address of the network adapter.
1039    :vartype ip_address: str
1040    :ivar prefix_length: The IPv6 prefix of the network adapter.
1041    :vartype prefix_length: int
1042    :ivar gateway: The IPv6 gateway of the network adapter.
1043    :vartype gateway: str
1044    """
1045
1046    _validation = {
1047        'ip_address': {'readonly': True},
1048        'prefix_length': {'readonly': True},
1049        'gateway': {'readonly': True},
1050    }
1051
1052    _attribute_map = {
1053        'ip_address': {'key': 'ipAddress', 'type': 'str'},
1054        'prefix_length': {'key': 'prefixLength', 'type': 'int'},
1055        'gateway': {'key': 'gateway', 'type': 'str'},
1056    }
1057
1058    def __init__(
1059        self,
1060        **kwargs
1061    ):
1062        super(Ipv6Config, self).__init__(**kwargs)
1063        self.ip_address = None
1064        self.prefix_length = None
1065        self.gateway = None
1066
1067
1068class Job(msrest.serialization.Model):
1069    """A device job.
1070
1071    Variables are only populated by the server, and will be ignored when sending a request.
1072
1073    :ivar id: The path ID that uniquely identifies the object.
1074    :vartype id: str
1075    :ivar name: The name of the object.
1076    :vartype name: str
1077    :ivar type: The hierarchical type of the object.
1078    :vartype type: str
1079    :ivar status: The current status of the job. Possible values include: "Invalid", "Running",
1080     "Succeeded", "Failed", "Canceled", "Paused", "Scheduled".
1081    :vartype status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.JobStatus
1082    :ivar start_time: The UTC date and time at which the job started.
1083    :vartype start_time: ~datetime.datetime
1084    :ivar end_time: The UTC date and time at which the job completed.
1085    :vartype end_time: ~datetime.datetime
1086    :ivar percent_complete: The percentage of the job that is complete.
1087    :vartype percent_complete: int
1088    :ivar error: The error details.
1089    :vartype error: ~azure.mgmt.databoxedge.v2019_03_01.models.JobErrorDetails
1090    :ivar job_type: The type of the job. Possible values include: "Invalid", "ScanForUpdates",
1091     "DownloadUpdates", "InstallUpdates", "RefreshShare".
1092    :vartype job_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.JobType
1093    :ivar current_stage: Current stage of the update operation. Possible values include: "Unknown",
1094     "Initial", "ScanStarted", "ScanComplete", "ScanFailed", "DownloadStarted", "DownloadComplete",
1095     "DownloadFailed", "InstallStarted", "InstallComplete", "InstallFailed", "RebootInitiated",
1096     "Success", "Failure", "RescanStarted", "RescanComplete", "RescanFailed".
1097    :vartype current_stage: str or ~azure.mgmt.databoxedge.v2019_03_01.models.UpdateOperationStage
1098    :ivar download_progress: The download progress.
1099    :vartype download_progress: ~azure.mgmt.databoxedge.v2019_03_01.models.UpdateDownloadProgress
1100    :ivar install_progress: The install progress.
1101    :vartype install_progress: ~azure.mgmt.databoxedge.v2019_03_01.models.UpdateInstallProgress
1102    :ivar total_refresh_errors: Total number of errors encountered during the refresh process.
1103    :vartype total_refresh_errors: int
1104    :ivar error_manifest_file: Local share/remote container relative path to the error manifest
1105     file of the refresh.
1106    :vartype error_manifest_file: str
1107    :ivar share_id: ARM ID of the share that was refreshed.
1108    :vartype share_id: str
1109    :param folder: If only subfolders need to be refreshed, then the subfolder path inside the
1110     share. (The path is empty if there are no subfolders.).
1111    :type folder: str
1112    """
1113
1114    _validation = {
1115        'id': {'readonly': True},
1116        'name': {'readonly': True},
1117        'type': {'readonly': True},
1118        'status': {'readonly': True},
1119        'start_time': {'readonly': True},
1120        'end_time': {'readonly': True},
1121        'percent_complete': {'readonly': True},
1122        'error': {'readonly': True},
1123        'job_type': {'readonly': True},
1124        'current_stage': {'readonly': True},
1125        'download_progress': {'readonly': True},
1126        'install_progress': {'readonly': True},
1127        'total_refresh_errors': {'readonly': True},
1128        'error_manifest_file': {'readonly': True},
1129        'share_id': {'readonly': True},
1130    }
1131
1132    _attribute_map = {
1133        'id': {'key': 'id', 'type': 'str'},
1134        'name': {'key': 'name', 'type': 'str'},
1135        'type': {'key': 'type', 'type': 'str'},
1136        'status': {'key': 'status', 'type': 'str'},
1137        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
1138        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
1139        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
1140        'error': {'key': 'error', 'type': 'JobErrorDetails'},
1141        'job_type': {'key': 'properties.jobType', 'type': 'str'},
1142        'current_stage': {'key': 'properties.currentStage', 'type': 'str'},
1143        'download_progress': {'key': 'properties.downloadProgress', 'type': 'UpdateDownloadProgress'},
1144        'install_progress': {'key': 'properties.installProgress', 'type': 'UpdateInstallProgress'},
1145        'total_refresh_errors': {'key': 'properties.totalRefreshErrors', 'type': 'int'},
1146        'error_manifest_file': {'key': 'properties.errorManifestFile', 'type': 'str'},
1147        'share_id': {'key': 'properties.shareId', 'type': 'str'},
1148        'folder': {'key': 'properties.folder', 'type': 'str'},
1149    }
1150
1151    def __init__(
1152        self,
1153        **kwargs
1154    ):
1155        super(Job, self).__init__(**kwargs)
1156        self.id = None
1157        self.name = None
1158        self.type = None
1159        self.status = None
1160        self.start_time = None
1161        self.end_time = None
1162        self.percent_complete = None
1163        self.error = None
1164        self.job_type = None
1165        self.current_stage = None
1166        self.download_progress = None
1167        self.install_progress = None
1168        self.total_refresh_errors = None
1169        self.error_manifest_file = None
1170        self.share_id = None
1171        self.folder = kwargs.get('folder', None)
1172
1173
1174class JobErrorDetails(msrest.serialization.Model):
1175    """The job error information containing the list of job errors.
1176
1177    Variables are only populated by the server, and will be ignored when sending a request.
1178
1179    :ivar error_details: The error details.
1180    :vartype error_details: list[~azure.mgmt.databoxedge.v2019_03_01.models.JobErrorItem]
1181    :ivar code: The code intended for programmatic access.
1182    :vartype code: str
1183    :ivar message: The message that describes the error in detail.
1184    :vartype message: str
1185    """
1186
1187    _validation = {
1188        'error_details': {'readonly': True},
1189        'code': {'readonly': True},
1190        'message': {'readonly': True},
1191    }
1192
1193    _attribute_map = {
1194        'error_details': {'key': 'errorDetails', 'type': '[JobErrorItem]'},
1195        'code': {'key': 'code', 'type': 'str'},
1196        'message': {'key': 'message', 'type': 'str'},
1197    }
1198
1199    def __init__(
1200        self,
1201        **kwargs
1202    ):
1203        super(JobErrorDetails, self).__init__(**kwargs)
1204        self.error_details = None
1205        self.code = None
1206        self.message = None
1207
1208
1209class JobErrorItem(msrest.serialization.Model):
1210    """The job error items.
1211
1212    Variables are only populated by the server, and will be ignored when sending a request.
1213
1214    :ivar recommendations: The recommended actions.
1215    :vartype recommendations: list[str]
1216    :ivar code: The code intended for programmatic access.
1217    :vartype code: str
1218    :ivar message: The message that describes the error in detail.
1219    :vartype message: str
1220    """
1221
1222    _validation = {
1223        'recommendations': {'readonly': True},
1224        'code': {'readonly': True},
1225        'message': {'readonly': True},
1226    }
1227
1228    _attribute_map = {
1229        'recommendations': {'key': 'recommendations', 'type': '[str]'},
1230        'code': {'key': 'code', 'type': 'str'},
1231        'message': {'key': 'message', 'type': 'str'},
1232    }
1233
1234    def __init__(
1235        self,
1236        **kwargs
1237    ):
1238        super(JobErrorItem, self).__init__(**kwargs)
1239        self.recommendations = None
1240        self.code = None
1241        self.message = None
1242
1243
1244class MetricDimensionV1(msrest.serialization.Model):
1245    """Metric Dimension v1.
1246
1247    :param name: Name of the metrics dimension.
1248    :type name: str
1249    :param display_name: Display name of the metrics dimension.
1250    :type display_name: str
1251    :param to_be_exported_for_shoebox: To be exported to shoe box.
1252    :type to_be_exported_for_shoebox: bool
1253    """
1254
1255    _attribute_map = {
1256        'name': {'key': 'name', 'type': 'str'},
1257        'display_name': {'key': 'displayName', 'type': 'str'},
1258        'to_be_exported_for_shoebox': {'key': 'toBeExportedForShoebox', 'type': 'bool'},
1259    }
1260
1261    def __init__(
1262        self,
1263        **kwargs
1264    ):
1265        super(MetricDimensionV1, self).__init__(**kwargs)
1266        self.name = kwargs.get('name', None)
1267        self.display_name = kwargs.get('display_name', None)
1268        self.to_be_exported_for_shoebox = kwargs.get('to_be_exported_for_shoebox', None)
1269
1270
1271class MetricSpecificationV1(msrest.serialization.Model):
1272    """Metric specification version 1.
1273
1274    :param name: Name of the metric.
1275    :type name: str
1276    :param display_name: Display name of the metric.
1277    :type display_name: str
1278    :param display_description: Description of the metric to be displayed.
1279    :type display_description: str
1280    :param unit: Metric units. Possible values include: "NotSpecified", "Percent", "Count",
1281     "Seconds", "Milliseconds", "Bytes", "BytesPerSecond", "CountPerSecond".
1282    :type unit: str or ~azure.mgmt.databoxedge.v2019_03_01.models.MetricUnit
1283    :param aggregation_type: Metric aggregation type. Possible values include: "NotSpecified",
1284     "None", "Average", "Minimum", "Maximum", "Total", "Count".
1285    :type aggregation_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.MetricAggregationType
1286    :param dimensions: Metric dimensions, other than default dimension which is resource.
1287    :type dimensions: list[~azure.mgmt.databoxedge.v2019_03_01.models.MetricDimensionV1]
1288    :param fill_gap_with_zero: Set true to fill the gaps with zero.
1289    :type fill_gap_with_zero: bool
1290    :param category: Metric category. Possible values include: "Capacity", "Transaction".
1291    :type category: str or ~azure.mgmt.databoxedge.v2019_03_01.models.MetricCategory
1292    :param resource_id_dimension_name_override: Resource name override.
1293    :type resource_id_dimension_name_override: str
1294    :param supported_time_grain_types: Support granularity of metrics.
1295    :type supported_time_grain_types: list[str or
1296     ~azure.mgmt.databoxedge.v2019_03_01.models.TimeGrain]
1297    :param supported_aggregation_types: Support metric aggregation type.
1298    :type supported_aggregation_types: list[str or
1299     ~azure.mgmt.databoxedge.v2019_03_01.models.MetricAggregationType]
1300    """
1301
1302    _attribute_map = {
1303        'name': {'key': 'name', 'type': 'str'},
1304        'display_name': {'key': 'displayName', 'type': 'str'},
1305        'display_description': {'key': 'displayDescription', 'type': 'str'},
1306        'unit': {'key': 'unit', 'type': 'str'},
1307        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
1308        'dimensions': {'key': 'dimensions', 'type': '[MetricDimensionV1]'},
1309        'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'},
1310        'category': {'key': 'category', 'type': 'str'},
1311        'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'},
1312        'supported_time_grain_types': {'key': 'supportedTimeGrainTypes', 'type': '[str]'},
1313        'supported_aggregation_types': {'key': 'supportedAggregationTypes', 'type': '[str]'},
1314    }
1315
1316    def __init__(
1317        self,
1318        **kwargs
1319    ):
1320        super(MetricSpecificationV1, self).__init__(**kwargs)
1321        self.name = kwargs.get('name', None)
1322        self.display_name = kwargs.get('display_name', None)
1323        self.display_description = kwargs.get('display_description', None)
1324        self.unit = kwargs.get('unit', None)
1325        self.aggregation_type = kwargs.get('aggregation_type', None)
1326        self.dimensions = kwargs.get('dimensions', None)
1327        self.fill_gap_with_zero = kwargs.get('fill_gap_with_zero', None)
1328        self.category = kwargs.get('category', None)
1329        self.resource_id_dimension_name_override = kwargs.get('resource_id_dimension_name_override', None)
1330        self.supported_time_grain_types = kwargs.get('supported_time_grain_types', None)
1331        self.supported_aggregation_types = kwargs.get('supported_aggregation_types', None)
1332
1333
1334class MountPointMap(msrest.serialization.Model):
1335    """The share mount point.
1336
1337    Variables are only populated by the server, and will be ignored when sending a request.
1338
1339    All required parameters must be populated in order to send to Azure.
1340
1341    :param share_id: Required. ID of the share mounted to the role VM.
1342    :type share_id: str
1343    :ivar role_id: ID of the role to which share is mounted.
1344    :vartype role_id: str
1345    :ivar mount_point: Mount point for the share.
1346    :vartype mount_point: str
1347    :ivar role_type: Role type. Possible values include: "IOT", "ASA", "Functions", "Cognitive".
1348    :vartype role_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.RoleTypes
1349    """
1350
1351    _validation = {
1352        'share_id': {'required': True},
1353        'role_id': {'readonly': True},
1354        'mount_point': {'readonly': True},
1355        'role_type': {'readonly': True},
1356    }
1357
1358    _attribute_map = {
1359        'share_id': {'key': 'shareId', 'type': 'str'},
1360        'role_id': {'key': 'roleId', 'type': 'str'},
1361        'mount_point': {'key': 'mountPoint', 'type': 'str'},
1362        'role_type': {'key': 'roleType', 'type': 'str'},
1363    }
1364
1365    def __init__(
1366        self,
1367        **kwargs
1368    ):
1369        super(MountPointMap, self).__init__(**kwargs)
1370        self.share_id = kwargs['share_id']
1371        self.role_id = None
1372        self.mount_point = None
1373        self.role_type = None
1374
1375
1376class NetworkAdapter(msrest.serialization.Model):
1377    """Represents the networkAdapter on a device.
1378
1379    Variables are only populated by the server, and will be ignored when sending a request.
1380
1381    :ivar adapter_id: Instance ID of network adapter.
1382    :vartype adapter_id: str
1383    :ivar adapter_position: Hardware position of network adapter.
1384    :vartype adapter_position: ~azure.mgmt.databoxedge.v2019_03_01.models.NetworkAdapterPosition
1385    :ivar index: Logical index of the adapter.
1386    :vartype index: int
1387    :ivar node_id: Node ID of the network adapter.
1388    :vartype node_id: str
1389    :ivar network_adapter_name: Network adapter name.
1390    :vartype network_adapter_name: str
1391    :ivar label: Hardware label for the adapter.
1392    :vartype label: str
1393    :ivar mac_address: MAC address.
1394    :vartype mac_address: str
1395    :ivar link_speed: Link speed.
1396    :vartype link_speed: long
1397    :ivar status: Value indicating whether this adapter is valid. Possible values include:
1398     "Inactive", "Active".
1399    :vartype status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.NetworkAdapterStatus
1400    :param rdma_status: Value indicating whether this adapter is RDMA capable. Possible values
1401     include: "Incapable", "Capable".
1402    :type rdma_status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.NetworkAdapterRDMAStatus
1403    :param dhcp_status: Value indicating whether this adapter has DHCP enabled. Possible values
1404     include: "Disabled", "Enabled".
1405    :type dhcp_status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.NetworkAdapterDHCPStatus
1406    :ivar ipv4_configuration: The IPv4 configuration of the network adapter.
1407    :vartype ipv4_configuration: ~azure.mgmt.databoxedge.v2019_03_01.models.Ipv4Config
1408    :ivar ipv6_configuration: The IPv6 configuration of the network adapter.
1409    :vartype ipv6_configuration: ~azure.mgmt.databoxedge.v2019_03_01.models.Ipv6Config
1410    :ivar ipv6_link_local_address: The IPv6 local address.
1411    :vartype ipv6_link_local_address: str
1412    :ivar dns_servers: The list of DNS Servers of the device.
1413    :vartype dns_servers: list[str]
1414    """
1415
1416    _validation = {
1417        'adapter_id': {'readonly': True},
1418        'adapter_position': {'readonly': True},
1419        'index': {'readonly': True},
1420        'node_id': {'readonly': True},
1421        'network_adapter_name': {'readonly': True},
1422        'label': {'readonly': True},
1423        'mac_address': {'readonly': True},
1424        'link_speed': {'readonly': True},
1425        'status': {'readonly': True},
1426        'ipv4_configuration': {'readonly': True},
1427        'ipv6_configuration': {'readonly': True},
1428        'ipv6_link_local_address': {'readonly': True},
1429        'dns_servers': {'readonly': True},
1430    }
1431
1432    _attribute_map = {
1433        'adapter_id': {'key': 'adapterId', 'type': 'str'},
1434        'adapter_position': {'key': 'adapterPosition', 'type': 'NetworkAdapterPosition'},
1435        'index': {'key': 'index', 'type': 'int'},
1436        'node_id': {'key': 'nodeId', 'type': 'str'},
1437        'network_adapter_name': {'key': 'networkAdapterName', 'type': 'str'},
1438        'label': {'key': 'label', 'type': 'str'},
1439        'mac_address': {'key': 'macAddress', 'type': 'str'},
1440        'link_speed': {'key': 'linkSpeed', 'type': 'long'},
1441        'status': {'key': 'status', 'type': 'str'},
1442        'rdma_status': {'key': 'rdmaStatus', 'type': 'str'},
1443        'dhcp_status': {'key': 'dhcpStatus', 'type': 'str'},
1444        'ipv4_configuration': {'key': 'ipv4Configuration', 'type': 'Ipv4Config'},
1445        'ipv6_configuration': {'key': 'ipv6Configuration', 'type': 'Ipv6Config'},
1446        'ipv6_link_local_address': {'key': 'ipv6LinkLocalAddress', 'type': 'str'},
1447        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
1448    }
1449
1450    def __init__(
1451        self,
1452        **kwargs
1453    ):
1454        super(NetworkAdapter, self).__init__(**kwargs)
1455        self.adapter_id = None
1456        self.adapter_position = None
1457        self.index = None
1458        self.node_id = None
1459        self.network_adapter_name = None
1460        self.label = None
1461        self.mac_address = None
1462        self.link_speed = None
1463        self.status = None
1464        self.rdma_status = kwargs.get('rdma_status', None)
1465        self.dhcp_status = kwargs.get('dhcp_status', None)
1466        self.ipv4_configuration = None
1467        self.ipv6_configuration = None
1468        self.ipv6_link_local_address = None
1469        self.dns_servers = None
1470
1471
1472class NetworkAdapterPosition(msrest.serialization.Model):
1473    """The network adapter position.
1474
1475    Variables are only populated by the server, and will be ignored when sending a request.
1476
1477    :ivar network_group: The network group. Possible values include: "None", "NonRDMA", "RDMA".
1478    :vartype network_group: str or ~azure.mgmt.databoxedge.v2019_03_01.models.NetworkGroup
1479    :ivar port: The port.
1480    :vartype port: int
1481    """
1482
1483    _validation = {
1484        'network_group': {'readonly': True},
1485        'port': {'readonly': True},
1486    }
1487
1488    _attribute_map = {
1489        'network_group': {'key': 'networkGroup', 'type': 'str'},
1490        'port': {'key': 'port', 'type': 'int'},
1491    }
1492
1493    def __init__(
1494        self,
1495        **kwargs
1496    ):
1497        super(NetworkAdapterPosition, self).__init__(**kwargs)
1498        self.network_group = None
1499        self.port = None
1500
1501
1502class NetworkSettings(ARMBaseModel):
1503    """The network settings of a device.
1504
1505    Variables are only populated by the server, and will be ignored when sending a request.
1506
1507    :ivar id: The path ID that uniquely identifies the object.
1508    :vartype id: str
1509    :ivar name: The object name.
1510    :vartype name: str
1511    :ivar type: The hierarchical type of the object.
1512    :vartype type: str
1513    :ivar network_adapters: The network adapter list on the device.
1514    :vartype network_adapters: list[~azure.mgmt.databoxedge.v2019_03_01.models.NetworkAdapter]
1515    """
1516
1517    _validation = {
1518        'id': {'readonly': True},
1519        'name': {'readonly': True},
1520        'type': {'readonly': True},
1521        'network_adapters': {'readonly': True},
1522    }
1523
1524    _attribute_map = {
1525        'id': {'key': 'id', 'type': 'str'},
1526        'name': {'key': 'name', 'type': 'str'},
1527        'type': {'key': 'type', 'type': 'str'},
1528        'network_adapters': {'key': 'properties.networkAdapters', 'type': '[NetworkAdapter]'},
1529    }
1530
1531    def __init__(
1532        self,
1533        **kwargs
1534    ):
1535        super(NetworkSettings, self).__init__(**kwargs)
1536        self.network_adapters = None
1537
1538
1539class Operation(msrest.serialization.Model):
1540    """Operations.
1541
1542    :param name: Name of the operation.
1543    :type name: str
1544    :param display: Properties displayed for the operation.
1545    :type display: ~azure.mgmt.databoxedge.v2019_03_01.models.OperationDisplay
1546    :param origin: Origin of the operation.
1547    :type origin: str
1548    :param service_specification: Service specification.
1549    :type service_specification: ~azure.mgmt.databoxedge.v2019_03_01.models.ServiceSpecification
1550    """
1551
1552    _attribute_map = {
1553        'name': {'key': 'name', 'type': 'str'},
1554        'display': {'key': 'display', 'type': 'OperationDisplay'},
1555        'origin': {'key': 'origin', 'type': 'str'},
1556        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'ServiceSpecification'},
1557    }
1558
1559    def __init__(
1560        self,
1561        **kwargs
1562    ):
1563        super(Operation, self).__init__(**kwargs)
1564        self.name = kwargs.get('name', None)
1565        self.display = kwargs.get('display', None)
1566        self.origin = kwargs.get('origin', None)
1567        self.service_specification = kwargs.get('service_specification', None)
1568
1569
1570class OperationDisplay(msrest.serialization.Model):
1571    """Operation display properties.
1572
1573    :param provider: Provider name.
1574    :type provider: str
1575    :param resource: The type of resource in which the operation is performed.
1576    :type resource: str
1577    :param operation: Operation to be performed on the resource.
1578    :type operation: str
1579    :param description: Description of the operation to be performed.
1580    :type description: str
1581    """
1582
1583    _attribute_map = {
1584        'provider': {'key': 'provider', 'type': 'str'},
1585        'resource': {'key': 'resource', 'type': 'str'},
1586        'operation': {'key': 'operation', 'type': 'str'},
1587        'description': {'key': 'description', 'type': 'str'},
1588    }
1589
1590    def __init__(
1591        self,
1592        **kwargs
1593    ):
1594        super(OperationDisplay, self).__init__(**kwargs)
1595        self.provider = kwargs.get('provider', None)
1596        self.resource = kwargs.get('resource', None)
1597        self.operation = kwargs.get('operation', None)
1598        self.description = kwargs.get('description', None)
1599
1600
1601class OperationsList(msrest.serialization.Model):
1602    """The list of operations used for the discovery of available provider operations.
1603
1604    All required parameters must be populated in order to send to Azure.
1605
1606    :param value: Required. The value.
1607    :type value: list[~azure.mgmt.databoxedge.v2019_03_01.models.Operation]
1608    :param next_link: Link to the next set of results.
1609    :type next_link: str
1610    """
1611
1612    _validation = {
1613        'value': {'required': True},
1614    }
1615
1616    _attribute_map = {
1617        'value': {'key': 'value', 'type': '[Operation]'},
1618        'next_link': {'key': 'nextLink', 'type': 'str'},
1619    }
1620
1621    def __init__(
1622        self,
1623        **kwargs
1624    ):
1625        super(OperationsList, self).__init__(**kwargs)
1626        self.value = kwargs['value']
1627        self.next_link = kwargs.get('next_link', None)
1628
1629
1630class Order(ARMBaseModel):
1631    """The order details.
1632
1633    Variables are only populated by the server, and will be ignored when sending a request.
1634
1635    :ivar id: The path ID that uniquely identifies the object.
1636    :vartype id: str
1637    :ivar name: The object name.
1638    :vartype name: str
1639    :ivar type: The hierarchical type of the object.
1640    :vartype type: str
1641    :param contact_information: The contact details.
1642    :type contact_information: ~azure.mgmt.databoxedge.v2019_03_01.models.ContactDetails
1643    :param shipping_address: The shipping address.
1644    :type shipping_address: ~azure.mgmt.databoxedge.v2019_03_01.models.Address
1645    :param current_status: Current status of the order.
1646    :type current_status: ~azure.mgmt.databoxedge.v2019_03_01.models.OrderStatus
1647    :ivar order_history: List of status changes in the order.
1648    :vartype order_history: list[~azure.mgmt.databoxedge.v2019_03_01.models.OrderStatus]
1649    :ivar serial_number: Serial number of the device.
1650    :vartype serial_number: str
1651    :ivar delivery_tracking_info: Tracking information for the package delivered to the customer
1652     whether it has an original or a replacement device.
1653    :vartype delivery_tracking_info: list[~azure.mgmt.databoxedge.v2019_03_01.models.TrackingInfo]
1654    :ivar return_tracking_info: Tracking information for the package returned from the customer
1655     whether it has an original or a replacement device.
1656    :vartype return_tracking_info: list[~azure.mgmt.databoxedge.v2019_03_01.models.TrackingInfo]
1657    """
1658
1659    _validation = {
1660        'id': {'readonly': True},
1661        'name': {'readonly': True},
1662        'type': {'readonly': True},
1663        'order_history': {'readonly': True},
1664        'serial_number': {'readonly': True},
1665        'delivery_tracking_info': {'readonly': True},
1666        'return_tracking_info': {'readonly': True},
1667    }
1668
1669    _attribute_map = {
1670        'id': {'key': 'id', 'type': 'str'},
1671        'name': {'key': 'name', 'type': 'str'},
1672        'type': {'key': 'type', 'type': 'str'},
1673        'contact_information': {'key': 'properties.contactInformation', 'type': 'ContactDetails'},
1674        'shipping_address': {'key': 'properties.shippingAddress', 'type': 'Address'},
1675        'current_status': {'key': 'properties.currentStatus', 'type': 'OrderStatus'},
1676        'order_history': {'key': 'properties.orderHistory', 'type': '[OrderStatus]'},
1677        'serial_number': {'key': 'properties.serialNumber', 'type': 'str'},
1678        'delivery_tracking_info': {'key': 'properties.deliveryTrackingInfo', 'type': '[TrackingInfo]'},
1679        'return_tracking_info': {'key': 'properties.returnTrackingInfo', 'type': '[TrackingInfo]'},
1680    }
1681
1682    def __init__(
1683        self,
1684        **kwargs
1685    ):
1686        super(Order, self).__init__(**kwargs)
1687        self.contact_information = kwargs.get('contact_information', None)
1688        self.shipping_address = kwargs.get('shipping_address', None)
1689        self.current_status = kwargs.get('current_status', None)
1690        self.order_history = None
1691        self.serial_number = None
1692        self.delivery_tracking_info = None
1693        self.return_tracking_info = None
1694
1695
1696class OrderList(msrest.serialization.Model):
1697    """List of order entities.
1698
1699    Variables are only populated by the server, and will be ignored when sending a request.
1700
1701    :ivar value: The list of orders.
1702    :vartype value: list[~azure.mgmt.databoxedge.v2019_03_01.models.Order]
1703    :ivar next_link: Link to the next set of results.
1704    :vartype next_link: str
1705    """
1706
1707    _validation = {
1708        'value': {'readonly': True},
1709        'next_link': {'readonly': True},
1710    }
1711
1712    _attribute_map = {
1713        'value': {'key': 'value', 'type': '[Order]'},
1714        'next_link': {'key': 'nextLink', 'type': 'str'},
1715    }
1716
1717    def __init__(
1718        self,
1719        **kwargs
1720    ):
1721        super(OrderList, self).__init__(**kwargs)
1722        self.value = None
1723        self.next_link = None
1724
1725
1726class OrderStatus(msrest.serialization.Model):
1727    """Represents a single status change.
1728
1729    Variables are only populated by the server, and will be ignored when sending a request.
1730
1731    All required parameters must be populated in order to send to Azure.
1732
1733    :param status: Required. Status of the order as per the allowed status types. Possible values
1734     include: "Untracked", "AwaitingFulfilment", "AwaitingPreparation", "AwaitingShipment",
1735     "Shipped", "Arriving", "Delivered", "ReplacementRequested", "LostDevice", "Declined",
1736     "ReturnInitiated", "AwaitingReturnShipment", "ShippedBack", "CollectedAtMicrosoft".
1737    :type status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.OrderState
1738    :ivar update_date_time: Time of status update.
1739    :vartype update_date_time: ~datetime.datetime
1740    :param comments: Comments related to this status change.
1741    :type comments: str
1742    """
1743
1744    _validation = {
1745        'status': {'required': True},
1746        'update_date_time': {'readonly': True},
1747    }
1748
1749    _attribute_map = {
1750        'status': {'key': 'status', 'type': 'str'},
1751        'update_date_time': {'key': 'updateDateTime', 'type': 'iso-8601'},
1752        'comments': {'key': 'comments', 'type': 'str'},
1753    }
1754
1755    def __init__(
1756        self,
1757        **kwargs
1758    ):
1759        super(OrderStatus, self).__init__(**kwargs)
1760        self.status = kwargs['status']
1761        self.update_date_time = None
1762        self.comments = kwargs.get('comments', None)
1763
1764
1765class PeriodicTimerEventTrigger(Trigger):
1766    """Trigger details.
1767
1768    Variables are only populated by the server, and will be ignored when sending a request.
1769
1770    All required parameters must be populated in order to send to Azure.
1771
1772    :ivar id: The path ID that uniquely identifies the object.
1773    :vartype id: str
1774    :ivar name: The object name.
1775    :vartype name: str
1776    :ivar type: The hierarchical type of the object.
1777    :vartype type: str
1778    :param kind: Required. Trigger Kind.Constant filled by server.  Possible values include:
1779     "FileEvent", "PeriodicTimerEvent".
1780    :type kind: str or ~azure.mgmt.databoxedge.v2019_03_01.models.TriggerEventType
1781    :param source_info: Required. Periodic timer details.
1782    :type source_info: ~azure.mgmt.databoxedge.v2019_03_01.models.PeriodicTimerSourceInfo
1783    :param sink_info: Required. Role Sink information.
1784    :type sink_info: ~azure.mgmt.databoxedge.v2019_03_01.models.RoleSinkInfo
1785    :param custom_context_tag: A custom context tag typically used to correlate the trigger against
1786     its usage. For example, if a periodic timer trigger is intended for certain specific IoT
1787     modules in the device, the tag can be the name or the image URL of the module.
1788    :type custom_context_tag: str
1789    """
1790
1791    _validation = {
1792        'id': {'readonly': True},
1793        'name': {'readonly': True},
1794        'type': {'readonly': True},
1795        'kind': {'required': True},
1796        'source_info': {'required': True},
1797        'sink_info': {'required': True},
1798    }
1799
1800    _attribute_map = {
1801        'id': {'key': 'id', 'type': 'str'},
1802        'name': {'key': 'name', 'type': 'str'},
1803        'type': {'key': 'type', 'type': 'str'},
1804        'kind': {'key': 'kind', 'type': 'str'},
1805        'source_info': {'key': 'properties.sourceInfo', 'type': 'PeriodicTimerSourceInfo'},
1806        'sink_info': {'key': 'properties.sinkInfo', 'type': 'RoleSinkInfo'},
1807        'custom_context_tag': {'key': 'properties.customContextTag', 'type': 'str'},
1808    }
1809
1810    def __init__(
1811        self,
1812        **kwargs
1813    ):
1814        super(PeriodicTimerEventTrigger, self).__init__(**kwargs)
1815        self.kind = 'PeriodicTimerEvent'  # type: str
1816        self.source_info = kwargs['source_info']
1817        self.sink_info = kwargs['sink_info']
1818        self.custom_context_tag = kwargs.get('custom_context_tag', None)
1819
1820
1821class PeriodicTimerSourceInfo(msrest.serialization.Model):
1822    """Periodic timer event source.
1823
1824    All required parameters must be populated in order to send to Azure.
1825
1826    :param start_time: Required. The time of the day that results in a valid trigger. Schedule is
1827     computed with reference to the time specified up to seconds. If timezone is not specified the
1828     time will considered to be in device timezone. The value will always be returned as UTC time.
1829    :type start_time: ~datetime.datetime
1830    :param schedule: Required. Periodic frequency at which timer event needs to be raised. Supports
1831     daily, hourly, minutes, and seconds.
1832    :type schedule: str
1833    :param topic: Topic where periodic events are published to IoT device.
1834    :type topic: str
1835    """
1836
1837    _validation = {
1838        'start_time': {'required': True},
1839        'schedule': {'required': True},
1840    }
1841
1842    _attribute_map = {
1843        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
1844        'schedule': {'key': 'schedule', 'type': 'str'},
1845        'topic': {'key': 'topic', 'type': 'str'},
1846    }
1847
1848    def __init__(
1849        self,
1850        **kwargs
1851    ):
1852        super(PeriodicTimerSourceInfo, self).__init__(**kwargs)
1853        self.start_time = kwargs['start_time']
1854        self.schedule = kwargs['schedule']
1855        self.topic = kwargs.get('topic', None)
1856
1857
1858class RefreshDetails(msrest.serialization.Model):
1859    """Fields for tracking refresh job on the share.
1860
1861    :param in_progress_refresh_job_id: If a refresh share job is currently in progress on this
1862     share, this field indicates the ARM resource ID of that job. The field is empty if no job is in
1863     progress.
1864    :type in_progress_refresh_job_id: str
1865    :param last_completed_refresh_job_time_in_utc: Indicates the completed time for the last
1866     refresh job on this particular share, if any.This could be a failed job or a successful job.
1867    :type last_completed_refresh_job_time_in_utc: ~datetime.datetime
1868    :param error_manifest_file: Indicates the relative path of the error xml for the last refresh
1869     job on this particular share, if any. This could be a failed job or a successful job.
1870    :type error_manifest_file: str
1871    :param last_job: Indicates the id of the last refresh job on this particular share,if any. This
1872     could be a failed job or a successful job.
1873    :type last_job: str
1874    """
1875
1876    _attribute_map = {
1877        'in_progress_refresh_job_id': {'key': 'inProgressRefreshJobId', 'type': 'str'},
1878        'last_completed_refresh_job_time_in_utc': {'key': 'lastCompletedRefreshJobTimeInUTC', 'type': 'iso-8601'},
1879        'error_manifest_file': {'key': 'errorManifestFile', 'type': 'str'},
1880        'last_job': {'key': 'lastJob', 'type': 'str'},
1881    }
1882
1883    def __init__(
1884        self,
1885        **kwargs
1886    ):
1887        super(RefreshDetails, self).__init__(**kwargs)
1888        self.in_progress_refresh_job_id = kwargs.get('in_progress_refresh_job_id', None)
1889        self.last_completed_refresh_job_time_in_utc = kwargs.get('last_completed_refresh_job_time_in_utc', None)
1890        self.error_manifest_file = kwargs.get('error_manifest_file', None)
1891        self.last_job = kwargs.get('last_job', None)
1892
1893
1894class RoleList(msrest.serialization.Model):
1895    """Collection of all the roles on the Data Box Edge device.
1896
1897    Variables are only populated by the server, and will be ignored when sending a request.
1898
1899    :ivar value: The Value.
1900    :vartype value: list[~azure.mgmt.databoxedge.v2019_03_01.models.Role]
1901    :ivar next_link: Link to the next set of results.
1902    :vartype next_link: str
1903    """
1904
1905    _validation = {
1906        'value': {'readonly': True},
1907        'next_link': {'readonly': True},
1908    }
1909
1910    _attribute_map = {
1911        'value': {'key': 'value', 'type': '[Role]'},
1912        'next_link': {'key': 'nextLink', 'type': 'str'},
1913    }
1914
1915    def __init__(
1916        self,
1917        **kwargs
1918    ):
1919        super(RoleList, self).__init__(**kwargs)
1920        self.value = None
1921        self.next_link = None
1922
1923
1924class RoleSinkInfo(msrest.serialization.Model):
1925    """Compute role against which events will be raised.
1926
1927    All required parameters must be populated in order to send to Azure.
1928
1929    :param role_id: Required. Compute role ID.
1930    :type role_id: str
1931    """
1932
1933    _validation = {
1934        'role_id': {'required': True},
1935    }
1936
1937    _attribute_map = {
1938        'role_id': {'key': 'roleId', 'type': 'str'},
1939    }
1940
1941    def __init__(
1942        self,
1943        **kwargs
1944    ):
1945        super(RoleSinkInfo, self).__init__(**kwargs)
1946        self.role_id = kwargs['role_id']
1947
1948
1949class SecuritySettings(ARMBaseModel):
1950    """The security settings of a device.
1951
1952    Variables are only populated by the server, and will be ignored when sending a request.
1953
1954    All required parameters must be populated in order to send to Azure.
1955
1956    :ivar id: The path ID that uniquely identifies the object.
1957    :vartype id: str
1958    :ivar name: The object name.
1959    :vartype name: str
1960    :ivar type: The hierarchical type of the object.
1961    :vartype type: str
1962    :param device_admin_password: Required. Device administrator password as an encrypted string
1963     (encrypted using RSA PKCS #1) is used to sign into the  local web UI of the device. The Actual
1964     password should have at least 8 characters that are a combination of  uppercase, lowercase,
1965     numeric, and special characters.
1966    :type device_admin_password:
1967     ~azure.mgmt.databoxedge.v2019_03_01.models.AsymmetricEncryptedSecret
1968    """
1969
1970    _validation = {
1971        'id': {'readonly': True},
1972        'name': {'readonly': True},
1973        'type': {'readonly': True},
1974        'device_admin_password': {'required': True},
1975    }
1976
1977    _attribute_map = {
1978        'id': {'key': 'id', 'type': 'str'},
1979        'name': {'key': 'name', 'type': 'str'},
1980        'type': {'key': 'type', 'type': 'str'},
1981        'device_admin_password': {'key': 'properties.deviceAdminPassword', 'type': 'AsymmetricEncryptedSecret'},
1982    }
1983
1984    def __init__(
1985        self,
1986        **kwargs
1987    ):
1988        super(SecuritySettings, self).__init__(**kwargs)
1989        self.device_admin_password = kwargs['device_admin_password']
1990
1991
1992class ServiceSpecification(msrest.serialization.Model):
1993    """Service specification.
1994
1995    :param metric_specifications: Metric specification as defined by shoebox.
1996    :type metric_specifications:
1997     list[~azure.mgmt.databoxedge.v2019_03_01.models.MetricSpecificationV1]
1998    """
1999
2000    _attribute_map = {
2001        'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecificationV1]'},
2002    }
2003
2004    def __init__(
2005        self,
2006        **kwargs
2007    ):
2008        super(ServiceSpecification, self).__init__(**kwargs)
2009        self.metric_specifications = kwargs.get('metric_specifications', None)
2010
2011
2012class Share(ARMBaseModel):
2013    """Represents a share on the  Data Box Edge/Gateway device.
2014
2015    Variables are only populated by the server, and will be ignored when sending a request.
2016
2017    All required parameters must be populated in order to send to Azure.
2018
2019    :ivar id: The path ID that uniquely identifies the object.
2020    :vartype id: str
2021    :ivar name: The object name.
2022    :vartype name: str
2023    :ivar type: The hierarchical type of the object.
2024    :vartype type: str
2025    :param description: Description for the share.
2026    :type description: str
2027    :param share_status: Required. Current status of the share. Possible values include: "Online",
2028     "Offline".
2029    :type share_status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.ShareStatus
2030    :param monitoring_status: Required. Current monitoring status of the share. Possible values
2031     include: "Enabled", "Disabled".
2032    :type monitoring_status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.MonitoringStatus
2033    :param azure_container_info: Azure container mapping for the share.
2034    :type azure_container_info: ~azure.mgmt.databoxedge.v2019_03_01.models.AzureContainerInfo
2035    :param access_protocol: Required. Access protocol to be used by the share. Possible values
2036     include: "SMB", "NFS".
2037    :type access_protocol: str or ~azure.mgmt.databoxedge.v2019_03_01.models.ShareAccessProtocol
2038    :param user_access_rights: Mapping of users and corresponding access rights on the share
2039     (required for SMB protocol).
2040    :type user_access_rights: list[~azure.mgmt.databoxedge.v2019_03_01.models.UserAccessRight]
2041    :param client_access_rights: List of IP addresses and corresponding access rights on the
2042     share(required for NFS protocol).
2043    :type client_access_rights: list[~azure.mgmt.databoxedge.v2019_03_01.models.ClientAccessRight]
2044    :param refresh_details: Details of the refresh job on this share.
2045    :type refresh_details: ~azure.mgmt.databoxedge.v2019_03_01.models.RefreshDetails
2046    :ivar share_mappings: Share mount point to the role.
2047    :vartype share_mappings: list[~azure.mgmt.databoxedge.v2019_03_01.models.MountPointMap]
2048    :param data_policy: Data policy of the share. Possible values include: "Cloud", "Local".
2049    :type data_policy: str or ~azure.mgmt.databoxedge.v2019_03_01.models.DataPolicy
2050    """
2051
2052    _validation = {
2053        'id': {'readonly': True},
2054        'name': {'readonly': True},
2055        'type': {'readonly': True},
2056        'share_status': {'required': True},
2057        'monitoring_status': {'required': True},
2058        'access_protocol': {'required': True},
2059        'share_mappings': {'readonly': True},
2060    }
2061
2062    _attribute_map = {
2063        'id': {'key': 'id', 'type': 'str'},
2064        'name': {'key': 'name', 'type': 'str'},
2065        'type': {'key': 'type', 'type': 'str'},
2066        'description': {'key': 'properties.description', 'type': 'str'},
2067        'share_status': {'key': 'properties.shareStatus', 'type': 'str'},
2068        'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'},
2069        'azure_container_info': {'key': 'properties.azureContainerInfo', 'type': 'AzureContainerInfo'},
2070        'access_protocol': {'key': 'properties.accessProtocol', 'type': 'str'},
2071        'user_access_rights': {'key': 'properties.userAccessRights', 'type': '[UserAccessRight]'},
2072        'client_access_rights': {'key': 'properties.clientAccessRights', 'type': '[ClientAccessRight]'},
2073        'refresh_details': {'key': 'properties.refreshDetails', 'type': 'RefreshDetails'},
2074        'share_mappings': {'key': 'properties.shareMappings', 'type': '[MountPointMap]'},
2075        'data_policy': {'key': 'properties.dataPolicy', 'type': 'str'},
2076    }
2077
2078    def __init__(
2079        self,
2080        **kwargs
2081    ):
2082        super(Share, self).__init__(**kwargs)
2083        self.description = kwargs.get('description', None)
2084        self.share_status = kwargs['share_status']
2085        self.monitoring_status = kwargs['monitoring_status']
2086        self.azure_container_info = kwargs.get('azure_container_info', None)
2087        self.access_protocol = kwargs['access_protocol']
2088        self.user_access_rights = kwargs.get('user_access_rights', None)
2089        self.client_access_rights = kwargs.get('client_access_rights', None)
2090        self.refresh_details = kwargs.get('refresh_details', None)
2091        self.share_mappings = None
2092        self.data_policy = kwargs.get('data_policy', None)
2093
2094
2095class ShareAccessRight(msrest.serialization.Model):
2096    """Specifies the mapping between this particular user and the type of access he has on shares on this device.
2097
2098    All required parameters must be populated in order to send to Azure.
2099
2100    :param share_id: Required. The share ID.
2101    :type share_id: str
2102    :param access_type: Required. Type of access to be allowed on the share for this user. Possible
2103     values include: "Change", "Read", "Custom".
2104    :type access_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.ShareAccessType
2105    """
2106
2107    _validation = {
2108        'share_id': {'required': True},
2109        'access_type': {'required': True},
2110    }
2111
2112    _attribute_map = {
2113        'share_id': {'key': 'shareId', 'type': 'str'},
2114        'access_type': {'key': 'accessType', 'type': 'str'},
2115    }
2116
2117    def __init__(
2118        self,
2119        **kwargs
2120    ):
2121        super(ShareAccessRight, self).__init__(**kwargs)
2122        self.share_id = kwargs['share_id']
2123        self.access_type = kwargs['access_type']
2124
2125
2126class ShareList(msrest.serialization.Model):
2127    """Collection of all the shares on the Data Box Edge/Gateway device.
2128
2129    Variables are only populated by the server, and will be ignored when sending a request.
2130
2131    :ivar value: The list of shares.
2132    :vartype value: list[~azure.mgmt.databoxedge.v2019_03_01.models.Share]
2133    :ivar next_link: Link to the next set of results.
2134    :vartype next_link: str
2135    """
2136
2137    _validation = {
2138        'value': {'readonly': True},
2139        'next_link': {'readonly': True},
2140    }
2141
2142    _attribute_map = {
2143        'value': {'key': 'value', 'type': '[Share]'},
2144        'next_link': {'key': 'nextLink', 'type': 'str'},
2145    }
2146
2147    def __init__(
2148        self,
2149        **kwargs
2150    ):
2151        super(ShareList, self).__init__(**kwargs)
2152        self.value = None
2153        self.next_link = None
2154
2155
2156class Sku(msrest.serialization.Model):
2157    """The SKU type.
2158
2159    :param name: SKU name. Possible values include: "Gateway", "Edge".
2160    :type name: str or ~azure.mgmt.databoxedge.v2019_03_01.models.SkuName
2161    :param tier: The SKU tier. This is based on the SKU name. Possible values include: "Standard".
2162    :type tier: str or ~azure.mgmt.databoxedge.v2019_03_01.models.SkuTier
2163    """
2164
2165    _attribute_map = {
2166        'name': {'key': 'name', 'type': 'str'},
2167        'tier': {'key': 'tier', 'type': 'str'},
2168    }
2169
2170    def __init__(
2171        self,
2172        **kwargs
2173    ):
2174        super(Sku, self).__init__(**kwargs)
2175        self.name = kwargs.get('name', None)
2176        self.tier = kwargs.get('tier', None)
2177
2178
2179class StorageAccountCredential(ARMBaseModel):
2180    """The storage account credential.
2181
2182    Variables are only populated by the server, and will be ignored when sending a request.
2183
2184    All required parameters must be populated in order to send to Azure.
2185
2186    :ivar id: The path ID that uniquely identifies the object.
2187    :vartype id: str
2188    :ivar name: The object name.
2189    :vartype name: str
2190    :ivar type: The hierarchical type of the object.
2191    :vartype type: str
2192    :param alias: Required. Alias for the storage account.
2193    :type alias: str
2194    :param user_name: Username for the storage account.
2195    :type user_name: str
2196    :param account_key: Encrypted storage key.
2197    :type account_key: ~azure.mgmt.databoxedge.v2019_03_01.models.AsymmetricEncryptedSecret
2198    :param connection_string: Connection string for the storage account. Use this string if
2199     username and account key are not specified.
2200    :type connection_string: str
2201    :param ssl_status: Required. Signifies whether SSL needs to be enabled or not. Possible values
2202     include: "Enabled", "Disabled".
2203    :type ssl_status: str or ~azure.mgmt.databoxedge.v2019_03_01.models.SSLStatus
2204    :param blob_domain_name: Blob end point for private clouds.
2205    :type blob_domain_name: str
2206    :param account_type: Required. Type of storage accessed on the storage account. Possible values
2207     include: "GeneralPurposeStorage", "BlobStorage".
2208    :type account_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.AccountType
2209    """
2210
2211    _validation = {
2212        'id': {'readonly': True},
2213        'name': {'readonly': True},
2214        'type': {'readonly': True},
2215        'alias': {'required': True},
2216        'ssl_status': {'required': True},
2217        'account_type': {'required': True},
2218    }
2219
2220    _attribute_map = {
2221        'id': {'key': 'id', 'type': 'str'},
2222        'name': {'key': 'name', 'type': 'str'},
2223        'type': {'key': 'type', 'type': 'str'},
2224        'alias': {'key': 'properties.alias', 'type': 'str'},
2225        'user_name': {'key': 'properties.userName', 'type': 'str'},
2226        'account_key': {'key': 'properties.accountKey', 'type': 'AsymmetricEncryptedSecret'},
2227        'connection_string': {'key': 'properties.connectionString', 'type': 'str'},
2228        'ssl_status': {'key': 'properties.sslStatus', 'type': 'str'},
2229        'blob_domain_name': {'key': 'properties.blobDomainName', 'type': 'str'},
2230        'account_type': {'key': 'properties.accountType', 'type': 'str'},
2231    }
2232
2233    def __init__(
2234        self,
2235        **kwargs
2236    ):
2237        super(StorageAccountCredential, self).__init__(**kwargs)
2238        self.alias = kwargs['alias']
2239        self.user_name = kwargs.get('user_name', None)
2240        self.account_key = kwargs.get('account_key', None)
2241        self.connection_string = kwargs.get('connection_string', None)
2242        self.ssl_status = kwargs['ssl_status']
2243        self.blob_domain_name = kwargs.get('blob_domain_name', None)
2244        self.account_type = kwargs['account_type']
2245
2246
2247class StorageAccountCredentialList(msrest.serialization.Model):
2248    """The collection of storage account credentials.
2249
2250    Variables are only populated by the server, and will be ignored when sending a request.
2251
2252    :ivar value: The value.
2253    :vartype value: list[~azure.mgmt.databoxedge.v2019_03_01.models.StorageAccountCredential]
2254    :ivar next_link: Link to the next set of results.
2255    :vartype next_link: str
2256    """
2257
2258    _validation = {
2259        'value': {'readonly': True},
2260        'next_link': {'readonly': True},
2261    }
2262
2263    _attribute_map = {
2264        'value': {'key': 'value', 'type': '[StorageAccountCredential]'},
2265        'next_link': {'key': 'nextLink', 'type': 'str'},
2266    }
2267
2268    def __init__(
2269        self,
2270        **kwargs
2271    ):
2272        super(StorageAccountCredentialList, self).__init__(**kwargs)
2273        self.value = None
2274        self.next_link = None
2275
2276
2277class SymmetricKey(msrest.serialization.Model):
2278    """Symmetric key for authentication.
2279
2280    :param connection_string: Connection string based on the symmetric key.
2281    :type connection_string: ~azure.mgmt.databoxedge.v2019_03_01.models.AsymmetricEncryptedSecret
2282    """
2283
2284    _attribute_map = {
2285        'connection_string': {'key': 'connectionString', 'type': 'AsymmetricEncryptedSecret'},
2286    }
2287
2288    def __init__(
2289        self,
2290        **kwargs
2291    ):
2292        super(SymmetricKey, self).__init__(**kwargs)
2293        self.connection_string = kwargs.get('connection_string', None)
2294
2295
2296class TrackingInfo(msrest.serialization.Model):
2297    """Tracking courier information.
2298
2299    :param serial_number: Serial number of the device being tracked.
2300    :type serial_number: str
2301    :param carrier_name: Name of the carrier used in the delivery.
2302    :type carrier_name: str
2303    :param tracking_id: Tracking ID of the shipment.
2304    :type tracking_id: str
2305    :param tracking_url: Tracking URL of the shipment.
2306    :type tracking_url: str
2307    """
2308
2309    _attribute_map = {
2310        'serial_number': {'key': 'serialNumber', 'type': 'str'},
2311        'carrier_name': {'key': 'carrierName', 'type': 'str'},
2312        'tracking_id': {'key': 'trackingId', 'type': 'str'},
2313        'tracking_url': {'key': 'trackingUrl', 'type': 'str'},
2314    }
2315
2316    def __init__(
2317        self,
2318        **kwargs
2319    ):
2320        super(TrackingInfo, self).__init__(**kwargs)
2321        self.serial_number = kwargs.get('serial_number', None)
2322        self.carrier_name = kwargs.get('carrier_name', None)
2323        self.tracking_id = kwargs.get('tracking_id', None)
2324        self.tracking_url = kwargs.get('tracking_url', None)
2325
2326
2327class TriggerList(msrest.serialization.Model):
2328    """Collection of all trigger on the data box edge device.
2329
2330    Variables are only populated by the server, and will be ignored when sending a request.
2331
2332    :ivar value: The list of triggers.
2333    :vartype value: list[~azure.mgmt.databoxedge.v2019_03_01.models.Trigger]
2334    :ivar next_link: Link to the next set of results.
2335    :vartype next_link: str
2336    """
2337
2338    _validation = {
2339        'value': {'readonly': True},
2340        'next_link': {'readonly': True},
2341    }
2342
2343    _attribute_map = {
2344        'value': {'key': 'value', 'type': '[Trigger]'},
2345        'next_link': {'key': 'nextLink', 'type': 'str'},
2346    }
2347
2348    def __init__(
2349        self,
2350        **kwargs
2351    ):
2352        super(TriggerList, self).__init__(**kwargs)
2353        self.value = None
2354        self.next_link = None
2355
2356
2357class UpdateDownloadProgress(msrest.serialization.Model):
2358    """Details about the download progress of update.
2359
2360    Variables are only populated by the server, and will be ignored when sending a request.
2361
2362    :ivar download_phase: The download phase. Possible values include: "Unknown", "Initializing",
2363     "Downloading", "Verifying".
2364    :vartype download_phase: str or ~azure.mgmt.databoxedge.v2019_03_01.models.DownloadPhase
2365    :ivar percent_complete: Percentage of completion.
2366    :vartype percent_complete: int
2367    :ivar total_bytes_to_download: Total bytes to download.
2368    :vartype total_bytes_to_download: float
2369    :ivar total_bytes_downloaded: Total bytes downloaded.
2370    :vartype total_bytes_downloaded: float
2371    :ivar number_of_updates_to_download: Number of updates to download.
2372    :vartype number_of_updates_to_download: int
2373    :ivar number_of_updates_downloaded: Number of updates downloaded.
2374    :vartype number_of_updates_downloaded: int
2375    """
2376
2377    _validation = {
2378        'download_phase': {'readonly': True},
2379        'percent_complete': {'readonly': True},
2380        'total_bytes_to_download': {'readonly': True},
2381        'total_bytes_downloaded': {'readonly': True},
2382        'number_of_updates_to_download': {'readonly': True},
2383        'number_of_updates_downloaded': {'readonly': True},
2384    }
2385
2386    _attribute_map = {
2387        'download_phase': {'key': 'downloadPhase', 'type': 'str'},
2388        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
2389        'total_bytes_to_download': {'key': 'totalBytesToDownload', 'type': 'float'},
2390        'total_bytes_downloaded': {'key': 'totalBytesDownloaded', 'type': 'float'},
2391        'number_of_updates_to_download': {'key': 'numberOfUpdatesToDownload', 'type': 'int'},
2392        'number_of_updates_downloaded': {'key': 'numberOfUpdatesDownloaded', 'type': 'int'},
2393    }
2394
2395    def __init__(
2396        self,
2397        **kwargs
2398    ):
2399        super(UpdateDownloadProgress, self).__init__(**kwargs)
2400        self.download_phase = None
2401        self.percent_complete = None
2402        self.total_bytes_to_download = None
2403        self.total_bytes_downloaded = None
2404        self.number_of_updates_to_download = None
2405        self.number_of_updates_downloaded = None
2406
2407
2408class UpdateInstallProgress(msrest.serialization.Model):
2409    """Progress details during installation of updates.
2410
2411    Variables are only populated by the server, and will be ignored when sending a request.
2412
2413    :ivar percent_complete: Percentage completed.
2414    :vartype percent_complete: int
2415    :ivar number_of_updates_to_install: Number of updates to install.
2416    :vartype number_of_updates_to_install: int
2417    :ivar number_of_updates_installed: Number of updates installed.
2418    :vartype number_of_updates_installed: int
2419    """
2420
2421    _validation = {
2422        'percent_complete': {'readonly': True},
2423        'number_of_updates_to_install': {'readonly': True},
2424        'number_of_updates_installed': {'readonly': True},
2425    }
2426
2427    _attribute_map = {
2428        'percent_complete': {'key': 'percentComplete', 'type': 'int'},
2429        'number_of_updates_to_install': {'key': 'numberOfUpdatesToInstall', 'type': 'int'},
2430        'number_of_updates_installed': {'key': 'numberOfUpdatesInstalled', 'type': 'int'},
2431    }
2432
2433    def __init__(
2434        self,
2435        **kwargs
2436    ):
2437        super(UpdateInstallProgress, self).__init__(**kwargs)
2438        self.percent_complete = None
2439        self.number_of_updates_to_install = None
2440        self.number_of_updates_installed = None
2441
2442
2443class UpdateSummary(ARMBaseModel):
2444    """Details about ongoing updates and availability of updates on the device.
2445
2446    Variables are only populated by the server, and will be ignored when sending a request.
2447
2448    :ivar id: The path ID that uniquely identifies the object.
2449    :vartype id: str
2450    :ivar name: The object name.
2451    :vartype name: str
2452    :ivar type: The hierarchical type of the object.
2453    :vartype type: str
2454    :param device_version_number: The current version of the device in format: 1.2.17312.13.",.
2455    :type device_version_number: str
2456    :param friendly_device_version_name: The current version of the device in text format.
2457    :type friendly_device_version_name: str
2458    :param device_last_scanned_date_time: The last time when a scan was done on the device.
2459    :type device_last_scanned_date_time: ~datetime.datetime
2460    :param last_completed_scan_job_date_time: The time when the last scan job was completed
2461     (success/cancelled/failed) on the appliance.
2462    :type last_completed_scan_job_date_time: ~datetime.datetime
2463    :ivar last_completed_download_job_date_time: The time when the last Download job was completed
2464     (success/cancelled/failed) on the appliance.
2465    :vartype last_completed_download_job_date_time: ~datetime.datetime
2466    :ivar last_completed_install_job_date_time: The time when the last Install job was completed
2467     (success/cancelled/failed) on the appliance.
2468    :vartype last_completed_install_job_date_time: ~datetime.datetime
2469    :ivar total_number_of_updates_available: The number of updates available for the current device
2470     version as per the last device scan.
2471    :vartype total_number_of_updates_available: int
2472    :ivar total_number_of_updates_pending_download: The total number of items pending download.
2473    :vartype total_number_of_updates_pending_download: int
2474    :ivar total_number_of_updates_pending_install: The total number of items pending install.
2475    :vartype total_number_of_updates_pending_install: int
2476    :ivar reboot_behavior: Indicates if updates are available and at least one of the updates needs
2477     a reboot. Possible values include: "NeverReboots", "RequiresReboot", "RequestReboot".
2478    :vartype reboot_behavior: str or
2479     ~azure.mgmt.databoxedge.v2019_03_01.models.InstallRebootBehavior
2480    :ivar ongoing_update_operation: The current update operation. Possible values include: "None",
2481     "Scan", "Download", "Install".
2482    :vartype ongoing_update_operation: str or
2483     ~azure.mgmt.databoxedge.v2019_03_01.models.UpdateOperation
2484    :ivar in_progress_download_job_id: The job ID of the download job in progress.
2485    :vartype in_progress_download_job_id: str
2486    :ivar in_progress_install_job_id: The job ID of the install job in progress.
2487    :vartype in_progress_install_job_id: str
2488    :ivar in_progress_download_job_started_date_time: The time when the currently running download
2489     (if any) started.
2490    :vartype in_progress_download_job_started_date_time: ~datetime.datetime
2491    :ivar in_progress_install_job_started_date_time: The time when the currently running install
2492     (if any) started.
2493    :vartype in_progress_install_job_started_date_time: ~datetime.datetime
2494    :ivar update_titles: The list of updates available for install.
2495    :vartype update_titles: list[str]
2496    :ivar total_update_size_in_bytes: The total size of updates available for download in bytes.
2497    :vartype total_update_size_in_bytes: float
2498    """
2499
2500    _validation = {
2501        'id': {'readonly': True},
2502        'name': {'readonly': True},
2503        'type': {'readonly': True},
2504        'last_completed_download_job_date_time': {'readonly': True},
2505        'last_completed_install_job_date_time': {'readonly': True},
2506        'total_number_of_updates_available': {'readonly': True},
2507        'total_number_of_updates_pending_download': {'readonly': True},
2508        'total_number_of_updates_pending_install': {'readonly': True},
2509        'reboot_behavior': {'readonly': True},
2510        'ongoing_update_operation': {'readonly': True},
2511        'in_progress_download_job_id': {'readonly': True},
2512        'in_progress_install_job_id': {'readonly': True},
2513        'in_progress_download_job_started_date_time': {'readonly': True},
2514        'in_progress_install_job_started_date_time': {'readonly': True},
2515        'update_titles': {'readonly': True},
2516        'total_update_size_in_bytes': {'readonly': True},
2517    }
2518
2519    _attribute_map = {
2520        'id': {'key': 'id', 'type': 'str'},
2521        'name': {'key': 'name', 'type': 'str'},
2522        'type': {'key': 'type', 'type': 'str'},
2523        'device_version_number': {'key': 'properties.deviceVersionNumber', 'type': 'str'},
2524        'friendly_device_version_name': {'key': 'properties.friendlyDeviceVersionName', 'type': 'str'},
2525        'device_last_scanned_date_time': {'key': 'properties.deviceLastScannedDateTime', 'type': 'iso-8601'},
2526        'last_completed_scan_job_date_time': {'key': 'properties.lastCompletedScanJobDateTime', 'type': 'iso-8601'},
2527        'last_completed_download_job_date_time': {'key': 'properties.lastCompletedDownloadJobDateTime', 'type': 'iso-8601'},
2528        'last_completed_install_job_date_time': {'key': 'properties.lastCompletedInstallJobDateTime', 'type': 'iso-8601'},
2529        'total_number_of_updates_available': {'key': 'properties.totalNumberOfUpdatesAvailable', 'type': 'int'},
2530        'total_number_of_updates_pending_download': {'key': 'properties.totalNumberOfUpdatesPendingDownload', 'type': 'int'},
2531        'total_number_of_updates_pending_install': {'key': 'properties.totalNumberOfUpdatesPendingInstall', 'type': 'int'},
2532        'reboot_behavior': {'key': 'properties.rebootBehavior', 'type': 'str'},
2533        'ongoing_update_operation': {'key': 'properties.ongoingUpdateOperation', 'type': 'str'},
2534        'in_progress_download_job_id': {'key': 'properties.inProgressDownloadJobId', 'type': 'str'},
2535        'in_progress_install_job_id': {'key': 'properties.inProgressInstallJobId', 'type': 'str'},
2536        'in_progress_download_job_started_date_time': {'key': 'properties.inProgressDownloadJobStartedDateTime', 'type': 'iso-8601'},
2537        'in_progress_install_job_started_date_time': {'key': 'properties.inProgressInstallJobStartedDateTime', 'type': 'iso-8601'},
2538        'update_titles': {'key': 'properties.updateTitles', 'type': '[str]'},
2539        'total_update_size_in_bytes': {'key': 'properties.totalUpdateSizeInBytes', 'type': 'float'},
2540    }
2541
2542    def __init__(
2543        self,
2544        **kwargs
2545    ):
2546        super(UpdateSummary, self).__init__(**kwargs)
2547        self.device_version_number = kwargs.get('device_version_number', None)
2548        self.friendly_device_version_name = kwargs.get('friendly_device_version_name', None)
2549        self.device_last_scanned_date_time = kwargs.get('device_last_scanned_date_time', None)
2550        self.last_completed_scan_job_date_time = kwargs.get('last_completed_scan_job_date_time', None)
2551        self.last_completed_download_job_date_time = None
2552        self.last_completed_install_job_date_time = None
2553        self.total_number_of_updates_available = None
2554        self.total_number_of_updates_pending_download = None
2555        self.total_number_of_updates_pending_install = None
2556        self.reboot_behavior = None
2557        self.ongoing_update_operation = None
2558        self.in_progress_download_job_id = None
2559        self.in_progress_install_job_id = None
2560        self.in_progress_download_job_started_date_time = None
2561        self.in_progress_install_job_started_date_time = None
2562        self.update_titles = None
2563        self.total_update_size_in_bytes = None
2564
2565
2566class UploadCertificateRequest(msrest.serialization.Model):
2567    """The upload certificate request.
2568
2569    All required parameters must be populated in order to send to Azure.
2570
2571    :param authentication_type: The authentication type. Possible values include: "Invalid",
2572     "AzureActiveDirectory".
2573    :type authentication_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.AuthenticationType
2574    :param certificate: Required. The base64 encoded certificate raw data.
2575    :type certificate: str
2576    """
2577
2578    _validation = {
2579        'certificate': {'required': True},
2580    }
2581
2582    _attribute_map = {
2583        'authentication_type': {'key': 'properties.authenticationType', 'type': 'str'},
2584        'certificate': {'key': 'properties.certificate', 'type': 'str'},
2585    }
2586
2587    def __init__(
2588        self,
2589        **kwargs
2590    ):
2591        super(UploadCertificateRequest, self).__init__(**kwargs)
2592        self.authentication_type = kwargs.get('authentication_type', None)
2593        self.certificate = kwargs['certificate']
2594
2595
2596class UploadCertificateResponse(msrest.serialization.Model):
2597    """The upload registration certificate response.
2598
2599    All required parameters must be populated in order to send to Azure.
2600
2601    :param auth_type: Specifies authentication type. Possible values include: "Invalid",
2602     "AzureActiveDirectory".
2603    :type auth_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.AuthenticationType
2604    :param resource_id: Required. The resource ID of the Data Box Edge/Gateway device.
2605    :type resource_id: str
2606    :param aad_authority: Required. Azure Active Directory tenant authority.
2607    :type aad_authority: str
2608    :param aad_tenant_id: Required. Azure Active Directory tenant ID.
2609    :type aad_tenant_id: str
2610    :param service_principal_client_id: Required. Azure Active Directory service principal client
2611     ID.
2612    :type service_principal_client_id: str
2613    :param service_principal_object_id: Required. Azure Active Directory service principal object
2614     ID.
2615    :type service_principal_object_id: str
2616    :param azure_management_endpoint_audience: Required. The azure management endpoint audience.
2617    :type azure_management_endpoint_audience: str
2618    """
2619
2620    _validation = {
2621        'resource_id': {'required': True},
2622        'aad_authority': {'required': True},
2623        'aad_tenant_id': {'required': True},
2624        'service_principal_client_id': {'required': True},
2625        'service_principal_object_id': {'required': True},
2626        'azure_management_endpoint_audience': {'required': True},
2627    }
2628
2629    _attribute_map = {
2630        'auth_type': {'key': 'authType', 'type': 'str'},
2631        'resource_id': {'key': 'resourceId', 'type': 'str'},
2632        'aad_authority': {'key': 'aadAuthority', 'type': 'str'},
2633        'aad_tenant_id': {'key': 'aadTenantId', 'type': 'str'},
2634        'service_principal_client_id': {'key': 'servicePrincipalClientId', 'type': 'str'},
2635        'service_principal_object_id': {'key': 'servicePrincipalObjectId', 'type': 'str'},
2636        'azure_management_endpoint_audience': {'key': 'azureManagementEndpointAudience', 'type': 'str'},
2637    }
2638
2639    def __init__(
2640        self,
2641        **kwargs
2642    ):
2643        super(UploadCertificateResponse, self).__init__(**kwargs)
2644        self.auth_type = kwargs.get('auth_type', None)
2645        self.resource_id = kwargs['resource_id']
2646        self.aad_authority = kwargs['aad_authority']
2647        self.aad_tenant_id = kwargs['aad_tenant_id']
2648        self.service_principal_client_id = kwargs['service_principal_client_id']
2649        self.service_principal_object_id = kwargs['service_principal_object_id']
2650        self.azure_management_endpoint_audience = kwargs['azure_management_endpoint_audience']
2651
2652
2653class User(ARMBaseModel):
2654    """Represents a user who has access to one or more shares on the Data Box Edge/Gateway device.
2655
2656    Variables are only populated by the server, and will be ignored when sending a request.
2657
2658    :ivar id: The path ID that uniquely identifies the object.
2659    :vartype id: str
2660    :ivar name: The object name.
2661    :vartype name: str
2662    :ivar type: The hierarchical type of the object.
2663    :vartype type: str
2664    :param encrypted_password: The password details.
2665    :type encrypted_password: ~azure.mgmt.databoxedge.v2019_03_01.models.AsymmetricEncryptedSecret
2666    :param share_access_rights: List of shares that the user has rights on. This field should not
2667     be specified during user creation.
2668    :type share_access_rights: list[~azure.mgmt.databoxedge.v2019_03_01.models.ShareAccessRight]
2669    """
2670
2671    _validation = {
2672        'id': {'readonly': True},
2673        'name': {'readonly': True},
2674        'type': {'readonly': True},
2675    }
2676
2677    _attribute_map = {
2678        'id': {'key': 'id', 'type': 'str'},
2679        'name': {'key': 'name', 'type': 'str'},
2680        'type': {'key': 'type', 'type': 'str'},
2681        'encrypted_password': {'key': 'properties.encryptedPassword', 'type': 'AsymmetricEncryptedSecret'},
2682        'share_access_rights': {'key': 'properties.shareAccessRights', 'type': '[ShareAccessRight]'},
2683    }
2684
2685    def __init__(
2686        self,
2687        **kwargs
2688    ):
2689        super(User, self).__init__(**kwargs)
2690        self.encrypted_password = kwargs.get('encrypted_password', None)
2691        self.share_access_rights = kwargs.get('share_access_rights', None)
2692
2693
2694class UserAccessRight(msrest.serialization.Model):
2695    """The mapping between a particular user and the access type on the SMB share.
2696
2697    All required parameters must be populated in order to send to Azure.
2698
2699    :param user_id: Required. User ID (already existing in the device).
2700    :type user_id: str
2701    :param access_type: Required. Type of access to be allowed for the user. Possible values
2702     include: "Change", "Read", "Custom".
2703    :type access_type: str or ~azure.mgmt.databoxedge.v2019_03_01.models.ShareAccessType
2704    """
2705
2706    _validation = {
2707        'user_id': {'required': True},
2708        'access_type': {'required': True},
2709    }
2710
2711    _attribute_map = {
2712        'user_id': {'key': 'userId', 'type': 'str'},
2713        'access_type': {'key': 'accessType', 'type': 'str'},
2714    }
2715
2716    def __init__(
2717        self,
2718        **kwargs
2719    ):
2720        super(UserAccessRight, self).__init__(**kwargs)
2721        self.user_id = kwargs['user_id']
2722        self.access_type = kwargs['access_type']
2723
2724
2725class UserList(msrest.serialization.Model):
2726    """Collection of users.
2727
2728    Variables are only populated by the server, and will be ignored when sending a request.
2729
2730    :ivar value: The list of users.
2731    :vartype value: list[~azure.mgmt.databoxedge.v2019_03_01.models.User]
2732    :ivar next_link: Link to the next set of results.
2733    :vartype next_link: str
2734    """
2735
2736    _validation = {
2737        'value': {'readonly': True},
2738        'next_link': {'readonly': True},
2739    }
2740
2741    _attribute_map = {
2742        'value': {'key': 'value', 'type': '[User]'},
2743        'next_link': {'key': 'nextLink', 'type': 'str'},
2744    }
2745
2746    def __init__(
2747        self,
2748        **kwargs
2749    ):
2750        super(UserList, self).__init__(**kwargs)
2751        self.value = None
2752        self.next_link = None
2753