Module cvpysdk.policies.schedule_options

Main file for scheduler options related operations on the commcell.

This file has all the classes related to Schedule Options operations.

ScheduleOptions: Class for getting Schedule Options for Schedule and Schedule Policies

BackupOptions: Class for Backup Options for Schedule and Schedule Policies

AuxCopyOptions: Class for AuxCopy Options for Schedule and Schedule Policies

Scheduleoptions

new() – Returns the respective class object based on the option_type

init() – initialises ScheduleOptions for Schedule and Schedule Policies

options_json() – Returns the options json for the new options provided

Backupoptions

init() – initialises BackupOptions for Schedule and Schedule Policies

options_json() – Returns the options json for the new backup options provided

Auxcopyoptions

init() – initialises AuxCopyOptions for Schedule and Schedule Policies

options_json() – Returns the options json for the new AuxCopy options provided

Expand source code Browse git
# --------------------------------------------------------------------------
# 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 scheduler options related operations on the commcell.

This file has all the classes related to Schedule Options operations.

ScheduleOptions: Class for getting Schedule Options for Schedule and Schedule Policies

BackupOptions: Class for Backup Options for Schedule and Schedule Policies

AuxCopyOptions: Class for AuxCopy Options for Schedule and Schedule Policies

ScheduleOptions:

    __new__()       -- Returns the respective class object based on the option_type

    __init__()      --  initialises ScheduleOptions for Schedule and Schedule Policies

    options_json()  --  Returns the options json for the new options provided

BackupOptions:

    __init__()      --  initialises BackupOptions for Schedule and Schedule Policies

    options_json()  --  Returns the options json for the new backup options provided

AuxCopyOptions:

    __init__()      --  initialises AuxCopyOptions for Schedule and Schedule Policies

    options_json()  --  Returns the options json for the new AuxCopy options provided

"""

from abc import ABCMeta, abstractmethod

class ScheduleOptions:
    """Class for getting Schedule Options for Schedule and Schedule Policies."""

    __metaclass__ = ABCMeta

    #This map has to be updated with the subdict option_name for every new option class added
    policy_to_options_map = {

        'Data Protection': 'backupOpts',
        'Auxiliary Copy': 'auxcopyJobOption'
    }

    def __new__(cls, options_type, current_options=None):
        """
        Returns the respective class object based on the option_type

        Args:
            options_type (str) -- option type as per ScheduleOptions.options dict.
            current_options (dict) -- current options set for the schedule if any.

        Returns (obj) -- Return the class object based on the option_type

        """

        #This dict has to be update with the option_name and corresponding Option class created
        options = {

            'backupOpts': BackupOptions,
            'auxcopyJobOption': AuxCopyOptions

        }
        #subclass inherit __new__ method so we need this if check to initialize parent.
        if cls is not __class__:
            return super().__new__(cls)
        return options[options_type](current_options)




    def __init__(self, options_type, current_options=None):
        """
        Initialises Schedule Options class
        Args:
            options_type (str) -- option type as per ScheduleOptions.options dict.
            current_options (dict) -- current options set for the schedule if any.
        """
        if current_options:
            self.current_options = current_options
        else:
            self.current_options = {}

    @abstractmethod
    def options_json(self, new_options=None):
        """
        Returns the options json for the new options provided
        Args:
            new_options: options_json based on the type of scheduler option

        Returns (dict) -- new options

        """


class BackupOptions(ScheduleOptions):
    """Class for getting Backup Schedule Options for Schedule and Schedule Policies."""
    def __init__(self, options_type, current_options=None):
        """
        Initialises the BackupOptions class
        Args:
            options_type (str) -- should be 'backupOpts'
            current_options (dict) -- current backup options set for the schedule if any.
        """
        super().__init__(options_type, current_options)

    def options_json(self, new_options=None):
        """

        Returns the backup options json for the new options provided

        Args:
             new_options (dict) -- options which need to be set for the schedule
                                    Example:
                                     {
                                        "backupLevel": backup_level(Full / Incremental / Differential / Synthetic_full),
                                        "incLevel": incremental_level(BEFORE_SYNTH / AFTER_SYNTH),
                                        "runIncrementalBackup": incremental_backup
                                    }
        Returns (dict) -- new options


        """
        if not new_options:
            new_options = {}
        if self.current_options:
            for key, value in new_options.items():
                self.current_options[key] = value
            return {'backupOpts': self.current_options}

        default_dict = {
            "backupLevel": "Incremental",
            "incLevel": 1,
            "runIncrementalBackup": False
        }

        new_options = dict(default_dict, **new_options)
        return {'backupOpts': new_options}


class AuxCopyOptions(ScheduleOptions):
    """Class for getting AuxCopy Schedule Options for Schedule and Schedule Policies."""
    def __init__(self, options_type, current_options=None):
        """
        Initialises the AuxCopyOptions class
        Args:
            options_type (str) -- should be 'auxcopyJobOption'
            current_options (dict) -- current AuxCopy options set for the schedule if any.
        """
        super().__init__(options_type, current_options)

    def options_json(self, new_options=None):
        """

        Returns the AuxCopy options json for the new options provided

        Args:
             new_options (dict) -- options which need to be set for the schedule
                                    Example:
                                    {
                                        "maxNumberOfStreams": 0,
                                        "useMaximumStreams": True,
                                        "useScallableResourceManagement": True,
                                        "totalJobsToProcess": 1000,
                                        "allCopies": True,
                                        "mediaAgent": {
                                            "mediaAgentName": "<ANY MEDIAAGENT>"
                                        }
                                    }
        """
        if not new_options:
            new_options = {}
        if self.current_options:
            for key, value in new_options.items():
                self.current_options[key] = value
            return {'backupOpts':
                        {
                            'mediaOpt':
                                {
                                    'auxcopyJobOption': self.current_options
                                }
                        }
                    }

        default_dict = {
            "maxNumberOfStreams": 0,
            "useMaximumStreams": True,
            "useScallableResourceManagement": True,
            "totalJobsToProcess": 1000,
            "allCopies": True,
            "mediaAgent": {
                "mediaAgentName": "<ANY MEDIAAGENT>"
            }
        }

        new_options = dict(default_dict, **new_options)

        return {
            'backupOpts':
            {
                'mediaOpt':
                    {
                        'auxcopyJobOption': new_options
                    }
            }
            }

Classes

class AuxCopyOptions (options_type, current_options=None)

Class for getting AuxCopy Schedule Options for Schedule and Schedule Policies.

Initialises the AuxCopyOptions class

Args

options_type (str) – should be 'auxcopyJobOption' current_options (dict) – current AuxCopy options set for the schedule if any.

Expand source code Browse git
class AuxCopyOptions(ScheduleOptions):
    """Class for getting AuxCopy Schedule Options for Schedule and Schedule Policies."""
    def __init__(self, options_type, current_options=None):
        """
        Initialises the AuxCopyOptions class
        Args:
            options_type (str) -- should be 'auxcopyJobOption'
            current_options (dict) -- current AuxCopy options set for the schedule if any.
        """
        super().__init__(options_type, current_options)

    def options_json(self, new_options=None):
        """

        Returns the AuxCopy options json for the new options provided

        Args:
             new_options (dict) -- options which need to be set for the schedule
                                    Example:
                                    {
                                        "maxNumberOfStreams": 0,
                                        "useMaximumStreams": True,
                                        "useScallableResourceManagement": True,
                                        "totalJobsToProcess": 1000,
                                        "allCopies": True,
                                        "mediaAgent": {
                                            "mediaAgentName": "<ANY MEDIAAGENT>"
                                        }
                                    }
        """
        if not new_options:
            new_options = {}
        if self.current_options:
            for key, value in new_options.items():
                self.current_options[key] = value
            return {'backupOpts':
                        {
                            'mediaOpt':
                                {
                                    'auxcopyJobOption': self.current_options
                                }
                        }
                    }

        default_dict = {
            "maxNumberOfStreams": 0,
            "useMaximumStreams": True,
            "useScallableResourceManagement": True,
            "totalJobsToProcess": 1000,
            "allCopies": True,
            "mediaAgent": {
                "mediaAgentName": "<ANY MEDIAAGENT>"
            }
        }

        new_options = dict(default_dict, **new_options)

        return {
            'backupOpts':
            {
                'mediaOpt':
                    {
                        'auxcopyJobOption': new_options
                    }
            }
            }

Ancestors

Methods

def options_json(self, new_options=None)

Returns the AuxCopy options json for the new options provided

Args

new_options (dict) – options which need to be set for the schedule Example: { "maxNumberOfStreams": 0, "useMaximumStreams": True, "useScallableResourceManagement": True, "totalJobsToProcess": 1000, "allCopies": True, "mediaAgent": { "mediaAgentName": "" } }

Expand source code Browse git
def options_json(self, new_options=None):
    """

    Returns the AuxCopy options json for the new options provided

    Args:
         new_options (dict) -- options which need to be set for the schedule
                                Example:
                                {
                                    "maxNumberOfStreams": 0,
                                    "useMaximumStreams": True,
                                    "useScallableResourceManagement": True,
                                    "totalJobsToProcess": 1000,
                                    "allCopies": True,
                                    "mediaAgent": {
                                        "mediaAgentName": "<ANY MEDIAAGENT>"
                                    }
                                }
    """
    if not new_options:
        new_options = {}
    if self.current_options:
        for key, value in new_options.items():
            self.current_options[key] = value
        return {'backupOpts':
                    {
                        'mediaOpt':
                            {
                                'auxcopyJobOption': self.current_options
                            }
                    }
                }

    default_dict = {
        "maxNumberOfStreams": 0,
        "useMaximumStreams": True,
        "useScallableResourceManagement": True,
        "totalJobsToProcess": 1000,
        "allCopies": True,
        "mediaAgent": {
            "mediaAgentName": "<ANY MEDIAAGENT>"
        }
    }

    new_options = dict(default_dict, **new_options)

    return {
        'backupOpts':
        {
            'mediaOpt':
                {
                    'auxcopyJobOption': new_options
                }
        }
        }
class BackupOptions (options_type, current_options=None)

Class for getting Backup Schedule Options for Schedule and Schedule Policies.

Initialises the BackupOptions class

Args

options_type (str) – should be 'backupOpts' current_options (dict) – current backup options set for the schedule if any.

Expand source code Browse git
class BackupOptions(ScheduleOptions):
    """Class for getting Backup Schedule Options for Schedule and Schedule Policies."""
    def __init__(self, options_type, current_options=None):
        """
        Initialises the BackupOptions class
        Args:
            options_type (str) -- should be 'backupOpts'
            current_options (dict) -- current backup options set for the schedule if any.
        """
        super().__init__(options_type, current_options)

    def options_json(self, new_options=None):
        """

        Returns the backup options json for the new options provided

        Args:
             new_options (dict) -- options which need to be set for the schedule
                                    Example:
                                     {
                                        "backupLevel": backup_level(Full / Incremental / Differential / Synthetic_full),
                                        "incLevel": incremental_level(BEFORE_SYNTH / AFTER_SYNTH),
                                        "runIncrementalBackup": incremental_backup
                                    }
        Returns (dict) -- new options


        """
        if not new_options:
            new_options = {}
        if self.current_options:
            for key, value in new_options.items():
                self.current_options[key] = value
            return {'backupOpts': self.current_options}

        default_dict = {
            "backupLevel": "Incremental",
            "incLevel": 1,
            "runIncrementalBackup": False
        }

        new_options = dict(default_dict, **new_options)
        return {'backupOpts': new_options}

Ancestors

Methods

def options_json(self, new_options=None)

Returns the backup options json for the new options provided

Args

new_options (dict) – options which need to be set for the schedule Example: { "backupLevel": backup_level(Full / Incremental / Differential / Synthetic_full), "incLevel": incremental_level(BEFORE_SYNTH / AFTER_SYNTH), "runIncrementalBackup": incremental_backup } Returns (dict) – new options

Expand source code Browse git
def options_json(self, new_options=None):
    """

    Returns the backup options json for the new options provided

    Args:
         new_options (dict) -- options which need to be set for the schedule
                                Example:
                                 {
                                    "backupLevel": backup_level(Full / Incremental / Differential / Synthetic_full),
                                    "incLevel": incremental_level(BEFORE_SYNTH / AFTER_SYNTH),
                                    "runIncrementalBackup": incremental_backup
                                }
    Returns (dict) -- new options


    """
    if not new_options:
        new_options = {}
    if self.current_options:
        for key, value in new_options.items():
            self.current_options[key] = value
        return {'backupOpts': self.current_options}

    default_dict = {
        "backupLevel": "Incremental",
        "incLevel": 1,
        "runIncrementalBackup": False
    }

    new_options = dict(default_dict, **new_options)
    return {'backupOpts': new_options}
class ScheduleOptions (options_type, current_options=None)

Class for getting Schedule Options for Schedule and Schedule Policies.

Initialises Schedule Options class

Args

options_type (str) – option type as per ScheduleOptions.options dict. current_options (dict) – current options set for the schedule if any.

Expand source code Browse git
class ScheduleOptions:
    """Class for getting Schedule Options for Schedule and Schedule Policies."""

    __metaclass__ = ABCMeta

    #This map has to be updated with the subdict option_name for every new option class added
    policy_to_options_map = {

        'Data Protection': 'backupOpts',
        'Auxiliary Copy': 'auxcopyJobOption'
    }

    def __new__(cls, options_type, current_options=None):
        """
        Returns the respective class object based on the option_type

        Args:
            options_type (str) -- option type as per ScheduleOptions.options dict.
            current_options (dict) -- current options set for the schedule if any.

        Returns (obj) -- Return the class object based on the option_type

        """

        #This dict has to be update with the option_name and corresponding Option class created
        options = {

            'backupOpts': BackupOptions,
            'auxcopyJobOption': AuxCopyOptions

        }
        #subclass inherit __new__ method so we need this if check to initialize parent.
        if cls is not __class__:
            return super().__new__(cls)
        return options[options_type](current_options)




    def __init__(self, options_type, current_options=None):
        """
        Initialises Schedule Options class
        Args:
            options_type (str) -- option type as per ScheduleOptions.options dict.
            current_options (dict) -- current options set for the schedule if any.
        """
        if current_options:
            self.current_options = current_options
        else:
            self.current_options = {}

    @abstractmethod
    def options_json(self, new_options=None):
        """
        Returns the options json for the new options provided
        Args:
            new_options: options_json based on the type of scheduler option

        Returns (dict) -- new options

        """

Subclasses

Class variables

var policy_to_options_map

Methods

def options_json(self, new_options=None)

Returns the options json for the new options provided

Args

new_options
options_json based on the type of scheduler option

Returns (dict) – new options

Expand source code Browse git
@abstractmethod
def options_json(self, new_options=None):
    """
    Returns the options json for the new options provided
    Args:
        new_options: options_json based on the type of scheduler option

    Returns (dict) -- new options

    """