Fix interface update

When updating interface attributes
it is necessary to merge data from nailgun
agent with those that are in the database
instead of just updating them.

Change-Id: I5c20f66e8a7cc0c0de9974508de458672b46840e
Closes-Bug: #1627776
This commit is contained in:
Vladimir Kozhukalov 2016-10-10 18:18:06 +03:00
parent bbdcf14c1c
commit 77ed634abc
1 changed files with 13 additions and 4 deletions

View File

@ -48,6 +48,7 @@ from nailgun.network import utils
from nailgun import objects
from nailgun.objects.serializers.node import NodeInterfacesSerializer
from nailgun.settings import settings
from nailgun.utils import dict_merge
from nailgun.utils.restrictions import RestrictionBase
from nailgun.utils.zabbix import ZabbixManager
@ -1152,12 +1153,20 @@ class NetworkManager(object):
interface.driver = interface_attrs.get('driver')
interface.bus_info = interface_attrs.get('bus_info')
interface.pxe = interface_attrs.get('pxe', False)
interface_properties = dict_merge(
cls.get_default_interface_properties(),
interface.interface_properties or {}
)
if interface_attrs.get('interface_properties'):
interface.interface_properties = \
interface_properties = dict_merge(
interface_properties,
interface_attrs['interface_properties']
elif not interface.interface_properties:
interface.interface_properties = \
cls.get_default_interface_properties()
)
# update interface_properties in DB only if something was changed
if interface.interface_properties != interface_properties:
interface.interface_properties = interface_properties
new_offloading_modes = interface_attrs.get('offloading_modes')
old_modes_states = interface.\