Activity log for bug #1675386

Date Who What changed Old value New value Message
2017-03-23 12:23:24 todd bug added bug
2017-03-27 04:23:56 todd description RELEASE: nova-compute-lxd 13.3.0-0ubuntu1 DESCRIPTION: In config.py the network_devices object should be returned after the 'for vifaddr in network_info:' loop to ensure the network_devices object includes all network devices. CURRENT CODE (annotated area of interest with >>>>): def create_network(self, instance_name, instance, network_info): """Create the LXD container network on the host :param instance_name: nova instance name :param instance: nova instance object :param network_info: instance network configuration object :return:network configuration dictionary """ LOG.debug('create_network called for instance', instance=instance) try: network_devices = {} if not network_info: return for vifaddr in network_info: cfg = self.vif_driver.get_config(instance, vifaddr) key = str(cfg['bridge']) network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'} host_device = self.vif_driver.get_vif_devname(vifaddr) if host_device: network_devices[key]['host_name'] = host_device >>>> return network_devices except Exception as ex: with excutils.save_and_reraise_exception(): LOG.error( _LE('Fail to configure network for %(instance)s: %(ex)s'), {'instance': instance_name, 'ex': ex}, instance=instance) PROPOSED CHANGE (annotated area of interest with >>>>): def create_network(self, instance_name, instance, network_info): """Create the LXD container network on the host :param instance_name: nova instance name :param instance: nova instance object :param network_info: instance network configuration object :return:network configuration dictionary """ LOG.debug('create_network called for instance', instance=instance) try: network_devices = {} if not network_info: return for vifaddr in network_info: cfg = self.vif_driver.get_config(instance, vifaddr) key = str(cfg['bridge']) network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'} host_device = self.vif_driver.get_vif_devname(vifaddr) if host_device: network_devices[key]['host_name'] = host_device except Exception as ex: with excutils.save_and_reraise_exception(): LOG.error( _LE('Fail to configure network for %(instance)s: %(ex)s'), {'instance': instance_name, 'ex': ex}, instance=instance) >>>> return network_devices RELEASE: nova-compute-lxd 13.3.0-0ubuntu1 DESCRIPTION: In config.py the network_devices object should be returned after the 'for vifaddr in network_info:' loop to ensure the network_devices object includes all network devices. CURRENT CODE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) PROPOSED CHANGE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance)
2017-10-20 10:55:32 James Page nova-lxd (Ubuntu): status New Confirmed
2017-10-20 10:55:34 James Page nova-lxd (Ubuntu): importance Undecided High
2017-10-20 10:55:40 James Page bug task added nova-lxd
2017-10-20 10:55:45 James Page nova-lxd: status New Triaged
2017-10-20 10:55:47 James Page nova-lxd: importance Undecided High
2017-10-20 10:58:02 James Page nominated for series Ubuntu Xenial
2017-10-20 10:58:02 James Page bug task added nova-lxd (Ubuntu Xenial)
2017-10-20 10:58:08 James Page nova-lxd (Ubuntu): status Confirmed Fix Released
2017-10-20 10:58:10 James Page nova-lxd (Ubuntu Xenial): status New Triaged
2017-10-20 10:58:13 James Page nova-lxd (Ubuntu Xenial): importance Undecided High
2017-10-20 10:58:19 James Page nova-lxd (Ubuntu Xenial): importance High Medium
2017-10-20 10:58:21 James Page nova-lxd: importance High Medium
2018-05-30 16:51:38 Corey Bryant summary all network devices aren't added to instance profile [SRU] all network devices aren't added to instance profile
2018-05-30 16:52:14 Corey Bryant bug task added cloud-archive
2018-05-30 16:52:26 Corey Bryant nominated for series cloud-archive/mitaka
2018-05-30 16:52:26 Corey Bryant bug task added cloud-archive/mitaka
2018-05-30 16:52:43 Corey Bryant cloud-archive: status New Fix Released
2018-05-30 16:52:48 Corey Bryant cloud-archive: importance Undecided Medium
2018-05-30 16:52:53 Corey Bryant cloud-archive/mitaka: importance Undecided Medium
2018-05-30 16:52:57 Corey Bryant cloud-archive/mitaka: status New Triaged
2018-05-30 16:54:05 Corey Bryant description RELEASE: nova-compute-lxd 13.3.0-0ubuntu1 DESCRIPTION: In config.py the network_devices object should be returned after the 'for vifaddr in network_info:' loop to ensure the network_devices object includes all network devices. CURRENT CODE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) PROPOSED CHANGE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) RELEASE: nova-compute-lxd 13.3.0-0ubuntu1 DESCRIPTION: In config.py the network_devices object should be returned after the 'for vifaddr in network_info:' loop to ensure the network_devices object includes all network devices. CURRENT CODE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) PROPOSED CHANGE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) Adding fields for Ubuntu SRU template: [Impact] See Description above. [Test Case] TBD [Regression Potential] TBD
2018-05-30 16:54:22 Corey Bryant description RELEASE: nova-compute-lxd 13.3.0-0ubuntu1 DESCRIPTION: In config.py the network_devices object should be returned after the 'for vifaddr in network_info:' loop to ensure the network_devices object includes all network devices. CURRENT CODE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) PROPOSED CHANGE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) Adding fields for Ubuntu SRU template: [Impact] See Description above. [Test Case] TBD [Regression Potential] TBD RELEASE: nova-compute-lxd 13.3.0-0ubuntu1 DESCRIPTION: In config.py the network_devices object should be returned after the 'for vifaddr in network_info:' loop to ensure the network_devices object includes all network devices. CURRENT CODE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) PROPOSED CHANGE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) ------------------------------------------------------------ Adding fields for Ubuntu SRU template: [Impact] See Description above. [Test Case] TBD [Regression Potential] TBD
2018-05-31 14:17:57 Alex Kavanagh description RELEASE: nova-compute-lxd 13.3.0-0ubuntu1 DESCRIPTION: In config.py the network_devices object should be returned after the 'for vifaddr in network_info:' loop to ensure the network_devices object includes all network devices. CURRENT CODE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) PROPOSED CHANGE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) ------------------------------------------------------------ Adding fields for Ubuntu SRU template: [Impact] See Description above. [Test Case] TBD [Regression Potential] TBD RELEASE: nova-compute-lxd 13.3.0-0ubuntu1 DESCRIPTION: In config.py the network_devices object should be returned after the 'for vifaddr in network_info:' loop to ensure the network_devices object includes all network devices. CURRENT CODE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) PROPOSED CHANGE (annotated area of interest with >>>>):     def create_network(self, instance_name, instance, network_info):         """Create the LXD container network on the host         :param instance_name: nova instance name         :param instance: nova instance object         :param network_info: instance network configuration object         :return:network configuration dictionary         """         LOG.debug('create_network called for instance', instance=instance)         try:             network_devices = {}             if not network_info:                 return             for vifaddr in network_info:                 cfg = self.vif_driver.get_config(instance, vifaddr)                 key = str(cfg['bridge'])                 network_devices[key] = {'nictype': 'bridged', 'hwaddr': str(cfg['mac_address']), 'parent': key, 'type': 'nic'}                 host_device = self.vif_driver.get_vif_devname(vifaddr)                 if host_device:                     network_devices[key]['host_name'] = host_device >>>> return network_devices         except Exception as ex:             with excutils.save_and_reraise_exception():                 LOG.error(                     _LE('Fail to configure network for %(instance)s: %(ex)s'),                     {'instance': instance_name, 'ex': ex}, instance=instance) ------------------------------------------------------------ Adding fields for Ubuntu SRU template: [Impact] See Description above. [Test Case] Manual test with devstack to ensure no regressions. Manual check to verify that container gets multiple net devices. [Regression Potential] Low, as virtually all openstack deployments with containers tend to only have one network device.
2018-05-31 14:23:31 Alex Kavanagh attachment added To be applied to stable/mitaka branch https://bugs.launchpad.net/nova-lxd/+bug/1675386/+attachment/5146972/+files/01_bug-1675386-ensure-all-net-devices-added.patch
2018-05-31 14:38:18 Alex Kavanagh bug added subscriber Alex Kavanagh
2018-05-31 16:39:26 Alex Kavanagh attachment added Updated patch for stable/mitaka https://bugs.launchpad.net/nova-lxd/+bug/1675386/+attachment/5147055/+files/01_bug-1675386-ensure-all-net-devices-added.patch
2018-05-31 17:07:22 Corey Bryant bug added subscriber Ubuntu Stable Release Updates Team
2018-05-31 23:10:31 Brian Murray nova-lxd (Ubuntu Xenial): status Triaged Fix Committed
2018-05-31 23:10:36 Brian Murray bug added subscriber SRU Verification
2018-05-31 23:10:40 Brian Murray tags verification-needed verification-needed-xenial
2018-06-01 19:27:44 Corey Bryant cloud-archive/mitaka: status Triaged Fix Committed
2018-06-01 19:27:46 Corey Bryant tags verification-needed verification-needed-xenial verification-mitaka-needed verification-needed verification-needed-xenial
2018-11-13 16:13:03 Alex Kavanagh tags verification-mitaka-needed verification-needed verification-needed-xenial verification-done verification-mitaka-done verification-xenial-done
2018-11-14 10:16:52 Alex Kavanagh tags verification-done verification-mitaka-done verification-xenial-done verification-mitaka-done verification-needed verification-xenial-done
2018-11-20 16:35:21 Brian Murray tags verification-mitaka-done verification-needed verification-xenial-done verification-done-xenial verification-mitaka-done verification-needed
2018-11-20 16:35:38 Launchpad Janitor nova-lxd (Ubuntu Xenial): status Fix Committed Fix Released
2018-11-20 16:35:43 Brian Murray removed subscriber Ubuntu Stable Release Updates Team
2018-11-20 17:23:49 Corey Bryant cloud-archive/mitaka: status Fix Committed Fix Released