def get_data(self):
     request = self.request
     try:
         gw_port = self._get_gateway_port_data()
         gw_vlans = neutron.nuage_gateway_vlan_list(
             self.request, gw_port.id)
         vlans = []
         for vlan in gw_vlans:
             if vlan.get('vport'):
                 dict = vlan.to_dict()
                 vport = neutron.nuage_gateway_vport_get(request,
                                                         vlan['vport'])
                 dict['vport'] = vport
                 if vport and vport.get('subnet'):
                     subnet = neutron.subnet_get(request,
                                                 vport.get('subnet'))
                     dict['subnet'] = subnet
                     if vport.get('port'):
                         try:
                             port = neutron.port_get(request,
                                                    vport['port'])
                             dict['port'] = port
                         except Exception:
                             dict['port'] = None
                 vlan = neutron.NuageGatewayVlan(dict)
             vlans.append(vlan)
     except Exception:
         vlans = []
         msg = _('Nuage Gateway Vlan list can not be retrieved.')
         exceptions.handle(request, msg)
     return vlans
 def get_context_data(self, **kwargs):
     context = super(AddAllowedAddressPair, self).get_context_data(**kwargs)
     context["port_id"] = self.kwargs['port_id']
     context['submit_url'] = reverse(self.submit_url,
                                     args=(self.kwargs['port_id'],))
     port = neutron.port_get(self.request, context['port_id'])
     subnet_id = port['fixed_ips'][0]['subnet_id']
     context['subnet'] = neutron.subnet_get(self.request, subnet_id)
     return context
 def allowed(self, request, port):
     allowed = super(AddAllowedAddressPair, self).allowed(request, port)
     if not allowed:
         return allowed
     if not port:
         port_id = self.table.kwargs['port_id']
         port = neutron.port_get(request, port_id)
     subnet_id = port['fixed_ips'][0]['subnet_id']
     subnet = neutron.subnet_get(request, subnet_id, fields=['vsd_managed',
                                                             'ip_version'])
     return not subnet['vsd_managed']
 def delete(self, request, ip_address):
     try:
         port_id = self.table.kwargs['port_id']
         port = neutron.port_get(request, port_id)
         pairs = port.get('allowed_address_pairs', [])
         pairs = [pair for pair in pairs
                  if pair['ip_address'] != ip_address]
         neutron.port_update(request, port_id, allowed_address_pairs=pairs)
     except Exception:
         msg = _('Failed to update port %s')
         LOG.info(msg, port_id)
         redirect = reverse("horizon:project:networks:ports:detail",
                            args=(port_id,))
         exceptions.handle(request, msg % port_id, redirect=redirect)
    def _get_data(self):
        port_id = self.kwargs['port_id']

        try:
            port = neutron.port_get(self.request, port_id)
            port.admin_state_label = STATE_DICT.get(port.admin_state,
                                                    port.admin_state)
            port.status_label = STATUS_DICT.get(port.status,
                                                port.status)
        except Exception:
            port = []
            redirect = self.get_redirect_url()
            msg = _('Unable to retrieve port details.')
            exceptions.handle(self.request, msg, redirect=redirect)

        if (neutron.is_extension_supported(self.request, 'mac-learning')
                and not hasattr(port, 'mac_state')):
            port.mac_state = neutron.OFF_STATE

        return port
    def handle(self, request, data):
        port_id = self.initial['port_id']
        try:
            port = neutron.port_get(request, port_id)

            current = port.get('allowed_address_pairs', [])
            pair = {'ip_address': data['ip']}
            if data['mac'] and len(data['mac']) > 5:
                pair['mac_address'] = data['mac']
            current.append(pair)
            port = neutron.port_update(request, port_id,
                                       allowed_address_pairs=current)
            msg = _('Port %s was successfully updated.') % port_id
            messages.success(request, msg)
            return port
        except Exception as e:
            msg = _('Failed to update port "%s".') % port_id
            LOG.info(msg)
            args = (self.initial.get('port_id'),)
            redirect = reverse(self.failure_url, args=args)
            exceptions.handle(request, msg, redirect=redirect)
            return False