コード例 #1
0
ファイル: univmax_conn.py プロジェクト: jakeval/PyU4V
class U4VConn(object):
    """U4VConn."""
    def __init__(self,
                 username=None,
                 password=None,
                 server_ip=None,
                 port=None,
                 verify=None,
                 u4v_version=constants.UNIVMAX_VERSION,
                 interval=5,
                 retries=200,
                 array_id=None):
        """__init__."""
        self.end_date = int(round(time.time() * 1000))
        self.start_date = (self.end_date - 3600000)
        self.array_id = array_id
        if not self.array_id:
            try:
                self.array_id = CFG.get('setup', 'array')
            except Exception:
                LOG.warning("No array id specified. Please set "
                            "array ID using the 'set_array_id(array_id)' "
                            "function.")
        if CFG is not None:
            if not username:
                username = CFG.get('setup', 'username')
            if not password:
                password = CFG.get('setup', 'password')
            if not server_ip:
                server_ip = CFG.get('setup', 'server_ip')
            if not port:
                port = CFG.get('setup', 'port')
        if verify is None:
            try:
                verify = CFG.get('setup', 'verify')
                if verify.lower() == 'false':
                    verify = False
                elif verify.lower() == 'true':
                    verify = True
            except Exception:
                verify = True
        base_url = "https://%s:%s/univmax/restapi" % (server_ip, port)
        self.rest_client = RestRequests(username, password, verify, base_url)
        self.request = self.rest_client.rest_request
        self.U4V_VERSION = u4v_version
        self.common = CommonFunctions(self.request, interval, retries,
                                      u4v_version)
        self.provisioning = ProvisioningFunctions(self.array_id, self.request,
                                                  self.common,
                                                  self.U4V_VERSION)
        self.performance = PerformanceFunctions(self.array_id, self.request,
                                                self.common, self.provisioning,
                                                self.U4V_VERSION)
        self.replication = ReplicationFunctions(self.array_id, self.request,
                                                self.common, self.provisioning,
                                                self.U4V_VERSION)
        self.migration = MigrationFunctions(self.array_id, self.request,
                                            self.common, self.U4V_VERSION)

    def close_session(self):
        """Close the current rest session."""
        self.rest_client.close_session()

    def set_requests_timeout(self, timeout_value):
        """Set the requests timeout.

        :param timeout_value: the new timeout value - int
        """
        self.rest_client.timeout = timeout_value

    def set_array_id(self, array_id):
        """Set the array serial number.

        :param array_id: the array serial number
        """
        self.array_id = array_id
        self.performance.array_id = array_id
        self.provisioning.array_id = array_id
        self.replication.array_id = array_id
        self.migration.array_id = array_id
コード例 #2
0
class U4VConn(object):
    """U4VConn."""

    def __init__(self, username=None, password=None, server_ip=None,
                 port=None, verify=None,
                 u4v_version=constants.UNISPHERE_VERSION,
                 interval=5, retries=200, array_id=None,
                 application_type=None, remote_array=None,
                 remote_array_2=None):
        """__init__."""
        config = config_handler.set_logger_and_config(file_path)
        self.end_date = int(round(time.time() * 1000))
        self.start_date = (self.end_date - 3600000)
        self.array_id = array_id
        # Set array ID
        if not self.array_id:
            try:
                self.array_id = config.get(SETUP, ARRAY)
            except Exception:
                LOG.warning(
                    'No array id specified. Please set array ID using '
                    'U4VConn.set_array_id(array_id).')
        # Set environment config
        if config is not None:
            if not username:
                username = config.get(SETUP, USERNAME)
            if not password:
                password = config.get(SETUP, PASSWORD)
            if not server_ip:
                server_ip = config.get(SETUP, SERVER_IP)
            if not port:
                port = config.get(SETUP, PORT)
            # Optional Parameters for SRDF Remote array configurations
            if config.has_option(SETUP, R_ARRAY):
                if not remote_array:
                    self.remote_array = config.get(SETUP, R_ARRAY)
            else:
                self.remote_array = None
            if config.has_option(SETUP, R_ARRAY_2):
                if not remote_array_2:
                    self.remote_array_2 = config.get(SETUP, R_ARRAY_2)
            else:
                self.remote_array_2 = None

        # Set verification
        if verify is None:
            try:
                verify = config.get(SETUP, VERIFY)
                if verify.lower() == 'false':
                    verify = False
                elif verify.lower() == 'true':
                    verify = True
            except Exception:
                verify = True
        if None in [username, password, server_ip, port]:
            raise exception.MissingConfigurationException
        # Initialise REST session
        base_url = 'https://{server_ip}:{port}/univmax/restapi'.format(
            server_ip=server_ip, port=port)

        self.rest_client = RestRequests(
            username, password, verify, base_url, interval, retries,
            application_type)
        self.request = self.rest_client.rest_request
        self.common = CommonFunctions(self.rest_client)
        self.provisioning = ProvisioningFunctions(self.array_id,
                                                  self.rest_client)
        self.performance = PerformanceFunctions(self.array_id,
                                                self.rest_client)
        self.replication = ReplicationFunctions(self.array_id,
                                                self.rest_client)
        self.metro_dr = MetroDRFunctions(self.array_id, self.rest_client)
        self.migration = MigrationFunctions(self.array_id,
                                            self.rest_client)
        self.wlp = WLPFunctions(self.array_id,
                                self.rest_client)
        self.snapshot_policy = SnapshotPolicyFunctions(self.array_id,
                                                       self.rest_client)
        self.system = SystemFunctions(self.array_id, self.rest_client)
        self.validate_unisphere()

    def close_session(self):
        """Close the current rest session."""
        self.rest_client.close_session()

    def set_requests_timeout(self, timeout_value):
        """Set the requests timeout.

        :param timeout_value: the new timeout value -- int
        """
        self.rest_client.timeout = timeout_value

    def set_array_id(self, array_id):
        """Set the array serial number.

        :param array_id: the array serial number -- str
        """
        self.array_id = array_id
        self.performance.array_id = array_id
        self.provisioning.array_id = array_id
        self.replication.array_id = array_id
        self.migration.array_id = array_id
        self.wlp.array_id = array_id
        self.system.array_id = array_id

    def validate_unisphere(self):
        """Check that the minimum version of Unisphere is in-use.

        If the version of Unisphere used does not meet minimum requirements
        the application will exit gracefully.

        :raises: SystemExit
        """
        uni_ver, major_ver = self.common.get_uni_version()
        if int(major_ver) < int(constants.UNISPHERE_VERSION):
            msg = ('Unisphere version {uv} does not meet the minimum '
                   'requirement of v9.2.0.x Please upgrade your version of '
                   'Unisphere to use this SDK. Exiting...'.format(uv=uni_ver))
            sys.exit(msg)
        else:
            LOG.debug('Unisphere version {uv} passes minimum requirement '
                      'check.'.format(uv=uni_ver))