# -*- coding: utf-8 -*-
# Copyright 2021 Cohesity Inc.
import cohesity_management_sdk.models.remote_restore_indexing_status
import cohesity_management_sdk.models.remote_restore_snapshot_status
import cohesity_management_sdk.models.universal_id
import cohesity_management_sdk.models.remote_protection_job_information
[docs]class RemoteVaultRestoreTaskStatus(object):
    """Implementation of the 'RemoteVaultRestoreTaskStatus' model.
    Specifies the status of a remote Vault restore task.
    Attributes:
        current_indexing_status (RemoteRestoreIndexingStatus): Specifies the
            status of an indexing task that builds an index from the
            Protection Job metadata retrieved from the remote Vault. The index
            contains information about Job Runs (Snapshots) for a Protection
            Job and is required to restore Snapshots to this local Cluster.
        current_snapshot_status (RemoteRestoreSnapshotStatus): Specifies the
            status of the Snapshot restore task. The Snapshot restore task
            restores the specified archived Snapshots from a remote Vault to
            this Cluster.
        local_protection_job_uid (UniversalId): Specifies the globally unique
            id of the new inactive Protection Job created on the local Cluster
            as part of the restoration of archived data.
        parent_job_uid (UniversalId): Specifies the unique id of the parent
            Job/task that spawned the indexing and Snapshot restore tasks.
        remote_protection_job_information (RemoteProtectionJobInformation):
            Specifies details about the original Protection Job and its
            Snapshots, that were archived to a remote Vault.
        search_job_uid (UniversalId): Specifies the unique id of the search
            Job that searched the remote Vault.
    """
    # Create a mapping from Model property names to API property names
    _names = {
        "current_indexing_status":'currentIndexingStatus',
        "current_snapshot_status":'currentSnapshotStatus',
        "local_protection_job_uid":'localProtectionJobUid',
        "parent_job_uid":'parentJobUid',
        "remote_protection_job_information":'remoteProtectionJobInformation',
        "search_job_uid":'searchJobUid'
    }
    def __init__(self,
                 current_indexing_status=None,
                 current_snapshot_status=None,
                 local_protection_job_uid=None,
                 parent_job_uid=None,
                 remote_protection_job_information=None,
                 search_job_uid=None):
        """Constructor for the RemoteVaultRestoreTaskStatus class"""
        # Initialize members of the class
        self.current_indexing_status = current_indexing_status
        self.current_snapshot_status = current_snapshot_status
        self.local_protection_job_uid = local_protection_job_uid
        self.parent_job_uid = parent_job_uid
        self.remote_protection_job_information = remote_protection_job_information
        self.search_job_uid = search_job_uid
[docs]    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Creates an instance of this model from a dictionary
        Args:
            dictionary (dictionary): A dictionary representation of the object as
            obtained from the deserialization of the server's response. The keys
            MUST match property names in the API description.
        Returns:
            object: An instance of this structure class.
        """
        if dictionary is None:
            return None
        # Extract variables from the dictionary
        current_indexing_status = cohesity_management_sdk.models.remote_restore_indexing_status.RemoteRestoreIndexingStatus.from_dictionary(dictionary.get('currentIndexingStatus')) if dictionary.get('currentIndexingStatus') else None
        current_snapshot_status = cohesity_management_sdk.models.remote_restore_snapshot_status.RemoteRestoreSnapshotStatus.from_dictionary(dictionary.get('currentSnapshotStatus')) if dictionary.get('currentSnapshotStatus') else None
        local_protection_job_uid = cohesity_management_sdk.models.universal_id.UniversalId.from_dictionary(dictionary.get('localProtectionJobUid')) if dictionary.get('localProtectionJobUid') else None
        parent_job_uid = cohesity_management_sdk.models.universal_id.UniversalId.from_dictionary(dictionary.get('parentJobUid')) if dictionary.get('parentJobUid') else None
        remote_protection_job_information = cohesity_management_sdk.models.remote_protection_job_information.RemoteProtectionJobInformation.from_dictionary(dictionary.get('remoteProtectionJobInformation')) if dictionary.get('remoteProtectionJobInformation') else None
        search_job_uid = cohesity_management_sdk.models.universal_id.UniversalId.from_dictionary(dictionary.get('searchJobUid')) if dictionary.get('searchJobUid') else None
        # Return an object of this model
        return cls(current_indexing_status,
                   current_snapshot_status,
                   local_protection_job_uid,
                   parent_job_uid,
                   remote_protection_job_information,
                   search_job_uid)