SEBA-466 Fix or note potential concurrency issues
Change-Id: Iabfa6c7021cacc565c39e09fcd884fa048ca5004
diff --git a/xos/synchronizer/steps/sync_olt_device.py b/xos/synchronizer/steps/sync_olt_device.py
index c56d0ab..686afcf 100644
--- a/xos/synchronizer/steps/sync_olt_device.py
+++ b/xos/synchronizer/steps/sync_olt_device.py
@@ -90,7 +90,7 @@
else:
model.device_id = res['id']
model.serial_number = res['serial_number']
- model.save()
+ model.save_changed_fields()
def activate_olt(self, model):
@@ -105,7 +105,7 @@
raise Exception("Failed to enable OLT device: %s" % request.text)
model.backend_status = "Waiting for device to be activated"
- model.save(always_update_timestamp=False) # we don't want to kickoff a new loop
+ model.save_changed_fields(always_update_timestamp=False) # we don't want to kickoff a new loop
# Read state
request = requests.get("%s:%d/api/v1/devices/%s" % (voltha['url'], voltha['port'], model.device_id)).json()
@@ -123,7 +123,7 @@
# Find the of_id of the device
self.get_ids_from_logical_device(model)
- model.save()
+ model.save_changed_fields()
def deactivate_olt(self, model):
voltha = Helpers.get_voltha_info(model.volt_service)
diff --git a/xos/synchronizer/steps/test_sync_olt_device.py b/xos/synchronizer/steps/test_sync_olt_device.py
index 9feb631..044d371 100644
--- a/xos/synchronizer/steps/test_sync_olt_device.py
+++ b/xos/synchronizer/steps/test_sync_olt_device.py
@@ -85,7 +85,7 @@
o.tologdict.return_value = {'name': "Mock VOLTServiceInstance"}
- o.save.return_value = "Saved"
+ o.save_changed_fields.return_value = "Saved"
o.pon_ports.all.return_value = [pon_port]
@@ -194,7 +194,7 @@
# One save during preprovision
# One save during activation to set backend_status to "Waiting for device to activate"
# One save after activation has succeeded
- self.assertEqual(self.o.save.call_count, 3)
+ self.assertEqual(self.o.save_changed_fields.call_count, 3)
@requests_mock.Mocker()
def test_sync_record_success_mac_address(self, m):
@@ -243,7 +243,7 @@
# One save during preprovision
# One save during activation to set backend_status to "Waiting for device to activate"
# One save after activation has succeeded
- self.assertEqual(self.o.save.call_count, 3)
+ self.assertEqual(self.o.save_changed_fields.call_count, 3)
@requests_mock.Mocker()
def test_sync_record_enable_timeout(self, m):
@@ -286,7 +286,7 @@
# One save from preprovision to set device_id, serial_number
# One save from activate to set backend_status to "Waiting for device to be activated"
- self.assertEqual(self.o.save.call_count, 2)
+ self.assertEqual(self.o.save_changed_fields.call_count, 2)
@requests_mock.Mocker()
def test_sync_record_already_existing_in_voltha(self, m):
@@ -315,6 +315,8 @@
self.sync_step(model_accessor=self.model_accessor).sync_record(self.o)
self.o.save.assert_not_called()
+ self.o.save_changed_fields.assert_not_called()
+
@requests_mock.Mocker()
def test_sync_record_deactivate(self, m):
@@ -341,6 +343,8 @@
# No saves as state has not changed (will eventually be saved by synchronizer framework to update backend_status)
self.assertEqual(self.o.save.call_count, 0)
+ self.assertEqual(self.o.save_changed_fields.call_count, 0)
+
# Make sure disable was called
urls = [x.url for x in m.request_history]
@@ -371,6 +375,7 @@
# No saves as state has not changed (will eventually be saved by synchronizer framework to update backend_status)
self.assertEqual(self.o.save.call_count, 0)
+ self.assertEqual(self.o.save_changed_fields.call_count, 0)
@requests_mock.Mocker()
def test_delete_record(self, m):