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
5# license information.
6#
7# Code generated by Microsoft (R) AutoRest Code Generator.
8# Changes may cause incorrect behavior and will be lost if the code is
9# regenerated.
10# --------------------------------------------------------------------------
11
12from msrest.serialization import Model
13from msrest.exceptions import HttpOperationError
14
15
16class AADProperties(Model):
17    """AADProperties.
18
19    :param service_principal_client_id:
20    :type service_principal_client_id: str
21    :param tenant_id:
22    :type tenant_id: str
23    :param authority:
24    :type authority: str
25    :param audience:
26    :type audience: str
27    :param service_principal_object_id:
28    :type service_principal_object_id: str
29    """
30
31    _attribute_map = {
32        'service_principal_client_id': {'key': 'servicePrincipalClientId', 'type': 'str'},
33        'tenant_id': {'key': 'tenantId', 'type': 'str'},
34        'authority': {'key': 'authority', 'type': 'str'},
35        'audience': {'key': 'audience', 'type': 'str'},
36        'service_principal_object_id': {'key': 'servicePrincipalObjectId', 'type': 'str'},
37    }
38
39    def __init__(self, **kwargs):
40        super(AADProperties, self).__init__(**kwargs)
41        self.service_principal_client_id = kwargs.get('service_principal_client_id', None)
42        self.tenant_id = kwargs.get('tenant_id', None)
43        self.authority = kwargs.get('authority', None)
44        self.audience = kwargs.get('audience', None)
45        self.service_principal_object_id = kwargs.get('service_principal_object_id', None)
46
47
48class Resource(Model):
49    """ARM Resource.
50
51    Variables are only populated by the server, and will be ignored when
52    sending a request.
53
54    :ivar id: Resource Id represents the complete path to the resource.
55    :vartype id: str
56    :ivar name: Resource name associated with the resource.
57    :vartype name: str
58    :ivar type: Resource type represents the complete path of the form
59     Namespace/ResourceType/ResourceType/...
60    :vartype type: str
61    :param location: Resource location.
62    :type location: str
63    :param tags: Resource tags.
64    :type tags: dict[str, str]
65    :param e_tag: Optional ETag.
66    :type e_tag: str
67    """
68
69    _validation = {
70        'id': {'readonly': True},
71        'name': {'readonly': True},
72        'type': {'readonly': True},
73    }
74
75    _attribute_map = {
76        'id': {'key': 'id', 'type': 'str'},
77        'name': {'key': 'name', 'type': 'str'},
78        'type': {'key': 'type', 'type': 'str'},
79        'location': {'key': 'location', 'type': 'str'},
80        'tags': {'key': 'tags', 'type': '{str}'},
81        'e_tag': {'key': 'eTag', 'type': 'str'},
82    }
83
84    def __init__(self, **kwargs):
85        super(Resource, self).__init__(**kwargs)
86        self.id = None
87        self.name = None
88        self.type = None
89        self.location = kwargs.get('location', None)
90        self.tags = kwargs.get('tags', None)
91        self.e_tag = kwargs.get('e_tag', None)
92
93
94class AADPropertiesResource(Resource):
95    """AADPropertiesResource.
96
97    Variables are only populated by the server, and will be ignored when
98    sending a request.
99
100    :ivar id: Resource Id represents the complete path to the resource.
101    :vartype id: str
102    :ivar name: Resource name associated with the resource.
103    :vartype name: str
104    :ivar type: Resource type represents the complete path of the form
105     Namespace/ResourceType/ResourceType/...
106    :vartype type: str
107    :param location: Resource location.
108    :type location: str
109    :param tags: Resource tags.
110    :type tags: dict[str, str]
111    :param e_tag: Optional ETag.
112    :type e_tag: str
113    :param properties: AADPropertiesResource properties
114    :type properties: ~azure.mgmt.recoveryservicesbackup.models.AADProperties
115    """
116
117    _validation = {
118        'id': {'readonly': True},
119        'name': {'readonly': True},
120        'type': {'readonly': True},
121    }
122
123    _attribute_map = {
124        'id': {'key': 'id', 'type': 'str'},
125        'name': {'key': 'name', 'type': 'str'},
126        'type': {'key': 'type', 'type': 'str'},
127        'location': {'key': 'location', 'type': 'str'},
128        'tags': {'key': 'tags', 'type': '{str}'},
129        'e_tag': {'key': 'eTag', 'type': 'str'},
130        'properties': {'key': 'properties', 'type': 'AADProperties'},
131    }
132
133    def __init__(self, **kwargs):
134        super(AADPropertiesResource, self).__init__(**kwargs)
135        self.properties = kwargs.get('properties', None)
136
137
138class FeatureSupportRequest(Model):
139    """Base class for feature request.
140
141    You probably want to use the sub-classes and not this class directly. Known
142    sub-classes are: AzureBackupGoalFeatureSupportRequest,
143    AzureVMResourceFeatureSupportRequest
144
145    All required parameters must be populated in order to send to Azure.
146
147    :param feature_type: Required. Constant filled by server.
148    :type feature_type: str
149    """
150
151    _validation = {
152        'feature_type': {'required': True},
153    }
154
155    _attribute_map = {
156        'feature_type': {'key': 'featureType', 'type': 'str'},
157    }
158
159    _subtype_map = {
160        'feature_type': {'AzureBackupGoals': 'AzureBackupGoalFeatureSupportRequest', 'AzureVMResourceBackup': 'AzureVMResourceFeatureSupportRequest'}
161    }
162
163    def __init__(self, **kwargs):
164        super(FeatureSupportRequest, self).__init__(**kwargs)
165        self.feature_type = None
166
167
168class AzureBackupGoalFeatureSupportRequest(FeatureSupportRequest):
169    """Azure backup goal feature specific request.
170
171    All required parameters must be populated in order to send to Azure.
172
173    :param feature_type: Required. Constant filled by server.
174    :type feature_type: str
175    """
176
177    _validation = {
178        'feature_type': {'required': True},
179    }
180
181    _attribute_map = {
182        'feature_type': {'key': 'featureType', 'type': 'str'},
183    }
184
185    def __init__(self, **kwargs):
186        super(AzureBackupGoalFeatureSupportRequest, self).__init__(**kwargs)
187        self.feature_type = 'AzureBackupGoals'
188
189
190class ProtectionContainer(Model):
191    """Base class for container with backup items. Containers with specific
192    workloads are derived from this class.
193
194    You probably want to use the sub-classes and not this class directly. Known
195    sub-classes are: AzureSqlContainer, AzureStorageContainer,
196    AzureWorkloadContainer, DpmContainer, GenericContainer, IaaSVMContainer,
197    MabContainer
198
199    All required parameters must be populated in order to send to Azure.
200
201    :param friendly_name: Friendly name of the container.
202    :type friendly_name: str
203    :param backup_management_type: Type of backup management for the
204     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
205     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
206     'DefaultBackup'
207    :type backup_management_type: str or
208     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
209    :param registration_status: Status of registration of the container with
210     the Recovery Services Vault.
211    :type registration_status: str
212    :param health_status: Status of health of the container.
213    :type health_status: str
214    :param container_type: Required. Constant filled by server.
215    :type container_type: str
216    """
217
218    _validation = {
219        'container_type': {'required': True},
220    }
221
222    _attribute_map = {
223        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
224        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
225        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
226        'health_status': {'key': 'healthStatus', 'type': 'str'},
227        'container_type': {'key': 'containerType', 'type': 'str'},
228    }
229
230    _subtype_map = {
231        'container_type': {'AzureSqlContainer': 'AzureSqlContainer', 'StorageContainer': 'AzureStorageContainer', 'AzureWorkloadContainer': 'AzureWorkloadContainer', 'DPMContainer': 'DpmContainer', 'GenericContainer': 'GenericContainer', 'IaaSVMContainer': 'IaaSVMContainer', 'Windows': 'MabContainer'}
232    }
233
234    def __init__(self, **kwargs):
235        super(ProtectionContainer, self).__init__(**kwargs)
236        self.friendly_name = kwargs.get('friendly_name', None)
237        self.backup_management_type = kwargs.get('backup_management_type', None)
238        self.registration_status = kwargs.get('registration_status', None)
239        self.health_status = kwargs.get('health_status', None)
240        self.container_type = None
241
242
243class DpmContainer(ProtectionContainer):
244    """DPM workload-specific protection container.
245
246    You probably want to use the sub-classes and not this class directly. Known
247    sub-classes are: AzureBackupServerContainer
248
249    All required parameters must be populated in order to send to Azure.
250
251    :param friendly_name: Friendly name of the container.
252    :type friendly_name: str
253    :param backup_management_type: Type of backup management for the
254     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
255     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
256     'DefaultBackup'
257    :type backup_management_type: str or
258     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
259    :param registration_status: Status of registration of the container with
260     the Recovery Services Vault.
261    :type registration_status: str
262    :param health_status: Status of health of the container.
263    :type health_status: str
264    :param container_type: Required. Constant filled by server.
265    :type container_type: str
266    :param can_re_register: Specifies whether the container is re-registrable.
267    :type can_re_register: bool
268    :param container_id: ID of container.
269    :type container_id: str
270    :param protected_item_count: Number of protected items in the BackupEngine
271    :type protected_item_count: long
272    :param dpm_agent_version: Backup engine Agent version
273    :type dpm_agent_version: str
274    :param dpm_servers: List of BackupEngines protecting the container
275    :type dpm_servers: list[str]
276    :param upgrade_available: To check if upgrade available
277    :type upgrade_available: bool
278    :param protection_status: Protection status of the container.
279    :type protection_status: str
280    :param extended_info: Extended Info of the container.
281    :type extended_info:
282     ~azure.mgmt.recoveryservicesbackup.models.DPMContainerExtendedInfo
283    """
284
285    _validation = {
286        'container_type': {'required': True},
287    }
288
289    _attribute_map = {
290        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
291        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
292        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
293        'health_status': {'key': 'healthStatus', 'type': 'str'},
294        'container_type': {'key': 'containerType', 'type': 'str'},
295        'can_re_register': {'key': 'canReRegister', 'type': 'bool'},
296        'container_id': {'key': 'containerId', 'type': 'str'},
297        'protected_item_count': {'key': 'protectedItemCount', 'type': 'long'},
298        'dpm_agent_version': {'key': 'dpmAgentVersion', 'type': 'str'},
299        'dpm_servers': {'key': 'dpmServers', 'type': '[str]'},
300        'upgrade_available': {'key': 'upgradeAvailable', 'type': 'bool'},
301        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
302        'extended_info': {'key': 'extendedInfo', 'type': 'DPMContainerExtendedInfo'},
303    }
304
305    _subtype_map = {
306        'container_type': {'AzureBackupServerContainer': 'AzureBackupServerContainer'}
307    }
308
309    def __init__(self, **kwargs):
310        super(DpmContainer, self).__init__(**kwargs)
311        self.can_re_register = kwargs.get('can_re_register', None)
312        self.container_id = kwargs.get('container_id', None)
313        self.protected_item_count = kwargs.get('protected_item_count', None)
314        self.dpm_agent_version = kwargs.get('dpm_agent_version', None)
315        self.dpm_servers = kwargs.get('dpm_servers', None)
316        self.upgrade_available = kwargs.get('upgrade_available', None)
317        self.protection_status = kwargs.get('protection_status', None)
318        self.extended_info = kwargs.get('extended_info', None)
319        self.container_type = 'DPMContainer'
320
321
322class AzureBackupServerContainer(DpmContainer):
323    """AzureBackupServer (DPMVenus) workload-specific protection container.
324
325    All required parameters must be populated in order to send to Azure.
326
327    :param friendly_name: Friendly name of the container.
328    :type friendly_name: str
329    :param backup_management_type: Type of backup management for the
330     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
331     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
332     'DefaultBackup'
333    :type backup_management_type: str or
334     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
335    :param registration_status: Status of registration of the container with
336     the Recovery Services Vault.
337    :type registration_status: str
338    :param health_status: Status of health of the container.
339    :type health_status: str
340    :param container_type: Required. Constant filled by server.
341    :type container_type: str
342    :param can_re_register: Specifies whether the container is re-registrable.
343    :type can_re_register: bool
344    :param container_id: ID of container.
345    :type container_id: str
346    :param protected_item_count: Number of protected items in the BackupEngine
347    :type protected_item_count: long
348    :param dpm_agent_version: Backup engine Agent version
349    :type dpm_agent_version: str
350    :param dpm_servers: List of BackupEngines protecting the container
351    :type dpm_servers: list[str]
352    :param upgrade_available: To check if upgrade available
353    :type upgrade_available: bool
354    :param protection_status: Protection status of the container.
355    :type protection_status: str
356    :param extended_info: Extended Info of the container.
357    :type extended_info:
358     ~azure.mgmt.recoveryservicesbackup.models.DPMContainerExtendedInfo
359    """
360
361    _validation = {
362        'container_type': {'required': True},
363    }
364
365    _attribute_map = {
366        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
367        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
368        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
369        'health_status': {'key': 'healthStatus', 'type': 'str'},
370        'container_type': {'key': 'containerType', 'type': 'str'},
371        'can_re_register': {'key': 'canReRegister', 'type': 'bool'},
372        'container_id': {'key': 'containerId', 'type': 'str'},
373        'protected_item_count': {'key': 'protectedItemCount', 'type': 'long'},
374        'dpm_agent_version': {'key': 'dpmAgentVersion', 'type': 'str'},
375        'dpm_servers': {'key': 'dpmServers', 'type': '[str]'},
376        'upgrade_available': {'key': 'upgradeAvailable', 'type': 'bool'},
377        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
378        'extended_info': {'key': 'extendedInfo', 'type': 'DPMContainerExtendedInfo'},
379    }
380
381    def __init__(self, **kwargs):
382        super(AzureBackupServerContainer, self).__init__(**kwargs)
383        self.container_type = 'AzureBackupServerContainer'
384
385
386class BackupEngineBase(Model):
387    """The base backup engine class. All workload specific backup engines derive
388    from this class.
389
390    You probably want to use the sub-classes and not this class directly. Known
391    sub-classes are: AzureBackupServerEngine, DpmBackupEngine
392
393    All required parameters must be populated in order to send to Azure.
394
395    :param friendly_name: Friendly name of the backup engine.
396    :type friendly_name: str
397    :param backup_management_type: Type of backup management for the backup
398     engine. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
399     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
400     'DefaultBackup'
401    :type backup_management_type: str or
402     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
403    :param registration_status: Registration status of the backup engine with
404     the Recovery Services Vault.
405    :type registration_status: str
406    :param backup_engine_state: Status of the backup engine with the Recovery
407     Services Vault. = {Active/Deleting/DeleteFailed}
408    :type backup_engine_state: str
409    :param health_status: Backup status of the backup engine.
410    :type health_status: str
411    :param can_re_register: Flag indicating if the backup engine be
412     registered, once already registered.
413    :type can_re_register: bool
414    :param backup_engine_id: ID of the backup engine.
415    :type backup_engine_id: str
416    :param dpm_version: Backup engine version
417    :type dpm_version: str
418    :param azure_backup_agent_version: Backup agent version
419    :type azure_backup_agent_version: str
420    :param is_azure_backup_agent_upgrade_available: To check if backup agent
421     upgrade available
422    :type is_azure_backup_agent_upgrade_available: bool
423    :param is_dpm_upgrade_available: To check if backup engine upgrade
424     available
425    :type is_dpm_upgrade_available: bool
426    :param extended_info: Extended info of the backupengine
427    :type extended_info:
428     ~azure.mgmt.recoveryservicesbackup.models.BackupEngineExtendedInfo
429    :param backup_engine_type: Required. Constant filled by server.
430    :type backup_engine_type: str
431    """
432
433    _validation = {
434        'backup_engine_type': {'required': True},
435    }
436
437    _attribute_map = {
438        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
439        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
440        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
441        'backup_engine_state': {'key': 'backupEngineState', 'type': 'str'},
442        'health_status': {'key': 'healthStatus', 'type': 'str'},
443        'can_re_register': {'key': 'canReRegister', 'type': 'bool'},
444        'backup_engine_id': {'key': 'backupEngineId', 'type': 'str'},
445        'dpm_version': {'key': 'dpmVersion', 'type': 'str'},
446        'azure_backup_agent_version': {'key': 'azureBackupAgentVersion', 'type': 'str'},
447        'is_azure_backup_agent_upgrade_available': {'key': 'isAzureBackupAgentUpgradeAvailable', 'type': 'bool'},
448        'is_dpm_upgrade_available': {'key': 'isDpmUpgradeAvailable', 'type': 'bool'},
449        'extended_info': {'key': 'extendedInfo', 'type': 'BackupEngineExtendedInfo'},
450        'backup_engine_type': {'key': 'backupEngineType', 'type': 'str'},
451    }
452
453    _subtype_map = {
454        'backup_engine_type': {'AzureBackupServerEngine': 'AzureBackupServerEngine', 'DpmBackupEngine': 'DpmBackupEngine'}
455    }
456
457    def __init__(self, **kwargs):
458        super(BackupEngineBase, self).__init__(**kwargs)
459        self.friendly_name = kwargs.get('friendly_name', None)
460        self.backup_management_type = kwargs.get('backup_management_type', None)
461        self.registration_status = kwargs.get('registration_status', None)
462        self.backup_engine_state = kwargs.get('backup_engine_state', None)
463        self.health_status = kwargs.get('health_status', None)
464        self.can_re_register = kwargs.get('can_re_register', None)
465        self.backup_engine_id = kwargs.get('backup_engine_id', None)
466        self.dpm_version = kwargs.get('dpm_version', None)
467        self.azure_backup_agent_version = kwargs.get('azure_backup_agent_version', None)
468        self.is_azure_backup_agent_upgrade_available = kwargs.get('is_azure_backup_agent_upgrade_available', None)
469        self.is_dpm_upgrade_available = kwargs.get('is_dpm_upgrade_available', None)
470        self.extended_info = kwargs.get('extended_info', None)
471        self.backup_engine_type = None
472
473
474class AzureBackupServerEngine(BackupEngineBase):
475    """Backup engine type when Azure Backup Server is used to manage the backups.
476
477    All required parameters must be populated in order to send to Azure.
478
479    :param friendly_name: Friendly name of the backup engine.
480    :type friendly_name: str
481    :param backup_management_type: Type of backup management for the backup
482     engine. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
483     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
484     'DefaultBackup'
485    :type backup_management_type: str or
486     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
487    :param registration_status: Registration status of the backup engine with
488     the Recovery Services Vault.
489    :type registration_status: str
490    :param backup_engine_state: Status of the backup engine with the Recovery
491     Services Vault. = {Active/Deleting/DeleteFailed}
492    :type backup_engine_state: str
493    :param health_status: Backup status of the backup engine.
494    :type health_status: str
495    :param can_re_register: Flag indicating if the backup engine be
496     registered, once already registered.
497    :type can_re_register: bool
498    :param backup_engine_id: ID of the backup engine.
499    :type backup_engine_id: str
500    :param dpm_version: Backup engine version
501    :type dpm_version: str
502    :param azure_backup_agent_version: Backup agent version
503    :type azure_backup_agent_version: str
504    :param is_azure_backup_agent_upgrade_available: To check if backup agent
505     upgrade available
506    :type is_azure_backup_agent_upgrade_available: bool
507    :param is_dpm_upgrade_available: To check if backup engine upgrade
508     available
509    :type is_dpm_upgrade_available: bool
510    :param extended_info: Extended info of the backupengine
511    :type extended_info:
512     ~azure.mgmt.recoveryservicesbackup.models.BackupEngineExtendedInfo
513    :param backup_engine_type: Required. Constant filled by server.
514    :type backup_engine_type: str
515    """
516
517    _validation = {
518        'backup_engine_type': {'required': True},
519    }
520
521    _attribute_map = {
522        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
523        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
524        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
525        'backup_engine_state': {'key': 'backupEngineState', 'type': 'str'},
526        'health_status': {'key': 'healthStatus', 'type': 'str'},
527        'can_re_register': {'key': 'canReRegister', 'type': 'bool'},
528        'backup_engine_id': {'key': 'backupEngineId', 'type': 'str'},
529        'dpm_version': {'key': 'dpmVersion', 'type': 'str'},
530        'azure_backup_agent_version': {'key': 'azureBackupAgentVersion', 'type': 'str'},
531        'is_azure_backup_agent_upgrade_available': {'key': 'isAzureBackupAgentUpgradeAvailable', 'type': 'bool'},
532        'is_dpm_upgrade_available': {'key': 'isDpmUpgradeAvailable', 'type': 'bool'},
533        'extended_info': {'key': 'extendedInfo', 'type': 'BackupEngineExtendedInfo'},
534        'backup_engine_type': {'key': 'backupEngineType', 'type': 'str'},
535    }
536
537    def __init__(self, **kwargs):
538        super(AzureBackupServerEngine, self).__init__(**kwargs)
539        self.backup_engine_type = 'AzureBackupServerEngine'
540
541
542class BackupRequest(Model):
543    """Base class for backup request. Workload-specific backup requests are
544    derived from this class.
545
546    You probably want to use the sub-classes and not this class directly. Known
547    sub-classes are: AzureFileShareBackupRequest, AzureWorkloadBackupRequest,
548    IaasVMBackupRequest
549
550    All required parameters must be populated in order to send to Azure.
551
552    :param object_type: Required. Constant filled by server.
553    :type object_type: str
554    """
555
556    _validation = {
557        'object_type': {'required': True},
558    }
559
560    _attribute_map = {
561        'object_type': {'key': 'objectType', 'type': 'str'},
562    }
563
564    _subtype_map = {
565        'object_type': {'AzureFileShareBackupRequest': 'AzureFileShareBackupRequest', 'AzureWorkloadBackupRequest': 'AzureWorkloadBackupRequest', 'IaasVMBackupRequest': 'IaasVMBackupRequest'}
566    }
567
568    def __init__(self, **kwargs):
569        super(BackupRequest, self).__init__(**kwargs)
570        self.object_type = None
571
572
573class AzureFileShareBackupRequest(BackupRequest):
574    """AzureFileShare workload-specific backup request.
575
576    All required parameters must be populated in order to send to Azure.
577
578    :param object_type: Required. Constant filled by server.
579    :type object_type: str
580    :param recovery_point_expiry_time_in_utc: Backup copy will expire after
581     the time specified (UTC).
582    :type recovery_point_expiry_time_in_utc: datetime
583    """
584
585    _validation = {
586        'object_type': {'required': True},
587    }
588
589    _attribute_map = {
590        'object_type': {'key': 'objectType', 'type': 'str'},
591        'recovery_point_expiry_time_in_utc': {'key': 'recoveryPointExpiryTimeInUTC', 'type': 'iso-8601'},
592    }
593
594    def __init__(self, **kwargs):
595        super(AzureFileShareBackupRequest, self).__init__(**kwargs)
596        self.recovery_point_expiry_time_in_utc = kwargs.get('recovery_point_expiry_time_in_utc', None)
597        self.object_type = 'AzureFileShareBackupRequest'
598
599
600class WorkloadProtectableItem(Model):
601    """Base class for backup item. Workload-specific backup items are derived from
602    this class.
603
604    You probably want to use the sub-classes and not this class directly. Known
605    sub-classes are: AzureFileShareProtectableItem,
606    AzureVmWorkloadProtectableItem, IaaSVMProtectableItem
607
608    All required parameters must be populated in order to send to Azure.
609
610    :param backup_management_type: Type of backup management to backup an
611     item.
612    :type backup_management_type: str
613    :param workload_type: Type of workload for the backup management
614    :type workload_type: str
615    :param friendly_name: Friendly name of the backup item.
616    :type friendly_name: str
617    :param protection_state: State of the back up item. Possible values
618     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
619     'ProtectionFailed'
620    :type protection_state: str or
621     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
622    :param protectable_item_type: Required. Constant filled by server.
623    :type protectable_item_type: str
624    """
625
626    _validation = {
627        'protectable_item_type': {'required': True},
628    }
629
630    _attribute_map = {
631        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
632        'workload_type': {'key': 'workloadType', 'type': 'str'},
633        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
634        'protection_state': {'key': 'protectionState', 'type': 'str'},
635        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
636    }
637
638    _subtype_map = {
639        'protectable_item_type': {'AzureFileShare': 'AzureFileShareProtectableItem', 'AzureVmWorkloadProtectableItem': 'AzureVmWorkloadProtectableItem', 'IaaSVMProtectableItem': 'IaaSVMProtectableItem'}
640    }
641
642    def __init__(self, **kwargs):
643        super(WorkloadProtectableItem, self).__init__(**kwargs)
644        self.backup_management_type = kwargs.get('backup_management_type', None)
645        self.workload_type = kwargs.get('workload_type', None)
646        self.friendly_name = kwargs.get('friendly_name', None)
647        self.protection_state = kwargs.get('protection_state', None)
648        self.protectable_item_type = None
649
650
651class AzureFileShareProtectableItem(WorkloadProtectableItem):
652    """Protectable item for Azure Fileshare workloads.
653
654    All required parameters must be populated in order to send to Azure.
655
656    :param backup_management_type: Type of backup management to backup an
657     item.
658    :type backup_management_type: str
659    :param workload_type: Type of workload for the backup management
660    :type workload_type: str
661    :param friendly_name: Friendly name of the backup item.
662    :type friendly_name: str
663    :param protection_state: State of the back up item. Possible values
664     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
665     'ProtectionFailed'
666    :type protection_state: str or
667     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
668    :param protectable_item_type: Required. Constant filled by server.
669    :type protectable_item_type: str
670    :param parent_container_fabric_id: Full Fabric ID of container to which
671     this protectable item belongs. For example, ARM ID.
672    :type parent_container_fabric_id: str
673    :param parent_container_friendly_name: Friendly name of container to which
674     this protectable item belongs.
675    :type parent_container_friendly_name: str
676    :param azure_file_share_type: File Share type XSync or XSMB. Possible
677     values include: 'Invalid', 'XSMB', 'XSync'
678    :type azure_file_share_type: str or
679     ~azure.mgmt.recoveryservicesbackup.models.AzureFileShareType
680    """
681
682    _validation = {
683        'protectable_item_type': {'required': True},
684    }
685
686    _attribute_map = {
687        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
688        'workload_type': {'key': 'workloadType', 'type': 'str'},
689        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
690        'protection_state': {'key': 'protectionState', 'type': 'str'},
691        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
692        'parent_container_fabric_id': {'key': 'parentContainerFabricId', 'type': 'str'},
693        'parent_container_friendly_name': {'key': 'parentContainerFriendlyName', 'type': 'str'},
694        'azure_file_share_type': {'key': 'azureFileShareType', 'type': 'str'},
695    }
696
697    def __init__(self, **kwargs):
698        super(AzureFileShareProtectableItem, self).__init__(**kwargs)
699        self.parent_container_fabric_id = kwargs.get('parent_container_fabric_id', None)
700        self.parent_container_friendly_name = kwargs.get('parent_container_friendly_name', None)
701        self.azure_file_share_type = kwargs.get('azure_file_share_type', None)
702        self.protectable_item_type = 'AzureFileShare'
703
704
705class ProtectedItem(Model):
706    """Base class for backup items.
707
708    You probably want to use the sub-classes and not this class directly. Known
709    sub-classes are: AzureFileshareProtectedItem, AzureIaaSVMProtectedItem,
710    AzureSqlProtectedItem, AzureVmWorkloadProtectedItem, DPMProtectedItem,
711    GenericProtectedItem, MabFileFolderProtectedItem
712
713    All required parameters must be populated in order to send to Azure.
714
715    :param backup_management_type: Type of backup management for the backed up
716     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
717     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
718     'DefaultBackup'
719    :type backup_management_type: str or
720     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
721    :param workload_type: Type of workload this item represents. Possible
722     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
723     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
724     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
725     'SAPAseDatabase'
726    :type workload_type: str or
727     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
728    :param container_name: Unique name of container
729    :type container_name: str
730    :param source_resource_id: ARM ID of the resource to be backed up.
731    :type source_resource_id: str
732    :param policy_id: ID of the backup policy with which this item is backed
733     up.
734    :type policy_id: str
735    :param last_recovery_point: Timestamp when the last (latest) backup copy
736     was created for this backup item.
737    :type last_recovery_point: datetime
738    :param backup_set_name: Name of the backup set the backup item belongs to
739    :type backup_set_name: str
740    :param create_mode: Create mode to indicate recovery of existing soft
741     deleted data source or creation of new data source. Possible values
742     include: 'Invalid', 'Default', 'Recover'
743    :type create_mode: str or
744     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
745    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
746    :type deferred_delete_time_in_utc: datetime
747    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
748     is scheduled for deferred delete
749    :type is_scheduled_for_deferred_delete: bool
750    :param deferred_delete_time_remaining: Time remaining before the DS marked
751     for deferred delete is permanently deleted
752    :type deferred_delete_time_remaining: str
753    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
754     deferred deleted DS is to be purged soon
755    :type is_deferred_delete_schedule_upcoming: bool
756    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
757     moved into Pause state
758    :type is_rehydrate: bool
759    :param resource_guard_operation_requests: ResourceGuardOperationRequests
760     on which LAC check will be performed
761    :type resource_guard_operation_requests: list[str]
762    :param protected_item_type: Required. Constant filled by server.
763    :type protected_item_type: str
764    """
765
766    _validation = {
767        'protected_item_type': {'required': True},
768    }
769
770    _attribute_map = {
771        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
772        'workload_type': {'key': 'workloadType', 'type': 'str'},
773        'container_name': {'key': 'containerName', 'type': 'str'},
774        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
775        'policy_id': {'key': 'policyId', 'type': 'str'},
776        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
777        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
778        'create_mode': {'key': 'createMode', 'type': 'str'},
779        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
780        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
781        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
782        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
783        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
784        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
785        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
786    }
787
788    _subtype_map = {
789        'protected_item_type': {'AzureFileShareProtectedItem': 'AzureFileshareProtectedItem', 'AzureIaaSVMProtectedItem': 'AzureIaaSVMProtectedItem', 'Microsoft.Sql/servers/databases': 'AzureSqlProtectedItem', 'AzureVmWorkloadProtectedItem': 'AzureVmWorkloadProtectedItem', 'DPMProtectedItem': 'DPMProtectedItem', 'GenericProtectedItem': 'GenericProtectedItem', 'MabFileFolderProtectedItem': 'MabFileFolderProtectedItem'}
790    }
791
792    def __init__(self, **kwargs):
793        super(ProtectedItem, self).__init__(**kwargs)
794        self.backup_management_type = kwargs.get('backup_management_type', None)
795        self.workload_type = kwargs.get('workload_type', None)
796        self.container_name = kwargs.get('container_name', None)
797        self.source_resource_id = kwargs.get('source_resource_id', None)
798        self.policy_id = kwargs.get('policy_id', None)
799        self.last_recovery_point = kwargs.get('last_recovery_point', None)
800        self.backup_set_name = kwargs.get('backup_set_name', None)
801        self.create_mode = kwargs.get('create_mode', None)
802        self.deferred_delete_time_in_utc = kwargs.get('deferred_delete_time_in_utc', None)
803        self.is_scheduled_for_deferred_delete = kwargs.get('is_scheduled_for_deferred_delete', None)
804        self.deferred_delete_time_remaining = kwargs.get('deferred_delete_time_remaining', None)
805        self.is_deferred_delete_schedule_upcoming = kwargs.get('is_deferred_delete_schedule_upcoming', None)
806        self.is_rehydrate = kwargs.get('is_rehydrate', None)
807        self.resource_guard_operation_requests = kwargs.get('resource_guard_operation_requests', None)
808        self.protected_item_type = None
809
810
811class AzureFileshareProtectedItem(ProtectedItem):
812    """Azure File Share workload-specific backup item.
813
814    All required parameters must be populated in order to send to Azure.
815
816    :param backup_management_type: Type of backup management for the backed up
817     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
818     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
819     'DefaultBackup'
820    :type backup_management_type: str or
821     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
822    :param workload_type: Type of workload this item represents. Possible
823     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
824     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
825     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
826     'SAPAseDatabase'
827    :type workload_type: str or
828     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
829    :param container_name: Unique name of container
830    :type container_name: str
831    :param source_resource_id: ARM ID of the resource to be backed up.
832    :type source_resource_id: str
833    :param policy_id: ID of the backup policy with which this item is backed
834     up.
835    :type policy_id: str
836    :param last_recovery_point: Timestamp when the last (latest) backup copy
837     was created for this backup item.
838    :type last_recovery_point: datetime
839    :param backup_set_name: Name of the backup set the backup item belongs to
840    :type backup_set_name: str
841    :param create_mode: Create mode to indicate recovery of existing soft
842     deleted data source or creation of new data source. Possible values
843     include: 'Invalid', 'Default', 'Recover'
844    :type create_mode: str or
845     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
846    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
847    :type deferred_delete_time_in_utc: datetime
848    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
849     is scheduled for deferred delete
850    :type is_scheduled_for_deferred_delete: bool
851    :param deferred_delete_time_remaining: Time remaining before the DS marked
852     for deferred delete is permanently deleted
853    :type deferred_delete_time_remaining: str
854    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
855     deferred deleted DS is to be purged soon
856    :type is_deferred_delete_schedule_upcoming: bool
857    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
858     moved into Pause state
859    :type is_rehydrate: bool
860    :param resource_guard_operation_requests: ResourceGuardOperationRequests
861     on which LAC check will be performed
862    :type resource_guard_operation_requests: list[str]
863    :param protected_item_type: Required. Constant filled by server.
864    :type protected_item_type: str
865    :param friendly_name: Friendly name of the fileshare represented by this
866     backup item.
867    :type friendly_name: str
868    :param protection_status: Backup status of this backup item.
869    :type protection_status: str
870    :param protection_state: Backup state of this backup item. Possible values
871     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
872     'ProtectionStopped', 'ProtectionPaused'
873    :type protection_state: str or
874     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
875    :param last_backup_status: Last backup operation status. Possible values:
876     Healthy, Unhealthy.
877    :type last_backup_status: str
878    :param last_backup_time: Timestamp of the last backup operation on this
879     backup item.
880    :type last_backup_time: datetime
881    :param kpis_healths: Health details of different KPIs
882    :type kpis_healths: dict[str,
883     ~azure.mgmt.recoveryservicesbackup.models.KPIResourceHealthDetails]
884    :param extended_info: Additional information with this backup item.
885    :type extended_info:
886     ~azure.mgmt.recoveryservicesbackup.models.AzureFileshareProtectedItemExtendedInfo
887    :param health_status: backups running status for this backup item.
888     Possible values include: 'Passed', 'ActionRequired', 'ActionSuggested',
889     'Invalid'
890    :type health_status: str or
891     ~azure.mgmt.recoveryservicesbackup.models.HealthStatus
892    """
893
894    _validation = {
895        'protected_item_type': {'required': True},
896    }
897
898    _attribute_map = {
899        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
900        'workload_type': {'key': 'workloadType', 'type': 'str'},
901        'container_name': {'key': 'containerName', 'type': 'str'},
902        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
903        'policy_id': {'key': 'policyId', 'type': 'str'},
904        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
905        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
906        'create_mode': {'key': 'createMode', 'type': 'str'},
907        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
908        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
909        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
910        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
911        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
912        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
913        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
914        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
915        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
916        'protection_state': {'key': 'protectionState', 'type': 'str'},
917        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
918        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
919        'kpis_healths': {'key': 'kpisHealths', 'type': '{KPIResourceHealthDetails}'},
920        'extended_info': {'key': 'extendedInfo', 'type': 'AzureFileshareProtectedItemExtendedInfo'},
921        'health_status': {'key': 'healthStatus', 'type': 'str'},
922    }
923
924    def __init__(self, **kwargs):
925        super(AzureFileshareProtectedItem, self).__init__(**kwargs)
926        self.friendly_name = kwargs.get('friendly_name', None)
927        self.protection_status = kwargs.get('protection_status', None)
928        self.protection_state = kwargs.get('protection_state', None)
929        self.last_backup_status = kwargs.get('last_backup_status', None)
930        self.last_backup_time = kwargs.get('last_backup_time', None)
931        self.kpis_healths = kwargs.get('kpis_healths', None)
932        self.extended_info = kwargs.get('extended_info', None)
933        self.health_status = kwargs.get('health_status', None)
934        self.protected_item_type = 'AzureFileShareProtectedItem'
935
936
937class AzureFileshareProtectedItemExtendedInfo(Model):
938    """Additional information about Azure File Share backup item.
939
940    Variables are only populated by the server, and will be ignored when
941    sending a request.
942
943    :param oldest_recovery_point: The oldest backup copy available for this
944     item in the service.
945    :type oldest_recovery_point: datetime
946    :param recovery_point_count: Number of available backup copies associated
947     with this backup item.
948    :type recovery_point_count: int
949    :param policy_state: Indicates consistency of policy object and policy
950     applied to this backup item.
951    :type policy_state: str
952    :ivar resource_state: Indicates the state of this resource. Possible
953     values are from enum ResourceState {Invalid, Active, SoftDeleted, Deleted}
954    :vartype resource_state: str
955    :ivar resource_state_sync_time: The resource state sync time for this
956     backup item.
957    :vartype resource_state_sync_time: datetime
958    """
959
960    _validation = {
961        'resource_state': {'readonly': True},
962        'resource_state_sync_time': {'readonly': True},
963    }
964
965    _attribute_map = {
966        'oldest_recovery_point': {'key': 'oldestRecoveryPoint', 'type': 'iso-8601'},
967        'recovery_point_count': {'key': 'recoveryPointCount', 'type': 'int'},
968        'policy_state': {'key': 'policyState', 'type': 'str'},
969        'resource_state': {'key': 'resourceState', 'type': 'str'},
970        'resource_state_sync_time': {'key': 'resourceStateSyncTime', 'type': 'iso-8601'},
971    }
972
973    def __init__(self, **kwargs):
974        super(AzureFileshareProtectedItemExtendedInfo, self).__init__(**kwargs)
975        self.oldest_recovery_point = kwargs.get('oldest_recovery_point', None)
976        self.recovery_point_count = kwargs.get('recovery_point_count', None)
977        self.policy_state = kwargs.get('policy_state', None)
978        self.resource_state = None
979        self.resource_state_sync_time = None
980
981
982class ProtectionPolicy(Model):
983    """Base class for backup policy. Workload-specific backup policies are derived
984    from this class.
985
986    You probably want to use the sub-classes and not this class directly. Known
987    sub-classes are: AzureVmWorkloadProtectionPolicy,
988    AzureFileShareProtectionPolicy, AzureIaaSVMProtectionPolicy,
989    AzureSqlProtectionPolicy, GenericProtectionPolicy, MabProtectionPolicy
990
991    All required parameters must be populated in order to send to Azure.
992
993    :param protected_items_count: Number of items associated with this policy.
994    :type protected_items_count: int
995    :param resource_guard_operation_requests: ResourceGuard Operation Requests
996    :type resource_guard_operation_requests: list[str]
997    :param backup_management_type: Required. Constant filled by server.
998    :type backup_management_type: str
999    """
1000
1001    _validation = {
1002        'backup_management_type': {'required': True},
1003    }
1004
1005    _attribute_map = {
1006        'protected_items_count': {'key': 'protectedItemsCount', 'type': 'int'},
1007        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
1008        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1009    }
1010
1011    _subtype_map = {
1012        'backup_management_type': {'AzureWorkload': 'AzureVmWorkloadProtectionPolicy', 'AzureStorage': 'AzureFileShareProtectionPolicy', 'AzureIaasVM': 'AzureIaaSVMProtectionPolicy', 'AzureSql': 'AzureSqlProtectionPolicy', 'GenericProtectionPolicy': 'GenericProtectionPolicy', 'MAB': 'MabProtectionPolicy'}
1013    }
1014
1015    def __init__(self, **kwargs):
1016        super(ProtectionPolicy, self).__init__(**kwargs)
1017        self.protected_items_count = kwargs.get('protected_items_count', None)
1018        self.resource_guard_operation_requests = kwargs.get('resource_guard_operation_requests', None)
1019        self.backup_management_type = None
1020
1021
1022class AzureFileShareProtectionPolicy(ProtectionPolicy):
1023    """AzureStorage backup policy.
1024
1025    All required parameters must be populated in order to send to Azure.
1026
1027    :param protected_items_count: Number of items associated with this policy.
1028    :type protected_items_count: int
1029    :param resource_guard_operation_requests: ResourceGuard Operation Requests
1030    :type resource_guard_operation_requests: list[str]
1031    :param backup_management_type: Required. Constant filled by server.
1032    :type backup_management_type: str
1033    :param work_load_type: Type of workload for the backup management.
1034     Possible values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb',
1035     'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
1036     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
1037     'SAPAseDatabase'
1038    :type work_load_type: str or
1039     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
1040    :param schedule_policy: Backup schedule specified as part of backup
1041     policy.
1042    :type schedule_policy:
1043     ~azure.mgmt.recoveryservicesbackup.models.SchedulePolicy
1044    :param retention_policy: Retention policy with the details on backup copy
1045     retention ranges.
1046    :type retention_policy:
1047     ~azure.mgmt.recoveryservicesbackup.models.RetentionPolicy
1048    :param time_zone: TimeZone optional input as string. For example: TimeZone
1049     = "Pacific Standard Time".
1050    :type time_zone: str
1051    """
1052
1053    _validation = {
1054        'backup_management_type': {'required': True},
1055    }
1056
1057    _attribute_map = {
1058        'protected_items_count': {'key': 'protectedItemsCount', 'type': 'int'},
1059        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
1060        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1061        'work_load_type': {'key': 'workLoadType', 'type': 'str'},
1062        'schedule_policy': {'key': 'schedulePolicy', 'type': 'SchedulePolicy'},
1063        'retention_policy': {'key': 'retentionPolicy', 'type': 'RetentionPolicy'},
1064        'time_zone': {'key': 'timeZone', 'type': 'str'},
1065    }
1066
1067    def __init__(self, **kwargs):
1068        super(AzureFileShareProtectionPolicy, self).__init__(**kwargs)
1069        self.work_load_type = kwargs.get('work_load_type', None)
1070        self.schedule_policy = kwargs.get('schedule_policy', None)
1071        self.retention_policy = kwargs.get('retention_policy', None)
1072        self.time_zone = kwargs.get('time_zone', None)
1073        self.backup_management_type = 'AzureStorage'
1074
1075
1076class ILRRequest(Model):
1077    """Parameters to Provision ILR API.
1078
1079    You probably want to use the sub-classes and not this class directly. Known
1080    sub-classes are: AzureFileShareProvisionILRRequest,
1081    IaasVMILRRegistrationRequest
1082
1083    All required parameters must be populated in order to send to Azure.
1084
1085    :param object_type: Required. Constant filled by server.
1086    :type object_type: str
1087    """
1088
1089    _validation = {
1090        'object_type': {'required': True},
1091    }
1092
1093    _attribute_map = {
1094        'object_type': {'key': 'objectType', 'type': 'str'},
1095    }
1096
1097    _subtype_map = {
1098        'object_type': {'AzureFileShareProvisionILRRequest': 'AzureFileShareProvisionILRRequest', 'IaasVMILRRegistrationRequest': 'IaasVMILRRegistrationRequest'}
1099    }
1100
1101    def __init__(self, **kwargs):
1102        super(ILRRequest, self).__init__(**kwargs)
1103        self.object_type = None
1104
1105
1106class AzureFileShareProvisionILRRequest(ILRRequest):
1107    """Update snapshot Uri with the correct friendly Name of the source Azure file
1108    share.
1109
1110    All required parameters must be populated in order to send to Azure.
1111
1112    :param object_type: Required. Constant filled by server.
1113    :type object_type: str
1114    :param recovery_point_id: Recovery point ID.
1115    :type recovery_point_id: str
1116    :param source_resource_id: Source Storage account ARM Id
1117    :type source_resource_id: str
1118    """
1119
1120    _validation = {
1121        'object_type': {'required': True},
1122    }
1123
1124    _attribute_map = {
1125        'object_type': {'key': 'objectType', 'type': 'str'},
1126        'recovery_point_id': {'key': 'recoveryPointId', 'type': 'str'},
1127        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
1128    }
1129
1130    def __init__(self, **kwargs):
1131        super(AzureFileShareProvisionILRRequest, self).__init__(**kwargs)
1132        self.recovery_point_id = kwargs.get('recovery_point_id', None)
1133        self.source_resource_id = kwargs.get('source_resource_id', None)
1134        self.object_type = 'AzureFileShareProvisionILRRequest'
1135
1136
1137class RecoveryPoint(Model):
1138    """Base class for backup copies. Workload-specific backup copies are derived
1139    from this class.
1140
1141    You probably want to use the sub-classes and not this class directly. Known
1142    sub-classes are: AzureFileShareRecoveryPoint, AzureWorkloadRecoveryPoint,
1143    GenericRecoveryPoint, IaasVMRecoveryPoint
1144
1145    All required parameters must be populated in order to send to Azure.
1146
1147    :param object_type: Required. Constant filled by server.
1148    :type object_type: str
1149    """
1150
1151    _validation = {
1152        'object_type': {'required': True},
1153    }
1154
1155    _attribute_map = {
1156        'object_type': {'key': 'objectType', 'type': 'str'},
1157    }
1158
1159    _subtype_map = {
1160        'object_type': {'AzureFileShareRecoveryPoint': 'AzureFileShareRecoveryPoint', 'AzureWorkloadRecoveryPoint': 'AzureWorkloadRecoveryPoint', 'GenericRecoveryPoint': 'GenericRecoveryPoint', 'IaasVMRecoveryPoint': 'IaasVMRecoveryPoint'}
1161    }
1162
1163    def __init__(self, **kwargs):
1164        super(RecoveryPoint, self).__init__(**kwargs)
1165        self.object_type = None
1166
1167
1168class AzureFileShareRecoveryPoint(RecoveryPoint):
1169    """Azure File Share workload specific backup copy.
1170
1171    Variables are only populated by the server, and will be ignored when
1172    sending a request.
1173
1174    All required parameters must be populated in order to send to Azure.
1175
1176    :param object_type: Required. Constant filled by server.
1177    :type object_type: str
1178    :ivar recovery_point_type: Type of the backup copy. Specifies whether it
1179     is a crash consistent backup or app consistent.
1180    :vartype recovery_point_type: str
1181    :ivar recovery_point_time: Time at which this backup copy was created.
1182    :vartype recovery_point_time: datetime
1183    :ivar file_share_snapshot_uri: Contains Url to the snapshot of fileshare,
1184     if applicable
1185    :vartype file_share_snapshot_uri: str
1186    :ivar recovery_point_size_in_gb: Contains recovery point size
1187    :vartype recovery_point_size_in_gb: int
1188    """
1189
1190    _validation = {
1191        'object_type': {'required': True},
1192        'recovery_point_type': {'readonly': True},
1193        'recovery_point_time': {'readonly': True},
1194        'file_share_snapshot_uri': {'readonly': True},
1195        'recovery_point_size_in_gb': {'readonly': True},
1196    }
1197
1198    _attribute_map = {
1199        'object_type': {'key': 'objectType', 'type': 'str'},
1200        'recovery_point_type': {'key': 'recoveryPointType', 'type': 'str'},
1201        'recovery_point_time': {'key': 'recoveryPointTime', 'type': 'iso-8601'},
1202        'file_share_snapshot_uri': {'key': 'fileShareSnapshotUri', 'type': 'str'},
1203        'recovery_point_size_in_gb': {'key': 'recoveryPointSizeInGB', 'type': 'int'},
1204    }
1205
1206    def __init__(self, **kwargs):
1207        super(AzureFileShareRecoveryPoint, self).__init__(**kwargs)
1208        self.recovery_point_type = None
1209        self.recovery_point_time = None
1210        self.file_share_snapshot_uri = None
1211        self.recovery_point_size_in_gb = None
1212        self.object_type = 'AzureFileShareRecoveryPoint'
1213
1214
1215class RestoreRequest(Model):
1216    """Base class for restore request. Workload-specific restore requests are
1217    derived from this class.
1218
1219    You probably want to use the sub-classes and not this class directly. Known
1220    sub-classes are: AzureFileShareRestoreRequest, AzureWorkloadRestoreRequest,
1221    IaasVMRestoreRequest
1222
1223    All required parameters must be populated in order to send to Azure.
1224
1225    :param object_type: Required. Constant filled by server.
1226    :type object_type: str
1227    """
1228
1229    _validation = {
1230        'object_type': {'required': True},
1231    }
1232
1233    _attribute_map = {
1234        'object_type': {'key': 'objectType', 'type': 'str'},
1235    }
1236
1237    _subtype_map = {
1238        'object_type': {'AzureFileShareRestoreRequest': 'AzureFileShareRestoreRequest', 'AzureWorkloadRestoreRequest': 'AzureWorkloadRestoreRequest', 'IaasVMRestoreRequest': 'IaasVMRestoreRequest'}
1239    }
1240
1241    def __init__(self, **kwargs):
1242        super(RestoreRequest, self).__init__(**kwargs)
1243        self.object_type = None
1244
1245
1246class AzureFileShareRestoreRequest(RestoreRequest):
1247    """AzureFileShare Restore Request.
1248
1249    All required parameters must be populated in order to send to Azure.
1250
1251    :param object_type: Required. Constant filled by server.
1252    :type object_type: str
1253    :param recovery_type: Type of this recovery. Possible values include:
1254     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
1255     'Offline'
1256    :type recovery_type: str or
1257     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
1258    :param source_resource_id: Source storage account ARM Id
1259    :type source_resource_id: str
1260    :param copy_options: Options to resolve copy conflicts. Possible values
1261     include: 'Invalid', 'CreateCopy', 'Skip', 'Overwrite', 'FailOnConflict'
1262    :type copy_options: str or
1263     ~azure.mgmt.recoveryservicesbackup.models.CopyOptions
1264    :param restore_request_type: Restore Type (FullShareRestore or
1265     ItemLevelRestore). Possible values include: 'Invalid', 'FullShareRestore',
1266     'ItemLevelRestore'
1267    :type restore_request_type: str or
1268     ~azure.mgmt.recoveryservicesbackup.models.RestoreRequestType
1269    :param restore_file_specs: List of Source Files/Folders(which need to
1270     recover) and TargetFolderPath details
1271    :type restore_file_specs:
1272     list[~azure.mgmt.recoveryservicesbackup.models.RestoreFileSpecs]
1273    :param target_details: Target File Share Details
1274    :type target_details:
1275     ~azure.mgmt.recoveryservicesbackup.models.TargetAFSRestoreInfo
1276    """
1277
1278    _validation = {
1279        'object_type': {'required': True},
1280    }
1281
1282    _attribute_map = {
1283        'object_type': {'key': 'objectType', 'type': 'str'},
1284        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
1285        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
1286        'copy_options': {'key': 'copyOptions', 'type': 'str'},
1287        'restore_request_type': {'key': 'restoreRequestType', 'type': 'str'},
1288        'restore_file_specs': {'key': 'restoreFileSpecs', 'type': '[RestoreFileSpecs]'},
1289        'target_details': {'key': 'targetDetails', 'type': 'TargetAFSRestoreInfo'},
1290    }
1291
1292    def __init__(self, **kwargs):
1293        super(AzureFileShareRestoreRequest, self).__init__(**kwargs)
1294        self.recovery_type = kwargs.get('recovery_type', None)
1295        self.source_resource_id = kwargs.get('source_resource_id', None)
1296        self.copy_options = kwargs.get('copy_options', None)
1297        self.restore_request_type = kwargs.get('restore_request_type', None)
1298        self.restore_file_specs = kwargs.get('restore_file_specs', None)
1299        self.target_details = kwargs.get('target_details', None)
1300        self.object_type = 'AzureFileShareRestoreRequest'
1301
1302
1303class IaaSVMContainer(ProtectionContainer):
1304    """IaaS VM workload-specific container.
1305
1306    You probably want to use the sub-classes and not this class directly. Known
1307    sub-classes are: AzureIaaSClassicComputeVMContainer,
1308    AzureIaaSComputeVMContainer
1309
1310    All required parameters must be populated in order to send to Azure.
1311
1312    :param friendly_name: Friendly name of the container.
1313    :type friendly_name: str
1314    :param backup_management_type: Type of backup management for the
1315     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
1316     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
1317     'DefaultBackup'
1318    :type backup_management_type: str or
1319     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
1320    :param registration_status: Status of registration of the container with
1321     the Recovery Services Vault.
1322    :type registration_status: str
1323    :param health_status: Status of health of the container.
1324    :type health_status: str
1325    :param container_type: Required. Constant filled by server.
1326    :type container_type: str
1327    :param virtual_machine_id: Fully qualified ARM url of the virtual machine
1328     represented by this Azure IaaS VM container.
1329    :type virtual_machine_id: str
1330    :param virtual_machine_version: Specifies whether the container represents
1331     a Classic or an Azure Resource Manager VM.
1332    :type virtual_machine_version: str
1333    :param resource_group: Resource group name of Recovery Services Vault.
1334    :type resource_group: str
1335    """
1336
1337    _validation = {
1338        'container_type': {'required': True},
1339    }
1340
1341    _attribute_map = {
1342        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1343        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1344        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
1345        'health_status': {'key': 'healthStatus', 'type': 'str'},
1346        'container_type': {'key': 'containerType', 'type': 'str'},
1347        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1348        'virtual_machine_version': {'key': 'virtualMachineVersion', 'type': 'str'},
1349        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
1350    }
1351
1352    _subtype_map = {
1353        'container_type': {'Microsoft.ClassicCompute/virtualMachines': 'AzureIaaSClassicComputeVMContainer', 'Microsoft.Compute/virtualMachines': 'AzureIaaSComputeVMContainer'}
1354    }
1355
1356    def __init__(self, **kwargs):
1357        super(IaaSVMContainer, self).__init__(**kwargs)
1358        self.virtual_machine_id = kwargs.get('virtual_machine_id', None)
1359        self.virtual_machine_version = kwargs.get('virtual_machine_version', None)
1360        self.resource_group = kwargs.get('resource_group', None)
1361        self.container_type = 'IaaSVMContainer'
1362
1363
1364class AzureIaaSClassicComputeVMContainer(IaaSVMContainer):
1365    """IaaS VM workload-specific backup item representing a classic virtual
1366    machine.
1367
1368    All required parameters must be populated in order to send to Azure.
1369
1370    :param friendly_name: Friendly name of the container.
1371    :type friendly_name: str
1372    :param backup_management_type: Type of backup management for the
1373     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
1374     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
1375     'DefaultBackup'
1376    :type backup_management_type: str or
1377     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
1378    :param registration_status: Status of registration of the container with
1379     the Recovery Services Vault.
1380    :type registration_status: str
1381    :param health_status: Status of health of the container.
1382    :type health_status: str
1383    :param container_type: Required. Constant filled by server.
1384    :type container_type: str
1385    :param virtual_machine_id: Fully qualified ARM url of the virtual machine
1386     represented by this Azure IaaS VM container.
1387    :type virtual_machine_id: str
1388    :param virtual_machine_version: Specifies whether the container represents
1389     a Classic or an Azure Resource Manager VM.
1390    :type virtual_machine_version: str
1391    :param resource_group: Resource group name of Recovery Services Vault.
1392    :type resource_group: str
1393    """
1394
1395    _validation = {
1396        'container_type': {'required': True},
1397    }
1398
1399    _attribute_map = {
1400        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1401        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1402        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
1403        'health_status': {'key': 'healthStatus', 'type': 'str'},
1404        'container_type': {'key': 'containerType', 'type': 'str'},
1405        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1406        'virtual_machine_version': {'key': 'virtualMachineVersion', 'type': 'str'},
1407        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
1408    }
1409
1410    def __init__(self, **kwargs):
1411        super(AzureIaaSClassicComputeVMContainer, self).__init__(**kwargs)
1412        self.container_type = 'Microsoft.ClassicCompute/virtualMachines'
1413
1414
1415class IaaSVMProtectableItem(WorkloadProtectableItem):
1416    """IaaS VM workload-specific backup item.
1417
1418    You probably want to use the sub-classes and not this class directly. Known
1419    sub-classes are: AzureIaaSClassicComputeVMProtectableItem,
1420    AzureIaaSComputeVMProtectableItem
1421
1422    All required parameters must be populated in order to send to Azure.
1423
1424    :param backup_management_type: Type of backup management to backup an
1425     item.
1426    :type backup_management_type: str
1427    :param workload_type: Type of workload for the backup management
1428    :type workload_type: str
1429    :param friendly_name: Friendly name of the backup item.
1430    :type friendly_name: str
1431    :param protection_state: State of the back up item. Possible values
1432     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
1433     'ProtectionFailed'
1434    :type protection_state: str or
1435     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
1436    :param protectable_item_type: Required. Constant filled by server.
1437    :type protectable_item_type: str
1438    :param virtual_machine_id: Fully qualified ARM ID of the virtual machine.
1439    :type virtual_machine_id: str
1440    """
1441
1442    _validation = {
1443        'protectable_item_type': {'required': True},
1444    }
1445
1446    _attribute_map = {
1447        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1448        'workload_type': {'key': 'workloadType', 'type': 'str'},
1449        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1450        'protection_state': {'key': 'protectionState', 'type': 'str'},
1451        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
1452        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1453    }
1454
1455    _subtype_map = {
1456        'protectable_item_type': {'Microsoft.ClassicCompute/virtualMachines': 'AzureIaaSClassicComputeVMProtectableItem', 'Microsoft.Compute/virtualMachines': 'AzureIaaSComputeVMProtectableItem'}
1457    }
1458
1459    def __init__(self, **kwargs):
1460        super(IaaSVMProtectableItem, self).__init__(**kwargs)
1461        self.virtual_machine_id = kwargs.get('virtual_machine_id', None)
1462        self.protectable_item_type = 'IaaSVMProtectableItem'
1463
1464
1465class AzureIaaSClassicComputeVMProtectableItem(IaaSVMProtectableItem):
1466    """IaaS VM workload-specific backup item representing the Classic Compute VM.
1467
1468    All required parameters must be populated in order to send to Azure.
1469
1470    :param backup_management_type: Type of backup management to backup an
1471     item.
1472    :type backup_management_type: str
1473    :param workload_type: Type of workload for the backup management
1474    :type workload_type: str
1475    :param friendly_name: Friendly name of the backup item.
1476    :type friendly_name: str
1477    :param protection_state: State of the back up item. Possible values
1478     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
1479     'ProtectionFailed'
1480    :type protection_state: str or
1481     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
1482    :param protectable_item_type: Required. Constant filled by server.
1483    :type protectable_item_type: str
1484    :param virtual_machine_id: Fully qualified ARM ID of the virtual machine.
1485    :type virtual_machine_id: str
1486    """
1487
1488    _validation = {
1489        'protectable_item_type': {'required': True},
1490    }
1491
1492    _attribute_map = {
1493        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1494        'workload_type': {'key': 'workloadType', 'type': 'str'},
1495        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1496        'protection_state': {'key': 'protectionState', 'type': 'str'},
1497        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
1498        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1499    }
1500
1501    def __init__(self, **kwargs):
1502        super(AzureIaaSClassicComputeVMProtectableItem, self).__init__(**kwargs)
1503        self.protectable_item_type = 'Microsoft.ClassicCompute/virtualMachines'
1504
1505
1506class AzureIaaSVMProtectedItem(ProtectedItem):
1507    """IaaS VM workload-specific backup item.
1508
1509    You probably want to use the sub-classes and not this class directly. Known
1510    sub-classes are: AzureIaaSClassicComputeVMProtectedItem,
1511    AzureIaaSComputeVMProtectedItem
1512
1513    All required parameters must be populated in order to send to Azure.
1514
1515    :param backup_management_type: Type of backup management for the backed up
1516     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
1517     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
1518     'DefaultBackup'
1519    :type backup_management_type: str or
1520     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
1521    :param workload_type: Type of workload this item represents. Possible
1522     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
1523     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
1524     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
1525     'SAPAseDatabase'
1526    :type workload_type: str or
1527     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
1528    :param container_name: Unique name of container
1529    :type container_name: str
1530    :param source_resource_id: ARM ID of the resource to be backed up.
1531    :type source_resource_id: str
1532    :param policy_id: ID of the backup policy with which this item is backed
1533     up.
1534    :type policy_id: str
1535    :param last_recovery_point: Timestamp when the last (latest) backup copy
1536     was created for this backup item.
1537    :type last_recovery_point: datetime
1538    :param backup_set_name: Name of the backup set the backup item belongs to
1539    :type backup_set_name: str
1540    :param create_mode: Create mode to indicate recovery of existing soft
1541     deleted data source or creation of new data source. Possible values
1542     include: 'Invalid', 'Default', 'Recover'
1543    :type create_mode: str or
1544     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
1545    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
1546    :type deferred_delete_time_in_utc: datetime
1547    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
1548     is scheduled for deferred delete
1549    :type is_scheduled_for_deferred_delete: bool
1550    :param deferred_delete_time_remaining: Time remaining before the DS marked
1551     for deferred delete is permanently deleted
1552    :type deferred_delete_time_remaining: str
1553    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
1554     deferred deleted DS is to be purged soon
1555    :type is_deferred_delete_schedule_upcoming: bool
1556    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
1557     moved into Pause state
1558    :type is_rehydrate: bool
1559    :param resource_guard_operation_requests: ResourceGuardOperationRequests
1560     on which LAC check will be performed
1561    :type resource_guard_operation_requests: list[str]
1562    :param protected_item_type: Required. Constant filled by server.
1563    :type protected_item_type: str
1564    :param friendly_name: Friendly name of the VM represented by this backup
1565     item.
1566    :type friendly_name: str
1567    :param virtual_machine_id: Fully qualified ARM ID of the virtual machine
1568     represented by this item.
1569    :type virtual_machine_id: str
1570    :param protection_status: Backup status of this backup item.
1571    :type protection_status: str
1572    :param protection_state: Backup state of this backup item. Possible values
1573     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
1574     'ProtectionStopped', 'ProtectionPaused'
1575    :type protection_state: str or
1576     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
1577    :param health_status: Health status of protected item. Possible values
1578     include: 'Passed', 'ActionRequired', 'ActionSuggested', 'Invalid'
1579    :type health_status: str or
1580     ~azure.mgmt.recoveryservicesbackup.models.HealthStatus
1581    :param health_details: Health details on this backup item.
1582    :type health_details:
1583     list[~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMHealthDetails]
1584    :param kpis_healths: Health details of different KPIs
1585    :type kpis_healths: dict[str,
1586     ~azure.mgmt.recoveryservicesbackup.models.KPIResourceHealthDetails]
1587    :param last_backup_status: Last backup operation status.
1588    :type last_backup_status: str
1589    :param last_backup_time: Timestamp of the last backup operation on this
1590     backup item.
1591    :type last_backup_time: datetime
1592    :param protected_item_data_id: Data ID of the protected item.
1593    :type protected_item_data_id: str
1594    :param extended_info: Additional information for this backup item.
1595    :type extended_info:
1596     ~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMProtectedItemExtendedInfo
1597    :param extended_properties:
1598    :type extended_properties:
1599     ~azure.mgmt.recoveryservicesbackup.models.ExtendedProperties
1600    """
1601
1602    _validation = {
1603        'protected_item_type': {'required': True},
1604    }
1605
1606    _attribute_map = {
1607        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1608        'workload_type': {'key': 'workloadType', 'type': 'str'},
1609        'container_name': {'key': 'containerName', 'type': 'str'},
1610        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
1611        'policy_id': {'key': 'policyId', 'type': 'str'},
1612        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
1613        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
1614        'create_mode': {'key': 'createMode', 'type': 'str'},
1615        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
1616        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
1617        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
1618        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
1619        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
1620        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
1621        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
1622        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1623        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1624        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
1625        'protection_state': {'key': 'protectionState', 'type': 'str'},
1626        'health_status': {'key': 'healthStatus', 'type': 'str'},
1627        'health_details': {'key': 'healthDetails', 'type': '[AzureIaaSVMHealthDetails]'},
1628        'kpis_healths': {'key': 'kpisHealths', 'type': '{KPIResourceHealthDetails}'},
1629        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
1630        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
1631        'protected_item_data_id': {'key': 'protectedItemDataId', 'type': 'str'},
1632        'extended_info': {'key': 'extendedInfo', 'type': 'AzureIaaSVMProtectedItemExtendedInfo'},
1633        'extended_properties': {'key': 'extendedProperties', 'type': 'ExtendedProperties'},
1634    }
1635
1636    _subtype_map = {
1637        'protected_item_type': {'Microsoft.ClassicCompute/virtualMachines': 'AzureIaaSClassicComputeVMProtectedItem', 'Microsoft.Compute/virtualMachines': 'AzureIaaSComputeVMProtectedItem'}
1638    }
1639
1640    def __init__(self, **kwargs):
1641        super(AzureIaaSVMProtectedItem, self).__init__(**kwargs)
1642        self.friendly_name = kwargs.get('friendly_name', None)
1643        self.virtual_machine_id = kwargs.get('virtual_machine_id', None)
1644        self.protection_status = kwargs.get('protection_status', None)
1645        self.protection_state = kwargs.get('protection_state', None)
1646        self.health_status = kwargs.get('health_status', None)
1647        self.health_details = kwargs.get('health_details', None)
1648        self.kpis_healths = kwargs.get('kpis_healths', None)
1649        self.last_backup_status = kwargs.get('last_backup_status', None)
1650        self.last_backup_time = kwargs.get('last_backup_time', None)
1651        self.protected_item_data_id = kwargs.get('protected_item_data_id', None)
1652        self.extended_info = kwargs.get('extended_info', None)
1653        self.extended_properties = kwargs.get('extended_properties', None)
1654        self.protected_item_type = 'AzureIaaSVMProtectedItem'
1655
1656
1657class AzureIaaSClassicComputeVMProtectedItem(AzureIaaSVMProtectedItem):
1658    """IaaS VM workload-specific backup item representing the Classic Compute VM.
1659
1660    All required parameters must be populated in order to send to Azure.
1661
1662    :param backup_management_type: Type of backup management for the backed up
1663     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
1664     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
1665     'DefaultBackup'
1666    :type backup_management_type: str or
1667     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
1668    :param workload_type: Type of workload this item represents. Possible
1669     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
1670     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
1671     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
1672     'SAPAseDatabase'
1673    :type workload_type: str or
1674     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
1675    :param container_name: Unique name of container
1676    :type container_name: str
1677    :param source_resource_id: ARM ID of the resource to be backed up.
1678    :type source_resource_id: str
1679    :param policy_id: ID of the backup policy with which this item is backed
1680     up.
1681    :type policy_id: str
1682    :param last_recovery_point: Timestamp when the last (latest) backup copy
1683     was created for this backup item.
1684    :type last_recovery_point: datetime
1685    :param backup_set_name: Name of the backup set the backup item belongs to
1686    :type backup_set_name: str
1687    :param create_mode: Create mode to indicate recovery of existing soft
1688     deleted data source or creation of new data source. Possible values
1689     include: 'Invalid', 'Default', 'Recover'
1690    :type create_mode: str or
1691     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
1692    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
1693    :type deferred_delete_time_in_utc: datetime
1694    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
1695     is scheduled for deferred delete
1696    :type is_scheduled_for_deferred_delete: bool
1697    :param deferred_delete_time_remaining: Time remaining before the DS marked
1698     for deferred delete is permanently deleted
1699    :type deferred_delete_time_remaining: str
1700    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
1701     deferred deleted DS is to be purged soon
1702    :type is_deferred_delete_schedule_upcoming: bool
1703    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
1704     moved into Pause state
1705    :type is_rehydrate: bool
1706    :param resource_guard_operation_requests: ResourceGuardOperationRequests
1707     on which LAC check will be performed
1708    :type resource_guard_operation_requests: list[str]
1709    :param protected_item_type: Required. Constant filled by server.
1710    :type protected_item_type: str
1711    :param friendly_name: Friendly name of the VM represented by this backup
1712     item.
1713    :type friendly_name: str
1714    :param virtual_machine_id: Fully qualified ARM ID of the virtual machine
1715     represented by this item.
1716    :type virtual_machine_id: str
1717    :param protection_status: Backup status of this backup item.
1718    :type protection_status: str
1719    :param protection_state: Backup state of this backup item. Possible values
1720     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
1721     'ProtectionStopped', 'ProtectionPaused'
1722    :type protection_state: str or
1723     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
1724    :param health_status: Health status of protected item. Possible values
1725     include: 'Passed', 'ActionRequired', 'ActionSuggested', 'Invalid'
1726    :type health_status: str or
1727     ~azure.mgmt.recoveryservicesbackup.models.HealthStatus
1728    :param health_details: Health details on this backup item.
1729    :type health_details:
1730     list[~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMHealthDetails]
1731    :param kpis_healths: Health details of different KPIs
1732    :type kpis_healths: dict[str,
1733     ~azure.mgmt.recoveryservicesbackup.models.KPIResourceHealthDetails]
1734    :param last_backup_status: Last backup operation status.
1735    :type last_backup_status: str
1736    :param last_backup_time: Timestamp of the last backup operation on this
1737     backup item.
1738    :type last_backup_time: datetime
1739    :param protected_item_data_id: Data ID of the protected item.
1740    :type protected_item_data_id: str
1741    :param extended_info: Additional information for this backup item.
1742    :type extended_info:
1743     ~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMProtectedItemExtendedInfo
1744    :param extended_properties:
1745    :type extended_properties:
1746     ~azure.mgmt.recoveryservicesbackup.models.ExtendedProperties
1747    """
1748
1749    _validation = {
1750        'protected_item_type': {'required': True},
1751    }
1752
1753    _attribute_map = {
1754        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1755        'workload_type': {'key': 'workloadType', 'type': 'str'},
1756        'container_name': {'key': 'containerName', 'type': 'str'},
1757        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
1758        'policy_id': {'key': 'policyId', 'type': 'str'},
1759        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
1760        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
1761        'create_mode': {'key': 'createMode', 'type': 'str'},
1762        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
1763        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
1764        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
1765        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
1766        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
1767        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
1768        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
1769        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1770        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1771        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
1772        'protection_state': {'key': 'protectionState', 'type': 'str'},
1773        'health_status': {'key': 'healthStatus', 'type': 'str'},
1774        'health_details': {'key': 'healthDetails', 'type': '[AzureIaaSVMHealthDetails]'},
1775        'kpis_healths': {'key': 'kpisHealths', 'type': '{KPIResourceHealthDetails}'},
1776        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
1777        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
1778        'protected_item_data_id': {'key': 'protectedItemDataId', 'type': 'str'},
1779        'extended_info': {'key': 'extendedInfo', 'type': 'AzureIaaSVMProtectedItemExtendedInfo'},
1780        'extended_properties': {'key': 'extendedProperties', 'type': 'ExtendedProperties'},
1781    }
1782
1783    def __init__(self, **kwargs):
1784        super(AzureIaaSClassicComputeVMProtectedItem, self).__init__(**kwargs)
1785        self.protected_item_type = 'Microsoft.ClassicCompute/virtualMachines'
1786
1787
1788class AzureIaaSComputeVMContainer(IaaSVMContainer):
1789    """IaaS VM workload-specific backup item representing an Azure Resource
1790    Manager virtual machine.
1791
1792    All required parameters must be populated in order to send to Azure.
1793
1794    :param friendly_name: Friendly name of the container.
1795    :type friendly_name: str
1796    :param backup_management_type: Type of backup management for the
1797     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
1798     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
1799     'DefaultBackup'
1800    :type backup_management_type: str or
1801     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
1802    :param registration_status: Status of registration of the container with
1803     the Recovery Services Vault.
1804    :type registration_status: str
1805    :param health_status: Status of health of the container.
1806    :type health_status: str
1807    :param container_type: Required. Constant filled by server.
1808    :type container_type: str
1809    :param virtual_machine_id: Fully qualified ARM url of the virtual machine
1810     represented by this Azure IaaS VM container.
1811    :type virtual_machine_id: str
1812    :param virtual_machine_version: Specifies whether the container represents
1813     a Classic or an Azure Resource Manager VM.
1814    :type virtual_machine_version: str
1815    :param resource_group: Resource group name of Recovery Services Vault.
1816    :type resource_group: str
1817    """
1818
1819    _validation = {
1820        'container_type': {'required': True},
1821    }
1822
1823    _attribute_map = {
1824        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1825        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1826        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
1827        'health_status': {'key': 'healthStatus', 'type': 'str'},
1828        'container_type': {'key': 'containerType', 'type': 'str'},
1829        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1830        'virtual_machine_version': {'key': 'virtualMachineVersion', 'type': 'str'},
1831        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
1832    }
1833
1834    def __init__(self, **kwargs):
1835        super(AzureIaaSComputeVMContainer, self).__init__(**kwargs)
1836        self.container_type = 'Microsoft.Compute/virtualMachines'
1837
1838
1839class AzureIaaSComputeVMProtectableItem(IaaSVMProtectableItem):
1840    """IaaS VM workload-specific backup item representing the Azure Resource
1841    Manager VM.
1842
1843    All required parameters must be populated in order to send to Azure.
1844
1845    :param backup_management_type: Type of backup management to backup an
1846     item.
1847    :type backup_management_type: str
1848    :param workload_type: Type of workload for the backup management
1849    :type workload_type: str
1850    :param friendly_name: Friendly name of the backup item.
1851    :type friendly_name: str
1852    :param protection_state: State of the back up item. Possible values
1853     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
1854     'ProtectionFailed'
1855    :type protection_state: str or
1856     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
1857    :param protectable_item_type: Required. Constant filled by server.
1858    :type protectable_item_type: str
1859    :param virtual_machine_id: Fully qualified ARM ID of the virtual machine.
1860    :type virtual_machine_id: str
1861    """
1862
1863    _validation = {
1864        'protectable_item_type': {'required': True},
1865    }
1866
1867    _attribute_map = {
1868        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1869        'workload_type': {'key': 'workloadType', 'type': 'str'},
1870        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1871        'protection_state': {'key': 'protectionState', 'type': 'str'},
1872        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
1873        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1874    }
1875
1876    def __init__(self, **kwargs):
1877        super(AzureIaaSComputeVMProtectableItem, self).__init__(**kwargs)
1878        self.protectable_item_type = 'Microsoft.Compute/virtualMachines'
1879
1880
1881class AzureIaaSComputeVMProtectedItem(AzureIaaSVMProtectedItem):
1882    """IaaS VM workload-specific backup item representing the Azure Resource
1883    Manager VM.
1884
1885    All required parameters must be populated in order to send to Azure.
1886
1887    :param backup_management_type: Type of backup management for the backed up
1888     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
1889     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
1890     'DefaultBackup'
1891    :type backup_management_type: str or
1892     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
1893    :param workload_type: Type of workload this item represents. Possible
1894     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
1895     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
1896     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
1897     'SAPAseDatabase'
1898    :type workload_type: str or
1899     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
1900    :param container_name: Unique name of container
1901    :type container_name: str
1902    :param source_resource_id: ARM ID of the resource to be backed up.
1903    :type source_resource_id: str
1904    :param policy_id: ID of the backup policy with which this item is backed
1905     up.
1906    :type policy_id: str
1907    :param last_recovery_point: Timestamp when the last (latest) backup copy
1908     was created for this backup item.
1909    :type last_recovery_point: datetime
1910    :param backup_set_name: Name of the backup set the backup item belongs to
1911    :type backup_set_name: str
1912    :param create_mode: Create mode to indicate recovery of existing soft
1913     deleted data source or creation of new data source. Possible values
1914     include: 'Invalid', 'Default', 'Recover'
1915    :type create_mode: str or
1916     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
1917    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
1918    :type deferred_delete_time_in_utc: datetime
1919    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
1920     is scheduled for deferred delete
1921    :type is_scheduled_for_deferred_delete: bool
1922    :param deferred_delete_time_remaining: Time remaining before the DS marked
1923     for deferred delete is permanently deleted
1924    :type deferred_delete_time_remaining: str
1925    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
1926     deferred deleted DS is to be purged soon
1927    :type is_deferred_delete_schedule_upcoming: bool
1928    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
1929     moved into Pause state
1930    :type is_rehydrate: bool
1931    :param resource_guard_operation_requests: ResourceGuardOperationRequests
1932     on which LAC check will be performed
1933    :type resource_guard_operation_requests: list[str]
1934    :param protected_item_type: Required. Constant filled by server.
1935    :type protected_item_type: str
1936    :param friendly_name: Friendly name of the VM represented by this backup
1937     item.
1938    :type friendly_name: str
1939    :param virtual_machine_id: Fully qualified ARM ID of the virtual machine
1940     represented by this item.
1941    :type virtual_machine_id: str
1942    :param protection_status: Backup status of this backup item.
1943    :type protection_status: str
1944    :param protection_state: Backup state of this backup item. Possible values
1945     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
1946     'ProtectionStopped', 'ProtectionPaused'
1947    :type protection_state: str or
1948     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
1949    :param health_status: Health status of protected item. Possible values
1950     include: 'Passed', 'ActionRequired', 'ActionSuggested', 'Invalid'
1951    :type health_status: str or
1952     ~azure.mgmt.recoveryservicesbackup.models.HealthStatus
1953    :param health_details: Health details on this backup item.
1954    :type health_details:
1955     list[~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMHealthDetails]
1956    :param kpis_healths: Health details of different KPIs
1957    :type kpis_healths: dict[str,
1958     ~azure.mgmt.recoveryservicesbackup.models.KPIResourceHealthDetails]
1959    :param last_backup_status: Last backup operation status.
1960    :type last_backup_status: str
1961    :param last_backup_time: Timestamp of the last backup operation on this
1962     backup item.
1963    :type last_backup_time: datetime
1964    :param protected_item_data_id: Data ID of the protected item.
1965    :type protected_item_data_id: str
1966    :param extended_info: Additional information for this backup item.
1967    :type extended_info:
1968     ~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMProtectedItemExtendedInfo
1969    :param extended_properties:
1970    :type extended_properties:
1971     ~azure.mgmt.recoveryservicesbackup.models.ExtendedProperties
1972    """
1973
1974    _validation = {
1975        'protected_item_type': {'required': True},
1976    }
1977
1978    _attribute_map = {
1979        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
1980        'workload_type': {'key': 'workloadType', 'type': 'str'},
1981        'container_name': {'key': 'containerName', 'type': 'str'},
1982        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
1983        'policy_id': {'key': 'policyId', 'type': 'str'},
1984        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
1985        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
1986        'create_mode': {'key': 'createMode', 'type': 'str'},
1987        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
1988        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
1989        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
1990        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
1991        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
1992        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
1993        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
1994        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
1995        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
1996        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
1997        'protection_state': {'key': 'protectionState', 'type': 'str'},
1998        'health_status': {'key': 'healthStatus', 'type': 'str'},
1999        'health_details': {'key': 'healthDetails', 'type': '[AzureIaaSVMHealthDetails]'},
2000        'kpis_healths': {'key': 'kpisHealths', 'type': '{KPIResourceHealthDetails}'},
2001        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
2002        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
2003        'protected_item_data_id': {'key': 'protectedItemDataId', 'type': 'str'},
2004        'extended_info': {'key': 'extendedInfo', 'type': 'AzureIaaSVMProtectedItemExtendedInfo'},
2005        'extended_properties': {'key': 'extendedProperties', 'type': 'ExtendedProperties'},
2006    }
2007
2008    def __init__(self, **kwargs):
2009        super(AzureIaaSComputeVMProtectedItem, self).__init__(**kwargs)
2010        self.protected_item_type = 'Microsoft.Compute/virtualMachines'
2011
2012
2013class AzureIaaSVMErrorInfo(Model):
2014    """Azure IaaS VM workload-specific error information.
2015
2016    Variables are only populated by the server, and will be ignored when
2017    sending a request.
2018
2019    :ivar error_code: Error code.
2020    :vartype error_code: int
2021    :ivar error_title: Title: Typically, the entity that the error pertains
2022     to.
2023    :vartype error_title: str
2024    :ivar error_string: Localized error string.
2025    :vartype error_string: str
2026    :ivar recommendations: List of localized recommendations for above error
2027     code.
2028    :vartype recommendations: list[str]
2029    """
2030
2031    _validation = {
2032        'error_code': {'readonly': True},
2033        'error_title': {'readonly': True},
2034        'error_string': {'readonly': True},
2035        'recommendations': {'readonly': True},
2036    }
2037
2038    _attribute_map = {
2039        'error_code': {'key': 'errorCode', 'type': 'int'},
2040        'error_title': {'key': 'errorTitle', 'type': 'str'},
2041        'error_string': {'key': 'errorString', 'type': 'str'},
2042        'recommendations': {'key': 'recommendations', 'type': '[str]'},
2043    }
2044
2045    def __init__(self, **kwargs):
2046        super(AzureIaaSVMErrorInfo, self).__init__(**kwargs)
2047        self.error_code = None
2048        self.error_title = None
2049        self.error_string = None
2050        self.recommendations = None
2051
2052
2053class ResourceHealthDetails(Model):
2054    """Health Details for backup items.
2055
2056    Variables are only populated by the server, and will be ignored when
2057    sending a request.
2058
2059    :ivar code: Health Code
2060    :vartype code: int
2061    :ivar title: Health Title
2062    :vartype title: str
2063    :ivar message: Health Message
2064    :vartype message: str
2065    :ivar recommendations: Health Recommended Actions
2066    :vartype recommendations: list[str]
2067    """
2068
2069    _validation = {
2070        'code': {'readonly': True},
2071        'title': {'readonly': True},
2072        'message': {'readonly': True},
2073        'recommendations': {'readonly': True},
2074    }
2075
2076    _attribute_map = {
2077        'code': {'key': 'code', 'type': 'int'},
2078        'title': {'key': 'title', 'type': 'str'},
2079        'message': {'key': 'message', 'type': 'str'},
2080        'recommendations': {'key': 'recommendations', 'type': '[str]'},
2081    }
2082
2083    def __init__(self, **kwargs):
2084        super(ResourceHealthDetails, self).__init__(**kwargs)
2085        self.code = None
2086        self.title = None
2087        self.message = None
2088        self.recommendations = None
2089
2090
2091class AzureIaaSVMHealthDetails(ResourceHealthDetails):
2092    """Azure IaaS VM workload-specific Health Details.
2093
2094    Variables are only populated by the server, and will be ignored when
2095    sending a request.
2096
2097    :ivar code: Health Code
2098    :vartype code: int
2099    :ivar title: Health Title
2100    :vartype title: str
2101    :ivar message: Health Message
2102    :vartype message: str
2103    :ivar recommendations: Health Recommended Actions
2104    :vartype recommendations: list[str]
2105    """
2106
2107    _validation = {
2108        'code': {'readonly': True},
2109        'title': {'readonly': True},
2110        'message': {'readonly': True},
2111        'recommendations': {'readonly': True},
2112    }
2113
2114    _attribute_map = {
2115        'code': {'key': 'code', 'type': 'int'},
2116        'title': {'key': 'title', 'type': 'str'},
2117        'message': {'key': 'message', 'type': 'str'},
2118        'recommendations': {'key': 'recommendations', 'type': '[str]'},
2119    }
2120
2121    def __init__(self, **kwargs):
2122        super(AzureIaaSVMHealthDetails, self).__init__(**kwargs)
2123
2124
2125class Job(Model):
2126    """Defines workload agnostic properties for a job.
2127
2128    You probably want to use the sub-classes and not this class directly. Known
2129    sub-classes are: AzureIaaSVMJob, AzureStorageJob, AzureWorkloadJob, DpmJob,
2130    MabJob, VaultJob
2131
2132    All required parameters must be populated in order to send to Azure.
2133
2134    :param entity_friendly_name: Friendly name of the entity on which the
2135     current job is executing.
2136    :type entity_friendly_name: str
2137    :param backup_management_type: Backup management type to execute the
2138     current job. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
2139     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2140     'DefaultBackup'
2141    :type backup_management_type: str or
2142     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2143    :param operation: The operation name.
2144    :type operation: str
2145    :param status: Job status.
2146    :type status: str
2147    :param start_time: The start time.
2148    :type start_time: datetime
2149    :param end_time: The end time.
2150    :type end_time: datetime
2151    :param activity_id: ActivityId of job.
2152    :type activity_id: str
2153    :param job_type: Required. Constant filled by server.
2154    :type job_type: str
2155    """
2156
2157    _validation = {
2158        'job_type': {'required': True},
2159    }
2160
2161    _attribute_map = {
2162        'entity_friendly_name': {'key': 'entityFriendlyName', 'type': 'str'},
2163        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2164        'operation': {'key': 'operation', 'type': 'str'},
2165        'status': {'key': 'status', 'type': 'str'},
2166        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2167        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
2168        'activity_id': {'key': 'activityId', 'type': 'str'},
2169        'job_type': {'key': 'jobType', 'type': 'str'},
2170    }
2171
2172    _subtype_map = {
2173        'job_type': {'AzureIaaSVMJob': 'AzureIaaSVMJob', 'AzureStorageJob': 'AzureStorageJob', 'AzureWorkloadJob': 'AzureWorkloadJob', 'DpmJob': 'DpmJob', 'MabJob': 'MabJob', 'VaultJob': 'VaultJob'}
2174    }
2175
2176    def __init__(self, **kwargs):
2177        super(Job, self).__init__(**kwargs)
2178        self.entity_friendly_name = kwargs.get('entity_friendly_name', None)
2179        self.backup_management_type = kwargs.get('backup_management_type', None)
2180        self.operation = kwargs.get('operation', None)
2181        self.status = kwargs.get('status', None)
2182        self.start_time = kwargs.get('start_time', None)
2183        self.end_time = kwargs.get('end_time', None)
2184        self.activity_id = kwargs.get('activity_id', None)
2185        self.job_type = None
2186
2187
2188class AzureIaaSVMJob(Job):
2189    """Azure IaaS VM workload-specific job object.
2190
2191    All required parameters must be populated in order to send to Azure.
2192
2193    :param entity_friendly_name: Friendly name of the entity on which the
2194     current job is executing.
2195    :type entity_friendly_name: str
2196    :param backup_management_type: Backup management type to execute the
2197     current job. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
2198     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2199     'DefaultBackup'
2200    :type backup_management_type: str or
2201     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2202    :param operation: The operation name.
2203    :type operation: str
2204    :param status: Job status.
2205    :type status: str
2206    :param start_time: The start time.
2207    :type start_time: datetime
2208    :param end_time: The end time.
2209    :type end_time: datetime
2210    :param activity_id: ActivityId of job.
2211    :type activity_id: str
2212    :param job_type: Required. Constant filled by server.
2213    :type job_type: str
2214    :param duration: Time elapsed during the execution of this job.
2215    :type duration: timedelta
2216    :param actions_info: Gets or sets the state/actions applicable on this job
2217     like cancel/retry.
2218    :type actions_info: list[str or
2219     ~azure.mgmt.recoveryservicesbackup.models.JobSupportedAction]
2220    :param error_details: Error details on execution of this job.
2221    :type error_details:
2222     list[~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMErrorInfo]
2223    :param virtual_machine_version: Specifies whether the backup item is a
2224     Classic or an Azure Resource Manager VM.
2225    :type virtual_machine_version: str
2226    :param extended_info: Additional information for this job.
2227    :type extended_info:
2228     ~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMJobExtendedInfo
2229    """
2230
2231    _validation = {
2232        'job_type': {'required': True},
2233    }
2234
2235    _attribute_map = {
2236        'entity_friendly_name': {'key': 'entityFriendlyName', 'type': 'str'},
2237        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2238        'operation': {'key': 'operation', 'type': 'str'},
2239        'status': {'key': 'status', 'type': 'str'},
2240        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2241        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
2242        'activity_id': {'key': 'activityId', 'type': 'str'},
2243        'job_type': {'key': 'jobType', 'type': 'str'},
2244        'duration': {'key': 'duration', 'type': 'duration'},
2245        'actions_info': {'key': 'actionsInfo', 'type': '[JobSupportedAction]'},
2246        'error_details': {'key': 'errorDetails', 'type': '[AzureIaaSVMErrorInfo]'},
2247        'virtual_machine_version': {'key': 'virtualMachineVersion', 'type': 'str'},
2248        'extended_info': {'key': 'extendedInfo', 'type': 'AzureIaaSVMJobExtendedInfo'},
2249    }
2250
2251    def __init__(self, **kwargs):
2252        super(AzureIaaSVMJob, self).__init__(**kwargs)
2253        self.duration = kwargs.get('duration', None)
2254        self.actions_info = kwargs.get('actions_info', None)
2255        self.error_details = kwargs.get('error_details', None)
2256        self.virtual_machine_version = kwargs.get('virtual_machine_version', None)
2257        self.extended_info = kwargs.get('extended_info', None)
2258        self.job_type = 'AzureIaaSVMJob'
2259
2260
2261class AzureIaaSVMJobExtendedInfo(Model):
2262    """Azure IaaS VM workload-specific additional information for job.
2263
2264    :param tasks_list: List of tasks associated with this job.
2265    :type tasks_list:
2266     list[~azure.mgmt.recoveryservicesbackup.models.AzureIaaSVMJobTaskDetails]
2267    :param property_bag: Job properties.
2268    :type property_bag: dict[str, str]
2269    :param internal_property_bag: Job internal properties.
2270    :type internal_property_bag: dict[str, str]
2271    :param progress_percentage: Indicates progress of the job. Null if it has
2272     not started or completed.
2273    :type progress_percentage: float
2274    :param estimated_remaining_duration: Time remaining for execution of this
2275     job.
2276    :type estimated_remaining_duration: str
2277    :param dynamic_error_message: Non localized error message on job
2278     execution.
2279    :type dynamic_error_message: str
2280    """
2281
2282    _attribute_map = {
2283        'tasks_list': {'key': 'tasksList', 'type': '[AzureIaaSVMJobTaskDetails]'},
2284        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
2285        'internal_property_bag': {'key': 'internalPropertyBag', 'type': '{str}'},
2286        'progress_percentage': {'key': 'progressPercentage', 'type': 'float'},
2287        'estimated_remaining_duration': {'key': 'estimatedRemainingDuration', 'type': 'str'},
2288        'dynamic_error_message': {'key': 'dynamicErrorMessage', 'type': 'str'},
2289    }
2290
2291    def __init__(self, **kwargs):
2292        super(AzureIaaSVMJobExtendedInfo, self).__init__(**kwargs)
2293        self.tasks_list = kwargs.get('tasks_list', None)
2294        self.property_bag = kwargs.get('property_bag', None)
2295        self.internal_property_bag = kwargs.get('internal_property_bag', None)
2296        self.progress_percentage = kwargs.get('progress_percentage', None)
2297        self.estimated_remaining_duration = kwargs.get('estimated_remaining_duration', None)
2298        self.dynamic_error_message = kwargs.get('dynamic_error_message', None)
2299
2300
2301class AzureIaaSVMJobTaskDetails(Model):
2302    """Azure IaaS VM workload-specific job task details.
2303
2304    :param task_id: The task display name.
2305    :type task_id: str
2306    :param start_time: The start time.
2307    :type start_time: datetime
2308    :param end_time: The end time.
2309    :type end_time: datetime
2310    :param instance_id: The instanceId.
2311    :type instance_id: str
2312    :param duration: Time elapsed for task.
2313    :type duration: timedelta
2314    :param status: The status.
2315    :type status: str
2316    :param progress_percentage: Progress of the task.
2317    :type progress_percentage: float
2318    :param task_execution_details: Details about execution of the task.
2319     eg: number of bytes transferred etc
2320    :type task_execution_details: str
2321    """
2322
2323    _attribute_map = {
2324        'task_id': {'key': 'taskId', 'type': 'str'},
2325        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2326        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
2327        'instance_id': {'key': 'instanceId', 'type': 'str'},
2328        'duration': {'key': 'duration', 'type': 'duration'},
2329        'status': {'key': 'status', 'type': 'str'},
2330        'progress_percentage': {'key': 'progressPercentage', 'type': 'float'},
2331        'task_execution_details': {'key': 'taskExecutionDetails', 'type': 'str'},
2332    }
2333
2334    def __init__(self, **kwargs):
2335        super(AzureIaaSVMJobTaskDetails, self).__init__(**kwargs)
2336        self.task_id = kwargs.get('task_id', None)
2337        self.start_time = kwargs.get('start_time', None)
2338        self.end_time = kwargs.get('end_time', None)
2339        self.instance_id = kwargs.get('instance_id', None)
2340        self.duration = kwargs.get('duration', None)
2341        self.status = kwargs.get('status', None)
2342        self.progress_percentage = kwargs.get('progress_percentage', None)
2343        self.task_execution_details = kwargs.get('task_execution_details', None)
2344
2345
2346class AzureIaaSVMProtectedItemExtendedInfo(Model):
2347    """Additional information on Azure IaaS VM specific backup item.
2348
2349    :param oldest_recovery_point: The oldest backup copy available for this
2350     backup item.
2351    :type oldest_recovery_point: datetime
2352    :param recovery_point_count: Number of backup copies available for this
2353     backup item.
2354    :type recovery_point_count: int
2355    :param policy_inconsistent: Specifies if backup policy associated with the
2356     backup item is inconsistent.
2357    :type policy_inconsistent: bool
2358    """
2359
2360    _attribute_map = {
2361        'oldest_recovery_point': {'key': 'oldestRecoveryPoint', 'type': 'iso-8601'},
2362        'recovery_point_count': {'key': 'recoveryPointCount', 'type': 'int'},
2363        'policy_inconsistent': {'key': 'policyInconsistent', 'type': 'bool'},
2364    }
2365
2366    def __init__(self, **kwargs):
2367        super(AzureIaaSVMProtectedItemExtendedInfo, self).__init__(**kwargs)
2368        self.oldest_recovery_point = kwargs.get('oldest_recovery_point', None)
2369        self.recovery_point_count = kwargs.get('recovery_point_count', None)
2370        self.policy_inconsistent = kwargs.get('policy_inconsistent', None)
2371
2372
2373class AzureIaaSVMProtectionPolicy(ProtectionPolicy):
2374    """IaaS VM workload-specific backup policy.
2375
2376    All required parameters must be populated in order to send to Azure.
2377
2378    :param protected_items_count: Number of items associated with this policy.
2379    :type protected_items_count: int
2380    :param resource_guard_operation_requests: ResourceGuard Operation Requests
2381    :type resource_guard_operation_requests: list[str]
2382    :param backup_management_type: Required. Constant filled by server.
2383    :type backup_management_type: str
2384    :param instant_rp_details:
2385    :type instant_rp_details:
2386     ~azure.mgmt.recoveryservicesbackup.models.InstantRPAdditionalDetails
2387    :param schedule_policy: Backup schedule specified as part of backup
2388     policy.
2389    :type schedule_policy:
2390     ~azure.mgmt.recoveryservicesbackup.models.SchedulePolicy
2391    :param retention_policy: Retention policy with the details on backup copy
2392     retention ranges.
2393    :type retention_policy:
2394     ~azure.mgmt.recoveryservicesbackup.models.RetentionPolicy
2395    :param instant_rp_retention_range_in_days: Instant RP retention policy
2396     range in days
2397    :type instant_rp_retention_range_in_days: int
2398    :param time_zone: TimeZone optional input as string. For example: TimeZone
2399     = "Pacific Standard Time".
2400    :type time_zone: str
2401    """
2402
2403    _validation = {
2404        'backup_management_type': {'required': True},
2405    }
2406
2407    _attribute_map = {
2408        'protected_items_count': {'key': 'protectedItemsCount', 'type': 'int'},
2409        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
2410        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2411        'instant_rp_details': {'key': 'instantRPDetails', 'type': 'InstantRPAdditionalDetails'},
2412        'schedule_policy': {'key': 'schedulePolicy', 'type': 'SchedulePolicy'},
2413        'retention_policy': {'key': 'retentionPolicy', 'type': 'RetentionPolicy'},
2414        'instant_rp_retention_range_in_days': {'key': 'instantRpRetentionRangeInDays', 'type': 'int'},
2415        'time_zone': {'key': 'timeZone', 'type': 'str'},
2416    }
2417
2418    def __init__(self, **kwargs):
2419        super(AzureIaaSVMProtectionPolicy, self).__init__(**kwargs)
2420        self.instant_rp_details = kwargs.get('instant_rp_details', None)
2421        self.schedule_policy = kwargs.get('schedule_policy', None)
2422        self.retention_policy = kwargs.get('retention_policy', None)
2423        self.instant_rp_retention_range_in_days = kwargs.get('instant_rp_retention_range_in_days', None)
2424        self.time_zone = kwargs.get('time_zone', None)
2425        self.backup_management_type = 'AzureIaasVM'
2426
2427
2428class ProtectionIntent(Model):
2429    """Base class for backup ProtectionIntent.
2430
2431    You probably want to use the sub-classes and not this class directly. Known
2432    sub-classes are: AzureRecoveryServiceVaultProtectionIntent,
2433    AzureResourceProtectionIntent
2434
2435    All required parameters must be populated in order to send to Azure.
2436
2437    :param backup_management_type: Type of backup management for the backed up
2438     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
2439     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2440     'DefaultBackup'
2441    :type backup_management_type: str or
2442     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2443    :param source_resource_id: ARM ID of the resource to be backed up.
2444    :type source_resource_id: str
2445    :param item_id: ID of the item which is getting protected, In case of
2446     Azure Vm , it is ProtectedItemId
2447    :type item_id: str
2448    :param policy_id: ID of the backup policy with which this item is backed
2449     up.
2450    :type policy_id: str
2451    :param protection_state: Backup state of this backup item. Possible values
2452     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
2453     'ProtectionFailed'
2454    :type protection_state: str or
2455     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
2456    :param protection_intent_item_type: Required. Constant filled by server.
2457    :type protection_intent_item_type: str
2458    """
2459
2460    _validation = {
2461        'protection_intent_item_type': {'required': True},
2462    }
2463
2464    _attribute_map = {
2465        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2466        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
2467        'item_id': {'key': 'itemId', 'type': 'str'},
2468        'policy_id': {'key': 'policyId', 'type': 'str'},
2469        'protection_state': {'key': 'protectionState', 'type': 'str'},
2470        'protection_intent_item_type': {'key': 'protectionIntentItemType', 'type': 'str'},
2471    }
2472
2473    _subtype_map = {
2474        'protection_intent_item_type': {'RecoveryServiceVaultItem': 'AzureRecoveryServiceVaultProtectionIntent', 'AzureResourceItem': 'AzureResourceProtectionIntent'}
2475    }
2476
2477    def __init__(self, **kwargs):
2478        super(ProtectionIntent, self).__init__(**kwargs)
2479        self.backup_management_type = kwargs.get('backup_management_type', None)
2480        self.source_resource_id = kwargs.get('source_resource_id', None)
2481        self.item_id = kwargs.get('item_id', None)
2482        self.policy_id = kwargs.get('policy_id', None)
2483        self.protection_state = kwargs.get('protection_state', None)
2484        self.protection_intent_item_type = None
2485
2486
2487class AzureRecoveryServiceVaultProtectionIntent(ProtectionIntent):
2488    """Azure Recovery Services Vault specific protection intent item.
2489
2490    You probably want to use the sub-classes and not this class directly. Known
2491    sub-classes are: AzureWorkloadAutoProtectionIntent
2492
2493    All required parameters must be populated in order to send to Azure.
2494
2495    :param backup_management_type: Type of backup management for the backed up
2496     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
2497     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2498     'DefaultBackup'
2499    :type backup_management_type: str or
2500     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2501    :param source_resource_id: ARM ID of the resource to be backed up.
2502    :type source_resource_id: str
2503    :param item_id: ID of the item which is getting protected, In case of
2504     Azure Vm , it is ProtectedItemId
2505    :type item_id: str
2506    :param policy_id: ID of the backup policy with which this item is backed
2507     up.
2508    :type policy_id: str
2509    :param protection_state: Backup state of this backup item. Possible values
2510     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
2511     'ProtectionFailed'
2512    :type protection_state: str or
2513     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
2514    :param protection_intent_item_type: Required. Constant filled by server.
2515    :type protection_intent_item_type: str
2516    """
2517
2518    _validation = {
2519        'protection_intent_item_type': {'required': True},
2520    }
2521
2522    _attribute_map = {
2523        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2524        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
2525        'item_id': {'key': 'itemId', 'type': 'str'},
2526        'policy_id': {'key': 'policyId', 'type': 'str'},
2527        'protection_state': {'key': 'protectionState', 'type': 'str'},
2528        'protection_intent_item_type': {'key': 'protectionIntentItemType', 'type': 'str'},
2529    }
2530
2531    _subtype_map = {
2532        'protection_intent_item_type': {'AzureWorkloadAutoProtectionIntent': 'AzureWorkloadAutoProtectionIntent'}
2533    }
2534
2535    def __init__(self, **kwargs):
2536        super(AzureRecoveryServiceVaultProtectionIntent, self).__init__(**kwargs)
2537        self.protection_intent_item_type = 'RecoveryServiceVaultItem'
2538
2539
2540class AzureResourceProtectionIntent(ProtectionIntent):
2541    """IaaS VM specific backup protection intent item.
2542
2543    All required parameters must be populated in order to send to Azure.
2544
2545    :param backup_management_type: Type of backup management for the backed up
2546     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
2547     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2548     'DefaultBackup'
2549    :type backup_management_type: str or
2550     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2551    :param source_resource_id: ARM ID of the resource to be backed up.
2552    :type source_resource_id: str
2553    :param item_id: ID of the item which is getting protected, In case of
2554     Azure Vm , it is ProtectedItemId
2555    :type item_id: str
2556    :param policy_id: ID of the backup policy with which this item is backed
2557     up.
2558    :type policy_id: str
2559    :param protection_state: Backup state of this backup item. Possible values
2560     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
2561     'ProtectionFailed'
2562    :type protection_state: str or
2563     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
2564    :param protection_intent_item_type: Required. Constant filled by server.
2565    :type protection_intent_item_type: str
2566    :param friendly_name: Friendly name of the VM represented by this backup
2567     item.
2568    :type friendly_name: str
2569    """
2570
2571    _validation = {
2572        'protection_intent_item_type': {'required': True},
2573    }
2574
2575    _attribute_map = {
2576        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2577        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
2578        'item_id': {'key': 'itemId', 'type': 'str'},
2579        'policy_id': {'key': 'policyId', 'type': 'str'},
2580        'protection_state': {'key': 'protectionState', 'type': 'str'},
2581        'protection_intent_item_type': {'key': 'protectionIntentItemType', 'type': 'str'},
2582        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
2583    }
2584
2585    def __init__(self, **kwargs):
2586        super(AzureResourceProtectionIntent, self).__init__(**kwargs)
2587        self.friendly_name = kwargs.get('friendly_name', None)
2588        self.protection_intent_item_type = 'AzureResourceItem'
2589
2590
2591class AzureWorkloadContainer(ProtectionContainer):
2592    """Container for the workloads running inside Azure Compute or Classic
2593    Compute.
2594
2595    You probably want to use the sub-classes and not this class directly. Known
2596    sub-classes are: AzureSQLAGWorkloadContainerProtectionContainer,
2597    AzureVMAppContainerProtectionContainer
2598
2599    All required parameters must be populated in order to send to Azure.
2600
2601    :param friendly_name: Friendly name of the container.
2602    :type friendly_name: str
2603    :param backup_management_type: Type of backup management for the
2604     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
2605     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2606     'DefaultBackup'
2607    :type backup_management_type: str or
2608     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2609    :param registration_status: Status of registration of the container with
2610     the Recovery Services Vault.
2611    :type registration_status: str
2612    :param health_status: Status of health of the container.
2613    :type health_status: str
2614    :param container_type: Required. Constant filled by server.
2615    :type container_type: str
2616    :param source_resource_id: ARM ID of the virtual machine represented by
2617     this Azure Workload Container
2618    :type source_resource_id: str
2619    :param last_updated_time: Time stamp when this container was updated.
2620    :type last_updated_time: datetime
2621    :param extended_info: Additional details of a workload container.
2622    :type extended_info:
2623     ~azure.mgmt.recoveryservicesbackup.models.AzureWorkloadContainerExtendedInfo
2624    :param workload_type: Workload type for which registration was sent.
2625     Possible values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb',
2626     'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
2627     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
2628     'SAPAseDatabase'
2629    :type workload_type: str or
2630     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
2631    :param operation_type: Re-Do Operation. Possible values include:
2632     'Invalid', 'Register', 'Reregister'
2633    :type operation_type: str or
2634     ~azure.mgmt.recoveryservicesbackup.models.OperationType
2635    """
2636
2637    _validation = {
2638        'container_type': {'required': True},
2639    }
2640
2641    _attribute_map = {
2642        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
2643        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2644        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
2645        'health_status': {'key': 'healthStatus', 'type': 'str'},
2646        'container_type': {'key': 'containerType', 'type': 'str'},
2647        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
2648        'last_updated_time': {'key': 'lastUpdatedTime', 'type': 'iso-8601'},
2649        'extended_info': {'key': 'extendedInfo', 'type': 'AzureWorkloadContainerExtendedInfo'},
2650        'workload_type': {'key': 'workloadType', 'type': 'str'},
2651        'operation_type': {'key': 'operationType', 'type': 'str'},
2652    }
2653
2654    _subtype_map = {
2655        'container_type': {'SQLAGWorkLoadContainer': 'AzureSQLAGWorkloadContainerProtectionContainer', 'VMAppContainer': 'AzureVMAppContainerProtectionContainer'}
2656    }
2657
2658    def __init__(self, **kwargs):
2659        super(AzureWorkloadContainer, self).__init__(**kwargs)
2660        self.source_resource_id = kwargs.get('source_resource_id', None)
2661        self.last_updated_time = kwargs.get('last_updated_time', None)
2662        self.extended_info = kwargs.get('extended_info', None)
2663        self.workload_type = kwargs.get('workload_type', None)
2664        self.operation_type = kwargs.get('operation_type', None)
2665        self.container_type = 'AzureWorkloadContainer'
2666
2667
2668class AzureSQLAGWorkloadContainerProtectionContainer(AzureWorkloadContainer):
2669    """Container for SQL workloads under SQL Availability Group.
2670
2671    All required parameters must be populated in order to send to Azure.
2672
2673    :param friendly_name: Friendly name of the container.
2674    :type friendly_name: str
2675    :param backup_management_type: Type of backup management for the
2676     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
2677     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2678     'DefaultBackup'
2679    :type backup_management_type: str or
2680     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2681    :param registration_status: Status of registration of the container with
2682     the Recovery Services Vault.
2683    :type registration_status: str
2684    :param health_status: Status of health of the container.
2685    :type health_status: str
2686    :param container_type: Required. Constant filled by server.
2687    :type container_type: str
2688    :param source_resource_id: ARM ID of the virtual machine represented by
2689     this Azure Workload Container
2690    :type source_resource_id: str
2691    :param last_updated_time: Time stamp when this container was updated.
2692    :type last_updated_time: datetime
2693    :param extended_info: Additional details of a workload container.
2694    :type extended_info:
2695     ~azure.mgmt.recoveryservicesbackup.models.AzureWorkloadContainerExtendedInfo
2696    :param workload_type: Workload type for which registration was sent.
2697     Possible values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb',
2698     'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
2699     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
2700     'SAPAseDatabase'
2701    :type workload_type: str or
2702     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
2703    :param operation_type: Re-Do Operation. Possible values include:
2704     'Invalid', 'Register', 'Reregister'
2705    :type operation_type: str or
2706     ~azure.mgmt.recoveryservicesbackup.models.OperationType
2707    """
2708
2709    _validation = {
2710        'container_type': {'required': True},
2711    }
2712
2713    _attribute_map = {
2714        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
2715        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2716        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
2717        'health_status': {'key': 'healthStatus', 'type': 'str'},
2718        'container_type': {'key': 'containerType', 'type': 'str'},
2719        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
2720        'last_updated_time': {'key': 'lastUpdatedTime', 'type': 'iso-8601'},
2721        'extended_info': {'key': 'extendedInfo', 'type': 'AzureWorkloadContainerExtendedInfo'},
2722        'workload_type': {'key': 'workloadType', 'type': 'str'},
2723        'operation_type': {'key': 'operationType', 'type': 'str'},
2724    }
2725
2726    def __init__(self, **kwargs):
2727        super(AzureSQLAGWorkloadContainerProtectionContainer, self).__init__(**kwargs)
2728        self.container_type = 'SQLAGWorkLoadContainer'
2729
2730
2731class AzureSqlContainer(ProtectionContainer):
2732    """Azure Sql workload-specific container.
2733
2734    All required parameters must be populated in order to send to Azure.
2735
2736    :param friendly_name: Friendly name of the container.
2737    :type friendly_name: str
2738    :param backup_management_type: Type of backup management for the
2739     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
2740     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2741     'DefaultBackup'
2742    :type backup_management_type: str or
2743     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2744    :param registration_status: Status of registration of the container with
2745     the Recovery Services Vault.
2746    :type registration_status: str
2747    :param health_status: Status of health of the container.
2748    :type health_status: str
2749    :param container_type: Required. Constant filled by server.
2750    :type container_type: str
2751    """
2752
2753    _validation = {
2754        'container_type': {'required': True},
2755    }
2756
2757    _attribute_map = {
2758        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
2759        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2760        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
2761        'health_status': {'key': 'healthStatus', 'type': 'str'},
2762        'container_type': {'key': 'containerType', 'type': 'str'},
2763    }
2764
2765    def __init__(self, **kwargs):
2766        super(AzureSqlContainer, self).__init__(**kwargs)
2767        self.container_type = 'AzureSqlContainer'
2768
2769
2770class AzureSqlProtectedItem(ProtectedItem):
2771    """Azure SQL workload-specific backup item.
2772
2773    All required parameters must be populated in order to send to Azure.
2774
2775    :param backup_management_type: Type of backup management for the backed up
2776     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
2777     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2778     'DefaultBackup'
2779    :type backup_management_type: str or
2780     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2781    :param workload_type: Type of workload this item represents. Possible
2782     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
2783     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
2784     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
2785     'SAPAseDatabase'
2786    :type workload_type: str or
2787     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
2788    :param container_name: Unique name of container
2789    :type container_name: str
2790    :param source_resource_id: ARM ID of the resource to be backed up.
2791    :type source_resource_id: str
2792    :param policy_id: ID of the backup policy with which this item is backed
2793     up.
2794    :type policy_id: str
2795    :param last_recovery_point: Timestamp when the last (latest) backup copy
2796     was created for this backup item.
2797    :type last_recovery_point: datetime
2798    :param backup_set_name: Name of the backup set the backup item belongs to
2799    :type backup_set_name: str
2800    :param create_mode: Create mode to indicate recovery of existing soft
2801     deleted data source or creation of new data source. Possible values
2802     include: 'Invalid', 'Default', 'Recover'
2803    :type create_mode: str or
2804     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
2805    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
2806    :type deferred_delete_time_in_utc: datetime
2807    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
2808     is scheduled for deferred delete
2809    :type is_scheduled_for_deferred_delete: bool
2810    :param deferred_delete_time_remaining: Time remaining before the DS marked
2811     for deferred delete is permanently deleted
2812    :type deferred_delete_time_remaining: str
2813    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
2814     deferred deleted DS is to be purged soon
2815    :type is_deferred_delete_schedule_upcoming: bool
2816    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
2817     moved into Pause state
2818    :type is_rehydrate: bool
2819    :param resource_guard_operation_requests: ResourceGuardOperationRequests
2820     on which LAC check will be performed
2821    :type resource_guard_operation_requests: list[str]
2822    :param protected_item_type: Required. Constant filled by server.
2823    :type protected_item_type: str
2824    :param protected_item_data_id: Internal ID of a backup item. Used by Azure
2825     SQL Backup engine to contact Recovery Services.
2826    :type protected_item_data_id: str
2827    :param protection_state: Backup state of the backed up item. Possible
2828     values include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
2829     'ProtectionStopped', 'ProtectionPaused'
2830    :type protection_state: str or
2831     ~azure.mgmt.recoveryservicesbackup.models.ProtectedItemState
2832    :param extended_info: Additional information for this backup item.
2833    :type extended_info:
2834     ~azure.mgmt.recoveryservicesbackup.models.AzureSqlProtectedItemExtendedInfo
2835    """
2836
2837    _validation = {
2838        'protected_item_type': {'required': True},
2839    }
2840
2841    _attribute_map = {
2842        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2843        'workload_type': {'key': 'workloadType', 'type': 'str'},
2844        'container_name': {'key': 'containerName', 'type': 'str'},
2845        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
2846        'policy_id': {'key': 'policyId', 'type': 'str'},
2847        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
2848        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
2849        'create_mode': {'key': 'createMode', 'type': 'str'},
2850        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
2851        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
2852        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
2853        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
2854        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
2855        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
2856        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
2857        'protected_item_data_id': {'key': 'protectedItemDataId', 'type': 'str'},
2858        'protection_state': {'key': 'protectionState', 'type': 'str'},
2859        'extended_info': {'key': 'extendedInfo', 'type': 'AzureSqlProtectedItemExtendedInfo'},
2860    }
2861
2862    def __init__(self, **kwargs):
2863        super(AzureSqlProtectedItem, self).__init__(**kwargs)
2864        self.protected_item_data_id = kwargs.get('protected_item_data_id', None)
2865        self.protection_state = kwargs.get('protection_state', None)
2866        self.extended_info = kwargs.get('extended_info', None)
2867        self.protected_item_type = 'Microsoft.Sql/servers/databases'
2868
2869
2870class AzureSqlProtectedItemExtendedInfo(Model):
2871    """Additional information on Azure Sql specific protected item.
2872
2873    :param oldest_recovery_point: The oldest backup copy available for this
2874     item in the service.
2875    :type oldest_recovery_point: datetime
2876    :param recovery_point_count: Number of available backup copies associated
2877     with this backup item.
2878    :type recovery_point_count: int
2879    :param policy_state: State of the backup policy associated with this
2880     backup item.
2881    :type policy_state: str
2882    """
2883
2884    _attribute_map = {
2885        'oldest_recovery_point': {'key': 'oldestRecoveryPoint', 'type': 'iso-8601'},
2886        'recovery_point_count': {'key': 'recoveryPointCount', 'type': 'int'},
2887        'policy_state': {'key': 'policyState', 'type': 'str'},
2888    }
2889
2890    def __init__(self, **kwargs):
2891        super(AzureSqlProtectedItemExtendedInfo, self).__init__(**kwargs)
2892        self.oldest_recovery_point = kwargs.get('oldest_recovery_point', None)
2893        self.recovery_point_count = kwargs.get('recovery_point_count', None)
2894        self.policy_state = kwargs.get('policy_state', None)
2895
2896
2897class AzureSqlProtectionPolicy(ProtectionPolicy):
2898    """Azure SQL workload-specific backup policy.
2899
2900    All required parameters must be populated in order to send to Azure.
2901
2902    :param protected_items_count: Number of items associated with this policy.
2903    :type protected_items_count: int
2904    :param resource_guard_operation_requests: ResourceGuard Operation Requests
2905    :type resource_guard_operation_requests: list[str]
2906    :param backup_management_type: Required. Constant filled by server.
2907    :type backup_management_type: str
2908    :param retention_policy: Retention policy details.
2909    :type retention_policy:
2910     ~azure.mgmt.recoveryservicesbackup.models.RetentionPolicy
2911    """
2912
2913    _validation = {
2914        'backup_management_type': {'required': True},
2915    }
2916
2917    _attribute_map = {
2918        'protected_items_count': {'key': 'protectedItemsCount', 'type': 'int'},
2919        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
2920        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2921        'retention_policy': {'key': 'retentionPolicy', 'type': 'RetentionPolicy'},
2922    }
2923
2924    def __init__(self, **kwargs):
2925        super(AzureSqlProtectionPolicy, self).__init__(**kwargs)
2926        self.retention_policy = kwargs.get('retention_policy', None)
2927        self.backup_management_type = 'AzureSql'
2928
2929
2930class AzureStorageContainer(ProtectionContainer):
2931    """Azure Storage Account workload-specific container.
2932
2933    All required parameters must be populated in order to send to Azure.
2934
2935    :param friendly_name: Friendly name of the container.
2936    :type friendly_name: str
2937    :param backup_management_type: Type of backup management for the
2938     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
2939     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
2940     'DefaultBackup'
2941    :type backup_management_type: str or
2942     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
2943    :param registration_status: Status of registration of the container with
2944     the Recovery Services Vault.
2945    :type registration_status: str
2946    :param health_status: Status of health of the container.
2947    :type health_status: str
2948    :param container_type: Required. Constant filled by server.
2949    :type container_type: str
2950    :param source_resource_id: Fully qualified ARM url.
2951    :type source_resource_id: str
2952    :param storage_account_version: Storage account version.
2953    :type storage_account_version: str
2954    :param resource_group: Resource group name of Recovery Services Vault.
2955    :type resource_group: str
2956    :param protected_item_count: Number of items backed up in this container.
2957    :type protected_item_count: long
2958    """
2959
2960    _validation = {
2961        'container_type': {'required': True},
2962    }
2963
2964    _attribute_map = {
2965        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
2966        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
2967        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
2968        'health_status': {'key': 'healthStatus', 'type': 'str'},
2969        'container_type': {'key': 'containerType', 'type': 'str'},
2970        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
2971        'storage_account_version': {'key': 'storageAccountVersion', 'type': 'str'},
2972        'resource_group': {'key': 'resourceGroup', 'type': 'str'},
2973        'protected_item_count': {'key': 'protectedItemCount', 'type': 'long'},
2974    }
2975
2976    def __init__(self, **kwargs):
2977        super(AzureStorageContainer, self).__init__(**kwargs)
2978        self.source_resource_id = kwargs.get('source_resource_id', None)
2979        self.storage_account_version = kwargs.get('storage_account_version', None)
2980        self.resource_group = kwargs.get('resource_group', None)
2981        self.protected_item_count = kwargs.get('protected_item_count', None)
2982        self.container_type = 'StorageContainer'
2983
2984
2985class AzureStorageErrorInfo(Model):
2986    """Azure storage specific error information.
2987
2988    :param error_code: Error code.
2989    :type error_code: int
2990    :param error_string: Localized error string.
2991    :type error_string: str
2992    :param recommendations: List of localized recommendations for above error
2993     code.
2994    :type recommendations: list[str]
2995    """
2996
2997    _attribute_map = {
2998        'error_code': {'key': 'errorCode', 'type': 'int'},
2999        'error_string': {'key': 'errorString', 'type': 'str'},
3000        'recommendations': {'key': 'recommendations', 'type': '[str]'},
3001    }
3002
3003    def __init__(self, **kwargs):
3004        super(AzureStorageErrorInfo, self).__init__(**kwargs)
3005        self.error_code = kwargs.get('error_code', None)
3006        self.error_string = kwargs.get('error_string', None)
3007        self.recommendations = kwargs.get('recommendations', None)
3008
3009
3010class AzureStorageJob(Job):
3011    """Azure storage specific job.
3012
3013    All required parameters must be populated in order to send to Azure.
3014
3015    :param entity_friendly_name: Friendly name of the entity on which the
3016     current job is executing.
3017    :type entity_friendly_name: str
3018    :param backup_management_type: Backup management type to execute the
3019     current job. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
3020     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
3021     'DefaultBackup'
3022    :type backup_management_type: str or
3023     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
3024    :param operation: The operation name.
3025    :type operation: str
3026    :param status: Job status.
3027    :type status: str
3028    :param start_time: The start time.
3029    :type start_time: datetime
3030    :param end_time: The end time.
3031    :type end_time: datetime
3032    :param activity_id: ActivityId of job.
3033    :type activity_id: str
3034    :param job_type: Required. Constant filled by server.
3035    :type job_type: str
3036    :param duration: Time elapsed during the execution of this job.
3037    :type duration: timedelta
3038    :param actions_info: Gets or sets the state/actions applicable on this job
3039     like cancel/retry.
3040    :type actions_info: list[str or
3041     ~azure.mgmt.recoveryservicesbackup.models.JobSupportedAction]
3042    :param error_details: Error details on execution of this job.
3043    :type error_details:
3044     list[~azure.mgmt.recoveryservicesbackup.models.AzureStorageErrorInfo]
3045    :param storage_account_name: Specifies friendly name of the storage
3046     account.
3047    :type storage_account_name: str
3048    :param storage_account_version: Specifies whether the Storage account is a
3049     Classic or an Azure Resource Manager Storage account.
3050    :type storage_account_version: str
3051    :param extended_info: Additional information about the job.
3052    :type extended_info:
3053     ~azure.mgmt.recoveryservicesbackup.models.AzureStorageJobExtendedInfo
3054    """
3055
3056    _validation = {
3057        'job_type': {'required': True},
3058    }
3059
3060    _attribute_map = {
3061        'entity_friendly_name': {'key': 'entityFriendlyName', 'type': 'str'},
3062        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3063        'operation': {'key': 'operation', 'type': 'str'},
3064        'status': {'key': 'status', 'type': 'str'},
3065        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
3066        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
3067        'activity_id': {'key': 'activityId', 'type': 'str'},
3068        'job_type': {'key': 'jobType', 'type': 'str'},
3069        'duration': {'key': 'duration', 'type': 'duration'},
3070        'actions_info': {'key': 'actionsInfo', 'type': '[JobSupportedAction]'},
3071        'error_details': {'key': 'errorDetails', 'type': '[AzureStorageErrorInfo]'},
3072        'storage_account_name': {'key': 'storageAccountName', 'type': 'str'},
3073        'storage_account_version': {'key': 'storageAccountVersion', 'type': 'str'},
3074        'extended_info': {'key': 'extendedInfo', 'type': 'AzureStorageJobExtendedInfo'},
3075    }
3076
3077    def __init__(self, **kwargs):
3078        super(AzureStorageJob, self).__init__(**kwargs)
3079        self.duration = kwargs.get('duration', None)
3080        self.actions_info = kwargs.get('actions_info', None)
3081        self.error_details = kwargs.get('error_details', None)
3082        self.storage_account_name = kwargs.get('storage_account_name', None)
3083        self.storage_account_version = kwargs.get('storage_account_version', None)
3084        self.extended_info = kwargs.get('extended_info', None)
3085        self.job_type = 'AzureStorageJob'
3086
3087
3088class AzureStorageJobExtendedInfo(Model):
3089    """Azure Storage workload-specific additional information for job.
3090
3091    :param tasks_list: List of tasks for this job
3092    :type tasks_list:
3093     list[~azure.mgmt.recoveryservicesbackup.models.AzureStorageJobTaskDetails]
3094    :param property_bag: Job properties.
3095    :type property_bag: dict[str, str]
3096    :param dynamic_error_message: Non localized error message on job
3097     execution.
3098    :type dynamic_error_message: str
3099    """
3100
3101    _attribute_map = {
3102        'tasks_list': {'key': 'tasksList', 'type': '[AzureStorageJobTaskDetails]'},
3103        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
3104        'dynamic_error_message': {'key': 'dynamicErrorMessage', 'type': 'str'},
3105    }
3106
3107    def __init__(self, **kwargs):
3108        super(AzureStorageJobExtendedInfo, self).__init__(**kwargs)
3109        self.tasks_list = kwargs.get('tasks_list', None)
3110        self.property_bag = kwargs.get('property_bag', None)
3111        self.dynamic_error_message = kwargs.get('dynamic_error_message', None)
3112
3113
3114class AzureStorageJobTaskDetails(Model):
3115    """Azure storage workload specific job task details.
3116
3117    :param task_id: The task display name.
3118    :type task_id: str
3119    :param status: The status.
3120    :type status: str
3121    """
3122
3123    _attribute_map = {
3124        'task_id': {'key': 'taskId', 'type': 'str'},
3125        'status': {'key': 'status', 'type': 'str'},
3126    }
3127
3128    def __init__(self, **kwargs):
3129        super(AzureStorageJobTaskDetails, self).__init__(**kwargs)
3130        self.task_id = kwargs.get('task_id', None)
3131        self.status = kwargs.get('status', None)
3132
3133
3134class ProtectableContainer(Model):
3135    """Protectable Container Class.
3136
3137    You probably want to use the sub-classes and not this class directly. Known
3138    sub-classes are: AzureStorageProtectableContainer,
3139    AzureVMAppContainerProtectableContainer
3140
3141    All required parameters must be populated in order to send to Azure.
3142
3143    :param friendly_name: Friendly name of the container.
3144    :type friendly_name: str
3145    :param backup_management_type: Type of backup management for the
3146     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
3147     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
3148     'DefaultBackup'
3149    :type backup_management_type: str or
3150     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
3151    :param health_status: Status of health of the container.
3152    :type health_status: str
3153    :param container_id: Fabric Id of the container such as ARM Id.
3154    :type container_id: str
3155    :param protectable_container_type: Required. Constant filled by server.
3156    :type protectable_container_type: str
3157    """
3158
3159    _validation = {
3160        'protectable_container_type': {'required': True},
3161    }
3162
3163    _attribute_map = {
3164        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3165        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3166        'health_status': {'key': 'healthStatus', 'type': 'str'},
3167        'container_id': {'key': 'containerId', 'type': 'str'},
3168        'protectable_container_type': {'key': 'protectableContainerType', 'type': 'str'},
3169    }
3170
3171    _subtype_map = {
3172        'protectable_container_type': {'StorageContainer': 'AzureStorageProtectableContainer', 'VMAppContainer': 'AzureVMAppContainerProtectableContainer'}
3173    }
3174
3175    def __init__(self, **kwargs):
3176        super(ProtectableContainer, self).__init__(**kwargs)
3177        self.friendly_name = kwargs.get('friendly_name', None)
3178        self.backup_management_type = kwargs.get('backup_management_type', None)
3179        self.health_status = kwargs.get('health_status', None)
3180        self.container_id = kwargs.get('container_id', None)
3181        self.protectable_container_type = None
3182
3183
3184class AzureStorageProtectableContainer(ProtectableContainer):
3185    """Azure Storage-specific protectable containers.
3186
3187    All required parameters must be populated in order to send to Azure.
3188
3189    :param friendly_name: Friendly name of the container.
3190    :type friendly_name: str
3191    :param backup_management_type: Type of backup management for the
3192     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
3193     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
3194     'DefaultBackup'
3195    :type backup_management_type: str or
3196     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
3197    :param health_status: Status of health of the container.
3198    :type health_status: str
3199    :param container_id: Fabric Id of the container such as ARM Id.
3200    :type container_id: str
3201    :param protectable_container_type: Required. Constant filled by server.
3202    :type protectable_container_type: str
3203    """
3204
3205    _validation = {
3206        'protectable_container_type': {'required': True},
3207    }
3208
3209    _attribute_map = {
3210        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3211        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3212        'health_status': {'key': 'healthStatus', 'type': 'str'},
3213        'container_id': {'key': 'containerId', 'type': 'str'},
3214        'protectable_container_type': {'key': 'protectableContainerType', 'type': 'str'},
3215    }
3216
3217    def __init__(self, **kwargs):
3218        super(AzureStorageProtectableContainer, self).__init__(**kwargs)
3219        self.protectable_container_type = 'StorageContainer'
3220
3221
3222class AzureVMAppContainerProtectableContainer(ProtectableContainer):
3223    """Azure workload-specific container.
3224
3225    All required parameters must be populated in order to send to Azure.
3226
3227    :param friendly_name: Friendly name of the container.
3228    :type friendly_name: str
3229    :param backup_management_type: Type of backup management for the
3230     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
3231     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
3232     'DefaultBackup'
3233    :type backup_management_type: str or
3234     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
3235    :param health_status: Status of health of the container.
3236    :type health_status: str
3237    :param container_id: Fabric Id of the container such as ARM Id.
3238    :type container_id: str
3239    :param protectable_container_type: Required. Constant filled by server.
3240    :type protectable_container_type: str
3241    """
3242
3243    _validation = {
3244        'protectable_container_type': {'required': True},
3245    }
3246
3247    _attribute_map = {
3248        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3249        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3250        'health_status': {'key': 'healthStatus', 'type': 'str'},
3251        'container_id': {'key': 'containerId', 'type': 'str'},
3252        'protectable_container_type': {'key': 'protectableContainerType', 'type': 'str'},
3253    }
3254
3255    def __init__(self, **kwargs):
3256        super(AzureVMAppContainerProtectableContainer, self).__init__(**kwargs)
3257        self.protectable_container_type = 'VMAppContainer'
3258
3259
3260class AzureVMAppContainerProtectionContainer(AzureWorkloadContainer):
3261    """Container for SQL workloads under Azure Virtual Machines.
3262
3263    All required parameters must be populated in order to send to Azure.
3264
3265    :param friendly_name: Friendly name of the container.
3266    :type friendly_name: str
3267    :param backup_management_type: Type of backup management for the
3268     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
3269     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
3270     'DefaultBackup'
3271    :type backup_management_type: str or
3272     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
3273    :param registration_status: Status of registration of the container with
3274     the Recovery Services Vault.
3275    :type registration_status: str
3276    :param health_status: Status of health of the container.
3277    :type health_status: str
3278    :param container_type: Required. Constant filled by server.
3279    :type container_type: str
3280    :param source_resource_id: ARM ID of the virtual machine represented by
3281     this Azure Workload Container
3282    :type source_resource_id: str
3283    :param last_updated_time: Time stamp when this container was updated.
3284    :type last_updated_time: datetime
3285    :param extended_info: Additional details of a workload container.
3286    :type extended_info:
3287     ~azure.mgmt.recoveryservicesbackup.models.AzureWorkloadContainerExtendedInfo
3288    :param workload_type: Workload type for which registration was sent.
3289     Possible values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb',
3290     'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
3291     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
3292     'SAPAseDatabase'
3293    :type workload_type: str or
3294     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
3295    :param operation_type: Re-Do Operation. Possible values include:
3296     'Invalid', 'Register', 'Reregister'
3297    :type operation_type: str or
3298     ~azure.mgmt.recoveryservicesbackup.models.OperationType
3299    """
3300
3301    _validation = {
3302        'container_type': {'required': True},
3303    }
3304
3305    _attribute_map = {
3306        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3307        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3308        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
3309        'health_status': {'key': 'healthStatus', 'type': 'str'},
3310        'container_type': {'key': 'containerType', 'type': 'str'},
3311        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
3312        'last_updated_time': {'key': 'lastUpdatedTime', 'type': 'iso-8601'},
3313        'extended_info': {'key': 'extendedInfo', 'type': 'AzureWorkloadContainerExtendedInfo'},
3314        'workload_type': {'key': 'workloadType', 'type': 'str'},
3315        'operation_type': {'key': 'operationType', 'type': 'str'},
3316    }
3317
3318    def __init__(self, **kwargs):
3319        super(AzureVMAppContainerProtectionContainer, self).__init__(**kwargs)
3320        self.container_type = 'VMAppContainer'
3321
3322
3323class AzureVMResourceFeatureSupportRequest(FeatureSupportRequest):
3324    """AzureResource(IaaS VM) Specific feature support request.
3325
3326    All required parameters must be populated in order to send to Azure.
3327
3328    :param feature_type: Required. Constant filled by server.
3329    :type feature_type: str
3330    :param vm_size: Size of the resource: VM size(A/D series etc) in case of
3331     IaasVM
3332    :type vm_size: str
3333    :param vm_sku: SKUs (Premium/Managed etc) in case of IaasVM
3334    :type vm_sku: str
3335    """
3336
3337    _validation = {
3338        'feature_type': {'required': True},
3339    }
3340
3341    _attribute_map = {
3342        'feature_type': {'key': 'featureType', 'type': 'str'},
3343        'vm_size': {'key': 'vmSize', 'type': 'str'},
3344        'vm_sku': {'key': 'vmSku', 'type': 'str'},
3345    }
3346
3347    def __init__(self, **kwargs):
3348        super(AzureVMResourceFeatureSupportRequest, self).__init__(**kwargs)
3349        self.vm_size = kwargs.get('vm_size', None)
3350        self.vm_sku = kwargs.get('vm_sku', None)
3351        self.feature_type = 'AzureVMResourceBackup'
3352
3353
3354class AzureVMResourceFeatureSupportResponse(Model):
3355    """Response for feature support requests for Azure IaasVm.
3356
3357    :param support_status: Support status of feature. Possible values include:
3358     'Invalid', 'Supported', 'DefaultOFF', 'DefaultON', 'NotSupported'
3359    :type support_status: str or
3360     ~azure.mgmt.recoveryservicesbackup.models.SupportStatus
3361    """
3362
3363    _attribute_map = {
3364        'support_status': {'key': 'supportStatus', 'type': 'str'},
3365    }
3366
3367    def __init__(self, **kwargs):
3368        super(AzureVMResourceFeatureSupportResponse, self).__init__(**kwargs)
3369        self.support_status = kwargs.get('support_status', None)
3370
3371
3372class WorkloadItem(Model):
3373    """Base class for backup item. Workload-specific backup items are derived from
3374    this class.
3375
3376    You probably want to use the sub-classes and not this class directly. Known
3377    sub-classes are: AzureVmWorkloadItem
3378
3379    All required parameters must be populated in order to send to Azure.
3380
3381    :param backup_management_type: Type of backup management to backup an
3382     item.
3383    :type backup_management_type: str
3384    :param workload_type: Type of workload for the backup management
3385    :type workload_type: str
3386    :param friendly_name: Friendly name of the backup item.
3387    :type friendly_name: str
3388    :param protection_state: State of the back up item. Possible values
3389     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
3390     'ProtectionFailed'
3391    :type protection_state: str or
3392     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
3393    :param workload_item_type: Required. Constant filled by server.
3394    :type workload_item_type: str
3395    """
3396
3397    _validation = {
3398        'workload_item_type': {'required': True},
3399    }
3400
3401    _attribute_map = {
3402        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3403        'workload_type': {'key': 'workloadType', 'type': 'str'},
3404        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3405        'protection_state': {'key': 'protectionState', 'type': 'str'},
3406        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
3407    }
3408
3409    _subtype_map = {
3410        'workload_item_type': {'AzureVmWorkloadItem': 'AzureVmWorkloadItem'}
3411    }
3412
3413    def __init__(self, **kwargs):
3414        super(WorkloadItem, self).__init__(**kwargs)
3415        self.backup_management_type = kwargs.get('backup_management_type', None)
3416        self.workload_type = kwargs.get('workload_type', None)
3417        self.friendly_name = kwargs.get('friendly_name', None)
3418        self.protection_state = kwargs.get('protection_state', None)
3419        self.workload_item_type = None
3420
3421
3422class AzureVmWorkloadItem(WorkloadItem):
3423    """Azure VM workload-specific workload item.
3424
3425    You probably want to use the sub-classes and not this class directly. Known
3426    sub-classes are: AzureVmWorkloadSAPAseDatabaseWorkloadItem,
3427    AzureVmWorkloadSAPAseSystemWorkloadItem,
3428    AzureVmWorkloadSAPHanaDatabaseWorkloadItem,
3429    AzureVmWorkloadSAPHanaSystemWorkloadItem,
3430    AzureVmWorkloadSQLDatabaseWorkloadItem,
3431    AzureVmWorkloadSQLInstanceWorkloadItem
3432
3433    All required parameters must be populated in order to send to Azure.
3434
3435    :param backup_management_type: Type of backup management to backup an
3436     item.
3437    :type backup_management_type: str
3438    :param workload_type: Type of workload for the backup management
3439    :type workload_type: str
3440    :param friendly_name: Friendly name of the backup item.
3441    :type friendly_name: str
3442    :param protection_state: State of the back up item. Possible values
3443     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
3444     'ProtectionFailed'
3445    :type protection_state: str or
3446     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
3447    :param workload_item_type: Required. Constant filled by server.
3448    :type workload_item_type: str
3449    :param parent_name: Name for instance or AG
3450    :type parent_name: str
3451    :param server_name: Host/Cluster Name for instance or AG
3452    :type server_name: str
3453    :param is_auto_protectable: Indicates if workload item is auto-protectable
3454    :type is_auto_protectable: bool
3455    :param subinquireditemcount: For instance or AG, indicates number of DB's
3456     present
3457    :type subinquireditemcount: int
3458    :param sub_workload_item_count: For instance or AG, indicates number of
3459     DB's to be protected
3460    :type sub_workload_item_count: int
3461    """
3462
3463    _validation = {
3464        'workload_item_type': {'required': True},
3465    }
3466
3467    _attribute_map = {
3468        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3469        'workload_type': {'key': 'workloadType', 'type': 'str'},
3470        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3471        'protection_state': {'key': 'protectionState', 'type': 'str'},
3472        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
3473        'parent_name': {'key': 'parentName', 'type': 'str'},
3474        'server_name': {'key': 'serverName', 'type': 'str'},
3475        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
3476        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
3477        'sub_workload_item_count': {'key': 'subWorkloadItemCount', 'type': 'int'},
3478    }
3479
3480    _subtype_map = {
3481        'workload_item_type': {'SAPAseDatabase': 'AzureVmWorkloadSAPAseDatabaseWorkloadItem', 'SAPAseSystem': 'AzureVmWorkloadSAPAseSystemWorkloadItem', 'SAPHanaDatabase': 'AzureVmWorkloadSAPHanaDatabaseWorkloadItem', 'SAPHanaSystem': 'AzureVmWorkloadSAPHanaSystemWorkloadItem', 'SQLDataBase': 'AzureVmWorkloadSQLDatabaseWorkloadItem', 'SQLInstance': 'AzureVmWorkloadSQLInstanceWorkloadItem'}
3482    }
3483
3484    def __init__(self, **kwargs):
3485        super(AzureVmWorkloadItem, self).__init__(**kwargs)
3486        self.parent_name = kwargs.get('parent_name', None)
3487        self.server_name = kwargs.get('server_name', None)
3488        self.is_auto_protectable = kwargs.get('is_auto_protectable', None)
3489        self.subinquireditemcount = kwargs.get('subinquireditemcount', None)
3490        self.sub_workload_item_count = kwargs.get('sub_workload_item_count', None)
3491        self.workload_item_type = 'AzureVmWorkloadItem'
3492
3493
3494class AzureVmWorkloadProtectableItem(WorkloadProtectableItem):
3495    """Azure VM workload-specific protectable item.
3496
3497    You probably want to use the sub-classes and not this class directly. Known
3498    sub-classes are: AzureVmWorkloadSAPAseSystemProtectableItem,
3499    AzureVmWorkloadSAPHanaDatabaseProtectableItem,
3500    AzureVmWorkloadSAPHanaSystemProtectableItem,
3501    AzureVmWorkloadSQLAvailabilityGroupProtectableItem,
3502    AzureVmWorkloadSQLDatabaseProtectableItem,
3503    AzureVmWorkloadSQLInstanceProtectableItem
3504
3505    All required parameters must be populated in order to send to Azure.
3506
3507    :param backup_management_type: Type of backup management to backup an
3508     item.
3509    :type backup_management_type: str
3510    :param workload_type: Type of workload for the backup management
3511    :type workload_type: str
3512    :param friendly_name: Friendly name of the backup item.
3513    :type friendly_name: str
3514    :param protection_state: State of the back up item. Possible values
3515     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
3516     'ProtectionFailed'
3517    :type protection_state: str or
3518     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
3519    :param protectable_item_type: Required. Constant filled by server.
3520    :type protectable_item_type: str
3521    :param parent_name: Name for instance or AG
3522    :type parent_name: str
3523    :param parent_unique_name: Parent Unique Name is added to provide the
3524     service formatted URI Name of the Parent
3525     Only Applicable for data bases where the parent would be either Instance
3526     or a SQL AG.
3527    :type parent_unique_name: str
3528    :param server_name: Host/Cluster Name for instance or AG
3529    :type server_name: str
3530    :param is_auto_protectable: Indicates if protectable item is
3531     auto-protectable
3532    :type is_auto_protectable: bool
3533    :param is_auto_protected: Indicates if protectable item is auto-protected
3534    :type is_auto_protected: bool
3535    :param subinquireditemcount: For instance or AG, indicates number of DB's
3536     present
3537    :type subinquireditemcount: int
3538    :param subprotectableitemcount: For instance or AG, indicates number of
3539     DB's to be protected
3540    :type subprotectableitemcount: int
3541    :param prebackupvalidation: Pre-backup validation for protectable objects
3542    :type prebackupvalidation:
3543     ~azure.mgmt.recoveryservicesbackup.models.PreBackupValidation
3544    """
3545
3546    _validation = {
3547        'protectable_item_type': {'required': True},
3548    }
3549
3550    _attribute_map = {
3551        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3552        'workload_type': {'key': 'workloadType', 'type': 'str'},
3553        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3554        'protection_state': {'key': 'protectionState', 'type': 'str'},
3555        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
3556        'parent_name': {'key': 'parentName', 'type': 'str'},
3557        'parent_unique_name': {'key': 'parentUniqueName', 'type': 'str'},
3558        'server_name': {'key': 'serverName', 'type': 'str'},
3559        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
3560        'is_auto_protected': {'key': 'isAutoProtected', 'type': 'bool'},
3561        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
3562        'subprotectableitemcount': {'key': 'subprotectableitemcount', 'type': 'int'},
3563        'prebackupvalidation': {'key': 'prebackupvalidation', 'type': 'PreBackupValidation'},
3564    }
3565
3566    _subtype_map = {
3567        'protectable_item_type': {'SAPAseSystem': 'AzureVmWorkloadSAPAseSystemProtectableItem', 'SAPHanaDatabase': 'AzureVmWorkloadSAPHanaDatabaseProtectableItem', 'SAPHanaSystem': 'AzureVmWorkloadSAPHanaSystemProtectableItem', 'SQLAvailabilityGroupContainer': 'AzureVmWorkloadSQLAvailabilityGroupProtectableItem', 'SQLDataBase': 'AzureVmWorkloadSQLDatabaseProtectableItem', 'SQLInstance': 'AzureVmWorkloadSQLInstanceProtectableItem'}
3568    }
3569
3570    def __init__(self, **kwargs):
3571        super(AzureVmWorkloadProtectableItem, self).__init__(**kwargs)
3572        self.parent_name = kwargs.get('parent_name', None)
3573        self.parent_unique_name = kwargs.get('parent_unique_name', None)
3574        self.server_name = kwargs.get('server_name', None)
3575        self.is_auto_protectable = kwargs.get('is_auto_protectable', None)
3576        self.is_auto_protected = kwargs.get('is_auto_protected', None)
3577        self.subinquireditemcount = kwargs.get('subinquireditemcount', None)
3578        self.subprotectableitemcount = kwargs.get('subprotectableitemcount', None)
3579        self.prebackupvalidation = kwargs.get('prebackupvalidation', None)
3580        self.protectable_item_type = 'AzureVmWorkloadProtectableItem'
3581
3582
3583class AzureVmWorkloadProtectedItem(ProtectedItem):
3584    """Azure VM workload-specific protected item.
3585
3586    You probably want to use the sub-classes and not this class directly. Known
3587    sub-classes are: AzureVmWorkloadSAPAseDatabaseProtectedItem,
3588    AzureVmWorkloadSAPHanaDatabaseProtectedItem,
3589    AzureVmWorkloadSQLDatabaseProtectedItem
3590
3591    All required parameters must be populated in order to send to Azure.
3592
3593    :param backup_management_type: Type of backup management for the backed up
3594     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
3595     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
3596     'DefaultBackup'
3597    :type backup_management_type: str or
3598     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
3599    :param workload_type: Type of workload this item represents. Possible
3600     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
3601     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
3602     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
3603     'SAPAseDatabase'
3604    :type workload_type: str or
3605     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
3606    :param container_name: Unique name of container
3607    :type container_name: str
3608    :param source_resource_id: ARM ID of the resource to be backed up.
3609    :type source_resource_id: str
3610    :param policy_id: ID of the backup policy with which this item is backed
3611     up.
3612    :type policy_id: str
3613    :param last_recovery_point: Timestamp when the last (latest) backup copy
3614     was created for this backup item.
3615    :type last_recovery_point: datetime
3616    :param backup_set_name: Name of the backup set the backup item belongs to
3617    :type backup_set_name: str
3618    :param create_mode: Create mode to indicate recovery of existing soft
3619     deleted data source or creation of new data source. Possible values
3620     include: 'Invalid', 'Default', 'Recover'
3621    :type create_mode: str or
3622     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
3623    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
3624    :type deferred_delete_time_in_utc: datetime
3625    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
3626     is scheduled for deferred delete
3627    :type is_scheduled_for_deferred_delete: bool
3628    :param deferred_delete_time_remaining: Time remaining before the DS marked
3629     for deferred delete is permanently deleted
3630    :type deferred_delete_time_remaining: str
3631    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
3632     deferred deleted DS is to be purged soon
3633    :type is_deferred_delete_schedule_upcoming: bool
3634    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
3635     moved into Pause state
3636    :type is_rehydrate: bool
3637    :param resource_guard_operation_requests: ResourceGuardOperationRequests
3638     on which LAC check will be performed
3639    :type resource_guard_operation_requests: list[str]
3640    :param protected_item_type: Required. Constant filled by server.
3641    :type protected_item_type: str
3642    :param friendly_name: Friendly name of the DB represented by this backup
3643     item.
3644    :type friendly_name: str
3645    :param server_name: Host/Cluster Name for instance or AG
3646    :type server_name: str
3647    :param parent_name: Parent name of the DB such as Instance or Availability
3648     Group.
3649    :type parent_name: str
3650    :param parent_type: Parent type of protected item, example: for a DB,
3651     standalone server or distributed
3652    :type parent_type: str
3653    :param protection_status: Backup status of this backup item.
3654    :type protection_status: str
3655    :param protection_state: Backup state of this backup item. Possible values
3656     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
3657     'ProtectionStopped', 'ProtectionPaused'
3658    :type protection_state: str or
3659     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
3660    :param last_backup_status: Last backup operation status. Possible values:
3661     Healthy, Unhealthy. Possible values include: 'Invalid', 'Healthy',
3662     'Unhealthy', 'IRPending'
3663    :type last_backup_status: str or
3664     ~azure.mgmt.recoveryservicesbackup.models.LastBackupStatus
3665    :param last_backup_time: Timestamp of the last backup operation on this
3666     backup item.
3667    :type last_backup_time: datetime
3668    :param last_backup_error_detail: Error details in last backup
3669    :type last_backup_error_detail:
3670     ~azure.mgmt.recoveryservicesbackup.models.ErrorDetail
3671    :param protected_item_data_source_id: Data ID of the protected item.
3672    :type protected_item_data_source_id: str
3673    :param protected_item_health_status: Health status of the backup item,
3674     evaluated based on last heartbeat received. Possible values include:
3675     'Invalid', 'Healthy', 'Unhealthy', 'NotReachable', 'IRPending'
3676    :type protected_item_health_status: str or
3677     ~azure.mgmt.recoveryservicesbackup.models.ProtectedItemHealthStatus
3678    :param extended_info: Additional information for this backup item.
3679    :type extended_info:
3680     ~azure.mgmt.recoveryservicesbackup.models.AzureVmWorkloadProtectedItemExtendedInfo
3681    :param kpis_healths: Health details of different KPIs
3682    :type kpis_healths: dict[str,
3683     ~azure.mgmt.recoveryservicesbackup.models.KPIResourceHealthDetails]
3684    """
3685
3686    _validation = {
3687        'protected_item_type': {'required': True},
3688    }
3689
3690    _attribute_map = {
3691        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3692        'workload_type': {'key': 'workloadType', 'type': 'str'},
3693        'container_name': {'key': 'containerName', 'type': 'str'},
3694        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
3695        'policy_id': {'key': 'policyId', 'type': 'str'},
3696        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
3697        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
3698        'create_mode': {'key': 'createMode', 'type': 'str'},
3699        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
3700        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
3701        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
3702        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
3703        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
3704        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
3705        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
3706        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3707        'server_name': {'key': 'serverName', 'type': 'str'},
3708        'parent_name': {'key': 'parentName', 'type': 'str'},
3709        'parent_type': {'key': 'parentType', 'type': 'str'},
3710        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
3711        'protection_state': {'key': 'protectionState', 'type': 'str'},
3712        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
3713        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
3714        'last_backup_error_detail': {'key': 'lastBackupErrorDetail', 'type': 'ErrorDetail'},
3715        'protected_item_data_source_id': {'key': 'protectedItemDataSourceId', 'type': 'str'},
3716        'protected_item_health_status': {'key': 'protectedItemHealthStatus', 'type': 'str'},
3717        'extended_info': {'key': 'extendedInfo', 'type': 'AzureVmWorkloadProtectedItemExtendedInfo'},
3718        'kpis_healths': {'key': 'kpisHealths', 'type': '{KPIResourceHealthDetails}'},
3719    }
3720
3721    _subtype_map = {
3722        'protected_item_type': {'AzureVmWorkloadSAPAseDatabase': 'AzureVmWorkloadSAPAseDatabaseProtectedItem', 'AzureVmWorkloadSAPHanaDatabase': 'AzureVmWorkloadSAPHanaDatabaseProtectedItem', 'AzureVmWorkloadSQLDatabase': 'AzureVmWorkloadSQLDatabaseProtectedItem'}
3723    }
3724
3725    def __init__(self, **kwargs):
3726        super(AzureVmWorkloadProtectedItem, self).__init__(**kwargs)
3727        self.friendly_name = kwargs.get('friendly_name', None)
3728        self.server_name = kwargs.get('server_name', None)
3729        self.parent_name = kwargs.get('parent_name', None)
3730        self.parent_type = kwargs.get('parent_type', None)
3731        self.protection_status = kwargs.get('protection_status', None)
3732        self.protection_state = kwargs.get('protection_state', None)
3733        self.last_backup_status = kwargs.get('last_backup_status', None)
3734        self.last_backup_time = kwargs.get('last_backup_time', None)
3735        self.last_backup_error_detail = kwargs.get('last_backup_error_detail', None)
3736        self.protected_item_data_source_id = kwargs.get('protected_item_data_source_id', None)
3737        self.protected_item_health_status = kwargs.get('protected_item_health_status', None)
3738        self.extended_info = kwargs.get('extended_info', None)
3739        self.kpis_healths = kwargs.get('kpis_healths', None)
3740        self.protected_item_type = 'AzureVmWorkloadProtectedItem'
3741
3742
3743class AzureVmWorkloadProtectedItemExtendedInfo(Model):
3744    """Additional information on Azure Workload for SQL specific backup item.
3745
3746    :param oldest_recovery_point: The oldest backup copy available for this
3747     backup item.
3748    :type oldest_recovery_point: datetime
3749    :param recovery_point_count: Number of backup copies available for this
3750     backup item.
3751    :type recovery_point_count: int
3752    :param policy_state: Indicates consistency of policy object and policy
3753     applied to this backup item.
3754    :type policy_state: str
3755    """
3756
3757    _attribute_map = {
3758        'oldest_recovery_point': {'key': 'oldestRecoveryPoint', 'type': 'iso-8601'},
3759        'recovery_point_count': {'key': 'recoveryPointCount', 'type': 'int'},
3760        'policy_state': {'key': 'policyState', 'type': 'str'},
3761    }
3762
3763    def __init__(self, **kwargs):
3764        super(AzureVmWorkloadProtectedItemExtendedInfo, self).__init__(**kwargs)
3765        self.oldest_recovery_point = kwargs.get('oldest_recovery_point', None)
3766        self.recovery_point_count = kwargs.get('recovery_point_count', None)
3767        self.policy_state = kwargs.get('policy_state', None)
3768
3769
3770class AzureVmWorkloadProtectionPolicy(ProtectionPolicy):
3771    """Azure VM (Mercury) workload-specific backup policy.
3772
3773    All required parameters must be populated in order to send to Azure.
3774
3775    :param protected_items_count: Number of items associated with this policy.
3776    :type protected_items_count: int
3777    :param resource_guard_operation_requests: ResourceGuard Operation Requests
3778    :type resource_guard_operation_requests: list[str]
3779    :param backup_management_type: Required. Constant filled by server.
3780    :type backup_management_type: str
3781    :param work_load_type: Type of workload for the backup management.
3782     Possible values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb',
3783     'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
3784     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
3785     'SAPAseDatabase'
3786    :type work_load_type: str or
3787     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
3788    :param settings: Common settings for the backup management
3789    :type settings: ~azure.mgmt.recoveryservicesbackup.models.Settings
3790    :param sub_protection_policy: List of sub-protection policies which
3791     includes schedule and retention
3792    :type sub_protection_policy:
3793     list[~azure.mgmt.recoveryservicesbackup.models.SubProtectionPolicy]
3794    :param make_policy_consistent: Fix the policy inconsistency
3795    :type make_policy_consistent: bool
3796    """
3797
3798    _validation = {
3799        'backup_management_type': {'required': True},
3800    }
3801
3802    _attribute_map = {
3803        'protected_items_count': {'key': 'protectedItemsCount', 'type': 'int'},
3804        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
3805        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3806        'work_load_type': {'key': 'workLoadType', 'type': 'str'},
3807        'settings': {'key': 'settings', 'type': 'Settings'},
3808        'sub_protection_policy': {'key': 'subProtectionPolicy', 'type': '[SubProtectionPolicy]'},
3809        'make_policy_consistent': {'key': 'makePolicyConsistent', 'type': 'bool'},
3810    }
3811
3812    def __init__(self, **kwargs):
3813        super(AzureVmWorkloadProtectionPolicy, self).__init__(**kwargs)
3814        self.work_load_type = kwargs.get('work_load_type', None)
3815        self.settings = kwargs.get('settings', None)
3816        self.sub_protection_policy = kwargs.get('sub_protection_policy', None)
3817        self.make_policy_consistent = kwargs.get('make_policy_consistent', None)
3818        self.backup_management_type = 'AzureWorkload'
3819
3820
3821class AzureVmWorkloadSAPAseDatabaseProtectedItem(AzureVmWorkloadProtectedItem):
3822    """Azure VM workload-specific protected item representing SAP ASE Database.
3823
3824    All required parameters must be populated in order to send to Azure.
3825
3826    :param backup_management_type: Type of backup management for the backed up
3827     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
3828     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
3829     'DefaultBackup'
3830    :type backup_management_type: str or
3831     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
3832    :param workload_type: Type of workload this item represents. Possible
3833     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
3834     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
3835     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
3836     'SAPAseDatabase'
3837    :type workload_type: str or
3838     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
3839    :param container_name: Unique name of container
3840    :type container_name: str
3841    :param source_resource_id: ARM ID of the resource to be backed up.
3842    :type source_resource_id: str
3843    :param policy_id: ID of the backup policy with which this item is backed
3844     up.
3845    :type policy_id: str
3846    :param last_recovery_point: Timestamp when the last (latest) backup copy
3847     was created for this backup item.
3848    :type last_recovery_point: datetime
3849    :param backup_set_name: Name of the backup set the backup item belongs to
3850    :type backup_set_name: str
3851    :param create_mode: Create mode to indicate recovery of existing soft
3852     deleted data source or creation of new data source. Possible values
3853     include: 'Invalid', 'Default', 'Recover'
3854    :type create_mode: str or
3855     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
3856    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
3857    :type deferred_delete_time_in_utc: datetime
3858    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
3859     is scheduled for deferred delete
3860    :type is_scheduled_for_deferred_delete: bool
3861    :param deferred_delete_time_remaining: Time remaining before the DS marked
3862     for deferred delete is permanently deleted
3863    :type deferred_delete_time_remaining: str
3864    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
3865     deferred deleted DS is to be purged soon
3866    :type is_deferred_delete_schedule_upcoming: bool
3867    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
3868     moved into Pause state
3869    :type is_rehydrate: bool
3870    :param resource_guard_operation_requests: ResourceGuardOperationRequests
3871     on which LAC check will be performed
3872    :type resource_guard_operation_requests: list[str]
3873    :param protected_item_type: Required. Constant filled by server.
3874    :type protected_item_type: str
3875    :param friendly_name: Friendly name of the DB represented by this backup
3876     item.
3877    :type friendly_name: str
3878    :param server_name: Host/Cluster Name for instance or AG
3879    :type server_name: str
3880    :param parent_name: Parent name of the DB such as Instance or Availability
3881     Group.
3882    :type parent_name: str
3883    :param parent_type: Parent type of protected item, example: for a DB,
3884     standalone server or distributed
3885    :type parent_type: str
3886    :param protection_status: Backup status of this backup item.
3887    :type protection_status: str
3888    :param protection_state: Backup state of this backup item. Possible values
3889     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
3890     'ProtectionStopped', 'ProtectionPaused'
3891    :type protection_state: str or
3892     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
3893    :param last_backup_status: Last backup operation status. Possible values:
3894     Healthy, Unhealthy. Possible values include: 'Invalid', 'Healthy',
3895     'Unhealthy', 'IRPending'
3896    :type last_backup_status: str or
3897     ~azure.mgmt.recoveryservicesbackup.models.LastBackupStatus
3898    :param last_backup_time: Timestamp of the last backup operation on this
3899     backup item.
3900    :type last_backup_time: datetime
3901    :param last_backup_error_detail: Error details in last backup
3902    :type last_backup_error_detail:
3903     ~azure.mgmt.recoveryservicesbackup.models.ErrorDetail
3904    :param protected_item_data_source_id: Data ID of the protected item.
3905    :type protected_item_data_source_id: str
3906    :param protected_item_health_status: Health status of the backup item,
3907     evaluated based on last heartbeat received. Possible values include:
3908     'Invalid', 'Healthy', 'Unhealthy', 'NotReachable', 'IRPending'
3909    :type protected_item_health_status: str or
3910     ~azure.mgmt.recoveryservicesbackup.models.ProtectedItemHealthStatus
3911    :param extended_info: Additional information for this backup item.
3912    :type extended_info:
3913     ~azure.mgmt.recoveryservicesbackup.models.AzureVmWorkloadProtectedItemExtendedInfo
3914    :param kpis_healths: Health details of different KPIs
3915    :type kpis_healths: dict[str,
3916     ~azure.mgmt.recoveryservicesbackup.models.KPIResourceHealthDetails]
3917    """
3918
3919    _validation = {
3920        'protected_item_type': {'required': True},
3921    }
3922
3923    _attribute_map = {
3924        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3925        'workload_type': {'key': 'workloadType', 'type': 'str'},
3926        'container_name': {'key': 'containerName', 'type': 'str'},
3927        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
3928        'policy_id': {'key': 'policyId', 'type': 'str'},
3929        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
3930        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
3931        'create_mode': {'key': 'createMode', 'type': 'str'},
3932        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
3933        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
3934        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
3935        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
3936        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
3937        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
3938        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
3939        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
3940        'server_name': {'key': 'serverName', 'type': 'str'},
3941        'parent_name': {'key': 'parentName', 'type': 'str'},
3942        'parent_type': {'key': 'parentType', 'type': 'str'},
3943        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
3944        'protection_state': {'key': 'protectionState', 'type': 'str'},
3945        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
3946        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
3947        'last_backup_error_detail': {'key': 'lastBackupErrorDetail', 'type': 'ErrorDetail'},
3948        'protected_item_data_source_id': {'key': 'protectedItemDataSourceId', 'type': 'str'},
3949        'protected_item_health_status': {'key': 'protectedItemHealthStatus', 'type': 'str'},
3950        'extended_info': {'key': 'extendedInfo', 'type': 'AzureVmWorkloadProtectedItemExtendedInfo'},
3951        'kpis_healths': {'key': 'kpisHealths', 'type': '{KPIResourceHealthDetails}'},
3952    }
3953
3954    def __init__(self, **kwargs):
3955        super(AzureVmWorkloadSAPAseDatabaseProtectedItem, self).__init__(**kwargs)
3956        self.protected_item_type = 'AzureVmWorkloadSAPAseDatabase'
3957
3958
3959class AzureVmWorkloadSAPAseDatabaseWorkloadItem(AzureVmWorkloadItem):
3960    """Azure VM workload-specific workload item representing SAP ASE Database.
3961
3962    All required parameters must be populated in order to send to Azure.
3963
3964    :param backup_management_type: Type of backup management to backup an
3965     item.
3966    :type backup_management_type: str
3967    :param workload_type: Type of workload for the backup management
3968    :type workload_type: str
3969    :param friendly_name: Friendly name of the backup item.
3970    :type friendly_name: str
3971    :param protection_state: State of the back up item. Possible values
3972     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
3973     'ProtectionFailed'
3974    :type protection_state: str or
3975     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
3976    :param workload_item_type: Required. Constant filled by server.
3977    :type workload_item_type: str
3978    :param parent_name: Name for instance or AG
3979    :type parent_name: str
3980    :param server_name: Host/Cluster Name for instance or AG
3981    :type server_name: str
3982    :param is_auto_protectable: Indicates if workload item is auto-protectable
3983    :type is_auto_protectable: bool
3984    :param subinquireditemcount: For instance or AG, indicates number of DB's
3985     present
3986    :type subinquireditemcount: int
3987    :param sub_workload_item_count: For instance or AG, indicates number of
3988     DB's to be protected
3989    :type sub_workload_item_count: int
3990    """
3991
3992    _validation = {
3993        'workload_item_type': {'required': True},
3994    }
3995
3996    _attribute_map = {
3997        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
3998        'workload_type': {'key': 'workloadType', 'type': 'str'},
3999        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4000        'protection_state': {'key': 'protectionState', 'type': 'str'},
4001        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
4002        'parent_name': {'key': 'parentName', 'type': 'str'},
4003        'server_name': {'key': 'serverName', 'type': 'str'},
4004        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4005        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4006        'sub_workload_item_count': {'key': 'subWorkloadItemCount', 'type': 'int'},
4007    }
4008
4009    def __init__(self, **kwargs):
4010        super(AzureVmWorkloadSAPAseDatabaseWorkloadItem, self).__init__(**kwargs)
4011        self.workload_item_type = 'SAPAseDatabase'
4012
4013
4014class AzureVmWorkloadSAPAseSystemProtectableItem(AzureVmWorkloadProtectableItem):
4015    """Azure VM workload-specific protectable item representing SAP ASE System.
4016
4017    All required parameters must be populated in order to send to Azure.
4018
4019    :param backup_management_type: Type of backup management to backup an
4020     item.
4021    :type backup_management_type: str
4022    :param workload_type: Type of workload for the backup management
4023    :type workload_type: str
4024    :param friendly_name: Friendly name of the backup item.
4025    :type friendly_name: str
4026    :param protection_state: State of the back up item. Possible values
4027     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4028     'ProtectionFailed'
4029    :type protection_state: str or
4030     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4031    :param protectable_item_type: Required. Constant filled by server.
4032    :type protectable_item_type: str
4033    :param parent_name: Name for instance or AG
4034    :type parent_name: str
4035    :param parent_unique_name: Parent Unique Name is added to provide the
4036     service formatted URI Name of the Parent
4037     Only Applicable for data bases where the parent would be either Instance
4038     or a SQL AG.
4039    :type parent_unique_name: str
4040    :param server_name: Host/Cluster Name for instance or AG
4041    :type server_name: str
4042    :param is_auto_protectable: Indicates if protectable item is
4043     auto-protectable
4044    :type is_auto_protectable: bool
4045    :param is_auto_protected: Indicates if protectable item is auto-protected
4046    :type is_auto_protected: bool
4047    :param subinquireditemcount: For instance or AG, indicates number of DB's
4048     present
4049    :type subinquireditemcount: int
4050    :param subprotectableitemcount: For instance or AG, indicates number of
4051     DB's to be protected
4052    :type subprotectableitemcount: int
4053    :param prebackupvalidation: Pre-backup validation for protectable objects
4054    :type prebackupvalidation:
4055     ~azure.mgmt.recoveryservicesbackup.models.PreBackupValidation
4056    """
4057
4058    _validation = {
4059        'protectable_item_type': {'required': True},
4060    }
4061
4062    _attribute_map = {
4063        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4064        'workload_type': {'key': 'workloadType', 'type': 'str'},
4065        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4066        'protection_state': {'key': 'protectionState', 'type': 'str'},
4067        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
4068        'parent_name': {'key': 'parentName', 'type': 'str'},
4069        'parent_unique_name': {'key': 'parentUniqueName', 'type': 'str'},
4070        'server_name': {'key': 'serverName', 'type': 'str'},
4071        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4072        'is_auto_protected': {'key': 'isAutoProtected', 'type': 'bool'},
4073        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4074        'subprotectableitemcount': {'key': 'subprotectableitemcount', 'type': 'int'},
4075        'prebackupvalidation': {'key': 'prebackupvalidation', 'type': 'PreBackupValidation'},
4076    }
4077
4078    def __init__(self, **kwargs):
4079        super(AzureVmWorkloadSAPAseSystemProtectableItem, self).__init__(**kwargs)
4080        self.protectable_item_type = 'SAPAseSystem'
4081
4082
4083class AzureVmWorkloadSAPAseSystemWorkloadItem(AzureVmWorkloadItem):
4084    """Azure VM workload-specific workload item representing SAP ASE System.
4085
4086    All required parameters must be populated in order to send to Azure.
4087
4088    :param backup_management_type: Type of backup management to backup an
4089     item.
4090    :type backup_management_type: str
4091    :param workload_type: Type of workload for the backup management
4092    :type workload_type: str
4093    :param friendly_name: Friendly name of the backup item.
4094    :type friendly_name: str
4095    :param protection_state: State of the back up item. Possible values
4096     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4097     'ProtectionFailed'
4098    :type protection_state: str or
4099     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4100    :param workload_item_type: Required. Constant filled by server.
4101    :type workload_item_type: str
4102    :param parent_name: Name for instance or AG
4103    :type parent_name: str
4104    :param server_name: Host/Cluster Name for instance or AG
4105    :type server_name: str
4106    :param is_auto_protectable: Indicates if workload item is auto-protectable
4107    :type is_auto_protectable: bool
4108    :param subinquireditemcount: For instance or AG, indicates number of DB's
4109     present
4110    :type subinquireditemcount: int
4111    :param sub_workload_item_count: For instance or AG, indicates number of
4112     DB's to be protected
4113    :type sub_workload_item_count: int
4114    """
4115
4116    _validation = {
4117        'workload_item_type': {'required': True},
4118    }
4119
4120    _attribute_map = {
4121        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4122        'workload_type': {'key': 'workloadType', 'type': 'str'},
4123        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4124        'protection_state': {'key': 'protectionState', 'type': 'str'},
4125        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
4126        'parent_name': {'key': 'parentName', 'type': 'str'},
4127        'server_name': {'key': 'serverName', 'type': 'str'},
4128        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4129        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4130        'sub_workload_item_count': {'key': 'subWorkloadItemCount', 'type': 'int'},
4131    }
4132
4133    def __init__(self, **kwargs):
4134        super(AzureVmWorkloadSAPAseSystemWorkloadItem, self).__init__(**kwargs)
4135        self.workload_item_type = 'SAPAseSystem'
4136
4137
4138class AzureVmWorkloadSAPHanaDatabaseProtectableItem(AzureVmWorkloadProtectableItem):
4139    """Azure VM workload-specific protectable item representing SAP HANA Database.
4140
4141    All required parameters must be populated in order to send to Azure.
4142
4143    :param backup_management_type: Type of backup management to backup an
4144     item.
4145    :type backup_management_type: str
4146    :param workload_type: Type of workload for the backup management
4147    :type workload_type: str
4148    :param friendly_name: Friendly name of the backup item.
4149    :type friendly_name: str
4150    :param protection_state: State of the back up item. Possible values
4151     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4152     'ProtectionFailed'
4153    :type protection_state: str or
4154     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4155    :param protectable_item_type: Required. Constant filled by server.
4156    :type protectable_item_type: str
4157    :param parent_name: Name for instance or AG
4158    :type parent_name: str
4159    :param parent_unique_name: Parent Unique Name is added to provide the
4160     service formatted URI Name of the Parent
4161     Only Applicable for data bases where the parent would be either Instance
4162     or a SQL AG.
4163    :type parent_unique_name: str
4164    :param server_name: Host/Cluster Name for instance or AG
4165    :type server_name: str
4166    :param is_auto_protectable: Indicates if protectable item is
4167     auto-protectable
4168    :type is_auto_protectable: bool
4169    :param is_auto_protected: Indicates if protectable item is auto-protected
4170    :type is_auto_protected: bool
4171    :param subinquireditemcount: For instance or AG, indicates number of DB's
4172     present
4173    :type subinquireditemcount: int
4174    :param subprotectableitemcount: For instance or AG, indicates number of
4175     DB's to be protected
4176    :type subprotectableitemcount: int
4177    :param prebackupvalidation: Pre-backup validation for protectable objects
4178    :type prebackupvalidation:
4179     ~azure.mgmt.recoveryservicesbackup.models.PreBackupValidation
4180    """
4181
4182    _validation = {
4183        'protectable_item_type': {'required': True},
4184    }
4185
4186    _attribute_map = {
4187        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4188        'workload_type': {'key': 'workloadType', 'type': 'str'},
4189        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4190        'protection_state': {'key': 'protectionState', 'type': 'str'},
4191        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
4192        'parent_name': {'key': 'parentName', 'type': 'str'},
4193        'parent_unique_name': {'key': 'parentUniqueName', 'type': 'str'},
4194        'server_name': {'key': 'serverName', 'type': 'str'},
4195        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4196        'is_auto_protected': {'key': 'isAutoProtected', 'type': 'bool'},
4197        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4198        'subprotectableitemcount': {'key': 'subprotectableitemcount', 'type': 'int'},
4199        'prebackupvalidation': {'key': 'prebackupvalidation', 'type': 'PreBackupValidation'},
4200    }
4201
4202    def __init__(self, **kwargs):
4203        super(AzureVmWorkloadSAPHanaDatabaseProtectableItem, self).__init__(**kwargs)
4204        self.protectable_item_type = 'SAPHanaDatabase'
4205
4206
4207class AzureVmWorkloadSAPHanaDatabaseProtectedItem(AzureVmWorkloadProtectedItem):
4208    """Azure VM workload-specific protected item representing SAP HANA Database.
4209
4210    All required parameters must be populated in order to send to Azure.
4211
4212    :param backup_management_type: Type of backup management for the backed up
4213     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
4214     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
4215     'DefaultBackup'
4216    :type backup_management_type: str or
4217     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
4218    :param workload_type: Type of workload this item represents. Possible
4219     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
4220     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
4221     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
4222     'SAPAseDatabase'
4223    :type workload_type: str or
4224     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
4225    :param container_name: Unique name of container
4226    :type container_name: str
4227    :param source_resource_id: ARM ID of the resource to be backed up.
4228    :type source_resource_id: str
4229    :param policy_id: ID of the backup policy with which this item is backed
4230     up.
4231    :type policy_id: str
4232    :param last_recovery_point: Timestamp when the last (latest) backup copy
4233     was created for this backup item.
4234    :type last_recovery_point: datetime
4235    :param backup_set_name: Name of the backup set the backup item belongs to
4236    :type backup_set_name: str
4237    :param create_mode: Create mode to indicate recovery of existing soft
4238     deleted data source or creation of new data source. Possible values
4239     include: 'Invalid', 'Default', 'Recover'
4240    :type create_mode: str or
4241     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
4242    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
4243    :type deferred_delete_time_in_utc: datetime
4244    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
4245     is scheduled for deferred delete
4246    :type is_scheduled_for_deferred_delete: bool
4247    :param deferred_delete_time_remaining: Time remaining before the DS marked
4248     for deferred delete is permanently deleted
4249    :type deferred_delete_time_remaining: str
4250    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
4251     deferred deleted DS is to be purged soon
4252    :type is_deferred_delete_schedule_upcoming: bool
4253    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
4254     moved into Pause state
4255    :type is_rehydrate: bool
4256    :param resource_guard_operation_requests: ResourceGuardOperationRequests
4257     on which LAC check will be performed
4258    :type resource_guard_operation_requests: list[str]
4259    :param protected_item_type: Required. Constant filled by server.
4260    :type protected_item_type: str
4261    :param friendly_name: Friendly name of the DB represented by this backup
4262     item.
4263    :type friendly_name: str
4264    :param server_name: Host/Cluster Name for instance or AG
4265    :type server_name: str
4266    :param parent_name: Parent name of the DB such as Instance or Availability
4267     Group.
4268    :type parent_name: str
4269    :param parent_type: Parent type of protected item, example: for a DB,
4270     standalone server or distributed
4271    :type parent_type: str
4272    :param protection_status: Backup status of this backup item.
4273    :type protection_status: str
4274    :param protection_state: Backup state of this backup item. Possible values
4275     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
4276     'ProtectionStopped', 'ProtectionPaused'
4277    :type protection_state: str or
4278     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
4279    :param last_backup_status: Last backup operation status. Possible values:
4280     Healthy, Unhealthy. Possible values include: 'Invalid', 'Healthy',
4281     'Unhealthy', 'IRPending'
4282    :type last_backup_status: str or
4283     ~azure.mgmt.recoveryservicesbackup.models.LastBackupStatus
4284    :param last_backup_time: Timestamp of the last backup operation on this
4285     backup item.
4286    :type last_backup_time: datetime
4287    :param last_backup_error_detail: Error details in last backup
4288    :type last_backup_error_detail:
4289     ~azure.mgmt.recoveryservicesbackup.models.ErrorDetail
4290    :param protected_item_data_source_id: Data ID of the protected item.
4291    :type protected_item_data_source_id: str
4292    :param protected_item_health_status: Health status of the backup item,
4293     evaluated based on last heartbeat received. Possible values include:
4294     'Invalid', 'Healthy', 'Unhealthy', 'NotReachable', 'IRPending'
4295    :type protected_item_health_status: str or
4296     ~azure.mgmt.recoveryservicesbackup.models.ProtectedItemHealthStatus
4297    :param extended_info: Additional information for this backup item.
4298    :type extended_info:
4299     ~azure.mgmt.recoveryservicesbackup.models.AzureVmWorkloadProtectedItemExtendedInfo
4300    :param kpis_healths: Health details of different KPIs
4301    :type kpis_healths: dict[str,
4302     ~azure.mgmt.recoveryservicesbackup.models.KPIResourceHealthDetails]
4303    """
4304
4305    _validation = {
4306        'protected_item_type': {'required': True},
4307    }
4308
4309    _attribute_map = {
4310        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4311        'workload_type': {'key': 'workloadType', 'type': 'str'},
4312        'container_name': {'key': 'containerName', 'type': 'str'},
4313        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
4314        'policy_id': {'key': 'policyId', 'type': 'str'},
4315        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
4316        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
4317        'create_mode': {'key': 'createMode', 'type': 'str'},
4318        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
4319        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
4320        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
4321        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
4322        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
4323        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
4324        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
4325        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4326        'server_name': {'key': 'serverName', 'type': 'str'},
4327        'parent_name': {'key': 'parentName', 'type': 'str'},
4328        'parent_type': {'key': 'parentType', 'type': 'str'},
4329        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
4330        'protection_state': {'key': 'protectionState', 'type': 'str'},
4331        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
4332        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
4333        'last_backup_error_detail': {'key': 'lastBackupErrorDetail', 'type': 'ErrorDetail'},
4334        'protected_item_data_source_id': {'key': 'protectedItemDataSourceId', 'type': 'str'},
4335        'protected_item_health_status': {'key': 'protectedItemHealthStatus', 'type': 'str'},
4336        'extended_info': {'key': 'extendedInfo', 'type': 'AzureVmWorkloadProtectedItemExtendedInfo'},
4337        'kpis_healths': {'key': 'kpisHealths', 'type': '{KPIResourceHealthDetails}'},
4338    }
4339
4340    def __init__(self, **kwargs):
4341        super(AzureVmWorkloadSAPHanaDatabaseProtectedItem, self).__init__(**kwargs)
4342        self.protected_item_type = 'AzureVmWorkloadSAPHanaDatabase'
4343
4344
4345class AzureVmWorkloadSAPHanaDatabaseWorkloadItem(AzureVmWorkloadItem):
4346    """Azure VM workload-specific workload item representing SAP HANA Database.
4347
4348    All required parameters must be populated in order to send to Azure.
4349
4350    :param backup_management_type: Type of backup management to backup an
4351     item.
4352    :type backup_management_type: str
4353    :param workload_type: Type of workload for the backup management
4354    :type workload_type: str
4355    :param friendly_name: Friendly name of the backup item.
4356    :type friendly_name: str
4357    :param protection_state: State of the back up item. Possible values
4358     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4359     'ProtectionFailed'
4360    :type protection_state: str or
4361     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4362    :param workload_item_type: Required. Constant filled by server.
4363    :type workload_item_type: str
4364    :param parent_name: Name for instance or AG
4365    :type parent_name: str
4366    :param server_name: Host/Cluster Name for instance or AG
4367    :type server_name: str
4368    :param is_auto_protectable: Indicates if workload item is auto-protectable
4369    :type is_auto_protectable: bool
4370    :param subinquireditemcount: For instance or AG, indicates number of DB's
4371     present
4372    :type subinquireditemcount: int
4373    :param sub_workload_item_count: For instance or AG, indicates number of
4374     DB's to be protected
4375    :type sub_workload_item_count: int
4376    """
4377
4378    _validation = {
4379        'workload_item_type': {'required': True},
4380    }
4381
4382    _attribute_map = {
4383        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4384        'workload_type': {'key': 'workloadType', 'type': 'str'},
4385        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4386        'protection_state': {'key': 'protectionState', 'type': 'str'},
4387        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
4388        'parent_name': {'key': 'parentName', 'type': 'str'},
4389        'server_name': {'key': 'serverName', 'type': 'str'},
4390        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4391        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4392        'sub_workload_item_count': {'key': 'subWorkloadItemCount', 'type': 'int'},
4393    }
4394
4395    def __init__(self, **kwargs):
4396        super(AzureVmWorkloadSAPHanaDatabaseWorkloadItem, self).__init__(**kwargs)
4397        self.workload_item_type = 'SAPHanaDatabase'
4398
4399
4400class AzureVmWorkloadSAPHanaSystemProtectableItem(AzureVmWorkloadProtectableItem):
4401    """Azure VM workload-specific protectable item representing SAP HANA System.
4402
4403    All required parameters must be populated in order to send to Azure.
4404
4405    :param backup_management_type: Type of backup management to backup an
4406     item.
4407    :type backup_management_type: str
4408    :param workload_type: Type of workload for the backup management
4409    :type workload_type: str
4410    :param friendly_name: Friendly name of the backup item.
4411    :type friendly_name: str
4412    :param protection_state: State of the back up item. Possible values
4413     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4414     'ProtectionFailed'
4415    :type protection_state: str or
4416     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4417    :param protectable_item_type: Required. Constant filled by server.
4418    :type protectable_item_type: str
4419    :param parent_name: Name for instance or AG
4420    :type parent_name: str
4421    :param parent_unique_name: Parent Unique Name is added to provide the
4422     service formatted URI Name of the Parent
4423     Only Applicable for data bases where the parent would be either Instance
4424     or a SQL AG.
4425    :type parent_unique_name: str
4426    :param server_name: Host/Cluster Name for instance or AG
4427    :type server_name: str
4428    :param is_auto_protectable: Indicates if protectable item is
4429     auto-protectable
4430    :type is_auto_protectable: bool
4431    :param is_auto_protected: Indicates if protectable item is auto-protected
4432    :type is_auto_protected: bool
4433    :param subinquireditemcount: For instance or AG, indicates number of DB's
4434     present
4435    :type subinquireditemcount: int
4436    :param subprotectableitemcount: For instance or AG, indicates number of
4437     DB's to be protected
4438    :type subprotectableitemcount: int
4439    :param prebackupvalidation: Pre-backup validation for protectable objects
4440    :type prebackupvalidation:
4441     ~azure.mgmt.recoveryservicesbackup.models.PreBackupValidation
4442    """
4443
4444    _validation = {
4445        'protectable_item_type': {'required': True},
4446    }
4447
4448    _attribute_map = {
4449        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4450        'workload_type': {'key': 'workloadType', 'type': 'str'},
4451        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4452        'protection_state': {'key': 'protectionState', 'type': 'str'},
4453        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
4454        'parent_name': {'key': 'parentName', 'type': 'str'},
4455        'parent_unique_name': {'key': 'parentUniqueName', 'type': 'str'},
4456        'server_name': {'key': 'serverName', 'type': 'str'},
4457        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4458        'is_auto_protected': {'key': 'isAutoProtected', 'type': 'bool'},
4459        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4460        'subprotectableitemcount': {'key': 'subprotectableitemcount', 'type': 'int'},
4461        'prebackupvalidation': {'key': 'prebackupvalidation', 'type': 'PreBackupValidation'},
4462    }
4463
4464    def __init__(self, **kwargs):
4465        super(AzureVmWorkloadSAPHanaSystemProtectableItem, self).__init__(**kwargs)
4466        self.protectable_item_type = 'SAPHanaSystem'
4467
4468
4469class AzureVmWorkloadSAPHanaSystemWorkloadItem(AzureVmWorkloadItem):
4470    """Azure VM workload-specific workload item representing SAP HANA System.
4471
4472    All required parameters must be populated in order to send to Azure.
4473
4474    :param backup_management_type: Type of backup management to backup an
4475     item.
4476    :type backup_management_type: str
4477    :param workload_type: Type of workload for the backup management
4478    :type workload_type: str
4479    :param friendly_name: Friendly name of the backup item.
4480    :type friendly_name: str
4481    :param protection_state: State of the back up item. Possible values
4482     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4483     'ProtectionFailed'
4484    :type protection_state: str or
4485     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4486    :param workload_item_type: Required. Constant filled by server.
4487    :type workload_item_type: str
4488    :param parent_name: Name for instance or AG
4489    :type parent_name: str
4490    :param server_name: Host/Cluster Name for instance or AG
4491    :type server_name: str
4492    :param is_auto_protectable: Indicates if workload item is auto-protectable
4493    :type is_auto_protectable: bool
4494    :param subinquireditemcount: For instance or AG, indicates number of DB's
4495     present
4496    :type subinquireditemcount: int
4497    :param sub_workload_item_count: For instance or AG, indicates number of
4498     DB's to be protected
4499    :type sub_workload_item_count: int
4500    """
4501
4502    _validation = {
4503        'workload_item_type': {'required': True},
4504    }
4505
4506    _attribute_map = {
4507        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4508        'workload_type': {'key': 'workloadType', 'type': 'str'},
4509        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4510        'protection_state': {'key': 'protectionState', 'type': 'str'},
4511        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
4512        'parent_name': {'key': 'parentName', 'type': 'str'},
4513        'server_name': {'key': 'serverName', 'type': 'str'},
4514        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4515        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4516        'sub_workload_item_count': {'key': 'subWorkloadItemCount', 'type': 'int'},
4517    }
4518
4519    def __init__(self, **kwargs):
4520        super(AzureVmWorkloadSAPHanaSystemWorkloadItem, self).__init__(**kwargs)
4521        self.workload_item_type = 'SAPHanaSystem'
4522
4523
4524class AzureVmWorkloadSQLAvailabilityGroupProtectableItem(AzureVmWorkloadProtectableItem):
4525    """Azure VM workload-specific protectable item representing SQL Availability
4526    Group.
4527
4528    All required parameters must be populated in order to send to Azure.
4529
4530    :param backup_management_type: Type of backup management to backup an
4531     item.
4532    :type backup_management_type: str
4533    :param workload_type: Type of workload for the backup management
4534    :type workload_type: str
4535    :param friendly_name: Friendly name of the backup item.
4536    :type friendly_name: str
4537    :param protection_state: State of the back up item. Possible values
4538     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4539     'ProtectionFailed'
4540    :type protection_state: str or
4541     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4542    :param protectable_item_type: Required. Constant filled by server.
4543    :type protectable_item_type: str
4544    :param parent_name: Name for instance or AG
4545    :type parent_name: str
4546    :param parent_unique_name: Parent Unique Name is added to provide the
4547     service formatted URI Name of the Parent
4548     Only Applicable for data bases where the parent would be either Instance
4549     or a SQL AG.
4550    :type parent_unique_name: str
4551    :param server_name: Host/Cluster Name for instance or AG
4552    :type server_name: str
4553    :param is_auto_protectable: Indicates if protectable item is
4554     auto-protectable
4555    :type is_auto_protectable: bool
4556    :param is_auto_protected: Indicates if protectable item is auto-protected
4557    :type is_auto_protected: bool
4558    :param subinquireditemcount: For instance or AG, indicates number of DB's
4559     present
4560    :type subinquireditemcount: int
4561    :param subprotectableitemcount: For instance or AG, indicates number of
4562     DB's to be protected
4563    :type subprotectableitemcount: int
4564    :param prebackupvalidation: Pre-backup validation for protectable objects
4565    :type prebackupvalidation:
4566     ~azure.mgmt.recoveryservicesbackup.models.PreBackupValidation
4567    """
4568
4569    _validation = {
4570        'protectable_item_type': {'required': True},
4571    }
4572
4573    _attribute_map = {
4574        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4575        'workload_type': {'key': 'workloadType', 'type': 'str'},
4576        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4577        'protection_state': {'key': 'protectionState', 'type': 'str'},
4578        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
4579        'parent_name': {'key': 'parentName', 'type': 'str'},
4580        'parent_unique_name': {'key': 'parentUniqueName', 'type': 'str'},
4581        'server_name': {'key': 'serverName', 'type': 'str'},
4582        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4583        'is_auto_protected': {'key': 'isAutoProtected', 'type': 'bool'},
4584        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4585        'subprotectableitemcount': {'key': 'subprotectableitemcount', 'type': 'int'},
4586        'prebackupvalidation': {'key': 'prebackupvalidation', 'type': 'PreBackupValidation'},
4587    }
4588
4589    def __init__(self, **kwargs):
4590        super(AzureVmWorkloadSQLAvailabilityGroupProtectableItem, self).__init__(**kwargs)
4591        self.protectable_item_type = 'SQLAvailabilityGroupContainer'
4592
4593
4594class AzureVmWorkloadSQLDatabaseProtectableItem(AzureVmWorkloadProtectableItem):
4595    """Azure VM workload-specific protectable item representing SQL Database.
4596
4597    All required parameters must be populated in order to send to Azure.
4598
4599    :param backup_management_type: Type of backup management to backup an
4600     item.
4601    :type backup_management_type: str
4602    :param workload_type: Type of workload for the backup management
4603    :type workload_type: str
4604    :param friendly_name: Friendly name of the backup item.
4605    :type friendly_name: str
4606    :param protection_state: State of the back up item. Possible values
4607     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4608     'ProtectionFailed'
4609    :type protection_state: str or
4610     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4611    :param protectable_item_type: Required. Constant filled by server.
4612    :type protectable_item_type: str
4613    :param parent_name: Name for instance or AG
4614    :type parent_name: str
4615    :param parent_unique_name: Parent Unique Name is added to provide the
4616     service formatted URI Name of the Parent
4617     Only Applicable for data bases where the parent would be either Instance
4618     or a SQL AG.
4619    :type parent_unique_name: str
4620    :param server_name: Host/Cluster Name for instance or AG
4621    :type server_name: str
4622    :param is_auto_protectable: Indicates if protectable item is
4623     auto-protectable
4624    :type is_auto_protectable: bool
4625    :param is_auto_protected: Indicates if protectable item is auto-protected
4626    :type is_auto_protected: bool
4627    :param subinquireditemcount: For instance or AG, indicates number of DB's
4628     present
4629    :type subinquireditemcount: int
4630    :param subprotectableitemcount: For instance or AG, indicates number of
4631     DB's to be protected
4632    :type subprotectableitemcount: int
4633    :param prebackupvalidation: Pre-backup validation for protectable objects
4634    :type prebackupvalidation:
4635     ~azure.mgmt.recoveryservicesbackup.models.PreBackupValidation
4636    """
4637
4638    _validation = {
4639        'protectable_item_type': {'required': True},
4640    }
4641
4642    _attribute_map = {
4643        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4644        'workload_type': {'key': 'workloadType', 'type': 'str'},
4645        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4646        'protection_state': {'key': 'protectionState', 'type': 'str'},
4647        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
4648        'parent_name': {'key': 'parentName', 'type': 'str'},
4649        'parent_unique_name': {'key': 'parentUniqueName', 'type': 'str'},
4650        'server_name': {'key': 'serverName', 'type': 'str'},
4651        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4652        'is_auto_protected': {'key': 'isAutoProtected', 'type': 'bool'},
4653        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4654        'subprotectableitemcount': {'key': 'subprotectableitemcount', 'type': 'int'},
4655        'prebackupvalidation': {'key': 'prebackupvalidation', 'type': 'PreBackupValidation'},
4656    }
4657
4658    def __init__(self, **kwargs):
4659        super(AzureVmWorkloadSQLDatabaseProtectableItem, self).__init__(**kwargs)
4660        self.protectable_item_type = 'SQLDataBase'
4661
4662
4663class AzureVmWorkloadSQLDatabaseProtectedItem(AzureVmWorkloadProtectedItem):
4664    """Azure VM workload-specific protected item representing SQL Database.
4665
4666    All required parameters must be populated in order to send to Azure.
4667
4668    :param backup_management_type: Type of backup management for the backed up
4669     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
4670     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
4671     'DefaultBackup'
4672    :type backup_management_type: str or
4673     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
4674    :param workload_type: Type of workload this item represents. Possible
4675     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
4676     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
4677     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
4678     'SAPAseDatabase'
4679    :type workload_type: str or
4680     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
4681    :param container_name: Unique name of container
4682    :type container_name: str
4683    :param source_resource_id: ARM ID of the resource to be backed up.
4684    :type source_resource_id: str
4685    :param policy_id: ID of the backup policy with which this item is backed
4686     up.
4687    :type policy_id: str
4688    :param last_recovery_point: Timestamp when the last (latest) backup copy
4689     was created for this backup item.
4690    :type last_recovery_point: datetime
4691    :param backup_set_name: Name of the backup set the backup item belongs to
4692    :type backup_set_name: str
4693    :param create_mode: Create mode to indicate recovery of existing soft
4694     deleted data source or creation of new data source. Possible values
4695     include: 'Invalid', 'Default', 'Recover'
4696    :type create_mode: str or
4697     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
4698    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
4699    :type deferred_delete_time_in_utc: datetime
4700    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
4701     is scheduled for deferred delete
4702    :type is_scheduled_for_deferred_delete: bool
4703    :param deferred_delete_time_remaining: Time remaining before the DS marked
4704     for deferred delete is permanently deleted
4705    :type deferred_delete_time_remaining: str
4706    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
4707     deferred deleted DS is to be purged soon
4708    :type is_deferred_delete_schedule_upcoming: bool
4709    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
4710     moved into Pause state
4711    :type is_rehydrate: bool
4712    :param resource_guard_operation_requests: ResourceGuardOperationRequests
4713     on which LAC check will be performed
4714    :type resource_guard_operation_requests: list[str]
4715    :param protected_item_type: Required. Constant filled by server.
4716    :type protected_item_type: str
4717    :param friendly_name: Friendly name of the DB represented by this backup
4718     item.
4719    :type friendly_name: str
4720    :param server_name: Host/Cluster Name for instance or AG
4721    :type server_name: str
4722    :param parent_name: Parent name of the DB such as Instance or Availability
4723     Group.
4724    :type parent_name: str
4725    :param parent_type: Parent type of protected item, example: for a DB,
4726     standalone server or distributed
4727    :type parent_type: str
4728    :param protection_status: Backup status of this backup item.
4729    :type protection_status: str
4730    :param protection_state: Backup state of this backup item. Possible values
4731     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
4732     'ProtectionStopped', 'ProtectionPaused'
4733    :type protection_state: str or
4734     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
4735    :param last_backup_status: Last backup operation status. Possible values:
4736     Healthy, Unhealthy. Possible values include: 'Invalid', 'Healthy',
4737     'Unhealthy', 'IRPending'
4738    :type last_backup_status: str or
4739     ~azure.mgmt.recoveryservicesbackup.models.LastBackupStatus
4740    :param last_backup_time: Timestamp of the last backup operation on this
4741     backup item.
4742    :type last_backup_time: datetime
4743    :param last_backup_error_detail: Error details in last backup
4744    :type last_backup_error_detail:
4745     ~azure.mgmt.recoveryservicesbackup.models.ErrorDetail
4746    :param protected_item_data_source_id: Data ID of the protected item.
4747    :type protected_item_data_source_id: str
4748    :param protected_item_health_status: Health status of the backup item,
4749     evaluated based on last heartbeat received. Possible values include:
4750     'Invalid', 'Healthy', 'Unhealthy', 'NotReachable', 'IRPending'
4751    :type protected_item_health_status: str or
4752     ~azure.mgmt.recoveryservicesbackup.models.ProtectedItemHealthStatus
4753    :param extended_info: Additional information for this backup item.
4754    :type extended_info:
4755     ~azure.mgmt.recoveryservicesbackup.models.AzureVmWorkloadProtectedItemExtendedInfo
4756    :param kpis_healths: Health details of different KPIs
4757    :type kpis_healths: dict[str,
4758     ~azure.mgmt.recoveryservicesbackup.models.KPIResourceHealthDetails]
4759    """
4760
4761    _validation = {
4762        'protected_item_type': {'required': True},
4763    }
4764
4765    _attribute_map = {
4766        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4767        'workload_type': {'key': 'workloadType', 'type': 'str'},
4768        'container_name': {'key': 'containerName', 'type': 'str'},
4769        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
4770        'policy_id': {'key': 'policyId', 'type': 'str'},
4771        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
4772        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
4773        'create_mode': {'key': 'createMode', 'type': 'str'},
4774        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
4775        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
4776        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
4777        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
4778        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
4779        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
4780        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
4781        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4782        'server_name': {'key': 'serverName', 'type': 'str'},
4783        'parent_name': {'key': 'parentName', 'type': 'str'},
4784        'parent_type': {'key': 'parentType', 'type': 'str'},
4785        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
4786        'protection_state': {'key': 'protectionState', 'type': 'str'},
4787        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
4788        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
4789        'last_backup_error_detail': {'key': 'lastBackupErrorDetail', 'type': 'ErrorDetail'},
4790        'protected_item_data_source_id': {'key': 'protectedItemDataSourceId', 'type': 'str'},
4791        'protected_item_health_status': {'key': 'protectedItemHealthStatus', 'type': 'str'},
4792        'extended_info': {'key': 'extendedInfo', 'type': 'AzureVmWorkloadProtectedItemExtendedInfo'},
4793        'kpis_healths': {'key': 'kpisHealths', 'type': '{KPIResourceHealthDetails}'},
4794    }
4795
4796    def __init__(self, **kwargs):
4797        super(AzureVmWorkloadSQLDatabaseProtectedItem, self).__init__(**kwargs)
4798        self.protected_item_type = 'AzureVmWorkloadSQLDatabase'
4799
4800
4801class AzureVmWorkloadSQLDatabaseWorkloadItem(AzureVmWorkloadItem):
4802    """Azure VM workload-specific workload item representing SQL Database.
4803
4804    All required parameters must be populated in order to send to Azure.
4805
4806    :param backup_management_type: Type of backup management to backup an
4807     item.
4808    :type backup_management_type: str
4809    :param workload_type: Type of workload for the backup management
4810    :type workload_type: str
4811    :param friendly_name: Friendly name of the backup item.
4812    :type friendly_name: str
4813    :param protection_state: State of the back up item. Possible values
4814     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4815     'ProtectionFailed'
4816    :type protection_state: str or
4817     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4818    :param workload_item_type: Required. Constant filled by server.
4819    :type workload_item_type: str
4820    :param parent_name: Name for instance or AG
4821    :type parent_name: str
4822    :param server_name: Host/Cluster Name for instance or AG
4823    :type server_name: str
4824    :param is_auto_protectable: Indicates if workload item is auto-protectable
4825    :type is_auto_protectable: bool
4826    :param subinquireditemcount: For instance or AG, indicates number of DB's
4827     present
4828    :type subinquireditemcount: int
4829    :param sub_workload_item_count: For instance or AG, indicates number of
4830     DB's to be protected
4831    :type sub_workload_item_count: int
4832    """
4833
4834    _validation = {
4835        'workload_item_type': {'required': True},
4836    }
4837
4838    _attribute_map = {
4839        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4840        'workload_type': {'key': 'workloadType', 'type': 'str'},
4841        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4842        'protection_state': {'key': 'protectionState', 'type': 'str'},
4843        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
4844        'parent_name': {'key': 'parentName', 'type': 'str'},
4845        'server_name': {'key': 'serverName', 'type': 'str'},
4846        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4847        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4848        'sub_workload_item_count': {'key': 'subWorkloadItemCount', 'type': 'int'},
4849    }
4850
4851    def __init__(self, **kwargs):
4852        super(AzureVmWorkloadSQLDatabaseWorkloadItem, self).__init__(**kwargs)
4853        self.workload_item_type = 'SQLDataBase'
4854
4855
4856class AzureVmWorkloadSQLInstanceProtectableItem(AzureVmWorkloadProtectableItem):
4857    """Azure VM workload-specific protectable item representing SQL Instance.
4858
4859    All required parameters must be populated in order to send to Azure.
4860
4861    :param backup_management_type: Type of backup management to backup an
4862     item.
4863    :type backup_management_type: str
4864    :param workload_type: Type of workload for the backup management
4865    :type workload_type: str
4866    :param friendly_name: Friendly name of the backup item.
4867    :type friendly_name: str
4868    :param protection_state: State of the back up item. Possible values
4869     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4870     'ProtectionFailed'
4871    :type protection_state: str or
4872     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4873    :param protectable_item_type: Required. Constant filled by server.
4874    :type protectable_item_type: str
4875    :param parent_name: Name for instance or AG
4876    :type parent_name: str
4877    :param parent_unique_name: Parent Unique Name is added to provide the
4878     service formatted URI Name of the Parent
4879     Only Applicable for data bases where the parent would be either Instance
4880     or a SQL AG.
4881    :type parent_unique_name: str
4882    :param server_name: Host/Cluster Name for instance or AG
4883    :type server_name: str
4884    :param is_auto_protectable: Indicates if protectable item is
4885     auto-protectable
4886    :type is_auto_protectable: bool
4887    :param is_auto_protected: Indicates if protectable item is auto-protected
4888    :type is_auto_protected: bool
4889    :param subinquireditemcount: For instance or AG, indicates number of DB's
4890     present
4891    :type subinquireditemcount: int
4892    :param subprotectableitemcount: For instance or AG, indicates number of
4893     DB's to be protected
4894    :type subprotectableitemcount: int
4895    :param prebackupvalidation: Pre-backup validation for protectable objects
4896    :type prebackupvalidation:
4897     ~azure.mgmt.recoveryservicesbackup.models.PreBackupValidation
4898    """
4899
4900    _validation = {
4901        'protectable_item_type': {'required': True},
4902    }
4903
4904    _attribute_map = {
4905        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4906        'workload_type': {'key': 'workloadType', 'type': 'str'},
4907        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4908        'protection_state': {'key': 'protectionState', 'type': 'str'},
4909        'protectable_item_type': {'key': 'protectableItemType', 'type': 'str'},
4910        'parent_name': {'key': 'parentName', 'type': 'str'},
4911        'parent_unique_name': {'key': 'parentUniqueName', 'type': 'str'},
4912        'server_name': {'key': 'serverName', 'type': 'str'},
4913        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4914        'is_auto_protected': {'key': 'isAutoProtected', 'type': 'bool'},
4915        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4916        'subprotectableitemcount': {'key': 'subprotectableitemcount', 'type': 'int'},
4917        'prebackupvalidation': {'key': 'prebackupvalidation', 'type': 'PreBackupValidation'},
4918    }
4919
4920    def __init__(self, **kwargs):
4921        super(AzureVmWorkloadSQLInstanceProtectableItem, self).__init__(**kwargs)
4922        self.protectable_item_type = 'SQLInstance'
4923
4924
4925class AzureVmWorkloadSQLInstanceWorkloadItem(AzureVmWorkloadItem):
4926    """Azure VM workload-specific workload item representing SQL Instance.
4927
4928    All required parameters must be populated in order to send to Azure.
4929
4930    :param backup_management_type: Type of backup management to backup an
4931     item.
4932    :type backup_management_type: str
4933    :param workload_type: Type of workload for the backup management
4934    :type workload_type: str
4935    :param friendly_name: Friendly name of the backup item.
4936    :type friendly_name: str
4937    :param protection_state: State of the back up item. Possible values
4938     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
4939     'ProtectionFailed'
4940    :type protection_state: str or
4941     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
4942    :param workload_item_type: Required. Constant filled by server.
4943    :type workload_item_type: str
4944    :param parent_name: Name for instance or AG
4945    :type parent_name: str
4946    :param server_name: Host/Cluster Name for instance or AG
4947    :type server_name: str
4948    :param is_auto_protectable: Indicates if workload item is auto-protectable
4949    :type is_auto_protectable: bool
4950    :param subinquireditemcount: For instance or AG, indicates number of DB's
4951     present
4952    :type subinquireditemcount: int
4953    :param sub_workload_item_count: For instance or AG, indicates number of
4954     DB's to be protected
4955    :type sub_workload_item_count: int
4956    :param data_directory_paths: Data Directory Paths for default directories
4957    :type data_directory_paths:
4958     list[~azure.mgmt.recoveryservicesbackup.models.SQLDataDirectory]
4959    """
4960
4961    _validation = {
4962        'workload_item_type': {'required': True},
4963    }
4964
4965    _attribute_map = {
4966        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
4967        'workload_type': {'key': 'workloadType', 'type': 'str'},
4968        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
4969        'protection_state': {'key': 'protectionState', 'type': 'str'},
4970        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
4971        'parent_name': {'key': 'parentName', 'type': 'str'},
4972        'server_name': {'key': 'serverName', 'type': 'str'},
4973        'is_auto_protectable': {'key': 'isAutoProtectable', 'type': 'bool'},
4974        'subinquireditemcount': {'key': 'subinquireditemcount', 'type': 'int'},
4975        'sub_workload_item_count': {'key': 'subWorkloadItemCount', 'type': 'int'},
4976        'data_directory_paths': {'key': 'dataDirectoryPaths', 'type': '[SQLDataDirectory]'},
4977    }
4978
4979    def __init__(self, **kwargs):
4980        super(AzureVmWorkloadSQLInstanceWorkloadItem, self).__init__(**kwargs)
4981        self.data_directory_paths = kwargs.get('data_directory_paths', None)
4982        self.workload_item_type = 'SQLInstance'
4983
4984
4985class AzureWorkloadAutoProtectionIntent(AzureRecoveryServiceVaultProtectionIntent):
4986    """Azure Recovery Services Vault specific protection intent item.
4987
4988    You probably want to use the sub-classes and not this class directly. Known
4989    sub-classes are: AzureWorkloadSQLAutoProtectionIntent
4990
4991    All required parameters must be populated in order to send to Azure.
4992
4993    :param backup_management_type: Type of backup management for the backed up
4994     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
4995     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
4996     'DefaultBackup'
4997    :type backup_management_type: str or
4998     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
4999    :param source_resource_id: ARM ID of the resource to be backed up.
5000    :type source_resource_id: str
5001    :param item_id: ID of the item which is getting protected, In case of
5002     Azure Vm , it is ProtectedItemId
5003    :type item_id: str
5004    :param policy_id: ID of the backup policy with which this item is backed
5005     up.
5006    :type policy_id: str
5007    :param protection_state: Backup state of this backup item. Possible values
5008     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
5009     'ProtectionFailed'
5010    :type protection_state: str or
5011     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
5012    :param protection_intent_item_type: Required. Constant filled by server.
5013    :type protection_intent_item_type: str
5014    """
5015
5016    _validation = {
5017        'protection_intent_item_type': {'required': True},
5018    }
5019
5020    _attribute_map = {
5021        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
5022        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
5023        'item_id': {'key': 'itemId', 'type': 'str'},
5024        'policy_id': {'key': 'policyId', 'type': 'str'},
5025        'protection_state': {'key': 'protectionState', 'type': 'str'},
5026        'protection_intent_item_type': {'key': 'protectionIntentItemType', 'type': 'str'},
5027    }
5028
5029    _subtype_map = {
5030        'protection_intent_item_type': {'AzureWorkloadSQLAutoProtectionIntent': 'AzureWorkloadSQLAutoProtectionIntent'}
5031    }
5032
5033    def __init__(self, **kwargs):
5034        super(AzureWorkloadAutoProtectionIntent, self).__init__(**kwargs)
5035        self.protection_intent_item_type = 'AzureWorkloadAutoProtectionIntent'
5036
5037
5038class AzureWorkloadBackupRequest(BackupRequest):
5039    """AzureWorkload workload-specific backup request.
5040
5041    All required parameters must be populated in order to send to Azure.
5042
5043    :param object_type: Required. Constant filled by server.
5044    :type object_type: str
5045    :param backup_type: Type of backup, viz. Full, Differential, Log or
5046     CopyOnlyFull. Possible values include: 'Invalid', 'Full', 'Differential',
5047     'Log', 'CopyOnlyFull', 'Incremental'
5048    :type backup_type: str or
5049     ~azure.mgmt.recoveryservicesbackup.models.BackupType
5050    :param enable_compression: Bool for Compression setting
5051    :type enable_compression: bool
5052    :param recovery_point_expiry_time_in_utc: Backup copy will expire after
5053     the time specified (UTC).
5054    :type recovery_point_expiry_time_in_utc: datetime
5055    """
5056
5057    _validation = {
5058        'object_type': {'required': True},
5059    }
5060
5061    _attribute_map = {
5062        'object_type': {'key': 'objectType', 'type': 'str'},
5063        'backup_type': {'key': 'backupType', 'type': 'str'},
5064        'enable_compression': {'key': 'enableCompression', 'type': 'bool'},
5065        'recovery_point_expiry_time_in_utc': {'key': 'recoveryPointExpiryTimeInUTC', 'type': 'iso-8601'},
5066    }
5067
5068    def __init__(self, **kwargs):
5069        super(AzureWorkloadBackupRequest, self).__init__(**kwargs)
5070        self.backup_type = kwargs.get('backup_type', None)
5071        self.enable_compression = kwargs.get('enable_compression', None)
5072        self.recovery_point_expiry_time_in_utc = kwargs.get('recovery_point_expiry_time_in_utc', None)
5073        self.object_type = 'AzureWorkloadBackupRequest'
5074
5075
5076class AzureWorkloadContainerExtendedInfo(Model):
5077    """Extended information of the container.
5078
5079    :param host_server_name: Host Os Name in case of Stand Alone and Cluster
5080     Name in case of distributed container.
5081    :type host_server_name: str
5082    :param inquiry_info: Inquiry Status for the container.
5083    :type inquiry_info: ~azure.mgmt.recoveryservicesbackup.models.InquiryInfo
5084    :param nodes_list: List of the nodes in case of distributed container.
5085    :type nodes_list:
5086     list[~azure.mgmt.recoveryservicesbackup.models.DistributedNodesInfo]
5087    """
5088
5089    _attribute_map = {
5090        'host_server_name': {'key': 'hostServerName', 'type': 'str'},
5091        'inquiry_info': {'key': 'inquiryInfo', 'type': 'InquiryInfo'},
5092        'nodes_list': {'key': 'nodesList', 'type': '[DistributedNodesInfo]'},
5093    }
5094
5095    def __init__(self, **kwargs):
5096        super(AzureWorkloadContainerExtendedInfo, self).__init__(**kwargs)
5097        self.host_server_name = kwargs.get('host_server_name', None)
5098        self.inquiry_info = kwargs.get('inquiry_info', None)
5099        self.nodes_list = kwargs.get('nodes_list', None)
5100
5101
5102class AzureWorkloadErrorInfo(Model):
5103    """Azure storage specific error information.
5104
5105    :param error_code: Error code.
5106    :type error_code: int
5107    :param error_string: Localized error string.
5108    :type error_string: str
5109    :param error_title: Title: Typically, the entity that the error pertains
5110     to.
5111    :type error_title: str
5112    :param recommendations: List of localized recommendations for above error
5113     code.
5114    :type recommendations: list[str]
5115    :param additional_details: Additional details for above error code.
5116    :type additional_details: str
5117    """
5118
5119    _attribute_map = {
5120        'error_code': {'key': 'errorCode', 'type': 'int'},
5121        'error_string': {'key': 'errorString', 'type': 'str'},
5122        'error_title': {'key': 'errorTitle', 'type': 'str'},
5123        'recommendations': {'key': 'recommendations', 'type': '[str]'},
5124        'additional_details': {'key': 'additionalDetails', 'type': 'str'},
5125    }
5126
5127    def __init__(self, **kwargs):
5128        super(AzureWorkloadErrorInfo, self).__init__(**kwargs)
5129        self.error_code = kwargs.get('error_code', None)
5130        self.error_string = kwargs.get('error_string', None)
5131        self.error_title = kwargs.get('error_title', None)
5132        self.recommendations = kwargs.get('recommendations', None)
5133        self.additional_details = kwargs.get('additional_details', None)
5134
5135
5136class AzureWorkloadJob(Job):
5137    """Azure storage specific job.
5138
5139    All required parameters must be populated in order to send to Azure.
5140
5141    :param entity_friendly_name: Friendly name of the entity on which the
5142     current job is executing.
5143    :type entity_friendly_name: str
5144    :param backup_management_type: Backup management type to execute the
5145     current job. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
5146     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
5147     'DefaultBackup'
5148    :type backup_management_type: str or
5149     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
5150    :param operation: The operation name.
5151    :type operation: str
5152    :param status: Job status.
5153    :type status: str
5154    :param start_time: The start time.
5155    :type start_time: datetime
5156    :param end_time: The end time.
5157    :type end_time: datetime
5158    :param activity_id: ActivityId of job.
5159    :type activity_id: str
5160    :param job_type: Required. Constant filled by server.
5161    :type job_type: str
5162    :param workload_type: Workload type of the job
5163    :type workload_type: str
5164    :param duration: Time elapsed during the execution of this job.
5165    :type duration: timedelta
5166    :param actions_info: Gets or sets the state/actions applicable on this job
5167     like cancel/retry.
5168    :type actions_info: list[str or
5169     ~azure.mgmt.recoveryservicesbackup.models.JobSupportedAction]
5170    :param error_details: Error details on execution of this job.
5171    :type error_details:
5172     list[~azure.mgmt.recoveryservicesbackup.models.AzureWorkloadErrorInfo]
5173    :param extended_info: Additional information about the job.
5174    :type extended_info:
5175     ~azure.mgmt.recoveryservicesbackup.models.AzureWorkloadJobExtendedInfo
5176    """
5177
5178    _validation = {
5179        'job_type': {'required': True},
5180    }
5181
5182    _attribute_map = {
5183        'entity_friendly_name': {'key': 'entityFriendlyName', 'type': 'str'},
5184        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
5185        'operation': {'key': 'operation', 'type': 'str'},
5186        'status': {'key': 'status', 'type': 'str'},
5187        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
5188        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
5189        'activity_id': {'key': 'activityId', 'type': 'str'},
5190        'job_type': {'key': 'jobType', 'type': 'str'},
5191        'workload_type': {'key': 'workloadType', 'type': 'str'},
5192        'duration': {'key': 'duration', 'type': 'duration'},
5193        'actions_info': {'key': 'actionsInfo', 'type': '[JobSupportedAction]'},
5194        'error_details': {'key': 'errorDetails', 'type': '[AzureWorkloadErrorInfo]'},
5195        'extended_info': {'key': 'extendedInfo', 'type': 'AzureWorkloadJobExtendedInfo'},
5196    }
5197
5198    def __init__(self, **kwargs):
5199        super(AzureWorkloadJob, self).__init__(**kwargs)
5200        self.workload_type = kwargs.get('workload_type', None)
5201        self.duration = kwargs.get('duration', None)
5202        self.actions_info = kwargs.get('actions_info', None)
5203        self.error_details = kwargs.get('error_details', None)
5204        self.extended_info = kwargs.get('extended_info', None)
5205        self.job_type = 'AzureWorkloadJob'
5206
5207
5208class AzureWorkloadJobExtendedInfo(Model):
5209    """Azure VM workload-specific additional information for job.
5210
5211    :param tasks_list: List of tasks for this job
5212    :type tasks_list:
5213     list[~azure.mgmt.recoveryservicesbackup.models.AzureWorkloadJobTaskDetails]
5214    :param property_bag: Job properties.
5215    :type property_bag: dict[str, str]
5216    :param dynamic_error_message: Non localized error message on job
5217     execution.
5218    :type dynamic_error_message: str
5219    """
5220
5221    _attribute_map = {
5222        'tasks_list': {'key': 'tasksList', 'type': '[AzureWorkloadJobTaskDetails]'},
5223        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
5224        'dynamic_error_message': {'key': 'dynamicErrorMessage', 'type': 'str'},
5225    }
5226
5227    def __init__(self, **kwargs):
5228        super(AzureWorkloadJobExtendedInfo, self).__init__(**kwargs)
5229        self.tasks_list = kwargs.get('tasks_list', None)
5230        self.property_bag = kwargs.get('property_bag', None)
5231        self.dynamic_error_message = kwargs.get('dynamic_error_message', None)
5232
5233
5234class AzureWorkloadJobTaskDetails(Model):
5235    """Azure VM workload specific job task details.
5236
5237    :param task_id: The task display name.
5238    :type task_id: str
5239    :param status: The status.
5240    :type status: str
5241    """
5242
5243    _attribute_map = {
5244        'task_id': {'key': 'taskId', 'type': 'str'},
5245        'status': {'key': 'status', 'type': 'str'},
5246    }
5247
5248    def __init__(self, **kwargs):
5249        super(AzureWorkloadJobTaskDetails, self).__init__(**kwargs)
5250        self.task_id = kwargs.get('task_id', None)
5251        self.status = kwargs.get('status', None)
5252
5253
5254class AzureWorkloadRecoveryPoint(RecoveryPoint):
5255    """Workload specific recovery point, specifically encapsulates full/diff
5256    recovery point.
5257
5258    You probably want to use the sub-classes and not this class directly. Known
5259    sub-classes are: AzureWorkloadPointInTimeRecoveryPoint,
5260    AzureWorkloadSAPHanaRecoveryPoint, AzureWorkloadSQLRecoveryPoint
5261
5262    Variables are only populated by the server, and will be ignored when
5263    sending a request.
5264
5265    All required parameters must be populated in order to send to Azure.
5266
5267    :param object_type: Required. Constant filled by server.
5268    :type object_type: str
5269    :ivar recovery_point_time_in_utc: UTC time at which recovery point was
5270     created
5271    :vartype recovery_point_time_in_utc: datetime
5272    :ivar type: Type of restore point. Possible values include: 'Invalid',
5273     'Full', 'Log', 'Differential', 'Incremental'
5274    :vartype type: str or
5275     ~azure.mgmt.recoveryservicesbackup.models.RestorePointType
5276    :param recovery_point_tier_details: Recovery point tier information.
5277    :type recovery_point_tier_details:
5278     list[~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierInformation]
5279    :param recovery_point_move_readiness_info: Eligibility of RP to be moved
5280     to another tier
5281    :type recovery_point_move_readiness_info: dict[str,
5282     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointMoveReadinessInfo]
5283    """
5284
5285    _validation = {
5286        'object_type': {'required': True},
5287        'recovery_point_time_in_utc': {'readonly': True},
5288        'type': {'readonly': True},
5289    }
5290
5291    _attribute_map = {
5292        'object_type': {'key': 'objectType', 'type': 'str'},
5293        'recovery_point_time_in_utc': {'key': 'recoveryPointTimeInUTC', 'type': 'iso-8601'},
5294        'type': {'key': 'type', 'type': 'str'},
5295        'recovery_point_tier_details': {'key': 'recoveryPointTierDetails', 'type': '[RecoveryPointTierInformation]'},
5296        'recovery_point_move_readiness_info': {'key': 'recoveryPointMoveReadinessInfo', 'type': '{RecoveryPointMoveReadinessInfo}'},
5297    }
5298
5299    _subtype_map = {
5300        'object_type': {'AzureWorkloadPointInTimeRecoveryPoint': 'AzureWorkloadPointInTimeRecoveryPoint', 'AzureWorkloadSAPHanaRecoveryPoint': 'AzureWorkloadSAPHanaRecoveryPoint', 'AzureWorkloadSQLRecoveryPoint': 'AzureWorkloadSQLRecoveryPoint'}
5301    }
5302
5303    def __init__(self, **kwargs):
5304        super(AzureWorkloadRecoveryPoint, self).__init__(**kwargs)
5305        self.recovery_point_time_in_utc = None
5306        self.type = None
5307        self.recovery_point_tier_details = kwargs.get('recovery_point_tier_details', None)
5308        self.recovery_point_move_readiness_info = kwargs.get('recovery_point_move_readiness_info', None)
5309        self.object_type = 'AzureWorkloadRecoveryPoint'
5310
5311
5312class AzureWorkloadPointInTimeRecoveryPoint(AzureWorkloadRecoveryPoint):
5313    """Recovery point specific to PointInTime.
5314
5315    You probably want to use the sub-classes and not this class directly. Known
5316    sub-classes are: AzureWorkloadSAPHanaPointInTimeRecoveryPoint
5317
5318    Variables are only populated by the server, and will be ignored when
5319    sending a request.
5320
5321    All required parameters must be populated in order to send to Azure.
5322
5323    :param object_type: Required. Constant filled by server.
5324    :type object_type: str
5325    :ivar recovery_point_time_in_utc: UTC time at which recovery point was
5326     created
5327    :vartype recovery_point_time_in_utc: datetime
5328    :ivar type: Type of restore point. Possible values include: 'Invalid',
5329     'Full', 'Log', 'Differential', 'Incremental'
5330    :vartype type: str or
5331     ~azure.mgmt.recoveryservicesbackup.models.RestorePointType
5332    :param recovery_point_tier_details: Recovery point tier information.
5333    :type recovery_point_tier_details:
5334     list[~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierInformation]
5335    :param recovery_point_move_readiness_info: Eligibility of RP to be moved
5336     to another tier
5337    :type recovery_point_move_readiness_info: dict[str,
5338     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointMoveReadinessInfo]
5339    :param time_ranges: List of log ranges
5340    :type time_ranges:
5341     list[~azure.mgmt.recoveryservicesbackup.models.PointInTimeRange]
5342    """
5343
5344    _validation = {
5345        'object_type': {'required': True},
5346        'recovery_point_time_in_utc': {'readonly': True},
5347        'type': {'readonly': True},
5348    }
5349
5350    _attribute_map = {
5351        'object_type': {'key': 'objectType', 'type': 'str'},
5352        'recovery_point_time_in_utc': {'key': 'recoveryPointTimeInUTC', 'type': 'iso-8601'},
5353        'type': {'key': 'type', 'type': 'str'},
5354        'recovery_point_tier_details': {'key': 'recoveryPointTierDetails', 'type': '[RecoveryPointTierInformation]'},
5355        'recovery_point_move_readiness_info': {'key': 'recoveryPointMoveReadinessInfo', 'type': '{RecoveryPointMoveReadinessInfo}'},
5356        'time_ranges': {'key': 'timeRanges', 'type': '[PointInTimeRange]'},
5357    }
5358
5359    _subtype_map = {
5360        'object_type': {'AzureWorkloadSAPHanaPointInTimeRecoveryPoint': 'AzureWorkloadSAPHanaPointInTimeRecoveryPoint'}
5361    }
5362
5363    def __init__(self, **kwargs):
5364        super(AzureWorkloadPointInTimeRecoveryPoint, self).__init__(**kwargs)
5365        self.time_ranges = kwargs.get('time_ranges', None)
5366        self.object_type = 'AzureWorkloadPointInTimeRecoveryPoint'
5367
5368
5369class AzureWorkloadRestoreRequest(RestoreRequest):
5370    """AzureWorkload-specific restore.
5371
5372    You probably want to use the sub-classes and not this class directly. Known
5373    sub-classes are: AzureWorkloadPointInTimeRestoreRequest,
5374    AzureWorkloadSAPHanaRestoreRequest, AzureWorkloadSQLRestoreRequest
5375
5376    All required parameters must be populated in order to send to Azure.
5377
5378    :param object_type: Required. Constant filled by server.
5379    :type object_type: str
5380    :param recovery_type: Type of this recovery. Possible values include:
5381     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
5382     'Offline'
5383    :type recovery_type: str or
5384     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
5385    :param source_resource_id: Fully qualified ARM ID of the VM on which
5386     workload that was running is being recovered.
5387    :type source_resource_id: str
5388    :param property_bag: Workload specific property bag.
5389    :type property_bag: dict[str, str]
5390    :param target_info: Details of target database
5391    :type target_info:
5392     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
5393    :param recovery_mode: Defines whether the current recovery mode is file
5394     restore or database restore. Possible values include: 'Invalid',
5395     'FileRecovery', 'WorkloadRecovery'
5396    :type recovery_mode: str or
5397     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
5398    :param target_virtual_machine_id: This is the complete ARM Id of the
5399     target VM
5400     For e.g.
5401     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
5402    :type target_virtual_machine_id: str
5403    """
5404
5405    _validation = {
5406        'object_type': {'required': True},
5407    }
5408
5409    _attribute_map = {
5410        'object_type': {'key': 'objectType', 'type': 'str'},
5411        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
5412        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
5413        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
5414        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
5415        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
5416        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
5417    }
5418
5419    _subtype_map = {
5420        'object_type': {'AzureWorkloadPointInTimeRestoreRequest': 'AzureWorkloadPointInTimeRestoreRequest', 'AzureWorkloadSAPHanaRestoreRequest': 'AzureWorkloadSAPHanaRestoreRequest', 'AzureWorkloadSQLRestoreRequest': 'AzureWorkloadSQLRestoreRequest'}
5421    }
5422
5423    def __init__(self, **kwargs):
5424        super(AzureWorkloadRestoreRequest, self).__init__(**kwargs)
5425        self.recovery_type = kwargs.get('recovery_type', None)
5426        self.source_resource_id = kwargs.get('source_resource_id', None)
5427        self.property_bag = kwargs.get('property_bag', None)
5428        self.target_info = kwargs.get('target_info', None)
5429        self.recovery_mode = kwargs.get('recovery_mode', None)
5430        self.target_virtual_machine_id = kwargs.get('target_virtual_machine_id', None)
5431        self.object_type = 'AzureWorkloadRestoreRequest'
5432
5433
5434class AzureWorkloadPointInTimeRestoreRequest(AzureWorkloadRestoreRequest):
5435    """AzureWorkload SAP Hana -specific restore. Specifically for PointInTime/Log
5436    restore.
5437
5438    All required parameters must be populated in order to send to Azure.
5439
5440    :param object_type: Required. Constant filled by server.
5441    :type object_type: str
5442    :param recovery_type: Type of this recovery. Possible values include:
5443     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
5444     'Offline'
5445    :type recovery_type: str or
5446     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
5447    :param source_resource_id: Fully qualified ARM ID of the VM on which
5448     workload that was running is being recovered.
5449    :type source_resource_id: str
5450    :param property_bag: Workload specific property bag.
5451    :type property_bag: dict[str, str]
5452    :param target_info: Details of target database
5453    :type target_info:
5454     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
5455    :param recovery_mode: Defines whether the current recovery mode is file
5456     restore or database restore. Possible values include: 'Invalid',
5457     'FileRecovery', 'WorkloadRecovery'
5458    :type recovery_mode: str or
5459     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
5460    :param target_virtual_machine_id: This is the complete ARM Id of the
5461     target VM
5462     For e.g.
5463     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
5464    :type target_virtual_machine_id: str
5465    :param point_in_time: PointInTime value
5466    :type point_in_time: datetime
5467    """
5468
5469    _validation = {
5470        'object_type': {'required': True},
5471    }
5472
5473    _attribute_map = {
5474        'object_type': {'key': 'objectType', 'type': 'str'},
5475        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
5476        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
5477        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
5478        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
5479        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
5480        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
5481        'point_in_time': {'key': 'pointInTime', 'type': 'iso-8601'},
5482    }
5483
5484    def __init__(self, **kwargs):
5485        super(AzureWorkloadPointInTimeRestoreRequest, self).__init__(**kwargs)
5486        self.point_in_time = kwargs.get('point_in_time', None)
5487        self.object_type = 'AzureWorkloadPointInTimeRestoreRequest'
5488
5489
5490class AzureWorkloadSAPHanaPointInTimeRecoveryPoint(AzureWorkloadPointInTimeRecoveryPoint):
5491    """Recovery point specific to PointInTime in SAPHana.
5492
5493    Variables are only populated by the server, and will be ignored when
5494    sending a request.
5495
5496    All required parameters must be populated in order to send to Azure.
5497
5498    :param object_type: Required. Constant filled by server.
5499    :type object_type: str
5500    :ivar recovery_point_time_in_utc: UTC time at which recovery point was
5501     created
5502    :vartype recovery_point_time_in_utc: datetime
5503    :ivar type: Type of restore point. Possible values include: 'Invalid',
5504     'Full', 'Log', 'Differential', 'Incremental'
5505    :vartype type: str or
5506     ~azure.mgmt.recoveryservicesbackup.models.RestorePointType
5507    :param recovery_point_tier_details: Recovery point tier information.
5508    :type recovery_point_tier_details:
5509     list[~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierInformation]
5510    :param recovery_point_move_readiness_info: Eligibility of RP to be moved
5511     to another tier
5512    :type recovery_point_move_readiness_info: dict[str,
5513     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointMoveReadinessInfo]
5514    :param time_ranges: List of log ranges
5515    :type time_ranges:
5516     list[~azure.mgmt.recoveryservicesbackup.models.PointInTimeRange]
5517    """
5518
5519    _validation = {
5520        'object_type': {'required': True},
5521        'recovery_point_time_in_utc': {'readonly': True},
5522        'type': {'readonly': True},
5523    }
5524
5525    _attribute_map = {
5526        'object_type': {'key': 'objectType', 'type': 'str'},
5527        'recovery_point_time_in_utc': {'key': 'recoveryPointTimeInUTC', 'type': 'iso-8601'},
5528        'type': {'key': 'type', 'type': 'str'},
5529        'recovery_point_tier_details': {'key': 'recoveryPointTierDetails', 'type': '[RecoveryPointTierInformation]'},
5530        'recovery_point_move_readiness_info': {'key': 'recoveryPointMoveReadinessInfo', 'type': '{RecoveryPointMoveReadinessInfo}'},
5531        'time_ranges': {'key': 'timeRanges', 'type': '[PointInTimeRange]'},
5532    }
5533
5534    def __init__(self, **kwargs):
5535        super(AzureWorkloadSAPHanaPointInTimeRecoveryPoint, self).__init__(**kwargs)
5536        self.object_type = 'AzureWorkloadSAPHanaPointInTimeRecoveryPoint'
5537
5538
5539class AzureWorkloadSAPHanaRestoreRequest(AzureWorkloadRestoreRequest):
5540    """AzureWorkload SAP Hana-specific restore.
5541
5542    You probably want to use the sub-classes and not this class directly. Known
5543    sub-classes are: AzureWorkloadSAPHanaPointInTimeRestoreRequest,
5544    AzureWorkloadSAPHanaRestoreWithRehydrateRequest
5545
5546    All required parameters must be populated in order to send to Azure.
5547
5548    :param object_type: Required. Constant filled by server.
5549    :type object_type: str
5550    :param recovery_type: Type of this recovery. Possible values include:
5551     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
5552     'Offline'
5553    :type recovery_type: str or
5554     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
5555    :param source_resource_id: Fully qualified ARM ID of the VM on which
5556     workload that was running is being recovered.
5557    :type source_resource_id: str
5558    :param property_bag: Workload specific property bag.
5559    :type property_bag: dict[str, str]
5560    :param target_info: Details of target database
5561    :type target_info:
5562     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
5563    :param recovery_mode: Defines whether the current recovery mode is file
5564     restore or database restore. Possible values include: 'Invalid',
5565     'FileRecovery', 'WorkloadRecovery'
5566    :type recovery_mode: str or
5567     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
5568    :param target_virtual_machine_id: This is the complete ARM Id of the
5569     target VM
5570     For e.g.
5571     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
5572    :type target_virtual_machine_id: str
5573    """
5574
5575    _validation = {
5576        'object_type': {'required': True},
5577    }
5578
5579    _attribute_map = {
5580        'object_type': {'key': 'objectType', 'type': 'str'},
5581        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
5582        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
5583        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
5584        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
5585        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
5586        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
5587    }
5588
5589    _subtype_map = {
5590        'object_type': {'AzureWorkloadSAPHanaPointInTimeRestoreRequest': 'AzureWorkloadSAPHanaPointInTimeRestoreRequest', 'AzureWorkloadSAPHanaRestoreWithRehydrateRequest': 'AzureWorkloadSAPHanaRestoreWithRehydrateRequest'}
5591    }
5592
5593    def __init__(self, **kwargs):
5594        super(AzureWorkloadSAPHanaRestoreRequest, self).__init__(**kwargs)
5595        self.object_type = 'AzureWorkloadSAPHanaRestoreRequest'
5596
5597
5598class AzureWorkloadSAPHanaPointInTimeRestoreRequest(AzureWorkloadSAPHanaRestoreRequest):
5599    """AzureWorkload SAP Hana -specific restore. Specifically for PointInTime/Log
5600    restore.
5601
5602    You probably want to use the sub-classes and not this class directly. Known
5603    sub-classes are: AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest
5604
5605    All required parameters must be populated in order to send to Azure.
5606
5607    :param object_type: Required. Constant filled by server.
5608    :type object_type: str
5609    :param recovery_type: Type of this recovery. Possible values include:
5610     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
5611     'Offline'
5612    :type recovery_type: str or
5613     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
5614    :param source_resource_id: Fully qualified ARM ID of the VM on which
5615     workload that was running is being recovered.
5616    :type source_resource_id: str
5617    :param property_bag: Workload specific property bag.
5618    :type property_bag: dict[str, str]
5619    :param target_info: Details of target database
5620    :type target_info:
5621     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
5622    :param recovery_mode: Defines whether the current recovery mode is file
5623     restore or database restore. Possible values include: 'Invalid',
5624     'FileRecovery', 'WorkloadRecovery'
5625    :type recovery_mode: str or
5626     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
5627    :param target_virtual_machine_id: This is the complete ARM Id of the
5628     target VM
5629     For e.g.
5630     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
5631    :type target_virtual_machine_id: str
5632    :param point_in_time: PointInTime value
5633    :type point_in_time: datetime
5634    """
5635
5636    _validation = {
5637        'object_type': {'required': True},
5638    }
5639
5640    _attribute_map = {
5641        'object_type': {'key': 'objectType', 'type': 'str'},
5642        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
5643        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
5644        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
5645        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
5646        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
5647        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
5648        'point_in_time': {'key': 'pointInTime', 'type': 'iso-8601'},
5649    }
5650
5651    _subtype_map = {
5652        'object_type': {'AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest': 'AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest'}
5653    }
5654
5655    def __init__(self, **kwargs):
5656        super(AzureWorkloadSAPHanaPointInTimeRestoreRequest, self).__init__(**kwargs)
5657        self.point_in_time = kwargs.get('point_in_time', None)
5658        self.object_type = 'AzureWorkloadSAPHanaPointInTimeRestoreRequest'
5659
5660
5661class AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest(AzureWorkloadSAPHanaPointInTimeRestoreRequest):
5662    """AzureWorkload SAP Hana-specific restore with integrated rehydration of
5663    recovery point.
5664
5665    All required parameters must be populated in order to send to Azure.
5666
5667    :param object_type: Required. Constant filled by server.
5668    :type object_type: str
5669    :param recovery_type: Type of this recovery. Possible values include:
5670     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
5671     'Offline'
5672    :type recovery_type: str or
5673     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
5674    :param source_resource_id: Fully qualified ARM ID of the VM on which
5675     workload that was running is being recovered.
5676    :type source_resource_id: str
5677    :param property_bag: Workload specific property bag.
5678    :type property_bag: dict[str, str]
5679    :param target_info: Details of target database
5680    :type target_info:
5681     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
5682    :param recovery_mode: Defines whether the current recovery mode is file
5683     restore or database restore. Possible values include: 'Invalid',
5684     'FileRecovery', 'WorkloadRecovery'
5685    :type recovery_mode: str or
5686     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
5687    :param target_virtual_machine_id: This is the complete ARM Id of the
5688     target VM
5689     For e.g.
5690     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
5691    :type target_virtual_machine_id: str
5692    :param point_in_time: PointInTime value
5693    :type point_in_time: datetime
5694    :param recovery_point_rehydration_info: RP Rehydration Info
5695    :type recovery_point_rehydration_info:
5696     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointRehydrationInfo
5697    """
5698
5699    _validation = {
5700        'object_type': {'required': True},
5701    }
5702
5703    _attribute_map = {
5704        'object_type': {'key': 'objectType', 'type': 'str'},
5705        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
5706        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
5707        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
5708        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
5709        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
5710        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
5711        'point_in_time': {'key': 'pointInTime', 'type': 'iso-8601'},
5712        'recovery_point_rehydration_info': {'key': 'recoveryPointRehydrationInfo', 'type': 'RecoveryPointRehydrationInfo'},
5713    }
5714
5715    def __init__(self, **kwargs):
5716        super(AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest, self).__init__(**kwargs)
5717        self.recovery_point_rehydration_info = kwargs.get('recovery_point_rehydration_info', None)
5718        self.object_type = 'AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest'
5719
5720
5721class AzureWorkloadSAPHanaRecoveryPoint(AzureWorkloadRecoveryPoint):
5722    """SAPHana specific recoverypoint, specifically encapsulates full/diff
5723    recoverypoints.
5724
5725    Variables are only populated by the server, and will be ignored when
5726    sending a request.
5727
5728    All required parameters must be populated in order to send to Azure.
5729
5730    :param object_type: Required. Constant filled by server.
5731    :type object_type: str
5732    :ivar recovery_point_time_in_utc: UTC time at which recovery point was
5733     created
5734    :vartype recovery_point_time_in_utc: datetime
5735    :ivar type: Type of restore point. Possible values include: 'Invalid',
5736     'Full', 'Log', 'Differential', 'Incremental'
5737    :vartype type: str or
5738     ~azure.mgmt.recoveryservicesbackup.models.RestorePointType
5739    :param recovery_point_tier_details: Recovery point tier information.
5740    :type recovery_point_tier_details:
5741     list[~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierInformation]
5742    :param recovery_point_move_readiness_info: Eligibility of RP to be moved
5743     to another tier
5744    :type recovery_point_move_readiness_info: dict[str,
5745     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointMoveReadinessInfo]
5746    """
5747
5748    _validation = {
5749        'object_type': {'required': True},
5750        'recovery_point_time_in_utc': {'readonly': True},
5751        'type': {'readonly': True},
5752    }
5753
5754    _attribute_map = {
5755        'object_type': {'key': 'objectType', 'type': 'str'},
5756        'recovery_point_time_in_utc': {'key': 'recoveryPointTimeInUTC', 'type': 'iso-8601'},
5757        'type': {'key': 'type', 'type': 'str'},
5758        'recovery_point_tier_details': {'key': 'recoveryPointTierDetails', 'type': '[RecoveryPointTierInformation]'},
5759        'recovery_point_move_readiness_info': {'key': 'recoveryPointMoveReadinessInfo', 'type': '{RecoveryPointMoveReadinessInfo}'},
5760    }
5761
5762    def __init__(self, **kwargs):
5763        super(AzureWorkloadSAPHanaRecoveryPoint, self).__init__(**kwargs)
5764        self.object_type = 'AzureWorkloadSAPHanaRecoveryPoint'
5765
5766
5767class AzureWorkloadSAPHanaRestoreWithRehydrateRequest(AzureWorkloadSAPHanaRestoreRequest):
5768    """AzureWorkload SAP Hana-specific restore with integrated rehydration of
5769    recovery point.
5770
5771    All required parameters must be populated in order to send to Azure.
5772
5773    :param object_type: Required. Constant filled by server.
5774    :type object_type: str
5775    :param recovery_type: Type of this recovery. Possible values include:
5776     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
5777     'Offline'
5778    :type recovery_type: str or
5779     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
5780    :param source_resource_id: Fully qualified ARM ID of the VM on which
5781     workload that was running is being recovered.
5782    :type source_resource_id: str
5783    :param property_bag: Workload specific property bag.
5784    :type property_bag: dict[str, str]
5785    :param target_info: Details of target database
5786    :type target_info:
5787     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
5788    :param recovery_mode: Defines whether the current recovery mode is file
5789     restore or database restore. Possible values include: 'Invalid',
5790     'FileRecovery', 'WorkloadRecovery'
5791    :type recovery_mode: str or
5792     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
5793    :param target_virtual_machine_id: This is the complete ARM Id of the
5794     target VM
5795     For e.g.
5796     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
5797    :type target_virtual_machine_id: str
5798    :param recovery_point_rehydration_info: RP Rehydration Info
5799    :type recovery_point_rehydration_info:
5800     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointRehydrationInfo
5801    """
5802
5803    _validation = {
5804        'object_type': {'required': True},
5805    }
5806
5807    _attribute_map = {
5808        'object_type': {'key': 'objectType', 'type': 'str'},
5809        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
5810        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
5811        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
5812        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
5813        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
5814        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
5815        'recovery_point_rehydration_info': {'key': 'recoveryPointRehydrationInfo', 'type': 'RecoveryPointRehydrationInfo'},
5816    }
5817
5818    def __init__(self, **kwargs):
5819        super(AzureWorkloadSAPHanaRestoreWithRehydrateRequest, self).__init__(**kwargs)
5820        self.recovery_point_rehydration_info = kwargs.get('recovery_point_rehydration_info', None)
5821        self.object_type = 'AzureWorkloadSAPHanaRestoreWithRehydrateRequest'
5822
5823
5824class AzureWorkloadSQLAutoProtectionIntent(AzureWorkloadAutoProtectionIntent):
5825    """Azure Workload SQL Auto Protection intent item.
5826
5827    All required parameters must be populated in order to send to Azure.
5828
5829    :param backup_management_type: Type of backup management for the backed up
5830     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
5831     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
5832     'DefaultBackup'
5833    :type backup_management_type: str or
5834     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
5835    :param source_resource_id: ARM ID of the resource to be backed up.
5836    :type source_resource_id: str
5837    :param item_id: ID of the item which is getting protected, In case of
5838     Azure Vm , it is ProtectedItemId
5839    :type item_id: str
5840    :param policy_id: ID of the backup policy with which this item is backed
5841     up.
5842    :type policy_id: str
5843    :param protection_state: Backup state of this backup item. Possible values
5844     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
5845     'ProtectionFailed'
5846    :type protection_state: str or
5847     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
5848    :param protection_intent_item_type: Required. Constant filled by server.
5849    :type protection_intent_item_type: str
5850    :param workload_item_type: Workload item type of the item for which intent
5851     is to be set. Possible values include: 'Invalid', 'SQLInstance',
5852     'SQLDataBase', 'SAPHanaSystem', 'SAPHanaDatabase', 'SAPAseSystem',
5853     'SAPAseDatabase'
5854    :type workload_item_type: str or
5855     ~azure.mgmt.recoveryservicesbackup.models.WorkloadItemType
5856    """
5857
5858    _validation = {
5859        'protection_intent_item_type': {'required': True},
5860    }
5861
5862    _attribute_map = {
5863        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
5864        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
5865        'item_id': {'key': 'itemId', 'type': 'str'},
5866        'policy_id': {'key': 'policyId', 'type': 'str'},
5867        'protection_state': {'key': 'protectionState', 'type': 'str'},
5868        'protection_intent_item_type': {'key': 'protectionIntentItemType', 'type': 'str'},
5869        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
5870    }
5871
5872    def __init__(self, **kwargs):
5873        super(AzureWorkloadSQLAutoProtectionIntent, self).__init__(**kwargs)
5874        self.workload_item_type = kwargs.get('workload_item_type', None)
5875        self.protection_intent_item_type = 'AzureWorkloadSQLAutoProtectionIntent'
5876
5877
5878class AzureWorkloadSQLRecoveryPoint(AzureWorkloadRecoveryPoint):
5879    """SQL specific recoverypoint, specifically encapsulates full/diff
5880    recoverypoint along with extended info.
5881
5882    You probably want to use the sub-classes and not this class directly. Known
5883    sub-classes are: AzureWorkloadSQLPointInTimeRecoveryPoint
5884
5885    Variables are only populated by the server, and will be ignored when
5886    sending a request.
5887
5888    All required parameters must be populated in order to send to Azure.
5889
5890    :param object_type: Required. Constant filled by server.
5891    :type object_type: str
5892    :ivar recovery_point_time_in_utc: UTC time at which recovery point was
5893     created
5894    :vartype recovery_point_time_in_utc: datetime
5895    :ivar type: Type of restore point. Possible values include: 'Invalid',
5896     'Full', 'Log', 'Differential', 'Incremental'
5897    :vartype type: str or
5898     ~azure.mgmt.recoveryservicesbackup.models.RestorePointType
5899    :param recovery_point_tier_details: Recovery point tier information.
5900    :type recovery_point_tier_details:
5901     list[~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierInformation]
5902    :param recovery_point_move_readiness_info: Eligibility of RP to be moved
5903     to another tier
5904    :type recovery_point_move_readiness_info: dict[str,
5905     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointMoveReadinessInfo]
5906    :param extended_info: Extended Info that provides data directory details.
5907     Will be populated in two cases:
5908     When a specific recovery point is accessed using GetRecoveryPoint
5909     Or when ListRecoveryPoints is called for Log RP only with ExtendedInfo
5910     query filter
5911    :type extended_info:
5912     ~azure.mgmt.recoveryservicesbackup.models.AzureWorkloadSQLRecoveryPointExtendedInfo
5913    """
5914
5915    _validation = {
5916        'object_type': {'required': True},
5917        'recovery_point_time_in_utc': {'readonly': True},
5918        'type': {'readonly': True},
5919    }
5920
5921    _attribute_map = {
5922        'object_type': {'key': 'objectType', 'type': 'str'},
5923        'recovery_point_time_in_utc': {'key': 'recoveryPointTimeInUTC', 'type': 'iso-8601'},
5924        'type': {'key': 'type', 'type': 'str'},
5925        'recovery_point_tier_details': {'key': 'recoveryPointTierDetails', 'type': '[RecoveryPointTierInformation]'},
5926        'recovery_point_move_readiness_info': {'key': 'recoveryPointMoveReadinessInfo', 'type': '{RecoveryPointMoveReadinessInfo}'},
5927        'extended_info': {'key': 'extendedInfo', 'type': 'AzureWorkloadSQLRecoveryPointExtendedInfo'},
5928    }
5929
5930    _subtype_map = {
5931        'object_type': {'AzureWorkloadSQLPointInTimeRecoveryPoint': 'AzureWorkloadSQLPointInTimeRecoveryPoint'}
5932    }
5933
5934    def __init__(self, **kwargs):
5935        super(AzureWorkloadSQLRecoveryPoint, self).__init__(**kwargs)
5936        self.extended_info = kwargs.get('extended_info', None)
5937        self.object_type = 'AzureWorkloadSQLRecoveryPoint'
5938
5939
5940class AzureWorkloadSQLPointInTimeRecoveryPoint(AzureWorkloadSQLRecoveryPoint):
5941    """Recovery point specific to PointInTime.
5942
5943    Variables are only populated by the server, and will be ignored when
5944    sending a request.
5945
5946    All required parameters must be populated in order to send to Azure.
5947
5948    :param object_type: Required. Constant filled by server.
5949    :type object_type: str
5950    :ivar recovery_point_time_in_utc: UTC time at which recovery point was
5951     created
5952    :vartype recovery_point_time_in_utc: datetime
5953    :ivar type: Type of restore point. Possible values include: 'Invalid',
5954     'Full', 'Log', 'Differential', 'Incremental'
5955    :vartype type: str or
5956     ~azure.mgmt.recoveryservicesbackup.models.RestorePointType
5957    :param recovery_point_tier_details: Recovery point tier information.
5958    :type recovery_point_tier_details:
5959     list[~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierInformation]
5960    :param recovery_point_move_readiness_info: Eligibility of RP to be moved
5961     to another tier
5962    :type recovery_point_move_readiness_info: dict[str,
5963     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointMoveReadinessInfo]
5964    :param extended_info: Extended Info that provides data directory details.
5965     Will be populated in two cases:
5966     When a specific recovery point is accessed using GetRecoveryPoint
5967     Or when ListRecoveryPoints is called for Log RP only with ExtendedInfo
5968     query filter
5969    :type extended_info:
5970     ~azure.mgmt.recoveryservicesbackup.models.AzureWorkloadSQLRecoveryPointExtendedInfo
5971    :param time_ranges: List of log ranges
5972    :type time_ranges:
5973     list[~azure.mgmt.recoveryservicesbackup.models.PointInTimeRange]
5974    """
5975
5976    _validation = {
5977        'object_type': {'required': True},
5978        'recovery_point_time_in_utc': {'readonly': True},
5979        'type': {'readonly': True},
5980    }
5981
5982    _attribute_map = {
5983        'object_type': {'key': 'objectType', 'type': 'str'},
5984        'recovery_point_time_in_utc': {'key': 'recoveryPointTimeInUTC', 'type': 'iso-8601'},
5985        'type': {'key': 'type', 'type': 'str'},
5986        'recovery_point_tier_details': {'key': 'recoveryPointTierDetails', 'type': '[RecoveryPointTierInformation]'},
5987        'recovery_point_move_readiness_info': {'key': 'recoveryPointMoveReadinessInfo', 'type': '{RecoveryPointMoveReadinessInfo}'},
5988        'extended_info': {'key': 'extendedInfo', 'type': 'AzureWorkloadSQLRecoveryPointExtendedInfo'},
5989        'time_ranges': {'key': 'timeRanges', 'type': '[PointInTimeRange]'},
5990    }
5991
5992    def __init__(self, **kwargs):
5993        super(AzureWorkloadSQLPointInTimeRecoveryPoint, self).__init__(**kwargs)
5994        self.time_ranges = kwargs.get('time_ranges', None)
5995        self.object_type = 'AzureWorkloadSQLPointInTimeRecoveryPoint'
5996
5997
5998class AzureWorkloadSQLRestoreRequest(AzureWorkloadRestoreRequest):
5999    """AzureWorkload SQL -specific restore. Specifically for full/diff restore.
6000
6001    You probably want to use the sub-classes and not this class directly. Known
6002    sub-classes are: AzureWorkloadSQLPointInTimeRestoreRequest,
6003    AzureWorkloadSQLRestoreWithRehydrateRequest
6004
6005    All required parameters must be populated in order to send to Azure.
6006
6007    :param object_type: Required. Constant filled by server.
6008    :type object_type: str
6009    :param recovery_type: Type of this recovery. Possible values include:
6010     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
6011     'Offline'
6012    :type recovery_type: str or
6013     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
6014    :param source_resource_id: Fully qualified ARM ID of the VM on which
6015     workload that was running is being recovered.
6016    :type source_resource_id: str
6017    :param property_bag: Workload specific property bag.
6018    :type property_bag: dict[str, str]
6019    :param target_info: Details of target database
6020    :type target_info:
6021     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
6022    :param recovery_mode: Defines whether the current recovery mode is file
6023     restore or database restore. Possible values include: 'Invalid',
6024     'FileRecovery', 'WorkloadRecovery'
6025    :type recovery_mode: str or
6026     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
6027    :param target_virtual_machine_id: This is the complete ARM Id of the
6028     target VM
6029     For e.g.
6030     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
6031    :type target_virtual_machine_id: str
6032    :param should_use_alternate_target_location: Default option set to true.
6033     If this is set to false, alternate data directory must be provided
6034    :type should_use_alternate_target_location: bool
6035    :param is_non_recoverable: SQL specific property where user can chose to
6036     set no-recovery when restore operation is tried
6037    :type is_non_recoverable: bool
6038    :param alternate_directory_paths: Data directory details
6039    :type alternate_directory_paths:
6040     list[~azure.mgmt.recoveryservicesbackup.models.SQLDataDirectoryMapping]
6041    """
6042
6043    _validation = {
6044        'object_type': {'required': True},
6045    }
6046
6047    _attribute_map = {
6048        'object_type': {'key': 'objectType', 'type': 'str'},
6049        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
6050        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
6051        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
6052        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
6053        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
6054        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
6055        'should_use_alternate_target_location': {'key': 'shouldUseAlternateTargetLocation', 'type': 'bool'},
6056        'is_non_recoverable': {'key': 'isNonRecoverable', 'type': 'bool'},
6057        'alternate_directory_paths': {'key': 'alternateDirectoryPaths', 'type': '[SQLDataDirectoryMapping]'},
6058    }
6059
6060    _subtype_map = {
6061        'object_type': {'AzureWorkloadSQLPointInTimeRestoreRequest': 'AzureWorkloadSQLPointInTimeRestoreRequest', 'AzureWorkloadSQLRestoreWithRehydrateRequest': 'AzureWorkloadSQLRestoreWithRehydrateRequest'}
6062    }
6063
6064    def __init__(self, **kwargs):
6065        super(AzureWorkloadSQLRestoreRequest, self).__init__(**kwargs)
6066        self.should_use_alternate_target_location = kwargs.get('should_use_alternate_target_location', None)
6067        self.is_non_recoverable = kwargs.get('is_non_recoverable', None)
6068        self.alternate_directory_paths = kwargs.get('alternate_directory_paths', None)
6069        self.object_type = 'AzureWorkloadSQLRestoreRequest'
6070
6071
6072class AzureWorkloadSQLPointInTimeRestoreRequest(AzureWorkloadSQLRestoreRequest):
6073    """AzureWorkload SQL -specific restore. Specifically for PointInTime/Log
6074    restore.
6075
6076    You probably want to use the sub-classes and not this class directly. Known
6077    sub-classes are: AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest
6078
6079    All required parameters must be populated in order to send to Azure.
6080
6081    :param object_type: Required. Constant filled by server.
6082    :type object_type: str
6083    :param recovery_type: Type of this recovery. Possible values include:
6084     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
6085     'Offline'
6086    :type recovery_type: str or
6087     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
6088    :param source_resource_id: Fully qualified ARM ID of the VM on which
6089     workload that was running is being recovered.
6090    :type source_resource_id: str
6091    :param property_bag: Workload specific property bag.
6092    :type property_bag: dict[str, str]
6093    :param target_info: Details of target database
6094    :type target_info:
6095     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
6096    :param recovery_mode: Defines whether the current recovery mode is file
6097     restore or database restore. Possible values include: 'Invalid',
6098     'FileRecovery', 'WorkloadRecovery'
6099    :type recovery_mode: str or
6100     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
6101    :param target_virtual_machine_id: This is the complete ARM Id of the
6102     target VM
6103     For e.g.
6104     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
6105    :type target_virtual_machine_id: str
6106    :param should_use_alternate_target_location: Default option set to true.
6107     If this is set to false, alternate data directory must be provided
6108    :type should_use_alternate_target_location: bool
6109    :param is_non_recoverable: SQL specific property where user can chose to
6110     set no-recovery when restore operation is tried
6111    :type is_non_recoverable: bool
6112    :param alternate_directory_paths: Data directory details
6113    :type alternate_directory_paths:
6114     list[~azure.mgmt.recoveryservicesbackup.models.SQLDataDirectoryMapping]
6115    :param point_in_time: PointInTime value
6116    :type point_in_time: datetime
6117    """
6118
6119    _validation = {
6120        'object_type': {'required': True},
6121    }
6122
6123    _attribute_map = {
6124        'object_type': {'key': 'objectType', 'type': 'str'},
6125        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
6126        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
6127        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
6128        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
6129        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
6130        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
6131        'should_use_alternate_target_location': {'key': 'shouldUseAlternateTargetLocation', 'type': 'bool'},
6132        'is_non_recoverable': {'key': 'isNonRecoverable', 'type': 'bool'},
6133        'alternate_directory_paths': {'key': 'alternateDirectoryPaths', 'type': '[SQLDataDirectoryMapping]'},
6134        'point_in_time': {'key': 'pointInTime', 'type': 'iso-8601'},
6135    }
6136
6137    _subtype_map = {
6138        'object_type': {'AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest': 'AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest'}
6139    }
6140
6141    def __init__(self, **kwargs):
6142        super(AzureWorkloadSQLPointInTimeRestoreRequest, self).__init__(**kwargs)
6143        self.point_in_time = kwargs.get('point_in_time', None)
6144        self.object_type = 'AzureWorkloadSQLPointInTimeRestoreRequest'
6145
6146
6147class AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest(AzureWorkloadSQLPointInTimeRestoreRequest):
6148    """AzureWorkload SQL-specific restore with integrated rehydration of recovery
6149    point.
6150
6151    All required parameters must be populated in order to send to Azure.
6152
6153    :param object_type: Required. Constant filled by server.
6154    :type object_type: str
6155    :param recovery_type: Type of this recovery. Possible values include:
6156     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
6157     'Offline'
6158    :type recovery_type: str or
6159     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
6160    :param source_resource_id: Fully qualified ARM ID of the VM on which
6161     workload that was running is being recovered.
6162    :type source_resource_id: str
6163    :param property_bag: Workload specific property bag.
6164    :type property_bag: dict[str, str]
6165    :param target_info: Details of target database
6166    :type target_info:
6167     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
6168    :param recovery_mode: Defines whether the current recovery mode is file
6169     restore or database restore. Possible values include: 'Invalid',
6170     'FileRecovery', 'WorkloadRecovery'
6171    :type recovery_mode: str or
6172     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
6173    :param target_virtual_machine_id: This is the complete ARM Id of the
6174     target VM
6175     For e.g.
6176     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
6177    :type target_virtual_machine_id: str
6178    :param should_use_alternate_target_location: Default option set to true.
6179     If this is set to false, alternate data directory must be provided
6180    :type should_use_alternate_target_location: bool
6181    :param is_non_recoverable: SQL specific property where user can chose to
6182     set no-recovery when restore operation is tried
6183    :type is_non_recoverable: bool
6184    :param alternate_directory_paths: Data directory details
6185    :type alternate_directory_paths:
6186     list[~azure.mgmt.recoveryservicesbackup.models.SQLDataDirectoryMapping]
6187    :param point_in_time: PointInTime value
6188    :type point_in_time: datetime
6189    :param recovery_point_rehydration_info: RP Rehydration Info
6190    :type recovery_point_rehydration_info:
6191     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointRehydrationInfo
6192    """
6193
6194    _validation = {
6195        'object_type': {'required': True},
6196    }
6197
6198    _attribute_map = {
6199        'object_type': {'key': 'objectType', 'type': 'str'},
6200        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
6201        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
6202        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
6203        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
6204        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
6205        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
6206        'should_use_alternate_target_location': {'key': 'shouldUseAlternateTargetLocation', 'type': 'bool'},
6207        'is_non_recoverable': {'key': 'isNonRecoverable', 'type': 'bool'},
6208        'alternate_directory_paths': {'key': 'alternateDirectoryPaths', 'type': '[SQLDataDirectoryMapping]'},
6209        'point_in_time': {'key': 'pointInTime', 'type': 'iso-8601'},
6210        'recovery_point_rehydration_info': {'key': 'recoveryPointRehydrationInfo', 'type': 'RecoveryPointRehydrationInfo'},
6211    }
6212
6213    def __init__(self, **kwargs):
6214        super(AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest, self).__init__(**kwargs)
6215        self.recovery_point_rehydration_info = kwargs.get('recovery_point_rehydration_info', None)
6216        self.object_type = 'AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest'
6217
6218
6219class AzureWorkloadSQLRecoveryPointExtendedInfo(Model):
6220    """Extended info class details.
6221
6222    Variables are only populated by the server, and will be ignored when
6223    sending a request.
6224
6225    :ivar data_directory_time_in_utc: UTC time at which data directory info
6226     was captured
6227    :vartype data_directory_time_in_utc: datetime
6228    :ivar data_directory_paths: List of data directory paths during restore
6229     operation.
6230    :vartype data_directory_paths:
6231     list[~azure.mgmt.recoveryservicesbackup.models.SQLDataDirectory]
6232    """
6233
6234    _validation = {
6235        'data_directory_time_in_utc': {'readonly': True},
6236        'data_directory_paths': {'readonly': True},
6237    }
6238
6239    _attribute_map = {
6240        'data_directory_time_in_utc': {'key': 'dataDirectoryTimeInUTC', 'type': 'iso-8601'},
6241        'data_directory_paths': {'key': 'dataDirectoryPaths', 'type': '[SQLDataDirectory]'},
6242    }
6243
6244    def __init__(self, **kwargs):
6245        super(AzureWorkloadSQLRecoveryPointExtendedInfo, self).__init__(**kwargs)
6246        self.data_directory_time_in_utc = None
6247        self.data_directory_paths = None
6248
6249
6250class AzureWorkloadSQLRestoreWithRehydrateRequest(AzureWorkloadSQLRestoreRequest):
6251    """AzureWorkload SQL-specific restore with integrated rehydration of recovery
6252    point.
6253
6254    All required parameters must be populated in order to send to Azure.
6255
6256    :param object_type: Required. Constant filled by server.
6257    :type object_type: str
6258    :param recovery_type: Type of this recovery. Possible values include:
6259     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
6260     'Offline'
6261    :type recovery_type: str or
6262     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
6263    :param source_resource_id: Fully qualified ARM ID of the VM on which
6264     workload that was running is being recovered.
6265    :type source_resource_id: str
6266    :param property_bag: Workload specific property bag.
6267    :type property_bag: dict[str, str]
6268    :param target_info: Details of target database
6269    :type target_info:
6270     ~azure.mgmt.recoveryservicesbackup.models.TargetRestoreInfo
6271    :param recovery_mode: Defines whether the current recovery mode is file
6272     restore or database restore. Possible values include: 'Invalid',
6273     'FileRecovery', 'WorkloadRecovery'
6274    :type recovery_mode: str or
6275     ~azure.mgmt.recoveryservicesbackup.models.RecoveryMode
6276    :param target_virtual_machine_id: This is the complete ARM Id of the
6277     target VM
6278     For e.g.
6279     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
6280    :type target_virtual_machine_id: str
6281    :param should_use_alternate_target_location: Default option set to true.
6282     If this is set to false, alternate data directory must be provided
6283    :type should_use_alternate_target_location: bool
6284    :param is_non_recoverable: SQL specific property where user can chose to
6285     set no-recovery when restore operation is tried
6286    :type is_non_recoverable: bool
6287    :param alternate_directory_paths: Data directory details
6288    :type alternate_directory_paths:
6289     list[~azure.mgmt.recoveryservicesbackup.models.SQLDataDirectoryMapping]
6290    :param recovery_point_rehydration_info: RP Rehydration Info
6291    :type recovery_point_rehydration_info:
6292     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointRehydrationInfo
6293    """
6294
6295    _validation = {
6296        'object_type': {'required': True},
6297    }
6298
6299    _attribute_map = {
6300        'object_type': {'key': 'objectType', 'type': 'str'},
6301        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
6302        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
6303        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
6304        'target_info': {'key': 'targetInfo', 'type': 'TargetRestoreInfo'},
6305        'recovery_mode': {'key': 'recoveryMode', 'type': 'str'},
6306        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
6307        'should_use_alternate_target_location': {'key': 'shouldUseAlternateTargetLocation', 'type': 'bool'},
6308        'is_non_recoverable': {'key': 'isNonRecoverable', 'type': 'bool'},
6309        'alternate_directory_paths': {'key': 'alternateDirectoryPaths', 'type': '[SQLDataDirectoryMapping]'},
6310        'recovery_point_rehydration_info': {'key': 'recoveryPointRehydrationInfo', 'type': 'RecoveryPointRehydrationInfo'},
6311    }
6312
6313    def __init__(self, **kwargs):
6314        super(AzureWorkloadSQLRestoreWithRehydrateRequest, self).__init__(**kwargs)
6315        self.recovery_point_rehydration_info = kwargs.get('recovery_point_rehydration_info', None)
6316        self.object_type = 'AzureWorkloadSQLRestoreWithRehydrateRequest'
6317
6318
6319class BackupEngineBaseResource(Resource):
6320    """The base backup engine class. All workload specific backup engines derive
6321    from this class.
6322
6323    Variables are only populated by the server, and will be ignored when
6324    sending a request.
6325
6326    :ivar id: Resource Id represents the complete path to the resource.
6327    :vartype id: str
6328    :ivar name: Resource name associated with the resource.
6329    :vartype name: str
6330    :ivar type: Resource type represents the complete path of the form
6331     Namespace/ResourceType/ResourceType/...
6332    :vartype type: str
6333    :param location: Resource location.
6334    :type location: str
6335    :param tags: Resource tags.
6336    :type tags: dict[str, str]
6337    :param e_tag: Optional ETag.
6338    :type e_tag: str
6339    :param properties: BackupEngineBaseResource properties
6340    :type properties:
6341     ~azure.mgmt.recoveryservicesbackup.models.BackupEngineBase
6342    """
6343
6344    _validation = {
6345        'id': {'readonly': True},
6346        'name': {'readonly': True},
6347        'type': {'readonly': True},
6348    }
6349
6350    _attribute_map = {
6351        'id': {'key': 'id', 'type': 'str'},
6352        'name': {'key': 'name', 'type': 'str'},
6353        'type': {'key': 'type', 'type': 'str'},
6354        'location': {'key': 'location', 'type': 'str'},
6355        'tags': {'key': 'tags', 'type': '{str}'},
6356        'e_tag': {'key': 'eTag', 'type': 'str'},
6357        'properties': {'key': 'properties', 'type': 'BackupEngineBase'},
6358    }
6359
6360    def __init__(self, **kwargs):
6361        super(BackupEngineBaseResource, self).__init__(**kwargs)
6362        self.properties = kwargs.get('properties', None)
6363
6364
6365class BackupEngineExtendedInfo(Model):
6366    """Additional information on backup engine.
6367
6368    :param database_name: Database name of backup engine.
6369    :type database_name: str
6370    :param protected_items_count: Number of protected items in the backup
6371     engine.
6372    :type protected_items_count: int
6373    :param protected_servers_count: Number of protected servers in the backup
6374     engine.
6375    :type protected_servers_count: int
6376    :param disk_count: Number of disks in the backup engine.
6377    :type disk_count: int
6378    :param used_disk_space: Disk space used in the backup engine.
6379    :type used_disk_space: float
6380    :param available_disk_space: Disk space currently available in the backup
6381     engine.
6382    :type available_disk_space: float
6383    :param refreshed_at: Last refresh time in the backup engine.
6384    :type refreshed_at: datetime
6385    :param azure_protected_instances: Protected instances in the backup
6386     engine.
6387    :type azure_protected_instances: int
6388    """
6389
6390    _attribute_map = {
6391        'database_name': {'key': 'databaseName', 'type': 'str'},
6392        'protected_items_count': {'key': 'protectedItemsCount', 'type': 'int'},
6393        'protected_servers_count': {'key': 'protectedServersCount', 'type': 'int'},
6394        'disk_count': {'key': 'diskCount', 'type': 'int'},
6395        'used_disk_space': {'key': 'usedDiskSpace', 'type': 'float'},
6396        'available_disk_space': {'key': 'availableDiskSpace', 'type': 'float'},
6397        'refreshed_at': {'key': 'refreshedAt', 'type': 'iso-8601'},
6398        'azure_protected_instances': {'key': 'azureProtectedInstances', 'type': 'int'},
6399    }
6400
6401    def __init__(self, **kwargs):
6402        super(BackupEngineExtendedInfo, self).__init__(**kwargs)
6403        self.database_name = kwargs.get('database_name', None)
6404        self.protected_items_count = kwargs.get('protected_items_count', None)
6405        self.protected_servers_count = kwargs.get('protected_servers_count', None)
6406        self.disk_count = kwargs.get('disk_count', None)
6407        self.used_disk_space = kwargs.get('used_disk_space', None)
6408        self.available_disk_space = kwargs.get('available_disk_space', None)
6409        self.refreshed_at = kwargs.get('refreshed_at', None)
6410        self.azure_protected_instances = kwargs.get('azure_protected_instances', None)
6411
6412
6413class BackupManagementUsage(Model):
6414    """Backup management usages of a vault.
6415
6416    :param unit: Unit of the usage. Possible values include: 'Count', 'Bytes',
6417     'Seconds', 'Percent', 'CountPerSecond', 'BytesPerSecond'
6418    :type unit: str or ~azure.mgmt.recoveryservicesbackup.models.UsagesUnit
6419    :param quota_period: Quota period of usage.
6420    :type quota_period: str
6421    :param next_reset_time: Next reset time of usage.
6422    :type next_reset_time: datetime
6423    :param current_value: Current value of usage.
6424    :type current_value: long
6425    :param limit: Limit of usage.
6426    :type limit: long
6427    :param name: Name of usage.
6428    :type name: ~azure.mgmt.recoveryservicesbackup.models.NameInfo
6429    """
6430
6431    _attribute_map = {
6432        'unit': {'key': 'unit', 'type': 'str'},
6433        'quota_period': {'key': 'quotaPeriod', 'type': 'str'},
6434        'next_reset_time': {'key': 'nextResetTime', 'type': 'iso-8601'},
6435        'current_value': {'key': 'currentValue', 'type': 'long'},
6436        'limit': {'key': 'limit', 'type': 'long'},
6437        'name': {'key': 'name', 'type': 'NameInfo'},
6438    }
6439
6440    def __init__(self, **kwargs):
6441        super(BackupManagementUsage, self).__init__(**kwargs)
6442        self.unit = kwargs.get('unit', None)
6443        self.quota_period = kwargs.get('quota_period', None)
6444        self.next_reset_time = kwargs.get('next_reset_time', None)
6445        self.current_value = kwargs.get('current_value', None)
6446        self.limit = kwargs.get('limit', None)
6447        self.name = kwargs.get('name', None)
6448
6449
6450class BackupRequestResource(Resource):
6451    """Base class for backup request. Workload-specific backup requests are
6452    derived from this class.
6453
6454    Variables are only populated by the server, and will be ignored when
6455    sending a request.
6456
6457    :ivar id: Resource Id represents the complete path to the resource.
6458    :vartype id: str
6459    :ivar name: Resource name associated with the resource.
6460    :vartype name: str
6461    :ivar type: Resource type represents the complete path of the form
6462     Namespace/ResourceType/ResourceType/...
6463    :vartype type: str
6464    :param location: Resource location.
6465    :type location: str
6466    :param tags: Resource tags.
6467    :type tags: dict[str, str]
6468    :param e_tag: Optional ETag.
6469    :type e_tag: str
6470    :param properties: BackupRequestResource properties
6471    :type properties: ~azure.mgmt.recoveryservicesbackup.models.BackupRequest
6472    """
6473
6474    _validation = {
6475        'id': {'readonly': True},
6476        'name': {'readonly': True},
6477        'type': {'readonly': True},
6478    }
6479
6480    _attribute_map = {
6481        'id': {'key': 'id', 'type': 'str'},
6482        'name': {'key': 'name', 'type': 'str'},
6483        'type': {'key': 'type', 'type': 'str'},
6484        'location': {'key': 'location', 'type': 'str'},
6485        'tags': {'key': 'tags', 'type': '{str}'},
6486        'e_tag': {'key': 'eTag', 'type': 'str'},
6487        'properties': {'key': 'properties', 'type': 'BackupRequest'},
6488    }
6489
6490    def __init__(self, **kwargs):
6491        super(BackupRequestResource, self).__init__(**kwargs)
6492        self.properties = kwargs.get('properties', None)
6493
6494
6495class BackupResourceConfig(Model):
6496    """The resource storage details.
6497
6498    :param storage_model_type: Storage type. Possible values include:
6499     'Invalid', 'GeoRedundant', 'LocallyRedundant', 'ZoneRedundant',
6500     'ReadAccessGeoZoneRedundant'
6501    :type storage_model_type: str or
6502     ~azure.mgmt.recoveryservicesbackup.models.StorageType
6503    :param storage_type: Storage type. Possible values include: 'Invalid',
6504     'GeoRedundant', 'LocallyRedundant', 'ZoneRedundant',
6505     'ReadAccessGeoZoneRedundant'
6506    :type storage_type: str or
6507     ~azure.mgmt.recoveryservicesbackup.models.StorageType
6508    :param storage_type_state: Locked or Unlocked. Once a machine is
6509     registered against a resource, the storageTypeState is always Locked.
6510     Possible values include: 'Invalid', 'Locked', 'Unlocked'
6511    :type storage_type_state: str or
6512     ~azure.mgmt.recoveryservicesbackup.models.StorageTypeState
6513    :param cross_region_restore_flag: Opt in details of Cross Region Restore
6514     feature.
6515    :type cross_region_restore_flag: bool
6516    """
6517
6518    _attribute_map = {
6519        'storage_model_type': {'key': 'storageModelType', 'type': 'str'},
6520        'storage_type': {'key': 'storageType', 'type': 'str'},
6521        'storage_type_state': {'key': 'storageTypeState', 'type': 'str'},
6522        'cross_region_restore_flag': {'key': 'crossRegionRestoreFlag', 'type': 'bool'},
6523    }
6524
6525    def __init__(self, **kwargs):
6526        super(BackupResourceConfig, self).__init__(**kwargs)
6527        self.storage_model_type = kwargs.get('storage_model_type', None)
6528        self.storage_type = kwargs.get('storage_type', None)
6529        self.storage_type_state = kwargs.get('storage_type_state', None)
6530        self.cross_region_restore_flag = kwargs.get('cross_region_restore_flag', None)
6531
6532
6533class BackupResourceConfigResource(Resource):
6534    """The resource storage details.
6535
6536    Variables are only populated by the server, and will be ignored when
6537    sending a request.
6538
6539    :ivar id: Resource Id represents the complete path to the resource.
6540    :vartype id: str
6541    :ivar name: Resource name associated with the resource.
6542    :vartype name: str
6543    :ivar type: Resource type represents the complete path of the form
6544     Namespace/ResourceType/ResourceType/...
6545    :vartype type: str
6546    :param location: Resource location.
6547    :type location: str
6548    :param tags: Resource tags.
6549    :type tags: dict[str, str]
6550    :param e_tag: Optional ETag.
6551    :type e_tag: str
6552    :param properties: BackupResourceConfigResource properties
6553    :type properties:
6554     ~azure.mgmt.recoveryservicesbackup.models.BackupResourceConfig
6555    """
6556
6557    _validation = {
6558        'id': {'readonly': True},
6559        'name': {'readonly': True},
6560        'type': {'readonly': True},
6561    }
6562
6563    _attribute_map = {
6564        'id': {'key': 'id', 'type': 'str'},
6565        'name': {'key': 'name', 'type': 'str'},
6566        'type': {'key': 'type', 'type': 'str'},
6567        'location': {'key': 'location', 'type': 'str'},
6568        'tags': {'key': 'tags', 'type': '{str}'},
6569        'e_tag': {'key': 'eTag', 'type': 'str'},
6570        'properties': {'key': 'properties', 'type': 'BackupResourceConfig'},
6571    }
6572
6573    def __init__(self, **kwargs):
6574        super(BackupResourceConfigResource, self).__init__(**kwargs)
6575        self.properties = kwargs.get('properties', None)
6576
6577
6578class BackupResourceEncryptionConfig(Model):
6579    """BackupResourceEncryptionConfig.
6580
6581    :param encryption_at_rest_type: Encryption At Rest Type. Possible values
6582     include: 'Invalid', 'MicrosoftManaged', 'CustomerManaged'
6583    :type encryption_at_rest_type: str or
6584     ~azure.mgmt.recoveryservicesbackup.models.EncryptionAtRestType
6585    :param key_uri: Key Vault Key URI
6586    :type key_uri: str
6587    :param subscription_id: Key Vault Subscription Id
6588    :type subscription_id: str
6589    :param last_update_status: Possible values include: 'Invalid',
6590     'NotEnabled', 'PartiallySucceeded', 'PartiallyFailed', 'Failed',
6591     'Succeeded', 'Initialized', 'FirstInitialization'
6592    :type last_update_status: str or
6593     ~azure.mgmt.recoveryservicesbackup.models.LastUpdateStatus
6594    :param infrastructure_encryption_state: Possible values include:
6595     'Invalid', 'Disabled', 'Enabled'
6596    :type infrastructure_encryption_state: str or
6597     ~azure.mgmt.recoveryservicesbackup.models.InfrastructureEncryptionState
6598    """
6599
6600    _attribute_map = {
6601        'encryption_at_rest_type': {'key': 'encryptionAtRestType', 'type': 'str'},
6602        'key_uri': {'key': 'keyUri', 'type': 'str'},
6603        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
6604        'last_update_status': {'key': 'lastUpdateStatus', 'type': 'str'},
6605        'infrastructure_encryption_state': {'key': 'infrastructureEncryptionState', 'type': 'str'},
6606    }
6607
6608    def __init__(self, **kwargs):
6609        super(BackupResourceEncryptionConfig, self).__init__(**kwargs)
6610        self.encryption_at_rest_type = kwargs.get('encryption_at_rest_type', None)
6611        self.key_uri = kwargs.get('key_uri', None)
6612        self.subscription_id = kwargs.get('subscription_id', None)
6613        self.last_update_status = kwargs.get('last_update_status', None)
6614        self.infrastructure_encryption_state = kwargs.get('infrastructure_encryption_state', None)
6615
6616
6617class BackupResourceEncryptionConfigExtended(BackupResourceEncryptionConfig):
6618    """BackupResourceEncryptionConfigExtended.
6619
6620    :param encryption_at_rest_type: Encryption At Rest Type. Possible values
6621     include: 'Invalid', 'MicrosoftManaged', 'CustomerManaged'
6622    :type encryption_at_rest_type: str or
6623     ~azure.mgmt.recoveryservicesbackup.models.EncryptionAtRestType
6624    :param key_uri: Key Vault Key URI
6625    :type key_uri: str
6626    :param subscription_id: Key Vault Subscription Id
6627    :type subscription_id: str
6628    :param last_update_status: Possible values include: 'Invalid',
6629     'NotEnabled', 'PartiallySucceeded', 'PartiallyFailed', 'Failed',
6630     'Succeeded', 'Initialized', 'FirstInitialization'
6631    :type last_update_status: str or
6632     ~azure.mgmt.recoveryservicesbackup.models.LastUpdateStatus
6633    :param infrastructure_encryption_state: Possible values include:
6634     'Invalid', 'Disabled', 'Enabled'
6635    :type infrastructure_encryption_state: str or
6636     ~azure.mgmt.recoveryservicesbackup.models.InfrastructureEncryptionState
6637    :param user_assigned_identity: User Assigned Identity Id
6638    :type user_assigned_identity: str
6639    :param use_system_assigned_identity: bool to indicate whether to use
6640     system Assigned Identity or not
6641    :type use_system_assigned_identity: bool
6642    """
6643
6644    _attribute_map = {
6645        'encryption_at_rest_type': {'key': 'encryptionAtRestType', 'type': 'str'},
6646        'key_uri': {'key': 'keyUri', 'type': 'str'},
6647        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
6648        'last_update_status': {'key': 'lastUpdateStatus', 'type': 'str'},
6649        'infrastructure_encryption_state': {'key': 'infrastructureEncryptionState', 'type': 'str'},
6650        'user_assigned_identity': {'key': 'userAssignedIdentity', 'type': 'str'},
6651        'use_system_assigned_identity': {'key': 'useSystemAssignedIdentity', 'type': 'bool'},
6652    }
6653
6654    def __init__(self, **kwargs):
6655        super(BackupResourceEncryptionConfigExtended, self).__init__(**kwargs)
6656        self.user_assigned_identity = kwargs.get('user_assigned_identity', None)
6657        self.use_system_assigned_identity = kwargs.get('use_system_assigned_identity', None)
6658
6659
6660class BackupResourceEncryptionConfigExtendedResource(Resource):
6661    """BackupResourceEncryptionConfigExtendedResource.
6662
6663    Variables are only populated by the server, and will be ignored when
6664    sending a request.
6665
6666    :ivar id: Resource Id represents the complete path to the resource.
6667    :vartype id: str
6668    :ivar name: Resource name associated with the resource.
6669    :vartype name: str
6670    :ivar type: Resource type represents the complete path of the form
6671     Namespace/ResourceType/ResourceType/...
6672    :vartype type: str
6673    :param location: Resource location.
6674    :type location: str
6675    :param tags: Resource tags.
6676    :type tags: dict[str, str]
6677    :param e_tag: Optional ETag.
6678    :type e_tag: str
6679    :param properties: BackupResourceEncryptionConfigExtendedResource
6680     properties
6681    :type properties:
6682     ~azure.mgmt.recoveryservicesbackup.models.BackupResourceEncryptionConfigExtended
6683    """
6684
6685    _validation = {
6686        'id': {'readonly': True},
6687        'name': {'readonly': True},
6688        'type': {'readonly': True},
6689    }
6690
6691    _attribute_map = {
6692        'id': {'key': 'id', 'type': 'str'},
6693        'name': {'key': 'name', 'type': 'str'},
6694        'type': {'key': 'type', 'type': 'str'},
6695        'location': {'key': 'location', 'type': 'str'},
6696        'tags': {'key': 'tags', 'type': '{str}'},
6697        'e_tag': {'key': 'eTag', 'type': 'str'},
6698        'properties': {'key': 'properties', 'type': 'BackupResourceEncryptionConfigExtended'},
6699    }
6700
6701    def __init__(self, **kwargs):
6702        super(BackupResourceEncryptionConfigExtendedResource, self).__init__(**kwargs)
6703        self.properties = kwargs.get('properties', None)
6704
6705
6706class BackupResourceEncryptionConfigResource(Resource):
6707    """BackupResourceEncryptionConfigResource.
6708
6709    Variables are only populated by the server, and will be ignored when
6710    sending a request.
6711
6712    :ivar id: Resource Id represents the complete path to the resource.
6713    :vartype id: str
6714    :ivar name: Resource name associated with the resource.
6715    :vartype name: str
6716    :ivar type: Resource type represents the complete path of the form
6717     Namespace/ResourceType/ResourceType/...
6718    :vartype type: str
6719    :param location: Resource location.
6720    :type location: str
6721    :param tags: Resource tags.
6722    :type tags: dict[str, str]
6723    :param e_tag: Optional ETag.
6724    :type e_tag: str
6725    :param properties: BackupResourceEncryptionConfigResource properties
6726    :type properties:
6727     ~azure.mgmt.recoveryservicesbackup.models.BackupResourceEncryptionConfig
6728    """
6729
6730    _validation = {
6731        'id': {'readonly': True},
6732        'name': {'readonly': True},
6733        'type': {'readonly': True},
6734    }
6735
6736    _attribute_map = {
6737        'id': {'key': 'id', 'type': 'str'},
6738        'name': {'key': 'name', 'type': 'str'},
6739        'type': {'key': 'type', 'type': 'str'},
6740        'location': {'key': 'location', 'type': 'str'},
6741        'tags': {'key': 'tags', 'type': '{str}'},
6742        'e_tag': {'key': 'eTag', 'type': 'str'},
6743        'properties': {'key': 'properties', 'type': 'BackupResourceEncryptionConfig'},
6744    }
6745
6746    def __init__(self, **kwargs):
6747        super(BackupResourceEncryptionConfigResource, self).__init__(**kwargs)
6748        self.properties = kwargs.get('properties', None)
6749
6750
6751class BackupResourceVaultConfig(Model):
6752    """Backup resource vault config details.
6753
6754    :param storage_model_type: Storage type. Possible values include:
6755     'Invalid', 'GeoRedundant', 'LocallyRedundant', 'ZoneRedundant',
6756     'ReadAccessGeoZoneRedundant'
6757    :type storage_model_type: str or
6758     ~azure.mgmt.recoveryservicesbackup.models.StorageType
6759    :param storage_type: Storage type. Possible values include: 'Invalid',
6760     'GeoRedundant', 'LocallyRedundant', 'ZoneRedundant',
6761     'ReadAccessGeoZoneRedundant'
6762    :type storage_type: str or
6763     ~azure.mgmt.recoveryservicesbackup.models.StorageType
6764    :param storage_type_state: Locked or Unlocked. Once a machine is
6765     registered against a resource, the storageTypeState is always Locked.
6766     Possible values include: 'Invalid', 'Locked', 'Unlocked'
6767    :type storage_type_state: str or
6768     ~azure.mgmt.recoveryservicesbackup.models.StorageTypeState
6769    :param enhanced_security_state: Enabled or Disabled. Possible values
6770     include: 'Invalid', 'Enabled', 'Disabled'
6771    :type enhanced_security_state: str or
6772     ~azure.mgmt.recoveryservicesbackup.models.EnhancedSecurityState
6773    :param soft_delete_feature_state: Soft Delete feature state. Possible
6774     values include: 'Invalid', 'Enabled', 'Disabled'
6775    :type soft_delete_feature_state: str or
6776     ~azure.mgmt.recoveryservicesbackup.models.SoftDeleteFeatureState
6777    :param resource_guard_operation_requests: ResourceGuard Operation Requests
6778    :type resource_guard_operation_requests: list[str]
6779    """
6780
6781    _attribute_map = {
6782        'storage_model_type': {'key': 'storageModelType', 'type': 'str'},
6783        'storage_type': {'key': 'storageType', 'type': 'str'},
6784        'storage_type_state': {'key': 'storageTypeState', 'type': 'str'},
6785        'enhanced_security_state': {'key': 'enhancedSecurityState', 'type': 'str'},
6786        'soft_delete_feature_state': {'key': 'softDeleteFeatureState', 'type': 'str'},
6787        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
6788    }
6789
6790    def __init__(self, **kwargs):
6791        super(BackupResourceVaultConfig, self).__init__(**kwargs)
6792        self.storage_model_type = kwargs.get('storage_model_type', None)
6793        self.storage_type = kwargs.get('storage_type', None)
6794        self.storage_type_state = kwargs.get('storage_type_state', None)
6795        self.enhanced_security_state = kwargs.get('enhanced_security_state', None)
6796        self.soft_delete_feature_state = kwargs.get('soft_delete_feature_state', None)
6797        self.resource_guard_operation_requests = kwargs.get('resource_guard_operation_requests', None)
6798
6799
6800class BackupResourceVaultConfigResource(Resource):
6801    """Backup resource vault config details.
6802
6803    Variables are only populated by the server, and will be ignored when
6804    sending a request.
6805
6806    :ivar id: Resource Id represents the complete path to the resource.
6807    :vartype id: str
6808    :ivar name: Resource name associated with the resource.
6809    :vartype name: str
6810    :ivar type: Resource type represents the complete path of the form
6811     Namespace/ResourceType/ResourceType/...
6812    :vartype type: str
6813    :param location: Resource location.
6814    :type location: str
6815    :param tags: Resource tags.
6816    :type tags: dict[str, str]
6817    :param e_tag: Optional ETag.
6818    :type e_tag: str
6819    :param properties: BackupResourceVaultConfigResource properties
6820    :type properties:
6821     ~azure.mgmt.recoveryservicesbackup.models.BackupResourceVaultConfig
6822    """
6823
6824    _validation = {
6825        'id': {'readonly': True},
6826        'name': {'readonly': True},
6827        'type': {'readonly': True},
6828    }
6829
6830    _attribute_map = {
6831        'id': {'key': 'id', 'type': 'str'},
6832        'name': {'key': 'name', 'type': 'str'},
6833        'type': {'key': 'type', 'type': 'str'},
6834        'location': {'key': 'location', 'type': 'str'},
6835        'tags': {'key': 'tags', 'type': '{str}'},
6836        'e_tag': {'key': 'eTag', 'type': 'str'},
6837        'properties': {'key': 'properties', 'type': 'BackupResourceVaultConfig'},
6838    }
6839
6840    def __init__(self, **kwargs):
6841        super(BackupResourceVaultConfigResource, self).__init__(**kwargs)
6842        self.properties = kwargs.get('properties', None)
6843
6844
6845class BackupStatusRequest(Model):
6846    """BackupStatus request.
6847
6848    :param resource_type: Container Type - VM, SQLPaaS, DPM, AzureFileShare.
6849     Possible values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb',
6850     'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
6851     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
6852     'SAPAseDatabase'
6853    :type resource_type: str or
6854     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
6855    :param resource_id: Entire ARM resource id of the resource
6856    :type resource_id: str
6857    :param po_logical_name: Protectable Item Logical Name
6858    :type po_logical_name: str
6859    """
6860
6861    _attribute_map = {
6862        'resource_type': {'key': 'resourceType', 'type': 'str'},
6863        'resource_id': {'key': 'resourceId', 'type': 'str'},
6864        'po_logical_name': {'key': 'poLogicalName', 'type': 'str'},
6865    }
6866
6867    def __init__(self, **kwargs):
6868        super(BackupStatusRequest, self).__init__(**kwargs)
6869        self.resource_type = kwargs.get('resource_type', None)
6870        self.resource_id = kwargs.get('resource_id', None)
6871        self.po_logical_name = kwargs.get('po_logical_name', None)
6872
6873
6874class BackupStatusResponse(Model):
6875    """BackupStatus response.
6876
6877    :param protection_status: Specifies whether the container is registered or
6878     not. Possible values include: 'Invalid', 'NotProtected', 'Protecting',
6879     'Protected', 'ProtectionFailed'
6880    :type protection_status: str or
6881     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
6882    :param vault_id: Specifies the arm resource id of the vault
6883    :type vault_id: str
6884    :param fabric_name: Specifies the fabric name - Azure or AD. Possible
6885     values include: 'Invalid', 'Azure'
6886    :type fabric_name: str or
6887     ~azure.mgmt.recoveryservicesbackup.models.FabricName
6888    :param container_name: Specifies the product specific container name. E.g.
6889     iaasvmcontainer;iaasvmcontainer;csname;vmname.
6890    :type container_name: str
6891    :param protected_item_name: Specifies the product specific ds name. E.g.
6892     vm;iaasvmcontainer;csname;vmname.
6893    :type protected_item_name: str
6894    :param error_code: ErrorCode in case of intent failed
6895    :type error_code: str
6896    :param error_message: ErrorMessage in case of intent failed.
6897    :type error_message: str
6898    :param policy_name: Specifies the policy name which is used for protection
6899    :type policy_name: str
6900    :param registration_status: Container registration status
6901    :type registration_status: str
6902    """
6903
6904    _attribute_map = {
6905        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
6906        'vault_id': {'key': 'vaultId', 'type': 'str'},
6907        'fabric_name': {'key': 'fabricName', 'type': 'str'},
6908        'container_name': {'key': 'containerName', 'type': 'str'},
6909        'protected_item_name': {'key': 'protectedItemName', 'type': 'str'},
6910        'error_code': {'key': 'errorCode', 'type': 'str'},
6911        'error_message': {'key': 'errorMessage', 'type': 'str'},
6912        'policy_name': {'key': 'policyName', 'type': 'str'},
6913        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
6914    }
6915
6916    def __init__(self, **kwargs):
6917        super(BackupStatusResponse, self).__init__(**kwargs)
6918        self.protection_status = kwargs.get('protection_status', None)
6919        self.vault_id = kwargs.get('vault_id', None)
6920        self.fabric_name = kwargs.get('fabric_name', None)
6921        self.container_name = kwargs.get('container_name', None)
6922        self.protected_item_name = kwargs.get('protected_item_name', None)
6923        self.error_code = kwargs.get('error_code', None)
6924        self.error_message = kwargs.get('error_message', None)
6925        self.policy_name = kwargs.get('policy_name', None)
6926        self.registration_status = kwargs.get('registration_status', None)
6927
6928
6929class BEKDetails(Model):
6930    """BEK is bitlocker encryption key.
6931
6932    :param secret_url: Secret is BEK.
6933    :type secret_url: str
6934    :param secret_vault_id: ID of the Key Vault where this Secret is stored.
6935    :type secret_vault_id: str
6936    :param secret_data: BEK data.
6937    :type secret_data: str
6938    """
6939
6940    _attribute_map = {
6941        'secret_url': {'key': 'secretUrl', 'type': 'str'},
6942        'secret_vault_id': {'key': 'secretVaultId', 'type': 'str'},
6943        'secret_data': {'key': 'secretData', 'type': 'str'},
6944    }
6945
6946    def __init__(self, **kwargs):
6947        super(BEKDetails, self).__init__(**kwargs)
6948        self.secret_url = kwargs.get('secret_url', None)
6949        self.secret_vault_id = kwargs.get('secret_vault_id', None)
6950        self.secret_data = kwargs.get('secret_data', None)
6951
6952
6953class BMSAADPropertiesQueryObject(Model):
6954    """Filters to list backup items.
6955
6956    :param backup_management_type: Backup management type for the backed up
6957     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
6958     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
6959     'DefaultBackup'
6960    :type backup_management_type: str or
6961     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
6962    """
6963
6964    _attribute_map = {
6965        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
6966    }
6967
6968    def __init__(self, **kwargs):
6969        super(BMSAADPropertiesQueryObject, self).__init__(**kwargs)
6970        self.backup_management_type = kwargs.get('backup_management_type', None)
6971
6972
6973class BMSBackupEngineQueryObject(Model):
6974    """Query parameters to fetch list of backup engines.
6975
6976    :param expand: attribute to add extended info
6977    :type expand: str
6978    """
6979
6980    _attribute_map = {
6981        'expand': {'key': 'expand', 'type': 'str'},
6982    }
6983
6984    def __init__(self, **kwargs):
6985        super(BMSBackupEngineQueryObject, self).__init__(**kwargs)
6986        self.expand = kwargs.get('expand', None)
6987
6988
6989class BMSBackupEnginesQueryObject(Model):
6990    """Query parameters to fetch list of backup engines.
6991
6992    :param backup_management_type: Backup management type for the backup
6993     engine. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
6994     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
6995     'DefaultBackup'
6996    :type backup_management_type: str or
6997     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
6998    :param friendly_name: Friendly name of the backup engine.
6999    :type friendly_name: str
7000    :param expand: Attribute to add extended info.
7001    :type expand: str
7002    """
7003
7004    _attribute_map = {
7005        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
7006        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
7007        'expand': {'key': 'expand', 'type': 'str'},
7008    }
7009
7010    def __init__(self, **kwargs):
7011        super(BMSBackupEnginesQueryObject, self).__init__(**kwargs)
7012        self.backup_management_type = kwargs.get('backup_management_type', None)
7013        self.friendly_name = kwargs.get('friendly_name', None)
7014        self.expand = kwargs.get('expand', None)
7015
7016
7017class BMSBackupSummariesQueryObject(Model):
7018    """Query parameters to fetch backup summaries.
7019
7020    :param type: Backup management type for this container. Possible values
7021     include: 'Invalid', 'BackupProtectedItemCountSummary',
7022     'BackupProtectionContainerCountSummary'
7023    :type type: str or ~azure.mgmt.recoveryservicesbackup.models.Type
7024    """
7025
7026    _attribute_map = {
7027        'type': {'key': 'type', 'type': 'str'},
7028    }
7029
7030    def __init__(self, **kwargs):
7031        super(BMSBackupSummariesQueryObject, self).__init__(**kwargs)
7032        self.type = kwargs.get('type', None)
7033
7034
7035class BMSContainerQueryObject(Model):
7036    """The query filters that can be used with the list containers API.
7037
7038    All required parameters must be populated in order to send to Azure.
7039
7040    :param backup_management_type: Required. Backup management type for this
7041     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
7042     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
7043     'DefaultBackup'
7044    :type backup_management_type: str or
7045     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
7046    :param container_type: Type of container for filter. Possible values
7047     include: 'Invalid', 'Unknown', 'IaasVMContainer',
7048     'IaasVMServiceContainer', 'DPMContainer', 'AzureBackupServerContainer',
7049     'MABContainer', 'Cluster', 'AzureSqlContainer', 'Windows', 'VCenter',
7050     'VMAppContainer', 'SQLAGWorkLoadContainer', 'StorageContainer',
7051     'GenericContainer'
7052    :type container_type: str or
7053     ~azure.mgmt.recoveryservicesbackup.models.ContainerType
7054    :param backup_engine_name: Backup engine name
7055    :type backup_engine_name: str
7056    :param fabric_name: Fabric name for filter
7057    :type fabric_name: str
7058    :param status: Status of registration of this container with the Recovery
7059     Services Vault.
7060    :type status: str
7061    :param friendly_name: Friendly name of this container.
7062    :type friendly_name: str
7063    """
7064
7065    _validation = {
7066        'backup_management_type': {'required': True},
7067    }
7068
7069    _attribute_map = {
7070        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
7071        'container_type': {'key': 'containerType', 'type': 'str'},
7072        'backup_engine_name': {'key': 'backupEngineName', 'type': 'str'},
7073        'fabric_name': {'key': 'fabricName', 'type': 'str'},
7074        'status': {'key': 'status', 'type': 'str'},
7075        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
7076    }
7077
7078    def __init__(self, **kwargs):
7079        super(BMSContainerQueryObject, self).__init__(**kwargs)
7080        self.backup_management_type = kwargs.get('backup_management_type', None)
7081        self.container_type = kwargs.get('container_type', None)
7082        self.backup_engine_name = kwargs.get('backup_engine_name', None)
7083        self.fabric_name = kwargs.get('fabric_name', None)
7084        self.status = kwargs.get('status', None)
7085        self.friendly_name = kwargs.get('friendly_name', None)
7086
7087
7088class BMSContainersInquiryQueryObject(Model):
7089    """The query filters that can be used with the inquire container API.
7090
7091    :param backup_management_type: Backup management type for this container.
7092     Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
7093     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
7094     'DefaultBackup'
7095    :type backup_management_type: str or
7096     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
7097    :param workload_type: Workload type for this container. Possible values
7098     include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange',
7099     'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource',
7100     'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase'
7101    :type workload_type: str or
7102     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
7103    """
7104
7105    _attribute_map = {
7106        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
7107        'workload_type': {'key': 'workloadType', 'type': 'str'},
7108    }
7109
7110    def __init__(self, **kwargs):
7111        super(BMSContainersInquiryQueryObject, self).__init__(**kwargs)
7112        self.backup_management_type = kwargs.get('backup_management_type', None)
7113        self.workload_type = kwargs.get('workload_type', None)
7114
7115
7116class BMSPOQueryObject(Model):
7117    """Filters to list items that can be backed up.
7118
7119    :param backup_management_type: Backup management type. Possible values
7120     include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer',
7121     'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup'
7122    :type backup_management_type: str or
7123     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
7124    :param workload_type: Workload type. Possible values include: 'Invalid',
7125     'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint',
7126     'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase',
7127     'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase'
7128    :type workload_type: str or
7129     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
7130    :param container_name: Full name of the container whose Protectable
7131     Objects should be returned.
7132    :type container_name: str
7133    :param status: Backup status query parameter.
7134    :type status: str
7135    :param friendly_name: Friendly name.
7136    :type friendly_name: str
7137    """
7138
7139    _attribute_map = {
7140        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
7141        'workload_type': {'key': 'workloadType', 'type': 'str'},
7142        'container_name': {'key': 'containerName', 'type': 'str'},
7143        'status': {'key': 'status', 'type': 'str'},
7144        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
7145    }
7146
7147    def __init__(self, **kwargs):
7148        super(BMSPOQueryObject, self).__init__(**kwargs)
7149        self.backup_management_type = kwargs.get('backup_management_type', None)
7150        self.workload_type = kwargs.get('workload_type', None)
7151        self.container_name = kwargs.get('container_name', None)
7152        self.status = kwargs.get('status', None)
7153        self.friendly_name = kwargs.get('friendly_name', None)
7154
7155
7156class BMSRefreshContainersQueryObject(Model):
7157    """The query filters that can be used with the refresh container API.
7158
7159    :param backup_management_type: Backup management type for this container.
7160     Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
7161     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
7162     'DefaultBackup'
7163    :type backup_management_type: str or
7164     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
7165    """
7166
7167    _attribute_map = {
7168        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
7169    }
7170
7171    def __init__(self, **kwargs):
7172        super(BMSRefreshContainersQueryObject, self).__init__(**kwargs)
7173        self.backup_management_type = kwargs.get('backup_management_type', None)
7174
7175
7176class BMSRPQueryObject(Model):
7177    """Filters to list backup copies.
7178
7179    :param start_date: Backup copies created after this time.
7180    :type start_date: datetime
7181    :param end_date: Backup copies created before this time.
7182    :type end_date: datetime
7183    :param restore_point_query_type: RestorePoint type. Possible values
7184     include: 'Invalid', 'Full', 'Log', 'Differential', 'FullAndDifferential',
7185     'All', 'Incremental'
7186    :type restore_point_query_type: str or
7187     ~azure.mgmt.recoveryservicesbackup.models.RestorePointQueryType
7188    :param extended_info: In Get Recovery Point, it tells whether extended
7189     information about recovery point is asked.
7190    :type extended_info: bool
7191    :param move_ready_rp_only: Whether the RP can be moved to another tier
7192    :type move_ready_rp_only: bool
7193    """
7194
7195    _attribute_map = {
7196        'start_date': {'key': 'startDate', 'type': 'iso-8601'},
7197        'end_date': {'key': 'endDate', 'type': 'iso-8601'},
7198        'restore_point_query_type': {'key': 'restorePointQueryType', 'type': 'str'},
7199        'extended_info': {'key': 'extendedInfo', 'type': 'bool'},
7200        'move_ready_rp_only': {'key': 'moveReadyRPOnly', 'type': 'bool'},
7201    }
7202
7203    def __init__(self, **kwargs):
7204        super(BMSRPQueryObject, self).__init__(**kwargs)
7205        self.start_date = kwargs.get('start_date', None)
7206        self.end_date = kwargs.get('end_date', None)
7207        self.restore_point_query_type = kwargs.get('restore_point_query_type', None)
7208        self.extended_info = kwargs.get('extended_info', None)
7209        self.move_ready_rp_only = kwargs.get('move_ready_rp_only', None)
7210
7211
7212class BMSWorkloadItemQueryObject(Model):
7213    """Filters to list items that can be backed up.
7214
7215    :param backup_management_type: Backup management type. Possible values
7216     include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM', 'AzureBackupServer',
7217     'AzureSql', 'AzureStorage', 'AzureWorkload', 'DefaultBackup'
7218    :type backup_management_type: str or
7219     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
7220    :param workload_item_type: Workload Item type. Possible values include:
7221     'Invalid', 'SQLInstance', 'SQLDataBase', 'SAPHanaSystem',
7222     'SAPHanaDatabase', 'SAPAseSystem', 'SAPAseDatabase'
7223    :type workload_item_type: str or
7224     ~azure.mgmt.recoveryservicesbackup.models.WorkloadItemType
7225    :param workload_type: Workload type. Possible values include: 'Invalid',
7226     'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint',
7227     'VMwareVM', 'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase',
7228     'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase'
7229    :type workload_type: str or
7230     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
7231    :param protection_status: Backup status query parameter. Possible values
7232     include: 'Invalid', 'NotProtected', 'Protecting', 'Protected',
7233     'ProtectionFailed'
7234    :type protection_status: str or
7235     ~azure.mgmt.recoveryservicesbackup.models.ProtectionStatus
7236    """
7237
7238    _attribute_map = {
7239        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
7240        'workload_item_type': {'key': 'workloadItemType', 'type': 'str'},
7241        'workload_type': {'key': 'workloadType', 'type': 'str'},
7242        'protection_status': {'key': 'protectionStatus', 'type': 'str'},
7243    }
7244
7245    def __init__(self, **kwargs):
7246        super(BMSWorkloadItemQueryObject, self).__init__(**kwargs)
7247        self.backup_management_type = kwargs.get('backup_management_type', None)
7248        self.workload_item_type = kwargs.get('workload_item_type', None)
7249        self.workload_type = kwargs.get('workload_type', None)
7250        self.protection_status = kwargs.get('protection_status', None)
7251
7252
7253class ClientDiscoveryDisplay(Model):
7254    """Localized display information of an operation.
7255
7256    :param provider: Name of the provider for display purposes
7257    :type provider: str
7258    :param resource: ResourceType for which this Operation can be performed.
7259    :type resource: str
7260    :param operation: Operations Name itself.
7261    :type operation: str
7262    :param description: Description of the operation having details of what
7263     operation is about.
7264    :type description: str
7265    """
7266
7267    _attribute_map = {
7268        'provider': {'key': 'provider', 'type': 'str'},
7269        'resource': {'key': 'resource', 'type': 'str'},
7270        'operation': {'key': 'operation', 'type': 'str'},
7271        'description': {'key': 'description', 'type': 'str'},
7272    }
7273
7274    def __init__(self, **kwargs):
7275        super(ClientDiscoveryDisplay, self).__init__(**kwargs)
7276        self.provider = kwargs.get('provider', None)
7277        self.resource = kwargs.get('resource', None)
7278        self.operation = kwargs.get('operation', None)
7279        self.description = kwargs.get('description', None)
7280
7281
7282class ClientDiscoveryForLogSpecification(Model):
7283    """Class to represent shoebox log specification in json client discovery.
7284
7285    :param name: Name for shoebox log specification.
7286    :type name: str
7287    :param display_name: Localized display name
7288    :type display_name: str
7289    :param blob_duration: blob duration of shoebox log specification
7290    :type blob_duration: str
7291    """
7292
7293    _attribute_map = {
7294        'name': {'key': 'name', 'type': 'str'},
7295        'display_name': {'key': 'displayName', 'type': 'str'},
7296        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
7297    }
7298
7299    def __init__(self, **kwargs):
7300        super(ClientDiscoveryForLogSpecification, self).__init__(**kwargs)
7301        self.name = kwargs.get('name', None)
7302        self.display_name = kwargs.get('display_name', None)
7303        self.blob_duration = kwargs.get('blob_duration', None)
7304
7305
7306class ClientDiscoveryForProperties(Model):
7307    """Class to represent shoebox properties in json client discovery.
7308
7309    :param service_specification: Operation properties.
7310    :type service_specification:
7311     ~azure.mgmt.recoveryservicesbackup.models.ClientDiscoveryForServiceSpecification
7312    """
7313
7314    _attribute_map = {
7315        'service_specification': {'key': 'serviceSpecification', 'type': 'ClientDiscoveryForServiceSpecification'},
7316    }
7317
7318    def __init__(self, **kwargs):
7319        super(ClientDiscoveryForProperties, self).__init__(**kwargs)
7320        self.service_specification = kwargs.get('service_specification', None)
7321
7322
7323class ClientDiscoveryForServiceSpecification(Model):
7324    """Class to represent shoebox service specification in json client discovery.
7325
7326    :param log_specifications: List of log specifications of this operation.
7327    :type log_specifications:
7328     list[~azure.mgmt.recoveryservicesbackup.models.ClientDiscoveryForLogSpecification]
7329    """
7330
7331    _attribute_map = {
7332        'log_specifications': {'key': 'logSpecifications', 'type': '[ClientDiscoveryForLogSpecification]'},
7333    }
7334
7335    def __init__(self, **kwargs):
7336        super(ClientDiscoveryForServiceSpecification, self).__init__(**kwargs)
7337        self.log_specifications = kwargs.get('log_specifications', None)
7338
7339
7340class ClientDiscoveryValueForSingleApi(Model):
7341    """Available operation details.
7342
7343    :param name: Name of the Operation.
7344    :type name: str
7345    :param display: Contains the localized display information for this
7346     particular operation
7347    :type display:
7348     ~azure.mgmt.recoveryservicesbackup.models.ClientDiscoveryDisplay
7349    :param origin: The intended executor of the operation;governs the display
7350     of the operation in the RBAC UX and the audit logs UX
7351    :type origin: str
7352    :param properties: ShoeBox properties for the given operation.
7353    :type properties:
7354     ~azure.mgmt.recoveryservicesbackup.models.ClientDiscoveryForProperties
7355    """
7356
7357    _attribute_map = {
7358        'name': {'key': 'name', 'type': 'str'},
7359        'display': {'key': 'display', 'type': 'ClientDiscoveryDisplay'},
7360        'origin': {'key': 'origin', 'type': 'str'},
7361        'properties': {'key': 'properties', 'type': 'ClientDiscoveryForProperties'},
7362    }
7363
7364    def __init__(self, **kwargs):
7365        super(ClientDiscoveryValueForSingleApi, self).__init__(**kwargs)
7366        self.name = kwargs.get('name', None)
7367        self.display = kwargs.get('display', None)
7368        self.origin = kwargs.get('origin', None)
7369        self.properties = kwargs.get('properties', None)
7370
7371
7372class ClientScriptForConnect(Model):
7373    """Client script details for file / folder restore.
7374
7375    :param script_content: File content of the client script for file / folder
7376     restore.
7377    :type script_content: str
7378    :param script_extension: File extension of the client script for file /
7379     folder restore - .ps1 , .sh , etc.
7380    :type script_extension: str
7381    :param os_type: OS type - Windows, Linux etc. for which this file / folder
7382     restore client script works.
7383    :type os_type: str
7384    :param url: URL of Executable from where to source the content. If this is
7385     not null then ScriptContent should not be used
7386    :type url: str
7387    :param script_name_suffix: Mandatory suffix that should be added to the
7388     name of script that is given for download to user.
7389     If its null or empty then , ignore it.
7390    :type script_name_suffix: str
7391    """
7392
7393    _attribute_map = {
7394        'script_content': {'key': 'scriptContent', 'type': 'str'},
7395        'script_extension': {'key': 'scriptExtension', 'type': 'str'},
7396        'os_type': {'key': 'osType', 'type': 'str'},
7397        'url': {'key': 'url', 'type': 'str'},
7398        'script_name_suffix': {'key': 'scriptNameSuffix', 'type': 'str'},
7399    }
7400
7401    def __init__(self, **kwargs):
7402        super(ClientScriptForConnect, self).__init__(**kwargs)
7403        self.script_content = kwargs.get('script_content', None)
7404        self.script_extension = kwargs.get('script_extension', None)
7405        self.os_type = kwargs.get('os_type', None)
7406        self.url = kwargs.get('url', None)
7407        self.script_name_suffix = kwargs.get('script_name_suffix', None)
7408
7409
7410class CloudError(Model):
7411    """An error response from the Container Instance service.
7412
7413    :param error: The error object.
7414    :type error: ~azure.mgmt.recoveryservicesbackup.models.CloudErrorBody
7415    """
7416
7417    _attribute_map = {
7418        'error': {'key': 'error', 'type': 'CloudErrorBody'},
7419    }
7420
7421    def __init__(self, **kwargs):
7422        super(CloudError, self).__init__(**kwargs)
7423        self.error = kwargs.get('error', None)
7424
7425
7426class CloudErrorException(HttpOperationError):
7427    """Server responsed with exception of type: 'CloudError'.
7428
7429    :param deserialize: A deserializer
7430    :param response: Server response to be deserialized.
7431    """
7432
7433    def __init__(self, deserialize, response, *args):
7434
7435        super(CloudErrorException, self).__init__(deserialize, response, 'CloudError', *args)
7436
7437
7438class CloudErrorBody(Model):
7439    """An error response from the Container Instance service.
7440
7441    Variables are only populated by the server, and will be ignored when
7442    sending a request.
7443
7444    :ivar code: An identifier for the error. Codes are invariant and are
7445     intended to be consumed programmatically.
7446    :vartype code: str
7447    :ivar message: A message describing the error, intended to be suitable for
7448     display in a user interface.
7449    :vartype message: str
7450    :ivar target: The target of the particular error. For example, the name of
7451     the property in error.
7452    :vartype target: str
7453    :ivar details: A list of additional details about the error.
7454    :vartype details:
7455     list[~azure.mgmt.recoveryservicesbackup.models.CloudErrorBody]
7456    :ivar additional_info: The error additional info.
7457    :vartype additional_info:
7458     list[~azure.mgmt.recoveryservicesbackup.models.ErrorAdditionalInfo]
7459    """
7460
7461    _validation = {
7462        'code': {'readonly': True},
7463        'message': {'readonly': True},
7464        'target': {'readonly': True},
7465        'details': {'readonly': True},
7466        'additional_info': {'readonly': True},
7467    }
7468
7469    _attribute_map = {
7470        'code': {'key': 'code', 'type': 'str'},
7471        'message': {'key': 'message', 'type': 'str'},
7472        'target': {'key': 'target', 'type': 'str'},
7473        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
7474        'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
7475    }
7476
7477    def __init__(self, **kwargs):
7478        super(CloudErrorBody, self).__init__(**kwargs)
7479        self.code = None
7480        self.message = None
7481        self.target = None
7482        self.details = None
7483        self.additional_info = None
7484
7485
7486class ContainerIdentityInfo(Model):
7487    """Container identity information.
7488
7489    :param unique_name: Unique name of the container
7490    :type unique_name: str
7491    :param aad_tenant_id: Protection container identity - AAD Tenant
7492    :type aad_tenant_id: str
7493    :param service_principal_client_id: Protection container identity - AAD
7494     Service Principal
7495    :type service_principal_client_id: str
7496    :param audience: Protection container identity - Audience
7497    :type audience: str
7498    """
7499
7500    _attribute_map = {
7501        'unique_name': {'key': 'uniqueName', 'type': 'str'},
7502        'aad_tenant_id': {'key': 'aadTenantId', 'type': 'str'},
7503        'service_principal_client_id': {'key': 'servicePrincipalClientId', 'type': 'str'},
7504        'audience': {'key': 'audience', 'type': 'str'},
7505    }
7506
7507    def __init__(self, **kwargs):
7508        super(ContainerIdentityInfo, self).__init__(**kwargs)
7509        self.unique_name = kwargs.get('unique_name', None)
7510        self.aad_tenant_id = kwargs.get('aad_tenant_id', None)
7511        self.service_principal_client_id = kwargs.get('service_principal_client_id', None)
7512        self.audience = kwargs.get('audience', None)
7513
7514
7515class CrossRegionRestoreRequest(Model):
7516    """CrossRegionRestoreRequest.
7517
7518    :param cross_region_restore_access_details: Access details for cross
7519     region restore
7520    :type cross_region_restore_access_details:
7521     ~azure.mgmt.recoveryservicesbackup.models.CrrAccessToken
7522    :param restore_request: Request object for triggering restore
7523    :type restore_request:
7524     ~azure.mgmt.recoveryservicesbackup.models.RestoreRequest
7525    """
7526
7527    _attribute_map = {
7528        'cross_region_restore_access_details': {'key': 'crossRegionRestoreAccessDetails', 'type': 'CrrAccessToken'},
7529        'restore_request': {'key': 'restoreRequest', 'type': 'RestoreRequest'},
7530    }
7531
7532    def __init__(self, **kwargs):
7533        super(CrossRegionRestoreRequest, self).__init__(**kwargs)
7534        self.cross_region_restore_access_details = kwargs.get('cross_region_restore_access_details', None)
7535        self.restore_request = kwargs.get('restore_request', None)
7536
7537
7538class CrossRegionRestoreRequestResource(Resource):
7539    """CrossRegionRestoreRequestResource.
7540
7541    Variables are only populated by the server, and will be ignored when
7542    sending a request.
7543
7544    :ivar id: Resource Id represents the complete path to the resource.
7545    :vartype id: str
7546    :ivar name: Resource name associated with the resource.
7547    :vartype name: str
7548    :ivar type: Resource type represents the complete path of the form
7549     Namespace/ResourceType/ResourceType/...
7550    :vartype type: str
7551    :param location: Resource location.
7552    :type location: str
7553    :param tags: Resource tags.
7554    :type tags: dict[str, str]
7555    :param e_tag: Optional ETag.
7556    :type e_tag: str
7557    :param properties: CrossRegionRestoreRequestResource properties
7558    :type properties:
7559     ~azure.mgmt.recoveryservicesbackup.models.CrossRegionRestoreRequest
7560    """
7561
7562    _validation = {
7563        'id': {'readonly': True},
7564        'name': {'readonly': True},
7565        'type': {'readonly': True},
7566    }
7567
7568    _attribute_map = {
7569        'id': {'key': 'id', 'type': 'str'},
7570        'name': {'key': 'name', 'type': 'str'},
7571        'type': {'key': 'type', 'type': 'str'},
7572        'location': {'key': 'location', 'type': 'str'},
7573        'tags': {'key': 'tags', 'type': '{str}'},
7574        'e_tag': {'key': 'eTag', 'type': 'str'},
7575        'properties': {'key': 'properties', 'type': 'CrossRegionRestoreRequest'},
7576    }
7577
7578    def __init__(self, **kwargs):
7579        super(CrossRegionRestoreRequestResource, self).__init__(**kwargs)
7580        self.properties = kwargs.get('properties', None)
7581
7582
7583class CrrAccessToken(Model):
7584    """CrrAccessToken.
7585
7586    You probably want to use the sub-classes and not this class directly. Known
7587    sub-classes are: WorkloadCrrAccessToken
7588
7589    All required parameters must be populated in order to send to Azure.
7590
7591    :param access_token_string: Access token used for authentication
7592    :type access_token_string: str
7593    :param subscription_id: Subscription Id of the source vault
7594    :type subscription_id: str
7595    :param resource_group_name: Resource Group name of the source vault
7596    :type resource_group_name: str
7597    :param resource_name: Resource Name of the source vault
7598    :type resource_name: str
7599    :param resource_id: Resource Id of the source vault
7600    :type resource_id: str
7601    :param protection_container_id: Protected item container id
7602    :type protection_container_id: long
7603    :param recovery_point_id: Recovery Point Id
7604    :type recovery_point_id: str
7605    :param recovery_point_time: Recovery Point Time
7606    :type recovery_point_time: str
7607    :param container_name: Container Unique name
7608    :type container_name: str
7609    :param container_type: Container Type
7610    :type container_type: str
7611    :param backup_management_type: Backup Management Type
7612    :type backup_management_type: str
7613    :param datasource_type: Datasource Type
7614    :type datasource_type: str
7615    :param datasource_name: Datasource Friendly Name
7616    :type datasource_name: str
7617    :param datasource_id: Datasource Id
7618    :type datasource_id: str
7619    :param datasource_container_name: Datasource Container Unique Name
7620    :type datasource_container_name: str
7621    :param coordinator_service_stamp_id: CoordinatorServiceStampId to be used
7622     by BCM in restore call
7623    :type coordinator_service_stamp_id: str
7624    :param coordinator_service_stamp_uri: CoordinatorServiceStampUri to be
7625     used by BCM in restore call
7626    :type coordinator_service_stamp_uri: str
7627    :param protection_service_stamp_id: ProtectionServiceStampId to be used by
7628     BCM in restore call
7629    :type protection_service_stamp_id: str
7630    :param protection_service_stamp_uri: ProtectionServiceStampUri to be used
7631     by BCM in restore call
7632    :type protection_service_stamp_uri: str
7633    :param token_extended_information: Extended Information about the token
7634     like FileSpec etc.
7635    :type token_extended_information: str
7636    :param rp_tier_information: Recovery point Tier Information
7637    :type rp_tier_information: dict[str, str]
7638    :param rp_original_sa_option: Recovery point information: Original SA
7639     option
7640    :type rp_original_sa_option: bool
7641    :param rp_is_managed_virtual_machine: Recovery point information: Managed
7642     virtual machine
7643    :type rp_is_managed_virtual_machine: bool
7644    :param rp_vm_size_description: Recovery point information: VM size
7645     description
7646    :type rp_vm_size_description: str
7647    :param b_ms_active_region: Active region name of BMS Stamp
7648    :type b_ms_active_region: str
7649    :param object_type: Required. Constant filled by server.
7650    :type object_type: str
7651    """
7652
7653    _validation = {
7654        'object_type': {'required': True},
7655    }
7656
7657    _attribute_map = {
7658        'access_token_string': {'key': 'accessTokenString', 'type': 'str'},
7659        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
7660        'resource_group_name': {'key': 'resourceGroupName', 'type': 'str'},
7661        'resource_name': {'key': 'resourceName', 'type': 'str'},
7662        'resource_id': {'key': 'resourceId', 'type': 'str'},
7663        'protection_container_id': {'key': 'protectionContainerId', 'type': 'long'},
7664        'recovery_point_id': {'key': 'recoveryPointId', 'type': 'str'},
7665        'recovery_point_time': {'key': 'recoveryPointTime', 'type': 'str'},
7666        'container_name': {'key': 'containerName', 'type': 'str'},
7667        'container_type': {'key': 'containerType', 'type': 'str'},
7668        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
7669        'datasource_type': {'key': 'datasourceType', 'type': 'str'},
7670        'datasource_name': {'key': 'datasourceName', 'type': 'str'},
7671        'datasource_id': {'key': 'datasourceId', 'type': 'str'},
7672        'datasource_container_name': {'key': 'datasourceContainerName', 'type': 'str'},
7673        'coordinator_service_stamp_id': {'key': 'coordinatorServiceStampId', 'type': 'str'},
7674        'coordinator_service_stamp_uri': {'key': 'coordinatorServiceStampUri', 'type': 'str'},
7675        'protection_service_stamp_id': {'key': 'protectionServiceStampId', 'type': 'str'},
7676        'protection_service_stamp_uri': {'key': 'protectionServiceStampUri', 'type': 'str'},
7677        'token_extended_information': {'key': 'tokenExtendedInformation', 'type': 'str'},
7678        'rp_tier_information': {'key': 'rpTierInformation', 'type': '{str}'},
7679        'rp_original_sa_option': {'key': 'rpOriginalSAOption', 'type': 'bool'},
7680        'rp_is_managed_virtual_machine': {'key': 'rpIsManagedVirtualMachine', 'type': 'bool'},
7681        'rp_vm_size_description': {'key': 'rpVMSizeDescription', 'type': 'str'},
7682        'b_ms_active_region': {'key': 'bMSActiveRegion', 'type': 'str'},
7683        'object_type': {'key': 'objectType', 'type': 'str'},
7684    }
7685
7686    _subtype_map = {
7687        'object_type': {'WorkloadCrrAccessToken': 'WorkloadCrrAccessToken'}
7688    }
7689
7690    def __init__(self, **kwargs):
7691        super(CrrAccessToken, self).__init__(**kwargs)
7692        self.access_token_string = kwargs.get('access_token_string', None)
7693        self.subscription_id = kwargs.get('subscription_id', None)
7694        self.resource_group_name = kwargs.get('resource_group_name', None)
7695        self.resource_name = kwargs.get('resource_name', None)
7696        self.resource_id = kwargs.get('resource_id', None)
7697        self.protection_container_id = kwargs.get('protection_container_id', None)
7698        self.recovery_point_id = kwargs.get('recovery_point_id', None)
7699        self.recovery_point_time = kwargs.get('recovery_point_time', None)
7700        self.container_name = kwargs.get('container_name', None)
7701        self.container_type = kwargs.get('container_type', None)
7702        self.backup_management_type = kwargs.get('backup_management_type', None)
7703        self.datasource_type = kwargs.get('datasource_type', None)
7704        self.datasource_name = kwargs.get('datasource_name', None)
7705        self.datasource_id = kwargs.get('datasource_id', None)
7706        self.datasource_container_name = kwargs.get('datasource_container_name', None)
7707        self.coordinator_service_stamp_id = kwargs.get('coordinator_service_stamp_id', None)
7708        self.coordinator_service_stamp_uri = kwargs.get('coordinator_service_stamp_uri', None)
7709        self.protection_service_stamp_id = kwargs.get('protection_service_stamp_id', None)
7710        self.protection_service_stamp_uri = kwargs.get('protection_service_stamp_uri', None)
7711        self.token_extended_information = kwargs.get('token_extended_information', None)
7712        self.rp_tier_information = kwargs.get('rp_tier_information', None)
7713        self.rp_original_sa_option = kwargs.get('rp_original_sa_option', None)
7714        self.rp_is_managed_virtual_machine = kwargs.get('rp_is_managed_virtual_machine', None)
7715        self.rp_vm_size_description = kwargs.get('rp_vm_size_description', None)
7716        self.b_ms_active_region = kwargs.get('b_ms_active_region', None)
7717        self.object_type = None
7718
7719
7720class CrrAccessTokenResource(Resource):
7721    """CrrAccessTokenResource.
7722
7723    Variables are only populated by the server, and will be ignored when
7724    sending a request.
7725
7726    :ivar id: Resource Id represents the complete path to the resource.
7727    :vartype id: str
7728    :ivar name: Resource name associated with the resource.
7729    :vartype name: str
7730    :ivar type: Resource type represents the complete path of the form
7731     Namespace/ResourceType/ResourceType/...
7732    :vartype type: str
7733    :param location: Resource location.
7734    :type location: str
7735    :param tags: Resource tags.
7736    :type tags: dict[str, str]
7737    :param e_tag: Optional ETag.
7738    :type e_tag: str
7739    :param properties: CrrAccessTokenResource properties
7740    :type properties: ~azure.mgmt.recoveryservicesbackup.models.CrrAccessToken
7741    """
7742
7743    _validation = {
7744        'id': {'readonly': True},
7745        'name': {'readonly': True},
7746        'type': {'readonly': True},
7747    }
7748
7749    _attribute_map = {
7750        'id': {'key': 'id', 'type': 'str'},
7751        'name': {'key': 'name', 'type': 'str'},
7752        'type': {'key': 'type', 'type': 'str'},
7753        'location': {'key': 'location', 'type': 'str'},
7754        'tags': {'key': 'tags', 'type': '{str}'},
7755        'e_tag': {'key': 'eTag', 'type': 'str'},
7756        'properties': {'key': 'properties', 'type': 'CrrAccessToken'},
7757    }
7758
7759    def __init__(self, **kwargs):
7760        super(CrrAccessTokenResource, self).__init__(**kwargs)
7761        self.properties = kwargs.get('properties', None)
7762
7763
7764class CrrJobRequest(Model):
7765    """Request object for fetching CRR jobs.
7766
7767    :param resource_id: Entire ARM resource id of the resource
7768    :type resource_id: str
7769    :param job_name: Job Name of the job to be fetched
7770    :type job_name: str
7771    """
7772
7773    _attribute_map = {
7774        'resource_id': {'key': 'resourceId', 'type': 'str'},
7775        'job_name': {'key': 'jobName', 'type': 'str'},
7776    }
7777
7778    def __init__(self, **kwargs):
7779        super(CrrJobRequest, self).__init__(**kwargs)
7780        self.resource_id = kwargs.get('resource_id', None)
7781        self.job_name = kwargs.get('job_name', None)
7782
7783
7784class CrrJobRequestResource(Resource):
7785    """Request object for fetching CRR jobs.
7786
7787    Variables are only populated by the server, and will be ignored when
7788    sending a request.
7789
7790    :ivar id: Resource Id represents the complete path to the resource.
7791    :vartype id: str
7792    :ivar name: Resource name associated with the resource.
7793    :vartype name: str
7794    :ivar type: Resource type represents the complete path of the form
7795     Namespace/ResourceType/ResourceType/...
7796    :vartype type: str
7797    :param location: Resource location.
7798    :type location: str
7799    :param tags: Resource tags.
7800    :type tags: dict[str, str]
7801    :param e_tag: Optional ETag.
7802    :type e_tag: str
7803    :param properties: CrrJobRequestResource properties
7804    :type properties: ~azure.mgmt.recoveryservicesbackup.models.CrrJobRequest
7805    """
7806
7807    _validation = {
7808        'id': {'readonly': True},
7809        'name': {'readonly': True},
7810        'type': {'readonly': True},
7811    }
7812
7813    _attribute_map = {
7814        'id': {'key': 'id', 'type': 'str'},
7815        'name': {'key': 'name', 'type': 'str'},
7816        'type': {'key': 'type', 'type': 'str'},
7817        'location': {'key': 'location', 'type': 'str'},
7818        'tags': {'key': 'tags', 'type': '{str}'},
7819        'e_tag': {'key': 'eTag', 'type': 'str'},
7820        'properties': {'key': 'properties', 'type': 'CrrJobRequest'},
7821    }
7822
7823    def __init__(self, **kwargs):
7824        super(CrrJobRequestResource, self).__init__(**kwargs)
7825        self.properties = kwargs.get('properties', None)
7826
7827
7828class DailyRetentionFormat(Model):
7829    """Daily retention format.
7830
7831    :param days_of_the_month: List of days of the month.
7832    :type days_of_the_month:
7833     list[~azure.mgmt.recoveryservicesbackup.models.Day]
7834    """
7835
7836    _attribute_map = {
7837        'days_of_the_month': {'key': 'daysOfTheMonth', 'type': '[Day]'},
7838    }
7839
7840    def __init__(self, **kwargs):
7841        super(DailyRetentionFormat, self).__init__(**kwargs)
7842        self.days_of_the_month = kwargs.get('days_of_the_month', None)
7843
7844
7845class DailyRetentionSchedule(Model):
7846    """Daily retention schedule.
7847
7848    :param retention_times: Retention times of retention policy.
7849    :type retention_times: list[datetime]
7850    :param retention_duration: Retention duration of retention Policy.
7851    :type retention_duration:
7852     ~azure.mgmt.recoveryservicesbackup.models.RetentionDuration
7853    """
7854
7855    _attribute_map = {
7856        'retention_times': {'key': 'retentionTimes', 'type': '[iso-8601]'},
7857        'retention_duration': {'key': 'retentionDuration', 'type': 'RetentionDuration'},
7858    }
7859
7860    def __init__(self, **kwargs):
7861        super(DailyRetentionSchedule, self).__init__(**kwargs)
7862        self.retention_times = kwargs.get('retention_times', None)
7863        self.retention_duration = kwargs.get('retention_duration', None)
7864
7865
7866class Day(Model):
7867    """Day of the week.
7868
7869    :param date_property: Date of the month
7870    :type date_property: int
7871    :param is_last: Whether Date is last date of month
7872    :type is_last: bool
7873    """
7874
7875    _attribute_map = {
7876        'date_property': {'key': 'date', 'type': 'int'},
7877        'is_last': {'key': 'isLast', 'type': 'bool'},
7878    }
7879
7880    def __init__(self, **kwargs):
7881        super(Day, self).__init__(**kwargs)
7882        self.date_property = kwargs.get('date_property', None)
7883        self.is_last = kwargs.get('is_last', None)
7884
7885
7886class DiskExclusionProperties(Model):
7887    """DiskExclusionProperties.
7888
7889    :param disk_lun_list: List of Disks' Logical Unit Numbers (LUN) to be used
7890     for VM Protection.
7891    :type disk_lun_list: list[int]
7892    :param is_inclusion_list: Flag to indicate whether DiskLunList is to be
7893     included/ excluded from backup.
7894    :type is_inclusion_list: bool
7895    """
7896
7897    _attribute_map = {
7898        'disk_lun_list': {'key': 'diskLunList', 'type': '[int]'},
7899        'is_inclusion_list': {'key': 'isInclusionList', 'type': 'bool'},
7900    }
7901
7902    def __init__(self, **kwargs):
7903        super(DiskExclusionProperties, self).__init__(**kwargs)
7904        self.disk_lun_list = kwargs.get('disk_lun_list', None)
7905        self.is_inclusion_list = kwargs.get('is_inclusion_list', None)
7906
7907
7908class DiskInformation(Model):
7909    """Disk information.
7910
7911    :param lun:
7912    :type lun: int
7913    :param name:
7914    :type name: str
7915    """
7916
7917    _attribute_map = {
7918        'lun': {'key': 'lun', 'type': 'int'},
7919        'name': {'key': 'name', 'type': 'str'},
7920    }
7921
7922    def __init__(self, **kwargs):
7923        super(DiskInformation, self).__init__(**kwargs)
7924        self.lun = kwargs.get('lun', None)
7925        self.name = kwargs.get('name', None)
7926
7927
7928class DistributedNodesInfo(Model):
7929    """This is used to represent the various nodes of the distributed container.
7930
7931    :param node_name: Name of the node under a distributed container.
7932    :type node_name: str
7933    :param status: Status of this Node.
7934     Failed | Succeeded
7935    :type status: str
7936    :param error_detail: Error Details if the Status is non-success.
7937    :type error_detail: ~azure.mgmt.recoveryservicesbackup.models.ErrorDetail
7938    """
7939
7940    _attribute_map = {
7941        'node_name': {'key': 'nodeName', 'type': 'str'},
7942        'status': {'key': 'status', 'type': 'str'},
7943        'error_detail': {'key': 'errorDetail', 'type': 'ErrorDetail'},
7944    }
7945
7946    def __init__(self, **kwargs):
7947        super(DistributedNodesInfo, self).__init__(**kwargs)
7948        self.node_name = kwargs.get('node_name', None)
7949        self.status = kwargs.get('status', None)
7950        self.error_detail = kwargs.get('error_detail', None)
7951
7952
7953class DpmBackupEngine(BackupEngineBase):
7954    """Data Protection Manager (DPM) specific backup engine.
7955
7956    All required parameters must be populated in order to send to Azure.
7957
7958    :param friendly_name: Friendly name of the backup engine.
7959    :type friendly_name: str
7960    :param backup_management_type: Type of backup management for the backup
7961     engine. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
7962     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
7963     'DefaultBackup'
7964    :type backup_management_type: str or
7965     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
7966    :param registration_status: Registration status of the backup engine with
7967     the Recovery Services Vault.
7968    :type registration_status: str
7969    :param backup_engine_state: Status of the backup engine with the Recovery
7970     Services Vault. = {Active/Deleting/DeleteFailed}
7971    :type backup_engine_state: str
7972    :param health_status: Backup status of the backup engine.
7973    :type health_status: str
7974    :param can_re_register: Flag indicating if the backup engine be
7975     registered, once already registered.
7976    :type can_re_register: bool
7977    :param backup_engine_id: ID of the backup engine.
7978    :type backup_engine_id: str
7979    :param dpm_version: Backup engine version
7980    :type dpm_version: str
7981    :param azure_backup_agent_version: Backup agent version
7982    :type azure_backup_agent_version: str
7983    :param is_azure_backup_agent_upgrade_available: To check if backup agent
7984     upgrade available
7985    :type is_azure_backup_agent_upgrade_available: bool
7986    :param is_dpm_upgrade_available: To check if backup engine upgrade
7987     available
7988    :type is_dpm_upgrade_available: bool
7989    :param extended_info: Extended info of the backupengine
7990    :type extended_info:
7991     ~azure.mgmt.recoveryservicesbackup.models.BackupEngineExtendedInfo
7992    :param backup_engine_type: Required. Constant filled by server.
7993    :type backup_engine_type: str
7994    """
7995
7996    _validation = {
7997        'backup_engine_type': {'required': True},
7998    }
7999
8000    _attribute_map = {
8001        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
8002        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
8003        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
8004        'backup_engine_state': {'key': 'backupEngineState', 'type': 'str'},
8005        'health_status': {'key': 'healthStatus', 'type': 'str'},
8006        'can_re_register': {'key': 'canReRegister', 'type': 'bool'},
8007        'backup_engine_id': {'key': 'backupEngineId', 'type': 'str'},
8008        'dpm_version': {'key': 'dpmVersion', 'type': 'str'},
8009        'azure_backup_agent_version': {'key': 'azureBackupAgentVersion', 'type': 'str'},
8010        'is_azure_backup_agent_upgrade_available': {'key': 'isAzureBackupAgentUpgradeAvailable', 'type': 'bool'},
8011        'is_dpm_upgrade_available': {'key': 'isDpmUpgradeAvailable', 'type': 'bool'},
8012        'extended_info': {'key': 'extendedInfo', 'type': 'BackupEngineExtendedInfo'},
8013        'backup_engine_type': {'key': 'backupEngineType', 'type': 'str'},
8014    }
8015
8016    def __init__(self, **kwargs):
8017        super(DpmBackupEngine, self).__init__(**kwargs)
8018        self.backup_engine_type = 'DpmBackupEngine'
8019
8020
8021class DPMContainerExtendedInfo(Model):
8022    """Additional information of the DPMContainer.
8023
8024    :param last_refreshed_at: Last refresh time of the DPMContainer.
8025    :type last_refreshed_at: datetime
8026    """
8027
8028    _attribute_map = {
8029        'last_refreshed_at': {'key': 'lastRefreshedAt', 'type': 'iso-8601'},
8030    }
8031
8032    def __init__(self, **kwargs):
8033        super(DPMContainerExtendedInfo, self).__init__(**kwargs)
8034        self.last_refreshed_at = kwargs.get('last_refreshed_at', None)
8035
8036
8037class DpmErrorInfo(Model):
8038    """DPM workload-specific error information.
8039
8040    :param error_string: Localized error string.
8041    :type error_string: str
8042    :param recommendations: List of localized recommendations for above error
8043     code.
8044    :type recommendations: list[str]
8045    """
8046
8047    _attribute_map = {
8048        'error_string': {'key': 'errorString', 'type': 'str'},
8049        'recommendations': {'key': 'recommendations', 'type': '[str]'},
8050    }
8051
8052    def __init__(self, **kwargs):
8053        super(DpmErrorInfo, self).__init__(**kwargs)
8054        self.error_string = kwargs.get('error_string', None)
8055        self.recommendations = kwargs.get('recommendations', None)
8056
8057
8058class DpmJob(Job):
8059    """DPM workload-specific job object.
8060
8061    All required parameters must be populated in order to send to Azure.
8062
8063    :param entity_friendly_name: Friendly name of the entity on which the
8064     current job is executing.
8065    :type entity_friendly_name: str
8066    :param backup_management_type: Backup management type to execute the
8067     current job. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
8068     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
8069     'DefaultBackup'
8070    :type backup_management_type: str or
8071     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
8072    :param operation: The operation name.
8073    :type operation: str
8074    :param status: Job status.
8075    :type status: str
8076    :param start_time: The start time.
8077    :type start_time: datetime
8078    :param end_time: The end time.
8079    :type end_time: datetime
8080    :param activity_id: ActivityId of job.
8081    :type activity_id: str
8082    :param job_type: Required. Constant filled by server.
8083    :type job_type: str
8084    :param duration: Time elapsed for job.
8085    :type duration: timedelta
8086    :param dpm_server_name: DPM server name managing the backup item or backup
8087     job.
8088    :type dpm_server_name: str
8089    :param container_name: Name of cluster/server protecting current backup
8090     item, if any.
8091    :type container_name: str
8092    :param container_type: Type of container.
8093    :type container_type: str
8094    :param workload_type: Type of backup item.
8095    :type workload_type: str
8096    :param actions_info: The state/actions applicable on this job like
8097     cancel/retry.
8098    :type actions_info: list[str or
8099     ~azure.mgmt.recoveryservicesbackup.models.JobSupportedAction]
8100    :param error_details: The errors.
8101    :type error_details:
8102     list[~azure.mgmt.recoveryservicesbackup.models.DpmErrorInfo]
8103    :param extended_info: Additional information for this job.
8104    :type extended_info:
8105     ~azure.mgmt.recoveryservicesbackup.models.DpmJobExtendedInfo
8106    """
8107
8108    _validation = {
8109        'job_type': {'required': True},
8110    }
8111
8112    _attribute_map = {
8113        'entity_friendly_name': {'key': 'entityFriendlyName', 'type': 'str'},
8114        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
8115        'operation': {'key': 'operation', 'type': 'str'},
8116        'status': {'key': 'status', 'type': 'str'},
8117        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
8118        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
8119        'activity_id': {'key': 'activityId', 'type': 'str'},
8120        'job_type': {'key': 'jobType', 'type': 'str'},
8121        'duration': {'key': 'duration', 'type': 'duration'},
8122        'dpm_server_name': {'key': 'dpmServerName', 'type': 'str'},
8123        'container_name': {'key': 'containerName', 'type': 'str'},
8124        'container_type': {'key': 'containerType', 'type': 'str'},
8125        'workload_type': {'key': 'workloadType', 'type': 'str'},
8126        'actions_info': {'key': 'actionsInfo', 'type': '[JobSupportedAction]'},
8127        'error_details': {'key': 'errorDetails', 'type': '[DpmErrorInfo]'},
8128        'extended_info': {'key': 'extendedInfo', 'type': 'DpmJobExtendedInfo'},
8129    }
8130
8131    def __init__(self, **kwargs):
8132        super(DpmJob, self).__init__(**kwargs)
8133        self.duration = kwargs.get('duration', None)
8134        self.dpm_server_name = kwargs.get('dpm_server_name', None)
8135        self.container_name = kwargs.get('container_name', None)
8136        self.container_type = kwargs.get('container_type', None)
8137        self.workload_type = kwargs.get('workload_type', None)
8138        self.actions_info = kwargs.get('actions_info', None)
8139        self.error_details = kwargs.get('error_details', None)
8140        self.extended_info = kwargs.get('extended_info', None)
8141        self.job_type = 'DpmJob'
8142
8143
8144class DpmJobExtendedInfo(Model):
8145    """Additional information on the DPM workload-specific job.
8146
8147    :param tasks_list: List of tasks associated with this job.
8148    :type tasks_list:
8149     list[~azure.mgmt.recoveryservicesbackup.models.DpmJobTaskDetails]
8150    :param property_bag: The job properties.
8151    :type property_bag: dict[str, str]
8152    :param dynamic_error_message: Non localized error message on job
8153     execution.
8154    :type dynamic_error_message: str
8155    """
8156
8157    _attribute_map = {
8158        'tasks_list': {'key': 'tasksList', 'type': '[DpmJobTaskDetails]'},
8159        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
8160        'dynamic_error_message': {'key': 'dynamicErrorMessage', 'type': 'str'},
8161    }
8162
8163    def __init__(self, **kwargs):
8164        super(DpmJobExtendedInfo, self).__init__(**kwargs)
8165        self.tasks_list = kwargs.get('tasks_list', None)
8166        self.property_bag = kwargs.get('property_bag', None)
8167        self.dynamic_error_message = kwargs.get('dynamic_error_message', None)
8168
8169
8170class DpmJobTaskDetails(Model):
8171    """DPM workload-specific job task details.
8172
8173    :param task_id: The task display name.
8174    :type task_id: str
8175    :param start_time: The start time.
8176    :type start_time: datetime
8177    :param end_time: The end time.
8178    :type end_time: datetime
8179    :param duration: Time elapsed for task.
8180    :type duration: timedelta
8181    :param status: The status.
8182    :type status: str
8183    """
8184
8185    _attribute_map = {
8186        'task_id': {'key': 'taskId', 'type': 'str'},
8187        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
8188        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
8189        'duration': {'key': 'duration', 'type': 'duration'},
8190        'status': {'key': 'status', 'type': 'str'},
8191    }
8192
8193    def __init__(self, **kwargs):
8194        super(DpmJobTaskDetails, self).__init__(**kwargs)
8195        self.task_id = kwargs.get('task_id', None)
8196        self.start_time = kwargs.get('start_time', None)
8197        self.end_time = kwargs.get('end_time', None)
8198        self.duration = kwargs.get('duration', None)
8199        self.status = kwargs.get('status', None)
8200
8201
8202class DPMProtectedItem(ProtectedItem):
8203    """Additional information on Backup engine specific backup item.
8204
8205    All required parameters must be populated in order to send to Azure.
8206
8207    :param backup_management_type: Type of backup management for the backed up
8208     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
8209     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
8210     'DefaultBackup'
8211    :type backup_management_type: str or
8212     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
8213    :param workload_type: Type of workload this item represents. Possible
8214     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
8215     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
8216     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
8217     'SAPAseDatabase'
8218    :type workload_type: str or
8219     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
8220    :param container_name: Unique name of container
8221    :type container_name: str
8222    :param source_resource_id: ARM ID of the resource to be backed up.
8223    :type source_resource_id: str
8224    :param policy_id: ID of the backup policy with which this item is backed
8225     up.
8226    :type policy_id: str
8227    :param last_recovery_point: Timestamp when the last (latest) backup copy
8228     was created for this backup item.
8229    :type last_recovery_point: datetime
8230    :param backup_set_name: Name of the backup set the backup item belongs to
8231    :type backup_set_name: str
8232    :param create_mode: Create mode to indicate recovery of existing soft
8233     deleted data source or creation of new data source. Possible values
8234     include: 'Invalid', 'Default', 'Recover'
8235    :type create_mode: str or
8236     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
8237    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
8238    :type deferred_delete_time_in_utc: datetime
8239    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
8240     is scheduled for deferred delete
8241    :type is_scheduled_for_deferred_delete: bool
8242    :param deferred_delete_time_remaining: Time remaining before the DS marked
8243     for deferred delete is permanently deleted
8244    :type deferred_delete_time_remaining: str
8245    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
8246     deferred deleted DS is to be purged soon
8247    :type is_deferred_delete_schedule_upcoming: bool
8248    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
8249     moved into Pause state
8250    :type is_rehydrate: bool
8251    :param resource_guard_operation_requests: ResourceGuardOperationRequests
8252     on which LAC check will be performed
8253    :type resource_guard_operation_requests: list[str]
8254    :param protected_item_type: Required. Constant filled by server.
8255    :type protected_item_type: str
8256    :param friendly_name: Friendly name of the managed item
8257    :type friendly_name: str
8258    :param backup_engine_name: Backup Management server protecting this backup
8259     item
8260    :type backup_engine_name: str
8261    :param protection_state: Protection state of the backup engine. Possible
8262     values include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
8263     'ProtectionStopped', 'ProtectionPaused'
8264    :type protection_state: str or
8265     ~azure.mgmt.recoveryservicesbackup.models.ProtectedItemState
8266    :param extended_info: Extended info of the backup item.
8267    :type extended_info:
8268     ~azure.mgmt.recoveryservicesbackup.models.DPMProtectedItemExtendedInfo
8269    """
8270
8271    _validation = {
8272        'protected_item_type': {'required': True},
8273    }
8274
8275    _attribute_map = {
8276        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
8277        'workload_type': {'key': 'workloadType', 'type': 'str'},
8278        'container_name': {'key': 'containerName', 'type': 'str'},
8279        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
8280        'policy_id': {'key': 'policyId', 'type': 'str'},
8281        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
8282        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
8283        'create_mode': {'key': 'createMode', 'type': 'str'},
8284        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
8285        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
8286        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
8287        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
8288        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
8289        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
8290        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
8291        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
8292        'backup_engine_name': {'key': 'backupEngineName', 'type': 'str'},
8293        'protection_state': {'key': 'protectionState', 'type': 'str'},
8294        'extended_info': {'key': 'extendedInfo', 'type': 'DPMProtectedItemExtendedInfo'},
8295    }
8296
8297    def __init__(self, **kwargs):
8298        super(DPMProtectedItem, self).__init__(**kwargs)
8299        self.friendly_name = kwargs.get('friendly_name', None)
8300        self.backup_engine_name = kwargs.get('backup_engine_name', None)
8301        self.protection_state = kwargs.get('protection_state', None)
8302        self.extended_info = kwargs.get('extended_info', None)
8303        self.protected_item_type = 'DPMProtectedItem'
8304
8305
8306class DPMProtectedItemExtendedInfo(Model):
8307    """Additional information of DPM Protected item.
8308
8309    :param protectable_object_load_path: Attribute to provide information on
8310     various DBs.
8311    :type protectable_object_load_path: dict[str, str]
8312    :param protected: To check if backup item is disk protected.
8313    :type protected: bool
8314    :param is_present_on_cloud: To check if backup item is cloud protected.
8315    :type is_present_on_cloud: bool
8316    :param last_backup_status: Last backup status information on backup item.
8317    :type last_backup_status: str
8318    :param last_refreshed_at: Last refresh time on backup item.
8319    :type last_refreshed_at: datetime
8320    :param oldest_recovery_point: Oldest cloud recovery point time.
8321    :type oldest_recovery_point: datetime
8322    :param recovery_point_count: cloud recovery point count.
8323    :type recovery_point_count: int
8324    :param on_premise_oldest_recovery_point: Oldest disk recovery point time.
8325    :type on_premise_oldest_recovery_point: datetime
8326    :param on_premise_latest_recovery_point: latest disk recovery point time.
8327    :type on_premise_latest_recovery_point: datetime
8328    :param on_premise_recovery_point_count: disk recovery point count.
8329    :type on_premise_recovery_point_count: int
8330    :param is_collocated: To check if backup item is collocated.
8331    :type is_collocated: bool
8332    :param protection_group_name: Protection group name of the backup item.
8333    :type protection_group_name: str
8334    :param disk_storage_used_in_bytes: Used Disk storage in bytes.
8335    :type disk_storage_used_in_bytes: str
8336    :param total_disk_storage_size_in_bytes: total Disk storage in bytes.
8337    :type total_disk_storage_size_in_bytes: str
8338    """
8339
8340    _attribute_map = {
8341        'protectable_object_load_path': {'key': 'protectableObjectLoadPath', 'type': '{str}'},
8342        'protected': {'key': 'protected', 'type': 'bool'},
8343        'is_present_on_cloud': {'key': 'isPresentOnCloud', 'type': 'bool'},
8344        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
8345        'last_refreshed_at': {'key': 'lastRefreshedAt', 'type': 'iso-8601'},
8346        'oldest_recovery_point': {'key': 'oldestRecoveryPoint', 'type': 'iso-8601'},
8347        'recovery_point_count': {'key': 'recoveryPointCount', 'type': 'int'},
8348        'on_premise_oldest_recovery_point': {'key': 'onPremiseOldestRecoveryPoint', 'type': 'iso-8601'},
8349        'on_premise_latest_recovery_point': {'key': 'onPremiseLatestRecoveryPoint', 'type': 'iso-8601'},
8350        'on_premise_recovery_point_count': {'key': 'onPremiseRecoveryPointCount', 'type': 'int'},
8351        'is_collocated': {'key': 'isCollocated', 'type': 'bool'},
8352        'protection_group_name': {'key': 'protectionGroupName', 'type': 'str'},
8353        'disk_storage_used_in_bytes': {'key': 'diskStorageUsedInBytes', 'type': 'str'},
8354        'total_disk_storage_size_in_bytes': {'key': 'totalDiskStorageSizeInBytes', 'type': 'str'},
8355    }
8356
8357    def __init__(self, **kwargs):
8358        super(DPMProtectedItemExtendedInfo, self).__init__(**kwargs)
8359        self.protectable_object_load_path = kwargs.get('protectable_object_load_path', None)
8360        self.protected = kwargs.get('protected', None)
8361        self.is_present_on_cloud = kwargs.get('is_present_on_cloud', None)
8362        self.last_backup_status = kwargs.get('last_backup_status', None)
8363        self.last_refreshed_at = kwargs.get('last_refreshed_at', None)
8364        self.oldest_recovery_point = kwargs.get('oldest_recovery_point', None)
8365        self.recovery_point_count = kwargs.get('recovery_point_count', None)
8366        self.on_premise_oldest_recovery_point = kwargs.get('on_premise_oldest_recovery_point', None)
8367        self.on_premise_latest_recovery_point = kwargs.get('on_premise_latest_recovery_point', None)
8368        self.on_premise_recovery_point_count = kwargs.get('on_premise_recovery_point_count', None)
8369        self.is_collocated = kwargs.get('is_collocated', None)
8370        self.protection_group_name = kwargs.get('protection_group_name', None)
8371        self.disk_storage_used_in_bytes = kwargs.get('disk_storage_used_in_bytes', None)
8372        self.total_disk_storage_size_in_bytes = kwargs.get('total_disk_storage_size_in_bytes', None)
8373
8374
8375class EncryptionDetails(Model):
8376    """Details needed if the VM was encrypted at the time of backup.
8377
8378    :param encryption_enabled: Identifies whether this backup copy represents
8379     an encrypted VM at the time of backup.
8380    :type encryption_enabled: bool
8381    :param kek_url: Key Url.
8382    :type kek_url: str
8383    :param secret_key_url: Secret Url.
8384    :type secret_key_url: str
8385    :param kek_vault_id: ID of Key Vault where KEK is stored.
8386    :type kek_vault_id: str
8387    :param secret_key_vault_id: ID of Key Vault where Secret is stored.
8388    :type secret_key_vault_id: str
8389    """
8390
8391    _attribute_map = {
8392        'encryption_enabled': {'key': 'encryptionEnabled', 'type': 'bool'},
8393        'kek_url': {'key': 'kekUrl', 'type': 'str'},
8394        'secret_key_url': {'key': 'secretKeyUrl', 'type': 'str'},
8395        'kek_vault_id': {'key': 'kekVaultId', 'type': 'str'},
8396        'secret_key_vault_id': {'key': 'secretKeyVaultId', 'type': 'str'},
8397    }
8398
8399    def __init__(self, **kwargs):
8400        super(EncryptionDetails, self).__init__(**kwargs)
8401        self.encryption_enabled = kwargs.get('encryption_enabled', None)
8402        self.kek_url = kwargs.get('kek_url', None)
8403        self.secret_key_url = kwargs.get('secret_key_url', None)
8404        self.kek_vault_id = kwargs.get('kek_vault_id', None)
8405        self.secret_key_vault_id = kwargs.get('secret_key_vault_id', None)
8406
8407
8408class ErrorAdditionalInfo(Model):
8409    """The resource management error additional info.
8410
8411    Variables are only populated by the server, and will be ignored when
8412    sending a request.
8413
8414    :ivar type: The additional info type.
8415    :vartype type: str
8416    :ivar info: The additional info.
8417    :vartype info: object
8418    """
8419
8420    _validation = {
8421        'type': {'readonly': True},
8422        'info': {'readonly': True},
8423    }
8424
8425    _attribute_map = {
8426        'type': {'key': 'type', 'type': 'str'},
8427        'info': {'key': 'info', 'type': 'object'},
8428    }
8429
8430    def __init__(self, **kwargs):
8431        super(ErrorAdditionalInfo, self).__init__(**kwargs)
8432        self.type = None
8433        self.info = None
8434
8435
8436class ErrorDetail(Model):
8437    """Error Detail class which encapsulates Code, Message and Recommendations.
8438
8439    Variables are only populated by the server, and will be ignored when
8440    sending a request.
8441
8442    :ivar code: Error code.
8443    :vartype code: str
8444    :ivar message: Error Message related to the Code.
8445    :vartype message: str
8446    :ivar recommendations: List of recommendation strings.
8447    :vartype recommendations: list[str]
8448    """
8449
8450    _validation = {
8451        'code': {'readonly': True},
8452        'message': {'readonly': True},
8453        'recommendations': {'readonly': True},
8454    }
8455
8456    _attribute_map = {
8457        'code': {'key': 'code', 'type': 'str'},
8458        'message': {'key': 'message', 'type': 'str'},
8459        'recommendations': {'key': 'recommendations', 'type': '[str]'},
8460    }
8461
8462    def __init__(self, **kwargs):
8463        super(ErrorDetail, self).__init__(**kwargs)
8464        self.code = None
8465        self.message = None
8466        self.recommendations = None
8467
8468
8469class OperationResultInfoBase(Model):
8470    """Base class for operation result info.
8471
8472    You probably want to use the sub-classes and not this class directly. Known
8473    sub-classes are: ExportJobsOperationResultInfo, OperationResultInfo
8474
8475    All required parameters must be populated in order to send to Azure.
8476
8477    :param object_type: Required. Constant filled by server.
8478    :type object_type: str
8479    """
8480
8481    _validation = {
8482        'object_type': {'required': True},
8483    }
8484
8485    _attribute_map = {
8486        'object_type': {'key': 'objectType', 'type': 'str'},
8487    }
8488
8489    _subtype_map = {
8490        'object_type': {'ExportJobsOperationResultInfo': 'ExportJobsOperationResultInfo', 'OperationResultInfo': 'OperationResultInfo'}
8491    }
8492
8493    def __init__(self, **kwargs):
8494        super(OperationResultInfoBase, self).__init__(**kwargs)
8495        self.object_type = None
8496
8497
8498class ExportJobsOperationResultInfo(OperationResultInfoBase):
8499    """This class is used to send blob details after exporting jobs.
8500
8501    All required parameters must be populated in order to send to Azure.
8502
8503    :param object_type: Required. Constant filled by server.
8504    :type object_type: str
8505    :param blob_url: URL of the blob into which the serialized string of list
8506     of jobs is exported.
8507    :type blob_url: str
8508    :param blob_sas_key: SAS key to access the blob. It expires in 15 mins.
8509    :type blob_sas_key: str
8510    :param excel_file_blob_url: URL of the blob into which the ExcelFile is
8511     uploaded.
8512    :type excel_file_blob_url: str
8513    :param excel_file_blob_sas_key: SAS key to access the blob. It expires in
8514     15 mins.
8515    :type excel_file_blob_sas_key: str
8516    """
8517
8518    _validation = {
8519        'object_type': {'required': True},
8520    }
8521
8522    _attribute_map = {
8523        'object_type': {'key': 'objectType', 'type': 'str'},
8524        'blob_url': {'key': 'blobUrl', 'type': 'str'},
8525        'blob_sas_key': {'key': 'blobSasKey', 'type': 'str'},
8526        'excel_file_blob_url': {'key': 'excelFileBlobUrl', 'type': 'str'},
8527        'excel_file_blob_sas_key': {'key': 'excelFileBlobSasKey', 'type': 'str'},
8528    }
8529
8530    def __init__(self, **kwargs):
8531        super(ExportJobsOperationResultInfo, self).__init__(**kwargs)
8532        self.blob_url = kwargs.get('blob_url', None)
8533        self.blob_sas_key = kwargs.get('blob_sas_key', None)
8534        self.excel_file_blob_url = kwargs.get('excel_file_blob_url', None)
8535        self.excel_file_blob_sas_key = kwargs.get('excel_file_blob_sas_key', None)
8536        self.object_type = 'ExportJobsOperationResultInfo'
8537
8538
8539class ExtendedProperties(Model):
8540    """Extended Properties for Azure IaasVM Backup.
8541
8542    :param disk_exclusion_properties: Extended Properties for Disk Exclusion.
8543    :type disk_exclusion_properties:
8544     ~azure.mgmt.recoveryservicesbackup.models.DiskExclusionProperties
8545    """
8546
8547    _attribute_map = {
8548        'disk_exclusion_properties': {'key': 'diskExclusionProperties', 'type': 'DiskExclusionProperties'},
8549    }
8550
8551    def __init__(self, **kwargs):
8552        super(ExtendedProperties, self).__init__(**kwargs)
8553        self.disk_exclusion_properties = kwargs.get('disk_exclusion_properties', None)
8554
8555
8556class GenericContainer(ProtectionContainer):
8557    """Base class for generic container of backup items.
8558
8559    All required parameters must be populated in order to send to Azure.
8560
8561    :param friendly_name: Friendly name of the container.
8562    :type friendly_name: str
8563    :param backup_management_type: Type of backup management for the
8564     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
8565     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
8566     'DefaultBackup'
8567    :type backup_management_type: str or
8568     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
8569    :param registration_status: Status of registration of the container with
8570     the Recovery Services Vault.
8571    :type registration_status: str
8572    :param health_status: Status of health of the container.
8573    :type health_status: str
8574    :param container_type: Required. Constant filled by server.
8575    :type container_type: str
8576    :param fabric_name: Name of the container's fabric
8577    :type fabric_name: str
8578    :param extended_information: Extended information (not returned in List
8579     container API calls)
8580    :type extended_information:
8581     ~azure.mgmt.recoveryservicesbackup.models.GenericContainerExtendedInfo
8582    """
8583
8584    _validation = {
8585        'container_type': {'required': True},
8586    }
8587
8588    _attribute_map = {
8589        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
8590        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
8591        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
8592        'health_status': {'key': 'healthStatus', 'type': 'str'},
8593        'container_type': {'key': 'containerType', 'type': 'str'},
8594        'fabric_name': {'key': 'fabricName', 'type': 'str'},
8595        'extended_information': {'key': 'extendedInformation', 'type': 'GenericContainerExtendedInfo'},
8596    }
8597
8598    def __init__(self, **kwargs):
8599        super(GenericContainer, self).__init__(**kwargs)
8600        self.fabric_name = kwargs.get('fabric_name', None)
8601        self.extended_information = kwargs.get('extended_information', None)
8602        self.container_type = 'GenericContainer'
8603
8604
8605class GenericContainerExtendedInfo(Model):
8606    """Container extended information.
8607
8608    :param raw_cert_data: Public key of container cert
8609    :type raw_cert_data: str
8610    :param container_identity_info: Container identity information
8611    :type container_identity_info:
8612     ~azure.mgmt.recoveryservicesbackup.models.ContainerIdentityInfo
8613    :param service_endpoints: Azure Backup Service Endpoints for the container
8614    :type service_endpoints: dict[str, str]
8615    """
8616
8617    _attribute_map = {
8618        'raw_cert_data': {'key': 'rawCertData', 'type': 'str'},
8619        'container_identity_info': {'key': 'containerIdentityInfo', 'type': 'ContainerIdentityInfo'},
8620        'service_endpoints': {'key': 'serviceEndpoints', 'type': '{str}'},
8621    }
8622
8623    def __init__(self, **kwargs):
8624        super(GenericContainerExtendedInfo, self).__init__(**kwargs)
8625        self.raw_cert_data = kwargs.get('raw_cert_data', None)
8626        self.container_identity_info = kwargs.get('container_identity_info', None)
8627        self.service_endpoints = kwargs.get('service_endpoints', None)
8628
8629
8630class GenericProtectedItem(ProtectedItem):
8631    """Base class for backup items.
8632
8633    All required parameters must be populated in order to send to Azure.
8634
8635    :param backup_management_type: Type of backup management for the backed up
8636     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
8637     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
8638     'DefaultBackup'
8639    :type backup_management_type: str or
8640     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
8641    :param workload_type: Type of workload this item represents. Possible
8642     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
8643     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
8644     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
8645     'SAPAseDatabase'
8646    :type workload_type: str or
8647     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
8648    :param container_name: Unique name of container
8649    :type container_name: str
8650    :param source_resource_id: ARM ID of the resource to be backed up.
8651    :type source_resource_id: str
8652    :param policy_id: ID of the backup policy with which this item is backed
8653     up.
8654    :type policy_id: str
8655    :param last_recovery_point: Timestamp when the last (latest) backup copy
8656     was created for this backup item.
8657    :type last_recovery_point: datetime
8658    :param backup_set_name: Name of the backup set the backup item belongs to
8659    :type backup_set_name: str
8660    :param create_mode: Create mode to indicate recovery of existing soft
8661     deleted data source or creation of new data source. Possible values
8662     include: 'Invalid', 'Default', 'Recover'
8663    :type create_mode: str or
8664     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
8665    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
8666    :type deferred_delete_time_in_utc: datetime
8667    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
8668     is scheduled for deferred delete
8669    :type is_scheduled_for_deferred_delete: bool
8670    :param deferred_delete_time_remaining: Time remaining before the DS marked
8671     for deferred delete is permanently deleted
8672    :type deferred_delete_time_remaining: str
8673    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
8674     deferred deleted DS is to be purged soon
8675    :type is_deferred_delete_schedule_upcoming: bool
8676    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
8677     moved into Pause state
8678    :type is_rehydrate: bool
8679    :param resource_guard_operation_requests: ResourceGuardOperationRequests
8680     on which LAC check will be performed
8681    :type resource_guard_operation_requests: list[str]
8682    :param protected_item_type: Required. Constant filled by server.
8683    :type protected_item_type: str
8684    :param friendly_name: Friendly name of the container.
8685    :type friendly_name: str
8686    :param policy_state: Indicates consistency of policy object and policy
8687     applied to this backup item.
8688    :type policy_state: str
8689    :param protection_state: Backup state of this backup item. Possible values
8690     include: 'Invalid', 'IRPending', 'Protected', 'ProtectionError',
8691     'ProtectionStopped', 'ProtectionPaused'
8692    :type protection_state: str or
8693     ~azure.mgmt.recoveryservicesbackup.models.ProtectionState
8694    :param protected_item_id: Data Plane Service ID of the protected item.
8695    :type protected_item_id: long
8696    :param source_associations: Loosely coupled (type, value) associations
8697     (example - parent of a protected item)
8698    :type source_associations: dict[str, str]
8699    :param fabric_name: Name of this backup item's fabric.
8700    :type fabric_name: str
8701    """
8702
8703    _validation = {
8704        'protected_item_type': {'required': True},
8705    }
8706
8707    _attribute_map = {
8708        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
8709        'workload_type': {'key': 'workloadType', 'type': 'str'},
8710        'container_name': {'key': 'containerName', 'type': 'str'},
8711        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
8712        'policy_id': {'key': 'policyId', 'type': 'str'},
8713        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
8714        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
8715        'create_mode': {'key': 'createMode', 'type': 'str'},
8716        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
8717        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
8718        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
8719        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
8720        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
8721        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
8722        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
8723        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
8724        'policy_state': {'key': 'policyState', 'type': 'str'},
8725        'protection_state': {'key': 'protectionState', 'type': 'str'},
8726        'protected_item_id': {'key': 'protectedItemId', 'type': 'long'},
8727        'source_associations': {'key': 'sourceAssociations', 'type': '{str}'},
8728        'fabric_name': {'key': 'fabricName', 'type': 'str'},
8729    }
8730
8731    def __init__(self, **kwargs):
8732        super(GenericProtectedItem, self).__init__(**kwargs)
8733        self.friendly_name = kwargs.get('friendly_name', None)
8734        self.policy_state = kwargs.get('policy_state', None)
8735        self.protection_state = kwargs.get('protection_state', None)
8736        self.protected_item_id = kwargs.get('protected_item_id', None)
8737        self.source_associations = kwargs.get('source_associations', None)
8738        self.fabric_name = kwargs.get('fabric_name', None)
8739        self.protected_item_type = 'GenericProtectedItem'
8740
8741
8742class GenericProtectionPolicy(ProtectionPolicy):
8743    """Azure VM (Mercury) workload-specific backup policy.
8744
8745    All required parameters must be populated in order to send to Azure.
8746
8747    :param protected_items_count: Number of items associated with this policy.
8748    :type protected_items_count: int
8749    :param resource_guard_operation_requests: ResourceGuard Operation Requests
8750    :type resource_guard_operation_requests: list[str]
8751    :param backup_management_type: Required. Constant filled by server.
8752    :type backup_management_type: str
8753    :param sub_protection_policy: List of sub-protection policies which
8754     includes schedule and retention
8755    :type sub_protection_policy:
8756     list[~azure.mgmt.recoveryservicesbackup.models.SubProtectionPolicy]
8757    :param time_zone: TimeZone optional input as string. For example: TimeZone
8758     = "Pacific Standard Time".
8759    :type time_zone: str
8760    :param fabric_name: Name of this policy's fabric.
8761    :type fabric_name: str
8762    """
8763
8764    _validation = {
8765        'backup_management_type': {'required': True},
8766    }
8767
8768    _attribute_map = {
8769        'protected_items_count': {'key': 'protectedItemsCount', 'type': 'int'},
8770        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
8771        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
8772        'sub_protection_policy': {'key': 'subProtectionPolicy', 'type': '[SubProtectionPolicy]'},
8773        'time_zone': {'key': 'timeZone', 'type': 'str'},
8774        'fabric_name': {'key': 'fabricName', 'type': 'str'},
8775    }
8776
8777    def __init__(self, **kwargs):
8778        super(GenericProtectionPolicy, self).__init__(**kwargs)
8779        self.sub_protection_policy = kwargs.get('sub_protection_policy', None)
8780        self.time_zone = kwargs.get('time_zone', None)
8781        self.fabric_name = kwargs.get('fabric_name', None)
8782        self.backup_management_type = 'GenericProtectionPolicy'
8783
8784
8785class GenericRecoveryPoint(RecoveryPoint):
8786    """Generic backup copy.
8787
8788    All required parameters must be populated in order to send to Azure.
8789
8790    :param object_type: Required. Constant filled by server.
8791    :type object_type: str
8792    :param friendly_name: Friendly name of the backup copy.
8793    :type friendly_name: str
8794    :param recovery_point_type: Type of the backup copy.
8795    :type recovery_point_type: str
8796    :param recovery_point_time: Time at which this backup copy was created.
8797    :type recovery_point_time: datetime
8798    :param recovery_point_additional_info: Additional information associated
8799     with this backup copy.
8800    :type recovery_point_additional_info: str
8801    """
8802
8803    _validation = {
8804        'object_type': {'required': True},
8805    }
8806
8807    _attribute_map = {
8808        'object_type': {'key': 'objectType', 'type': 'str'},
8809        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
8810        'recovery_point_type': {'key': 'recoveryPointType', 'type': 'str'},
8811        'recovery_point_time': {'key': 'recoveryPointTime', 'type': 'iso-8601'},
8812        'recovery_point_additional_info': {'key': 'recoveryPointAdditionalInfo', 'type': 'str'},
8813    }
8814
8815    def __init__(self, **kwargs):
8816        super(GenericRecoveryPoint, self).__init__(**kwargs)
8817        self.friendly_name = kwargs.get('friendly_name', None)
8818        self.recovery_point_type = kwargs.get('recovery_point_type', None)
8819        self.recovery_point_time = kwargs.get('recovery_point_time', None)
8820        self.recovery_point_additional_info = kwargs.get('recovery_point_additional_info', None)
8821        self.object_type = 'GenericRecoveryPoint'
8822
8823
8824class GetProtectedItemQueryObject(Model):
8825    """Filters to list backup items.
8826
8827    :param expand: Specifies if the additional information should be provided
8828     for this item.
8829    :type expand: str
8830    """
8831
8832    _attribute_map = {
8833        'expand': {'key': 'expand', 'type': 'str'},
8834    }
8835
8836    def __init__(self, **kwargs):
8837        super(GetProtectedItemQueryObject, self).__init__(**kwargs)
8838        self.expand = kwargs.get('expand', None)
8839
8840
8841class IaasVMBackupRequest(BackupRequest):
8842    """IaaS VM workload-specific backup request.
8843
8844    All required parameters must be populated in order to send to Azure.
8845
8846    :param object_type: Required. Constant filled by server.
8847    :type object_type: str
8848    :param recovery_point_expiry_time_in_utc: Backup copy will expire after
8849     the time specified (UTC).
8850    :type recovery_point_expiry_time_in_utc: datetime
8851    """
8852
8853    _validation = {
8854        'object_type': {'required': True},
8855    }
8856
8857    _attribute_map = {
8858        'object_type': {'key': 'objectType', 'type': 'str'},
8859        'recovery_point_expiry_time_in_utc': {'key': 'recoveryPointExpiryTimeInUTC', 'type': 'iso-8601'},
8860    }
8861
8862    def __init__(self, **kwargs):
8863        super(IaasVMBackupRequest, self).__init__(**kwargs)
8864        self.recovery_point_expiry_time_in_utc = kwargs.get('recovery_point_expiry_time_in_utc', None)
8865        self.object_type = 'IaasVMBackupRequest'
8866
8867
8868class IaasVMILRRegistrationRequest(ILRRequest):
8869    """Restore files/folders from a backup copy of IaaS VM.
8870
8871    All required parameters must be populated in order to send to Azure.
8872
8873    :param object_type: Required. Constant filled by server.
8874    :type object_type: str
8875    :param recovery_point_id: ID of the IaaS VM backup copy from where the
8876     files/folders have to be restored.
8877    :type recovery_point_id: str
8878    :param virtual_machine_id: Fully qualified ARM ID of the virtual machine
8879     whose the files / folders have to be restored.
8880    :type virtual_machine_id: str
8881    :param initiator_name: iSCSI initiator name.
8882    :type initiator_name: str
8883    :param renew_existing_registration: Whether to renew existing registration
8884     with the iSCSI server.
8885    :type renew_existing_registration: bool
8886    """
8887
8888    _validation = {
8889        'object_type': {'required': True},
8890    }
8891
8892    _attribute_map = {
8893        'object_type': {'key': 'objectType', 'type': 'str'},
8894        'recovery_point_id': {'key': 'recoveryPointId', 'type': 'str'},
8895        'virtual_machine_id': {'key': 'virtualMachineId', 'type': 'str'},
8896        'initiator_name': {'key': 'initiatorName', 'type': 'str'},
8897        'renew_existing_registration': {'key': 'renewExistingRegistration', 'type': 'bool'},
8898    }
8899
8900    def __init__(self, **kwargs):
8901        super(IaasVMILRRegistrationRequest, self).__init__(**kwargs)
8902        self.recovery_point_id = kwargs.get('recovery_point_id', None)
8903        self.virtual_machine_id = kwargs.get('virtual_machine_id', None)
8904        self.initiator_name = kwargs.get('initiator_name', None)
8905        self.renew_existing_registration = kwargs.get('renew_existing_registration', None)
8906        self.object_type = 'IaasVMILRRegistrationRequest'
8907
8908
8909class IaasVMRecoveryPoint(RecoveryPoint):
8910    """IaaS VM workload specific backup copy.
8911
8912    Variables are only populated by the server, and will be ignored when
8913    sending a request.
8914
8915    All required parameters must be populated in order to send to Azure.
8916
8917    :param object_type: Required. Constant filled by server.
8918    :type object_type: str
8919    :ivar recovery_point_type: Type of the backup copy.
8920    :vartype recovery_point_type: str
8921    :ivar recovery_point_time: Time at which this backup copy was created.
8922    :vartype recovery_point_time: datetime
8923    :ivar recovery_point_additional_info: Additional information associated
8924     with this backup copy.
8925    :vartype recovery_point_additional_info: str
8926    :ivar source_vm_storage_type: Storage type of the VM whose backup copy is
8927     created.
8928    :vartype source_vm_storage_type: str
8929    :ivar is_source_vm_encrypted: Identifies whether the VM was encrypted when
8930     the backup copy is created.
8931    :vartype is_source_vm_encrypted: bool
8932    :param key_and_secret: Required details for recovering an encrypted VM.
8933     Applicable only when IsSourceVMEncrypted is true.
8934    :type key_and_secret:
8935     ~azure.mgmt.recoveryservicesbackup.models.KeyAndSecretDetails
8936    :param is_instant_ilr_session_active: Is the session to recover items from
8937     this backup copy still active.
8938    :type is_instant_ilr_session_active: bool
8939    :param recovery_point_tier_details: Recovery point tier information.
8940    :type recovery_point_tier_details:
8941     list[~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierInformation]
8942    :param is_managed_virtual_machine: Whether VM is with Managed Disks
8943    :type is_managed_virtual_machine: bool
8944    :param virtual_machine_size: Virtual Machine Size
8945    :type virtual_machine_size: str
8946    :param original_storage_account_option: Original Storage Account Option
8947    :type original_storage_account_option: bool
8948    :param os_type: OS type
8949    :type os_type: str
8950    :param recovery_point_disk_configuration: Disk configuration
8951    :type recovery_point_disk_configuration:
8952     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointDiskConfiguration
8953    :param zones: Identifies the zone of the VM at the time of backup.
8954     Applicable only for zone-pinned Vms
8955    :type zones: list[str]
8956    :param recovery_point_move_readiness_info: Eligibility of RP to be moved
8957     to another tier
8958    :type recovery_point_move_readiness_info: dict[str,
8959     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointMoveReadinessInfo]
8960    """
8961
8962    _validation = {
8963        'object_type': {'required': True},
8964        'recovery_point_type': {'readonly': True},
8965        'recovery_point_time': {'readonly': True},
8966        'recovery_point_additional_info': {'readonly': True},
8967        'source_vm_storage_type': {'readonly': True},
8968        'is_source_vm_encrypted': {'readonly': True},
8969    }
8970
8971    _attribute_map = {
8972        'object_type': {'key': 'objectType', 'type': 'str'},
8973        'recovery_point_type': {'key': 'recoveryPointType', 'type': 'str'},
8974        'recovery_point_time': {'key': 'recoveryPointTime', 'type': 'iso-8601'},
8975        'recovery_point_additional_info': {'key': 'recoveryPointAdditionalInfo', 'type': 'str'},
8976        'source_vm_storage_type': {'key': 'sourceVMStorageType', 'type': 'str'},
8977        'is_source_vm_encrypted': {'key': 'isSourceVMEncrypted', 'type': 'bool'},
8978        'key_and_secret': {'key': 'keyAndSecret', 'type': 'KeyAndSecretDetails'},
8979        'is_instant_ilr_session_active': {'key': 'isInstantIlrSessionActive', 'type': 'bool'},
8980        'recovery_point_tier_details': {'key': 'recoveryPointTierDetails', 'type': '[RecoveryPointTierInformation]'},
8981        'is_managed_virtual_machine': {'key': 'isManagedVirtualMachine', 'type': 'bool'},
8982        'virtual_machine_size': {'key': 'virtualMachineSize', 'type': 'str'},
8983        'original_storage_account_option': {'key': 'originalStorageAccountOption', 'type': 'bool'},
8984        'os_type': {'key': 'osType', 'type': 'str'},
8985        'recovery_point_disk_configuration': {'key': 'recoveryPointDiskConfiguration', 'type': 'RecoveryPointDiskConfiguration'},
8986        'zones': {'key': 'zones', 'type': '[str]'},
8987        'recovery_point_move_readiness_info': {'key': 'recoveryPointMoveReadinessInfo', 'type': '{RecoveryPointMoveReadinessInfo}'},
8988    }
8989
8990    def __init__(self, **kwargs):
8991        super(IaasVMRecoveryPoint, self).__init__(**kwargs)
8992        self.recovery_point_type = None
8993        self.recovery_point_time = None
8994        self.recovery_point_additional_info = None
8995        self.source_vm_storage_type = None
8996        self.is_source_vm_encrypted = None
8997        self.key_and_secret = kwargs.get('key_and_secret', None)
8998        self.is_instant_ilr_session_active = kwargs.get('is_instant_ilr_session_active', None)
8999        self.recovery_point_tier_details = kwargs.get('recovery_point_tier_details', None)
9000        self.is_managed_virtual_machine = kwargs.get('is_managed_virtual_machine', None)
9001        self.virtual_machine_size = kwargs.get('virtual_machine_size', None)
9002        self.original_storage_account_option = kwargs.get('original_storage_account_option', None)
9003        self.os_type = kwargs.get('os_type', None)
9004        self.recovery_point_disk_configuration = kwargs.get('recovery_point_disk_configuration', None)
9005        self.zones = kwargs.get('zones', None)
9006        self.recovery_point_move_readiness_info = kwargs.get('recovery_point_move_readiness_info', None)
9007        self.object_type = 'IaasVMRecoveryPoint'
9008
9009
9010class IaasVMRestoreRequest(RestoreRequest):
9011    """IaaS VM workload-specific restore.
9012
9013    You probably want to use the sub-classes and not this class directly. Known
9014    sub-classes are: IaasVMRestoreWithRehydrationRequest
9015
9016    All required parameters must be populated in order to send to Azure.
9017
9018    :param object_type: Required. Constant filled by server.
9019    :type object_type: str
9020    :param recovery_point_id: ID of the backup copy to be recovered.
9021    :type recovery_point_id: str
9022    :param recovery_type: Type of this recovery. Possible values include:
9023     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
9024     'Offline'
9025    :type recovery_type: str or
9026     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
9027    :param source_resource_id: Fully qualified ARM ID of the VM which is being
9028     recovered.
9029    :type source_resource_id: str
9030    :param target_virtual_machine_id: This is the complete ARM Id of the VM
9031     that will be created.
9032     For e.g.
9033     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
9034    :type target_virtual_machine_id: str
9035    :param target_resource_group_id: This is the ARM Id of the resource group
9036     that you want to create for this Virtual machine and other artifacts.
9037     For e.g. /subscriptions/{subId}/resourcegroups/{rg}
9038    :type target_resource_group_id: str
9039    :param storage_account_id: Fully qualified ARM ID of the storage account
9040     to which the VM has to be restored.
9041    :type storage_account_id: str
9042    :param virtual_network_id: This is the virtual network Id of the vnet that
9043     will be attached to the virtual machine.
9044     User will be validated for join action permissions in the linked access.
9045    :type virtual_network_id: str
9046    :param subnet_id: Subnet ID, is the subnet ID associated with the to be
9047     restored VM. For Classic VMs it would be
9048     {VnetID}/Subnet/{SubnetName} and, for the Azure Resource Manager VMs it
9049     would be ARM resource ID used to represent
9050     the subnet.
9051    :type subnet_id: str
9052    :param target_domain_name_id: Fully qualified ARM ID of the domain name to
9053     be associated to the VM being restored. This applies only to Classic
9054     Virtual Machines.
9055    :type target_domain_name_id: str
9056    :param region: Region in which the virtual machine is restored.
9057    :type region: str
9058    :param affinity_group: Affinity group associated to VM to be restored.
9059     Used only for Classic Compute Virtual Machines.
9060    :type affinity_group: str
9061    :param create_new_cloud_service: Should a new cloud service be created
9062     while restoring the VM. If this is false, VM will be restored to the same
9063     cloud service as it was at the time of backup.
9064    :type create_new_cloud_service: bool
9065    :param original_storage_account_option: Original Storage Account Option
9066    :type original_storage_account_option: bool
9067    :param encryption_details: Details needed if the VM was encrypted at the
9068     time of backup.
9069    :type encryption_details:
9070     ~azure.mgmt.recoveryservicesbackup.models.EncryptionDetails
9071    :param restore_disk_lun_list: List of Disk LUNs for partial restore
9072    :type restore_disk_lun_list: list[int]
9073    :param restore_with_managed_disks: Flag to denote of an Unmanaged disk VM
9074     should be restored with Managed disks.
9075    :type restore_with_managed_disks: bool
9076    :param disk_encryption_set_id: DiskEncryptionSet's ID - needed if the VM
9077     needs to be encrypted at rest during restore with customer managed key.
9078    :type disk_encryption_set_id: str
9079    :param zones: Target zone where the VM and its disks should be restored.
9080    :type zones: list[str]
9081    :param identity_info: Managed Identity information required to access
9082     customer storage account.
9083    :type identity_info:
9084     ~azure.mgmt.recoveryservicesbackup.models.IdentityInfo
9085    :param identity_based_restore_details: IaaS VM workload specific restore
9086     details for restores using managed identity.
9087    :type identity_based_restore_details:
9088     ~azure.mgmt.recoveryservicesbackup.models.IdentityBasedRestoreDetails
9089    """
9090
9091    _validation = {
9092        'object_type': {'required': True},
9093    }
9094
9095    _attribute_map = {
9096        'object_type': {'key': 'objectType', 'type': 'str'},
9097        'recovery_point_id': {'key': 'recoveryPointId', 'type': 'str'},
9098        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
9099        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
9100        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
9101        'target_resource_group_id': {'key': 'targetResourceGroupId', 'type': 'str'},
9102        'storage_account_id': {'key': 'storageAccountId', 'type': 'str'},
9103        'virtual_network_id': {'key': 'virtualNetworkId', 'type': 'str'},
9104        'subnet_id': {'key': 'subnetId', 'type': 'str'},
9105        'target_domain_name_id': {'key': 'targetDomainNameId', 'type': 'str'},
9106        'region': {'key': 'region', 'type': 'str'},
9107        'affinity_group': {'key': 'affinityGroup', 'type': 'str'},
9108        'create_new_cloud_service': {'key': 'createNewCloudService', 'type': 'bool'},
9109        'original_storage_account_option': {'key': 'originalStorageAccountOption', 'type': 'bool'},
9110        'encryption_details': {'key': 'encryptionDetails', 'type': 'EncryptionDetails'},
9111        'restore_disk_lun_list': {'key': 'restoreDiskLunList', 'type': '[int]'},
9112        'restore_with_managed_disks': {'key': 'restoreWithManagedDisks', 'type': 'bool'},
9113        'disk_encryption_set_id': {'key': 'diskEncryptionSetId', 'type': 'str'},
9114        'zones': {'key': 'zones', 'type': '[str]'},
9115        'identity_info': {'key': 'identityInfo', 'type': 'IdentityInfo'},
9116        'identity_based_restore_details': {'key': 'identityBasedRestoreDetails', 'type': 'IdentityBasedRestoreDetails'},
9117    }
9118
9119    _subtype_map = {
9120        'object_type': {'IaasVMRestoreWithRehydrationRequest': 'IaasVMRestoreWithRehydrationRequest'}
9121    }
9122
9123    def __init__(self, **kwargs):
9124        super(IaasVMRestoreRequest, self).__init__(**kwargs)
9125        self.recovery_point_id = kwargs.get('recovery_point_id', None)
9126        self.recovery_type = kwargs.get('recovery_type', None)
9127        self.source_resource_id = kwargs.get('source_resource_id', None)
9128        self.target_virtual_machine_id = kwargs.get('target_virtual_machine_id', None)
9129        self.target_resource_group_id = kwargs.get('target_resource_group_id', None)
9130        self.storage_account_id = kwargs.get('storage_account_id', None)
9131        self.virtual_network_id = kwargs.get('virtual_network_id', None)
9132        self.subnet_id = kwargs.get('subnet_id', None)
9133        self.target_domain_name_id = kwargs.get('target_domain_name_id', None)
9134        self.region = kwargs.get('region', None)
9135        self.affinity_group = kwargs.get('affinity_group', None)
9136        self.create_new_cloud_service = kwargs.get('create_new_cloud_service', None)
9137        self.original_storage_account_option = kwargs.get('original_storage_account_option', None)
9138        self.encryption_details = kwargs.get('encryption_details', None)
9139        self.restore_disk_lun_list = kwargs.get('restore_disk_lun_list', None)
9140        self.restore_with_managed_disks = kwargs.get('restore_with_managed_disks', None)
9141        self.disk_encryption_set_id = kwargs.get('disk_encryption_set_id', None)
9142        self.zones = kwargs.get('zones', None)
9143        self.identity_info = kwargs.get('identity_info', None)
9144        self.identity_based_restore_details = kwargs.get('identity_based_restore_details', None)
9145        self.object_type = 'IaasVMRestoreRequest'
9146
9147
9148class IaasVMRestoreWithRehydrationRequest(IaasVMRestoreRequest):
9149    """IaaS VM workload-specific restore with integrated rehydration of recovery
9150    point.
9151
9152    All required parameters must be populated in order to send to Azure.
9153
9154    :param object_type: Required. Constant filled by server.
9155    :type object_type: str
9156    :param recovery_point_id: ID of the backup copy to be recovered.
9157    :type recovery_point_id: str
9158    :param recovery_type: Type of this recovery. Possible values include:
9159     'Invalid', 'OriginalLocation', 'AlternateLocation', 'RestoreDisks',
9160     'Offline'
9161    :type recovery_type: str or
9162     ~azure.mgmt.recoveryservicesbackup.models.RecoveryType
9163    :param source_resource_id: Fully qualified ARM ID of the VM which is being
9164     recovered.
9165    :type source_resource_id: str
9166    :param target_virtual_machine_id: This is the complete ARM Id of the VM
9167     that will be created.
9168     For e.g.
9169     /subscriptions/{subId}/resourcegroups/{rg}/provider/Microsoft.Compute/virtualmachines/{vm}
9170    :type target_virtual_machine_id: str
9171    :param target_resource_group_id: This is the ARM Id of the resource group
9172     that you want to create for this Virtual machine and other artifacts.
9173     For e.g. /subscriptions/{subId}/resourcegroups/{rg}
9174    :type target_resource_group_id: str
9175    :param storage_account_id: Fully qualified ARM ID of the storage account
9176     to which the VM has to be restored.
9177    :type storage_account_id: str
9178    :param virtual_network_id: This is the virtual network Id of the vnet that
9179     will be attached to the virtual machine.
9180     User will be validated for join action permissions in the linked access.
9181    :type virtual_network_id: str
9182    :param subnet_id: Subnet ID, is the subnet ID associated with the to be
9183     restored VM. For Classic VMs it would be
9184     {VnetID}/Subnet/{SubnetName} and, for the Azure Resource Manager VMs it
9185     would be ARM resource ID used to represent
9186     the subnet.
9187    :type subnet_id: str
9188    :param target_domain_name_id: Fully qualified ARM ID of the domain name to
9189     be associated to the VM being restored. This applies only to Classic
9190     Virtual Machines.
9191    :type target_domain_name_id: str
9192    :param region: Region in which the virtual machine is restored.
9193    :type region: str
9194    :param affinity_group: Affinity group associated to VM to be restored.
9195     Used only for Classic Compute Virtual Machines.
9196    :type affinity_group: str
9197    :param create_new_cloud_service: Should a new cloud service be created
9198     while restoring the VM. If this is false, VM will be restored to the same
9199     cloud service as it was at the time of backup.
9200    :type create_new_cloud_service: bool
9201    :param original_storage_account_option: Original Storage Account Option
9202    :type original_storage_account_option: bool
9203    :param encryption_details: Details needed if the VM was encrypted at the
9204     time of backup.
9205    :type encryption_details:
9206     ~azure.mgmt.recoveryservicesbackup.models.EncryptionDetails
9207    :param restore_disk_lun_list: List of Disk LUNs for partial restore
9208    :type restore_disk_lun_list: list[int]
9209    :param restore_with_managed_disks: Flag to denote of an Unmanaged disk VM
9210     should be restored with Managed disks.
9211    :type restore_with_managed_disks: bool
9212    :param disk_encryption_set_id: DiskEncryptionSet's ID - needed if the VM
9213     needs to be encrypted at rest during restore with customer managed key.
9214    :type disk_encryption_set_id: str
9215    :param zones: Target zone where the VM and its disks should be restored.
9216    :type zones: list[str]
9217    :param identity_info: Managed Identity information required to access
9218     customer storage account.
9219    :type identity_info:
9220     ~azure.mgmt.recoveryservicesbackup.models.IdentityInfo
9221    :param identity_based_restore_details: IaaS VM workload specific restore
9222     details for restores using managed identity.
9223    :type identity_based_restore_details:
9224     ~azure.mgmt.recoveryservicesbackup.models.IdentityBasedRestoreDetails
9225    :param recovery_point_rehydration_info: RP Rehydration Info
9226    :type recovery_point_rehydration_info:
9227     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointRehydrationInfo
9228    """
9229
9230    _validation = {
9231        'object_type': {'required': True},
9232    }
9233
9234    _attribute_map = {
9235        'object_type': {'key': 'objectType', 'type': 'str'},
9236        'recovery_point_id': {'key': 'recoveryPointId', 'type': 'str'},
9237        'recovery_type': {'key': 'recoveryType', 'type': 'str'},
9238        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
9239        'target_virtual_machine_id': {'key': 'targetVirtualMachineId', 'type': 'str'},
9240        'target_resource_group_id': {'key': 'targetResourceGroupId', 'type': 'str'},
9241        'storage_account_id': {'key': 'storageAccountId', 'type': 'str'},
9242        'virtual_network_id': {'key': 'virtualNetworkId', 'type': 'str'},
9243        'subnet_id': {'key': 'subnetId', 'type': 'str'},
9244        'target_domain_name_id': {'key': 'targetDomainNameId', 'type': 'str'},
9245        'region': {'key': 'region', 'type': 'str'},
9246        'affinity_group': {'key': 'affinityGroup', 'type': 'str'},
9247        'create_new_cloud_service': {'key': 'createNewCloudService', 'type': 'bool'},
9248        'original_storage_account_option': {'key': 'originalStorageAccountOption', 'type': 'bool'},
9249        'encryption_details': {'key': 'encryptionDetails', 'type': 'EncryptionDetails'},
9250        'restore_disk_lun_list': {'key': 'restoreDiskLunList', 'type': '[int]'},
9251        'restore_with_managed_disks': {'key': 'restoreWithManagedDisks', 'type': 'bool'},
9252        'disk_encryption_set_id': {'key': 'diskEncryptionSetId', 'type': 'str'},
9253        'zones': {'key': 'zones', 'type': '[str]'},
9254        'identity_info': {'key': 'identityInfo', 'type': 'IdentityInfo'},
9255        'identity_based_restore_details': {'key': 'identityBasedRestoreDetails', 'type': 'IdentityBasedRestoreDetails'},
9256        'recovery_point_rehydration_info': {'key': 'recoveryPointRehydrationInfo', 'type': 'RecoveryPointRehydrationInfo'},
9257    }
9258
9259    def __init__(self, **kwargs):
9260        super(IaasVMRestoreWithRehydrationRequest, self).__init__(**kwargs)
9261        self.recovery_point_rehydration_info = kwargs.get('recovery_point_rehydration_info', None)
9262        self.object_type = 'IaasVMRestoreWithRehydrationRequest'
9263
9264
9265class IdentityBasedRestoreDetails(Model):
9266    """IaaS VM workload specific restore details for restores using managed
9267    identity.
9268
9269    :param object_type: Gets the class type.
9270    :type object_type: str
9271    :param target_storage_account_id: Fully qualified ARM ID of the target
9272     storage account.
9273    :type target_storage_account_id: str
9274    """
9275
9276    _attribute_map = {
9277        'object_type': {'key': 'objectType', 'type': 'str'},
9278        'target_storage_account_id': {'key': 'targetStorageAccountId', 'type': 'str'},
9279    }
9280
9281    def __init__(self, **kwargs):
9282        super(IdentityBasedRestoreDetails, self).__init__(**kwargs)
9283        self.object_type = kwargs.get('object_type', None)
9284        self.target_storage_account_id = kwargs.get('target_storage_account_id', None)
9285
9286
9287class IdentityInfo(Model):
9288    """Encapsulates Managed Identity related information.
9289
9290    :param is_system_assigned_identity: To differentiate if the managed
9291     identity is system assigned or user assigned
9292    :type is_system_assigned_identity: bool
9293    :param managed_identity_resource_id: Managed Identity Resource Id
9294     Optional: Might not be required in the case of system assigned managed
9295     identity
9296    :type managed_identity_resource_id: str
9297    """
9298
9299    _attribute_map = {
9300        'is_system_assigned_identity': {'key': 'isSystemAssignedIdentity', 'type': 'bool'},
9301        'managed_identity_resource_id': {'key': 'managedIdentityResourceId', 'type': 'str'},
9302    }
9303
9304    def __init__(self, **kwargs):
9305        super(IdentityInfo, self).__init__(**kwargs)
9306        self.is_system_assigned_identity = kwargs.get('is_system_assigned_identity', None)
9307        self.managed_identity_resource_id = kwargs.get('managed_identity_resource_id', None)
9308
9309
9310class ILRRequestResource(Resource):
9311    """Parameters to Provision ILR API.
9312
9313    Variables are only populated by the server, and will be ignored when
9314    sending a request.
9315
9316    :ivar id: Resource Id represents the complete path to the resource.
9317    :vartype id: str
9318    :ivar name: Resource name associated with the resource.
9319    :vartype name: str
9320    :ivar type: Resource type represents the complete path of the form
9321     Namespace/ResourceType/ResourceType/...
9322    :vartype type: str
9323    :param location: Resource location.
9324    :type location: str
9325    :param tags: Resource tags.
9326    :type tags: dict[str, str]
9327    :param e_tag: Optional ETag.
9328    :type e_tag: str
9329    :param properties: ILRRequestResource properties
9330    :type properties: ~azure.mgmt.recoveryservicesbackup.models.ILRRequest
9331    """
9332
9333    _validation = {
9334        'id': {'readonly': True},
9335        'name': {'readonly': True},
9336        'type': {'readonly': True},
9337    }
9338
9339    _attribute_map = {
9340        'id': {'key': 'id', 'type': 'str'},
9341        'name': {'key': 'name', 'type': 'str'},
9342        'type': {'key': 'type', 'type': 'str'},
9343        'location': {'key': 'location', 'type': 'str'},
9344        'tags': {'key': 'tags', 'type': '{str}'},
9345        'e_tag': {'key': 'eTag', 'type': 'str'},
9346        'properties': {'key': 'properties', 'type': 'ILRRequest'},
9347    }
9348
9349    def __init__(self, **kwargs):
9350        super(ILRRequestResource, self).__init__(**kwargs)
9351        self.properties = kwargs.get('properties', None)
9352
9353
9354class InquiryInfo(Model):
9355    """Details about inquired protectable items under a given container.
9356
9357    :param status: Inquiry Status for this container such as
9358     InProgress | Failed | Succeeded
9359    :type status: str
9360    :param error_detail: Error Details if the Status is non-success.
9361    :type error_detail: ~azure.mgmt.recoveryservicesbackup.models.ErrorDetail
9362    :param inquiry_details: Inquiry Details which will have workload specific
9363     details.
9364     For e.g. - For SQL and oracle this will contain different details.
9365    :type inquiry_details:
9366     list[~azure.mgmt.recoveryservicesbackup.models.WorkloadInquiryDetails]
9367    """
9368
9369    _attribute_map = {
9370        'status': {'key': 'status', 'type': 'str'},
9371        'error_detail': {'key': 'errorDetail', 'type': 'ErrorDetail'},
9372        'inquiry_details': {'key': 'inquiryDetails', 'type': '[WorkloadInquiryDetails]'},
9373    }
9374
9375    def __init__(self, **kwargs):
9376        super(InquiryInfo, self).__init__(**kwargs)
9377        self.status = kwargs.get('status', None)
9378        self.error_detail = kwargs.get('error_detail', None)
9379        self.inquiry_details = kwargs.get('inquiry_details', None)
9380
9381
9382class InquiryValidation(Model):
9383    """Validation for inquired protectable items under a given container.
9384
9385    Variables are only populated by the server, and will be ignored when
9386    sending a request.
9387
9388    :param status: Status for the Inquiry Validation.
9389    :type status: str
9390    :param error_detail: Error Detail in case the status is non-success.
9391    :type error_detail: ~azure.mgmt.recoveryservicesbackup.models.ErrorDetail
9392    :ivar additional_detail: Error Additional Detail in case the status is
9393     non-success.
9394    :vartype additional_detail: str
9395    """
9396
9397    _validation = {
9398        'additional_detail': {'readonly': True},
9399    }
9400
9401    _attribute_map = {
9402        'status': {'key': 'status', 'type': 'str'},
9403        'error_detail': {'key': 'errorDetail', 'type': 'ErrorDetail'},
9404        'additional_detail': {'key': 'additionalDetail', 'type': 'str'},
9405    }
9406
9407    def __init__(self, **kwargs):
9408        super(InquiryValidation, self).__init__(**kwargs)
9409        self.status = kwargs.get('status', None)
9410        self.error_detail = kwargs.get('error_detail', None)
9411        self.additional_detail = None
9412
9413
9414class InstantItemRecoveryTarget(Model):
9415    """Target details for file / folder restore.
9416
9417    :param client_scripts: List of client scripts.
9418    :type client_scripts:
9419     list[~azure.mgmt.recoveryservicesbackup.models.ClientScriptForConnect]
9420    """
9421
9422    _attribute_map = {
9423        'client_scripts': {'key': 'clientScripts', 'type': '[ClientScriptForConnect]'},
9424    }
9425
9426    def __init__(self, **kwargs):
9427        super(InstantItemRecoveryTarget, self).__init__(**kwargs)
9428        self.client_scripts = kwargs.get('client_scripts', None)
9429
9430
9431class InstantRPAdditionalDetails(Model):
9432    """InstantRPAdditionalDetails.
9433
9434    :param azure_backup_rg_name_prefix:
9435    :type azure_backup_rg_name_prefix: str
9436    :param azure_backup_rg_name_suffix:
9437    :type azure_backup_rg_name_suffix: str
9438    """
9439
9440    _attribute_map = {
9441        'azure_backup_rg_name_prefix': {'key': 'azureBackupRGNamePrefix', 'type': 'str'},
9442        'azure_backup_rg_name_suffix': {'key': 'azureBackupRGNameSuffix', 'type': 'str'},
9443    }
9444
9445    def __init__(self, **kwargs):
9446        super(InstantRPAdditionalDetails, self).__init__(**kwargs)
9447        self.azure_backup_rg_name_prefix = kwargs.get('azure_backup_rg_name_prefix', None)
9448        self.azure_backup_rg_name_suffix = kwargs.get('azure_backup_rg_name_suffix', None)
9449
9450
9451class JobQueryObject(Model):
9452    """Filters to list the jobs.
9453
9454    :param status: Status of the job. Possible values include: 'Invalid',
9455     'InProgress', 'Completed', 'Failed', 'CompletedWithWarnings', 'Cancelled',
9456     'Cancelling'
9457    :type status: str or ~azure.mgmt.recoveryservicesbackup.models.JobStatus
9458    :param backup_management_type: Type of backup management for the job.
9459     Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
9460     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
9461     'DefaultBackup'
9462    :type backup_management_type: str or
9463     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
9464    :param operation: Type of operation. Possible values include: 'Invalid',
9465     'Register', 'UnRegister', 'ConfigureBackup', 'Backup', 'Restore',
9466     'DisableBackup', 'DeleteBackupData', 'CrossRegionRestore', 'Undelete',
9467     'UpdateCustomerManagedKey'
9468    :type operation: str or
9469     ~azure.mgmt.recoveryservicesbackup.models.JobOperationType
9470    :param job_id: JobID represents the job uniquely.
9471    :type job_id: str
9472    :param start_time: Job has started at this time. Value is in UTC.
9473    :type start_time: datetime
9474    :param end_time: Job has ended at this time. Value is in UTC.
9475    :type end_time: datetime
9476    """
9477
9478    _attribute_map = {
9479        'status': {'key': 'status', 'type': 'str'},
9480        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
9481        'operation': {'key': 'operation', 'type': 'str'},
9482        'job_id': {'key': 'jobId', 'type': 'str'},
9483        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
9484        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
9485    }
9486
9487    def __init__(self, **kwargs):
9488        super(JobQueryObject, self).__init__(**kwargs)
9489        self.status = kwargs.get('status', None)
9490        self.backup_management_type = kwargs.get('backup_management_type', None)
9491        self.operation = kwargs.get('operation', None)
9492        self.job_id = kwargs.get('job_id', None)
9493        self.start_time = kwargs.get('start_time', None)
9494        self.end_time = kwargs.get('end_time', None)
9495
9496
9497class JobResource(Resource):
9498    """Defines workload agnostic properties for a job.
9499
9500    Variables are only populated by the server, and will be ignored when
9501    sending a request.
9502
9503    :ivar id: Resource Id represents the complete path to the resource.
9504    :vartype id: str
9505    :ivar name: Resource name associated with the resource.
9506    :vartype name: str
9507    :ivar type: Resource type represents the complete path of the form
9508     Namespace/ResourceType/ResourceType/...
9509    :vartype type: str
9510    :param location: Resource location.
9511    :type location: str
9512    :param tags: Resource tags.
9513    :type tags: dict[str, str]
9514    :param e_tag: Optional ETag.
9515    :type e_tag: str
9516    :param properties: JobResource properties
9517    :type properties: ~azure.mgmt.recoveryservicesbackup.models.Job
9518    """
9519
9520    _validation = {
9521        'id': {'readonly': True},
9522        'name': {'readonly': True},
9523        'type': {'readonly': True},
9524    }
9525
9526    _attribute_map = {
9527        'id': {'key': 'id', 'type': 'str'},
9528        'name': {'key': 'name', 'type': 'str'},
9529        'type': {'key': 'type', 'type': 'str'},
9530        'location': {'key': 'location', 'type': 'str'},
9531        'tags': {'key': 'tags', 'type': '{str}'},
9532        'e_tag': {'key': 'eTag', 'type': 'str'},
9533        'properties': {'key': 'properties', 'type': 'Job'},
9534    }
9535
9536    def __init__(self, **kwargs):
9537        super(JobResource, self).__init__(**kwargs)
9538        self.properties = kwargs.get('properties', None)
9539
9540
9541class KEKDetails(Model):
9542    """KEK is encryption key for BEK.
9543
9544    :param key_url: Key is KEK.
9545    :type key_url: str
9546    :param key_vault_id: Key Vault ID where this Key is stored.
9547    :type key_vault_id: str
9548    :param key_backup_data: KEK data.
9549    :type key_backup_data: str
9550    """
9551
9552    _attribute_map = {
9553        'key_url': {'key': 'keyUrl', 'type': 'str'},
9554        'key_vault_id': {'key': 'keyVaultId', 'type': 'str'},
9555        'key_backup_data': {'key': 'keyBackupData', 'type': 'str'},
9556    }
9557
9558    def __init__(self, **kwargs):
9559        super(KEKDetails, self).__init__(**kwargs)
9560        self.key_url = kwargs.get('key_url', None)
9561        self.key_vault_id = kwargs.get('key_vault_id', None)
9562        self.key_backup_data = kwargs.get('key_backup_data', None)
9563
9564
9565class KeyAndSecretDetails(Model):
9566    """BEK is bitlocker key.
9567    KEK is encryption key for BEK
9568    If the VM was encrypted then we will store following details :
9569    1. Secret(BEK) - Url + Backup Data + vaultId.
9570    2. Key(KEK) - Url + Backup Data + vaultId.
9571    3. EncryptionMechanism
9572    BEK and KEK can potentially have different vault ids.
9573
9574    :param kek_details: KEK is encryption key for BEK.
9575    :type kek_details: ~azure.mgmt.recoveryservicesbackup.models.KEKDetails
9576    :param bek_details: BEK is bitlocker encryption key.
9577    :type bek_details: ~azure.mgmt.recoveryservicesbackup.models.BEKDetails
9578    :param encryption_mechanism: Encryption mechanism: None/ SinglePass/
9579     DoublePass
9580    :type encryption_mechanism: str
9581    """
9582
9583    _attribute_map = {
9584        'kek_details': {'key': 'kekDetails', 'type': 'KEKDetails'},
9585        'bek_details': {'key': 'bekDetails', 'type': 'BEKDetails'},
9586        'encryption_mechanism': {'key': 'encryptionMechanism', 'type': 'str'},
9587    }
9588
9589    def __init__(self, **kwargs):
9590        super(KeyAndSecretDetails, self).__init__(**kwargs)
9591        self.kek_details = kwargs.get('kek_details', None)
9592        self.bek_details = kwargs.get('bek_details', None)
9593        self.encryption_mechanism = kwargs.get('encryption_mechanism', None)
9594
9595
9596class KPIResourceHealthDetails(Model):
9597    """KPI Resource Health Details.
9598
9599    :param resource_health_status: Resource Health Status. Possible values
9600     include: 'Healthy', 'TransientDegraded', 'PersistentDegraded',
9601     'TransientUnhealthy', 'PersistentUnhealthy', 'Invalid'
9602    :type resource_health_status: str or
9603     ~azure.mgmt.recoveryservicesbackup.models.ResourceHealthStatus
9604    :param resource_health_details: Resource Health Status
9605    :type resource_health_details:
9606     list[~azure.mgmt.recoveryservicesbackup.models.ResourceHealthDetails]
9607    """
9608
9609    _attribute_map = {
9610        'resource_health_status': {'key': 'resourceHealthStatus', 'type': 'str'},
9611        'resource_health_details': {'key': 'resourceHealthDetails', 'type': '[ResourceHealthDetails]'},
9612    }
9613
9614    def __init__(self, **kwargs):
9615        super(KPIResourceHealthDetails, self).__init__(**kwargs)
9616        self.resource_health_status = kwargs.get('resource_health_status', None)
9617        self.resource_health_details = kwargs.get('resource_health_details', None)
9618
9619
9620class ListRecoveryPointsRecommendedForMoveRequest(Model):
9621    """ListRecoveryPointsRecommendedForMoveRequest Request.
9622
9623    :param object_type: Gets the class type.
9624    :type object_type: str
9625    :param excluded_rp_list: List of Recovery Points excluded from Move
9626    :type excluded_rp_list: list[str]
9627    """
9628
9629    _attribute_map = {
9630        'object_type': {'key': 'objectType', 'type': 'str'},
9631        'excluded_rp_list': {'key': 'excludedRPList', 'type': '[str]'},
9632    }
9633
9634    def __init__(self, **kwargs):
9635        super(ListRecoveryPointsRecommendedForMoveRequest, self).__init__(**kwargs)
9636        self.object_type = kwargs.get('object_type', None)
9637        self.excluded_rp_list = kwargs.get('excluded_rp_list', None)
9638
9639
9640class SchedulePolicy(Model):
9641    """Base class for backup schedule.
9642
9643    You probably want to use the sub-classes and not this class directly. Known
9644    sub-classes are: LogSchedulePolicy, LongTermSchedulePolicy,
9645    SimpleSchedulePolicy
9646
9647    All required parameters must be populated in order to send to Azure.
9648
9649    :param schedule_policy_type: Required. Constant filled by server.
9650    :type schedule_policy_type: str
9651    """
9652
9653    _validation = {
9654        'schedule_policy_type': {'required': True},
9655    }
9656
9657    _attribute_map = {
9658        'schedule_policy_type': {'key': 'schedulePolicyType', 'type': 'str'},
9659    }
9660
9661    _subtype_map = {
9662        'schedule_policy_type': {'LogSchedulePolicy': 'LogSchedulePolicy', 'LongTermSchedulePolicy': 'LongTermSchedulePolicy', 'SimpleSchedulePolicy': 'SimpleSchedulePolicy'}
9663    }
9664
9665    def __init__(self, **kwargs):
9666        super(SchedulePolicy, self).__init__(**kwargs)
9667        self.schedule_policy_type = None
9668
9669
9670class LogSchedulePolicy(SchedulePolicy):
9671    """Log policy schedule.
9672
9673    All required parameters must be populated in order to send to Azure.
9674
9675    :param schedule_policy_type: Required. Constant filled by server.
9676    :type schedule_policy_type: str
9677    :param schedule_frequency_in_mins: Frequency of the log schedule operation
9678     of this policy in minutes.
9679    :type schedule_frequency_in_mins: int
9680    """
9681
9682    _validation = {
9683        'schedule_policy_type': {'required': True},
9684    }
9685
9686    _attribute_map = {
9687        'schedule_policy_type': {'key': 'schedulePolicyType', 'type': 'str'},
9688        'schedule_frequency_in_mins': {'key': 'scheduleFrequencyInMins', 'type': 'int'},
9689    }
9690
9691    def __init__(self, **kwargs):
9692        super(LogSchedulePolicy, self).__init__(**kwargs)
9693        self.schedule_frequency_in_mins = kwargs.get('schedule_frequency_in_mins', None)
9694        self.schedule_policy_type = 'LogSchedulePolicy'
9695
9696
9697class RetentionPolicy(Model):
9698    """Base class for retention policy.
9699
9700    You probably want to use the sub-classes and not this class directly. Known
9701    sub-classes are: LongTermRetentionPolicy, SimpleRetentionPolicy
9702
9703    All required parameters must be populated in order to send to Azure.
9704
9705    :param retention_policy_type: Required. Constant filled by server.
9706    :type retention_policy_type: str
9707    """
9708
9709    _validation = {
9710        'retention_policy_type': {'required': True},
9711    }
9712
9713    _attribute_map = {
9714        'retention_policy_type': {'key': 'retentionPolicyType', 'type': 'str'},
9715    }
9716
9717    _subtype_map = {
9718        'retention_policy_type': {'LongTermRetentionPolicy': 'LongTermRetentionPolicy', 'SimpleRetentionPolicy': 'SimpleRetentionPolicy'}
9719    }
9720
9721    def __init__(self, **kwargs):
9722        super(RetentionPolicy, self).__init__(**kwargs)
9723        self.retention_policy_type = None
9724
9725
9726class LongTermRetentionPolicy(RetentionPolicy):
9727    """Long term retention policy.
9728
9729    All required parameters must be populated in order to send to Azure.
9730
9731    :param retention_policy_type: Required. Constant filled by server.
9732    :type retention_policy_type: str
9733    :param daily_schedule: Daily retention schedule of the protection policy.
9734    :type daily_schedule:
9735     ~azure.mgmt.recoveryservicesbackup.models.DailyRetentionSchedule
9736    :param weekly_schedule: Weekly retention schedule of the protection
9737     policy.
9738    :type weekly_schedule:
9739     ~azure.mgmt.recoveryservicesbackup.models.WeeklyRetentionSchedule
9740    :param monthly_schedule: Monthly retention schedule of the protection
9741     policy.
9742    :type monthly_schedule:
9743     ~azure.mgmt.recoveryservicesbackup.models.MonthlyRetentionSchedule
9744    :param yearly_schedule: Yearly retention schedule of the protection
9745     policy.
9746    :type yearly_schedule:
9747     ~azure.mgmt.recoveryservicesbackup.models.YearlyRetentionSchedule
9748    """
9749
9750    _validation = {
9751        'retention_policy_type': {'required': True},
9752    }
9753
9754    _attribute_map = {
9755        'retention_policy_type': {'key': 'retentionPolicyType', 'type': 'str'},
9756        'daily_schedule': {'key': 'dailySchedule', 'type': 'DailyRetentionSchedule'},
9757        'weekly_schedule': {'key': 'weeklySchedule', 'type': 'WeeklyRetentionSchedule'},
9758        'monthly_schedule': {'key': 'monthlySchedule', 'type': 'MonthlyRetentionSchedule'},
9759        'yearly_schedule': {'key': 'yearlySchedule', 'type': 'YearlyRetentionSchedule'},
9760    }
9761
9762    def __init__(self, **kwargs):
9763        super(LongTermRetentionPolicy, self).__init__(**kwargs)
9764        self.daily_schedule = kwargs.get('daily_schedule', None)
9765        self.weekly_schedule = kwargs.get('weekly_schedule', None)
9766        self.monthly_schedule = kwargs.get('monthly_schedule', None)
9767        self.yearly_schedule = kwargs.get('yearly_schedule', None)
9768        self.retention_policy_type = 'LongTermRetentionPolicy'
9769
9770
9771class LongTermSchedulePolicy(SchedulePolicy):
9772    """Long term policy schedule.
9773
9774    All required parameters must be populated in order to send to Azure.
9775
9776    :param schedule_policy_type: Required. Constant filled by server.
9777    :type schedule_policy_type: str
9778    """
9779
9780    _validation = {
9781        'schedule_policy_type': {'required': True},
9782    }
9783
9784    _attribute_map = {
9785        'schedule_policy_type': {'key': 'schedulePolicyType', 'type': 'str'},
9786    }
9787
9788    def __init__(self, **kwargs):
9789        super(LongTermSchedulePolicy, self).__init__(**kwargs)
9790        self.schedule_policy_type = 'LongTermSchedulePolicy'
9791
9792
9793class MabContainer(ProtectionContainer):
9794    """Container with items backed up using MAB backup engine.
9795
9796    All required parameters must be populated in order to send to Azure.
9797
9798    :param friendly_name: Friendly name of the container.
9799    :type friendly_name: str
9800    :param backup_management_type: Type of backup management for the
9801     container. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
9802     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
9803     'DefaultBackup'
9804    :type backup_management_type: str or
9805     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
9806    :param registration_status: Status of registration of the container with
9807     the Recovery Services Vault.
9808    :type registration_status: str
9809    :param health_status: Status of health of the container.
9810    :type health_status: str
9811    :param container_type: Required. Constant filled by server.
9812    :type container_type: str
9813    :param can_re_register: Can the container be registered one more time.
9814    :type can_re_register: bool
9815    :param container_id: ContainerID represents the container.
9816    :type container_id: long
9817    :param protected_item_count: Number of items backed up in this container.
9818    :type protected_item_count: long
9819    :param agent_version: Agent version of this container.
9820    :type agent_version: str
9821    :param extended_info: Additional information for this container
9822    :type extended_info:
9823     ~azure.mgmt.recoveryservicesbackup.models.MabContainerExtendedInfo
9824    :param mab_container_health_details: Health details on this mab container.
9825    :type mab_container_health_details:
9826     list[~azure.mgmt.recoveryservicesbackup.models.MABContainerHealthDetails]
9827    :param container_health_state: Health state of mab container.
9828    :type container_health_state: str
9829    """
9830
9831    _validation = {
9832        'container_type': {'required': True},
9833    }
9834
9835    _attribute_map = {
9836        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
9837        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
9838        'registration_status': {'key': 'registrationStatus', 'type': 'str'},
9839        'health_status': {'key': 'healthStatus', 'type': 'str'},
9840        'container_type': {'key': 'containerType', 'type': 'str'},
9841        'can_re_register': {'key': 'canReRegister', 'type': 'bool'},
9842        'container_id': {'key': 'containerId', 'type': 'long'},
9843        'protected_item_count': {'key': 'protectedItemCount', 'type': 'long'},
9844        'agent_version': {'key': 'agentVersion', 'type': 'str'},
9845        'extended_info': {'key': 'extendedInfo', 'type': 'MabContainerExtendedInfo'},
9846        'mab_container_health_details': {'key': 'mabContainerHealthDetails', 'type': '[MABContainerHealthDetails]'},
9847        'container_health_state': {'key': 'containerHealthState', 'type': 'str'},
9848    }
9849
9850    def __init__(self, **kwargs):
9851        super(MabContainer, self).__init__(**kwargs)
9852        self.can_re_register = kwargs.get('can_re_register', None)
9853        self.container_id = kwargs.get('container_id', None)
9854        self.protected_item_count = kwargs.get('protected_item_count', None)
9855        self.agent_version = kwargs.get('agent_version', None)
9856        self.extended_info = kwargs.get('extended_info', None)
9857        self.mab_container_health_details = kwargs.get('mab_container_health_details', None)
9858        self.container_health_state = kwargs.get('container_health_state', None)
9859        self.container_type = 'Windows'
9860
9861
9862class MabContainerExtendedInfo(Model):
9863    """Additional information of the container.
9864
9865    :param last_refreshed_at: Time stamp when this container was refreshed.
9866    :type last_refreshed_at: datetime
9867    :param backup_item_type: Type of backup items associated with this
9868     container. Possible values include: 'Invalid', 'VM', 'FileFolder',
9869     'AzureSqlDb', 'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM',
9870     'SystemState', 'Client', 'GenericDataSource', 'SQLDataBase',
9871     'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase'
9872    :type backup_item_type: str or
9873     ~azure.mgmt.recoveryservicesbackup.models.BackupItemType
9874    :param backup_items: List of backup items associated with this container.
9875    :type backup_items: list[str]
9876    :param policy_name: Backup policy associated with this container.
9877    :type policy_name: str
9878    :param last_backup_status: Latest backup status of this container.
9879    :type last_backup_status: str
9880    """
9881
9882    _attribute_map = {
9883        'last_refreshed_at': {'key': 'lastRefreshedAt', 'type': 'iso-8601'},
9884        'backup_item_type': {'key': 'backupItemType', 'type': 'str'},
9885        'backup_items': {'key': 'backupItems', 'type': '[str]'},
9886        'policy_name': {'key': 'policyName', 'type': 'str'},
9887        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
9888    }
9889
9890    def __init__(self, **kwargs):
9891        super(MabContainerExtendedInfo, self).__init__(**kwargs)
9892        self.last_refreshed_at = kwargs.get('last_refreshed_at', None)
9893        self.backup_item_type = kwargs.get('backup_item_type', None)
9894        self.backup_items = kwargs.get('backup_items', None)
9895        self.policy_name = kwargs.get('policy_name', None)
9896        self.last_backup_status = kwargs.get('last_backup_status', None)
9897
9898
9899class MABContainerHealthDetails(Model):
9900    """MAB workload-specific Health Details.
9901
9902    :param code: Health Code
9903    :type code: int
9904    :param title: Health Title
9905    :type title: str
9906    :param message: Health Message
9907    :type message: str
9908    :param recommendations: Health Recommended Actions
9909    :type recommendations: list[str]
9910    """
9911
9912    _attribute_map = {
9913        'code': {'key': 'code', 'type': 'int'},
9914        'title': {'key': 'title', 'type': 'str'},
9915        'message': {'key': 'message', 'type': 'str'},
9916        'recommendations': {'key': 'recommendations', 'type': '[str]'},
9917    }
9918
9919    def __init__(self, **kwargs):
9920        super(MABContainerHealthDetails, self).__init__(**kwargs)
9921        self.code = kwargs.get('code', None)
9922        self.title = kwargs.get('title', None)
9923        self.message = kwargs.get('message', None)
9924        self.recommendations = kwargs.get('recommendations', None)
9925
9926
9927class MabErrorInfo(Model):
9928    """MAB workload-specific error information.
9929
9930    Variables are only populated by the server, and will be ignored when
9931    sending a request.
9932
9933    :ivar error_string: Localized error string.
9934    :vartype error_string: str
9935    :ivar recommendations: List of localized recommendations.
9936    :vartype recommendations: list[str]
9937    """
9938
9939    _validation = {
9940        'error_string': {'readonly': True},
9941        'recommendations': {'readonly': True},
9942    }
9943
9944    _attribute_map = {
9945        'error_string': {'key': 'errorString', 'type': 'str'},
9946        'recommendations': {'key': 'recommendations', 'type': '[str]'},
9947    }
9948
9949    def __init__(self, **kwargs):
9950        super(MabErrorInfo, self).__init__(**kwargs)
9951        self.error_string = None
9952        self.recommendations = None
9953
9954
9955class MabFileFolderProtectedItem(ProtectedItem):
9956    """MAB workload-specific backup item.
9957
9958    All required parameters must be populated in order to send to Azure.
9959
9960    :param backup_management_type: Type of backup management for the backed up
9961     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
9962     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
9963     'DefaultBackup'
9964    :type backup_management_type: str or
9965     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
9966    :param workload_type: Type of workload this item represents. Possible
9967     values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB',
9968     'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
9969     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
9970     'SAPAseDatabase'
9971    :type workload_type: str or
9972     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
9973    :param container_name: Unique name of container
9974    :type container_name: str
9975    :param source_resource_id: ARM ID of the resource to be backed up.
9976    :type source_resource_id: str
9977    :param policy_id: ID of the backup policy with which this item is backed
9978     up.
9979    :type policy_id: str
9980    :param last_recovery_point: Timestamp when the last (latest) backup copy
9981     was created for this backup item.
9982    :type last_recovery_point: datetime
9983    :param backup_set_name: Name of the backup set the backup item belongs to
9984    :type backup_set_name: str
9985    :param create_mode: Create mode to indicate recovery of existing soft
9986     deleted data source or creation of new data source. Possible values
9987     include: 'Invalid', 'Default', 'Recover'
9988    :type create_mode: str or
9989     ~azure.mgmt.recoveryservicesbackup.models.CreateMode
9990    :param deferred_delete_time_in_utc: Time for deferred deletion in UTC
9991    :type deferred_delete_time_in_utc: datetime
9992    :param is_scheduled_for_deferred_delete: Flag to identify whether the DS
9993     is scheduled for deferred delete
9994    :type is_scheduled_for_deferred_delete: bool
9995    :param deferred_delete_time_remaining: Time remaining before the DS marked
9996     for deferred delete is permanently deleted
9997    :type deferred_delete_time_remaining: str
9998    :param is_deferred_delete_schedule_upcoming: Flag to identify whether the
9999     deferred deleted DS is to be purged soon
10000    :type is_deferred_delete_schedule_upcoming: bool
10001    :param is_rehydrate: Flag to identify that deferred deleted DS is to be
10002     moved into Pause state
10003    :type is_rehydrate: bool
10004    :param resource_guard_operation_requests: ResourceGuardOperationRequests
10005     on which LAC check will be performed
10006    :type resource_guard_operation_requests: list[str]
10007    :param protected_item_type: Required. Constant filled by server.
10008    :type protected_item_type: str
10009    :param friendly_name: Friendly name of this backup item.
10010    :type friendly_name: str
10011    :param computer_name: Name of the computer associated with this backup
10012     item.
10013    :type computer_name: str
10014    :param last_backup_status: Status of last backup operation.
10015    :type last_backup_status: str
10016    :param last_backup_time: Timestamp of the last backup operation on this
10017     backup item.
10018    :type last_backup_time: datetime
10019    :param protection_state: Protected, ProtectionStopped, IRPending or
10020     ProtectionError
10021    :type protection_state: str
10022    :param deferred_delete_sync_time_in_utc: Sync time for deferred deletion
10023     in UTC
10024    :type deferred_delete_sync_time_in_utc: long
10025    :param extended_info: Additional information with this backup item.
10026    :type extended_info:
10027     ~azure.mgmt.recoveryservicesbackup.models.MabFileFolderProtectedItemExtendedInfo
10028    """
10029
10030    _validation = {
10031        'protected_item_type': {'required': True},
10032    }
10033
10034    _attribute_map = {
10035        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
10036        'workload_type': {'key': 'workloadType', 'type': 'str'},
10037        'container_name': {'key': 'containerName', 'type': 'str'},
10038        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
10039        'policy_id': {'key': 'policyId', 'type': 'str'},
10040        'last_recovery_point': {'key': 'lastRecoveryPoint', 'type': 'iso-8601'},
10041        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
10042        'create_mode': {'key': 'createMode', 'type': 'str'},
10043        'deferred_delete_time_in_utc': {'key': 'deferredDeleteTimeInUTC', 'type': 'iso-8601'},
10044        'is_scheduled_for_deferred_delete': {'key': 'isScheduledForDeferredDelete', 'type': 'bool'},
10045        'deferred_delete_time_remaining': {'key': 'deferredDeleteTimeRemaining', 'type': 'str'},
10046        'is_deferred_delete_schedule_upcoming': {'key': 'isDeferredDeleteScheduleUpcoming', 'type': 'bool'},
10047        'is_rehydrate': {'key': 'isRehydrate', 'type': 'bool'},
10048        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
10049        'protected_item_type': {'key': 'protectedItemType', 'type': 'str'},
10050        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
10051        'computer_name': {'key': 'computerName', 'type': 'str'},
10052        'last_backup_status': {'key': 'lastBackupStatus', 'type': 'str'},
10053        'last_backup_time': {'key': 'lastBackupTime', 'type': 'iso-8601'},
10054        'protection_state': {'key': 'protectionState', 'type': 'str'},
10055        'deferred_delete_sync_time_in_utc': {'key': 'deferredDeleteSyncTimeInUTC', 'type': 'long'},
10056        'extended_info': {'key': 'extendedInfo', 'type': 'MabFileFolderProtectedItemExtendedInfo'},
10057    }
10058
10059    def __init__(self, **kwargs):
10060        super(MabFileFolderProtectedItem, self).__init__(**kwargs)
10061        self.friendly_name = kwargs.get('friendly_name', None)
10062        self.computer_name = kwargs.get('computer_name', None)
10063        self.last_backup_status = kwargs.get('last_backup_status', None)
10064        self.last_backup_time = kwargs.get('last_backup_time', None)
10065        self.protection_state = kwargs.get('protection_state', None)
10066        self.deferred_delete_sync_time_in_utc = kwargs.get('deferred_delete_sync_time_in_utc', None)
10067        self.extended_info = kwargs.get('extended_info', None)
10068        self.protected_item_type = 'MabFileFolderProtectedItem'
10069
10070
10071class MabFileFolderProtectedItemExtendedInfo(Model):
10072    """Additional information on the backed up item.
10073
10074    :param last_refreshed_at: Last time when the agent data synced to service.
10075    :type last_refreshed_at: datetime
10076    :param oldest_recovery_point: The oldest backup copy available.
10077    :type oldest_recovery_point: datetime
10078    :param recovery_point_count: Number of backup copies associated with the
10079     backup item.
10080    :type recovery_point_count: int
10081    """
10082
10083    _attribute_map = {
10084        'last_refreshed_at': {'key': 'lastRefreshedAt', 'type': 'iso-8601'},
10085        'oldest_recovery_point': {'key': 'oldestRecoveryPoint', 'type': 'iso-8601'},
10086        'recovery_point_count': {'key': 'recoveryPointCount', 'type': 'int'},
10087    }
10088
10089    def __init__(self, **kwargs):
10090        super(MabFileFolderProtectedItemExtendedInfo, self).__init__(**kwargs)
10091        self.last_refreshed_at = kwargs.get('last_refreshed_at', None)
10092        self.oldest_recovery_point = kwargs.get('oldest_recovery_point', None)
10093        self.recovery_point_count = kwargs.get('recovery_point_count', None)
10094
10095
10096class MabJob(Job):
10097    """MAB workload-specific job.
10098
10099    All required parameters must be populated in order to send to Azure.
10100
10101    :param entity_friendly_name: Friendly name of the entity on which the
10102     current job is executing.
10103    :type entity_friendly_name: str
10104    :param backup_management_type: Backup management type to execute the
10105     current job. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
10106     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
10107     'DefaultBackup'
10108    :type backup_management_type: str or
10109     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
10110    :param operation: The operation name.
10111    :type operation: str
10112    :param status: Job status.
10113    :type status: str
10114    :param start_time: The start time.
10115    :type start_time: datetime
10116    :param end_time: The end time.
10117    :type end_time: datetime
10118    :param activity_id: ActivityId of job.
10119    :type activity_id: str
10120    :param job_type: Required. Constant filled by server.
10121    :type job_type: str
10122    :param duration: Time taken by job to run.
10123    :type duration: timedelta
10124    :param actions_info: The state/actions applicable on jobs like
10125     cancel/retry.
10126    :type actions_info: list[str or
10127     ~azure.mgmt.recoveryservicesbackup.models.JobSupportedAction]
10128    :param mab_server_name: Name of server protecting the DS.
10129    :type mab_server_name: str
10130    :param mab_server_type: Server type of MAB container. Possible values
10131     include: 'Invalid', 'Unknown', 'IaasVMContainer',
10132     'IaasVMServiceContainer', 'DPMContainer', 'AzureBackupServerContainer',
10133     'MABContainer', 'Cluster', 'AzureSqlContainer', 'Windows', 'VCenter',
10134     'VMAppContainer', 'SQLAGWorkLoadContainer', 'StorageContainer',
10135     'GenericContainer'
10136    :type mab_server_type: str or
10137     ~azure.mgmt.recoveryservicesbackup.models.MabServerType
10138    :param workload_type: Workload type of backup item. Possible values
10139     include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange',
10140     'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource',
10141     'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase'
10142    :type workload_type: str or
10143     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
10144    :param error_details: The errors.
10145    :type error_details:
10146     list[~azure.mgmt.recoveryservicesbackup.models.MabErrorInfo]
10147    :param extended_info: Additional information on the job.
10148    :type extended_info:
10149     ~azure.mgmt.recoveryservicesbackup.models.MabJobExtendedInfo
10150    """
10151
10152    _validation = {
10153        'job_type': {'required': True},
10154    }
10155
10156    _attribute_map = {
10157        'entity_friendly_name': {'key': 'entityFriendlyName', 'type': 'str'},
10158        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
10159        'operation': {'key': 'operation', 'type': 'str'},
10160        'status': {'key': 'status', 'type': 'str'},
10161        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
10162        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
10163        'activity_id': {'key': 'activityId', 'type': 'str'},
10164        'job_type': {'key': 'jobType', 'type': 'str'},
10165        'duration': {'key': 'duration', 'type': 'duration'},
10166        'actions_info': {'key': 'actionsInfo', 'type': '[JobSupportedAction]'},
10167        'mab_server_name': {'key': 'mabServerName', 'type': 'str'},
10168        'mab_server_type': {'key': 'mabServerType', 'type': 'str'},
10169        'workload_type': {'key': 'workloadType', 'type': 'str'},
10170        'error_details': {'key': 'errorDetails', 'type': '[MabErrorInfo]'},
10171        'extended_info': {'key': 'extendedInfo', 'type': 'MabJobExtendedInfo'},
10172    }
10173
10174    def __init__(self, **kwargs):
10175        super(MabJob, self).__init__(**kwargs)
10176        self.duration = kwargs.get('duration', None)
10177        self.actions_info = kwargs.get('actions_info', None)
10178        self.mab_server_name = kwargs.get('mab_server_name', None)
10179        self.mab_server_type = kwargs.get('mab_server_type', None)
10180        self.workload_type = kwargs.get('workload_type', None)
10181        self.error_details = kwargs.get('error_details', None)
10182        self.extended_info = kwargs.get('extended_info', None)
10183        self.job_type = 'MabJob'
10184
10185
10186class MabJobExtendedInfo(Model):
10187    """Additional information for the MAB workload-specific job.
10188
10189    :param tasks_list: List of tasks for this job.
10190    :type tasks_list:
10191     list[~azure.mgmt.recoveryservicesbackup.models.MabJobTaskDetails]
10192    :param property_bag: The job properties.
10193    :type property_bag: dict[str, str]
10194    :param dynamic_error_message: Non localized error message specific to this
10195     job.
10196    :type dynamic_error_message: str
10197    """
10198
10199    _attribute_map = {
10200        'tasks_list': {'key': 'tasksList', 'type': '[MabJobTaskDetails]'},
10201        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
10202        'dynamic_error_message': {'key': 'dynamicErrorMessage', 'type': 'str'},
10203    }
10204
10205    def __init__(self, **kwargs):
10206        super(MabJobExtendedInfo, self).__init__(**kwargs)
10207        self.tasks_list = kwargs.get('tasks_list', None)
10208        self.property_bag = kwargs.get('property_bag', None)
10209        self.dynamic_error_message = kwargs.get('dynamic_error_message', None)
10210
10211
10212class MabJobTaskDetails(Model):
10213    """MAB workload-specific job task details.
10214
10215    :param task_id: The task display name.
10216    :type task_id: str
10217    :param start_time: The start time.
10218    :type start_time: datetime
10219    :param end_time: The end time.
10220    :type end_time: datetime
10221    :param duration: Time elapsed for task.
10222    :type duration: timedelta
10223    :param status: The status.
10224    :type status: str
10225    """
10226
10227    _attribute_map = {
10228        'task_id': {'key': 'taskId', 'type': 'str'},
10229        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
10230        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
10231        'duration': {'key': 'duration', 'type': 'duration'},
10232        'status': {'key': 'status', 'type': 'str'},
10233    }
10234
10235    def __init__(self, **kwargs):
10236        super(MabJobTaskDetails, self).__init__(**kwargs)
10237        self.task_id = kwargs.get('task_id', None)
10238        self.start_time = kwargs.get('start_time', None)
10239        self.end_time = kwargs.get('end_time', None)
10240        self.duration = kwargs.get('duration', None)
10241        self.status = kwargs.get('status', None)
10242
10243
10244class MabProtectionPolicy(ProtectionPolicy):
10245    """Mab container-specific backup policy.
10246
10247    All required parameters must be populated in order to send to Azure.
10248
10249    :param protected_items_count: Number of items associated with this policy.
10250    :type protected_items_count: int
10251    :param resource_guard_operation_requests: ResourceGuard Operation Requests
10252    :type resource_guard_operation_requests: list[str]
10253    :param backup_management_type: Required. Constant filled by server.
10254    :type backup_management_type: str
10255    :param schedule_policy: Backup schedule of backup policy.
10256    :type schedule_policy:
10257     ~azure.mgmt.recoveryservicesbackup.models.SchedulePolicy
10258    :param retention_policy: Retention policy details.
10259    :type retention_policy:
10260     ~azure.mgmt.recoveryservicesbackup.models.RetentionPolicy
10261    """
10262
10263    _validation = {
10264        'backup_management_type': {'required': True},
10265    }
10266
10267    _attribute_map = {
10268        'protected_items_count': {'key': 'protectedItemsCount', 'type': 'int'},
10269        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
10270        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
10271        'schedule_policy': {'key': 'schedulePolicy', 'type': 'SchedulePolicy'},
10272        'retention_policy': {'key': 'retentionPolicy', 'type': 'RetentionPolicy'},
10273    }
10274
10275    def __init__(self, **kwargs):
10276        super(MabProtectionPolicy, self).__init__(**kwargs)
10277        self.schedule_policy = kwargs.get('schedule_policy', None)
10278        self.retention_policy = kwargs.get('retention_policy', None)
10279        self.backup_management_type = 'MAB'
10280
10281
10282class MonthlyRetentionSchedule(Model):
10283    """Monthly retention schedule.
10284
10285    :param retention_schedule_format_type: Retention schedule format type for
10286     monthly retention policy. Possible values include: 'Invalid', 'Daily',
10287     'Weekly'
10288    :type retention_schedule_format_type: str or
10289     ~azure.mgmt.recoveryservicesbackup.models.RetentionScheduleFormat
10290    :param retention_schedule_daily: Daily retention format for monthly
10291     retention policy.
10292    :type retention_schedule_daily:
10293     ~azure.mgmt.recoveryservicesbackup.models.DailyRetentionFormat
10294    :param retention_schedule_weekly: Weekly retention format for monthly
10295     retention policy.
10296    :type retention_schedule_weekly:
10297     ~azure.mgmt.recoveryservicesbackup.models.WeeklyRetentionFormat
10298    :param retention_times: Retention times of retention policy.
10299    :type retention_times: list[datetime]
10300    :param retention_duration: Retention duration of retention Policy.
10301    :type retention_duration:
10302     ~azure.mgmt.recoveryservicesbackup.models.RetentionDuration
10303    """
10304
10305    _attribute_map = {
10306        'retention_schedule_format_type': {'key': 'retentionScheduleFormatType', 'type': 'str'},
10307        'retention_schedule_daily': {'key': 'retentionScheduleDaily', 'type': 'DailyRetentionFormat'},
10308        'retention_schedule_weekly': {'key': 'retentionScheduleWeekly', 'type': 'WeeklyRetentionFormat'},
10309        'retention_times': {'key': 'retentionTimes', 'type': '[iso-8601]'},
10310        'retention_duration': {'key': 'retentionDuration', 'type': 'RetentionDuration'},
10311    }
10312
10313    def __init__(self, **kwargs):
10314        super(MonthlyRetentionSchedule, self).__init__(**kwargs)
10315        self.retention_schedule_format_type = kwargs.get('retention_schedule_format_type', None)
10316        self.retention_schedule_daily = kwargs.get('retention_schedule_daily', None)
10317        self.retention_schedule_weekly = kwargs.get('retention_schedule_weekly', None)
10318        self.retention_times = kwargs.get('retention_times', None)
10319        self.retention_duration = kwargs.get('retention_duration', None)
10320
10321
10322class MoveRPAcrossTiersRequest(Model):
10323    """MoveRPAcrossTiersRequest.
10324
10325    :param object_type: Gets the class type.
10326    :type object_type: str
10327    :param source_tier_type: Source tier from where RP needs to be moved.
10328     Possible values include: 'Invalid', 'InstantRP', 'HardenedRP',
10329     'ArchivedRP'
10330    :type source_tier_type: str or
10331     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierType
10332    :param target_tier_type: Target tier where RP needs to be moved. Possible
10333     values include: 'Invalid', 'InstantRP', 'HardenedRP', 'ArchivedRP'
10334    :type target_tier_type: str or
10335     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierType
10336    """
10337
10338    _attribute_map = {
10339        'object_type': {'key': 'objectType', 'type': 'str'},
10340        'source_tier_type': {'key': 'sourceTierType', 'type': 'RecoveryPointTierType'},
10341        'target_tier_type': {'key': 'targetTierType', 'type': 'RecoveryPointTierType'},
10342    }
10343
10344    def __init__(self, **kwargs):
10345        super(MoveRPAcrossTiersRequest, self).__init__(**kwargs)
10346        self.object_type = kwargs.get('object_type', None)
10347        self.source_tier_type = kwargs.get('source_tier_type', None)
10348        self.target_tier_type = kwargs.get('target_tier_type', None)
10349
10350
10351class NameInfo(Model):
10352    """The name of usage.
10353
10354    :param value: Value of usage.
10355    :type value: str
10356    :param localized_value: Localized value of usage.
10357    :type localized_value: str
10358    """
10359
10360    _attribute_map = {
10361        'value': {'key': 'value', 'type': 'str'},
10362        'localized_value': {'key': 'localizedValue', 'type': 'str'},
10363    }
10364
10365    def __init__(self, **kwargs):
10366        super(NameInfo, self).__init__(**kwargs)
10367        self.value = kwargs.get('value', None)
10368        self.localized_value = kwargs.get('localized_value', None)
10369
10370
10371class NewErrorResponse(Model):
10372    """The resource management error response.
10373
10374    :param error: The error object.
10375    :type error:
10376     ~azure.mgmt.recoveryservicesbackup.models.NewErrorResponseError
10377    """
10378
10379    _attribute_map = {
10380        'error': {'key': 'error', 'type': 'NewErrorResponseError'},
10381    }
10382
10383    def __init__(self, **kwargs):
10384        super(NewErrorResponse, self).__init__(**kwargs)
10385        self.error = kwargs.get('error', None)
10386
10387
10388class NewErrorResponseException(HttpOperationError):
10389    """Server responsed with exception of type: 'NewErrorResponse'.
10390
10391    :param deserialize: A deserializer
10392    :param response: Server response to be deserialized.
10393    """
10394
10395    def __init__(self, deserialize, response, *args):
10396
10397        super(NewErrorResponseException, self).__init__(deserialize, response, 'NewErrorResponse', *args)
10398
10399
10400class NewErrorResponseError(Model):
10401    """The error object.
10402
10403    Variables are only populated by the server, and will be ignored when
10404    sending a request.
10405
10406    :ivar code: The error code.
10407    :vartype code: str
10408    :ivar message: The error message.
10409    :vartype message: str
10410    :ivar target: The error target.
10411    :vartype target: str
10412    :ivar details: The error details.
10413    :vartype details:
10414     list[~azure.mgmt.recoveryservicesbackup.models.NewErrorResponse]
10415    :ivar additional_info: The error additional info.
10416    :vartype additional_info:
10417     list[~azure.mgmt.recoveryservicesbackup.models.ErrorAdditionalInfo]
10418    """
10419
10420    _validation = {
10421        'code': {'readonly': True},
10422        'message': {'readonly': True},
10423        'target': {'readonly': True},
10424        'details': {'readonly': True},
10425        'additional_info': {'readonly': True},
10426    }
10427
10428    _attribute_map = {
10429        'code': {'key': 'code', 'type': 'str'},
10430        'message': {'key': 'message', 'type': 'str'},
10431        'target': {'key': 'target', 'type': 'str'},
10432        'details': {'key': 'details', 'type': '[NewErrorResponse]'},
10433        'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
10434    }
10435
10436    def __init__(self, **kwargs):
10437        super(NewErrorResponseError, self).__init__(**kwargs)
10438        self.code = None
10439        self.message = None
10440        self.target = None
10441        self.details = None
10442        self.additional_info = None
10443
10444
10445class OperationResultInfo(OperationResultInfoBase):
10446    """Operation result info.
10447
10448    All required parameters must be populated in order to send to Azure.
10449
10450    :param object_type: Required. Constant filled by server.
10451    :type object_type: str
10452    :param job_list: List of jobs created by this operation.
10453    :type job_list: list[str]
10454    """
10455
10456    _validation = {
10457        'object_type': {'required': True},
10458    }
10459
10460    _attribute_map = {
10461        'object_type': {'key': 'objectType', 'type': 'str'},
10462        'job_list': {'key': 'jobList', 'type': '[str]'},
10463    }
10464
10465    def __init__(self, **kwargs):
10466        super(OperationResultInfo, self).__init__(**kwargs)
10467        self.job_list = kwargs.get('job_list', None)
10468        self.object_type = 'OperationResultInfo'
10469
10470
10471class OperationWorkerResponse(Model):
10472    """This is the base class for operation result responses.
10473
10474    :param status_code: HTTP Status Code of the operation. Possible values
10475     include: 'Continue', 'SwitchingProtocols', 'OK', 'Created', 'Accepted',
10476     'NonAuthoritativeInformation', 'NoContent', 'ResetContent',
10477     'PartialContent', 'MultipleChoices', 'Ambiguous', 'MovedPermanently',
10478     'Moved', 'Found', 'Redirect', 'SeeOther', 'RedirectMethod', 'NotModified',
10479     'UseProxy', 'Unused', 'TemporaryRedirect', 'RedirectKeepVerb',
10480     'BadRequest', 'Unauthorized', 'PaymentRequired', 'Forbidden', 'NotFound',
10481     'MethodNotAllowed', 'NotAcceptable', 'ProxyAuthenticationRequired',
10482     'RequestTimeout', 'Conflict', 'Gone', 'LengthRequired',
10483     'PreconditionFailed', 'RequestEntityTooLarge', 'RequestUriTooLong',
10484     'UnsupportedMediaType', 'RequestedRangeNotSatisfiable',
10485     'ExpectationFailed', 'UpgradeRequired', 'InternalServerError',
10486     'NotImplemented', 'BadGateway', 'ServiceUnavailable', 'GatewayTimeout',
10487     'HttpVersionNotSupported'
10488    :type status_code: str or
10489     ~azure.mgmt.recoveryservicesbackup.models.HttpStatusCode
10490    :param headers: HTTP headers associated with this operation.
10491    :type headers: dict[str, list[str]]
10492    """
10493
10494    _attribute_map = {
10495        'status_code': {'key': 'statusCode', 'type': 'HttpStatusCode'},
10496        'headers': {'key': 'headers', 'type': '{[str]}'},
10497    }
10498
10499    def __init__(self, **kwargs):
10500        super(OperationWorkerResponse, self).__init__(**kwargs)
10501        self.status_code = kwargs.get('status_code', None)
10502        self.headers = kwargs.get('headers', None)
10503
10504
10505class OperationResultInfoBaseResource(OperationWorkerResponse):
10506    """Base class for operation result info.
10507
10508    :param status_code: HTTP Status Code of the operation. Possible values
10509     include: 'Continue', 'SwitchingProtocols', 'OK', 'Created', 'Accepted',
10510     'NonAuthoritativeInformation', 'NoContent', 'ResetContent',
10511     'PartialContent', 'MultipleChoices', 'Ambiguous', 'MovedPermanently',
10512     'Moved', 'Found', 'Redirect', 'SeeOther', 'RedirectMethod', 'NotModified',
10513     'UseProxy', 'Unused', 'TemporaryRedirect', 'RedirectKeepVerb',
10514     'BadRequest', 'Unauthorized', 'PaymentRequired', 'Forbidden', 'NotFound',
10515     'MethodNotAllowed', 'NotAcceptable', 'ProxyAuthenticationRequired',
10516     'RequestTimeout', 'Conflict', 'Gone', 'LengthRequired',
10517     'PreconditionFailed', 'RequestEntityTooLarge', 'RequestUriTooLong',
10518     'UnsupportedMediaType', 'RequestedRangeNotSatisfiable',
10519     'ExpectationFailed', 'UpgradeRequired', 'InternalServerError',
10520     'NotImplemented', 'BadGateway', 'ServiceUnavailable', 'GatewayTimeout',
10521     'HttpVersionNotSupported'
10522    :type status_code: str or
10523     ~azure.mgmt.recoveryservicesbackup.models.HttpStatusCode
10524    :param headers: HTTP headers associated with this operation.
10525    :type headers: dict[str, list[str]]
10526    :param operation: OperationResultInfoBaseResource operation
10527    :type operation:
10528     ~azure.mgmt.recoveryservicesbackup.models.OperationResultInfoBase
10529    """
10530
10531    _attribute_map = {
10532        'status_code': {'key': 'statusCode', 'type': 'HttpStatusCode'},
10533        'headers': {'key': 'headers', 'type': '{[str]}'},
10534        'operation': {'key': 'operation', 'type': 'OperationResultInfoBase'},
10535    }
10536
10537    def __init__(self, **kwargs):
10538        super(OperationResultInfoBaseResource, self).__init__(**kwargs)
10539        self.operation = kwargs.get('operation', None)
10540
10541
10542class OperationStatus(Model):
10543    """Operation status.
10544
10545    :param id: ID of the operation.
10546    :type id: str
10547    :param name: Name of the operation.
10548    :type name: str
10549    :param status: Operation status. Possible values include: 'Invalid',
10550     'InProgress', 'Succeeded', 'Failed', 'Canceled'
10551    :type status: str or
10552     ~azure.mgmt.recoveryservicesbackup.models.OperationStatusValues
10553    :param start_time: Operation start time. Format: ISO-8601.
10554    :type start_time: datetime
10555    :param end_time: Operation end time. Format: ISO-8601.
10556    :type end_time: datetime
10557    :param error: Error information related to this operation.
10558    :type error:
10559     ~azure.mgmt.recoveryservicesbackup.models.OperationStatusError
10560    :param properties: Additional information associated with this operation.
10561    :type properties:
10562     ~azure.mgmt.recoveryservicesbackup.models.OperationStatusExtendedInfo
10563    """
10564
10565    _attribute_map = {
10566        'id': {'key': 'id', 'type': 'str'},
10567        'name': {'key': 'name', 'type': 'str'},
10568        'status': {'key': 'status', 'type': 'str'},
10569        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
10570        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
10571        'error': {'key': 'error', 'type': 'OperationStatusError'},
10572        'properties': {'key': 'properties', 'type': 'OperationStatusExtendedInfo'},
10573    }
10574
10575    def __init__(self, **kwargs):
10576        super(OperationStatus, self).__init__(**kwargs)
10577        self.id = kwargs.get('id', None)
10578        self.name = kwargs.get('name', None)
10579        self.status = kwargs.get('status', None)
10580        self.start_time = kwargs.get('start_time', None)
10581        self.end_time = kwargs.get('end_time', None)
10582        self.error = kwargs.get('error', None)
10583        self.properties = kwargs.get('properties', None)
10584
10585
10586class OperationStatusError(Model):
10587    """Error information associated with operation status call.
10588
10589    :param code: Error code of the operation failure.
10590    :type code: str
10591    :param message: Error message displayed if the operation failure.
10592    :type message: str
10593    """
10594
10595    _attribute_map = {
10596        'code': {'key': 'code', 'type': 'str'},
10597        'message': {'key': 'message', 'type': 'str'},
10598    }
10599
10600    def __init__(self, **kwargs):
10601        super(OperationStatusError, self).__init__(**kwargs)
10602        self.code = kwargs.get('code', None)
10603        self.message = kwargs.get('message', None)
10604
10605
10606class OperationStatusExtendedInfo(Model):
10607    """Base class for additional information of operation status.
10608
10609    You probably want to use the sub-classes and not this class directly. Known
10610    sub-classes are: OperationStatusJobExtendedInfo,
10611    OperationStatusJobsExtendedInfo, OperationStatusProvisionILRExtendedInfo,
10612    OperationStatusRecoveryPointExtendedInfo
10613
10614    All required parameters must be populated in order to send to Azure.
10615
10616    :param object_type: Required. Constant filled by server.
10617    :type object_type: str
10618    """
10619
10620    _validation = {
10621        'object_type': {'required': True},
10622    }
10623
10624    _attribute_map = {
10625        'object_type': {'key': 'objectType', 'type': 'str'},
10626    }
10627
10628    _subtype_map = {
10629        'object_type': {'OperationStatusJobExtendedInfo': 'OperationStatusJobExtendedInfo', 'OperationStatusJobsExtendedInfo': 'OperationStatusJobsExtendedInfo', 'OperationStatusProvisionILRExtendedInfo': 'OperationStatusProvisionILRExtendedInfo', 'OperationStatusRecoveryPointExtendedInfo': 'OperationStatusRecoveryPointExtendedInfo'}
10630    }
10631
10632    def __init__(self, **kwargs):
10633        super(OperationStatusExtendedInfo, self).__init__(**kwargs)
10634        self.object_type = None
10635
10636
10637class OperationStatusJobExtendedInfo(OperationStatusExtendedInfo):
10638    """Operation status job extended info.
10639
10640    All required parameters must be populated in order to send to Azure.
10641
10642    :param object_type: Required. Constant filled by server.
10643    :type object_type: str
10644    :param job_id: ID of the job created for this protected item.
10645    :type job_id: str
10646    """
10647
10648    _validation = {
10649        'object_type': {'required': True},
10650    }
10651
10652    _attribute_map = {
10653        'object_type': {'key': 'objectType', 'type': 'str'},
10654        'job_id': {'key': 'jobId', 'type': 'str'},
10655    }
10656
10657    def __init__(self, **kwargs):
10658        super(OperationStatusJobExtendedInfo, self).__init__(**kwargs)
10659        self.job_id = kwargs.get('job_id', None)
10660        self.object_type = 'OperationStatusJobExtendedInfo'
10661
10662
10663class OperationStatusJobsExtendedInfo(OperationStatusExtendedInfo):
10664    """Operation status extended info for list of jobs.
10665
10666    All required parameters must be populated in order to send to Azure.
10667
10668    :param object_type: Required. Constant filled by server.
10669    :type object_type: str
10670    :param job_ids: IDs of the jobs created for the protected item.
10671    :type job_ids: list[str]
10672    :param failed_jobs_error: Stores all the failed jobs along with the
10673     corresponding error codes.
10674    :type failed_jobs_error: dict[str, str]
10675    """
10676
10677    _validation = {
10678        'object_type': {'required': True},
10679    }
10680
10681    _attribute_map = {
10682        'object_type': {'key': 'objectType', 'type': 'str'},
10683        'job_ids': {'key': 'jobIds', 'type': '[str]'},
10684        'failed_jobs_error': {'key': 'failedJobsError', 'type': '{str}'},
10685    }
10686
10687    def __init__(self, **kwargs):
10688        super(OperationStatusJobsExtendedInfo, self).__init__(**kwargs)
10689        self.job_ids = kwargs.get('job_ids', None)
10690        self.failed_jobs_error = kwargs.get('failed_jobs_error', None)
10691        self.object_type = 'OperationStatusJobsExtendedInfo'
10692
10693
10694class OperationStatusProvisionILRExtendedInfo(OperationStatusExtendedInfo):
10695    """Operation status extended info for ILR provision action.
10696
10697    All required parameters must be populated in order to send to Azure.
10698
10699    :param object_type: Required. Constant filled by server.
10700    :type object_type: str
10701    :param recovery_target: Target details for file / folder restore.
10702    :type recovery_target:
10703     ~azure.mgmt.recoveryservicesbackup.models.InstantItemRecoveryTarget
10704    """
10705
10706    _validation = {
10707        'object_type': {'required': True},
10708    }
10709
10710    _attribute_map = {
10711        'object_type': {'key': 'objectType', 'type': 'str'},
10712        'recovery_target': {'key': 'recoveryTarget', 'type': 'InstantItemRecoveryTarget'},
10713    }
10714
10715    def __init__(self, **kwargs):
10716        super(OperationStatusProvisionILRExtendedInfo, self).__init__(**kwargs)
10717        self.recovery_target = kwargs.get('recovery_target', None)
10718        self.object_type = 'OperationStatusProvisionILRExtendedInfo'
10719
10720
10721class OperationStatusRecoveryPointExtendedInfo(OperationStatusExtendedInfo):
10722    """Operation status extended info for Updated Recovery Point.
10723
10724    All required parameters must be populated in order to send to Azure.
10725
10726    :param object_type: Required. Constant filled by server.
10727    :type object_type: str
10728    :param updated_recovery_point: Recovery Point info with updated source
10729     snapshot URI
10730    :type updated_recovery_point:
10731     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPoint
10732    :param deleted_backup_item_version: In case the share is in soft-deleted
10733     state, populate this field with deleted backup item
10734    :type deleted_backup_item_version: str
10735    """
10736
10737    _validation = {
10738        'object_type': {'required': True},
10739    }
10740
10741    _attribute_map = {
10742        'object_type': {'key': 'objectType', 'type': 'str'},
10743        'updated_recovery_point': {'key': 'updatedRecoveryPoint', 'type': 'RecoveryPoint'},
10744        'deleted_backup_item_version': {'key': 'deletedBackupItemVersion', 'type': 'str'},
10745    }
10746
10747    def __init__(self, **kwargs):
10748        super(OperationStatusRecoveryPointExtendedInfo, self).__init__(**kwargs)
10749        self.updated_recovery_point = kwargs.get('updated_recovery_point', None)
10750        self.deleted_backup_item_version = kwargs.get('deleted_backup_item_version', None)
10751        self.object_type = 'OperationStatusRecoveryPointExtendedInfo'
10752
10753
10754class PointInTimeRange(Model):
10755    """Provides details for log ranges.
10756
10757    :param start_time: Start time of the time range for log recovery.
10758    :type start_time: datetime
10759    :param end_time: End time of the time range for log recovery.
10760    :type end_time: datetime
10761    """
10762
10763    _attribute_map = {
10764        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
10765        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
10766    }
10767
10768    def __init__(self, **kwargs):
10769        super(PointInTimeRange, self).__init__(**kwargs)
10770        self.start_time = kwargs.get('start_time', None)
10771        self.end_time = kwargs.get('end_time', None)
10772
10773
10774class PreBackupValidation(Model):
10775    """Pre-backup validation for Azure VM Workload provider.
10776
10777    :param status: Status of protectable item, i.e.
10778     InProgress,Succeeded,Failed. Possible values include: 'Invalid',
10779     'Success', 'Failed'
10780    :type status: str or
10781     ~azure.mgmt.recoveryservicesbackup.models.InquiryStatus
10782    :param code: Error code of protectable item
10783    :type code: str
10784    :param message: Message corresponding to the error code for the
10785     protectable item
10786    :type message: str
10787    """
10788
10789    _attribute_map = {
10790        'status': {'key': 'status', 'type': 'str'},
10791        'code': {'key': 'code', 'type': 'str'},
10792        'message': {'key': 'message', 'type': 'str'},
10793    }
10794
10795    def __init__(self, **kwargs):
10796        super(PreBackupValidation, self).__init__(**kwargs)
10797        self.status = kwargs.get('status', None)
10798        self.code = kwargs.get('code', None)
10799        self.message = kwargs.get('message', None)
10800
10801
10802class PrepareDataMoveRequest(Model):
10803    """Prepare DataMove Request.
10804
10805    All required parameters must be populated in order to send to Azure.
10806
10807    :param target_resource_id: Required. ARM Id of target vault
10808    :type target_resource_id: str
10809    :param target_region: Required. Target Region
10810    :type target_region: str
10811    :param data_move_level: Required. DataMove Level. Possible values include:
10812     'Invalid', 'Vault', 'Container'
10813    :type data_move_level: str or
10814     ~azure.mgmt.recoveryservicesbackup.models.DataMoveLevel
10815    :param source_container_arm_ids: Source Container ArmIds
10816     This needs to be populated only if DataMoveLevel is set to container
10817    :type source_container_arm_ids: list[str]
10818    :param ignore_moved: Ignore the artifacts which are already moved.
10819    :type ignore_moved: bool
10820    """
10821
10822    _validation = {
10823        'target_resource_id': {'required': True},
10824        'target_region': {'required': True},
10825        'data_move_level': {'required': True},
10826    }
10827
10828    _attribute_map = {
10829        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
10830        'target_region': {'key': 'targetRegion', 'type': 'str'},
10831        'data_move_level': {'key': 'dataMoveLevel', 'type': 'str'},
10832        'source_container_arm_ids': {'key': 'sourceContainerArmIds', 'type': '[str]'},
10833        'ignore_moved': {'key': 'ignoreMoved', 'type': 'bool'},
10834    }
10835
10836    def __init__(self, **kwargs):
10837        super(PrepareDataMoveRequest, self).__init__(**kwargs)
10838        self.target_resource_id = kwargs.get('target_resource_id', None)
10839        self.target_region = kwargs.get('target_region', None)
10840        self.data_move_level = kwargs.get('data_move_level', None)
10841        self.source_container_arm_ids = kwargs.get('source_container_arm_ids', None)
10842        self.ignore_moved = kwargs.get('ignore_moved', None)
10843
10844
10845class VaultStorageConfigOperationResultResponse(Model):
10846    """Operation result response for Vault Storage Config.
10847
10848    You probably want to use the sub-classes and not this class directly. Known
10849    sub-classes are: PrepareDataMoveResponse
10850
10851    All required parameters must be populated in order to send to Azure.
10852
10853    :param object_type: Required. Constant filled by server.
10854    :type object_type: str
10855    """
10856
10857    _validation = {
10858        'object_type': {'required': True},
10859    }
10860
10861    _attribute_map = {
10862        'object_type': {'key': 'objectType', 'type': 'str'},
10863    }
10864
10865    _subtype_map = {
10866        'object_type': {'PrepareDataMoveResponse': 'PrepareDataMoveResponse'}
10867    }
10868
10869    def __init__(self, **kwargs):
10870        super(VaultStorageConfigOperationResultResponse, self).__init__(**kwargs)
10871        self.object_type = None
10872
10873
10874class PrepareDataMoveResponse(VaultStorageConfigOperationResultResponse):
10875    """Prepare DataMove Response.
10876
10877    All required parameters must be populated in order to send to Azure.
10878
10879    :param object_type: Required. Constant filled by server.
10880    :type object_type: str
10881    :param correlation_id: Co-relationId for move operation
10882    :type correlation_id: str
10883    :param source_vault_properties: Source Vault Properties
10884    :type source_vault_properties: dict[str, str]
10885    """
10886
10887    _validation = {
10888        'object_type': {'required': True},
10889    }
10890
10891    _attribute_map = {
10892        'object_type': {'key': 'objectType', 'type': 'str'},
10893        'correlation_id': {'key': 'correlationId', 'type': 'str'},
10894        'source_vault_properties': {'key': 'sourceVaultProperties', 'type': '{str}'},
10895    }
10896
10897    def __init__(self, **kwargs):
10898        super(PrepareDataMoveResponse, self).__init__(**kwargs)
10899        self.correlation_id = kwargs.get('correlation_id', None)
10900        self.source_vault_properties = kwargs.get('source_vault_properties', None)
10901        self.object_type = 'PrepareDataMoveResponse'
10902
10903
10904class PreValidateEnableBackupRequest(Model):
10905    """Contract to validate if backup can be enabled on the given resource in a
10906    given vault and given configuration.
10907    It will validate followings
10908    1. Vault capacity
10909    2. VM is already protected
10910    3. Any VM related configuration passed in properties.
10911
10912    :param resource_type: ProtectedItem Type- VM, SqlDataBase, AzureFileShare
10913     etc. Possible values include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb',
10914     'SQLDB', 'Exchange', 'Sharepoint', 'VMwareVM', 'SystemState', 'Client',
10915     'GenericDataSource', 'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase',
10916     'SAPAseDatabase'
10917    :type resource_type: str or
10918     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
10919    :param resource_id: ARM Virtual Machine Id
10920    :type resource_id: str
10921    :param vault_id: ARM id of the Recovery Services Vault
10922    :type vault_id: str
10923    :param properties: Configuration of VM if any needs to be validated like
10924     OS type etc
10925    :type properties: str
10926    """
10927
10928    _attribute_map = {
10929        'resource_type': {'key': 'resourceType', 'type': 'str'},
10930        'resource_id': {'key': 'resourceId', 'type': 'str'},
10931        'vault_id': {'key': 'vaultId', 'type': 'str'},
10932        'properties': {'key': 'properties', 'type': 'str'},
10933    }
10934
10935    def __init__(self, **kwargs):
10936        super(PreValidateEnableBackupRequest, self).__init__(**kwargs)
10937        self.resource_type = kwargs.get('resource_type', None)
10938        self.resource_id = kwargs.get('resource_id', None)
10939        self.vault_id = kwargs.get('vault_id', None)
10940        self.properties = kwargs.get('properties', None)
10941
10942
10943class PreValidateEnableBackupResponse(Model):
10944    """Response contract for enable backup validation request.
10945
10946    :param status: Validation Status. Possible values include: 'Invalid',
10947     'Succeeded', 'Failed'
10948    :type status: str or
10949     ~azure.mgmt.recoveryservicesbackup.models.ValidationStatus
10950    :param error_code: Response error code
10951    :type error_code: str
10952    :param error_message: Response error message
10953    :type error_message: str
10954    :param recommendation: Recommended action for user
10955    :type recommendation: str
10956    :param container_name: Specifies the product specific container name. E.g.
10957     iaasvmcontainer;iaasvmcontainer;rgname;vmname. This is required
10958     for portal
10959    :type container_name: str
10960    :param protected_item_name: Specifies the product specific ds name. E.g.
10961     vm;iaasvmcontainer;rgname;vmname. This is required for portal
10962    :type protected_item_name: str
10963    """
10964
10965    _attribute_map = {
10966        'status': {'key': 'status', 'type': 'str'},
10967        'error_code': {'key': 'errorCode', 'type': 'str'},
10968        'error_message': {'key': 'errorMessage', 'type': 'str'},
10969        'recommendation': {'key': 'recommendation', 'type': 'str'},
10970        'container_name': {'key': 'containerName', 'type': 'str'},
10971        'protected_item_name': {'key': 'protectedItemName', 'type': 'str'},
10972    }
10973
10974    def __init__(self, **kwargs):
10975        super(PreValidateEnableBackupResponse, self).__init__(**kwargs)
10976        self.status = kwargs.get('status', None)
10977        self.error_code = kwargs.get('error_code', None)
10978        self.error_message = kwargs.get('error_message', None)
10979        self.recommendation = kwargs.get('recommendation', None)
10980        self.container_name = kwargs.get('container_name', None)
10981        self.protected_item_name = kwargs.get('protected_item_name', None)
10982
10983
10984class PrivateEndpoint(Model):
10985    """The Private Endpoint network resource that is linked to the Private
10986    Endpoint connection.
10987
10988    :param id: Gets or sets id
10989    :type id: str
10990    """
10991
10992    _attribute_map = {
10993        'id': {'key': 'id', 'type': 'str'},
10994    }
10995
10996    def __init__(self, **kwargs):
10997        super(PrivateEndpoint, self).__init__(**kwargs)
10998        self.id = kwargs.get('id', None)
10999
11000
11001class PrivateEndpointConnection(Model):
11002    """Private Endpoint Connection Response Properties.
11003
11004    :param provisioning_state: Gets or sets provisioning state of the private
11005     endpoint connection. Possible values include: 'Succeeded', 'Deleting',
11006     'Failed', 'Pending'
11007    :type provisioning_state: str or
11008     ~azure.mgmt.recoveryservicesbackup.models.ProvisioningState
11009    :param private_endpoint: Gets or sets private endpoint associated with the
11010     private endpoint connection
11011    :type private_endpoint:
11012     ~azure.mgmt.recoveryservicesbackup.models.PrivateEndpoint
11013    :param private_link_service_connection_state: Gets or sets private link
11014     service connection state
11015    :type private_link_service_connection_state:
11016     ~azure.mgmt.recoveryservicesbackup.models.PrivateLinkServiceConnectionState
11017    """
11018
11019    _attribute_map = {
11020        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
11021        'private_endpoint': {'key': 'privateEndpoint', 'type': 'PrivateEndpoint'},
11022        'private_link_service_connection_state': {'key': 'privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
11023    }
11024
11025    def __init__(self, **kwargs):
11026        super(PrivateEndpointConnection, self).__init__(**kwargs)
11027        self.provisioning_state = kwargs.get('provisioning_state', None)
11028        self.private_endpoint = kwargs.get('private_endpoint', None)
11029        self.private_link_service_connection_state = kwargs.get('private_link_service_connection_state', None)
11030
11031
11032class PrivateEndpointConnectionResource(Resource):
11033    """Private Endpoint Connection Response Properties.
11034
11035    Variables are only populated by the server, and will be ignored when
11036    sending a request.
11037
11038    :ivar id: Resource Id represents the complete path to the resource.
11039    :vartype id: str
11040    :ivar name: Resource name associated with the resource.
11041    :vartype name: str
11042    :ivar type: Resource type represents the complete path of the form
11043     Namespace/ResourceType/ResourceType/...
11044    :vartype type: str
11045    :param location: Resource location.
11046    :type location: str
11047    :param tags: Resource tags.
11048    :type tags: dict[str, str]
11049    :param e_tag: Optional ETag.
11050    :type e_tag: str
11051    :param properties: PrivateEndpointConnectionResource properties
11052    :type properties:
11053     ~azure.mgmt.recoveryservicesbackup.models.PrivateEndpointConnection
11054    """
11055
11056    _validation = {
11057        'id': {'readonly': True},
11058        'name': {'readonly': True},
11059        'type': {'readonly': True},
11060    }
11061
11062    _attribute_map = {
11063        'id': {'key': 'id', 'type': 'str'},
11064        'name': {'key': 'name', 'type': 'str'},
11065        'type': {'key': 'type', 'type': 'str'},
11066        'location': {'key': 'location', 'type': 'str'},
11067        'tags': {'key': 'tags', 'type': '{str}'},
11068        'e_tag': {'key': 'eTag', 'type': 'str'},
11069        'properties': {'key': 'properties', 'type': 'PrivateEndpointConnection'},
11070    }
11071
11072    def __init__(self, **kwargs):
11073        super(PrivateEndpointConnectionResource, self).__init__(**kwargs)
11074        self.properties = kwargs.get('properties', None)
11075
11076
11077class PrivateLinkServiceConnectionState(Model):
11078    """Private Link Service Connection State.
11079
11080    :param status: Gets or sets the status. Possible values include:
11081     'Pending', 'Approved', 'Rejected', 'Disconnected'
11082    :type status: str or
11083     ~azure.mgmt.recoveryservicesbackup.models.PrivateEndpointConnectionStatus
11084    :param description: Gets or sets description
11085    :type description: str
11086    :param action_required: Gets or sets actions required
11087    :type action_required: str
11088    """
11089
11090    _attribute_map = {
11091        'status': {'key': 'status', 'type': 'str'},
11092        'description': {'key': 'description', 'type': 'str'},
11093        'action_required': {'key': 'actionRequired', 'type': 'str'},
11094    }
11095
11096    def __init__(self, **kwargs):
11097        super(PrivateLinkServiceConnectionState, self).__init__(**kwargs)
11098        self.status = kwargs.get('status', None)
11099        self.description = kwargs.get('description', None)
11100        self.action_required = kwargs.get('action_required', None)
11101
11102
11103class ProtectableContainerResource(Resource):
11104    """Protectable Container Class.
11105
11106    Variables are only populated by the server, and will be ignored when
11107    sending a request.
11108
11109    :ivar id: Resource Id represents the complete path to the resource.
11110    :vartype id: str
11111    :ivar name: Resource name associated with the resource.
11112    :vartype name: str
11113    :ivar type: Resource type represents the complete path of the form
11114     Namespace/ResourceType/ResourceType/...
11115    :vartype type: str
11116    :param location: Resource location.
11117    :type location: str
11118    :param tags: Resource tags.
11119    :type tags: dict[str, str]
11120    :param e_tag: Optional ETag.
11121    :type e_tag: str
11122    :param properties: ProtectableContainerResource properties
11123    :type properties:
11124     ~azure.mgmt.recoveryservicesbackup.models.ProtectableContainer
11125    """
11126
11127    _validation = {
11128        'id': {'readonly': True},
11129        'name': {'readonly': True},
11130        'type': {'readonly': True},
11131    }
11132
11133    _attribute_map = {
11134        'id': {'key': 'id', 'type': 'str'},
11135        'name': {'key': 'name', 'type': 'str'},
11136        'type': {'key': 'type', 'type': 'str'},
11137        'location': {'key': 'location', 'type': 'str'},
11138        'tags': {'key': 'tags', 'type': '{str}'},
11139        'e_tag': {'key': 'eTag', 'type': 'str'},
11140        'properties': {'key': 'properties', 'type': 'ProtectableContainer'},
11141    }
11142
11143    def __init__(self, **kwargs):
11144        super(ProtectableContainerResource, self).__init__(**kwargs)
11145        self.properties = kwargs.get('properties', None)
11146
11147
11148class ProtectedItemQueryObject(Model):
11149    """Filters to list backup items.
11150
11151    :param health_state: Health State for the backed up item. Possible values
11152     include: 'Passed', 'ActionRequired', 'ActionSuggested', 'Invalid'
11153    :type health_state: str or
11154     ~azure.mgmt.recoveryservicesbackup.models.HealthState
11155    :param backup_management_type: Backup management type for the backed up
11156     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
11157     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
11158     'DefaultBackup'
11159    :type backup_management_type: str or
11160     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
11161    :param item_type: Type of workload this item represents. Possible values
11162     include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange',
11163     'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource',
11164     'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase'
11165    :type item_type: str or
11166     ~azure.mgmt.recoveryservicesbackup.models.DataSourceType
11167    :param policy_name: Backup policy name associated with the backup item.
11168    :type policy_name: str
11169    :param container_name: Name of the container.
11170    :type container_name: str
11171    :param backup_engine_name: Backup Engine name
11172    :type backup_engine_name: str
11173    :param friendly_name: Friendly name of protected item
11174    :type friendly_name: str
11175    :param fabric_name: Name of the fabric.
11176    :type fabric_name: str
11177    :param backup_set_name: Name of the backup set.
11178    :type backup_set_name: str
11179    """
11180
11181    _attribute_map = {
11182        'health_state': {'key': 'healthState', 'type': 'str'},
11183        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
11184        'item_type': {'key': 'itemType', 'type': 'str'},
11185        'policy_name': {'key': 'policyName', 'type': 'str'},
11186        'container_name': {'key': 'containerName', 'type': 'str'},
11187        'backup_engine_name': {'key': 'backupEngineName', 'type': 'str'},
11188        'friendly_name': {'key': 'friendlyName', 'type': 'str'},
11189        'fabric_name': {'key': 'fabricName', 'type': 'str'},
11190        'backup_set_name': {'key': 'backupSetName', 'type': 'str'},
11191    }
11192
11193    def __init__(self, **kwargs):
11194        super(ProtectedItemQueryObject, self).__init__(**kwargs)
11195        self.health_state = kwargs.get('health_state', None)
11196        self.backup_management_type = kwargs.get('backup_management_type', None)
11197        self.item_type = kwargs.get('item_type', None)
11198        self.policy_name = kwargs.get('policy_name', None)
11199        self.container_name = kwargs.get('container_name', None)
11200        self.backup_engine_name = kwargs.get('backup_engine_name', None)
11201        self.friendly_name = kwargs.get('friendly_name', None)
11202        self.fabric_name = kwargs.get('fabric_name', None)
11203        self.backup_set_name = kwargs.get('backup_set_name', None)
11204
11205
11206class ProtectedItemResource(Resource):
11207    """Base class for backup items.
11208
11209    Variables are only populated by the server, and will be ignored when
11210    sending a request.
11211
11212    :ivar id: Resource Id represents the complete path to the resource.
11213    :vartype id: str
11214    :ivar name: Resource name associated with the resource.
11215    :vartype name: str
11216    :ivar type: Resource type represents the complete path of the form
11217     Namespace/ResourceType/ResourceType/...
11218    :vartype type: str
11219    :param location: Resource location.
11220    :type location: str
11221    :param tags: Resource tags.
11222    :type tags: dict[str, str]
11223    :param e_tag: Optional ETag.
11224    :type e_tag: str
11225    :param properties: ProtectedItemResource properties
11226    :type properties: ~azure.mgmt.recoveryservicesbackup.models.ProtectedItem
11227    """
11228
11229    _validation = {
11230        'id': {'readonly': True},
11231        'name': {'readonly': True},
11232        'type': {'readonly': True},
11233    }
11234
11235    _attribute_map = {
11236        'id': {'key': 'id', 'type': 'str'},
11237        'name': {'key': 'name', 'type': 'str'},
11238        'type': {'key': 'type', 'type': 'str'},
11239        'location': {'key': 'location', 'type': 'str'},
11240        'tags': {'key': 'tags', 'type': '{str}'},
11241        'e_tag': {'key': 'eTag', 'type': 'str'},
11242        'properties': {'key': 'properties', 'type': 'ProtectedItem'},
11243    }
11244
11245    def __init__(self, **kwargs):
11246        super(ProtectedItemResource, self).__init__(**kwargs)
11247        self.properties = kwargs.get('properties', None)
11248
11249
11250class ProtectionContainerResource(Resource):
11251    """Base class for container with backup items. Containers with specific
11252    workloads are derived from this class.
11253
11254    Variables are only populated by the server, and will be ignored when
11255    sending a request.
11256
11257    :ivar id: Resource Id represents the complete path to the resource.
11258    :vartype id: str
11259    :ivar name: Resource name associated with the resource.
11260    :vartype name: str
11261    :ivar type: Resource type represents the complete path of the form
11262     Namespace/ResourceType/ResourceType/...
11263    :vartype type: str
11264    :param location: Resource location.
11265    :type location: str
11266    :param tags: Resource tags.
11267    :type tags: dict[str, str]
11268    :param e_tag: Optional ETag.
11269    :type e_tag: str
11270    :param properties: ProtectionContainerResource properties
11271    :type properties:
11272     ~azure.mgmt.recoveryservicesbackup.models.ProtectionContainer
11273    """
11274
11275    _validation = {
11276        'id': {'readonly': True},
11277        'name': {'readonly': True},
11278        'type': {'readonly': True},
11279    }
11280
11281    _attribute_map = {
11282        'id': {'key': 'id', 'type': 'str'},
11283        'name': {'key': 'name', 'type': 'str'},
11284        'type': {'key': 'type', 'type': 'str'},
11285        'location': {'key': 'location', 'type': 'str'},
11286        'tags': {'key': 'tags', 'type': '{str}'},
11287        'e_tag': {'key': 'eTag', 'type': 'str'},
11288        'properties': {'key': 'properties', 'type': 'ProtectionContainer'},
11289    }
11290
11291    def __init__(self, **kwargs):
11292        super(ProtectionContainerResource, self).__init__(**kwargs)
11293        self.properties = kwargs.get('properties', None)
11294
11295
11296class ProtectionIntentQueryObject(Model):
11297    """Filters to list protection intent.
11298
11299    :param backup_management_type: Backup management type for the backed up
11300     item. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
11301     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
11302     'DefaultBackup'
11303    :type backup_management_type: str or
11304     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
11305    :param item_type: Type of workload this item represents. Possible values
11306     include: 'Invalid', 'SQLInstance', 'SQLAvailabilityGroupContainer'
11307    :type item_type: str or
11308     ~azure.mgmt.recoveryservicesbackup.models.IntentItemType
11309    :param parent_name: Parent name of the intent
11310    :type parent_name: str
11311    :param item_name: Item name of the intent
11312    :type item_name: str
11313    """
11314
11315    _attribute_map = {
11316        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
11317        'item_type': {'key': 'itemType', 'type': 'str'},
11318        'parent_name': {'key': 'parentName', 'type': 'str'},
11319        'item_name': {'key': 'itemName', 'type': 'str'},
11320    }
11321
11322    def __init__(self, **kwargs):
11323        super(ProtectionIntentQueryObject, self).__init__(**kwargs)
11324        self.backup_management_type = kwargs.get('backup_management_type', None)
11325        self.item_type = kwargs.get('item_type', None)
11326        self.parent_name = kwargs.get('parent_name', None)
11327        self.item_name = kwargs.get('item_name', None)
11328
11329
11330class ProtectionIntentResource(Resource):
11331    """Base class for backup ProtectionIntent.
11332
11333    Variables are only populated by the server, and will be ignored when
11334    sending a request.
11335
11336    :ivar id: Resource Id represents the complete path to the resource.
11337    :vartype id: str
11338    :ivar name: Resource name associated with the resource.
11339    :vartype name: str
11340    :ivar type: Resource type represents the complete path of the form
11341     Namespace/ResourceType/ResourceType/...
11342    :vartype type: str
11343    :param location: Resource location.
11344    :type location: str
11345    :param tags: Resource tags.
11346    :type tags: dict[str, str]
11347    :param e_tag: Optional ETag.
11348    :type e_tag: str
11349    :param properties: ProtectionIntentResource properties
11350    :type properties:
11351     ~azure.mgmt.recoveryservicesbackup.models.ProtectionIntent
11352    """
11353
11354    _validation = {
11355        'id': {'readonly': True},
11356        'name': {'readonly': True},
11357        'type': {'readonly': True},
11358    }
11359
11360    _attribute_map = {
11361        'id': {'key': 'id', 'type': 'str'},
11362        'name': {'key': 'name', 'type': 'str'},
11363        'type': {'key': 'type', 'type': 'str'},
11364        'location': {'key': 'location', 'type': 'str'},
11365        'tags': {'key': 'tags', 'type': '{str}'},
11366        'e_tag': {'key': 'eTag', 'type': 'str'},
11367        'properties': {'key': 'properties', 'type': 'ProtectionIntent'},
11368    }
11369
11370    def __init__(self, **kwargs):
11371        super(ProtectionIntentResource, self).__init__(**kwargs)
11372        self.properties = kwargs.get('properties', None)
11373
11374
11375class ProtectionPolicyQueryObject(Model):
11376    """Filters the list backup policies API.
11377
11378    :param backup_management_type: Backup management type for the backup
11379     policy. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB', 'DPM',
11380     'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
11381     'DefaultBackup'
11382    :type backup_management_type: str or
11383     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
11384    :param fabric_name: Fabric name for filter
11385    :type fabric_name: str
11386    :param workload_type: Workload type for the backup policy. Possible values
11387     include: 'Invalid', 'VM', 'FileFolder', 'AzureSqlDb', 'SQLDB', 'Exchange',
11388     'Sharepoint', 'VMwareVM', 'SystemState', 'Client', 'GenericDataSource',
11389     'SQLDataBase', 'AzureFileShare', 'SAPHanaDatabase', 'SAPAseDatabase'
11390    :type workload_type: str or
11391     ~azure.mgmt.recoveryservicesbackup.models.WorkloadType
11392    """
11393
11394    _attribute_map = {
11395        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
11396        'fabric_name': {'key': 'fabricName', 'type': 'str'},
11397        'workload_type': {'key': 'workloadType', 'type': 'str'},
11398    }
11399
11400    def __init__(self, **kwargs):
11401        super(ProtectionPolicyQueryObject, self).__init__(**kwargs)
11402        self.backup_management_type = kwargs.get('backup_management_type', None)
11403        self.fabric_name = kwargs.get('fabric_name', None)
11404        self.workload_type = kwargs.get('workload_type', None)
11405
11406
11407class ProtectionPolicyResource(Resource):
11408    """Base class for backup policy. Workload-specific backup policies are derived
11409    from this class.
11410
11411    Variables are only populated by the server, and will be ignored when
11412    sending a request.
11413
11414    :ivar id: Resource Id represents the complete path to the resource.
11415    :vartype id: str
11416    :ivar name: Resource name associated with the resource.
11417    :vartype name: str
11418    :ivar type: Resource type represents the complete path of the form
11419     Namespace/ResourceType/ResourceType/...
11420    :vartype type: str
11421    :param location: Resource location.
11422    :type location: str
11423    :param tags: Resource tags.
11424    :type tags: dict[str, str]
11425    :param e_tag: Optional ETag.
11426    :type e_tag: str
11427    :param properties: ProtectionPolicyResource properties
11428    :type properties:
11429     ~azure.mgmt.recoveryservicesbackup.models.ProtectionPolicy
11430    """
11431
11432    _validation = {
11433        'id': {'readonly': True},
11434        'name': {'readonly': True},
11435        'type': {'readonly': True},
11436    }
11437
11438    _attribute_map = {
11439        'id': {'key': 'id', 'type': 'str'},
11440        'name': {'key': 'name', 'type': 'str'},
11441        'type': {'key': 'type', 'type': 'str'},
11442        'location': {'key': 'location', 'type': 'str'},
11443        'tags': {'key': 'tags', 'type': '{str}'},
11444        'e_tag': {'key': 'eTag', 'type': 'str'},
11445        'properties': {'key': 'properties', 'type': 'ProtectionPolicy'},
11446    }
11447
11448    def __init__(self, **kwargs):
11449        super(ProtectionPolicyResource, self).__init__(**kwargs)
11450        self.properties = kwargs.get('properties', None)
11451
11452
11453class RecoveryPointDiskConfiguration(Model):
11454    """Disk configuration.
11455
11456    :param number_of_disks_included_in_backup: Number of disks included in
11457     backup
11458    :type number_of_disks_included_in_backup: int
11459    :param number_of_disks_attached_to_vm: Number of disks attached to the VM
11460    :type number_of_disks_attached_to_vm: int
11461    :param included_disk_list: Information of disks included in backup
11462    :type included_disk_list:
11463     list[~azure.mgmt.recoveryservicesbackup.models.DiskInformation]
11464    :param excluded_disk_list: Information of disks excluded from backup
11465    :type excluded_disk_list:
11466     list[~azure.mgmt.recoveryservicesbackup.models.DiskInformation]
11467    """
11468
11469    _attribute_map = {
11470        'number_of_disks_included_in_backup': {'key': 'numberOfDisksIncludedInBackup', 'type': 'int'},
11471        'number_of_disks_attached_to_vm': {'key': 'numberOfDisksAttachedToVm', 'type': 'int'},
11472        'included_disk_list': {'key': 'includedDiskList', 'type': '[DiskInformation]'},
11473        'excluded_disk_list': {'key': 'excludedDiskList', 'type': '[DiskInformation]'},
11474    }
11475
11476    def __init__(self, **kwargs):
11477        super(RecoveryPointDiskConfiguration, self).__init__(**kwargs)
11478        self.number_of_disks_included_in_backup = kwargs.get('number_of_disks_included_in_backup', None)
11479        self.number_of_disks_attached_to_vm = kwargs.get('number_of_disks_attached_to_vm', None)
11480        self.included_disk_list = kwargs.get('included_disk_list', None)
11481        self.excluded_disk_list = kwargs.get('excluded_disk_list', None)
11482
11483
11484class RecoveryPointMoveReadinessInfo(Model):
11485    """RecoveryPointMoveReadinessInfo.
11486
11487    :param is_ready_for_move:
11488    :type is_ready_for_move: bool
11489    :param additional_info:
11490    :type additional_info: str
11491    """
11492
11493    _attribute_map = {
11494        'is_ready_for_move': {'key': 'isReadyForMove', 'type': 'bool'},
11495        'additional_info': {'key': 'additionalInfo', 'type': 'str'},
11496    }
11497
11498    def __init__(self, **kwargs):
11499        super(RecoveryPointMoveReadinessInfo, self).__init__(**kwargs)
11500        self.is_ready_for_move = kwargs.get('is_ready_for_move', None)
11501        self.additional_info = kwargs.get('additional_info', None)
11502
11503
11504class RecoveryPointRehydrationInfo(Model):
11505    """RP Rehydration Info.
11506
11507    :param rehydration_retention_duration: How long the rehydrated RP should
11508     be kept
11509     Should be ISO8601 Duration format e.g. "P7D"
11510    :type rehydration_retention_duration: str
11511    :param rehydration_priority: Rehydration Priority. Possible values
11512     include: 'Standard', 'High'
11513    :type rehydration_priority: str or
11514     ~azure.mgmt.recoveryservicesbackup.models.RehydrationPriority
11515    """
11516
11517    _attribute_map = {
11518        'rehydration_retention_duration': {'key': 'rehydrationRetentionDuration', 'type': 'str'},
11519        'rehydration_priority': {'key': 'rehydrationPriority', 'type': 'str'},
11520    }
11521
11522    def __init__(self, **kwargs):
11523        super(RecoveryPointRehydrationInfo, self).__init__(**kwargs)
11524        self.rehydration_retention_duration = kwargs.get('rehydration_retention_duration', None)
11525        self.rehydration_priority = kwargs.get('rehydration_priority', None)
11526
11527
11528class RecoveryPointResource(Resource):
11529    """Base class for backup copies. Workload-specific backup copies are derived
11530    from this class.
11531
11532    Variables are only populated by the server, and will be ignored when
11533    sending a request.
11534
11535    :ivar id: Resource Id represents the complete path to the resource.
11536    :vartype id: str
11537    :ivar name: Resource name associated with the resource.
11538    :vartype name: str
11539    :ivar type: Resource type represents the complete path of the form
11540     Namespace/ResourceType/ResourceType/...
11541    :vartype type: str
11542    :param location: Resource location.
11543    :type location: str
11544    :param tags: Resource tags.
11545    :type tags: dict[str, str]
11546    :param e_tag: Optional ETag.
11547    :type e_tag: str
11548    :param properties: RecoveryPointResource properties
11549    :type properties: ~azure.mgmt.recoveryservicesbackup.models.RecoveryPoint
11550    """
11551
11552    _validation = {
11553        'id': {'readonly': True},
11554        'name': {'readonly': True},
11555        'type': {'readonly': True},
11556    }
11557
11558    _attribute_map = {
11559        'id': {'key': 'id', 'type': 'str'},
11560        'name': {'key': 'name', 'type': 'str'},
11561        'type': {'key': 'type', 'type': 'str'},
11562        'location': {'key': 'location', 'type': 'str'},
11563        'tags': {'key': 'tags', 'type': '{str}'},
11564        'e_tag': {'key': 'eTag', 'type': 'str'},
11565        'properties': {'key': 'properties', 'type': 'RecoveryPoint'},
11566    }
11567
11568    def __init__(self, **kwargs):
11569        super(RecoveryPointResource, self).__init__(**kwargs)
11570        self.properties = kwargs.get('properties', None)
11571
11572
11573class RecoveryPointTierInformation(Model):
11574    """Recovery point tier information.
11575
11576    :param type: Recovery point tier type. Possible values include: 'Invalid',
11577     'InstantRP', 'HardenedRP', 'ArchivedRP'
11578    :type type: str or
11579     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierType
11580    :param status: Recovery point tier status. Possible values include:
11581     'Invalid', 'Valid', 'Disabled', 'Deleted', 'Rehydrated'
11582    :type status: str or
11583     ~azure.mgmt.recoveryservicesbackup.models.RecoveryPointTierStatus
11584    :param extended_info: Recovery point tier status.
11585    :type extended_info: dict[str, str]
11586    """
11587
11588    _attribute_map = {
11589        'type': {'key': 'type', 'type': 'RecoveryPointTierType'},
11590        'status': {'key': 'status', 'type': 'RecoveryPointTierStatus'},
11591        'extended_info': {'key': 'extendedInfo', 'type': '{str}'},
11592    }
11593
11594    def __init__(self, **kwargs):
11595        super(RecoveryPointTierInformation, self).__init__(**kwargs)
11596        self.type = kwargs.get('type', None)
11597        self.status = kwargs.get('status', None)
11598        self.extended_info = kwargs.get('extended_info', None)
11599
11600
11601class ResourceGuardOperationDetail(Model):
11602    """ResourceGuardOperationDetail.
11603
11604    :param vault_critical_operation:
11605    :type vault_critical_operation: str
11606    :param default_resource_request:
11607    :type default_resource_request: str
11608    """
11609
11610    _attribute_map = {
11611        'vault_critical_operation': {'key': 'vaultCriticalOperation', 'type': 'str'},
11612        'default_resource_request': {'key': 'defaultResourceRequest', 'type': 'str'},
11613    }
11614
11615    def __init__(self, **kwargs):
11616        super(ResourceGuardOperationDetail, self).__init__(**kwargs)
11617        self.vault_critical_operation = kwargs.get('vault_critical_operation', None)
11618        self.default_resource_request = kwargs.get('default_resource_request', None)
11619
11620
11621class ResourceGuardProxyBase(Model):
11622    """ResourceGuardProxyBase.
11623
11624    :param resource_guard_resource_id:
11625    :type resource_guard_resource_id: str
11626    :param resource_guard_operation_details:
11627    :type resource_guard_operation_details:
11628     list[~azure.mgmt.recoveryservicesbackup.models.ResourceGuardOperationDetail]
11629    :param last_updated_time:
11630    :type last_updated_time: str
11631    :param description:
11632    :type description: str
11633    """
11634
11635    _attribute_map = {
11636        'resource_guard_resource_id': {'key': 'resourceGuardResourceId', 'type': 'str'},
11637        'resource_guard_operation_details': {'key': 'resourceGuardOperationDetails', 'type': '[ResourceGuardOperationDetail]'},
11638        'last_updated_time': {'key': 'lastUpdatedTime', 'type': 'str'},
11639        'description': {'key': 'description', 'type': 'str'},
11640    }
11641
11642    def __init__(self, **kwargs):
11643        super(ResourceGuardProxyBase, self).__init__(**kwargs)
11644        self.resource_guard_resource_id = kwargs.get('resource_guard_resource_id', None)
11645        self.resource_guard_operation_details = kwargs.get('resource_guard_operation_details', None)
11646        self.last_updated_time = kwargs.get('last_updated_time', None)
11647        self.description = kwargs.get('description', None)
11648
11649
11650class ResourceGuardProxyBaseResource(Resource):
11651    """ResourceGuardProxyBaseResource.
11652
11653    Variables are only populated by the server, and will be ignored when
11654    sending a request.
11655
11656    :ivar id: Resource Id represents the complete path to the resource.
11657    :vartype id: str
11658    :ivar name: Resource name associated with the resource.
11659    :vartype name: str
11660    :ivar type: Resource type represents the complete path of the form
11661     Namespace/ResourceType/ResourceType/...
11662    :vartype type: str
11663    :param location: Resource location.
11664    :type location: str
11665    :param tags: Resource tags.
11666    :type tags: dict[str, str]
11667    :param e_tag: Optional ETag.
11668    :type e_tag: str
11669    :param properties: ResourceGuardProxyBaseResource properties
11670    :type properties:
11671     ~azure.mgmt.recoveryservicesbackup.models.ResourceGuardProxyBase
11672    """
11673
11674    _validation = {
11675        'id': {'readonly': True},
11676        'name': {'readonly': True},
11677        'type': {'readonly': True},
11678    }
11679
11680    _attribute_map = {
11681        'id': {'key': 'id', 'type': 'str'},
11682        'name': {'key': 'name', 'type': 'str'},
11683        'type': {'key': 'type', 'type': 'str'},
11684        'location': {'key': 'location', 'type': 'str'},
11685        'tags': {'key': 'tags', 'type': '{str}'},
11686        'e_tag': {'key': 'eTag', 'type': 'str'},
11687        'properties': {'key': 'properties', 'type': 'ResourceGuardProxyBase'},
11688    }
11689
11690    def __init__(self, **kwargs):
11691        super(ResourceGuardProxyBaseResource, self).__init__(**kwargs)
11692        self.properties = kwargs.get('properties', None)
11693
11694
11695class ResourceList(Model):
11696    """Base for all lists of resources.
11697
11698    :param next_link: The uri to fetch the next page of resources. Call
11699     ListNext() fetches next page of resources.
11700    :type next_link: str
11701    """
11702
11703    _attribute_map = {
11704        'next_link': {'key': 'nextLink', 'type': 'str'},
11705    }
11706
11707    def __init__(self, **kwargs):
11708        super(ResourceList, self).__init__(**kwargs)
11709        self.next_link = kwargs.get('next_link', None)
11710
11711
11712class RestoreFileSpecs(Model):
11713    """Restore file specs like file path, type and target folder path info.
11714
11715    :param path: Source File/Folder path
11716    :type path: str
11717    :param file_spec_type: Indicates what the Path variable stands for
11718    :type file_spec_type: str
11719    :param target_folder_path: Destination folder path in target FileShare
11720    :type target_folder_path: str
11721    """
11722
11723    _attribute_map = {
11724        'path': {'key': 'path', 'type': 'str'},
11725        'file_spec_type': {'key': 'fileSpecType', 'type': 'str'},
11726        'target_folder_path': {'key': 'targetFolderPath', 'type': 'str'},
11727    }
11728
11729    def __init__(self, **kwargs):
11730        super(RestoreFileSpecs, self).__init__(**kwargs)
11731        self.path = kwargs.get('path', None)
11732        self.file_spec_type = kwargs.get('file_spec_type', None)
11733        self.target_folder_path = kwargs.get('target_folder_path', None)
11734
11735
11736class RestoreRequestResource(Resource):
11737    """Base class for restore request. Workload-specific restore requests are
11738    derived from this class.
11739
11740    Variables are only populated by the server, and will be ignored when
11741    sending a request.
11742
11743    :ivar id: Resource Id represents the complete path to the resource.
11744    :vartype id: str
11745    :ivar name: Resource name associated with the resource.
11746    :vartype name: str
11747    :ivar type: Resource type represents the complete path of the form
11748     Namespace/ResourceType/ResourceType/...
11749    :vartype type: str
11750    :param location: Resource location.
11751    :type location: str
11752    :param tags: Resource tags.
11753    :type tags: dict[str, str]
11754    :param e_tag: Optional ETag.
11755    :type e_tag: str
11756    :param properties: RestoreRequestResource properties
11757    :type properties: ~azure.mgmt.recoveryservicesbackup.models.RestoreRequest
11758    """
11759
11760    _validation = {
11761        'id': {'readonly': True},
11762        'name': {'readonly': True},
11763        'type': {'readonly': True},
11764    }
11765
11766    _attribute_map = {
11767        'id': {'key': 'id', 'type': 'str'},
11768        'name': {'key': 'name', 'type': 'str'},
11769        'type': {'key': 'type', 'type': 'str'},
11770        'location': {'key': 'location', 'type': 'str'},
11771        'tags': {'key': 'tags', 'type': '{str}'},
11772        'e_tag': {'key': 'eTag', 'type': 'str'},
11773        'properties': {'key': 'properties', 'type': 'RestoreRequest'},
11774    }
11775
11776    def __init__(self, **kwargs):
11777        super(RestoreRequestResource, self).__init__(**kwargs)
11778        self.properties = kwargs.get('properties', None)
11779
11780
11781class RetentionDuration(Model):
11782    """Retention duration.
11783
11784    :param count: Count of duration types. Retention duration is obtained by
11785     the counting the duration type Count times.
11786     For example, when Count = 3 and DurationType = Weeks, retention duration
11787     will be three weeks.
11788    :type count: int
11789    :param duration_type: Retention duration type of retention policy.
11790     Possible values include: 'Invalid', 'Days', 'Weeks', 'Months', 'Years'
11791    :type duration_type: str or
11792     ~azure.mgmt.recoveryservicesbackup.models.RetentionDurationType
11793    """
11794
11795    _attribute_map = {
11796        'count': {'key': 'count', 'type': 'int'},
11797        'duration_type': {'key': 'durationType', 'type': 'str'},
11798    }
11799
11800    def __init__(self, **kwargs):
11801        super(RetentionDuration, self).__init__(**kwargs)
11802        self.count = kwargs.get('count', None)
11803        self.duration_type = kwargs.get('duration_type', None)
11804
11805
11806class SecurityPinBase(Model):
11807    """Base class for get security pin request body.
11808
11809    :param resource_guard_operation_requests: ResourceGuard Operation Requests
11810    :type resource_guard_operation_requests: list[str]
11811    """
11812
11813    _attribute_map = {
11814        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
11815    }
11816
11817    def __init__(self, **kwargs):
11818        super(SecurityPinBase, self).__init__(**kwargs)
11819        self.resource_guard_operation_requests = kwargs.get('resource_guard_operation_requests', None)
11820
11821
11822class Settings(Model):
11823    """Common settings field for backup management.
11824
11825    :param time_zone: TimeZone optional input as string. For example: TimeZone
11826     = "Pacific Standard Time".
11827    :type time_zone: str
11828    :param issqlcompression: SQL compression flag
11829    :type issqlcompression: bool
11830    :param is_compression: Workload compression flag. This has been added so
11831     that 'isSqlCompression'
11832     will be deprecated once clients upgrade to consider this flag.
11833    :type is_compression: bool
11834    """
11835
11836    _attribute_map = {
11837        'time_zone': {'key': 'timeZone', 'type': 'str'},
11838        'issqlcompression': {'key': 'issqlcompression', 'type': 'bool'},
11839        'is_compression': {'key': 'isCompression', 'type': 'bool'},
11840    }
11841
11842    def __init__(self, **kwargs):
11843        super(Settings, self).__init__(**kwargs)
11844        self.time_zone = kwargs.get('time_zone', None)
11845        self.issqlcompression = kwargs.get('issqlcompression', None)
11846        self.is_compression = kwargs.get('is_compression', None)
11847
11848
11849class SimpleRetentionPolicy(RetentionPolicy):
11850    """Simple policy retention.
11851
11852    All required parameters must be populated in order to send to Azure.
11853
11854    :param retention_policy_type: Required. Constant filled by server.
11855    :type retention_policy_type: str
11856    :param retention_duration: Retention duration of the protection policy.
11857    :type retention_duration:
11858     ~azure.mgmt.recoveryservicesbackup.models.RetentionDuration
11859    """
11860
11861    _validation = {
11862        'retention_policy_type': {'required': True},
11863    }
11864
11865    _attribute_map = {
11866        'retention_policy_type': {'key': 'retentionPolicyType', 'type': 'str'},
11867        'retention_duration': {'key': 'retentionDuration', 'type': 'RetentionDuration'},
11868    }
11869
11870    def __init__(self, **kwargs):
11871        super(SimpleRetentionPolicy, self).__init__(**kwargs)
11872        self.retention_duration = kwargs.get('retention_duration', None)
11873        self.retention_policy_type = 'SimpleRetentionPolicy'
11874
11875
11876class SimpleSchedulePolicy(SchedulePolicy):
11877    """Simple policy schedule.
11878
11879    All required parameters must be populated in order to send to Azure.
11880
11881    :param schedule_policy_type: Required. Constant filled by server.
11882    :type schedule_policy_type: str
11883    :param schedule_run_frequency: Frequency of the schedule operation of this
11884     policy. Possible values include: 'Invalid', 'Daily', 'Weekly'
11885    :type schedule_run_frequency: str or
11886     ~azure.mgmt.recoveryservicesbackup.models.ScheduleRunType
11887    :param schedule_run_days: List of days of week this schedule has to be
11888     run.
11889    :type schedule_run_days: list[str or
11890     ~azure.mgmt.recoveryservicesbackup.models.DayOfWeek]
11891    :param schedule_run_times: List of times of day this schedule has to be
11892     run.
11893    :type schedule_run_times: list[datetime]
11894    :param schedule_weekly_frequency: At every number weeks this schedule has
11895     to be run.
11896    :type schedule_weekly_frequency: int
11897    """
11898
11899    _validation = {
11900        'schedule_policy_type': {'required': True},
11901    }
11902
11903    _attribute_map = {
11904        'schedule_policy_type': {'key': 'schedulePolicyType', 'type': 'str'},
11905        'schedule_run_frequency': {'key': 'scheduleRunFrequency', 'type': 'str'},
11906        'schedule_run_days': {'key': 'scheduleRunDays', 'type': '[DayOfWeek]'},
11907        'schedule_run_times': {'key': 'scheduleRunTimes', 'type': '[iso-8601]'},
11908        'schedule_weekly_frequency': {'key': 'scheduleWeeklyFrequency', 'type': 'int'},
11909    }
11910
11911    def __init__(self, **kwargs):
11912        super(SimpleSchedulePolicy, self).__init__(**kwargs)
11913        self.schedule_run_frequency = kwargs.get('schedule_run_frequency', None)
11914        self.schedule_run_days = kwargs.get('schedule_run_days', None)
11915        self.schedule_run_times = kwargs.get('schedule_run_times', None)
11916        self.schedule_weekly_frequency = kwargs.get('schedule_weekly_frequency', None)
11917        self.schedule_policy_type = 'SimpleSchedulePolicy'
11918
11919
11920class SQLDataDirectory(Model):
11921    """SQLDataDirectory info.
11922
11923    :param type: Type of data directory mapping. Possible values include:
11924     'Invalid', 'Data', 'Log'
11925    :type type: str or
11926     ~azure.mgmt.recoveryservicesbackup.models.SQLDataDirectoryType
11927    :param path: File path
11928    :type path: str
11929    :param logical_name: Logical name of the file
11930    :type logical_name: str
11931    """
11932
11933    _attribute_map = {
11934        'type': {'key': 'type', 'type': 'str'},
11935        'path': {'key': 'path', 'type': 'str'},
11936        'logical_name': {'key': 'logicalName', 'type': 'str'},
11937    }
11938
11939    def __init__(self, **kwargs):
11940        super(SQLDataDirectory, self).__init__(**kwargs)
11941        self.type = kwargs.get('type', None)
11942        self.path = kwargs.get('path', None)
11943        self.logical_name = kwargs.get('logical_name', None)
11944
11945
11946class SQLDataDirectoryMapping(Model):
11947    """Encapsulates information regarding data directory.
11948
11949    :param mapping_type: Type of data directory mapping. Possible values
11950     include: 'Invalid', 'Data', 'Log'
11951    :type mapping_type: str or
11952     ~azure.mgmt.recoveryservicesbackup.models.SQLDataDirectoryType
11953    :param source_logical_name: Restore source logical name path
11954    :type source_logical_name: str
11955    :param source_path: Restore source path
11956    :type source_path: str
11957    :param target_path: Target path
11958    :type target_path: str
11959    """
11960
11961    _attribute_map = {
11962        'mapping_type': {'key': 'mappingType', 'type': 'str'},
11963        'source_logical_name': {'key': 'sourceLogicalName', 'type': 'str'},
11964        'source_path': {'key': 'sourcePath', 'type': 'str'},
11965        'target_path': {'key': 'targetPath', 'type': 'str'},
11966    }
11967
11968    def __init__(self, **kwargs):
11969        super(SQLDataDirectoryMapping, self).__init__(**kwargs)
11970        self.mapping_type = kwargs.get('mapping_type', None)
11971        self.source_logical_name = kwargs.get('source_logical_name', None)
11972        self.source_path = kwargs.get('source_path', None)
11973        self.target_path = kwargs.get('target_path', None)
11974
11975
11976class SubProtectionPolicy(Model):
11977    """Sub-protection policy which includes schedule and retention.
11978
11979    :param policy_type: Type of backup policy type. Possible values include:
11980     'Invalid', 'Full', 'Differential', 'Log', 'CopyOnlyFull', 'Incremental'
11981    :type policy_type: str or
11982     ~azure.mgmt.recoveryservicesbackup.models.PolicyType
11983    :param schedule_policy: Backup schedule specified as part of backup
11984     policy.
11985    :type schedule_policy:
11986     ~azure.mgmt.recoveryservicesbackup.models.SchedulePolicy
11987    :param retention_policy: Retention policy with the details on backup copy
11988     retention ranges.
11989    :type retention_policy:
11990     ~azure.mgmt.recoveryservicesbackup.models.RetentionPolicy
11991    """
11992
11993    _attribute_map = {
11994        'policy_type': {'key': 'policyType', 'type': 'str'},
11995        'schedule_policy': {'key': 'schedulePolicy', 'type': 'SchedulePolicy'},
11996        'retention_policy': {'key': 'retentionPolicy', 'type': 'RetentionPolicy'},
11997    }
11998
11999    def __init__(self, **kwargs):
12000        super(SubProtectionPolicy, self).__init__(**kwargs)
12001        self.policy_type = kwargs.get('policy_type', None)
12002        self.schedule_policy = kwargs.get('schedule_policy', None)
12003        self.retention_policy = kwargs.get('retention_policy', None)
12004
12005
12006class TargetAFSRestoreInfo(Model):
12007    """Target Azure File Share Info.
12008
12009    :param name: File share name
12010    :type name: str
12011    :param target_resource_id: Target file share resource ARM ID
12012    :type target_resource_id: str
12013    """
12014
12015    _attribute_map = {
12016        'name': {'key': 'name', 'type': 'str'},
12017        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
12018    }
12019
12020    def __init__(self, **kwargs):
12021        super(TargetAFSRestoreInfo, self).__init__(**kwargs)
12022        self.name = kwargs.get('name', None)
12023        self.target_resource_id = kwargs.get('target_resource_id', None)
12024
12025
12026class TargetRestoreInfo(Model):
12027    """Details about target workload during restore operation.
12028
12029    :param overwrite_option: Can Overwrite if Target DataBase already exists.
12030     Possible values include: 'Invalid', 'FailOnConflict', 'Overwrite'
12031    :type overwrite_option: str or
12032     ~azure.mgmt.recoveryservicesbackup.models.OverwriteOptions
12033    :param container_id: Resource Id name of the container in which Target
12034     DataBase resides
12035    :type container_id: str
12036    :param database_name: Database name InstanceName/DataBaseName for SQL or
12037     System/DbName for SAP Hana
12038    :type database_name: str
12039    :param target_directory_for_file_restore: Target directory location for
12040     restore as files.
12041    :type target_directory_for_file_restore: str
12042    """
12043
12044    _attribute_map = {
12045        'overwrite_option': {'key': 'overwriteOption', 'type': 'str'},
12046        'container_id': {'key': 'containerId', 'type': 'str'},
12047        'database_name': {'key': 'databaseName', 'type': 'str'},
12048        'target_directory_for_file_restore': {'key': 'targetDirectoryForFileRestore', 'type': 'str'},
12049    }
12050
12051    def __init__(self, **kwargs):
12052        super(TargetRestoreInfo, self).__init__(**kwargs)
12053        self.overwrite_option = kwargs.get('overwrite_option', None)
12054        self.container_id = kwargs.get('container_id', None)
12055        self.database_name = kwargs.get('database_name', None)
12056        self.target_directory_for_file_restore = kwargs.get('target_directory_for_file_restore', None)
12057
12058
12059class TokenInformation(Model):
12060    """The token information details.
12061
12062    :param token: Token value.
12063    :type token: str
12064    :param expiry_time_in_utc_ticks: Expiry time of token.
12065    :type expiry_time_in_utc_ticks: long
12066    :param security_pin: Security PIN
12067    :type security_pin: str
12068    """
12069
12070    _attribute_map = {
12071        'token': {'key': 'token', 'type': 'str'},
12072        'expiry_time_in_utc_ticks': {'key': 'expiryTimeInUtcTicks', 'type': 'long'},
12073        'security_pin': {'key': 'securityPIN', 'type': 'str'},
12074    }
12075
12076    def __init__(self, **kwargs):
12077        super(TokenInformation, self).__init__(**kwargs)
12078        self.token = kwargs.get('token', None)
12079        self.expiry_time_in_utc_ticks = kwargs.get('expiry_time_in_utc_ticks', None)
12080        self.security_pin = kwargs.get('security_pin', None)
12081
12082
12083class TriggerDataMoveRequest(Model):
12084    """Trigger DataMove Request.
12085
12086    All required parameters must be populated in order to send to Azure.
12087
12088    :param source_resource_id: Required. ARM Id of source vault
12089    :type source_resource_id: str
12090    :param source_region: Required. Source Region
12091    :type source_region: str
12092    :param data_move_level: Required. DataMove Level. Possible values include:
12093     'Invalid', 'Vault', 'Container'
12094    :type data_move_level: str or
12095     ~azure.mgmt.recoveryservicesbackup.models.DataMoveLevel
12096    :param correlation_id: Required. Correlation Id
12097    :type correlation_id: str
12098    :param source_container_arm_ids: Source Container ArmIds
12099    :type source_container_arm_ids: list[str]
12100    :param pause_gc: Pause GC
12101    :type pause_gc: bool
12102    """
12103
12104    _validation = {
12105        'source_resource_id': {'required': True},
12106        'source_region': {'required': True},
12107        'data_move_level': {'required': True},
12108        'correlation_id': {'required': True},
12109    }
12110
12111    _attribute_map = {
12112        'source_resource_id': {'key': 'sourceResourceId', 'type': 'str'},
12113        'source_region': {'key': 'sourceRegion', 'type': 'str'},
12114        'data_move_level': {'key': 'dataMoveLevel', 'type': 'str'},
12115        'correlation_id': {'key': 'correlationId', 'type': 'str'},
12116        'source_container_arm_ids': {'key': 'sourceContainerArmIds', 'type': '[str]'},
12117        'pause_gc': {'key': 'pauseGC', 'type': 'bool'},
12118    }
12119
12120    def __init__(self, **kwargs):
12121        super(TriggerDataMoveRequest, self).__init__(**kwargs)
12122        self.source_resource_id = kwargs.get('source_resource_id', None)
12123        self.source_region = kwargs.get('source_region', None)
12124        self.data_move_level = kwargs.get('data_move_level', None)
12125        self.correlation_id = kwargs.get('correlation_id', None)
12126        self.source_container_arm_ids = kwargs.get('source_container_arm_ids', None)
12127        self.pause_gc = kwargs.get('pause_gc', None)
12128
12129
12130class UnlockDeleteRequest(Model):
12131    """Request body of unlock delete API.
12132
12133    :param resource_guard_operation_requests:
12134    :type resource_guard_operation_requests: list[str]
12135    :param resource_to_be_deleted:
12136    :type resource_to_be_deleted: str
12137    """
12138
12139    _attribute_map = {
12140        'resource_guard_operation_requests': {'key': 'resourceGuardOperationRequests', 'type': '[str]'},
12141        'resource_to_be_deleted': {'key': 'resourceToBeDeleted', 'type': 'str'},
12142    }
12143
12144    def __init__(self, **kwargs):
12145        super(UnlockDeleteRequest, self).__init__(**kwargs)
12146        self.resource_guard_operation_requests = kwargs.get('resource_guard_operation_requests', None)
12147        self.resource_to_be_deleted = kwargs.get('resource_to_be_deleted', None)
12148
12149
12150class UnlockDeleteResponse(Model):
12151    """Response of Unlock Delete API.
12152
12153    :param unlock_delete_expiry_time: This is the time when unlock delete
12154     privileges will get expired.
12155    :type unlock_delete_expiry_time: str
12156    """
12157
12158    _attribute_map = {
12159        'unlock_delete_expiry_time': {'key': 'unlockDeleteExpiryTime', 'type': 'str'},
12160    }
12161
12162    def __init__(self, **kwargs):
12163        super(UnlockDeleteResponse, self).__init__(**kwargs)
12164        self.unlock_delete_expiry_time = kwargs.get('unlock_delete_expiry_time', None)
12165
12166
12167class ValidateOperationRequest(Model):
12168    """Base class for validate operation request.
12169
12170    You probably want to use the sub-classes and not this class directly. Known
12171    sub-classes are: ValidateRestoreOperationRequest
12172
12173    All required parameters must be populated in order to send to Azure.
12174
12175    :param object_type: Required. Constant filled by server.
12176    :type object_type: str
12177    """
12178
12179    _validation = {
12180        'object_type': {'required': True},
12181    }
12182
12183    _attribute_map = {
12184        'object_type': {'key': 'objectType', 'type': 'str'},
12185    }
12186
12187    _subtype_map = {
12188        'object_type': {'ValidateRestoreOperationRequest': 'ValidateRestoreOperationRequest'}
12189    }
12190
12191    def __init__(self, **kwargs):
12192        super(ValidateOperationRequest, self).__init__(**kwargs)
12193        self.object_type = None
12194
12195
12196class ValidateRestoreOperationRequest(ValidateOperationRequest):
12197    """AzureRestoreValidation request.
12198
12199    You probably want to use the sub-classes and not this class directly. Known
12200    sub-classes are: ValidateIaasVMRestoreOperationRequest
12201
12202    All required parameters must be populated in order to send to Azure.
12203
12204    :param object_type: Required. Constant filled by server.
12205    :type object_type: str
12206    :param restore_request: Sets restore request to be validated
12207    :type restore_request:
12208     ~azure.mgmt.recoveryservicesbackup.models.RestoreRequest
12209    """
12210
12211    _validation = {
12212        'object_type': {'required': True},
12213    }
12214
12215    _attribute_map = {
12216        'object_type': {'key': 'objectType', 'type': 'str'},
12217        'restore_request': {'key': 'restoreRequest', 'type': 'RestoreRequest'},
12218    }
12219
12220    _subtype_map = {
12221        'object_type': {'ValidateIaasVMRestoreOperationRequest': 'ValidateIaasVMRestoreOperationRequest'}
12222    }
12223
12224    def __init__(self, **kwargs):
12225        super(ValidateRestoreOperationRequest, self).__init__(**kwargs)
12226        self.restore_request = kwargs.get('restore_request', None)
12227        self.object_type = 'ValidateRestoreOperationRequest'
12228
12229
12230class ValidateIaasVMRestoreOperationRequest(ValidateRestoreOperationRequest):
12231    """AzureRestoreValidation request.
12232
12233    All required parameters must be populated in order to send to Azure.
12234
12235    :param object_type: Required. Constant filled by server.
12236    :type object_type: str
12237    :param restore_request: Sets restore request to be validated
12238    :type restore_request:
12239     ~azure.mgmt.recoveryservicesbackup.models.RestoreRequest
12240    """
12241
12242    _validation = {
12243        'object_type': {'required': True},
12244    }
12245
12246    _attribute_map = {
12247        'object_type': {'key': 'objectType', 'type': 'str'},
12248        'restore_request': {'key': 'restoreRequest', 'type': 'RestoreRequest'},
12249    }
12250
12251    def __init__(self, **kwargs):
12252        super(ValidateIaasVMRestoreOperationRequest, self).__init__(**kwargs)
12253        self.object_type = 'ValidateIaasVMRestoreOperationRequest'
12254
12255
12256class ValidateOperationResponse(Model):
12257    """Base class for validate operation response.
12258
12259    :param validation_results: Gets the validation result
12260    :type validation_results:
12261     list[~azure.mgmt.recoveryservicesbackup.models.ErrorDetail]
12262    """
12263
12264    _attribute_map = {
12265        'validation_results': {'key': 'validationResults', 'type': '[ErrorDetail]'},
12266    }
12267
12268    def __init__(self, **kwargs):
12269        super(ValidateOperationResponse, self).__init__(**kwargs)
12270        self.validation_results = kwargs.get('validation_results', None)
12271
12272
12273class ValidateOperationsResponse(Model):
12274    """ValidateOperationsResponse.
12275
12276    :param validate_operation_response:
12277    :type validate_operation_response:
12278     ~azure.mgmt.recoveryservicesbackup.models.ValidateOperationResponse
12279    """
12280
12281    _attribute_map = {
12282        'validate_operation_response': {'key': 'validateOperationResponse', 'type': 'ValidateOperationResponse'},
12283    }
12284
12285    def __init__(self, **kwargs):
12286        super(ValidateOperationsResponse, self).__init__(**kwargs)
12287        self.validate_operation_response = kwargs.get('validate_operation_response', None)
12288
12289
12290class VaultJob(Job):
12291    """Vault level Job.
12292
12293    All required parameters must be populated in order to send to Azure.
12294
12295    :param entity_friendly_name: Friendly name of the entity on which the
12296     current job is executing.
12297    :type entity_friendly_name: str
12298    :param backup_management_type: Backup management type to execute the
12299     current job. Possible values include: 'Invalid', 'AzureIaasVM', 'MAB',
12300     'DPM', 'AzureBackupServer', 'AzureSql', 'AzureStorage', 'AzureWorkload',
12301     'DefaultBackup'
12302    :type backup_management_type: str or
12303     ~azure.mgmt.recoveryservicesbackup.models.BackupManagementType
12304    :param operation: The operation name.
12305    :type operation: str
12306    :param status: Job status.
12307    :type status: str
12308    :param start_time: The start time.
12309    :type start_time: datetime
12310    :param end_time: The end time.
12311    :type end_time: datetime
12312    :param activity_id: ActivityId of job.
12313    :type activity_id: str
12314    :param job_type: Required. Constant filled by server.
12315    :type job_type: str
12316    :param duration: Time elapsed during the execution of this job.
12317    :type duration: timedelta
12318    :param actions_info: Gets or sets the state/actions applicable on this job
12319     like cancel/retry.
12320    :type actions_info: list[str or
12321     ~azure.mgmt.recoveryservicesbackup.models.JobSupportedAction]
12322    :param error_details: Error details on execution of this job.
12323    :type error_details:
12324     list[~azure.mgmt.recoveryservicesbackup.models.VaultJobErrorInfo]
12325    :param extended_info: Additional information about the job.
12326    :type extended_info:
12327     ~azure.mgmt.recoveryservicesbackup.models.VaultJobExtendedInfo
12328    """
12329
12330    _validation = {
12331        'job_type': {'required': True},
12332    }
12333
12334    _attribute_map = {
12335        'entity_friendly_name': {'key': 'entityFriendlyName', 'type': 'str'},
12336        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
12337        'operation': {'key': 'operation', 'type': 'str'},
12338        'status': {'key': 'status', 'type': 'str'},
12339        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
12340        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
12341        'activity_id': {'key': 'activityId', 'type': 'str'},
12342        'job_type': {'key': 'jobType', 'type': 'str'},
12343        'duration': {'key': 'duration', 'type': 'duration'},
12344        'actions_info': {'key': 'actionsInfo', 'type': '[JobSupportedAction]'},
12345        'error_details': {'key': 'errorDetails', 'type': '[VaultJobErrorInfo]'},
12346        'extended_info': {'key': 'extendedInfo', 'type': 'VaultJobExtendedInfo'},
12347    }
12348
12349    def __init__(self, **kwargs):
12350        super(VaultJob, self).__init__(**kwargs)
12351        self.duration = kwargs.get('duration', None)
12352        self.actions_info = kwargs.get('actions_info', None)
12353        self.error_details = kwargs.get('error_details', None)
12354        self.extended_info = kwargs.get('extended_info', None)
12355        self.job_type = 'VaultJob'
12356
12357
12358class VaultJobErrorInfo(Model):
12359    """Vault Job specific error information.
12360
12361    :param error_code: Error code.
12362    :type error_code: int
12363    :param error_string: Localized error string.
12364    :type error_string: str
12365    :param recommendations: List of localized recommendations for above error
12366     code.
12367    :type recommendations: list[str]
12368    """
12369
12370    _attribute_map = {
12371        'error_code': {'key': 'errorCode', 'type': 'int'},
12372        'error_string': {'key': 'errorString', 'type': 'str'},
12373        'recommendations': {'key': 'recommendations', 'type': '[str]'},
12374    }
12375
12376    def __init__(self, **kwargs):
12377        super(VaultJobErrorInfo, self).__init__(**kwargs)
12378        self.error_code = kwargs.get('error_code', None)
12379        self.error_string = kwargs.get('error_string', None)
12380        self.recommendations = kwargs.get('recommendations', None)
12381
12382
12383class VaultJobExtendedInfo(Model):
12384    """Vault Job for CMK - has CMK specific info.
12385
12386    :param property_bag: Job properties.
12387    :type property_bag: dict[str, str]
12388    """
12389
12390    _attribute_map = {
12391        'property_bag': {'key': 'propertyBag', 'type': '{str}'},
12392    }
12393
12394    def __init__(self, **kwargs):
12395        super(VaultJobExtendedInfo, self).__init__(**kwargs)
12396        self.property_bag = kwargs.get('property_bag', None)
12397
12398
12399class WeeklyRetentionFormat(Model):
12400    """Weekly retention format.
12401
12402    :param days_of_the_week: List of days of the week.
12403    :type days_of_the_week: list[str or
12404     ~azure.mgmt.recoveryservicesbackup.models.DayOfWeek]
12405    :param weeks_of_the_month: List of weeks of month.
12406    :type weeks_of_the_month: list[str or
12407     ~azure.mgmt.recoveryservicesbackup.models.WeekOfMonth]
12408    """
12409
12410    _attribute_map = {
12411        'days_of_the_week': {'key': 'daysOfTheWeek', 'type': '[DayOfWeek]'},
12412        'weeks_of_the_month': {'key': 'weeksOfTheMonth', 'type': '[WeekOfMonth]'},
12413    }
12414
12415    def __init__(self, **kwargs):
12416        super(WeeklyRetentionFormat, self).__init__(**kwargs)
12417        self.days_of_the_week = kwargs.get('days_of_the_week', None)
12418        self.weeks_of_the_month = kwargs.get('weeks_of_the_month', None)
12419
12420
12421class WeeklyRetentionSchedule(Model):
12422    """Weekly retention schedule.
12423
12424    :param days_of_the_week: List of days of week for weekly retention policy.
12425    :type days_of_the_week: list[str or
12426     ~azure.mgmt.recoveryservicesbackup.models.DayOfWeek]
12427    :param retention_times: Retention times of retention policy.
12428    :type retention_times: list[datetime]
12429    :param retention_duration: Retention duration of retention Policy.
12430    :type retention_duration:
12431     ~azure.mgmt.recoveryservicesbackup.models.RetentionDuration
12432    """
12433
12434    _attribute_map = {
12435        'days_of_the_week': {'key': 'daysOfTheWeek', 'type': '[DayOfWeek]'},
12436        'retention_times': {'key': 'retentionTimes', 'type': '[iso-8601]'},
12437        'retention_duration': {'key': 'retentionDuration', 'type': 'RetentionDuration'},
12438    }
12439
12440    def __init__(self, **kwargs):
12441        super(WeeklyRetentionSchedule, self).__init__(**kwargs)
12442        self.days_of_the_week = kwargs.get('days_of_the_week', None)
12443        self.retention_times = kwargs.get('retention_times', None)
12444        self.retention_duration = kwargs.get('retention_duration', None)
12445
12446
12447class WorkloadCrrAccessToken(CrrAccessToken):
12448    """WorkloadCrrAccessToken.
12449
12450    All required parameters must be populated in order to send to Azure.
12451
12452    :param access_token_string: Access token used for authentication
12453    :type access_token_string: str
12454    :param subscription_id: Subscription Id of the source vault
12455    :type subscription_id: str
12456    :param resource_group_name: Resource Group name of the source vault
12457    :type resource_group_name: str
12458    :param resource_name: Resource Name of the source vault
12459    :type resource_name: str
12460    :param resource_id: Resource Id of the source vault
12461    :type resource_id: str
12462    :param protection_container_id: Protected item container id
12463    :type protection_container_id: long
12464    :param recovery_point_id: Recovery Point Id
12465    :type recovery_point_id: str
12466    :param recovery_point_time: Recovery Point Time
12467    :type recovery_point_time: str
12468    :param container_name: Container Unique name
12469    :type container_name: str
12470    :param container_type: Container Type
12471    :type container_type: str
12472    :param backup_management_type: Backup Management Type
12473    :type backup_management_type: str
12474    :param datasource_type: Datasource Type
12475    :type datasource_type: str
12476    :param datasource_name: Datasource Friendly Name
12477    :type datasource_name: str
12478    :param datasource_id: Datasource Id
12479    :type datasource_id: str
12480    :param datasource_container_name: Datasource Container Unique Name
12481    :type datasource_container_name: str
12482    :param coordinator_service_stamp_id: CoordinatorServiceStampId to be used
12483     by BCM in restore call
12484    :type coordinator_service_stamp_id: str
12485    :param coordinator_service_stamp_uri: CoordinatorServiceStampUri to be
12486     used by BCM in restore call
12487    :type coordinator_service_stamp_uri: str
12488    :param protection_service_stamp_id: ProtectionServiceStampId to be used by
12489     BCM in restore call
12490    :type protection_service_stamp_id: str
12491    :param protection_service_stamp_uri: ProtectionServiceStampUri to be used
12492     by BCM in restore call
12493    :type protection_service_stamp_uri: str
12494    :param token_extended_information: Extended Information about the token
12495     like FileSpec etc.
12496    :type token_extended_information: str
12497    :param rp_tier_information: Recovery point Tier Information
12498    :type rp_tier_information: dict[str, str]
12499    :param rp_original_sa_option: Recovery point information: Original SA
12500     option
12501    :type rp_original_sa_option: bool
12502    :param rp_is_managed_virtual_machine: Recovery point information: Managed
12503     virtual machine
12504    :type rp_is_managed_virtual_machine: bool
12505    :param rp_vm_size_description: Recovery point information: VM size
12506     description
12507    :type rp_vm_size_description: str
12508    :param b_ms_active_region: Active region name of BMS Stamp
12509    :type b_ms_active_region: str
12510    :param object_type: Required. Constant filled by server.
12511    :type object_type: str
12512    :param protectable_object_unique_name:
12513    :type protectable_object_unique_name: str
12514    :param protectable_object_friendly_name:
12515    :type protectable_object_friendly_name: str
12516    :param protectable_object_workload_type:
12517    :type protectable_object_workload_type: str
12518    :param protectable_object_protection_state:
12519    :type protectable_object_protection_state: str
12520    :param protectable_object_container_host_os_name:
12521    :type protectable_object_container_host_os_name: str
12522    :param protectable_object_parent_logical_container_name:
12523    :type protectable_object_parent_logical_container_name: str
12524    :param container_id: Container Id
12525    :type container_id: str
12526    :param policy_name: Policy Name
12527    :type policy_name: str
12528    :param policy_id: Policy Id
12529    :type policy_id: str
12530    """
12531
12532    _validation = {
12533        'object_type': {'required': True},
12534    }
12535
12536    _attribute_map = {
12537        'access_token_string': {'key': 'accessTokenString', 'type': 'str'},
12538        'subscription_id': {'key': 'subscriptionId', 'type': 'str'},
12539        'resource_group_name': {'key': 'resourceGroupName', 'type': 'str'},
12540        'resource_name': {'key': 'resourceName', 'type': 'str'},
12541        'resource_id': {'key': 'resourceId', 'type': 'str'},
12542        'protection_container_id': {'key': 'protectionContainerId', 'type': 'long'},
12543        'recovery_point_id': {'key': 'recoveryPointId', 'type': 'str'},
12544        'recovery_point_time': {'key': 'recoveryPointTime', 'type': 'str'},
12545        'container_name': {'key': 'containerName', 'type': 'str'},
12546        'container_type': {'key': 'containerType', 'type': 'str'},
12547        'backup_management_type': {'key': 'backupManagementType', 'type': 'str'},
12548        'datasource_type': {'key': 'datasourceType', 'type': 'str'},
12549        'datasource_name': {'key': 'datasourceName', 'type': 'str'},
12550        'datasource_id': {'key': 'datasourceId', 'type': 'str'},
12551        'datasource_container_name': {'key': 'datasourceContainerName', 'type': 'str'},
12552        'coordinator_service_stamp_id': {'key': 'coordinatorServiceStampId', 'type': 'str'},
12553        'coordinator_service_stamp_uri': {'key': 'coordinatorServiceStampUri', 'type': 'str'},
12554        'protection_service_stamp_id': {'key': 'protectionServiceStampId', 'type': 'str'},
12555        'protection_service_stamp_uri': {'key': 'protectionServiceStampUri', 'type': 'str'},
12556        'token_extended_information': {'key': 'tokenExtendedInformation', 'type': 'str'},
12557        'rp_tier_information': {'key': 'rpTierInformation', 'type': '{str}'},
12558        'rp_original_sa_option': {'key': 'rpOriginalSAOption', 'type': 'bool'},
12559        'rp_is_managed_virtual_machine': {'key': 'rpIsManagedVirtualMachine', 'type': 'bool'},
12560        'rp_vm_size_description': {'key': 'rpVMSizeDescription', 'type': 'str'},
12561        'b_ms_active_region': {'key': 'bMSActiveRegion', 'type': 'str'},
12562        'object_type': {'key': 'objectType', 'type': 'str'},
12563        'protectable_object_unique_name': {'key': 'protectableObjectUniqueName', 'type': 'str'},
12564        'protectable_object_friendly_name': {'key': 'protectableObjectFriendlyName', 'type': 'str'},
12565        'protectable_object_workload_type': {'key': 'protectableObjectWorkloadType', 'type': 'str'},
12566        'protectable_object_protection_state': {'key': 'protectableObjectProtectionState', 'type': 'str'},
12567        'protectable_object_container_host_os_name': {'key': 'protectableObjectContainerHostOsName', 'type': 'str'},
12568        'protectable_object_parent_logical_container_name': {'key': 'protectableObjectParentLogicalContainerName', 'type': 'str'},
12569        'container_id': {'key': 'containerId', 'type': 'str'},
12570        'policy_name': {'key': 'policyName', 'type': 'str'},
12571        'policy_id': {'key': 'policyId', 'type': 'str'},
12572    }
12573
12574    def __init__(self, **kwargs):
12575        super(WorkloadCrrAccessToken, self).__init__(**kwargs)
12576        self.protectable_object_unique_name = kwargs.get('protectable_object_unique_name', None)
12577        self.protectable_object_friendly_name = kwargs.get('protectable_object_friendly_name', None)
12578        self.protectable_object_workload_type = kwargs.get('protectable_object_workload_type', None)
12579        self.protectable_object_protection_state = kwargs.get('protectable_object_protection_state', None)
12580        self.protectable_object_container_host_os_name = kwargs.get('protectable_object_container_host_os_name', None)
12581        self.protectable_object_parent_logical_container_name = kwargs.get('protectable_object_parent_logical_container_name', None)
12582        self.container_id = kwargs.get('container_id', None)
12583        self.policy_name = kwargs.get('policy_name', None)
12584        self.policy_id = kwargs.get('policy_id', None)
12585        self.object_type = 'WorkloadCrrAccessToken'
12586
12587
12588class WorkloadInquiryDetails(Model):
12589    """Details of an inquired protectable item.
12590
12591    :param type: Type of the Workload such as SQL, Oracle etc.
12592    :type type: str
12593    :param item_count: Contains the protectable item Count inside this
12594     Container.
12595    :type item_count: long
12596    :param inquiry_validation: Inquiry validation such as permissions and
12597     other backup validations.
12598    :type inquiry_validation:
12599     ~azure.mgmt.recoveryservicesbackup.models.InquiryValidation
12600    """
12601
12602    _attribute_map = {
12603        'type': {'key': 'type', 'type': 'str'},
12604        'item_count': {'key': 'itemCount', 'type': 'long'},
12605        'inquiry_validation': {'key': 'inquiryValidation', 'type': 'InquiryValidation'},
12606    }
12607
12608    def __init__(self, **kwargs):
12609        super(WorkloadInquiryDetails, self).__init__(**kwargs)
12610        self.type = kwargs.get('type', None)
12611        self.item_count = kwargs.get('item_count', None)
12612        self.inquiry_validation = kwargs.get('inquiry_validation', None)
12613
12614
12615class WorkloadItemResource(Resource):
12616    """Base class for backup item. Workload-specific backup items are derived from
12617    this class.
12618
12619    Variables are only populated by the server, and will be ignored when
12620    sending a request.
12621
12622    :ivar id: Resource Id represents the complete path to the resource.
12623    :vartype id: str
12624    :ivar name: Resource name associated with the resource.
12625    :vartype name: str
12626    :ivar type: Resource type represents the complete path of the form
12627     Namespace/ResourceType/ResourceType/...
12628    :vartype type: str
12629    :param location: Resource location.
12630    :type location: str
12631    :param tags: Resource tags.
12632    :type tags: dict[str, str]
12633    :param e_tag: Optional ETag.
12634    :type e_tag: str
12635    :param properties: WorkloadItemResource properties
12636    :type properties: ~azure.mgmt.recoveryservicesbackup.models.WorkloadItem
12637    """
12638
12639    _validation = {
12640        'id': {'readonly': True},
12641        'name': {'readonly': True},
12642        'type': {'readonly': True},
12643    }
12644
12645    _attribute_map = {
12646        'id': {'key': 'id', 'type': 'str'},
12647        'name': {'key': 'name', 'type': 'str'},
12648        'type': {'key': 'type', 'type': 'str'},
12649        'location': {'key': 'location', 'type': 'str'},
12650        'tags': {'key': 'tags', 'type': '{str}'},
12651        'e_tag': {'key': 'eTag', 'type': 'str'},
12652        'properties': {'key': 'properties', 'type': 'WorkloadItem'},
12653    }
12654
12655    def __init__(self, **kwargs):
12656        super(WorkloadItemResource, self).__init__(**kwargs)
12657        self.properties = kwargs.get('properties', None)
12658
12659
12660class WorkloadProtectableItemResource(Resource):
12661    """Base class for backup item. Workload-specific backup items are derived from
12662    this class.
12663
12664    Variables are only populated by the server, and will be ignored when
12665    sending a request.
12666
12667    :ivar id: Resource Id represents the complete path to the resource.
12668    :vartype id: str
12669    :ivar name: Resource name associated with the resource.
12670    :vartype name: str
12671    :ivar type: Resource type represents the complete path of the form
12672     Namespace/ResourceType/ResourceType/...
12673    :vartype type: str
12674    :param location: Resource location.
12675    :type location: str
12676    :param tags: Resource tags.
12677    :type tags: dict[str, str]
12678    :param e_tag: Optional ETag.
12679    :type e_tag: str
12680    :param properties: WorkloadProtectableItemResource properties
12681    :type properties:
12682     ~azure.mgmt.recoveryservicesbackup.models.WorkloadProtectableItem
12683    """
12684
12685    _validation = {
12686        'id': {'readonly': True},
12687        'name': {'readonly': True},
12688        'type': {'readonly': True},
12689    }
12690
12691    _attribute_map = {
12692        'id': {'key': 'id', 'type': 'str'},
12693        'name': {'key': 'name', 'type': 'str'},
12694        'type': {'key': 'type', 'type': 'str'},
12695        'location': {'key': 'location', 'type': 'str'},
12696        'tags': {'key': 'tags', 'type': '{str}'},
12697        'e_tag': {'key': 'eTag', 'type': 'str'},
12698        'properties': {'key': 'properties', 'type': 'WorkloadProtectableItem'},
12699    }
12700
12701    def __init__(self, **kwargs):
12702        super(WorkloadProtectableItemResource, self).__init__(**kwargs)
12703        self.properties = kwargs.get('properties', None)
12704
12705
12706class YearlyRetentionSchedule(Model):
12707    """Yearly retention schedule.
12708
12709    :param retention_schedule_format_type: Retention schedule format for
12710     yearly retention policy. Possible values include: 'Invalid', 'Daily',
12711     'Weekly'
12712    :type retention_schedule_format_type: str or
12713     ~azure.mgmt.recoveryservicesbackup.models.RetentionScheduleFormat
12714    :param months_of_year: List of months of year of yearly retention policy.
12715    :type months_of_year: list[str or
12716     ~azure.mgmt.recoveryservicesbackup.models.MonthOfYear]
12717    :param retention_schedule_daily: Daily retention format for yearly
12718     retention policy.
12719    :type retention_schedule_daily:
12720     ~azure.mgmt.recoveryservicesbackup.models.DailyRetentionFormat
12721    :param retention_schedule_weekly: Weekly retention format for yearly
12722     retention policy.
12723    :type retention_schedule_weekly:
12724     ~azure.mgmt.recoveryservicesbackup.models.WeeklyRetentionFormat
12725    :param retention_times: Retention times of retention policy.
12726    :type retention_times: list[datetime]
12727    :param retention_duration: Retention duration of retention Policy.
12728    :type retention_duration:
12729     ~azure.mgmt.recoveryservicesbackup.models.RetentionDuration
12730    """
12731
12732    _attribute_map = {
12733        'retention_schedule_format_type': {'key': 'retentionScheduleFormatType', 'type': 'str'},
12734        'months_of_year': {'key': 'monthsOfYear', 'type': '[MonthOfYear]'},
12735        'retention_schedule_daily': {'key': 'retentionScheduleDaily', 'type': 'DailyRetentionFormat'},
12736        'retention_schedule_weekly': {'key': 'retentionScheduleWeekly', 'type': 'WeeklyRetentionFormat'},
12737        'retention_times': {'key': 'retentionTimes', 'type': '[iso-8601]'},
12738        'retention_duration': {'key': 'retentionDuration', 'type': 'RetentionDuration'},
12739    }
12740
12741    def __init__(self, **kwargs):
12742        super(YearlyRetentionSchedule, self).__init__(**kwargs)
12743        self.retention_schedule_format_type = kwargs.get('retention_schedule_format_type', None)
12744        self.months_of_year = kwargs.get('months_of_year', None)
12745        self.retention_schedule_daily = kwargs.get('retention_schedule_daily', None)
12746        self.retention_schedule_weekly = kwargs.get('retention_schedule_weekly', None)
12747        self.retention_times = kwargs.get('retention_times', None)
12748        self.retention_duration = kwargs.get('retention_duration', None)
12749