Module cvpysdk.deployment.cache_config
" Main file for performing the software cache configuration related operations
CommserveCache – Class for performing operations on the CS cache RemoteCache – Class for performing operations on the remote cache
CommServeCache
__init__(commcell_object) -- initialize commcell_object of CommServeCache class
associated with the commcell
get_request_xml() -- returns request xml for cache and remote cache related operations
get_cs_cache_path() -- returns CS cache path
delete_cache() -- deletes CS cache
commit_cache() -- commits CS cache
RemoteCache
__init__(commcell, client_object) -- initialize commcell and client_object of RemoteCache class
associated with the client
get_remote_cache_path() -- returns remote cache path, if exists, else None
configure_remote_cache() -- Configures client as remote cache
configure_packages_to_sync() -- Configures packages to sync for the remote cache
assoc_entity_to_remote_cache() -- Associates entity to the Remote Cache
delete_remote_cache_contents() -- deletes remote cache contents
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 the software cache configuration related operations
CommserveCache -- Class for performing operations on the CS cache
RemoteCache -- Class for performing operations on the remote cache
CommServeCache
==============
__init__(commcell_object) -- initialize commcell_object of CommServeCache class
associated with the commcell
get_request_xml() -- returns request xml for cache and remote cache related operations
get_cs_cache_path() -- returns CS cache path
delete_cache() -- deletes CS cache
commit_cache() -- commits CS cache
RemoteCache
==============
__init__(commcell, client_object) -- initialize commcell and client_object of RemoteCache class
associated with the client
get_remote_cache_path() -- returns remote cache path, if exists, else None
configure_remote_cache() -- Configures client as remote cache
configure_packages_to_sync() -- Configures packages to sync for the remote cache
assoc_entity_to_remote_cache() -- Associates entity to the Remote Cache
delete_remote_cache_contents() -- deletes remote cache contents
"""
from xml.etree import ElementTree as ET
from ..exception import SDKException
from .deploymentconstants import UnixDownloadFeatures
from .deploymentconstants import WindowsDownloadFeatures
from .deploymentconstants import OSNameIDMapping
class CommServeCache(object):
""""class for downloading software packages"""
def __init__(self, commcell_object):
"""Initialize commcell_object of the Download class.
Args:
commcell_object (object) -- instance of the Commcell class
Returns:
object - instance of the CommServeCache class
"""
self.commcell_object = commcell_object
self.request_xml = CommServeCache.get_request_xml()
@staticmethod
def get_request_xml():
"""Returns request xml for cache and remote cache related operations"""
return """<EVGui_SetUpdateAgentInfoReq>
<uaInfo deletePackageCache="" deleteUpdateCache="" swAgentOpType=""
uaOpCode="0" uaPackageCacheStatus="0"
uaUpdateCacheStatus="0" >
<uaName id="2" name=""/>
<client _type_="3"/>
</uaInfo>
</EVGui_SetUpdateAgentInfoReq>
"""
def get_cs_cache_path(self):
"""
Returns CS cache path
Returns:
cs_cache_path (str) -- returns cs cache path
Raises:
SDKException:
- Failed to execute the api
- Response is incorrect/empty
"""
try:
response = self.commcell_object.get_gxglobalparam_value()
except Exception:
try:
response = self.commcell_object.get_gxglobalparam_value('Patch Directory')
except Exception:
raise SDKException('Response', '101', 'Failed to execute api for get_cs_cache_path')
if response == '':
raise SDKException('Response', '102')
return response
if response['error']['errorCode'] != 0:
error_message = "Failed with error: [{0}]".format(
response['error']['errorMessage']
)
raise SDKException(
'Response',
'101',
'Error Code:"{0}"\nError Message: "{1}"'.format(response['error']['errorCode'], error_message)
)
try:
return response['commserveSoftwareCache']['storePatchlocation']
except Exception:
raise SDKException('Response', '102')
def delete_cache(self):
"""
Delete CS cache
Raises:
SDKException:
- Failed to execute the api
- Response is incorrect
"""
root = ET.fromstring(self.request_xml)
uaInfo = root.find(".//uaInfo")
uaInfo.set('deletePackageCache', "1")
uaInfo.set("deleteUpdateCache", "1")
uaInfo.set("swAgentOpType", "1")
response = self.commcell_object.qoperation_execute(ET.tostring(root))
if response.get('errorCode') != 0:
error_message = "Failed with error: [{0}]".format(
response.get('errorMessage')
)
raise SDKException(
'Response',
'101',
'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message)
)
def commit_cache(self):
"""
Commits CS cache
Raises:
SDKException:
- Failed to execute the api
- Response is incorrect
"""
root = ET.fromstring(self.request_xml)
uaInfo = root.find(".//uaInfo")
uaInfo.set('deletePackageCache', "0")
uaInfo.set("deleteUpdateCache", "0")
uaInfo.set("swAgentOpType", "4")
response = self.commcell_object.qoperation_execute(ET.tostring(root))
if response.get('errorCode') != 0:
error_message = "Failed with error: [{0}]".format(
response.get('errorMessage')
)
raise SDKException(
'Response',
'101',
'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message)
)
class RemoteCache(object):
""""class for downloading software packages"""
def __init__(self, commcell, client_name):
"""Initialize commcell_object of the Download class.
Args:
commcell (object) -- commcell object
client_name -- client name
Returns:
object - instance of the RemoteCache class
"""
self.commcell = commcell
self.client_object = self.commcell.clients.get(client_name)
self.request_xml = CommServeCache.get_request_xml()
self._cvpysdk_object = commcell._cvpysdk_object
self._services = commcell._services
def get_remote_cache_path(self):
"""
Returns remote cache path, if exists, else None
Returns:
remote_cache_path (str) - remote cache path of the client if exists
None - otherwise
Raises:
SDKException:
- Failed to execute the api
- Response is incorrect/empty
"""
request_xml = '<EVGui_GetUpdateAgentInfoReq />'
response = self.commcell.qoperation_execute(request_xml)
if response:
try:
for clients in response["uaInfo"]:
if clients['client']['clientName'] == self.client_object.client_name:
return clients["uaCachePath"]
return None
except Exception:
raise SDKException('Response', '101')
else:
raise SDKException('Response', '102')
def configure_remotecache(self, cache_path):
"""
Configures client as remote cache
Args:
cache_path (str) - Remote cache path
Raises:
SDKException:
- Failed to execute the api
- Response is incorrect
"""
root = ET.fromstring(self.request_xml)
uaInfo = root.find(".//uaInfo")
uaInfo.set('uaCachePath', cache_path)
uaInfo.set('uaOpCode', "5")
uaInfo.attrib.pop("uaPackageCacheStatus")
uaInfo.attrib.pop('uaUpdateCacheStatus')
root.find("./uaInfo/uaName").set("id", self.client_object.client_id)
root.find("./uaInfo/uaName").set("name", self.client_object.client_name)
response = self.commcell.qoperation_execute(ET.tostring(root))
if response.get('errorCode') != 0:
error_message = "Failed with error: [{0}]".format(
response.get('errorMessage')
)
raise SDKException(
'Response',
'101',
'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message)
)
def configure_packages_to_sync(self, win_os=None, win_package_list=None, unix_os=None,
unix_package_list=None):
"""
Configures packages to sync for the remote cache
Args:
win_os (list) -- list of windows oses to sync
win_package_list (list)-- list of windows packages to sync
unix_os (list) -- list of unix oses to sync
unix_package_list (list)-- list of unix packages to sync
Raises:
SDKException:
- Failed to execute the api
- Response is incorrect
- Incorrect input
Usage:
commcell_obj.configure_packages_to_sync()
win_os = ["WINDOWS_32", "WINDOWS_64"]
unix_os = ["UNIX_LINUX64", "UNIX_AIX"]
win_package_list = ["FILE_SYSTEM", "MEDIA_AGENT"]
unix_package_list = ["FILE_SYSTEM", "MEDIA_AGENT"]
OS_Name_ID_Mapping, WindowsDownloadFeatures and UnixDownloadFeatures enum is used for
providing input to the configure_packages_to_sync method, it can be imported by
>>> from cvpysdk.deployment.deploymentconstants import UnixDownloadFeatures
from cvpysdk.deployment.deploymentconstants import OS_Name_ID_Mapping
from cvpysdk.deployment.deploymentconstants import WindowsDownloadFeatures
"""
if win_os:
win_os_id = [eval(f"OSNameIDMapping.{each}.value") for each in win_os]
win_packages = [eval(f"WindowsDownloadFeatures.{packages}.value") for packages in win_package_list]
if unix_os:
unix_os_id = [eval(f"OSNameIDMapping.{each}.value") for each in unix_os]
unix_packages = [eval(f"UnixDownloadFeatures.{packages}.value") for packages in unix_package_list]
if not win_os and not unix_os:
qscript = f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncAll'''
elif not unix_os:
qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom '''
f'''-si {",".join(map(str, win_os_id))} -si {",".join(map(str, win_packages))}''')
elif not win_os:
qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom '''
f'''-si {",".join(map(str, unix_os_id))} -si {",".join(map(str, unix_packages))}''')
else:
qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom '''
f'''-si {",".join(map(str, win_os_id))} -si {",".join(map(str, win_packages))} '''
f'''-si {",".join(map(str, unix_os_id))} -si {",".join(map(str, unix_packages))}''')
response = self.commcell._qoperation_execscript(qscript)
if response.get('CVGui_GenericResp'):
if response['CVGui_GenericResp']['@errorCode'] != 0:
error_message = "Failed with error: [{0}]".format(
response['CVGui_GenericResp']['@errorMessage']
)
raise SDKException(
'Response',
'101',
'Error Code:"{0}"\nError Message: "{1}"'.format(
response['CVGui_GenericResp']['@errorCode'],
error_message))
def delete_remote_cache_contents(self):
"""
Delete remote cache contents
Raises:
SDKException:
- Failed to execute the api
- Response is incorrect
"""
root = ET.fromstring(self.request_xml)
uaInfo = root.find(".//uaInfo")
uaInfo.set('deletePackageCache', "1")
uaInfo.set("deleteUpdateCache", "1")
uaInfo.set("swAgentOpType", "1")
root.find("./uaInfo/uaName").set("id", self.client_object.client_id)
root.find("./uaInfo/uaName").set("name", self.client_object.client_name)
response = self.commcell.qoperation_execute(ET.tostring(root))
if response.get('errorCode') != 0:
error_message = "Failed with error: [{0}]".format(
response.get('errorMessage')
)
raise SDKException(
'Response',
'101',
'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message)
)
def assoc_entity_to_remote_cache(self, client_name=None, client_group_name=None):
"""
Points/Associates entity to the Remote Cache Client
Args:
client_name (str) -- The client which has to be pointed to Remote Cache
client_group_name (str) -- The client_group which has to be pointed to Remote Cache
Raises:
SDKException:
- Failed to execute the api
- Response is incorrect
"""
if client_name is None and client_group_name is None:
raise Exception("No clients or client groups to associate; Please provide a valid name")
if client_name and client_name in self.commcell.clients.all_clients:
entity_obj = self.commcell.clients.get(client_name)
entity_id = entity_obj.client_id
entity_name = entity_obj.client_name
entity_type ="0"
elif client_group_name in self.commcell.client_groups.all_clientgroups:
entity_obj = self.commcell.client_groups.get(client_group_name)
entity_id = entity_obj.clientgroup_id
entity_name = entity_obj.clientgroup_name
entity_type = "1"
else:
raise Exception("{0} does not exist".format(client_name if client_name else client_group_name))
request_json = {
"EVGui_SetUpdateAgentInfoReq" :{
"uaInfo": {
"uaCachePath": self.get_remote_cache_path(),
"uaOpCode": "5",
"uaName": {
"id": self.client_object.client_id,
"name": self.client_object.client_name
}
},
"uaList": {
"addedList": {
"id": entity_id,
"name": entity_name,
"type": entity_type
}
}
}
}
flag, response = self._cvpysdk_object.make_request(
'POST', self._services['EXECUTE_QCOMMAND'], request_json
)
if flag:
if response.ok:
if response.json():
if response.json().get('errorCode') != 0:
error_code = response.json().get('errorCode')
error_message = "Failed with error: [{0}]".format(
response.json().get('errorMessage')
)
raise SDKException(
'Response',
'101',
'Error Code:"{0}"\nError Message: "{1}"'.format(error_code, error_message)
)
else:
raise SDKException('Response', '102')
else:
raise SDKException('Response', '102')
else:
raise SDKException('Response', '101')
Classes
class CommServeCache (commcell_object)
-
"class for downloading software packages
Initialize commcell_object of the Download class.
Args
commcell_object (object) – instance of the Commcell class
Returns
object - instance of the CommServeCache class
Expand source code Browse git
class CommServeCache(object): """"class for downloading software packages""" def __init__(self, commcell_object): """Initialize commcell_object of the Download class. Args: commcell_object (object) -- instance of the Commcell class Returns: object - instance of the CommServeCache class """ self.commcell_object = commcell_object self.request_xml = CommServeCache.get_request_xml() @staticmethod def get_request_xml(): """Returns request xml for cache and remote cache related operations""" return """<EVGui_SetUpdateAgentInfoReq> <uaInfo deletePackageCache="" deleteUpdateCache="" swAgentOpType="" uaOpCode="0" uaPackageCacheStatus="0" uaUpdateCacheStatus="0" > <uaName id="2" name=""/> <client _type_="3"/> </uaInfo> </EVGui_SetUpdateAgentInfoReq> """ def get_cs_cache_path(self): """ Returns CS cache path Returns: cs_cache_path (str) -- returns cs cache path Raises: SDKException: - Failed to execute the api - Response is incorrect/empty """ try: response = self.commcell_object.get_gxglobalparam_value() except Exception: try: response = self.commcell_object.get_gxglobalparam_value('Patch Directory') except Exception: raise SDKException('Response', '101', 'Failed to execute api for get_cs_cache_path') if response == '': raise SDKException('Response', '102') return response if response['error']['errorCode'] != 0: error_message = "Failed with error: [{0}]".format( response['error']['errorMessage'] ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response['error']['errorCode'], error_message) ) try: return response['commserveSoftwareCache']['storePatchlocation'] except Exception: raise SDKException('Response', '102') def delete_cache(self): """ Delete CS cache Raises: SDKException: - Failed to execute the api - Response is incorrect """ root = ET.fromstring(self.request_xml) uaInfo = root.find(".//uaInfo") uaInfo.set('deletePackageCache', "1") uaInfo.set("deleteUpdateCache", "1") uaInfo.set("swAgentOpType", "1") response = self.commcell_object.qoperation_execute(ET.tostring(root)) if response.get('errorCode') != 0: error_message = "Failed with error: [{0}]".format( response.get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message) ) def commit_cache(self): """ Commits CS cache Raises: SDKException: - Failed to execute the api - Response is incorrect """ root = ET.fromstring(self.request_xml) uaInfo = root.find(".//uaInfo") uaInfo.set('deletePackageCache', "0") uaInfo.set("deleteUpdateCache", "0") uaInfo.set("swAgentOpType", "4") response = self.commcell_object.qoperation_execute(ET.tostring(root)) if response.get('errorCode') != 0: error_message = "Failed with error: [{0}]".format( response.get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message) )
Static methods
def get_request_xml()
-
Returns request xml for cache and remote cache related operations
Expand source code Browse git
@staticmethod def get_request_xml(): """Returns request xml for cache and remote cache related operations""" return """<EVGui_SetUpdateAgentInfoReq> <uaInfo deletePackageCache="" deleteUpdateCache="" swAgentOpType="" uaOpCode="0" uaPackageCacheStatus="0" uaUpdateCacheStatus="0" > <uaName id="2" name=""/> <client _type_="3"/> </uaInfo> </EVGui_SetUpdateAgentInfoReq> """
Methods
def commit_cache(self)
-
Commits CS cache
Raises
SDKException: - Failed to execute the api
- Response is incorrect
Expand source code Browse git
def commit_cache(self): """ Commits CS cache Raises: SDKException: - Failed to execute the api - Response is incorrect """ root = ET.fromstring(self.request_xml) uaInfo = root.find(".//uaInfo") uaInfo.set('deletePackageCache', "0") uaInfo.set("deleteUpdateCache", "0") uaInfo.set("swAgentOpType", "4") response = self.commcell_object.qoperation_execute(ET.tostring(root)) if response.get('errorCode') != 0: error_message = "Failed with error: [{0}]".format( response.get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message) )
def delete_cache(self)
-
Delete CS cache
Raises
SDKException: - Failed to execute the api
- Response is incorrect
Expand source code Browse git
def delete_cache(self): """ Delete CS cache Raises: SDKException: - Failed to execute the api - Response is incorrect """ root = ET.fromstring(self.request_xml) uaInfo = root.find(".//uaInfo") uaInfo.set('deletePackageCache', "1") uaInfo.set("deleteUpdateCache", "1") uaInfo.set("swAgentOpType", "1") response = self.commcell_object.qoperation_execute(ET.tostring(root)) if response.get('errorCode') != 0: error_message = "Failed with error: [{0}]".format( response.get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message) )
def get_cs_cache_path(self)
-
Returns CS cache path
Returns
cs_cache_path (str) – returns cs cache path
Raises
SDKException: - Failed to execute the api
- Response is incorrect/empty
Expand source code Browse git
def get_cs_cache_path(self): """ Returns CS cache path Returns: cs_cache_path (str) -- returns cs cache path Raises: SDKException: - Failed to execute the api - Response is incorrect/empty """ try: response = self.commcell_object.get_gxglobalparam_value() except Exception: try: response = self.commcell_object.get_gxglobalparam_value('Patch Directory') except Exception: raise SDKException('Response', '101', 'Failed to execute api for get_cs_cache_path') if response == '': raise SDKException('Response', '102') return response if response['error']['errorCode'] != 0: error_message = "Failed with error: [{0}]".format( response['error']['errorMessage'] ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response['error']['errorCode'], error_message) ) try: return response['commserveSoftwareCache']['storePatchlocation'] except Exception: raise SDKException('Response', '102')
class RemoteCache (commcell, client_name)
-
"class for downloading software packages
Initialize commcell_object of the Download class.
Args
commcell (object) – commcell object client_name – client name
Returns
object - instance of the RemoteCache class
Expand source code Browse git
class RemoteCache(object): """"class for downloading software packages""" def __init__(self, commcell, client_name): """Initialize commcell_object of the Download class. Args: commcell (object) -- commcell object client_name -- client name Returns: object - instance of the RemoteCache class """ self.commcell = commcell self.client_object = self.commcell.clients.get(client_name) self.request_xml = CommServeCache.get_request_xml() self._cvpysdk_object = commcell._cvpysdk_object self._services = commcell._services def get_remote_cache_path(self): """ Returns remote cache path, if exists, else None Returns: remote_cache_path (str) - remote cache path of the client if exists None - otherwise Raises: SDKException: - Failed to execute the api - Response is incorrect/empty """ request_xml = '<EVGui_GetUpdateAgentInfoReq />' response = self.commcell.qoperation_execute(request_xml) if response: try: for clients in response["uaInfo"]: if clients['client']['clientName'] == self.client_object.client_name: return clients["uaCachePath"] return None except Exception: raise SDKException('Response', '101') else: raise SDKException('Response', '102') def configure_remotecache(self, cache_path): """ Configures client as remote cache Args: cache_path (str) - Remote cache path Raises: SDKException: - Failed to execute the api - Response is incorrect """ root = ET.fromstring(self.request_xml) uaInfo = root.find(".//uaInfo") uaInfo.set('uaCachePath', cache_path) uaInfo.set('uaOpCode', "5") uaInfo.attrib.pop("uaPackageCacheStatus") uaInfo.attrib.pop('uaUpdateCacheStatus') root.find("./uaInfo/uaName").set("id", self.client_object.client_id) root.find("./uaInfo/uaName").set("name", self.client_object.client_name) response = self.commcell.qoperation_execute(ET.tostring(root)) if response.get('errorCode') != 0: error_message = "Failed with error: [{0}]".format( response.get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message) ) def configure_packages_to_sync(self, win_os=None, win_package_list=None, unix_os=None, unix_package_list=None): """ Configures packages to sync for the remote cache Args: win_os (list) -- list of windows oses to sync win_package_list (list)-- list of windows packages to sync unix_os (list) -- list of unix oses to sync unix_package_list (list)-- list of unix packages to sync Raises: SDKException: - Failed to execute the api - Response is incorrect - Incorrect input Usage: commcell_obj.configure_packages_to_sync() win_os = ["WINDOWS_32", "WINDOWS_64"] unix_os = ["UNIX_LINUX64", "UNIX_AIX"] win_package_list = ["FILE_SYSTEM", "MEDIA_AGENT"] unix_package_list = ["FILE_SYSTEM", "MEDIA_AGENT"] OS_Name_ID_Mapping, WindowsDownloadFeatures and UnixDownloadFeatures enum is used for providing input to the configure_packages_to_sync method, it can be imported by >>> from cvpysdk.deployment.deploymentconstants import UnixDownloadFeatures from cvpysdk.deployment.deploymentconstants import OS_Name_ID_Mapping from cvpysdk.deployment.deploymentconstants import WindowsDownloadFeatures """ if win_os: win_os_id = [eval(f"OSNameIDMapping.{each}.value") for each in win_os] win_packages = [eval(f"WindowsDownloadFeatures.{packages}.value") for packages in win_package_list] if unix_os: unix_os_id = [eval(f"OSNameIDMapping.{each}.value") for each in unix_os] unix_packages = [eval(f"UnixDownloadFeatures.{packages}.value") for packages in unix_package_list] if not win_os and not unix_os: qscript = f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncAll''' elif not unix_os: qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom ''' f'''-si {",".join(map(str, win_os_id))} -si {",".join(map(str, win_packages))}''') elif not win_os: qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom ''' f'''-si {",".join(map(str, unix_os_id))} -si {",".join(map(str, unix_packages))}''') else: qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom ''' f'''-si {",".join(map(str, win_os_id))} -si {",".join(map(str, win_packages))} ''' f'''-si {",".join(map(str, unix_os_id))} -si {",".join(map(str, unix_packages))}''') response = self.commcell._qoperation_execscript(qscript) if response.get('CVGui_GenericResp'): if response['CVGui_GenericResp']['@errorCode'] != 0: error_message = "Failed with error: [{0}]".format( response['CVGui_GenericResp']['@errorMessage'] ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format( response['CVGui_GenericResp']['@errorCode'], error_message)) def delete_remote_cache_contents(self): """ Delete remote cache contents Raises: SDKException: - Failed to execute the api - Response is incorrect """ root = ET.fromstring(self.request_xml) uaInfo = root.find(".//uaInfo") uaInfo.set('deletePackageCache', "1") uaInfo.set("deleteUpdateCache", "1") uaInfo.set("swAgentOpType", "1") root.find("./uaInfo/uaName").set("id", self.client_object.client_id) root.find("./uaInfo/uaName").set("name", self.client_object.client_name) response = self.commcell.qoperation_execute(ET.tostring(root)) if response.get('errorCode') != 0: error_message = "Failed with error: [{0}]".format( response.get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message) ) def assoc_entity_to_remote_cache(self, client_name=None, client_group_name=None): """ Points/Associates entity to the Remote Cache Client Args: client_name (str) -- The client which has to be pointed to Remote Cache client_group_name (str) -- The client_group which has to be pointed to Remote Cache Raises: SDKException: - Failed to execute the api - Response is incorrect """ if client_name is None and client_group_name is None: raise Exception("No clients or client groups to associate; Please provide a valid name") if client_name and client_name in self.commcell.clients.all_clients: entity_obj = self.commcell.clients.get(client_name) entity_id = entity_obj.client_id entity_name = entity_obj.client_name entity_type ="0" elif client_group_name in self.commcell.client_groups.all_clientgroups: entity_obj = self.commcell.client_groups.get(client_group_name) entity_id = entity_obj.clientgroup_id entity_name = entity_obj.clientgroup_name entity_type = "1" else: raise Exception("{0} does not exist".format(client_name if client_name else client_group_name)) request_json = { "EVGui_SetUpdateAgentInfoReq" :{ "uaInfo": { "uaCachePath": self.get_remote_cache_path(), "uaOpCode": "5", "uaName": { "id": self.client_object.client_id, "name": self.client_object.client_name } }, "uaList": { "addedList": { "id": entity_id, "name": entity_name, "type": entity_type } } } } flag, response = self._cvpysdk_object.make_request( 'POST', self._services['EXECUTE_QCOMMAND'], request_json ) if flag: if response.ok: if response.json(): if response.json().get('errorCode') != 0: error_code = response.json().get('errorCode') error_message = "Failed with error: [{0}]".format( response.json().get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(error_code, error_message) ) else: raise SDKException('Response', '102') else: raise SDKException('Response', '102') else: raise SDKException('Response', '101')
Methods
def assoc_entity_to_remote_cache(self, client_name=None, client_group_name=None)
-
Points/Associates entity to the Remote Cache Client
Args: client_name (str) -- The client which has to be pointed to Remote Cache client_group_name (str) -- The client_group which has to be pointed to Remote Cache Raises: SDKException: - Failed to execute the api - Response is incorrect
Expand source code Browse git
def assoc_entity_to_remote_cache(self, client_name=None, client_group_name=None): """ Points/Associates entity to the Remote Cache Client Args: client_name (str) -- The client which has to be pointed to Remote Cache client_group_name (str) -- The client_group which has to be pointed to Remote Cache Raises: SDKException: - Failed to execute the api - Response is incorrect """ if client_name is None and client_group_name is None: raise Exception("No clients or client groups to associate; Please provide a valid name") if client_name and client_name in self.commcell.clients.all_clients: entity_obj = self.commcell.clients.get(client_name) entity_id = entity_obj.client_id entity_name = entity_obj.client_name entity_type ="0" elif client_group_name in self.commcell.client_groups.all_clientgroups: entity_obj = self.commcell.client_groups.get(client_group_name) entity_id = entity_obj.clientgroup_id entity_name = entity_obj.clientgroup_name entity_type = "1" else: raise Exception("{0} does not exist".format(client_name if client_name else client_group_name)) request_json = { "EVGui_SetUpdateAgentInfoReq" :{ "uaInfo": { "uaCachePath": self.get_remote_cache_path(), "uaOpCode": "5", "uaName": { "id": self.client_object.client_id, "name": self.client_object.client_name } }, "uaList": { "addedList": { "id": entity_id, "name": entity_name, "type": entity_type } } } } flag, response = self._cvpysdk_object.make_request( 'POST', self._services['EXECUTE_QCOMMAND'], request_json ) if flag: if response.ok: if response.json(): if response.json().get('errorCode') != 0: error_code = response.json().get('errorCode') error_message = "Failed with error: [{0}]".format( response.json().get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(error_code, error_message) ) else: raise SDKException('Response', '102') else: raise SDKException('Response', '102') else: raise SDKException('Response', '101')
def configure_packages_to_sync(self, win_os=None, win_package_list=None, unix_os=None, unix_package_list=None)
-
Configures packages to sync for the remote cache
Args
win_os (list) – list of windows oses to sync win_package_list (list)– list of windows packages to sync unix_os (list) – list of unix oses to sync unix_package_list (list)– list of unix packages to sync
Raises
SDKException: - Failed to execute the api
-
Response is incorrect
-
Incorrect input
Usage
commcell_obj.configure_packages_to_sync()
win_os = ["WINDOWS_32", "WINDOWS_64"] unix_os = ["UNIX_LINUX64", "UNIX_AIX"] win_package_list = ["FILE_SYSTEM", "MEDIA_AGENT"] unix_package_list = ["FILE_SYSTEM", "MEDIA_AGENT"]
OS_Name_ID_Mapping, WindowsDownloadFeatures and UnixDownloadFeatures enum is used for providing input to the configure_packages_to_sync method, it can be imported by
>>> from cvpysdk.deployment.deploymentconstants import UnixDownloadFeatures from cvpysdk.deployment.deploymentconstants import OS_Name_ID_Mapping from cvpysdk.deployment.deploymentconstants import WindowsDownloadFeatures
Expand source code Browse git
def configure_packages_to_sync(self, win_os=None, win_package_list=None, unix_os=None, unix_package_list=None): """ Configures packages to sync for the remote cache Args: win_os (list) -- list of windows oses to sync win_package_list (list)-- list of windows packages to sync unix_os (list) -- list of unix oses to sync unix_package_list (list)-- list of unix packages to sync Raises: SDKException: - Failed to execute the api - Response is incorrect - Incorrect input Usage: commcell_obj.configure_packages_to_sync() win_os = ["WINDOWS_32", "WINDOWS_64"] unix_os = ["UNIX_LINUX64", "UNIX_AIX"] win_package_list = ["FILE_SYSTEM", "MEDIA_AGENT"] unix_package_list = ["FILE_SYSTEM", "MEDIA_AGENT"] OS_Name_ID_Mapping, WindowsDownloadFeatures and UnixDownloadFeatures enum is used for providing input to the configure_packages_to_sync method, it can be imported by >>> from cvpysdk.deployment.deploymentconstants import UnixDownloadFeatures from cvpysdk.deployment.deploymentconstants import OS_Name_ID_Mapping from cvpysdk.deployment.deploymentconstants import WindowsDownloadFeatures """ if win_os: win_os_id = [eval(f"OSNameIDMapping.{each}.value") for each in win_os] win_packages = [eval(f"WindowsDownloadFeatures.{packages}.value") for packages in win_package_list] if unix_os: unix_os_id = [eval(f"OSNameIDMapping.{each}.value") for each in unix_os] unix_packages = [eval(f"UnixDownloadFeatures.{packages}.value") for packages in unix_package_list] if not win_os and not unix_os: qscript = f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncAll''' elif not unix_os: qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom ''' f'''-si {",".join(map(str, win_os_id))} -si {",".join(map(str, win_packages))}''') elif not win_os: qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom ''' f'''-si {",".join(map(str, unix_os_id))} -si {",".join(map(str, unix_packages))}''') else: qscript = (f'''-sn QS_GranularConfigRemoteCache -si '{self.client_object.client_name}' -si SyncCustom ''' f'''-si {",".join(map(str, win_os_id))} -si {",".join(map(str, win_packages))} ''' f'''-si {",".join(map(str, unix_os_id))} -si {",".join(map(str, unix_packages))}''') response = self.commcell._qoperation_execscript(qscript) if response.get('CVGui_GenericResp'): if response['CVGui_GenericResp']['@errorCode'] != 0: error_message = "Failed with error: [{0}]".format( response['CVGui_GenericResp']['@errorMessage'] ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format( response['CVGui_GenericResp']['@errorCode'], error_message))
-
def configure_remotecache(self, cache_path)
-
Configures client as remote cache
Args
cache_path (str) - Remote cache path
Raises
SDKException: - Failed to execute the api
- Response is incorrect
Expand source code Browse git
def configure_remotecache(self, cache_path): """ Configures client as remote cache Args: cache_path (str) - Remote cache path Raises: SDKException: - Failed to execute the api - Response is incorrect """ root = ET.fromstring(self.request_xml) uaInfo = root.find(".//uaInfo") uaInfo.set('uaCachePath', cache_path) uaInfo.set('uaOpCode', "5") uaInfo.attrib.pop("uaPackageCacheStatus") uaInfo.attrib.pop('uaUpdateCacheStatus') root.find("./uaInfo/uaName").set("id", self.client_object.client_id) root.find("./uaInfo/uaName").set("name", self.client_object.client_name) response = self.commcell.qoperation_execute(ET.tostring(root)) if response.get('errorCode') != 0: error_message = "Failed with error: [{0}]".format( response.get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message) )
def delete_remote_cache_contents(self)
-
Delete remote cache contents
Raises
SDKException: - Failed to execute the api
- Response is incorrect
Expand source code Browse git
def delete_remote_cache_contents(self): """ Delete remote cache contents Raises: SDKException: - Failed to execute the api - Response is incorrect """ root = ET.fromstring(self.request_xml) uaInfo = root.find(".//uaInfo") uaInfo.set('deletePackageCache', "1") uaInfo.set("deleteUpdateCache", "1") uaInfo.set("swAgentOpType", "1") root.find("./uaInfo/uaName").set("id", self.client_object.client_id) root.find("./uaInfo/uaName").set("name", self.client_object.client_name) response = self.commcell.qoperation_execute(ET.tostring(root)) if response.get('errorCode') != 0: error_message = "Failed with error: [{0}]".format( response.get('errorMessage') ) raise SDKException( 'Response', '101', 'Error Code:"{0}"\nError Message: "{1}"'.format(response.get('errorCode'), error_message) )
def get_remote_cache_path(self)
-
Returns remote cache path, if exists, else None
Returns
remote_cache_path (str) - remote cache path of the client if exists None - otherwise
Raises
SDKException: - Failed to execute the api
- Response is incorrect/empty
Expand source code Browse git
def get_remote_cache_path(self): """ Returns remote cache path, if exists, else None Returns: remote_cache_path (str) - remote cache path of the client if exists None - otherwise Raises: SDKException: - Failed to execute the api - Response is incorrect/empty """ request_xml = '<EVGui_GetUpdateAgentInfoReq />' response = self.commcell.qoperation_execute(request_xml) if response: try: for clients in response["uaInfo"]: if clients['client']['clientName'] == self.client_object.client_name: return clients["uaCachePath"] return None except Exception: raise SDKException('Response', '101') else: raise SDKException('Response', '102')