def test_vrrpv2_g01(self):
		""" vrrpv2_g01 """
		if "json" == ml_system.CFG_TYPE:
			shutil.copyfile(os.path.join("unittest", "vrrpv2-g01.json"), os.path.join("running", "vrrpv2.txt"))
		if "jcfg" == ml_system.CFG_TYPE:
			shutil.copyfile(os.path.join("unittest", "vrrpv2-g01.jcfg"), os.path.join("running", "vrrpv2.txt"))
		if "pickle" == ml_system.CFG_TYPE:
			return
		self.maxDiff = None
		e = ml_w_vrrpv2.get(None, threading.RLock())
		self.assertEqual(e, (True, {
			'group': [
				{
					'group-name': 'VG_1', 
					'instance': [
						{
							'instance-name': 'VI_1',
							'advertisement-interval': 10, 
							'virtual-router-id': 1, 
							'sync-interface': 's0e1', 
							'delay-gratuitous-arp': 5, 
							'priority': 1, 
							'interface': 's0e1', 
							'additional_track_interface': [{'interface': 's0e2'}], 
							'ipv4_vip': [{'interface': 's0e1', 'netmask': '255.255.255.0', 'ipv4': '192.168.1.1'}], 
							'ipv4_vr': [{'interface': 's0e1', 'netmask': '255.255.255.0', 'destination-ipv4': '192.168.1.1', 'gateway': '192.168.1.1'}], 
							'ipv6_vip': [{'interface': 's0e1', 'prefix': 64, 'ipv6': '2001::1'}], 
							'ipv6_vr': [{'interface': 's0e1', 'prefix': 64, 'gateway': '2001::1', 'destination-ipv6': '2001::1'}], 
							'preempt': True
						}
					]
				}
			]
		}))
Exemplo n.º 2
0
    def vrrp(self, **kwargs):
        '''
            VRRPv2 getter and setter
            format:
            {'group': [{'group-name': 'VG_1',
                     'instance': [{'additional_track_interface': [{'interface': 's0e2'}],
                                   'advertisement-interval': 10,
                                   'delay-gratuitous-arp': 5,
                                   'instance-name': 'VI_1',
                                   'interface': 's0e1',
                                   'ipv4_vip': [{'interface': 's0e1',
                                                 'ipv4': '192.168.1.1',
                                                 'netmask': '255.255.255.0'}],
                                   'ipv4_vr': [{'destination-ipv4': '192.168.1.1',
                                                'gateway': '192.168.1.1',
                                                'interface': 's0e1',
                                                'netmask': '255.255.255.0'}],
                                   'ipv6_vip': [{'interface': 's0e1',
                                                 'ipv6': '2001::1',
                                                 'prefix': 64}],
                                   'ipv6_vr': [{'destination-ipv6': '2001::1',
                                                'gateway': '2001::1',
                                                'interface': 's0e1',
                                                'prefix': 64}],
                                   'preempt': True,
                                   'priority': 1,
                                   'sync-interface': 's0e1',
                                   'virtual-router-id': 1
                               }]
                       }]
               }
        '''
        import libs.login
        if False == libs.login.cklogin():
            raise _.HTTPRedirect('/')

        import ml_w_vrrpv2 as wvr
        import json
        import libs.tools

        _.response.headers["Content-Type"] = "application/json"
        if 'group' in kwargs:
            # setter

            dat = kwargs

            res = []
            opt = []
            goptTmp = []
            nopt = {}

            for k in dat:
                if "@@" in k:
                    kk = k.split("@@")
                    if "list" == type(kk).__name__ and len(kk) > 1:
                        libs.tools.v(dat)
                        goptTmp = self._unstructDict(dat, "@@")

            gopt = []
            for k in goptTmp:
                if not "vrrpv2" == goptTmp[k]:
                    gopt.append(goptTmp[k])


            prefix = "instance@@"
            for k in range(0, len(gopt)):
                dat = self._unstructDict(gopt[k], "@@")
                iopt = []
                ioptTmp = self._unstructDict(dat["instance"], "@@")

                for kk in ioptTmp:
                    if "list" == type(ioptTmp[kk]["instance-name"]).__name__:
                        ov = ioptTmp[kk]["instance-name"][0]
                        ioptTmp[kk]["instance-name"] = ov

                    data = self._unstructDict(ioptTmp[kk], "@@")
                    if "preempt" in data.keys():
                        if "true" == data["preempt"]:
                            data["preempt"] = True
                        else:
                            data["preempt"] = False
                    if "ipv4_vip" in data.keys():
                        ov = []
                        da = self._unstructDict(data["ipv4_vip"], "@@")
                        for kt in da:
                            ov.append(da[kt])
                        data["ipv4_vip"] = ov
                    if "ipv4_vr" in data.keys():
                        ov = []
                        da = self._unstructDict(data["ipv4_vr"], "@@")
                        for kt in da:
                            ov.append(da[kt])
                        data["ipv4_vr"] = ov
                    if "ipv6_vip" in data.keys():
                        ov = []
                        da = self._unstructDict(data["ipv6_vip"], "@@")
                        for kt in da:
                            ov.append(da[kt])
                        data["ipv6_vip"] = ov
                    if "ipv6_vr" in data.keys():
                        ov = []
                        da = self._unstructDict(data["ipv6_vr"], "@@")
                        for kt in da:
                            ov.append(da[kt])
                        data["ipv6_vr"] = ov
                    if "additional_track_interface" in data.keys():
                        ov = []
                        da = self._unstructDict(data["additional_track_interface"], "@@")
                        for kt in da:
                            ov.append(da[kt])
                        data["additional_track_interface"] = ov
                    iopt.append(data)

                res.append({"group-name": dat["group-name"], "instance": iopt})

            res = {"group": res}

            res = wvr.set(user = self.getUser(), cfg = res)
            if False == res[0]:
                return json.dumps([res[0], libs.tools.translateMessage(res[1])])
            else:
                return json.dumps(res)
        else:
            # getter
            return json.dumps(wvr.get())