def cluster_backup(self): recvd_data = None validate_data = None self.json_url = "/wsg/api/scg/backup/cluster" self.validate_status = "/wsg/api/scg/patches/upgrade/status" try: data = '' url = ji.get_url(self.json_url, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.post_json_data(url, self.jsessionid, data) #recvd_data=True if not recvd_data: return None else: while True: validate_url = ji.get_url(self.validate_status, self.scg_mgmt_ip, self.scg_port) validate_data = ji.get_json_data(validate_url, self.jsessionid) if "data" in validate_data.keys(): if validate_data["data"]["previousOperationRecord"][ "success"] == True: return True print "Backup operation is in progress. Sleeping for 30 sec..." time.sleep(30) except Exception, e: #print "COMING INSIDE EXCEPTION" print traceback.format_exc() return None
def get_license_count(self): url = ji.get_url(self.LIC_UE_API,self.scg_mgmt_ip,self.scg_port) lic_data = ji.get_json_data(url,self.jsessionid) for licd in lic_data["data"]["licenseUsageList"]: if licd["type"] == "UE": ue_lic_consumed = licd["usedCount"]
def sz100_get_alarms(self, search_value, search_type="and"): sz_get_alarm_url = ji.get_url( self.sz_req_api_monitor_alarms % (search_type, search_value), self.scg_mgmt_ip, self.scg_port) recv_data = ji.get_json_data(sz_get_alarm_url, self.jsessionid) al_list = recv_data['data']['list'] return al_list
def find_report_title(self, report_title='myreport'): """ API is used to Find REport Title URI GET: '/wsg/api/scg/reports' :param str report_title: Report Title :return: dictionary containing report entry if Report Title Found else None :rtype: dictionary """ try: url = ji.get_url(self.req_api_reports, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(url, self.jsessionid) for report_entry in recvd_data['data']['list']: if report_entry['title'] == report_title: return report_entry return None except Exception, e: print traceback.format_exc() return None
def create_device_policy(self, dp_name='DevicePolicyName', description='automation', default_action='ALLOW', apzone_name='TEST', domain_label='Administration Domain'): result = False dp_profile = {} try: url = ji.get_url(self.api_create_devicepolicy, self.scg_mgmt_ip, self.scg_port) dp_profile.update(self.DPT.get_template_data_for_devicepolicy()) dp_profile.update({ "name": dp_name, "description": description, "defaultAction": default_action }) dp_profile.update({ "zoneUUID": self.get_apzone_uuid(apzone_name=apzone_name, domain_label=domain_label), "tenantUUID": self._get_tenant_uuid() }) data_json = json.dumps(dp_profile) result = ji.post_json_data(url, self.jsessionid, data_json) except Exception, e: print traceback.format_exc() return False
def login_scgc(self, scg_mgmt_ip='127.0.0.2', scg_port='8443', username='******', password='******', **kwargs): """ Login to SCG-C GUI with given username and password """ req_api_login = "******" req_api_login_validation = '/wsg/api/scg/session/validation?' data = { "userName":"", "password":"",} data['userName'] = username data['password'] = password url = ji.get_url(req_api_login, scg_mgmt_ip, scg_port) data_json = json.dumps(data) jsessionid = '' try: jsessionid = ji.get_jsessionid(dict(req_uri=req_api_login_validation, scg_mgmt_ip=scg_mgmt_ip, scg_port=scg_port, proto='https')) result, jsessionid = ji.put_json_data(url, jsessionid, data_json, login=True) except Exception: print traceback.format_exc() return False, None self.jsessionid = jsessionid self.scg_mgmt_ip = scg_mgmt_ip self.scg_port = scg_port return result, jsessionid
def get_snmpv3_agent(self, user='******'): result = None is_entry_found = False get_index = -1 try: url = ji.get_url(self.req_api_snmp_agent, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(url, self.jsessionid) new_data = copy.deepcopy(recvd_data) for i in range(len(new_data['data']['users'])): if new_data['data']['users'][i]['userName'] == user: get_index = i is_entry_found = True break if not is_entry_found: #print 'get_snmpv3_agent(): user: %s does not exist' % user return None else: result = new_data['data']['users'][get_index] except Exception, e: print traceback.format_exc() return None
def delete_pmipv6_service_profile(self, pmipv6_profile_name="LMA service"): """ Delete the PMIP profile with given LMA Name """ result = False try: url = ji.get_url(self.req_api_lma_validation, self.scg_mgmt_ip, self.scg_port) key, rcv_data = self._get_key_for_pmipv6_service( url=url, name=pmipv6_profile_name) del_lma_url = ji.get_url(self.req_api_lma_updt_del % key, self.scg_mgmt_ip, self.scg_port) result = ji.delete_scg_data(del_lma_url, self.jsessionid, None) except Exception, e: print traceback.format_exc() return False
def snmpv3_add_trap_target(self, current_user='******', trap_target_ip='1.2.3.4', trap_target_port='162'): result = False is_entry_found = False snmp_agent_data = {} update_index = -1 try: url = ji.get_url(self.req_api_snmp_agent, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(url, self.jsessionid) new_data = copy.deepcopy(recvd_data) for i in range(len(new_data['data']['users'])): if new_data['data']['users'][i]['userName'] == current_user: update_index = i is_entry_found = True break if not is_entry_found: print 'snmpv3_add_trap_target(): user: %s does not exist' % current_user return False else: new_data['data']['users'][update_index]['traps'].append({'targetAddress' : trap_target_ip, 'targetPort' : trap_target_port}) snmp_agent_data = new_data['data'] data_json = json.dumps(snmp_agent_data) result = ji.put_json_data(url, self.jsessionid, data_json) except Exception, e: print traceback.format_exc() return False
def get_domain_uuid(self, domain_label='Administration Domain'): """ API used to find the domainUUID of given Domain Name URI: GET /wsg/api/scg/session/currentUser/domainList?includeSelf=true :param str domain_label: Name of the Domain :return: domainUUID :rtype: unicode """ is_entry_found = False domain_uuid = None url = ji.get_url(self.req_api_domains, self.scg_mgmt_ip, self.scg_port) rcvd_data = ji.get_json_data(url, self.jsessionid) if len(rcvd_data['data']['list']) >= 1: for data in rcvd_data['data']['list']: if data['label'] == domain_label: domain_uuid = data['key'] is_entry_found = True break else: raise Exception("get_domain_uuid(): No data.list recvd") if not is_entry_found: raise Exception("get_domain_uuid(): domain_label: %s not found" % domain_label) return domain_uuid
def verify_apzone_syslog_facility(self, zone_name="Syslog-Test", facility="-1", domain_label='Administration Domain'): """ Verify AP Zone Syslog Facility :param str zone_name: AP Zone name :param str facility: -1|16|17|18|19|20|21|22|23 (default : -1) :param str domain_label: APZone Domain name :return: True: if facility is selected :rtype: boolean """ try: req_zone_url = ji.get_url( self.SJC.req_api_update_zoneprofile % self.SJC.get_apzone_uuid( apzone_name=zone_name, domain_label=domain_label), self.scg_mgmt_ip, self.scg_port) zone_profile_data = ji.get_json_data(req_zone_url, self.jsessionid) zone_profile = zone_profile_data["data"] if zone_profile["commonConfig"]["syslogFacility"] == int(facility): return True return False except Exception, e: print traceback.format_exc() return False
def acknowledge_alarm_35(self, alarm_list, partial=False): result = False data_dict = {} data = [] alarm_key = None alarm_count = len(alarm_list) if partial: clear_count = alarm_count / 2 for i in range(0, clear_count): alarm_key = self.get_alarm_key(alarm_list[i], 'id') data.append(alarm_key) else: for i in range((alarm_count / 2), alarm_count): alarm_key = self.get_alarm_key(alarm_list[i], 'id') data.append(alarm_key) print '###', data try: url = ji.get_url(self.req_alarm_auto_ack_35, self.scg_mgmt_ip, self.scg_port) data_dict.update({'idList': data}) res = json.dumps(data_dict) result = ji.put_json_data(url, self.jsessionid, res) except Exception, e: print traceback.format_exc() return False
def sz100_clear_alarm(self, alarm_list, clear_comment="cleared by automation", partial=False): result = False data = [] data_final = {} alarm_key = None alarm_count = len(alarm_list) if partial: clear_count = alarm_count / 2 for i in range(0, clear_count): alarm_key = self.get_alarm_key(alarm_list[i]) data.append(alarm_key) else: for i in range((alarm_count / 2), alarm_count): alarm_key = self.get_alarm_key(alarm_list[i]) data.append(alarm_key) print '###', data data_final.update({"alarmUUIDS": data, "clearComment": clear_comment}) try: url = ji.get_url(self.sz_req_alarm_auto_clear, self.scg_mgmt_ip, self.scg_port) res = json.dumps(data_final) result = ji.put_json_data(url, self.jsessionid, res) except Exception, e: print traceback.format_exc() return False
def get_domain_uuid(self, domain_label='Administration Domain'): is_entry_found = False uuid = None try: url = ji.get_url(self.req_api_domains, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(url, self.jsessionid) if len(recvd_data['data']['list']) >= 1: for data in recvd_data['data']['list']: if data['label'] == domain_label: uuid = data['key'] is_entry_found = True break else: print "get_domain_uuid(): No data.list recvd" return uuid if not is_entry_found: print "get_domain_uuid(): domain_label: %s not found" % domain_label return uuid except Exception: print traceback.format_exc() return uuid return uuid
def get_ap_fwversion_in_apzone(self, domain_label='Administration Domain', apzone_name='APZone-1'): is_entry_found = False domain_uuid = None fwversion = None try: domain_uuid = self.get_domain_uuid(domain_label=domain_label) if not domain_uuid: print "get_domain_uuid(): domain_label: %s failed" % domain_label return domain_uuid url = ji.get_url(self.req_api_apzones % domain_uuid, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(url, self.jsessionid) if len(recvd_data['data']['list']) >= 1: for data in recvd_data['data']['list']: if data['mobilityZoneName'] == apzone_name: fwversion = data['fmVersion'] is_entry_found = True break else: print "get_ap_fwversion_in_apzone(): No data.list recvd" return fwversion if not is_entry_found: print "get_ap_fwversion_in_apzone(): apzone: %s not found" % apzone_name return fwversion except Exception: print traceback.format_exc() return fwversion return fwversion
def get_ap_firmwares_in_apzone(self, domain_label='Administration Domain', apzone_name='APZone-1'): apzone_uuid = None ap_fw_list = [] try: apzone_uuid = self.get_apzone_uuid(domain_label=domain_label, apzone_name=apzone_name) if not apzone_uuid: print "get_apzone_uuid(): domain_label: %s apzone_name: %s failed" %( domain_label, apzone_name) return ap_fw_list current_ap_fwversion = self.get_ap_fwversion_in_apzone(domain_label=domain_label, apzone_name=apzone_name) if not current_ap_fwversion: print "get_ap_fwversion_in_apzone(): apzone_name: %s failed" % apzone_name return ap_fw_list url = ji.get_url(self.req_api_fetch_ap_firmwares_in_apzone % (apzone_uuid, current_ap_fwversion), self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(url, self.jsessionid) ap_fw_list = recvd_data['data']['list'] return ap_fw_list except Exception: print traceback.format_exc() return ap_fw_list return ap_fw_list
def _get_cluster_d_staus(self): cluster_stat_api = "/wsg/api/scg/planes/data?" cluster_stat_url = ji.get_url(cluster_stat_api, self.scg_mgmt_ip, self.scg_port) print cluster_stat_url cluster_stat_data = ji.get_json_data(cluster_stat_url, self.jsessionid) return cluster_stat_data
def enable_node_afinity(self,nafp_name="",zone_name="",no_of_zone=10): url=ji.get_url(self.NODE_AF_API,self.scg_mgmt_ip,self.scg_port) naf_key = self.get_nodeprofile(naf_p_name=nafp_name) data = {"enable":True, "numOfRetries":3, "zoneIdToNAPIdMap":{} } new_zone = {} for i in range(1,int(no_of_zone) + 1): zone_key = self.get_apzone_uuid(apzone_name=zone_name + "_" + str(i)) tmp_zone = {zone_key:naf_key} new_zone.update(tmp_zone) print new_zone data["zoneIdToNAPIdMap"] = copy.deepcopy(new_zone) data_json = json.dumps(data) print data_json try: result = ji.put_json_data(url,self.jsessionid, data_json) except Exception: print traceback.format_exc() return False, None
def get_key_and_data_for_device_policy( self, name='DevicePolicyName', apzone_name='TEST', domain_label='Administration Domain'): key, data = None, None is_found = False get_url = ji.get_url( self.api_add_rule_get % self.get_apzone_uuid( apzone_name=apzone_name, domain_label=domain_label), self.scg_mgmt_ip, self.scg_port) rcvd_data = ji.get_json_data(get_url, self.jsessionid) for i in range(0, len(rcvd_data['data']['list'])): if rcvd_data['data']['list'][i]['name'] == name: key, data = rcvd_data['data']['list'][i]['key'], rcvd_data[ 'data']['list'][i] is_found = True break if not is_found: print "get_key(): Failed" return key, data return key, data
def auto_export_backup(self, autoExportEnabled="true", ftpServerName=None): result = False aut_backup = {} aut_backup1 = {} try: scg_json = sjc.ScgJsonConfig(scg_mgmt_ip=self.scg_mgmt_ip, scg_port=self.scg_port) scg_json.set_jsessionid(self.jsessionid) url = ji.get_url(self.req_auto_back_up, self.scg_mgmt_ip, self.scg_port) aut_backup1.update({ "ftpEnabled": autoExportEnabled, "ftpSettingKey": "", "ftpSettins": None }) if autoExportEnabled == "true": ftpServerKey, recv_data = scg_json._get_key_for_ftp_service( ftpServerName) aut_backup.update({"key": ftpServerKey}) aut_backup1.update({"ftpSettins": aut_backup}) aut_backup1.update({"ftpSettingKey": ftpServerKey}) aut_backup1 = json.dumps(aut_backup1) result = ji.post_json_data(url, self.jsessionid, aut_backup1) except Exception, e: print traceback.format_exc() return False
def detele_rule_to_device_policy(self, device_policy_name="DevicePolicyName", apzone_name="TEST", domain_label="Administration Domain", rule_description='DP_rule'): result = False get_data = {} update_rule = {} key = None try: key, get_data = self.get_key_and_data_for_device_policy( name=device_policy_name, apzone_name=apzone_name, domain_label=domain_label) update_rule = copy.deepcopy(get_data) for i in range(0, len(update_rule['rule'])): if update_rule['rule'][i]['description'] == rule_description: del update_rule['rule'][i] break data_json = json.dumps(update_rule) put_url = ji.get_url(self.api_add_rule_put % key, self.scg_mgmt_ip, self.scg_port) result = ji.put_json_data(put_url, self.jsessionid, data_json) except Exception, e: print traceback.format_exc() return False
def schedule_backup(self, sch_schedules=1, sch_interval=None, sch_dateOfMonth=None, sch_dayOfWeek=None, sch_hour=None, sch_minute=None, sch_scheduleEnabled='True'): result = False sch_backup = {} sch_backup1 = {} try: url = ji.get_url(self.req_schdule_back_up, self.scg_mgmt_ip, self.scg_port) sch_backup.update({"schedules": sch_backup1}) if sch_schedules == 1: sch_backup1.update({ "interval": sch_interval, "dateOfMonth": sch_dateOfMonth, "dayOfWeek": sch_dayOfWeek, "hour": sch_hour, "minute": sch_minute, "scheduleEnabled": sch_scheduleEnabled }) self.sch_backup = json.dumps(sch_backup) print "###", self.sch_backup result = ji.post_json_data(url, self.jsessionid, self.sch_backup) except Exception, e: print traceback.format_exc() return False
def verify_syslog_facility(self, enable='false', facility="LOCAL0", facility_type=''): """ Verify Syslog Facility :param str facility: LOCAL0|LOCAL1|...|LOCAL7 - Default: LOCAL0 :return: True: if facility is selected :rtype: boolean """ url = ji.get_url(self.req_api_syslog, self.scg_mgmt_ip, self.scg_port) response_data = ji.get_json_data(url, self.jsessionid) if response_data['data']['enable'] != enable: return None if facility_type == "appfacility": return response_data["data"]["applog_syslog_facility"] == facility elif facility_type == "auditfacility": return response_data["data"]["audit_syslog_facility"] == facility else: return response_data["data"]["event_syslog_facility"] == facility
def delete_snmpv3_agent(self, user='******'): result = False is_entry_found = False snmp_agent_data = {} delete_index = -1 try: url = ji.get_url(self.req_api_snmp_agent, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(url, self.jsessionid) new_data = copy.deepcopy(recvd_data) for i in range(len(new_data['data']['users'])): if new_data['data']['users'][i]['userName'] == user: delete_index = i is_entry_found = True break if not is_entry_found: print 'delete_snmpv3_agent(): user: %s does not exist' % user return False else: del new_data['data']['users'][delete_index] snmp_agent_data = new_data['data'] data_json = json.dumps(snmp_agent_data) result = ji.put_json_data(url, self.jsessionid, data_json) except Exception, e: print traceback.format_exc() return False
def get_control_blade_uuid(self, cblade_label='mylabel'): is_entry_found = False uuid = None try: url = ji.get_url(self.req_api_control_blade_uuid, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(url, self.jsessionid) if len(recvd_data['data']['list']) >= 1: for data in recvd_data['data']['list']: if data['label'] == cblade_label: uuid = data['bladeUUID'] is_entry_found = True break else: print "get_control_blade_uuid(): No data.list recvd" return uuid if not is_entry_found: print "get_control_blade_uuid(): cblade_label: %s not found" % cblade_label return uuid except Exception, e: print traceback.format_exc() return uuid
def get_report_results(self, report_title='myreport'): """ API used to Get Report Results URI GET: '/wsg/api/scg/reports/<report_uuid>/result' :param str report_title: Report Title :return: list of results if success else False :rtype: list """ try: report_uuid = self._get_report_uuid(report_title=report_title) if not report_uuid: print "get_report_results(): _get_report_uuid() failed. report_title: %s" % ( report_title) return None report_results_url = ji.get_url( self.req_api_get_report_results % report_uuid, self.scg_mgmt_ip, self.scg_port) recvd_data = ji.get_json_data(report_results_url, self.jsessionid) return recvd_data['data']['list'] except Exception, e: print traceback.format_exc() return None
def verify_access_point_syslog_facility(self, ap_mac="", facility="-1"): """ Verify Access Point Syslog Facility :param str ap_mac: AP mac :param str facility: -1|16|17|18|19|20|21|22|23 (default : -1) :return: True: if facility is selected :rtype: boolean """ try: req_ap_url = ji.get_url(self.req_api_update_ap % ap_mac, self.scg_mgmt_ip, self.scg_port) ap_profile_data = ji.get_json_data(req_ap_url, self.jsessionid) ap_profile = ap_profile_data["data"] print type(ap_profile["config"]["syslogFacility"]) if ap_profile["config"]["syslogFacility"] == int(facility): return True return False except Exception, e: print traceback.format_exc() return False
def delete_report(self, report_title='myreport'): """ API used to Delete Report URI DELETE: '/wsg/api/scg/reports/<report_uuid>' :param str report_title: Report Title :return: True if Report Deleted else False :rtype: boolean """ try: report_uuid = self._get_report_uuid(report_title=report_title) if not report_uuid: print "delete_report(): _get_report_uuid() failed. report_title: %s" % ( report_title) return False url = ji.get_url(self.req_api_report_delete % report_uuid, self.scg_mgmt_ip, self.scg_port) data_json = None result = ji.delete_scg_data(url, self.jsessionid, data_json) return result except Exception, e: print traceback.format_exc() return False
def get_cblade_id(self, cblade_name): url = ji.get_url(self.GET_BLADE_ID,self.scg_mgmt_ip,self.scg_port) _data = ji.get_json_data(url,self.jsessionid) for blade in _data["data"]["list"]: if blade["label"] == cblade_name + "-C": _key = blade["bladeUUID"] return _key
def get_ftp(self,ftp_name): url = ji.get_url(self.GET_FTP_API,self.scg_mgmt_ip,self.scg_port) _data = ji.get_json_data(url,self.jsessionid) for ftp in _data["data"]["list"]: if ftp["ftpName"] == ftp_name: ftp_key = ftp["key"] return ftp_key