1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9import msrest.serialization
10
11
12class CertificateRequest(msrest.serialization.Model):
13    """Details of the certificate to be uploaded to the vault.
14
15    :param properties: Raw certificate data.
16    :type properties: ~azure.mgmt.recoveryservices.models.RawCertificateData
17    """
18
19    _attribute_map = {
20        'properties': {'key': 'properties', 'type': 'RawCertificateData'},
21    }
22
23    def __init__(
24        self,
25        **kwargs
26    ):
27        super(CertificateRequest, self).__init__(**kwargs)
28        self.properties = kwargs.get('properties', None)
29
30
31class CheckNameAvailabilityParameters(msrest.serialization.Model):
32    """Resource Name availability input parameters - Resource type and resource name.
33
34    :param type: Describes the Resource type: Microsoft.RecoveryServices/Vaults.
35    :type type: str
36    :param name: Resource name for which availability needs to be checked.
37    :type name: str
38    """
39
40    _attribute_map = {
41        'type': {'key': 'type', 'type': 'str'},
42        'name': {'key': 'name', 'type': 'str'},
43    }
44
45    def __init__(
46        self,
47        **kwargs
48    ):
49        super(CheckNameAvailabilityParameters, self).__init__(**kwargs)
50        self.type = kwargs.get('type', None)
51        self.name = kwargs.get('name', None)
52
53
54class CheckNameAvailabilityResult(msrest.serialization.Model):
55    """Response for check name availability API. Resource provider will set availability as true | false.
56
57    :param name_available:
58    :type name_available: bool
59    :param reason:
60    :type reason: str
61    :param message:
62    :type message: str
63    """
64
65    _attribute_map = {
66        'name_available': {'key': 'nameAvailable', 'type': 'bool'},
67        'reason': {'key': 'reason', 'type': 'str'},
68        'message': {'key': 'message', 'type': 'str'},
69    }
70
71    def __init__(
72        self,
73        **kwargs
74    ):
75        super(CheckNameAvailabilityResult, self).__init__(**kwargs)
76        self.name_available = kwargs.get('name_available', None)
77        self.reason = kwargs.get('reason', None)
78        self.message = kwargs.get('message', None)
79
80
81class ClientDiscoveryDisplay(msrest.serialization.Model):
82    """Localized display information of an operation.
83
84    :param provider: Name of the provider for display purposes.
85    :type provider: str
86    :param resource: ResourceType for which this Operation can be performed.
87    :type resource: str
88    :param operation: Operations Name itself.
89    :type operation: str
90    :param description: Description of the operation having details of what operation is about.
91    :type description: str
92    """
93
94    _attribute_map = {
95        'provider': {'key': 'provider', 'type': 'str'},
96        'resource': {'key': 'resource', 'type': 'str'},
97        'operation': {'key': 'operation', 'type': 'str'},
98        'description': {'key': 'description', 'type': 'str'},
99    }
100
101    def __init__(
102        self,
103        **kwargs
104    ):
105        super(ClientDiscoveryDisplay, self).__init__(**kwargs)
106        self.provider = kwargs.get('provider', None)
107        self.resource = kwargs.get('resource', None)
108        self.operation = kwargs.get('operation', None)
109        self.description = kwargs.get('description', None)
110
111
112class ClientDiscoveryForLogSpecification(msrest.serialization.Model):
113    """Class to represent shoebox log specification in json client discovery.
114
115    :param name: Name of the log.
116    :type name: str
117    :param display_name: Localized display name.
118    :type display_name: str
119    :param blob_duration: Blobs created in customer storage account per hour.
120    :type blob_duration: str
121    """
122
123    _attribute_map = {
124        'name': {'key': 'name', 'type': 'str'},
125        'display_name': {'key': 'displayName', 'type': 'str'},
126        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
127    }
128
129    def __init__(
130        self,
131        **kwargs
132    ):
133        super(ClientDiscoveryForLogSpecification, self).__init__(**kwargs)
134        self.name = kwargs.get('name', None)
135        self.display_name = kwargs.get('display_name', None)
136        self.blob_duration = kwargs.get('blob_duration', None)
137
138
139class ClientDiscoveryForProperties(msrest.serialization.Model):
140    """Class to represent shoebox properties in json client discovery.
141
142    :param service_specification: Operation properties.
143    :type service_specification:
144     ~azure.mgmt.recoveryservices.models.ClientDiscoveryForServiceSpecification
145    """
146
147    _attribute_map = {
148        'service_specification': {'key': 'serviceSpecification', 'type': 'ClientDiscoveryForServiceSpecification'},
149    }
150
151    def __init__(
152        self,
153        **kwargs
154    ):
155        super(ClientDiscoveryForProperties, self).__init__(**kwargs)
156        self.service_specification = kwargs.get('service_specification', None)
157
158
159class ClientDiscoveryForServiceSpecification(msrest.serialization.Model):
160    """Class to represent shoebox service specification in json client discovery.
161
162    :param log_specifications: List of log specifications of this operation.
163    :type log_specifications:
164     list[~azure.mgmt.recoveryservices.models.ClientDiscoveryForLogSpecification]
165    """
166
167    _attribute_map = {
168        'log_specifications': {'key': 'logSpecifications', 'type': '[ClientDiscoveryForLogSpecification]'},
169    }
170
171    def __init__(
172        self,
173        **kwargs
174    ):
175        super(ClientDiscoveryForServiceSpecification, self).__init__(**kwargs)
176        self.log_specifications = kwargs.get('log_specifications', None)
177
178
179class ClientDiscoveryResponse(msrest.serialization.Model):
180    """Operations List response which contains list of available APIs.
181
182    :param value: List of available operations.
183    :type value: list[~azure.mgmt.recoveryservices.models.ClientDiscoveryValueForSingleApi]
184    :param next_link: Link to the next chunk of the response.
185    :type next_link: str
186    """
187
188    _attribute_map = {
189        'value': {'key': 'value', 'type': '[ClientDiscoveryValueForSingleApi]'},
190        'next_link': {'key': 'nextLink', 'type': 'str'},
191    }
192
193    def __init__(
194        self,
195        **kwargs
196    ):
197        super(ClientDiscoveryResponse, self).__init__(**kwargs)
198        self.value = kwargs.get('value', None)
199        self.next_link = kwargs.get('next_link', None)
200
201
202class ClientDiscoveryValueForSingleApi(msrest.serialization.Model):
203    """Available operation details.
204
205    :param name: Name of the Operation.
206    :type name: str
207    :param display: Contains the localized display information for this particular operation.
208    :type display: ~azure.mgmt.recoveryservices.models.ClientDiscoveryDisplay
209    :param origin: The intended executor of the operation;governs the display of the operation in
210     the RBAC UX and the audit logs UX.
211    :type origin: str
212    :param properties: ShoeBox properties for the given operation.
213    :type properties: ~azure.mgmt.recoveryservices.models.ClientDiscoveryForProperties
214    """
215
216    _attribute_map = {
217        'name': {'key': 'name', 'type': 'str'},
218        'display': {'key': 'display', 'type': 'ClientDiscoveryDisplay'},
219        'origin': {'key': 'origin', 'type': 'str'},
220        'properties': {'key': 'properties', 'type': 'ClientDiscoveryForProperties'},
221    }
222
223    def __init__(
224        self,
225        **kwargs
226    ):
227        super(ClientDiscoveryValueForSingleApi, self).__init__(**kwargs)
228        self.name = kwargs.get('name', None)
229        self.display = kwargs.get('display', None)
230        self.origin = kwargs.get('origin', None)
231        self.properties = kwargs.get('properties', None)
232
233
234class CmkKekIdentity(msrest.serialization.Model):
235    """The details of the identity used for CMK.
236
237    :param use_system_assigned_identity: Indicate that system assigned identity should be used.
238     Mutually exclusive with 'userAssignedIdentity' field.
239    :type use_system_assigned_identity: bool
240    :param user_assigned_identity: The user assigned identity to be used to grant permissions in
241     case the type of identity used is UserAssigned.
242    :type user_assigned_identity: str
243    """
244
245    _attribute_map = {
246        'use_system_assigned_identity': {'key': 'useSystemAssignedIdentity', 'type': 'bool'},
247        'user_assigned_identity': {'key': 'userAssignedIdentity', 'type': 'str'},
248    }
249
250    def __init__(
251        self,
252        **kwargs
253    ):
254        super(CmkKekIdentity, self).__init__(**kwargs)
255        self.use_system_assigned_identity = kwargs.get('use_system_assigned_identity', None)
256        self.user_assigned_identity = kwargs.get('user_assigned_identity', None)
257
258
259class CmkKeyVaultProperties(msrest.serialization.Model):
260    """The properties of the Key Vault which hosts CMK.
261
262    :param key_uri: The key uri of the Customer Managed Key.
263    :type key_uri: str
264    """
265
266    _attribute_map = {
267        'key_uri': {'key': 'keyUri', 'type': 'str'},
268    }
269
270    def __init__(
271        self,
272        **kwargs
273    ):
274        super(CmkKeyVaultProperties, self).__init__(**kwargs)
275        self.key_uri = kwargs.get('key_uri', None)
276
277
278class Error(msrest.serialization.Model):
279    """The resource management error response.
280
281    Variables are only populated by the server, and will be ignored when sending a request.
282
283    :ivar additional_info: The error additional info.
284    :vartype additional_info: list[~azure.mgmt.recoveryservices.models.ErrorAdditionalInfo]
285    :ivar code: The error code.
286    :vartype code: str
287    :ivar details: The error details.
288    :vartype details: list[~azure.mgmt.recoveryservices.models.Error]
289    :ivar message: The error message.
290    :vartype message: str
291    :ivar target: The error target.
292    :vartype target: str
293    """
294
295    _validation = {
296        'additional_info': {'readonly': True},
297        'code': {'readonly': True},
298        'details': {'readonly': True},
299        'message': {'readonly': True},
300        'target': {'readonly': True},
301    }
302
303    _attribute_map = {
304        'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
305        'code': {'key': 'code', 'type': 'str'},
306        'details': {'key': 'details', 'type': '[Error]'},
307        'message': {'key': 'message', 'type': 'str'},
308        'target': {'key': 'target', 'type': 'str'},
309    }
310
311    def __init__(
312        self,
313        **kwargs
314    ):
315        super(Error, self).__init__(**kwargs)
316        self.additional_info = None
317        self.code = None
318        self.details = None
319        self.message = None
320        self.target = None
321
322
323class ErrorAdditionalInfo(msrest.serialization.Model):
324    """The resource management error additional info.
325
326    Variables are only populated by the server, and will be ignored when sending a request.
327
328    :ivar info: The additional info.
329    :vartype info: any
330    :ivar type: The additional info type.
331    :vartype type: str
332    """
333
334    _validation = {
335        'info': {'readonly': True},
336        'type': {'readonly': True},
337    }
338
339    _attribute_map = {
340        'info': {'key': 'info', 'type': 'object'},
341        'type': {'key': 'type', 'type': 'str'},
342    }
343
344    def __init__(
345        self,
346        **kwargs
347    ):
348        super(ErrorAdditionalInfo, self).__init__(**kwargs)
349        self.info = None
350        self.type = None
351
352
353class IdentityData(msrest.serialization.Model):
354    """Identity for the resource.
355
356    Variables are only populated by the server, and will be ignored when sending a request.
357
358    All required parameters must be populated in order to send to Azure.
359
360    :ivar principal_id: The principal ID of resource identity.
361    :vartype principal_id: str
362    :ivar tenant_id: The tenant ID of resource.
363    :vartype tenant_id: str
364    :param type: Required. The type of managed identity used. The type 'SystemAssigned,
365     UserAssigned' includes both an implicitly created identity and a set of user-assigned
366     identities. The type 'None' will remove any identities. Possible values include:
367     "SystemAssigned", "None", "UserAssigned", "SystemAssigned, UserAssigned".
368    :type type: str or ~azure.mgmt.recoveryservices.models.ResourceIdentityType
369    :param user_assigned_identities: The list of user-assigned identities associated with the
370     resource. The user-assigned identity dictionary keys will be ARM resource ids in the form:
371     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
372    :type user_assigned_identities: dict[str, ~azure.mgmt.recoveryservices.models.UserIdentity]
373    """
374
375    _validation = {
376        'principal_id': {'readonly': True},
377        'tenant_id': {'readonly': True},
378        'type': {'required': True},
379    }
380
381    _attribute_map = {
382        'principal_id': {'key': 'principalId', 'type': 'str'},
383        'tenant_id': {'key': 'tenantId', 'type': 'str'},
384        'type': {'key': 'type', 'type': 'str'},
385        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{UserIdentity}'},
386    }
387
388    def __init__(
389        self,
390        **kwargs
391    ):
392        super(IdentityData, self).__init__(**kwargs)
393        self.principal_id = None
394        self.tenant_id = None
395        self.type = kwargs['type']
396        self.user_assigned_identities = kwargs.get('user_assigned_identities', None)
397
398
399class JobsSummary(msrest.serialization.Model):
400    """Summary of the replication job data for this vault.
401
402    :param failed_jobs: Count of failed jobs.
403    :type failed_jobs: int
404    :param suspended_jobs: Count of suspended jobs.
405    :type suspended_jobs: int
406    :param in_progress_jobs: Count of in-progress jobs.
407    :type in_progress_jobs: int
408    """
409
410    _attribute_map = {
411        'failed_jobs': {'key': 'failedJobs', 'type': 'int'},
412        'suspended_jobs': {'key': 'suspendedJobs', 'type': 'int'},
413        'in_progress_jobs': {'key': 'inProgressJobs', 'type': 'int'},
414    }
415
416    def __init__(
417        self,
418        **kwargs
419    ):
420        super(JobsSummary, self).__init__(**kwargs)
421        self.failed_jobs = kwargs.get('failed_jobs', None)
422        self.suspended_jobs = kwargs.get('suspended_jobs', None)
423        self.in_progress_jobs = kwargs.get('in_progress_jobs', None)
424
425
426class MonitoringSummary(msrest.serialization.Model):
427    """Summary of the replication monitoring data for this vault.
428
429    :param un_healthy_vm_count: Count of unhealthy VMs.
430    :type un_healthy_vm_count: int
431    :param un_healthy_provider_count: Count of unhealthy replication providers.
432    :type un_healthy_provider_count: int
433    :param events_count: Count of all critical warnings.
434    :type events_count: int
435    :param deprecated_provider_count: Count of all deprecated recovery service providers.
436    :type deprecated_provider_count: int
437    :param supported_provider_count: Count of all the supported recovery service providers.
438    :type supported_provider_count: int
439    :param unsupported_provider_count: Count of all the unsupported recovery service providers.
440    :type unsupported_provider_count: int
441    """
442
443    _attribute_map = {
444        'un_healthy_vm_count': {'key': 'unHealthyVmCount', 'type': 'int'},
445        'un_healthy_provider_count': {'key': 'unHealthyProviderCount', 'type': 'int'},
446        'events_count': {'key': 'eventsCount', 'type': 'int'},
447        'deprecated_provider_count': {'key': 'deprecatedProviderCount', 'type': 'int'},
448        'supported_provider_count': {'key': 'supportedProviderCount', 'type': 'int'},
449        'unsupported_provider_count': {'key': 'unsupportedProviderCount', 'type': 'int'},
450    }
451
452    def __init__(
453        self,
454        **kwargs
455    ):
456        super(MonitoringSummary, self).__init__(**kwargs)
457        self.un_healthy_vm_count = kwargs.get('un_healthy_vm_count', None)
458        self.un_healthy_provider_count = kwargs.get('un_healthy_provider_count', None)
459        self.events_count = kwargs.get('events_count', None)
460        self.deprecated_provider_count = kwargs.get('deprecated_provider_count', None)
461        self.supported_provider_count = kwargs.get('supported_provider_count', None)
462        self.unsupported_provider_count = kwargs.get('unsupported_provider_count', None)
463
464
465class NameInfo(msrest.serialization.Model):
466    """The name of usage.
467
468    :param value: Value of usage.
469    :type value: str
470    :param localized_value: Localized value of usage.
471    :type localized_value: str
472    """
473
474    _attribute_map = {
475        'value': {'key': 'value', 'type': 'str'},
476        'localized_value': {'key': 'localizedValue', 'type': 'str'},
477    }
478
479    def __init__(
480        self,
481        **kwargs
482    ):
483        super(NameInfo, self).__init__(**kwargs)
484        self.value = kwargs.get('value', None)
485        self.localized_value = kwargs.get('localized_value', None)
486
487
488class OperationResource(msrest.serialization.Model):
489    """Operation Resource.
490
491    :param end_time: End time of the operation.
492    :type end_time: ~datetime.datetime
493    :param error: Required if status == failed or status == canceled. This is the OData v4 error
494     format, used by the RPC and will go into the v2.2 Azure REST API guidelines.
495    :type error: ~azure.mgmt.recoveryservices.models.Error
496    :param id: It should match what is used to GET the operation result.
497    :type id: str
498    :param name: It must match the last segment of the "id" field, and will typically be a GUID /
499     system generated value.
500    :type name: str
501    :param status: The status of the operation. (InProgress/Success/Failed/Cancelled).
502    :type status: str
503    :param start_time: Start time of the operation.
504    :type start_time: ~datetime.datetime
505    """
506
507    _attribute_map = {
508        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
509        'error': {'key': 'error', 'type': 'Error'},
510        'id': {'key': 'id', 'type': 'str'},
511        'name': {'key': 'name', 'type': 'str'},
512        'status': {'key': 'status', 'type': 'str'},
513        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
514    }
515
516    def __init__(
517        self,
518        **kwargs
519    ):
520        super(OperationResource, self).__init__(**kwargs)
521        self.end_time = kwargs.get('end_time', None)
522        self.error = kwargs.get('error', None)
523        self.id = kwargs.get('id', None)
524        self.name = kwargs.get('name', None)
525        self.status = kwargs.get('status', None)
526        self.start_time = kwargs.get('start_time', None)
527
528
529class Resource(msrest.serialization.Model):
530    """ARM Resource.
531
532    Variables are only populated by the server, and will be ignored when sending a request.
533
534    :ivar id: Resource Id represents the complete path to the resource.
535    :vartype id: str
536    :ivar name: Resource name associated with the resource.
537    :vartype name: str
538    :ivar type: Resource type represents the complete path of the form
539     Namespace/ResourceType/ResourceType/...
540    :vartype type: str
541    :param etag: Optional ETag.
542    :type etag: str
543    """
544
545    _validation = {
546        'id': {'readonly': True},
547        'name': {'readonly': True},
548        'type': {'readonly': True},
549    }
550
551    _attribute_map = {
552        'id': {'key': 'id', 'type': 'str'},
553        'name': {'key': 'name', 'type': 'str'},
554        'type': {'key': 'type', 'type': 'str'},
555        'etag': {'key': 'etag', 'type': 'str'},
556    }
557
558    def __init__(
559        self,
560        **kwargs
561    ):
562        super(Resource, self).__init__(**kwargs)
563        self.id = None
564        self.name = None
565        self.type = None
566        self.etag = kwargs.get('etag', None)
567
568
569class PatchTrackedResource(Resource):
570    """Tracked resource with location.
571
572    Variables are only populated by the server, and will be ignored when sending a request.
573
574    :ivar id: Resource Id represents the complete path to the resource.
575    :vartype id: str
576    :ivar name: Resource name associated with the resource.
577    :vartype name: str
578    :ivar type: Resource type represents the complete path of the form
579     Namespace/ResourceType/ResourceType/...
580    :vartype type: str
581    :param etag: Optional ETag.
582    :type etag: str
583    :param location: Resource location.
584    :type location: str
585    :param tags: A set of tags. Resource tags.
586    :type tags: dict[str, str]
587    """
588
589    _validation = {
590        'id': {'readonly': True},
591        'name': {'readonly': True},
592        'type': {'readonly': True},
593    }
594
595    _attribute_map = {
596        'id': {'key': 'id', 'type': 'str'},
597        'name': {'key': 'name', 'type': 'str'},
598        'type': {'key': 'type', 'type': 'str'},
599        'etag': {'key': 'etag', 'type': 'str'},
600        'location': {'key': 'location', 'type': 'str'},
601        'tags': {'key': 'tags', 'type': '{str}'},
602    }
603
604    def __init__(
605        self,
606        **kwargs
607    ):
608        super(PatchTrackedResource, self).__init__(**kwargs)
609        self.location = kwargs.get('location', None)
610        self.tags = kwargs.get('tags', None)
611
612
613class PatchVault(PatchTrackedResource):
614    """Patch Resource information, as returned by the resource provider.
615
616    Variables are only populated by the server, and will be ignored when sending a request.
617
618    :ivar id: Resource Id represents the complete path to the resource.
619    :vartype id: str
620    :ivar name: Resource name associated with the resource.
621    :vartype name: str
622    :ivar type: Resource type represents the complete path of the form
623     Namespace/ResourceType/ResourceType/...
624    :vartype type: str
625    :param etag: Optional ETag.
626    :type etag: str
627    :param location: Resource location.
628    :type location: str
629    :param tags: A set of tags. Resource tags.
630    :type tags: dict[str, str]
631    :param properties: Properties of the vault.
632    :type properties: ~azure.mgmt.recoveryservices.models.VaultProperties
633    :param sku: Identifies the unique system identifier for each Azure resource.
634    :type sku: ~azure.mgmt.recoveryservices.models.Sku
635    :param identity: Identity for the resource.
636    :type identity: ~azure.mgmt.recoveryservices.models.IdentityData
637    """
638
639    _validation = {
640        'id': {'readonly': True},
641        'name': {'readonly': True},
642        'type': {'readonly': True},
643    }
644
645    _attribute_map = {
646        'id': {'key': 'id', 'type': 'str'},
647        'name': {'key': 'name', 'type': 'str'},
648        'type': {'key': 'type', 'type': 'str'},
649        'etag': {'key': 'etag', 'type': 'str'},
650        'location': {'key': 'location', 'type': 'str'},
651        'tags': {'key': 'tags', 'type': '{str}'},
652        'properties': {'key': 'properties', 'type': 'VaultProperties'},
653        'sku': {'key': 'sku', 'type': 'Sku'},
654        'identity': {'key': 'identity', 'type': 'IdentityData'},
655    }
656
657    def __init__(
658        self,
659        **kwargs
660    ):
661        super(PatchVault, self).__init__(**kwargs)
662        self.properties = kwargs.get('properties', None)
663        self.sku = kwargs.get('sku', None)
664        self.identity = kwargs.get('identity', None)
665
666
667class PrivateEndpoint(msrest.serialization.Model):
668    """The Private Endpoint network resource that is linked to the Private Endpoint connection.
669
670    Variables are only populated by the server, and will be ignored when sending a request.
671
672    :ivar id: Gets or sets id.
673    :vartype id: str
674    """
675
676    _validation = {
677        'id': {'readonly': True},
678    }
679
680    _attribute_map = {
681        'id': {'key': 'id', 'type': 'str'},
682    }
683
684    def __init__(
685        self,
686        **kwargs
687    ):
688        super(PrivateEndpoint, self).__init__(**kwargs)
689        self.id = None
690
691
692class PrivateEndpointConnection(msrest.serialization.Model):
693    """Private Endpoint Connection Response Properties.
694
695    Variables are only populated by the server, and will be ignored when sending a request.
696
697    :ivar provisioning_state: Gets or sets provisioning state of the private endpoint connection.
698     Possible values include: "Succeeded", "Deleting", "Failed", "Pending".
699    :vartype provisioning_state: str or ~azure.mgmt.recoveryservices.models.ProvisioningState
700    :ivar private_endpoint: The Private Endpoint network resource that is linked to the Private
701     Endpoint connection.
702    :vartype private_endpoint: ~azure.mgmt.recoveryservices.models.PrivateEndpoint
703    :ivar private_link_service_connection_state: Gets or sets private link service connection
704     state.
705    :vartype private_link_service_connection_state:
706     ~azure.mgmt.recoveryservices.models.PrivateLinkServiceConnectionState
707    """
708
709    _validation = {
710        'provisioning_state': {'readonly': True},
711        'private_endpoint': {'readonly': True},
712        'private_link_service_connection_state': {'readonly': True},
713    }
714
715    _attribute_map = {
716        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
717        'private_endpoint': {'key': 'privateEndpoint', 'type': 'PrivateEndpoint'},
718        'private_link_service_connection_state': {'key': 'privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
719    }
720
721    def __init__(
722        self,
723        **kwargs
724    ):
725        super(PrivateEndpointConnection, self).__init__(**kwargs)
726        self.provisioning_state = None
727        self.private_endpoint = None
728        self.private_link_service_connection_state = None
729
730
731class PrivateEndpointConnectionVaultProperties(msrest.serialization.Model):
732    """Information to be stored in Vault properties as an element of privateEndpointConnections List.
733
734    Variables are only populated by the server, and will be ignored when sending a request.
735
736    :ivar id: Format of id
737     subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.[Service]/{resource}/{resourceName}/privateEndpointConnections/{connectionName}.
738    :vartype id: str
739    :ivar properties: Private Endpoint Connection Response Properties.
740    :vartype properties: ~azure.mgmt.recoveryservices.models.PrivateEndpointConnection
741    """
742
743    _validation = {
744        'id': {'readonly': True},
745        'properties': {'readonly': True},
746    }
747
748    _attribute_map = {
749        'id': {'key': 'id', 'type': 'str'},
750        'properties': {'key': 'properties', 'type': 'PrivateEndpointConnection'},
751    }
752
753    def __init__(
754        self,
755        **kwargs
756    ):
757        super(PrivateEndpointConnectionVaultProperties, self).__init__(**kwargs)
758        self.id = None
759        self.properties = None
760
761
762class PrivateLinkResource(msrest.serialization.Model):
763    """Information of the private link resource.
764
765    Variables are only populated by the server, and will be ignored when sending a request.
766
767    :ivar id: Fully qualified identifier of the resource.
768    :vartype id: str
769    :ivar name: Name of the resource.
770    :vartype name: str
771    :ivar type: e.g. Microsoft.RecoveryServices/vaults/privateLinkResources.
772    :vartype type: str
773    :ivar group_id: e.g. f9ad6492-33d4-4690-9999-6bfd52a0d081 (Backup) or
774     f9ad6492-33d4-4690-9999-6bfd52a0d082 (SiteRecovery).
775    :vartype group_id: str
776    :ivar required_members: [backup-ecs1, backup-prot1, backup-prot1b, backup-prot1c, backup-id1].
777    :vartype required_members: list[str]
778    :ivar required_zone_names: The private link resource Private link DNS zone name.
779    :vartype required_zone_names: list[str]
780    """
781
782    _validation = {
783        'id': {'readonly': True},
784        'name': {'readonly': True},
785        'type': {'readonly': True},
786        'group_id': {'readonly': True},
787        'required_members': {'readonly': True},
788        'required_zone_names': {'readonly': True},
789    }
790
791    _attribute_map = {
792        'id': {'key': 'id', 'type': 'str'},
793        'name': {'key': 'name', 'type': 'str'},
794        'type': {'key': 'type', 'type': 'str'},
795        'group_id': {'key': 'properties.groupId', 'type': 'str'},
796        'required_members': {'key': 'properties.requiredMembers', 'type': '[str]'},
797        'required_zone_names': {'key': 'properties.requiredZoneNames', 'type': '[str]'},
798    }
799
800    def __init__(
801        self,
802        **kwargs
803    ):
804        super(PrivateLinkResource, self).__init__(**kwargs)
805        self.id = None
806        self.name = None
807        self.type = None
808        self.group_id = None
809        self.required_members = None
810        self.required_zone_names = None
811
812
813class PrivateLinkResources(msrest.serialization.Model):
814    """Class which represent the stamps associated with the vault.
815
816    :param value: A collection of private link resources.
817    :type value: list[~azure.mgmt.recoveryservices.models.PrivateLinkResource]
818    :param next_link: Link to the next chunk of the response.
819    :type next_link: str
820    """
821
822    _attribute_map = {
823        'value': {'key': 'value', 'type': '[PrivateLinkResource]'},
824        'next_link': {'key': 'nextLink', 'type': 'str'},
825    }
826
827    def __init__(
828        self,
829        **kwargs
830    ):
831        super(PrivateLinkResources, self).__init__(**kwargs)
832        self.value = kwargs.get('value', None)
833        self.next_link = kwargs.get('next_link', None)
834
835
836class PrivateLinkServiceConnectionState(msrest.serialization.Model):
837    """Gets or sets private link service connection state.
838
839    Variables are only populated by the server, and will be ignored when sending a request.
840
841    :ivar status: Gets or sets the status. Possible values include: "Pending", "Approved",
842     "Rejected", "Disconnected".
843    :vartype status: str or ~azure.mgmt.recoveryservices.models.PrivateEndpointConnectionStatus
844    :ivar description: Gets or sets description.
845    :vartype description: str
846    :ivar actions_required: Gets or sets actions required.
847    :vartype actions_required: str
848    """
849
850    _validation = {
851        'status': {'readonly': True},
852        'description': {'readonly': True},
853        'actions_required': {'readonly': True},
854    }
855
856    _attribute_map = {
857        'status': {'key': 'status', 'type': 'str'},
858        'description': {'key': 'description', 'type': 'str'},
859        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
860    }
861
862    def __init__(
863        self,
864        **kwargs
865    ):
866        super(PrivateLinkServiceConnectionState, self).__init__(**kwargs)
867        self.status = None
868        self.description = None
869        self.actions_required = None
870
871
872class RawCertificateData(msrest.serialization.Model):
873    """Raw certificate data.
874
875    :param auth_type: Specifies the authentication type. Possible values include: "Invalid", "ACS",
876     "AAD", "AccessControlService", "AzureActiveDirectory".
877    :type auth_type: str or ~azure.mgmt.recoveryservices.models.AuthType
878    :param certificate: The base64 encoded certificate raw data string.
879    :type certificate: bytearray
880    """
881
882    _attribute_map = {
883        'auth_type': {'key': 'authType', 'type': 'str'},
884        'certificate': {'key': 'certificate', 'type': 'bytearray'},
885    }
886
887    def __init__(
888        self,
889        **kwargs
890    ):
891        super(RawCertificateData, self).__init__(**kwargs)
892        self.auth_type = kwargs.get('auth_type', None)
893        self.certificate = kwargs.get('certificate', None)
894
895
896class ReplicationUsage(msrest.serialization.Model):
897    """Replication usages of a vault.
898
899    :param monitoring_summary: Summary of the replication monitoring data for this vault.
900    :type monitoring_summary: ~azure.mgmt.recoveryservices.models.MonitoringSummary
901    :param jobs_summary: Summary of the replication jobs data for this vault.
902    :type jobs_summary: ~azure.mgmt.recoveryservices.models.JobsSummary
903    :param protected_item_count: Number of replication protected items for this vault.
904    :type protected_item_count: int
905    :param recovery_plan_count: Number of replication recovery plans for this vault.
906    :type recovery_plan_count: int
907    :param registered_servers_count: Number of servers registered to this vault.
908    :type registered_servers_count: int
909    :param recovery_services_provider_auth_type: The authentication type of recovery service
910     providers in the vault.
911    :type recovery_services_provider_auth_type: int
912    """
913
914    _attribute_map = {
915        'monitoring_summary': {'key': 'monitoringSummary', 'type': 'MonitoringSummary'},
916        'jobs_summary': {'key': 'jobsSummary', 'type': 'JobsSummary'},
917        'protected_item_count': {'key': 'protectedItemCount', 'type': 'int'},
918        'recovery_plan_count': {'key': 'recoveryPlanCount', 'type': 'int'},
919        'registered_servers_count': {'key': 'registeredServersCount', 'type': 'int'},
920        'recovery_services_provider_auth_type': {'key': 'recoveryServicesProviderAuthType', 'type': 'int'},
921    }
922
923    def __init__(
924        self,
925        **kwargs
926    ):
927        super(ReplicationUsage, self).__init__(**kwargs)
928        self.monitoring_summary = kwargs.get('monitoring_summary', None)
929        self.jobs_summary = kwargs.get('jobs_summary', None)
930        self.protected_item_count = kwargs.get('protected_item_count', None)
931        self.recovery_plan_count = kwargs.get('recovery_plan_count', None)
932        self.registered_servers_count = kwargs.get('registered_servers_count', None)
933        self.recovery_services_provider_auth_type = kwargs.get('recovery_services_provider_auth_type', None)
934
935
936class ReplicationUsageList(msrest.serialization.Model):
937    """Replication usages for vault.
938
939    :param value: The list of replication usages for the given vault.
940    :type value: list[~azure.mgmt.recoveryservices.models.ReplicationUsage]
941    """
942
943    _attribute_map = {
944        'value': {'key': 'value', 'type': '[ReplicationUsage]'},
945    }
946
947    def __init__(
948        self,
949        **kwargs
950    ):
951        super(ReplicationUsageList, self).__init__(**kwargs)
952        self.value = kwargs.get('value', None)
953
954
955class ResourceCertificateDetails(msrest.serialization.Model):
956    """Certificate details representing the Vault credentials.
957
958    You probably want to use the sub-classes and not this class directly. Known
959    sub-classes are: ResourceCertificateAndAcsDetails, ResourceCertificateAndAadDetails.
960
961    All required parameters must be populated in order to send to Azure.
962
963    :param auth_type: Required. This property will be used as the discriminator for deciding the
964     specific types in the polymorphic chain of types.Constant filled by server.
965    :type auth_type: str
966    :param certificate: The base64 encoded certificate raw data string.
967    :type certificate: bytearray
968    :param friendly_name: Certificate friendly name.
969    :type friendly_name: str
970    :param issuer: Certificate issuer.
971    :type issuer: str
972    :param resource_id: Resource ID of the vault.
973    :type resource_id: long
974    :param subject: Certificate Subject Name.
975    :type subject: str
976    :param thumbprint: Certificate thumbprint.
977    :type thumbprint: str
978    :param valid_from: Certificate Validity start Date time.
979    :type valid_from: ~datetime.datetime
980    :param valid_to: Certificate Validity End Date time.
981    :type valid_to: ~datetime.datetime
982    """
983
984    _validation = {
985        'auth_type': {'required': True},
986    }
987
988    _attribute_map = {
989        'auth_type': {'key': 'authType', 'type': 'str'},
990        'certificate': {'key': 'certificate', 'type': 'bytearray'},
991        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
992        'issuer': {'key': 'issuer', 'type': 'str'},
993        'resource_id': {'key': 'resourceId', 'type': 'long'},
994        'subject': {'key': 'subject', 'type': 'str'},
995        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
996        'valid_from': {'key': 'validFrom', 'type': 'iso-8601'},
997        'valid_to': {'key': 'validTo', 'type': 'iso-8601'},
998    }
999
1000    _subtype_map = {
1001        'auth_type': {'AccessControlService': 'ResourceCertificateAndAcsDetails', 'AzureActiveDirectory': 'ResourceCertificateAndAadDetails'}
1002    }
1003
1004    def __init__(
1005        self,
1006        **kwargs
1007    ):
1008        super(ResourceCertificateDetails, self).__init__(**kwargs)
1009        self.auth_type = None  # type: Optional[str]
1010        self.certificate = kwargs.get('certificate', None)
1011        self.friendly_name = kwargs.get('friendly_name', None)
1012        self.issuer = kwargs.get('issuer', None)
1013        self.resource_id = kwargs.get('resource_id', None)
1014        self.subject = kwargs.get('subject', None)
1015        self.thumbprint = kwargs.get('thumbprint', None)
1016        self.valid_from = kwargs.get('valid_from', None)
1017        self.valid_to = kwargs.get('valid_to', None)
1018
1019
1020class ResourceCertificateAndAadDetails(ResourceCertificateDetails):
1021    """Certificate details representing the Vault credentials for AAD.
1022
1023    All required parameters must be populated in order to send to Azure.
1024
1025    :param auth_type: Required. This property will be used as the discriminator for deciding the
1026     specific types in the polymorphic chain of types.Constant filled by server.
1027    :type auth_type: str
1028    :param certificate: The base64 encoded certificate raw data string.
1029    :type certificate: bytearray
1030    :param friendly_name: Certificate friendly name.
1031    :type friendly_name: str
1032    :param issuer: Certificate issuer.
1033    :type issuer: str
1034    :param resource_id: Resource ID of the vault.
1035    :type resource_id: long
1036    :param subject: Certificate Subject Name.
1037    :type subject: str
1038    :param thumbprint: Certificate thumbprint.
1039    :type thumbprint: str
1040    :param valid_from: Certificate Validity start Date time.
1041    :type valid_from: ~datetime.datetime
1042    :param valid_to: Certificate Validity End Date time.
1043    :type valid_to: ~datetime.datetime
1044    :param aad_authority: Required. AAD tenant authority.
1045    :type aad_authority: str
1046    :param aad_tenant_id: Required. AAD tenant Id.
1047    :type aad_tenant_id: str
1048    :param service_principal_client_id: Required. AAD service principal clientId.
1049    :type service_principal_client_id: str
1050    :param service_principal_object_id: Required. AAD service principal ObjectId.
1051    :type service_principal_object_id: str
1052    :param azure_management_endpoint_audience: Required. Azure Management Endpoint Audience.
1053    :type azure_management_endpoint_audience: str
1054    :param service_resource_id: Service Resource Id.
1055    :type service_resource_id: str
1056    """
1057
1058    _validation = {
1059        'auth_type': {'required': True},
1060        'aad_authority': {'required': True},
1061        'aad_tenant_id': {'required': True},
1062        'service_principal_client_id': {'required': True},
1063        'service_principal_object_id': {'required': True},
1064        'azure_management_endpoint_audience': {'required': True},
1065    }
1066
1067    _attribute_map = {
1068        'auth_type': {'key': 'authType', 'type': 'str'},
1069        'certificate': {'key': 'certificate', 'type': 'bytearray'},
1070        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1071        'issuer': {'key': 'issuer', 'type': 'str'},
1072        'resource_id': {'key': 'resourceId', 'type': 'long'},
1073        'subject': {'key': 'subject', 'type': 'str'},
1074        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
1075        'valid_from': {'key': 'validFrom', 'type': 'iso-8601'},
1076        'valid_to': {'key': 'validTo', 'type': 'iso-8601'},
1077        'aad_authority': {'key': 'aadAuthority', 'type': 'str'},
1078        'aad_tenant_id': {'key': 'aadTenantId', 'type': 'str'},
1079        'service_principal_client_id': {'key': 'servicePrincipalClientId', 'type': 'str'},
1080        'service_principal_object_id': {'key': 'servicePrincipalObjectId', 'type': 'str'},
1081        'azure_management_endpoint_audience': {'key': 'azureManagementEndpointAudience', 'type': 'str'},
1082        'service_resource_id': {'key': 'serviceResourceId', 'type': 'str'},
1083    }
1084
1085    def __init__(
1086        self,
1087        **kwargs
1088    ):
1089        super(ResourceCertificateAndAadDetails, self).__init__(**kwargs)
1090        self.auth_type = 'AzureActiveDirectory'  # type: str
1091        self.aad_authority = kwargs['aad_authority']
1092        self.aad_tenant_id = kwargs['aad_tenant_id']
1093        self.service_principal_client_id = kwargs['service_principal_client_id']
1094        self.service_principal_object_id = kwargs['service_principal_object_id']
1095        self.azure_management_endpoint_audience = kwargs['azure_management_endpoint_audience']
1096        self.service_resource_id = kwargs.get('service_resource_id', None)
1097
1098
1099class ResourceCertificateAndAcsDetails(ResourceCertificateDetails):
1100    """Certificate details representing the Vault credentials for ACS.
1101
1102    All required parameters must be populated in order to send to Azure.
1103
1104    :param auth_type: Required. This property will be used as the discriminator for deciding the
1105     specific types in the polymorphic chain of types.Constant filled by server.
1106    :type auth_type: str
1107    :param certificate: The base64 encoded certificate raw data string.
1108    :type certificate: bytearray
1109    :param friendly_name: Certificate friendly name.
1110    :type friendly_name: str
1111    :param issuer: Certificate issuer.
1112    :type issuer: str
1113    :param resource_id: Resource ID of the vault.
1114    :type resource_id: long
1115    :param subject: Certificate Subject Name.
1116    :type subject: str
1117    :param thumbprint: Certificate thumbprint.
1118    :type thumbprint: str
1119    :param valid_from: Certificate Validity start Date time.
1120    :type valid_from: ~datetime.datetime
1121    :param valid_to: Certificate Validity End Date time.
1122    :type valid_to: ~datetime.datetime
1123    :param global_acs_namespace: Required. ACS namespace name - tenant for our service.
1124    :type global_acs_namespace: str
1125    :param global_acs_host_name: Required. Acs mgmt host name to connect to.
1126    :type global_acs_host_name: str
1127    :param global_acs_rp_realm: Required. Global ACS namespace RP realm.
1128    :type global_acs_rp_realm: str
1129    """
1130
1131    _validation = {
1132        'auth_type': {'required': True},
1133        'global_acs_namespace': {'required': True},
1134        'global_acs_host_name': {'required': True},
1135        'global_acs_rp_realm': {'required': True},
1136    }
1137
1138    _attribute_map = {
1139        'auth_type': {'key': 'authType', 'type': 'str'},
1140        'certificate': {'key': 'certificate', 'type': 'bytearray'},
1141        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1142        'issuer': {'key': 'issuer', 'type': 'str'},
1143        'resource_id': {'key': 'resourceId', 'type': 'long'},
1144        'subject': {'key': 'subject', 'type': 'str'},
1145        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
1146        'valid_from': {'key': 'validFrom', 'type': 'iso-8601'},
1147        'valid_to': {'key': 'validTo', 'type': 'iso-8601'},
1148        'global_acs_namespace': {'key': 'globalAcsNamespace', 'type': 'str'},
1149        'global_acs_host_name': {'key': 'globalAcsHostName', 'type': 'str'},
1150        'global_acs_rp_realm': {'key': 'globalAcsRPRealm', 'type': 'str'},
1151    }
1152
1153    def __init__(
1154        self,
1155        **kwargs
1156    ):
1157        super(ResourceCertificateAndAcsDetails, self).__init__(**kwargs)
1158        self.auth_type = 'AccessControlService'  # type: str
1159        self.global_acs_namespace = kwargs['global_acs_namespace']
1160        self.global_acs_host_name = kwargs['global_acs_host_name']
1161        self.global_acs_rp_realm = kwargs['global_acs_rp_realm']
1162
1163
1164class Sku(msrest.serialization.Model):
1165    """Identifies the unique system identifier for each Azure resource.
1166
1167    All required parameters must be populated in order to send to Azure.
1168
1169    :param name: Required. The Sku name. Possible values include: "Standard", "RS0".
1170    :type name: str or ~azure.mgmt.recoveryservices.models.SkuName
1171    :param tier: The Sku tier.
1172    :type tier: str
1173    """
1174
1175    _validation = {
1176        'name': {'required': True},
1177    }
1178
1179    _attribute_map = {
1180        'name': {'key': 'name', 'type': 'str'},
1181        'tier': {'key': 'tier', 'type': 'str'},
1182    }
1183
1184    def __init__(
1185        self,
1186        **kwargs
1187    ):
1188        super(Sku, self).__init__(**kwargs)
1189        self.name = kwargs['name']
1190        self.tier = kwargs.get('tier', None)
1191
1192
1193class SystemData(msrest.serialization.Model):
1194    """Metadata pertaining to creation and last modification of the resource.
1195
1196    :param created_by: The identity that created the resource.
1197    :type created_by: str
1198    :param created_by_type: The type of identity that created the resource. Possible values
1199     include: "User", "Application", "ManagedIdentity", "Key".
1200    :type created_by_type: str or ~azure.mgmt.recoveryservices.models.CreatedByType
1201    :param created_at: The timestamp of resource creation (UTC).
1202    :type created_at: ~datetime.datetime
1203    :param last_modified_by: The identity that last modified the resource.
1204    :type last_modified_by: str
1205    :param last_modified_by_type: The type of identity that last modified the resource. Possible
1206     values include: "User", "Application", "ManagedIdentity", "Key".
1207    :type last_modified_by_type: str or ~azure.mgmt.recoveryservices.models.CreatedByType
1208    :param last_modified_at: The type of identity that last modified the resource.
1209    :type last_modified_at: ~datetime.datetime
1210    """
1211
1212    _attribute_map = {
1213        'created_by': {'key': 'createdBy', 'type': 'str'},
1214        'created_by_type': {'key': 'createdByType', 'type': 'str'},
1215        'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
1216        'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
1217        'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
1218        'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
1219    }
1220
1221    def __init__(
1222        self,
1223        **kwargs
1224    ):
1225        super(SystemData, self).__init__(**kwargs)
1226        self.created_by = kwargs.get('created_by', None)
1227        self.created_by_type = kwargs.get('created_by_type', None)
1228        self.created_at = kwargs.get('created_at', None)
1229        self.last_modified_by = kwargs.get('last_modified_by', None)
1230        self.last_modified_by_type = kwargs.get('last_modified_by_type', None)
1231        self.last_modified_at = kwargs.get('last_modified_at', None)
1232
1233
1234class TrackedResource(Resource):
1235    """Tracked resource with location.
1236
1237    Variables are only populated by the server, and will be ignored when sending a request.
1238
1239    All required parameters must be populated in order to send to Azure.
1240
1241    :ivar id: Resource Id represents the complete path to the resource.
1242    :vartype id: str
1243    :ivar name: Resource name associated with the resource.
1244    :vartype name: str
1245    :ivar type: Resource type represents the complete path of the form
1246     Namespace/ResourceType/ResourceType/...
1247    :vartype type: str
1248    :param etag: Optional ETag.
1249    :type etag: str
1250    :param location: Required. Resource location.
1251    :type location: str
1252    :param tags: A set of tags. Resource tags.
1253    :type tags: dict[str, str]
1254    """
1255
1256    _validation = {
1257        'id': {'readonly': True},
1258        'name': {'readonly': True},
1259        'type': {'readonly': True},
1260        'location': {'required': True},
1261    }
1262
1263    _attribute_map = {
1264        'id': {'key': 'id', 'type': 'str'},
1265        'name': {'key': 'name', 'type': 'str'},
1266        'type': {'key': 'type', 'type': 'str'},
1267        'etag': {'key': 'etag', 'type': 'str'},
1268        'location': {'key': 'location', 'type': 'str'},
1269        'tags': {'key': 'tags', 'type': '{str}'},
1270    }
1271
1272    def __init__(
1273        self,
1274        **kwargs
1275    ):
1276        super(TrackedResource, self).__init__(**kwargs)
1277        self.location = kwargs['location']
1278        self.tags = kwargs.get('tags', None)
1279
1280
1281class UpgradeDetails(msrest.serialization.Model):
1282    """Details for upgrading vault.
1283
1284    Variables are only populated by the server, and will be ignored when sending a request.
1285
1286    :ivar operation_id: ID of the vault upgrade operation.
1287    :vartype operation_id: str
1288    :ivar start_time_utc: UTC time at which the upgrade operation has started.
1289    :vartype start_time_utc: ~datetime.datetime
1290    :ivar last_updated_time_utc: UTC time at which the upgrade operation status was last updated.
1291    :vartype last_updated_time_utc: ~datetime.datetime
1292    :ivar end_time_utc: UTC time at which the upgrade operation has ended.
1293    :vartype end_time_utc: ~datetime.datetime
1294    :ivar status: Status of the vault upgrade operation. Possible values include: "Unknown",
1295     "InProgress", "Upgraded", "Failed".
1296    :vartype status: str or ~azure.mgmt.recoveryservices.models.VaultUpgradeState
1297    :ivar message: Message to the user containing information about the upgrade operation.
1298    :vartype message: str
1299    :ivar trigger_type: The way the vault upgrade was triggered. Possible values include:
1300     "UserTriggered", "ForcedUpgrade".
1301    :vartype trigger_type: str or ~azure.mgmt.recoveryservices.models.TriggerType
1302    :ivar upgraded_resource_id: Resource ID of the upgraded vault.
1303    :vartype upgraded_resource_id: str
1304    :ivar previous_resource_id: Resource ID of the vault before the upgrade.
1305    :vartype previous_resource_id: str
1306    """
1307
1308    _validation = {
1309        'operation_id': {'readonly': True},
1310        'start_time_utc': {'readonly': True},
1311        'last_updated_time_utc': {'readonly': True},
1312        'end_time_utc': {'readonly': True},
1313        'status': {'readonly': True},
1314        'message': {'readonly': True},
1315        'trigger_type': {'readonly': True},
1316        'upgraded_resource_id': {'readonly': True},
1317        'previous_resource_id': {'readonly': True},
1318    }
1319
1320    _attribute_map = {
1321        'operation_id': {'key': 'operationId', 'type': 'str'},
1322        'start_time_utc': {'key': 'startTimeUtc', 'type': 'iso-8601'},
1323        'last_updated_time_utc': {'key': 'lastUpdatedTimeUtc', 'type': 'iso-8601'},
1324        'end_time_utc': {'key': 'endTimeUtc', 'type': 'iso-8601'},
1325        'status': {'key': 'status', 'type': 'str'},
1326        'message': {'key': 'message', 'type': 'str'},
1327        'trigger_type': {'key': 'triggerType', 'type': 'str'},
1328        'upgraded_resource_id': {'key': 'upgradedResourceId', 'type': 'str'},
1329        'previous_resource_id': {'key': 'previousResourceId', 'type': 'str'},
1330    }
1331
1332    def __init__(
1333        self,
1334        **kwargs
1335    ):
1336        super(UpgradeDetails, self).__init__(**kwargs)
1337        self.operation_id = None
1338        self.start_time_utc = None
1339        self.last_updated_time_utc = None
1340        self.end_time_utc = None
1341        self.status = None
1342        self.message = None
1343        self.trigger_type = None
1344        self.upgraded_resource_id = None
1345        self.previous_resource_id = None
1346
1347
1348class UserIdentity(msrest.serialization.Model):
1349    """A resource identity that is managed by the user of the service.
1350
1351    Variables are only populated by the server, and will be ignored when sending a request.
1352
1353    :ivar principal_id: The principal ID of the user-assigned identity.
1354    :vartype principal_id: str
1355    :ivar client_id: The client ID of the user-assigned identity.
1356    :vartype client_id: str
1357    """
1358
1359    _validation = {
1360        'principal_id': {'readonly': True},
1361        'client_id': {'readonly': True},
1362    }
1363
1364    _attribute_map = {
1365        'principal_id': {'key': 'principalId', 'type': 'str'},
1366        'client_id': {'key': 'clientId', 'type': 'str'},
1367    }
1368
1369    def __init__(
1370        self,
1371        **kwargs
1372    ):
1373        super(UserIdentity, self).__init__(**kwargs)
1374        self.principal_id = None
1375        self.client_id = None
1376
1377
1378class Vault(TrackedResource):
1379    """Resource information, as returned by the resource provider.
1380
1381    Variables are only populated by the server, and will be ignored when sending a request.
1382
1383    All required parameters must be populated in order to send to Azure.
1384
1385    :ivar id: Resource Id represents the complete path to the resource.
1386    :vartype id: str
1387    :ivar name: Resource name associated with the resource.
1388    :vartype name: str
1389    :ivar type: Resource type represents the complete path of the form
1390     Namespace/ResourceType/ResourceType/...
1391    :vartype type: str
1392    :param etag: Optional ETag.
1393    :type etag: str
1394    :param location: Required. Resource location.
1395    :type location: str
1396    :param tags: A set of tags. Resource tags.
1397    :type tags: dict[str, str]
1398    :param identity: Identity for the resource.
1399    :type identity: ~azure.mgmt.recoveryservices.models.IdentityData
1400    :param properties: Properties of the vault.
1401    :type properties: ~azure.mgmt.recoveryservices.models.VaultProperties
1402    :param sku: Identifies the unique system identifier for each Azure resource.
1403    :type sku: ~azure.mgmt.recoveryservices.models.Sku
1404    :ivar system_data: Metadata pertaining to creation and last modification of the resource.
1405    :vartype system_data: ~azure.mgmt.recoveryservices.models.SystemData
1406    """
1407
1408    _validation = {
1409        'id': {'readonly': True},
1410        'name': {'readonly': True},
1411        'type': {'readonly': True},
1412        'location': {'required': True},
1413        'system_data': {'readonly': True},
1414    }
1415
1416    _attribute_map = {
1417        'id': {'key': 'id', 'type': 'str'},
1418        'name': {'key': 'name', 'type': 'str'},
1419        'type': {'key': 'type', 'type': 'str'},
1420        'etag': {'key': 'etag', 'type': 'str'},
1421        'location': {'key': 'location', 'type': 'str'},
1422        'tags': {'key': 'tags', 'type': '{str}'},
1423        'identity': {'key': 'identity', 'type': 'IdentityData'},
1424        'properties': {'key': 'properties', 'type': 'VaultProperties'},
1425        'sku': {'key': 'sku', 'type': 'Sku'},
1426        'system_data': {'key': 'systemData', 'type': 'SystemData'},
1427    }
1428
1429    def __init__(
1430        self,
1431        **kwargs
1432    ):
1433        super(Vault, self).__init__(**kwargs)
1434        self.identity = kwargs.get('identity', None)
1435        self.properties = kwargs.get('properties', None)
1436        self.sku = kwargs.get('sku', None)
1437        self.system_data = None
1438
1439
1440class VaultCertificateResponse(msrest.serialization.Model):
1441    """Certificate corresponding to a vault that can be used by clients to register themselves with the vault.
1442
1443    Variables are only populated by the server, and will be ignored when sending a request.
1444
1445    :ivar name: Resource name associated with the resource.
1446    :vartype name: str
1447    :ivar type: Resource type represents the complete path of the form
1448     Namespace/ResourceType/ResourceType/...
1449    :vartype type: str
1450    :ivar id: Resource Id represents the complete path to the resource.
1451    :vartype id: str
1452    :param properties: Certificate details representing the Vault credentials.
1453    :type properties: ~azure.mgmt.recoveryservices.models.ResourceCertificateDetails
1454    """
1455
1456    _validation = {
1457        'name': {'readonly': True},
1458        'type': {'readonly': True},
1459        'id': {'readonly': True},
1460    }
1461
1462    _attribute_map = {
1463        'name': {'key': 'name', 'type': 'str'},
1464        'type': {'key': 'type', 'type': 'str'},
1465        'id': {'key': 'id', 'type': 'str'},
1466        'properties': {'key': 'properties', 'type': 'ResourceCertificateDetails'},
1467    }
1468
1469    def __init__(
1470        self,
1471        **kwargs
1472    ):
1473        super(VaultCertificateResponse, self).__init__(**kwargs)
1474        self.name = None
1475        self.type = None
1476        self.id = None
1477        self.properties = kwargs.get('properties', None)
1478
1479
1480class VaultExtendedInfoResource(Resource):
1481    """Vault extended information.
1482
1483    Variables are only populated by the server, and will be ignored when sending a request.
1484
1485    :ivar id: Resource Id represents the complete path to the resource.
1486    :vartype id: str
1487    :ivar name: Resource name associated with the resource.
1488    :vartype name: str
1489    :ivar type: Resource type represents the complete path of the form
1490     Namespace/ResourceType/ResourceType/...
1491    :vartype type: str
1492    :param etag: Optional ETag.
1493    :type etag: str
1494    :param integrity_key: Integrity key.
1495    :type integrity_key: str
1496    :param encryption_key: Encryption key.
1497    :type encryption_key: str
1498    :param encryption_key_thumbprint: Encryption key thumbprint.
1499    :type encryption_key_thumbprint: str
1500    :param algorithm: Algorithm for Vault ExtendedInfo.
1501    :type algorithm: str
1502    """
1503
1504    _validation = {
1505        'id': {'readonly': True},
1506        'name': {'readonly': True},
1507        'type': {'readonly': True},
1508    }
1509
1510    _attribute_map = {
1511        'id': {'key': 'id', 'type': 'str'},
1512        'name': {'key': 'name', 'type': 'str'},
1513        'type': {'key': 'type', 'type': 'str'},
1514        'etag': {'key': 'etag', 'type': 'str'},
1515        'integrity_key': {'key': 'properties.integrityKey', 'type': 'str'},
1516        'encryption_key': {'key': 'properties.encryptionKey', 'type': 'str'},
1517        'encryption_key_thumbprint': {'key': 'properties.encryptionKeyThumbprint', 'type': 'str'},
1518        'algorithm': {'key': 'properties.algorithm', 'type': 'str'},
1519    }
1520
1521    def __init__(
1522        self,
1523        **kwargs
1524    ):
1525        super(VaultExtendedInfoResource, self).__init__(**kwargs)
1526        self.integrity_key = kwargs.get('integrity_key', None)
1527        self.encryption_key = kwargs.get('encryption_key', None)
1528        self.encryption_key_thumbprint = kwargs.get('encryption_key_thumbprint', None)
1529        self.algorithm = kwargs.get('algorithm', None)
1530
1531
1532class VaultList(msrest.serialization.Model):
1533    """The response model for a list of Vaults.
1534
1535    Variables are only populated by the server, and will be ignored when sending a request.
1536
1537    :param value:
1538    :type value: list[~azure.mgmt.recoveryservices.models.Vault]
1539    :ivar next_link:
1540    :vartype next_link: str
1541    """
1542
1543    _validation = {
1544        'next_link': {'readonly': True},
1545    }
1546
1547    _attribute_map = {
1548        'value': {'key': 'value', 'type': '[Vault]'},
1549        'next_link': {'key': 'nextLink', 'type': 'str'},
1550    }
1551
1552    def __init__(
1553        self,
1554        **kwargs
1555    ):
1556        super(VaultList, self).__init__(**kwargs)
1557        self.value = kwargs.get('value', None)
1558        self.next_link = None
1559
1560
1561class VaultProperties(msrest.serialization.Model):
1562    """Properties of the vault.
1563
1564    Variables are only populated by the server, and will be ignored when sending a request.
1565
1566    :ivar provisioning_state: Provisioning State.
1567    :vartype provisioning_state: str
1568    :param upgrade_details: Details for upgrading vault.
1569    :type upgrade_details: ~azure.mgmt.recoveryservices.models.UpgradeDetails
1570    :ivar private_endpoint_connections: List of private endpoint connection.
1571    :vartype private_endpoint_connections:
1572     list[~azure.mgmt.recoveryservices.models.PrivateEndpointConnectionVaultProperties]
1573    :ivar private_endpoint_state_for_backup: Private endpoint state for backup. Possible values
1574     include: "None", "Enabled".
1575    :vartype private_endpoint_state_for_backup: str or
1576     ~azure.mgmt.recoveryservices.models.VaultPrivateEndpointState
1577    :ivar private_endpoint_state_for_site_recovery: Private endpoint state for site recovery.
1578     Possible values include: "None", "Enabled".
1579    :vartype private_endpoint_state_for_site_recovery: str or
1580     ~azure.mgmt.recoveryservices.models.VaultPrivateEndpointState
1581    :param encryption: Customer Managed Key details of the resource.
1582    :type encryption: ~azure.mgmt.recoveryservices.models.VaultPropertiesEncryption
1583    """
1584
1585    _validation = {
1586        'provisioning_state': {'readonly': True},
1587        'private_endpoint_connections': {'readonly': True},
1588        'private_endpoint_state_for_backup': {'readonly': True},
1589        'private_endpoint_state_for_site_recovery': {'readonly': True},
1590    }
1591
1592    _attribute_map = {
1593        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
1594        'upgrade_details': {'key': 'upgradeDetails', 'type': 'UpgradeDetails'},
1595        'private_endpoint_connections': {'key': 'privateEndpointConnections', 'type': '[PrivateEndpointConnectionVaultProperties]'},
1596        'private_endpoint_state_for_backup': {'key': 'privateEndpointStateForBackup', 'type': 'str'},
1597        'private_endpoint_state_for_site_recovery': {'key': 'privateEndpointStateForSiteRecovery', 'type': 'str'},
1598        'encryption': {'key': 'encryption', 'type': 'VaultPropertiesEncryption'},
1599    }
1600
1601    def __init__(
1602        self,
1603        **kwargs
1604    ):
1605        super(VaultProperties, self).__init__(**kwargs)
1606        self.provisioning_state = None
1607        self.upgrade_details = kwargs.get('upgrade_details', None)
1608        self.private_endpoint_connections = None
1609        self.private_endpoint_state_for_backup = None
1610        self.private_endpoint_state_for_site_recovery = None
1611        self.encryption = kwargs.get('encryption', None)
1612
1613
1614class VaultPropertiesEncryption(msrest.serialization.Model):
1615    """Customer Managed Key details of the resource.
1616
1617    :param key_vault_properties: The properties of the Key Vault which hosts CMK.
1618    :type key_vault_properties: ~azure.mgmt.recoveryservices.models.CmkKeyVaultProperties
1619    :param kek_identity: The details of the identity used for CMK.
1620    :type kek_identity: ~azure.mgmt.recoveryservices.models.CmkKekIdentity
1621    :param infrastructure_encryption: Enabling/Disabling the Double Encryption state. Possible
1622     values include: "Enabled", "Disabled".
1623    :type infrastructure_encryption: str or
1624     ~azure.mgmt.recoveryservices.models.InfrastructureEncryptionState
1625    """
1626
1627    _attribute_map = {
1628        'key_vault_properties': {'key': 'keyVaultProperties', 'type': 'CmkKeyVaultProperties'},
1629        'kek_identity': {'key': 'kekIdentity', 'type': 'CmkKekIdentity'},
1630        'infrastructure_encryption': {'key': 'infrastructureEncryption', 'type': 'str'},
1631    }
1632
1633    def __init__(
1634        self,
1635        **kwargs
1636    ):
1637        super(VaultPropertiesEncryption, self).__init__(**kwargs)
1638        self.key_vault_properties = kwargs.get('key_vault_properties', None)
1639        self.kek_identity = kwargs.get('kek_identity', None)
1640        self.infrastructure_encryption = kwargs.get('infrastructure_encryption', None)
1641
1642
1643class VaultUsage(msrest.serialization.Model):
1644    """Usages of a vault.
1645
1646    :param unit: Unit of the usage. Possible values include: "Count", "Bytes", "Seconds",
1647     "Percent", "CountPerSecond", "BytesPerSecond".
1648    :type unit: str or ~azure.mgmt.recoveryservices.models.UsagesUnit
1649    :param quota_period: Quota period of usage.
1650    :type quota_period: str
1651    :param next_reset_time: Next reset time of usage.
1652    :type next_reset_time: ~datetime.datetime
1653    :param current_value: Current value of usage.
1654    :type current_value: long
1655    :param limit: Limit of usage.
1656    :type limit: long
1657    :param name: Name of usage.
1658    :type name: ~azure.mgmt.recoveryservices.models.NameInfo
1659    """
1660
1661    _attribute_map = {
1662        'unit': {'key': 'unit', 'type': 'str'},
1663        'quota_period': {'key': 'quotaPeriod', 'type': 'str'},
1664        'next_reset_time': {'key': 'nextResetTime', 'type': 'iso-8601'},
1665        'current_value': {'key': 'currentValue', 'type': 'long'},
1666        'limit': {'key': 'limit', 'type': 'long'},
1667        'name': {'key': 'name', 'type': 'NameInfo'},
1668    }
1669
1670    def __init__(
1671        self,
1672        **kwargs
1673    ):
1674        super(VaultUsage, self).__init__(**kwargs)
1675        self.unit = kwargs.get('unit', None)
1676        self.quota_period = kwargs.get('quota_period', None)
1677        self.next_reset_time = kwargs.get('next_reset_time', None)
1678        self.current_value = kwargs.get('current_value', None)
1679        self.limit = kwargs.get('limit', None)
1680        self.name = kwargs.get('name', None)
1681
1682
1683class VaultUsageList(msrest.serialization.Model):
1684    """Usage for vault.
1685
1686    :param value: The list of usages for the given vault.
1687    :type value: list[~azure.mgmt.recoveryservices.models.VaultUsage]
1688    """
1689
1690    _attribute_map = {
1691        'value': {'key': 'value', 'type': '[VaultUsage]'},
1692    }
1693
1694    def __init__(
1695        self,
1696        **kwargs
1697    ):
1698        super(VaultUsageList, self).__init__(**kwargs)
1699        self.value = kwargs.get('value', None)
1700