def test_add_network_binding(self):
     self.assertIsNone(mlnx_db.get_network_binding(self.session,
                                                 TEST_NETWORK_ID))
     mlnx_db.add_network_binding(self.session, TEST_NETWORK_ID,NET_TYPE, PHYS_NET,
                               1234)
     binding = mlnx_db.get_network_binding(self.session, TEST_NETWORK_ID)
     self.assertIsNotNone(binding)
     self.assertEqual(binding.network_id, TEST_NETWORK_ID)
     self.assertEqual(binding.network_type,NET_TYPE)
     self.assertEqual(binding.physical_network, PHYS_NET)
     self.assertEqual(binding.segmentation_id, 1234)
Пример #2
0
 def test_add_network_binding(self):
     with self.network() as network:
         TEST_NETWORK_ID = network['network']['id']
         self.assertIsNone(
             mlnx_db.get_network_binding(self.session, TEST_NETWORK_ID))
         mlnx_db.add_network_binding(self.session, TEST_NETWORK_ID,
                                     NET_TYPE, PHYS_NET, 1234)
         binding = mlnx_db.get_network_binding(self.session,
                                               TEST_NETWORK_ID)
         self.assertIsNotNone(binding)
         self.assertEqual(binding.network_id, TEST_NETWORK_ID)
         self.assertEqual(binding.network_type, NET_TYPE)
         self.assertEqual(binding.physical_network, PHYS_NET)
         self.assertEqual(binding.segmentation_id, 1234)
Пример #3
0
 def _extend_port_dict_binding(self, context, port):
     port_binding = db.get_port_profile_binding(context.session, port['id'])
     if port_binding:
         port[portbindings.VIF_TYPE] = port_binding.vnic_type
     port[portbindings.CAPABILITIES] = {
         portbindings.CAP_PORT_FILTER:
         'security-group' in self.supported_extension_aliases
     }
     binding = db.get_network_binding(context.session, port['network_id'])
     fabric = binding.physical_network
     port[portbindings.PROFILE] = {'physical_network': fabric}
     return port
Пример #4
0
 def _extend_network_dict_provider(self, context, network):
     binding = db.get_network_binding(context.session, network['id'])
     network[provider.NETWORK_TYPE] = binding.network_type
     if binding.network_type == constants.TYPE_FLAT:
         network[provider.PHYSICAL_NETWORK] = binding.physical_network
         network[provider.SEGMENTATION_ID] = None
     elif binding.network_type == constants.TYPE_LOCAL:
         network[provider.PHYSICAL_NETWORK] = None
         network[provider.SEGMENTATION_ID] = None
     else:
         network[provider.PHYSICAL_NETWORK] = binding.physical_network
         network[provider.SEGMENTATION_ID] = binding.segmentation_id
Пример #5
0
 def _extend_network_dict_provider(self, context, network):
     binding = db.get_network_binding(context.session, network['id'])
     network[provider.NETWORK_TYPE] = binding.network_type
     if binding.network_type == constants.TYPE_FLAT:
         network[provider.PHYSICAL_NETWORK] = binding.physical_network
         network[provider.SEGMENTATION_ID] = None
     elif binding.network_type == constants.TYPE_LOCAL:
         network[provider.PHYSICAL_NETWORK] = None
         network[provider.SEGMENTATION_ID] = None
     else:
         network[provider.PHYSICAL_NETWORK] = binding.physical_network
         network[provider.SEGMENTATION_ID] = binding.segmentation_id
Пример #6
0
 def delete_network(self, context, net_id):
     LOG.debug(_("delete network"))
     session = context.session
     with session.begin(subtransactions=True):
         binding = db.get_network_binding(session, net_id)
         super(MellanoxEswitchPlugin, self).delete_network(context, net_id)
         if binding.segmentation_id != constants.LOCAL_VLAN_ID:
             db.release_network(session, binding.physical_network,
                                binding.segmentation_id,
                                self.network_vlan_ranges)
         # the network_binding record is deleted via cascade from
         # the network record, so explicit removal is not necessary
     self.notifier.network_delete(context, net_id)
 def delete_network(self, context, net_id):
     LOG.debug(_("delete network"))
     session = context.session
     with session.begin(subtransactions=True):
         binding = db.get_network_binding(session, net_id)
         result = super(MellanoxEswitchPlugin, self).delete_network(context,net_id)
         if binding.segmentation_id != constants.LOCAL_VLAN_ID:
             db.release_network(session, binding.physical_network,
                                binding.segmentation_id, self.network_vlan_ranges)
         # the network_binding record is deleted via cascade from
         # the network record, so explicit removal is not necessary
     if self.agent_rpc:
         self.notifier.network_delete(self.rpc_context, net_id)
Пример #8
0
 def _extend_port_dict_binding(self, context, port):
     port_binding = db.get_port_profile_binding(context.session,
                                                port['id'])
     if port_binding:
         port[portbindings.VIF_TYPE] = port_binding.vnic_type
     port[portbindings.CAPABILITIES] = {
         portbindings.CAP_PORT_FILTER:
         'security-group' in self.supported_extension_aliases}
     binding = db.get_network_binding(context.session,
                                      port['network_id'])
     fabric = binding.physical_network
     port[portbindings.PROFILE] = {'physical_network': fabric}
     return port
Пример #9
0
 def update_port(self, context, port_id, port):
     original_port = super(MellanoxEswitchPlugin,
                           self).get_port(context, port_id)
     session = context.session
     with session.begin(subtransactions=True):
         port = super(MellanoxEswitchPlugin,
                      self).update_port(context, port_id, port)
     if original_port['admin_state_up'] != port['admin_state_up']:
         binding = db.get_network_binding(context.session,
                                          port['network_id'])
         self.notifier.port_update(context, port, binding.physical_network,
                                   binding.network_type,
                                   binding.segmentation_id)
     return self._extend_port_dict_binding(context, port)
 def update_port(self, context, port_id, port):
     if self.agent_rpc:
         original_port = super(MellanoxEswitchPlugin, self).get_port(context,
                                                                   port_id)
     port = super(MellanoxEswitchPlugin, self).update_port(context, port_id, port)
     if self.agent_rpc:
         if original_port['admin_state_up'] != port['admin_state_up']:
             binding = db.get_network_binding(context.session,
                                              port['network_id'])
             self.notifier.port_update(self.rpc_context, port,
                                       binding.physical_network,
                                       binding.network_type,
                                       binding.segmentation_id)
     return port
Пример #11
0
 def update_port(self, context, port_id, port):
     original_port = super(MellanoxEswitchPlugin, self).get_port(context,
                                                                 port_id)
     session = context.session
     with session.begin(subtransactions=True):
         port = super(MellanoxEswitchPlugin, self).update_port(context,
                                                               port_id,
                                                               port)
     if original_port['admin_state_up'] != port['admin_state_up']:
         binding = db.get_network_binding(context.session,
                                          port['network_id'])
         self.notifier.port_update(context, port,
                                   binding.physical_network,
                                   binding.network_type,
                                   binding.segmentation_id)
     return self._extend_port_dict_binding(context, port)
Пример #12
0
 def get_device_details(self, rpc_context, **kwargs):
     """Agent requests device details."""
     agent_id = kwargs.get('agent_id')
     device = kwargs.get('device')
     LOG.debug("Device %s details requested from %s", device, agent_id)
     port = self.get_port_from_device(device)
     if port:
         binding = db.get_network_binding(db_api.get_session(),
                                          port['network_id'])
         entry = {'device': device,
                  'physical_network': binding.physical_network,
                  'network_type': binding.network_type,
                  'vlan_id': binding.segmentation_id,
                  'network_id': port['network_id'],
                  'port_mac': port['mac_address'],
                  'port_id': port['id'],
                  'admin_state_up': port['admin_state_up']}
         # Set the port status to UP
         db.set_port_status(port['id'], q_const.PORT_STATUS_ACTIVE)
     else:
         entry = {'device': device}
         LOG.debug("%s can not be found in database", device)
     return entry
 def get_device_details(self, rpc_context, **kwargs):
     """Agent requests device details"""
     agent_id = kwargs.get("agent_id")
     device = kwargs.get("device")
     LOG.debug("Device %s details requested from %s", device, agent_id)
     port = self.get_port_from_device(device)
     if port:
         binding = db.get_network_binding(db_api.get_session(), port["network_id"])
         entry = {
             "device": device,
             "physical_network": binding.physical_network,
             "network_type": "vlan",
             "vlan_id": binding.segmentation_id,
             "network_id": port["network_id"],
             "port_mac": port["mac_address"],
             "port_id": port["id"],
             "admin_state_up": port["admin_state_up"],
         }
         # Set the port status to UP
         db.set_port_status(port["id"], q_const.PORT_STATUS_ACTIVE)
     else:
         entry = {"device": device}
         LOG.debug("%s can not be found in database", device)
     return entry