def handle(self, request, data):
        gw_port = self.initial['gw_port']
        gw_port_id = gw_port.get('id')

        try:
            gw_vlan_id = self.initial['gw_vlan_id']
            vlan = data['vlan']
            assigned = data.get('assigned')
            type = data.get('type')
            subnet_id = data.get('subnet_id')
            port_id = data.get('port_id')

            if request.user.is_superuser:
                # neutron.nuage_gateway_vlan_unassign(
                #     request,
                #     gw_vlan_id,
                #     tenant_id=self.initial['tenant_id'])
                if assigned and self.initial['assigned'] != assigned:
                    neutron.nuage_gateway_vlan_assign(
                        request, gw_vlan_id, tenant_id=assigned)

            if not self.initial['type']:
                if type == 'host' and subnet_id and port_id:
                    neutron.nuage_gateway_vport_create(
                        request,
                        gw_vlan_id=gw_vlan_id,
                        port_id=port_id,
                        tenant_id=assigned)
                elif type == 'bridge' and subnet_id:
                    neutron.nuage_gateway_vport_create(
                        request,
                        gw_vlan_id=gw_vlan_id,
                        subnet_id=subnet_id,
                        tenant_id=assigned)

            message = _('Gateway Vlan with vlan %s was successfully '
                        'updated.') % vlan
            messages.success(request, message)
            return True
        except Exception:
            msg = _('Failed to update Gateway Vlan.')
            LOG.info(msg)
            args = [gw_port_id]
            redirect = reverse(self.failure_url, args=args)
            exceptions.handle(request, msg, redirect=redirect)
            return False
 def create_gw_vlan(request, gw_port_id, vlan, assigned, type, subnet_id,
                    port_id):
     gw_vlan = neutron.nuage_gateway_vlan_create(
         request, gw_port_id=gw_port_id, vlan=vlan)
     if assigned:
         neutron.nuage_gateway_vlan_assign(
             request, gw_vlan['id'], tenant_id=assigned)
     if type == 'host':
         neutron.nuage_gateway_vport_create(
             request,
             gw_vlan_id=gw_vlan['id'],
             port_id=port_id,
             tenant_id=assigned)
     elif type == 'bridge':
         neutron.nuage_gateway_vport_create(
             request,
             gw_vlan_id=gw_vlan['id'],
             subnet_id=subnet_id,
             tenant_id=assigned)
     return gw_vlan