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