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 } ] } ] }))
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())