def delete_virtual_ip(self, vip): vip_extra = vip['extra'] or {} if vip_extra.get('allVLANs'): pmap = "global" else: pmap = "int-" + str(md5(vip_extra['VLAN']).hexdigest()) cmd = "policy-map multi-match " + pmap + "\nno class " + vip['id'] self.deployConfig(cmd) cmd = "no class-map match-all " + vip['id'] + "\n" self.deployConfig(cmd) cmd = "no policy-map type loadbalance first-match " + \ vip['id'] + "-l7slb" self.deployConfig(cmd) if (self.getConfig("policy-map %s" % pmap).find("class") <= 0): if vip_extra.get('allVLANs'): cmd = "no service-policy input " + pmap self.deployConfig(cmd) else: VLAN = vip_extra['VLAN'] if is_sequence(VLAN): for i in VLAN: cmd = "interface vlan " + str(i) + \ "\nno service-policy input " + pmap self.deployConfig(cmd) else: cmd = "interface vlan " + str(VLAN) + \ "\nno service-policy input " + pmap self.deployConfig(cmd) cmd = "no policy-map multi-match " + pmap self.deployConfig(cmd) cmd = "no access-list vip-acl extended permit ip any host " + \ vip['address'] self.deployConfig(cmd)
def createVIP(self, context, vip, sfarm): values = {} values["service"] = {} values["network"] = {} values["service"]["name"] = vip.name values["service"]["vip"] = vip.address values["service"]["port"] = vip.port values["service"]["sfarm_name"] = sfarm.name if hasattr(vip, 'backupServerFarm') and vip.backupServerFarm != "": values["service"]["use_backup_sfarm"] = "true" values["service"]["backup_sfarm_name"] = vip.backupServerFarm else: values["service"]["use_backup_sfarm"] = "false" values["service"]["backup_sfarm_name"] = "" values["service"]["sticky"] = "false" values["network"]["device"] = "" if self.checkNone(vip.allVLANs): values["network"]["vlans"] = "ALL_VLAN" elif is_sequence(vip.VLAN): values["network"]["vlans"] = ",".join(vip.VLAN) else: values["network"]["vlans"] = vip.VLAN values["network"]["autoNat"] = "true" sid = self.login() try: definition = self.fetchTemplateDefinition(sid, "OpenstackLB-Basic-HTTP-adv") inputs = self.fetchTemplateImputs(sid, definition) self.fillTemplateInputs(inputs, values) deviceId = self.createSudsDeviceID(context) instance = self.templateClient.service.createTemplateInstance(sid, deviceId, definition, inputs) context.templateInstances[vip.name] = instance finally: self.logout(sid)
def create_virtual_ip(self, vip, sfarm): vip_extra = vip.get('extra') or {} if vip_extra.get('allVLANs'): pmap = "global" else: pmap = "int-" + str(md5(vip_extra['VLAN']).hexdigest()) cmd = "access-list vip-acl extended permit ip any host " + \ vip['address'] self.deployConfig(cmd) appProto = vip_extra.get('appProto') if appProto.lower() in ('other', 'http'): appProto = "" else: appProto = "_" + appProto.lower() cmd = "policy-map type loadbalance " + appProto + \ " first-match " + vip['id'] + "-l7slb\n" if vip_extra.get('description'): cmd += "description " + vip_extra.get('description') + "\n" cmd += "class class-default\nserverfarm " + sfarm['id'] if vip_extra.get('backupServerFarm'): cmd += " backup " + vip_extra['backupServerFarm'] cmd += "\nexit\nexit\nclass-map match-all " + vip['id'] + "\n" cmd += "match virtual-address " + vip['address'] + " " + \ str(vip['mask']) + " " + vip_extra['proto'].lower() if vip_extra['proto'].lower() != "any" and vip_extra.get('port'): cmd += " eq " + str(vip_extra['port']) cmd += "\nexit\npolicy-map multi-match " + pmap + "\nclass " + \ vip['id'] if vip.get('status'): cmd += "\nloadbalance vip " + vip['status'].lower() cmd += "\nloadbalance policy " + vip['id'] + "-l7slb" if vip_extra.get('ICMPreply'): cmd += "\nloadbalance vip icmp-reply" self.deployConfig(cmd) if vip_extra.get('allVLANs'): cmd = "service-policy input " + pmap try: self.deployConfig(cmd) except: LOG.warning("Got exception on acl set") else: VLAN = vip_extra['VLAN'] if is_sequence(VLAN): for i in VLAN: cmd = "interface vlan " + str(i) + \ "\nservice-policy input " + pmap self.deployConfig(cmd) cmd = "interface vlan " + str(i) + \ "\naccess-group input vip-acl" try: self.deployConfig(cmd) except: LOG.warning("Got exception on acl set") else: cmd = "interface vlan " + str(VLAN) + \ "\nservice-policy input " + pmap self.deployConfig(cmd) cmd = "interface vlan " + str(VLAN) + \ "\naccess-group input vip-acl" try: self.deployConfig(cmd) except: LOG.warning("Got exception on acl set") nat_pool = self.find_nat_pool_for_vip(vip) if nat_pool: self.add_nat_pool_to_vip(nat_pool, vip) else: nat_pool = self.generate_nat_pool_for_vip(vip) self.create_nat_pool(nat_pool) self.add_nat_pool_to_vip(nat_pool, vip)