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)