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
示例#2
0
    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
示例#6
0
    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
示例#8
0
 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
示例#14
0
    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
示例#15
0
    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
示例#16
0
    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
示例#17
0
 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
示例#18
0
    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
示例#29
0
    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
示例#30
0
    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