Esempio n. 1
0
 def lsn_port_dhcp_setup(self,
                         context,
                         network_id,
                         port_id,
                         port_data,
                         subnet_config=None):
     """Connect network to LSN via specified port and port_data."""
     try:
         lsn_id = None
         lswitch_port_id = switch_api.get_port_by_neutron_tag(
             self.cluster, network_id, port_id)['uuid']
         lsn_id = self.lsn_get(context, network_id)
         lsn_port_id = self.lsn_port_create(context, lsn_id, port_data)
     except (n_exc.NotFound, p_exc.NsxPluginException):
         raise p_exc.PortConfigurationError(net_id=network_id,
                                            lsn_id=lsn_id,
                                            port_id=port_id)
     else:
         try:
             lsn_api.lsn_port_plug_network(self.cluster, lsn_id,
                                           lsn_port_id, lswitch_port_id)
         except p_exc.LsnConfigurationConflict:
             self.lsn_port_delete(context, lsn_id, lsn_port_id)
             raise p_exc.PortConfigurationError(net_id=network_id,
                                                lsn_id=lsn_id,
                                                port_id=port_id)
         if subnet_config:
             self.lsn_port_dhcp_configure(context, lsn_id, lsn_port_id,
                                          subnet_config)
         else:
             return (lsn_id, lsn_port_id)
Esempio n. 2
0
 def lsn_port_metadata_setup(self, context, lsn_id, subnet):
     """Connect subnet to specified LSN."""
     data = {
         "mac_address": const.METADATA_MAC,
         "ip_address": subnet['cidr'],
         "subnet_id": subnet['id']
     }
     network_id = subnet['network_id']
     tenant_id = subnet['tenant_id']
     lswitch_port_id = None
     try:
         lswitch_port_id = switch_api.create_lport(self.cluster, network_id,
                                                   tenant_id,
                                                   const.METADATA_PORT_ID,
                                                   const.METADATA_PORT_NAME,
                                                   const.METADATA_DEVICE_ID,
                                                   True)['uuid']
         lsn_port_id = self.lsn_port_create(self.cluster, lsn_id, data)
     except (n_exc.NotFound, p_exc.NsxPluginException,
             api_exc.NsxApiException):
         raise p_exc.PortConfigurationError(net_id=network_id,
                                            lsn_id=lsn_id,
                                            port_id=lswitch_port_id)
     else:
         try:
             lsn_api.lsn_port_plug_network(self.cluster, lsn_id,
                                           lsn_port_id, lswitch_port_id)
         except p_exc.LsnConfigurationConflict:
             self.lsn_port_delete(self.cluster, lsn_id, lsn_port_id)
             switch_api.delete_port(self.cluster, network_id,
                                    lswitch_port_id)
             raise p_exc.PortConfigurationError(net_id=network_id,
                                                lsn_id=lsn_id,
                                                port_id=lsn_port_id)
Esempio n. 3
0
 def lsn_port_update(self,
                     context,
                     network_id,
                     subnet_id,
                     dhcp=None,
                     meta=None):
     """Update the specified configuration for the LSN port."""
     if not dhcp and not meta:
         return
     try:
         lsn_id, lsn_port_id = self.lsn_port_get(context,
                                                 network_id,
                                                 subnet_id,
                                                 raise_on_err=False)
         if dhcp and lsn_id and lsn_port_id:
             lsn_api.lsn_port_host_entries_update(self.cluster, lsn_id,
                                                  lsn_port_id, DHCP_CONF,
                                                  dhcp)
         if meta and lsn_id and lsn_port_id:
             lsn_api.lsn_port_host_entries_update(self.cluster, lsn_id,
                                                  lsn_port_id, META_CONF,
                                                  meta)
     except api_exc.NsxApiException:
         raise p_exc.PortConfigurationError(net_id=network_id,
                                            lsn_id=lsn_id,
                                            port_id=lsn_port_id)
Esempio n. 4
0
 def _lsn_port_host_conf(self, context, network_id, subnet_id, data, hdlr):
     lsn_id, lsn_port_id = self.lsn_port_get(
         context, network_id, subnet_id, raise_on_err=False)
     try:
         if lsn_id and lsn_port_id:
             hdlr(self.cluster, lsn_id, lsn_port_id, data)
     except (n_exc.NotFound, api_exc.NsxApiException):
         LOG.error(_('Error while configuring LSN '
                     'port %s'), lsn_port_id)
         raise p_exc.PortConfigurationError(
             net_id=network_id, lsn_id=lsn_id, port_id=lsn_port_id)