예제 #1
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
예제 #2
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 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 generate_report(self, report_title='myreport'):
        """

        API used to Generate Report

        URI GET: '/wsg/api/scg/reports/<report_uuid>/run'

        :param str report_title: Report Title
        :return: True if Report Generated else False
        :rtype: boolean

        """
        try:
            report_uuid = self._get_report_uuid(report_title=report_title)
            if not report_uuid:
                print "generate_report(): _get_report_uuid() failed. report_title: %s" % (
                    report_title)
                return False

            url = ji.get_url(self.req_api_report_generate % report_uuid,
                             self.scg_mgmt_ip, self.scg_port)
            data_json = None
            result = ji.put_json_data(url, self.jsessionid, data_json)

            return result

        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 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 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 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 set_access_point_syslog_setting(self,
                                        ap_mac="",
                                        syslogIp="",
                                        syslogPort="514",
                                        syslogFacility="-1",
                                        syslogRLevel="3"):
        """
        
        Set Ap syslog setting
        
        :param str ap_mac: AP Mac
        
        :param str syslogIp: Syslog server ip address
        
        :param str syslogPort: Syslog server port
        
        :param str syslogFacility: -1|16|17|18|19|20|21|22|23 (default : -1)
        
        :param str syslogRLevel: 0|1|..|7 (default : 3)
        
        """
        result = False
        ap_profile = {}
        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["mac"] = ap_profile_data["data"]["mac"]
            ap_profile["description"] = ap_profile_data["data"]["description"]
            ap_profile["fwVersion"] = ap_profile_data["data"]["fwVersion"]
            ap_profile["model"] = ap_profile_data["data"]["model"]
            ap_profile["mobilityZoneUUID"] = ap_profile_data["data"][
                "mobilityZoneUUID"]
            ap_profile["clientAdmissionConfig"] = ap_profile_data["data"][
                "clientAdmissionConfig"]
            ap_profile["config"] = ap_profile_data["data"]["config"]

            if syslogIp:
                ap_profile["config"]["syslogIp"] = syslogIp
                ap_profile["config"]["syslogPort"] = int(syslogPort)
                ap_profile["config"]["syslogFacility"] = int(syslogFacility)
                ap_profile["config"]["syslogRLevel"] = int(syslogRLevel)
            else:
                for conf in ("syslogIp", "syslogPort", "syslogFacility",
                             "syslogRLevel"):
                    if ap_profile["config"].has_key(conf):
                        del ap_profile["config"][conf]

            json_data = json.dumps(ap_profile)
            print json_data
            result = ji.put_json_data(req_ap_url, self.jsessionid, json_data)

        except Exception, e:
            print traceback.format_exc()
            return False
    def create_snmpv3_agent(self, user='******', 
            auth_protocol='', 
            auth_passphrase='',
            privacy_protocol='',
            privacy_passphrase='',
            read_privilege=True, write_privilege=True, trap_privilege=False,
            trap_target_ip=None, trap_target_port='162'):

        result = False
        snmp_agent_data = {}

        try:
            if self.get_snmpv3_agent(user=user):
                print "create_snmpv3_agent(): user: %s already exists" % user
                return False

            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)

            snmp_agent_data = self.SJT.get_snmpv3_agent_template_data()
            snmp_agent_data['readPrivilege'] = read_privilege
            snmp_agent_data['writePrivilege'] = write_privilege
            snmp_agent_data['trapPrivilege'] = trap_privilege
            snmp_agent_data['userName'] = user
            snmp_agent_data['authProtocol'] = auth_protocol
            snmp_agent_data['authPassword'] = auth_passphrase
            snmp_agent_data['privProtocol'] = privacy_protocol
            snmp_agent_data['privPassword'] = privacy_passphrase


            snmp_agent_data['communities'] = copy.deepcopy(recvd_data['data']['communities'])
            snmp_agent_data['users'] = copy.deepcopy(recvd_data['data']['users'])

            user_dict = { 

                    'userName' : user,
                    'authProtocol' : auth_protocol,
                    'authPassword' : auth_passphrase,
                    'privProtocol' : privacy_protocol,
                    'privPassword' : privacy_passphrase,
                    'readPrivilege' : read_privilege,
                    'writePrivilege' : write_privilege,
                    'trapPrivilege' : trap_privilege,
                    'traps': [] if trap_target_ip is None else [{'targetAddress' : trap_target_ip, 'targetPort' : trap_target_port}]
                    }

            snmp_agent_data['users'].append(user_dict)

            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 update_snmpv3_agent(self, current_user='******', 
            new_user='******',
            auth_protocol=None, 
            auth_passphrase=None,
            privacy_protocol=None,
            privacy_passphrase=None,
            read_privilege=None, write_privilege=None, trap_privilege=None,
            trap_target_ip=None, 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 'update_snmpv3_agent(): user: %s does not exist' % current_user
                return False
            else:
                user_dict = { 
                    'userName' : new_user,
                    'authProtocol' : auth_protocol if auth_protocol is not None else recvd_data['data']['users'][update_index]['authProtocol'],
                    'authPassword' : auth_passphrase if auth_passphrase is not None else recvd_data['data']['users'][update_index]['authPassword'],
                    'privProtocol' : privacy_protocol if privacy_protocol is not None else recvd_data['data']['users'][update_index]['privProtocol'],
                    'privPassword' : privacy_passphrase if privacy_passphrase is not None else recvd_data['data']['users'][update_index]['privPassword'],
                    'readPrivilege' : read_privilege if read_privilege is not None else recvd_data['data']['users'][update_index]['readPrivilege'],
                    'writePrivilege' : write_privilege if write_privilege is not None else recvd_data['data']['users'][update_index]['writePrivilege'],
                    'trapPrivilege' : trap_privilege if trap_privilege is not None else recvd_data['data']['users'][update_index]['trapPrivilege'],
                    'traps': [] [{'targetAddress' : trap_target_ip, 'targetPort' : trap_target_port}] if trap_target_ip is not None \
                                                else copy.deepcopy(recvd_data['data']['users'][update_index]['traps'])
                    }

                new_data['data']['users'][update_index] = user_dict

            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
예제 #12
0
    def update_ap_config(self, ap_mac='01:02:03:04:05:06',
            domain_label='Administration Domain',
            location='bangalore', wait_ap_status='completed'
            ):
        
        try:
            curr_ap_cfg = self.get_ap_config(ap_mac=ap_mac)
            if not curr_ap_cfg:
                print "update_ap_config(): get_ap_config() failed. ap_mac: %s " % ap_mac
                return False

            ap_info = self.get_ap_info(domain_label=domain_label, ap_mac=ap_mac)
            if not ap_info:
                print "update_ap_config(): _get_ap_info() failed. ap_mac: %s " % ap_mac
                return False

            ap_data = self.SJT.get_ap_config_template_data()

            ap_data['fwVersion'] = curr_ap_cfg['fwVersion']
            ap_data['model'] = curr_ap_cfg['model']
            ap_data['mobilityZoneUUID'] = curr_ap_cfg['mobilityZoneUUID']
            ap_data['mac'] = ap_mac
            ap_data['description'] = curr_ap_cfg['description']

            ap_data['config'] = curr_ap_cfg['config'].copy()
            ## Remove spurious keys that are not to be copied over...
            ap_data['config'].pop("apLogin", None)
            ap_data['config'].pop("apPass", None)
            ap_data['config'].pop("isDualRadio", None)
            ap_data['config'].pop("wifi1ChannelWidth", None)
            ap_data['config'].pop("wifi0ChannelWidth", None)
            ap_data['config'].pop("syslogIpv6", None)


            ap_data['config']['deviceName'] = ap_info['deviceName']
            ap_data['config']['deviceLocation'] = location
            #ap_data['config']['deviceIpSetting'] = ap_info['specificationConfiguration']['deviceIpSetting']

            url = ji.get_url(self.req_api_ap_config % ap_mac, 
                    self.scg_mgmt_ip, self.scg_port)
            data_json = json.dumps(ap_data)
            result = ji.put_json_data(url, self.jsessionid, data_json)


            if ap_info["zoneName"] != "Staging Zone":
                if not self.wait_ap_status(ap_mac=ap_mac.upper(), status=wait_ap_status):
                    print "wait_ap_status() AP status is not up-to-date"
                    return False

            return result

        except Exception, e:
            print traceback.format_exc()
            return False
예제 #13
0
    def move_ap_to_apzone(self, domain_label='Administration Domain', apzone_name="APZone-1", ap_mac=None, 
            wait_preconfig_status="NotApplicable", wait_preconfig_retries='30', wait_preconfig_sleeptime='16', 
            wait_postmove_retries='15', wait_postmove_sleeptime='30'):

        ap_info = None
        recvd_status = None
        apzone_uuid = None

        if ap_mac is None:
            print "move_ap_to_apzone(): ap_mac is None"
            return ap_info

        try:
            if wait_preconfig_status != "NotApplicable":
                _is_status_ok = False
                for i in range(int(wait_preconfig_retries)):
                    recvd_status = self.get_ap_configuration_status(domain_label=domain_label, ap_mac=ap_mac)
                    if recvd_status != wait_preconfig_status:
                        print "Waiting to get the updated AP Configuration Status. Sleeping for %s, recvd_status - %s" % (wait_preconfig_sleeptime, recvd_status)
                        time.sleep(int(wait_preconfig_sleeptime))
                    else:
                        _is_status_ok = True
                        break
                if not _is_status_ok:
                    print 'move_ap_to_apzone: Error - AP configuration Status is incorrect' 
                    return None
            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_info

            data = ''
            url = ji.get_url(self.req_api_ap_move % (ap_mac, apzone_uuid), self.scg_mgmt_ip, self.scg_port)
            recvd_data = ji.put_json_data(url, self.jsessionid, data)
            
            if recvd_data:
                is_ap_moved = False
                for i in range(int(wait_postmove_retries)):
                    ap_info = self.get_ap_info(domain_label=domain_label, ap_mac=ap_mac)
                    if ap_info["zoneName"] != apzone_name:
                        print "Waiting for the AP configuration status to get completed after move. Sleeping for %s" % wait_postmove_sleeptime
                        time.sleep(int(wait_postmove_sleeptime))
                    else:
                        is_ap_moved = True
                        break
                if not is_ap_moved:
                    return None

        except Exception:
            print traceback.format_exc()
            return ap_info

        return ap_info
예제 #14
0
    def disable_node_afinity(self):

        url=ji.get_url(self.NODE_AF_API,self.scg_mgmt_ip,self.scg_port)
    
        data = {"enable":False,"numOfRetries":3,"zoneIdToNAPIdMap":{}}
        data_json = json.dumps(data)

        try: 
            result = ji.put_json_data(url,self.jsessionid, data_json)
        except Exception:
            print traceback.format_exc()
            return False, None
    def update_rule_to_device_policy(self,
                                     device_policy_name="DevicePolicyName",
                                     apzone_name="TEST",
                                     domain_label="Administration Domain",
                                     rule_description='DP_rule',
                                     new_rule_description=None,
                                     action=None,
                                     device_type=None,
                                     uplink=None,
                                     downlink=None,
                                     vlan=None):
        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)
            rcvd_rule_data = {}
            element = None
            for i in range(0, len(get_data['rule'])):
                if get_data['rule'][i]['description'] == rule_description:
                    rcvd_rule_data = get_data['rule'][i]
                    element = i
                    break
            update_rule['rule'][element]["description"] = rcvd_rule_data[
                "description"] if not new_rule_description else new_rule_description
            update_rule['rule'][element][
                "action"] = rcvd_rule_data["action"] if not action else action
            update_rule['rule'][element]["deviceType"] = rcvd_rule_data[
                "deviceType"] if not device_type else int(device_type)
            update_rule['rule'][element][
                "uplink"] = rcvd_rule_data["uplink"] if not uplink else uplink
            update_rule['rule'][element]["downlink"] = rcvd_rule_data[
                "downlink"] if not downlink else downlink
            update_rule['rule'][element][
                "vlan"] = rcvd_rule_data["vlan"] if not vlan else int(vlan)

            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
예제 #16
0
    def current_ap_dblade_reboot(self):

        ap_tunnel = self._get_ap_gre_tunnel(ap_ip=self.ap_ip,
                                            ap_pwd=self.ap_pwd,
                                            ap_user=self.ap_user)
        current_d = ap_tunnel["current_d"]
        cluster_d_info = {}
        cluster_d_info = self._get_cluster_d_staus()

        for i in range(0, len(cluster_d_info[u"data"][u"list"])):
            if cluster_d_info[u"data"][u"list"][i][u"ip"] == current_d:
                self._set_ap_k_interval(ap_ip=self.ap_ip,
                                        ap_user=self.ap_user,
                                        ap_pwd=self.ap_pwd,
                                        kinterval='2')
                self._set_ap_k_limit(ap_ip=self.ap_ip,
                                     ap_user=self.ap_user,
                                     ap_pwd=self.ap_pwd,
                                     klimit='1')
                reboot_api = "/wsg/api/scg/planes/data/" + cluster_d_info[
                    u"data"][u"list"][i][u"key"] + "/reboot"
                url = ji.get_url(reboot_api, self.scg_mgmt_ip, self.scg_port)
                data = None
                res_put = ji.put_json_data(url,
                                           self.jsessionid,
                                           data,
                                           login=False)
                if not res_put:
                    print "current_ap_dblade_reboot(): Failed Data PUT method"

                self._set_ap_gre_tunnel_disable(ap_ip=self.ap_ip,
                                                ap_user=self.ap_user,
                                                ap_pwd=self.ap_pwd)
                self._set_ap_gre_tunnel_enable(ap_ip=self.ap_ip,
                                               ap_user=self.ap_user,
                                               ap_pwd=self.ap_pwd)
                ap_tunnel = self._get_ap_gre_tunnel(ap_ip=self.ap_ip,
                                                    ap_user=self.ap_user,
                                                    ap_pwd=self.ap_pwd)

                count = 0
                while ap_tunnel['current_d'] == current_d:
                    count = count + 1
                    ap_tunnel = self._get_ap_gre_tunnel(ap_ip=self.ap_ip,
                                                        ap_user=self.ap_user,
                                                        ap_pwd=self.ap_pwd)
                    time.sleep(1)
                    if count > 40:
                        break
    def update_snmpv2_agent(self, current_community='public', 
            new_community='public_new',
            read_privilege=None, write_privilege=None, trap_privilege=None,
            trap_target_ip=None, 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']['communities'])):
                if new_data['data']['communities'][i]['communityName'] == current_community:
                    update_index = i
                    is_entry_found = True
                    break

            if not is_entry_found:
                print 'update_snmpv2_agent(): community: %s does not exist' % current_community
                return False
            else:
                community_dict = { 'communityName' : new_community,
                    'readPrivilege' : read_privilege if read_privilege is not None else recvd_data['data']['communities'][update_index]['readPrivilege'],
                    'writePrivilege' : write_privilege if write_privilege is not None else recvd_data['data']['communities'][update_index]['writePrivilege'],
                    'trapPrivilege' : trap_privilege if trap_privilege is not None else recvd_data['data']['communities'][update_index]['trapPrivilege'],
                    'traps':  [{'targetAddress' : trap_target_ip, 'targetPort' : trap_target_port}] if trap_target_ip is not None \
                            else copy.deepcopy(recvd_data['data']['communities'][update_index]['traps']),
                    }
                new_data['data']['communities'][update_index] = community_dict

            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 set_apzone_syslog_setting(self,
                                  zone_name="Syslog-Test",
                                  domain_label='Administration Domain',
                                  syslogIp="",
                                  syslogPort="514",
                                  syslogFacility="-1",
                                  syslogRLevel="3"):
        """
        
        Set Ap zone syslog setting
        
        :param str zone_name: AP zone name
        
        :param str domain_label: APZone Domain name
        
        :param str syslogIp: Syslog server ip address
        
        :param str syslogPort: Syslog server port
        
        :param str syslogFacility: -1|16|17|18|19|20|21|22|23 (default : -1)
        
        :param str syslogRLevel: 0|1|..|7 (default : 3)
        
        """
        result = False
        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"]
            zone_profile["commonConfig"]["syslogIp"] = syslogIp
            zone_profile["commonConfig"]["syslogPort"] = syslogPort
            zone_profile["commonConfig"]["syslogFacility"] = int(
                syslogFacility)
            zone_profile["commonConfig"]["syslogRLevel"] = int(syslogRLevel)

            json_data = json.dumps(zone_profile)
            result = ji.put_json_data(req_zone_url, self.jsessionid, json_data)

        except Exception, e:
            print traceback.format_exc()
            return False
    def enable_global_snmp_trap(self):

        result = False
        snmp_agent_data = {}

        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)

            snmp_agent_data = copy.deepcopy(recvd_data['data'])

            snmp_agent_data['enabled'] = True

            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
예제 #20
0
    def update_global_lma_mag(self,
                              lma_key="pmipv6GlobalSetting",
                              lma_keepalive_interval=None,
                              lma_keepalive_retry=None,
                              binding_refreshtime=None):
        """ 
        Update MAG Global Value with given parameter 
        """
        pmip_profile = data_pmip = {}
        try:

            url = ji.get_url(self.req_api_pmip, self.scg_mgmt_ip,
                             self.scg_port)
            recv_data_pmip = ji.get_json_data(url, self.jsessionid)
            data_pmip = recv_data_pmip["data"]
            pmip_profile.update(self.SJT.get_global_lma_mag_template_data())

            pmip_profile["key"] = pmip_profile[
                "key"] if not data_pmip["key"] else data_pmip["key"]
            pmip_profile[
                "key"] = pmip_profile["key"] if not lma_key else lma_key
            pmip_profile["lmaKeepAliveInterval"]=pmip_profile["lmaKeepAliveInterval"] if not data_pmip["lmaKeepAliveInterval"] else \
                        data_pmip["lmaKeepAliveInterval"]
            pmip_profile["lmaKeepAliveInterval"] = pmip_profile[
                "lmaKeepAliveInterval"] if not lma_keepalive_interval else lma_keepalive_interval
            pmip_profile["lmaKeepAliveRetry"] = pmip_profile[
                "lmaKeepAliveRetry"] if not data_pmip[
                    "lmaKeepAliveRetry"] else data_pmip["lmaKeepAliveRetry"]
            pmip_profile["lmaKeepAliveRetry"] = pmip_profile[
                "lmaKeepAliveRetry"] if not lma_keepalive_retry else lma_keepalive_retry
            pmip_profile["bindingRefreshTime"]=pmip_profile["bindingRefreshTime"] if not data_pmip["bindingRefreshTime"] else \
                        data_pmip["bindingRefreshTime"]
            pmip_profile["bindingRefreshTime"] = pmip_profile[
                "bindingRefreshTime"] if not binding_refreshtime else binding_refreshtime

            data_json = json.dumps(pmip_profile)
            result = ji.put_json_data(url, self.jsessionid, data_json)

        except Exception, e:
            print traceback.format_exc()
            return False
    def create_snmpv2_agent(self, community='public', 
            read_privilege=True, write_privilege=True, trap_privilege=False,
            trap_target_ip=None, trap_target_port='162'):

        result = False
        snmp_agent_data = {}
        try:
            if self.get_snmpv2_agent(community=community):
                print "create_snmpv2_agent(): community: %s already exists" % community
                return False

            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)

            snmp_agent_data = self.SJT.get_snmpv2_agent_template_data()
            snmp_agent_data['communityName'] = community
            snmp_agent_data['readPrivilege'] = read_privilege
            snmp_agent_data['writePrivilege'] = write_privilege
            snmp_agent_data['trapPrivilege'] = trap_privilege

            snmp_agent_data['communities'] = copy.deepcopy(recvd_data['data']['communities'])
            snmp_agent_data['users'] = copy.deepcopy(recvd_data['data']['users'])

            community_dict = { 'communityName' : community,
                    'readPrivilege' : read_privilege,
                    'writePrivilege' : write_privilege,
                    'trapPrivilege' : trap_privilege,
                    'traps': [] if trap_target_ip is None else [{'targetAddress' : trap_target_ip, 'targetPort' : trap_target_port}]
                    }

            snmp_agent_data['communities'].append(community_dict)

            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 add_rule_to_device_policy(self,
                                  device_policy_name='DevicePolicyName',
                                  rule_description='DP_rule',
                                  action='ALLOW',
                                  device_type='1',
                                  uplink='500000',
                                  downlink='2000000',
                                  vlan=None,
                                  apzone_name='TEST',
                                  domain_label='Administration Domain'):
        result = False
        get_data = {}
        add_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)
            add_rule.update(get_data)
            add_rule['rule'].append({
                "description": rule_description,
                "action": action,
                "deviceType": int(device_type),
                "uplink": uplink,
                "downlink": downlink
            })
            if vlan:
                add_rule['rule'].append({"vlan": int(vlan)})
            data_json = json.dumps(add_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 set_app_log_level(self,
                          scg_host_name='hostname',
                          app_config_name='appConfigName',
                          log_root_level='logRootLevel'):
        """
        
        Set app log level 
                
        :param str scg_host_name: SCG HOST NAME
        
        :param str app_config_name: API | CaptivePortal | Cassandra | ... | Configurer | ... |Web
        
        :param str log_root_level: ERROR | WARN | INFO | DEBUG
        
        :return: True: if app log level updated 
        
        :rtype: boolean
        
        """
        cblade_label = scg_host_name + '-C'
        try:
            app_status = self.SJAAS.get_app_status(cblade_label)

            for item in app_status:
                if str(item['appConfigName']) == app_config_name:
                    item['logRootLevel'] = log_root_level
                    break
            data_json = json.dumps(item)
            url = ji.get_url(self.req_api_app_log_level, self.scg_mgmt_ip,
                             self.scg_port)
            status = ji.put_json_data(url, self.jsessionid, data_json)

            return status
        except Exception, e:
            print traceback.format_exc()
            return False
    def set_syslog_setting(self,
                           enable=True,
                           syslog_host="127.0.0.1",
                           syslog_port=514,
                           event_filter="1",
                           event_syslog_severity="",
                           syslog_facility="LOCAL0",
                           admin_active_log_facility='',
                           app_log_facility='',
                           **priority):
        """
        
        Set Syslog Settings
        
        :param boolean enable: True|False (Default : True)
        
        :param str syslog_host: Syslog server ip address
        
        :param int syslog_port: Syslog server port number (Default : 514)
        
        :param str event_filter: 0|1|2
        
        :param str event_syslog_severity: Critical|Major|Minor|Warning|Informational|Debug
        
        :param str syslog_facility: LOCAL0|LOCAL1|...|LOCAL7
        
        :param str admin_active_log_facility: LOCAL0|LOCAL1|...|LOCAL7
        
        :param str app_log_facility: LOCAL0|LOCAL1|...|LOCAL7
        
        :param Dictionary priority: severity and priority as key value pair 
        
        :return: True: if Syslog server created
        
        :rtype: boolean
        
        """
        try:
            data = {}
            enable = str(enable).lower()

            if enable:
                data = self.sjst.get_syslog_template_data()
                data["enable"] = enable
                data["host"] = syslog_host
                data["port"] = syslog_port
                data["forwardUEEventsType"] = event_filter
                if event_filter == "2":
                    if event_syslog_severity:
                        data["event_syslog_severity"] = event_syslog_severity
                    else:
                        return False

                data["event_syslog_facility"] = syslog_facility
                data[
                    "audit_syslog_facility"] = syslog_facility if admin_active_log_facility == '' else admin_active_log_facility
                data[
                    "applog_syslog_facility"] = syslog_facility if app_log_facility == '' else app_log_facility

                if priority:
                    for item in priority.keys():
                        data["severityPriorityMapping"][item] = priority[item]

                pri_str = ",".join(
                    "\"{0}\":\"{1}\"".format(key, val) for key, val in sorted(
                        data["severityPriorityMapping"].items()))
                data["severityPriorityMapping"] = "{" + pri_str + "}"
            else:
                data["enable"] = enable
            data_json = json.dumps(data)
            syslog_facility_check = 0
            status = False
            while syslog_facility_check < 5:
                url = ji.get_url(self.req_api_syslog, self.scg_mgmt_ip,
                                 self.scg_port)
                status = ji.put_json_data(url, self.jsessionid, data_json)
                if status:
                    time.sleep(5)
                    print "Checking syslog facility %s/5" % (
                        syslog_facility_check)
                    facility_status = self.verify_syslog_facility(
                        enable=enable, facility=syslog_facility)
                    if facility_status:
                        break
                syslog_facility_check += 1
            return status

        except Exception, e:
            print traceback.format_exc()
            return False
예제 #25
0
    def update_pmipv6_service_profile(self,
                                      pmipv6_profile_name="LMA Profile",
                                      new_pmipv6_profile_name=None,
                                      description=None,
                                      lma_primary_ip=None,
                                      lma_secondary_ip=None,
                                      mnid_type=None,
                                      mac48_type=None,
                                      lma_apn=None,
                                      mac48_hex_delimiter="No"):
        """ 
        Update the PMIP profile with given parameters
        
        URI: PUT /wsg/api/scg/serviceProfiles/forwarding/<>

        :param str pmipv6_name: PMIPv6 Profile Name
        :param str lma_primary_ip: Primary IP Address of LMA
        :param str lma_secondary_ip: Secondary IP Address of LMA
        :param str mnid_type: NAI_From_Authentication | MAC48_At_APN 
        :param mac48_type: Decimal | Hexadecimal
        :param lma_apn: APN name 
        :return: True if PMIPv6 Updated else False
        :rtype: boolean

        """

        key, data = None, None
        lma_update = {}
        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)
            lma_update["key"] = rcv_data["key"]
            lma_update["tenantId"] = rcv_data["tenantId"]
            lma_update["profileType"] = rcv_data["profileType"]

            lma_update["name"] = rcv_data[
                "name"] if not new_pmipv6_profile_name else new_pmipv6_profile_name
            lma_update["description"] = rcv_data[
                "description"] if not description else description
            lma_update["lmaPrimaryIp"] = rcv_data[
                "lmaPrimaryIp"] if not lma_primary_ip else lma_primary_ip

            lma_update["lmaSecondaryIp"] = rcv_data[
                "lmaSecondaryIp"] if not lma_secondary_ip else lma_secondary_ip

            lma_update["apn"] = rcv_data["apn"] if not lma_apn else lma_apn

            lma_update["mnIdType"] = rcv_data[
                "mnIdType"] if not mnid_type else mnid_type
            if lma_update["mnIdType"] == "MAC48_At_APN":
                lma_update["mac48Type"] = rcv_data[
                    "mac48Type"] if not mac48_type else mac48_type
                if lma_update["mac48Type"] == "Hexadecimal":
                    lma_update["delimiter"] = rcv_data[
                        "delimiter"] if not mac48_hex_delimiter else mac48_hex_delimiter
            else:
                lma_update["mac48Type"] = None

            json_data = json.dumps(lma_update)
            url_lma_update = ji.get_url(self.req_api_lma_updt_del % key,
                                        self.scg_mgmt_ip, self.scg_port)
            result = ji.put_json_data(url_lma_update, self.jsessionid,
                                      json_data)

        except Exception, e:
            print traceback.format_exc()
            return False