Module cvpysdk.recovery_targets

Main file for performing Recovery Target specific operations.

RecoveryTargets and RecoveryTarget are 2 classes defined in this file.

RecoveryTargets: Class for representing all the recovery targets

RecoveryTarget: Class for a single recovery target selected, and to perform operations on that recovery target

Recoverytargets

init() – initialize object of RecoveryTargets class

str() – returns all the Recovery Targets

_get_recovery_targets() – Gets all the recovery targets

has_recovery_target() – Checks if a target is present in the commcell.

get() – returns the recovery target class object of the input target name

refresh() – refresh the targets present in the client

Recoverytargets Attributes

**all_targets**             --  returns the dictioanry consisting of all the targets that are
present in the commcell and their information such as id and name

Recoverytarget

init() – initialize object of RecoveryTarget with the specified recovery target name

_get_recovery_target_id() – method to get the recovery target id

_get_recovery_target_properties() – get the properties of this ecovery target

refresh() – refresh the object properties

Recoverytarget Attributes

**recovery_target_id**      -- Returns the id of the recovery target
**recovery_target_name**    -- Returns the name of the Recovery Target
**destination_hypervisor**  -- Returns the name of destination hypervisor
**vm_prefix**               -- Returns the prefix of the vm name
**destination_host**        -- Returns the destination host
** def datastore**          -- Returns the datastore host
**resource_pool**           -- Returns the resource_pool host
**destination_network**     -- Returns the destination_network host
**no_of_cpu**               -- Returns the no_of_cpu host
**no_of_vm**                -- Returns the no_of_vm hos
Expand source code Browse git
# -*- coding: utf-8 -*-

# --------------------------------------------------------------------------
# Copyright Commvault Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# --------------------------------------------------------------------------

"""Main file for performing Recovery Target specific operations.

RecoveryTargets and RecoveryTarget are 2 classes defined in this file.

RecoveryTargets:     Class for representing all the recovery targets

RecoveryTarget:      Class for a single recovery target selected, and to perform operations on that recovery target


RecoveryTargets:
    __init__()                   --  initialize object of RecoveryTargets class

    __str__()                   --  returns all the Recovery Targets

    _get_recovery_targets()     -- Gets all the recovery targets

    has_recovery_target()       -- Checks if a target is present in the commcell.

    get()                        --  returns the recovery target class object of the input target name

    refresh()                   --  refresh the targets present in the client

RecoveryTargets Attributes
--------------------------

    **all_targets**             --  returns the dictioanry consisting of all the targets that are
    present in the commcell and their information such as id and name

RecoveryTarget:
    __init__()                   --   initialize object of RecoveryTarget with the specified recovery target name

    _get_recovery_target_id()   --   method to get the recovery target id

    _get_recovery_target_properties()  --   get the properties of this ecovery target

    refresh()                   --   refresh the object properties

RecoveryTarget Attributes
--------------------------

    **recovery_target_id**      -- Returns the id of the recovery target
    **recovery_target_name**    -- Returns the name of the Recovery Target
    **destination_hypervisor**  -- Returns the name of destination hypervisor
    **vm_prefix**               -- Returns the prefix of the vm name
    **destination_host**        -- Returns the destination host
    ** def datastore**          -- Returns the datastore host
    **resource_pool**           -- Returns the resource_pool host
    **destination_network**     -- Returns the destination_network host
    **no_of_cpu**               -- Returns the no_of_cpu host
    **no_of_vm**                -- Returns the no_of_vm hos

"""
from __future__ import absolute_import
from __future__ import unicode_literals

from cvpysdk.exception import SDKException


class RecoveryTargets:

    """Class for representing all the clients associated with the commcell."""

    def __init__(self, commcell_object):
        """Initialize object of the Clients class.

            Args:
                commcell_object (object)  --  instance of the Commcell class

        """
        self._commcell_object = commcell_object

        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._services = commcell_object._services
        self._update_response_ = commcell_object._update_response_
        self._RECOVERY_TARGETS = self._services['GET_ALL_RECOVERY_TARGETS']

        self._recovery_targets = None
        self.refresh()

    def __str__(self):
        """Representation string consisting of all targets .

            Returns:
                str     -   string of all the targets

        """
        representation_string = '{:^5}\t{:^20}\n\n'.format('S. No.', 'RecoverTargets')

        for index, recovery_target in enumerate(self._recovery_targets):
            sub_str = '{:^5}\t{:20}\n'.format(
                index + 1,
                recovery_target
            )
            representation_string += sub_str

        return representation_string.strip()


    def _get_recovery_targets(self):
        """Gets all the recovery targets.

            Returns:
                dict - consists of all targets in the client
                    {
                         "target1_name": target1_id,
                         "target2_name": target2_id
                    }

            Raises:
                SDKException:
                    if response is empty

                    if response is not success

        """
        flag, response = self._cvpysdk_object.make_request('GET', self._RECOVERY_TARGETS)

        if flag:
            if response.json() and 'policy' in response.json():

                recovery_target_dict = {}

                for dictionary in response.json()['policy']:
                    temp_name = dictionary['entity']['vmAllocPolicyName'].lower()
                    recovery_target_dict[temp_name] = str(dictionary['entity']['vmAllocPolicyId'])

                return recovery_target_dict
            else:
                raise SDKException('Response', '102')
        else:
            raise SDKException('Response', '101', self._update_response_(response.text))

    @property
    def all_targets(self):
        """Returns dict of all the targets.

         Returns dict    -   consists of all targets

                {
                    "target1_name": target1_id,

                    "target2_name": target2_id
                }

        """
        return self._recovery_targets

    def has_recovery_target(self, target_name):
        """Checks if a target is present in the commcell.

            Args:
                target_name (str)  --  name of the target

            Returns:
                bool - boolean output whether the target is present in commcell or not

            Raises:
                SDKException:
                    if type of the target name argument is not string

        """
        if not isinstance(target_name, str):
            raise SDKException('Target', '101')

        return self._recovery_targets and target_name.lower() in self._recovery_targets

    def get(self, recovery_target_name):
        """Returns a target object.

            Args:
                target_name (str)  --  name of the target

            Returns:
                object - instance of the target class for the given target name

            Raises:
                SDKException:
                    if type of the target name argument is not string

                    if no target exists with the given name

        """
        if not isinstance(recovery_target_name, str):
            raise SDKException('Target', '101')
        else:
            recovery_target_name = recovery_target_name.lower()

            if self.has_recovery_target(recovery_target_name):
                return RecoveryTarget(
                    self._commcell_object, recovery_target_name, self.all_targets[recovery_target_name])

            raise SDKException('RecoveryTarget', '102', 'No target exists with name: {0}'.format(recovery_target_name))

    def refresh(self):
        """Refresh the recovery targets"""
        self._recovery_targets = self._get_recovery_targets()


class RecoveryTarget:

    """Class for performing target operations"""

    def __init__(self, commcell_object, recovery_target_name, recovery_target_id=None):
        """Initialize the instance of the RecoveryTarget class.

            Args:
                commcell_object   (object)    --  instance of the Commcell class

                target_name      (str)       --  name of the target

                target_id        (str)       --  id of the target

                    default: None

        """
        self._commcell_object = commcell_object

        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._services = commcell_object._services
        self._update_response_ = commcell_object._update_response_
        self._recovery_target_name = recovery_target_name.lower()

        if recovery_target_id:
            # Use the target id mentioned in the arguments
            self._recovery_target_id = str(recovery_target_id)
        else:
            # Get the target id if target id is not provided
            self._recovery_target_id = self._get_recovery_target_id()
        self._RECOVERY_TARGET = self._services['GET_RECOVERY_TARGET'] %(self._recovery_target_id)

        self._recovery_target_properties = None

        self._policy_type = None
        self._application_type = None
        self._destination_hypervisor = None
        self._access_node = None
        self._access_node_client_group = None
        self._users = []
        self._user_groups = []
        self._vm_prefix = ''
        self._vm_suffix = ''

        self._destination_host = None
        self._vm_storage_policy = None
        self._datastore = None
        self._resource_pool = None
        self._destination_network = None
        self._expiration_time = None
        self._failover_ma = None
        self._isolated_network = None
        self._no_of_cpu = None
        self._no_of_vm = None
        self._iso_paths = []

        self._resource_group = None
        self._region = None
        self._availability_zone = None
        self._storage_account = None
        self._vm_size = None
        self._disk_type = None
        self._virtual_network = None
        self._vm_folder = None
        self._security_group = None
        self._create_public_ip = None
        self._restore_as_managed_vm = None
        self._test_virtual_network = None
        self._test_security_group = None
        self._test_vm_size = None

        # AWS
        self._volume_type = None
        self._encryption_key = None
        self._iam_role_id = None
        self._iam_role_name = None
        self._instance_type = None

        self.refresh()

    def _get_recovery_target_id(self):
        """Gets the target id associated with this target.

            Returns:
                str - id associated with this target

        """
        target = RecoveryTargets(self._commcell_object)
        return target.get(self._recovery_target_name)

    def _get_recovery_target_properties(self):
        """Gets the target properties of this target.

            Raises:
                SDKException:
                    if response is empty

                    if response is not success

        """
        flag, response = self._cvpysdk_object.make_request('GET', self._RECOVERY_TARGET)

        if flag:
            if response.json() and 'policy' in response.json():
                self._recovery_target_properties = response.json()['policy'][0]
                self._application_type = self._recovery_target_properties['vmPolicyAppType']
                self._destination_hypervisor = self._recovery_target_properties['destinationHyperV']['clientName']
                vm_name_edit_string = self._recovery_target_properties.get('vmNameEditString')
                vm_name_edit_type = self._recovery_target_properties.get('vmNameEditType', 1)
                if vm_name_edit_string and vm_name_edit_type == 2:
                    self._vm_suffix = self._recovery_target_properties.get('vmNameEditString')
                elif vm_name_edit_string and vm_name_edit_type == 1:
                    self._vm_prefix = self._recovery_target_properties.get('vmNameEditString')
                self._access_node = self._recovery_target_properties.get('proxyClientEntity', {}).get('clientName')
                self._access_node_client_group = (self._recovery_target_properties.get('proxyClientGroupEntity', {})
                                                  .get('clientGroupName'))
                self._users = self._recovery_target_properties.get('securityAssociations', {}).get('users')
                self._user_groups = self._recovery_target_properties.get('securityAssociations', {}).get('userGroups')
                self._policy_type = self._recovery_target_properties.get("entity", {}).get("policyType")

                if self._policy_type == 1:
                    self._availability_zone = (self._recovery_target_properties.get('amazonPolicy',{}).get('availabilityZones', [{}])[0].get('availabilityZoneName', None))
                    self._volume_type = self._recovery_target_properties.get('amazonPolicy', {}).get('volumeType', None)
                    self._encryption_key = self._recovery_target_properties.get('amazonPolicy', {}).get('encryptionOption',{}).get('encryptionKeyName', 'Auto')
                    self._iam_role_name = self._recovery_target_properties.get('roleInfo', {}).get('name')
                    self._iam_role_id = self._recovery_target_properties.get('roleInfo', {}).get('id')
                    self._destination_network = self._recovery_target_properties.get('networkList', [{}])[0].get('name', None)
                    self._security_group = self._recovery_target_properties.get('securityGroups', [{}])[0].get('name', '')
                    self._instance_type = (self._recovery_target_properties.get('amazonPolicy', {}).get('instanceType', [{}])[0].get('instanceType', {}).get('vmInstanceTypeName',''))
                    
                    expiry_hours = self._recovery_target_properties.get("minutesRetainUntil", None)
                    expiry_days = self._recovery_target_properties.get("daysRetainUntil", None)
                    if expiry_hours:
                        self._expiration_time = f'{expiry_hours} hours'
                    elif expiry_days:
                        self._expiration_time = f'{expiry_days} days'
                    self._test_virtual_network = self._recovery_target_properties.get('networkInfo', [{}])[0].get('label', None)
                    self._test_security_group = self._recovery_target_properties.get('testSecurityGroups', [{}])[0].get('name', '')
                    self._test_vm_size = (self._recovery_target_properties.get('amazonPolicy', {}).get('vmInstanceTypes', [{}])[0].get('vmInstanceTypeName',''))

                elif self._policy_type == 2:
                    self._vm_folder = self._recovery_target_properties['dataStores'][0]['dataStoreName']
                    self._destination_network = self._recovery_target_properties['networkList'][0]['networkName']
                    self._destination_host = self._recovery_target_properties['proxyClientEntity']['hostName']
                elif self._policy_type == 7:
                    self._resource_group = self._recovery_target_properties['esxServers'][0]['esxServerName']
                    self._region = self._recovery_target_properties['region']
                    self._availability_zone = (self._recovery_target_properties['amazonPolicy']
                                               ['availabilityZones'][0]['availabilityZoneName'])
                    self._storage_account = self._recovery_target_properties['dataStores'][0]['dataStoreName']

                    self._vm_size = (self._recovery_target_properties['amazonPolicy']['vmInstanceTypes']
                                     [0]['vmInstanceTypeName'])
                    self._disk_type = self._recovery_target_properties['amazonPolicy']['volumeType']
                    self._virtual_network = self._recovery_target_properties['networkList'][0]['networkDisplayName']
                    self._security_group = self._recovery_target_properties['securityGroups'][0]['name']
                    self._create_public_ip = self._recovery_target_properties['isPublicIPSettingsAllowed']
                    self._restore_as_managed_vm = self._recovery_target_properties['restoreAsManagedVM']

                    expiry_hours = self._recovery_target_properties.get("minutesRetainUntil")
                    expiry_days = self._recovery_target_properties.get("daysRetainUntil")
                    if expiry_hours:
                        self._expiration_time = f'{expiry_hours} hours'
                    elif expiry_days:
                        self._expiration_time = f'{expiry_days} days'
                    self._test_virtual_network = self._recovery_target_properties['networkInfo'][0]['label']
                    self._test_vm_size = (self._recovery_target_properties['amazonPolicy']['instanceType'][0]
                                          ['instanceType']['vmInstanceTypeName'])
                elif self._policy_type == 13:
                    self._destination_host = self._recovery_target_properties['esxServers'][0]['esxServerName']
                    self._datastore = self._recovery_target_properties['dataStores'][0]['dataStoreName']
                    self._resource_pool = self._recovery_target_properties['resourcePoolPath']
                    self._vm_folder = self._recovery_target_properties['folderPath']
                    self._destination_network = self._recovery_target_properties['networkList'][0]['destinationNetwork']

                    self._vm_storage_policy = self._recovery_target_properties.get('vmStoragePolicyName')
                    expiry_hours = self._recovery_target_properties.get("minutesRetainUntil")
                    expiry_days = self._recovery_target_properties.get("daysRetainUntil")
                    if expiry_hours:
                        self._expiration_time = f'{expiry_hours} hours'
                    elif expiry_days:
                        self._expiration_time = f'{expiry_days} days'
                    if self._recovery_target_properties.get('mediaAgent', {}):
                        self._failover_ma = self._recovery_target_properties['mediaAgent']['clientName']

                    self._isolated_network = self._recovery_target_properties.get("createIsolatedNetwork")

                    self._no_of_cpu = self._recovery_target_properties.get('maxCores')
                    self._no_of_vm = self._recovery_target_properties.get('maxVMQuota')
                    self._iso_paths = [iso['isoPath'] for iso in
                                       self._recovery_target_properties.get('isoInfo', [])]
                    if self._recovery_target_properties.get('associatedClientGroup'):
                        self._server_group = (self._recovery_target_properties["associatedClientGroup"]
                                              ["clientGroupName"])
            else:
                raise SDKException('Response', '102')
        else:
            raise SDKException('Response', '101', self._update_response_(response.text))

    @property
    def recovery_target_id(self):
        """Returns: (str) the id of the recovery target"""
        return self._recovery_target_id

    @property
    def recovery_target_name(self):
        """Returns: (str) the display name of the recovery target"""
        return self._recovery_target_name

    @property
    def policy_type(self):
        """Returns: (str) the policy type ID
            1  - AWS
            2  - Microsoft Hyper-V
            7  - Azure
            13 - VMware
        """
        return self._policy_type

    @property
    def application_type(self):
        """Returns: (str) the name of the application type
            0 - Replication type
            1 - Regular type
        """
        return self._application_type

    @property
    def destination_hypervisor(self):
        """Returns: (str) the client name of destination hypervisor"""
        return self._destination_hypervisor

    @property
    def access_node(self):
        """Returns: (str) the client name of the access node/proxy of the recovery target"""
        return self._access_node

    @property
    def access_node_client_group(self):
        """Returns: (str) The client group name set on the access node field of recovery target"""
        return self._access_node_client_group

    @property
    def security_user_names(self):
        """Returns: list<str> the names of the users who are used for ownership of the hypervisor and VMs"""
        return [user['userName'] for user in self._users]

    @property
    def vm_prefix(self):
        """Returns: (str) the prefix of the vm name to be prefixed to the destination VM"""
        return self._vm_prefix

    @property
    def vm_suffix(self):
        """Returns: (str) the suffix of the vm name to be suffixed to the destination VM"""
        return self._vm_suffix

    @property
    def destination_host(self):
        """Returns: (str) VMware: the destination ESX host name"""
        return self._destination_host

    @property
    def vm_storage_policy(self):
        """Returns: (str) VMware: the vm storage policy name"""
        return self._vm_storage_policy

    @property
    def datastore(self):
        """Returns: (str) VMware: the datastore name"""
        return self._datastore

    @property
    def resource_pool(self):
        """Returns: (str) VMware: the resource pool name"""
        return self._resource_pool

    @property
    def vm_folder(self):
        """Returns: (str) VMware/Hyper-V: the destination VM folder"""
        return self._vm_folder

    @property
    def destination_network(self):
        """Returns: (str) VMware/Hyper-V/AWS: the network name of the destination VM"""
        return self._destination_network

    @property
    def expiration_time(self):
        """Returns: (str) VMware/Azure: the expiration time of the test boot VM/test failover VM
            eg: 4 hours or 3 days
        """
        return self._expiration_time

    @property
    def failover_ma(self):
        """Returns: (str) VMware: the preferred Media Agent to be used for test failover job"""
        return self._failover_ma

    @property
    def isolated_network(self):
        """Returns: (bool) VMware: whether the target is configured to create isolated network or not"""
        return self._isolated_network

    @property
    def iso_path(self):
        """Returns: list<str> VMware regular: the path of ISOs used for test boot operations"""
        return self._iso_paths

    @property
    def server_group(self):
        """Returns: (str) VMware regular: the name of the server group to be associated with the recovery target"""
        return self._server_group

    @property
    def no_of_cpu(self):
        """Returns: (str) VMware regular: the maximum number of CPU cores for live mount"""
        return self._no_of_cpu

    @property
    def no_of_vm(self):
        """Returns: (str) VMware regular: the maximum number of VMs to be deployed for live mount"""
        return self._no_of_vm

    @property
    def resource_group(self):
        """Returns: (str) Azure: the resource group name for destination VM"""
        return self._resource_group

    @property
    def region(self):
        """Return: (str) Azure: the recovery target region for destination VM"""
        return self._region

    @property
    def availability_zone(self):
        """Return: (str) Azure/AWS: the availability zone of the destination VM"""
        return self._availability_zone

    @property
    def storage_account(self):
        """Returns: (str) Azure: the storage account name used to deploy the VM's storage"""
        return self._storage_account

    @property
    def vm_size(self):
        """Returns: (str) Azure: the size of the destination VM. This defines the hardware config"""
        return self._vm_size

    @property
    def disk_type(self):
        """Returns: (str) Azure: the disk type of the destination VM"""
        return self._disk_type

    @property
    def virtual_network(self):
        """Returns: (str) Azure: the destination VM virtual network to assign NIC to"""
        return self._virtual_network

    @property
    def security_group(self):
        """Returns: (str) Azure/AWS: the destination VM network security group name"""
        return self._security_group

    @property
    def create_public_ip(self):
        """Returns: (bool) Azure: whether public IP will be created for destination VM"""
        return self._create_public_ip

    @property
    def restore_as_managed_vm(self):
        """Returns: (bool) whether the destination VM will be a managed VM"""
        return self._restore_as_managed_vm

    @property
    def test_virtual_network(self):
        """Returns: (str) Azure: the destination VM virtual network for test failover"""
        return self._test_virtual_network

    @property
    def test_security_group(self):
        """Returns: (str) AWS: the clone VM security group for test failover"""
        return self._test_security_group

    @property
    def test_vm_size(self):
        """Returns: (str) Azure: the destination VM size for test failover"""
        return self._test_vm_size

    @property
    def volume_type(self):
        """Returns: (str) AWS: the destination VM volume type/disk type"""
        return self._volume_type

    @property
    def encryption_key(self):
        """Returns: (str) AWS: the encryption key of the destination VM"""
        return self._encryption_key

    @property
    def iam_role_id(self):
        """Returns: (str) AWS: the AWS IAM Role ID associated with the destination VM"""
        return self._iam_role_id

    @property
    def iam_role_name(self):
        """Returns: (str) AWS: the AWS IAM Role name associated with the destination VM"""
        return self._iam_role_name

    @property
    def instance_type(self):
        """Returns: (str) AWS: the AWS instance type which is used for defining hardware config"""
        return self._instance_type

    def refresh(self):
        """Refresh the properties of the Recovery Target."""
        self._get_recovery_target_properties()

Classes

class RecoveryTarget (commcell_object, recovery_target_name, recovery_target_id=None)

Class for performing target operations

Initialize the instance of the RecoveryTarget class.

Args

commcell_object (object) – instance of the Commcell class

target_name (str) – name of the target

target_id (str) – id of the target

default: None
Expand source code Browse git
class RecoveryTarget:

    """Class for performing target operations"""

    def __init__(self, commcell_object, recovery_target_name, recovery_target_id=None):
        """Initialize the instance of the RecoveryTarget class.

            Args:
                commcell_object   (object)    --  instance of the Commcell class

                target_name      (str)       --  name of the target

                target_id        (str)       --  id of the target

                    default: None

        """
        self._commcell_object = commcell_object

        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._services = commcell_object._services
        self._update_response_ = commcell_object._update_response_
        self._recovery_target_name = recovery_target_name.lower()

        if recovery_target_id:
            # Use the target id mentioned in the arguments
            self._recovery_target_id = str(recovery_target_id)
        else:
            # Get the target id if target id is not provided
            self._recovery_target_id = self._get_recovery_target_id()
        self._RECOVERY_TARGET = self._services['GET_RECOVERY_TARGET'] %(self._recovery_target_id)

        self._recovery_target_properties = None

        self._policy_type = None
        self._application_type = None
        self._destination_hypervisor = None
        self._access_node = None
        self._access_node_client_group = None
        self._users = []
        self._user_groups = []
        self._vm_prefix = ''
        self._vm_suffix = ''

        self._destination_host = None
        self._vm_storage_policy = None
        self._datastore = None
        self._resource_pool = None
        self._destination_network = None
        self._expiration_time = None
        self._failover_ma = None
        self._isolated_network = None
        self._no_of_cpu = None
        self._no_of_vm = None
        self._iso_paths = []

        self._resource_group = None
        self._region = None
        self._availability_zone = None
        self._storage_account = None
        self._vm_size = None
        self._disk_type = None
        self._virtual_network = None
        self._vm_folder = None
        self._security_group = None
        self._create_public_ip = None
        self._restore_as_managed_vm = None
        self._test_virtual_network = None
        self._test_security_group = None
        self._test_vm_size = None

        # AWS
        self._volume_type = None
        self._encryption_key = None
        self._iam_role_id = None
        self._iam_role_name = None
        self._instance_type = None

        self.refresh()

    def _get_recovery_target_id(self):
        """Gets the target id associated with this target.

            Returns:
                str - id associated with this target

        """
        target = RecoveryTargets(self._commcell_object)
        return target.get(self._recovery_target_name)

    def _get_recovery_target_properties(self):
        """Gets the target properties of this target.

            Raises:
                SDKException:
                    if response is empty

                    if response is not success

        """
        flag, response = self._cvpysdk_object.make_request('GET', self._RECOVERY_TARGET)

        if flag:
            if response.json() and 'policy' in response.json():
                self._recovery_target_properties = response.json()['policy'][0]
                self._application_type = self._recovery_target_properties['vmPolicyAppType']
                self._destination_hypervisor = self._recovery_target_properties['destinationHyperV']['clientName']
                vm_name_edit_string = self._recovery_target_properties.get('vmNameEditString')
                vm_name_edit_type = self._recovery_target_properties.get('vmNameEditType', 1)
                if vm_name_edit_string and vm_name_edit_type == 2:
                    self._vm_suffix = self._recovery_target_properties.get('vmNameEditString')
                elif vm_name_edit_string and vm_name_edit_type == 1:
                    self._vm_prefix = self._recovery_target_properties.get('vmNameEditString')
                self._access_node = self._recovery_target_properties.get('proxyClientEntity', {}).get('clientName')
                self._access_node_client_group = (self._recovery_target_properties.get('proxyClientGroupEntity', {})
                                                  .get('clientGroupName'))
                self._users = self._recovery_target_properties.get('securityAssociations', {}).get('users')
                self._user_groups = self._recovery_target_properties.get('securityAssociations', {}).get('userGroups')
                self._policy_type = self._recovery_target_properties.get("entity", {}).get("policyType")

                if self._policy_type == 1:
                    self._availability_zone = (self._recovery_target_properties.get('amazonPolicy',{}).get('availabilityZones', [{}])[0].get('availabilityZoneName', None))
                    self._volume_type = self._recovery_target_properties.get('amazonPolicy', {}).get('volumeType', None)
                    self._encryption_key = self._recovery_target_properties.get('amazonPolicy', {}).get('encryptionOption',{}).get('encryptionKeyName', 'Auto')
                    self._iam_role_name = self._recovery_target_properties.get('roleInfo', {}).get('name')
                    self._iam_role_id = self._recovery_target_properties.get('roleInfo', {}).get('id')
                    self._destination_network = self._recovery_target_properties.get('networkList', [{}])[0].get('name', None)
                    self._security_group = self._recovery_target_properties.get('securityGroups', [{}])[0].get('name', '')
                    self._instance_type = (self._recovery_target_properties.get('amazonPolicy', {}).get('instanceType', [{}])[0].get('instanceType', {}).get('vmInstanceTypeName',''))
                    
                    expiry_hours = self._recovery_target_properties.get("minutesRetainUntil", None)
                    expiry_days = self._recovery_target_properties.get("daysRetainUntil", None)
                    if expiry_hours:
                        self._expiration_time = f'{expiry_hours} hours'
                    elif expiry_days:
                        self._expiration_time = f'{expiry_days} days'
                    self._test_virtual_network = self._recovery_target_properties.get('networkInfo', [{}])[0].get('label', None)
                    self._test_security_group = self._recovery_target_properties.get('testSecurityGroups', [{}])[0].get('name', '')
                    self._test_vm_size = (self._recovery_target_properties.get('amazonPolicy', {}).get('vmInstanceTypes', [{}])[0].get('vmInstanceTypeName',''))

                elif self._policy_type == 2:
                    self._vm_folder = self._recovery_target_properties['dataStores'][0]['dataStoreName']
                    self._destination_network = self._recovery_target_properties['networkList'][0]['networkName']
                    self._destination_host = self._recovery_target_properties['proxyClientEntity']['hostName']
                elif self._policy_type == 7:
                    self._resource_group = self._recovery_target_properties['esxServers'][0]['esxServerName']
                    self._region = self._recovery_target_properties['region']
                    self._availability_zone = (self._recovery_target_properties['amazonPolicy']
                                               ['availabilityZones'][0]['availabilityZoneName'])
                    self._storage_account = self._recovery_target_properties['dataStores'][0]['dataStoreName']

                    self._vm_size = (self._recovery_target_properties['amazonPolicy']['vmInstanceTypes']
                                     [0]['vmInstanceTypeName'])
                    self._disk_type = self._recovery_target_properties['amazonPolicy']['volumeType']
                    self._virtual_network = self._recovery_target_properties['networkList'][0]['networkDisplayName']
                    self._security_group = self._recovery_target_properties['securityGroups'][0]['name']
                    self._create_public_ip = self._recovery_target_properties['isPublicIPSettingsAllowed']
                    self._restore_as_managed_vm = self._recovery_target_properties['restoreAsManagedVM']

                    expiry_hours = self._recovery_target_properties.get("minutesRetainUntil")
                    expiry_days = self._recovery_target_properties.get("daysRetainUntil")
                    if expiry_hours:
                        self._expiration_time = f'{expiry_hours} hours'
                    elif expiry_days:
                        self._expiration_time = f'{expiry_days} days'
                    self._test_virtual_network = self._recovery_target_properties['networkInfo'][0]['label']
                    self._test_vm_size = (self._recovery_target_properties['amazonPolicy']['instanceType'][0]
                                          ['instanceType']['vmInstanceTypeName'])
                elif self._policy_type == 13:
                    self._destination_host = self._recovery_target_properties['esxServers'][0]['esxServerName']
                    self._datastore = self._recovery_target_properties['dataStores'][0]['dataStoreName']
                    self._resource_pool = self._recovery_target_properties['resourcePoolPath']
                    self._vm_folder = self._recovery_target_properties['folderPath']
                    self._destination_network = self._recovery_target_properties['networkList'][0]['destinationNetwork']

                    self._vm_storage_policy = self._recovery_target_properties.get('vmStoragePolicyName')
                    expiry_hours = self._recovery_target_properties.get("minutesRetainUntil")
                    expiry_days = self._recovery_target_properties.get("daysRetainUntil")
                    if expiry_hours:
                        self._expiration_time = f'{expiry_hours} hours'
                    elif expiry_days:
                        self._expiration_time = f'{expiry_days} days'
                    if self._recovery_target_properties.get('mediaAgent', {}):
                        self._failover_ma = self._recovery_target_properties['mediaAgent']['clientName']

                    self._isolated_network = self._recovery_target_properties.get("createIsolatedNetwork")

                    self._no_of_cpu = self._recovery_target_properties.get('maxCores')
                    self._no_of_vm = self._recovery_target_properties.get('maxVMQuota')
                    self._iso_paths = [iso['isoPath'] for iso in
                                       self._recovery_target_properties.get('isoInfo', [])]
                    if self._recovery_target_properties.get('associatedClientGroup'):
                        self._server_group = (self._recovery_target_properties["associatedClientGroup"]
                                              ["clientGroupName"])
            else:
                raise SDKException('Response', '102')
        else:
            raise SDKException('Response', '101', self._update_response_(response.text))

    @property
    def recovery_target_id(self):
        """Returns: (str) the id of the recovery target"""
        return self._recovery_target_id

    @property
    def recovery_target_name(self):
        """Returns: (str) the display name of the recovery target"""
        return self._recovery_target_name

    @property
    def policy_type(self):
        """Returns: (str) the policy type ID
            1  - AWS
            2  - Microsoft Hyper-V
            7  - Azure
            13 - VMware
        """
        return self._policy_type

    @property
    def application_type(self):
        """Returns: (str) the name of the application type
            0 - Replication type
            1 - Regular type
        """
        return self._application_type

    @property
    def destination_hypervisor(self):
        """Returns: (str) the client name of destination hypervisor"""
        return self._destination_hypervisor

    @property
    def access_node(self):
        """Returns: (str) the client name of the access node/proxy of the recovery target"""
        return self._access_node

    @property
    def access_node_client_group(self):
        """Returns: (str) The client group name set on the access node field of recovery target"""
        return self._access_node_client_group

    @property
    def security_user_names(self):
        """Returns: list<str> the names of the users who are used for ownership of the hypervisor and VMs"""
        return [user['userName'] for user in self._users]

    @property
    def vm_prefix(self):
        """Returns: (str) the prefix of the vm name to be prefixed to the destination VM"""
        return self._vm_prefix

    @property
    def vm_suffix(self):
        """Returns: (str) the suffix of the vm name to be suffixed to the destination VM"""
        return self._vm_suffix

    @property
    def destination_host(self):
        """Returns: (str) VMware: the destination ESX host name"""
        return self._destination_host

    @property
    def vm_storage_policy(self):
        """Returns: (str) VMware: the vm storage policy name"""
        return self._vm_storage_policy

    @property
    def datastore(self):
        """Returns: (str) VMware: the datastore name"""
        return self._datastore

    @property
    def resource_pool(self):
        """Returns: (str) VMware: the resource pool name"""
        return self._resource_pool

    @property
    def vm_folder(self):
        """Returns: (str) VMware/Hyper-V: the destination VM folder"""
        return self._vm_folder

    @property
    def destination_network(self):
        """Returns: (str) VMware/Hyper-V/AWS: the network name of the destination VM"""
        return self._destination_network

    @property
    def expiration_time(self):
        """Returns: (str) VMware/Azure: the expiration time of the test boot VM/test failover VM
            eg: 4 hours or 3 days
        """
        return self._expiration_time

    @property
    def failover_ma(self):
        """Returns: (str) VMware: the preferred Media Agent to be used for test failover job"""
        return self._failover_ma

    @property
    def isolated_network(self):
        """Returns: (bool) VMware: whether the target is configured to create isolated network or not"""
        return self._isolated_network

    @property
    def iso_path(self):
        """Returns: list<str> VMware regular: the path of ISOs used for test boot operations"""
        return self._iso_paths

    @property
    def server_group(self):
        """Returns: (str) VMware regular: the name of the server group to be associated with the recovery target"""
        return self._server_group

    @property
    def no_of_cpu(self):
        """Returns: (str) VMware regular: the maximum number of CPU cores for live mount"""
        return self._no_of_cpu

    @property
    def no_of_vm(self):
        """Returns: (str) VMware regular: the maximum number of VMs to be deployed for live mount"""
        return self._no_of_vm

    @property
    def resource_group(self):
        """Returns: (str) Azure: the resource group name for destination VM"""
        return self._resource_group

    @property
    def region(self):
        """Return: (str) Azure: the recovery target region for destination VM"""
        return self._region

    @property
    def availability_zone(self):
        """Return: (str) Azure/AWS: the availability zone of the destination VM"""
        return self._availability_zone

    @property
    def storage_account(self):
        """Returns: (str) Azure: the storage account name used to deploy the VM's storage"""
        return self._storage_account

    @property
    def vm_size(self):
        """Returns: (str) Azure: the size of the destination VM. This defines the hardware config"""
        return self._vm_size

    @property
    def disk_type(self):
        """Returns: (str) Azure: the disk type of the destination VM"""
        return self._disk_type

    @property
    def virtual_network(self):
        """Returns: (str) Azure: the destination VM virtual network to assign NIC to"""
        return self._virtual_network

    @property
    def security_group(self):
        """Returns: (str) Azure/AWS: the destination VM network security group name"""
        return self._security_group

    @property
    def create_public_ip(self):
        """Returns: (bool) Azure: whether public IP will be created for destination VM"""
        return self._create_public_ip

    @property
    def restore_as_managed_vm(self):
        """Returns: (bool) whether the destination VM will be a managed VM"""
        return self._restore_as_managed_vm

    @property
    def test_virtual_network(self):
        """Returns: (str) Azure: the destination VM virtual network for test failover"""
        return self._test_virtual_network

    @property
    def test_security_group(self):
        """Returns: (str) AWS: the clone VM security group for test failover"""
        return self._test_security_group

    @property
    def test_vm_size(self):
        """Returns: (str) Azure: the destination VM size for test failover"""
        return self._test_vm_size

    @property
    def volume_type(self):
        """Returns: (str) AWS: the destination VM volume type/disk type"""
        return self._volume_type

    @property
    def encryption_key(self):
        """Returns: (str) AWS: the encryption key of the destination VM"""
        return self._encryption_key

    @property
    def iam_role_id(self):
        """Returns: (str) AWS: the AWS IAM Role ID associated with the destination VM"""
        return self._iam_role_id

    @property
    def iam_role_name(self):
        """Returns: (str) AWS: the AWS IAM Role name associated with the destination VM"""
        return self._iam_role_name

    @property
    def instance_type(self):
        """Returns: (str) AWS: the AWS instance type which is used for defining hardware config"""
        return self._instance_type

    def refresh(self):
        """Refresh the properties of the Recovery Target."""
        self._get_recovery_target_properties()

Instance variables

var access_node

Returns: (str) the client name of the access node/proxy of the recovery target

Expand source code Browse git
@property
def access_node(self):
    """Returns: (str) the client name of the access node/proxy of the recovery target"""
    return self._access_node
var access_node_client_group

Returns: (str) The client group name set on the access node field of recovery target

Expand source code Browse git
@property
def access_node_client_group(self):
    """Returns: (str) The client group name set on the access node field of recovery target"""
    return self._access_node_client_group
var application_type

Returns: (str) the name of the application type 0 - Replication type 1 - Regular type

Expand source code Browse git
@property
def application_type(self):
    """Returns: (str) the name of the application type
        0 - Replication type
        1 - Regular type
    """
    return self._application_type
var availability_zone

Return: (str) Azure/AWS: the availability zone of the destination VM

Expand source code Browse git
@property
def availability_zone(self):
    """Return: (str) Azure/AWS: the availability zone of the destination VM"""
    return self._availability_zone
var create_public_ip

Returns: (bool) Azure: whether public IP will be created for destination VM

Expand source code Browse git
@property
def create_public_ip(self):
    """Returns: (bool) Azure: whether public IP will be created for destination VM"""
    return self._create_public_ip
var datastore

Returns: (str) VMware: the datastore name

Expand source code Browse git
@property
def datastore(self):
    """Returns: (str) VMware: the datastore name"""
    return self._datastore
var destination_host

Returns: (str) VMware: the destination ESX host name

Expand source code Browse git
@property
def destination_host(self):
    """Returns: (str) VMware: the destination ESX host name"""
    return self._destination_host
var destination_hypervisor

Returns: (str) the client name of destination hypervisor

Expand source code Browse git
@property
def destination_hypervisor(self):
    """Returns: (str) the client name of destination hypervisor"""
    return self._destination_hypervisor
var destination_network

Returns: (str) VMware/Hyper-V/AWS: the network name of the destination VM

Expand source code Browse git
@property
def destination_network(self):
    """Returns: (str) VMware/Hyper-V/AWS: the network name of the destination VM"""
    return self._destination_network
var disk_type

Returns: (str) Azure: the disk type of the destination VM

Expand source code Browse git
@property
def disk_type(self):
    """Returns: (str) Azure: the disk type of the destination VM"""
    return self._disk_type
var encryption_key

Returns: (str) AWS: the encryption key of the destination VM

Expand source code Browse git
@property
def encryption_key(self):
    """Returns: (str) AWS: the encryption key of the destination VM"""
    return self._encryption_key
var expiration_time

Returns: (str) VMware/Azure: the expiration time of the test boot VM/test failover VM eg: 4 hours or 3 days

Expand source code Browse git
@property
def expiration_time(self):
    """Returns: (str) VMware/Azure: the expiration time of the test boot VM/test failover VM
        eg: 4 hours or 3 days
    """
    return self._expiration_time
var failover_ma

Returns: (str) VMware: the preferred Media Agent to be used for test failover job

Expand source code Browse git
@property
def failover_ma(self):
    """Returns: (str) VMware: the preferred Media Agent to be used for test failover job"""
    return self._failover_ma
var iam_role_id

Returns: (str) AWS: the AWS IAM Role ID associated with the destination VM

Expand source code Browse git
@property
def iam_role_id(self):
    """Returns: (str) AWS: the AWS IAM Role ID associated with the destination VM"""
    return self._iam_role_id
var iam_role_name

Returns: (str) AWS: the AWS IAM Role name associated with the destination VM

Expand source code Browse git
@property
def iam_role_name(self):
    """Returns: (str) AWS: the AWS IAM Role name associated with the destination VM"""
    return self._iam_role_name
var instance_type

Returns: (str) AWS: the AWS instance type which is used for defining hardware config

Expand source code Browse git
@property
def instance_type(self):
    """Returns: (str) AWS: the AWS instance type which is used for defining hardware config"""
    return self._instance_type
var iso_path

Returns: list VMware regular: the path of ISOs used for test boot operations

Expand source code Browse git
@property
def iso_path(self):
    """Returns: list<str> VMware regular: the path of ISOs used for test boot operations"""
    return self._iso_paths
var isolated_network

Returns: (bool) VMware: whether the target is configured to create isolated network or not

Expand source code Browse git
@property
def isolated_network(self):
    """Returns: (bool) VMware: whether the target is configured to create isolated network or not"""
    return self._isolated_network
var no_of_cpu

Returns: (str) VMware regular: the maximum number of CPU cores for live mount

Expand source code Browse git
@property
def no_of_cpu(self):
    """Returns: (str) VMware regular: the maximum number of CPU cores for live mount"""
    return self._no_of_cpu
var no_of_vm

Returns: (str) VMware regular: the maximum number of VMs to be deployed for live mount

Expand source code Browse git
@property
def no_of_vm(self):
    """Returns: (str) VMware regular: the maximum number of VMs to be deployed for live mount"""
    return self._no_of_vm
var policy_type

Returns: (str) the policy type ID 1 - AWS 2 - Microsoft Hyper-V 7 - Azure 13 - VMware

Expand source code Browse git
@property
def policy_type(self):
    """Returns: (str) the policy type ID
        1  - AWS
        2  - Microsoft Hyper-V
        7  - Azure
        13 - VMware
    """
    return self._policy_type
var recovery_target_id

Returns: (str) the id of the recovery target

Expand source code Browse git
@property
def recovery_target_id(self):
    """Returns: (str) the id of the recovery target"""
    return self._recovery_target_id
var recovery_target_name

Returns: (str) the display name of the recovery target

Expand source code Browse git
@property
def recovery_target_name(self):
    """Returns: (str) the display name of the recovery target"""
    return self._recovery_target_name
var region

Return: (str) Azure: the recovery target region for destination VM

Expand source code Browse git
@property
def region(self):
    """Return: (str) Azure: the recovery target region for destination VM"""
    return self._region
var resource_group

Returns: (str) Azure: the resource group name for destination VM

Expand source code Browse git
@property
def resource_group(self):
    """Returns: (str) Azure: the resource group name for destination VM"""
    return self._resource_group
var resource_pool

Returns: (str) VMware: the resource pool name

Expand source code Browse git
@property
def resource_pool(self):
    """Returns: (str) VMware: the resource pool name"""
    return self._resource_pool
var restore_as_managed_vm

Returns: (bool) whether the destination VM will be a managed VM

Expand source code Browse git
@property
def restore_as_managed_vm(self):
    """Returns: (bool) whether the destination VM will be a managed VM"""
    return self._restore_as_managed_vm
var security_group

Returns: (str) Azure/AWS: the destination VM network security group name

Expand source code Browse git
@property
def security_group(self):
    """Returns: (str) Azure/AWS: the destination VM network security group name"""
    return self._security_group
var security_user_names

Returns: list the names of the users who are used for ownership of the hypervisor and VMs

Expand source code Browse git
@property
def security_user_names(self):
    """Returns: list<str> the names of the users who are used for ownership of the hypervisor and VMs"""
    return [user['userName'] for user in self._users]
var server_group

Returns: (str) VMware regular: the name of the server group to be associated with the recovery target

Expand source code Browse git
@property
def server_group(self):
    """Returns: (str) VMware regular: the name of the server group to be associated with the recovery target"""
    return self._server_group
var storage_account

Returns: (str) Azure: the storage account name used to deploy the VM's storage

Expand source code Browse git
@property
def storage_account(self):
    """Returns: (str) Azure: the storage account name used to deploy the VM's storage"""
    return self._storage_account
var test_security_group

Returns: (str) AWS: the clone VM security group for test failover

Expand source code Browse git
@property
def test_security_group(self):
    """Returns: (str) AWS: the clone VM security group for test failover"""
    return self._test_security_group
var test_virtual_network

Returns: (str) Azure: the destination VM virtual network for test failover

Expand source code Browse git
@property
def test_virtual_network(self):
    """Returns: (str) Azure: the destination VM virtual network for test failover"""
    return self._test_virtual_network
var test_vm_size

Returns: (str) Azure: the destination VM size for test failover

Expand source code Browse git
@property
def test_vm_size(self):
    """Returns: (str) Azure: the destination VM size for test failover"""
    return self._test_vm_size
var virtual_network

Returns: (str) Azure: the destination VM virtual network to assign NIC to

Expand source code Browse git
@property
def virtual_network(self):
    """Returns: (str) Azure: the destination VM virtual network to assign NIC to"""
    return self._virtual_network
var vm_folder

Returns: (str) VMware/Hyper-V: the destination VM folder

Expand source code Browse git
@property
def vm_folder(self):
    """Returns: (str) VMware/Hyper-V: the destination VM folder"""
    return self._vm_folder
var vm_prefix

Returns: (str) the prefix of the vm name to be prefixed to the destination VM

Expand source code Browse git
@property
def vm_prefix(self):
    """Returns: (str) the prefix of the vm name to be prefixed to the destination VM"""
    return self._vm_prefix
var vm_size

Returns: (str) Azure: the size of the destination VM. This defines the hardware config

Expand source code Browse git
@property
def vm_size(self):
    """Returns: (str) Azure: the size of the destination VM. This defines the hardware config"""
    return self._vm_size
var vm_storage_policy

Returns: (str) VMware: the vm storage policy name

Expand source code Browse git
@property
def vm_storage_policy(self):
    """Returns: (str) VMware: the vm storage policy name"""
    return self._vm_storage_policy
var vm_suffix

Returns: (str) the suffix of the vm name to be suffixed to the destination VM

Expand source code Browse git
@property
def vm_suffix(self):
    """Returns: (str) the suffix of the vm name to be suffixed to the destination VM"""
    return self._vm_suffix
var volume_type

Returns: (str) AWS: the destination VM volume type/disk type

Expand source code Browse git
@property
def volume_type(self):
    """Returns: (str) AWS: the destination VM volume type/disk type"""
    return self._volume_type

Methods

def refresh(self)

Refresh the properties of the Recovery Target.

Expand source code Browse git
def refresh(self):
    """Refresh the properties of the Recovery Target."""
    self._get_recovery_target_properties()
class RecoveryTargets (commcell_object)

Class for representing all the clients associated with the commcell.

Initialize object of the Clients class.

Args

commcell_object (object) – instance of the Commcell class

Expand source code Browse git
class RecoveryTargets:

    """Class for representing all the clients associated with the commcell."""

    def __init__(self, commcell_object):
        """Initialize object of the Clients class.

            Args:
                commcell_object (object)  --  instance of the Commcell class

        """
        self._commcell_object = commcell_object

        self._cvpysdk_object = commcell_object._cvpysdk_object
        self._services = commcell_object._services
        self._update_response_ = commcell_object._update_response_
        self._RECOVERY_TARGETS = self._services['GET_ALL_RECOVERY_TARGETS']

        self._recovery_targets = None
        self.refresh()

    def __str__(self):
        """Representation string consisting of all targets .

            Returns:
                str     -   string of all the targets

        """
        representation_string = '{:^5}\t{:^20}\n\n'.format('S. No.', 'RecoverTargets')

        for index, recovery_target in enumerate(self._recovery_targets):
            sub_str = '{:^5}\t{:20}\n'.format(
                index + 1,
                recovery_target
            )
            representation_string += sub_str

        return representation_string.strip()


    def _get_recovery_targets(self):
        """Gets all the recovery targets.

            Returns:
                dict - consists of all targets in the client
                    {
                         "target1_name": target1_id,
                         "target2_name": target2_id
                    }

            Raises:
                SDKException:
                    if response is empty

                    if response is not success

        """
        flag, response = self._cvpysdk_object.make_request('GET', self._RECOVERY_TARGETS)

        if flag:
            if response.json() and 'policy' in response.json():

                recovery_target_dict = {}

                for dictionary in response.json()['policy']:
                    temp_name = dictionary['entity']['vmAllocPolicyName'].lower()
                    recovery_target_dict[temp_name] = str(dictionary['entity']['vmAllocPolicyId'])

                return recovery_target_dict
            else:
                raise SDKException('Response', '102')
        else:
            raise SDKException('Response', '101', self._update_response_(response.text))

    @property
    def all_targets(self):
        """Returns dict of all the targets.

         Returns dict    -   consists of all targets

                {
                    "target1_name": target1_id,

                    "target2_name": target2_id
                }

        """
        return self._recovery_targets

    def has_recovery_target(self, target_name):
        """Checks if a target is present in the commcell.

            Args:
                target_name (str)  --  name of the target

            Returns:
                bool - boolean output whether the target is present in commcell or not

            Raises:
                SDKException:
                    if type of the target name argument is not string

        """
        if not isinstance(target_name, str):
            raise SDKException('Target', '101')

        return self._recovery_targets and target_name.lower() in self._recovery_targets

    def get(self, recovery_target_name):
        """Returns a target object.

            Args:
                target_name (str)  --  name of the target

            Returns:
                object - instance of the target class for the given target name

            Raises:
                SDKException:
                    if type of the target name argument is not string

                    if no target exists with the given name

        """
        if not isinstance(recovery_target_name, str):
            raise SDKException('Target', '101')
        else:
            recovery_target_name = recovery_target_name.lower()

            if self.has_recovery_target(recovery_target_name):
                return RecoveryTarget(
                    self._commcell_object, recovery_target_name, self.all_targets[recovery_target_name])

            raise SDKException('RecoveryTarget', '102', 'No target exists with name: {0}'.format(recovery_target_name))

    def refresh(self):
        """Refresh the recovery targets"""
        self._recovery_targets = self._get_recovery_targets()

Instance variables

var all_targets

Returns dict of all the targets.

Returns dict - consists of all targets

   {
       "target1_name": target1_id,

       "target2_name": target2_id
   }
Expand source code Browse git
@property
def all_targets(self):
    """Returns dict of all the targets.

     Returns dict    -   consists of all targets

            {
                "target1_name": target1_id,

                "target2_name": target2_id
            }

    """
    return self._recovery_targets

Methods

def get(self, recovery_target_name)

Returns a target object.

Args

target_name (str) – name of the target

Returns

object - instance of the target class for the given target name

Raises

SDKException: if type of the target name argument is not string

if no target exists with the given name
Expand source code Browse git
def get(self, recovery_target_name):
    """Returns a target object.

        Args:
            target_name (str)  --  name of the target

        Returns:
            object - instance of the target class for the given target name

        Raises:
            SDKException:
                if type of the target name argument is not string

                if no target exists with the given name

    """
    if not isinstance(recovery_target_name, str):
        raise SDKException('Target', '101')
    else:
        recovery_target_name = recovery_target_name.lower()

        if self.has_recovery_target(recovery_target_name):
            return RecoveryTarget(
                self._commcell_object, recovery_target_name, self.all_targets[recovery_target_name])

        raise SDKException('RecoveryTarget', '102', 'No target exists with name: {0}'.format(recovery_target_name))
def has_recovery_target(self, target_name)

Checks if a target is present in the commcell.

Args

target_name (str) – name of the target

Returns

bool - boolean output whether the target is present in commcell or not

Raises

SDKException: if type of the target name argument is not string

Expand source code Browse git
def has_recovery_target(self, target_name):
    """Checks if a target is present in the commcell.

        Args:
            target_name (str)  --  name of the target

        Returns:
            bool - boolean output whether the target is present in commcell or not

        Raises:
            SDKException:
                if type of the target name argument is not string

    """
    if not isinstance(target_name, str):
        raise SDKException('Target', '101')

    return self._recovery_targets and target_name.lower() in self._recovery_targets
def refresh(self)

Refresh the recovery targets

Expand source code Browse git
def refresh(self):
    """Refresh the recovery targets"""
    self._recovery_targets = self._get_recovery_targets()