Generating s_tag if not defined
Change-Id: I27dcfba64719ff549590e651db82cffdfb3c7779
diff --git a/xos/synchronizer/models/models.py b/xos/synchronizer/models/models.py
index 4cbaf13..9a8b163 100644
--- a/xos/synchronizer/models/models.py
+++ b/xos/synchronizer/models/models.py
@@ -41,11 +41,16 @@
inner_service_instance = link.provider_service_instance
inner_service_instance.save(update_fields=["updated"])
- def generate_tag(self):
+ def generate_s_tag(self):
+ # NOTE what's the right way to generate an s_tag?
+ tag = random.randint(16, 4096)
+ return tag
+
+ def generate_c_tag(self):
# NOTE this method will loop if available c_tags are ended
tag = random.randint(16, 4096)
if tag in self.get_used_c_tags():
- return self.generate_tag()
+ return self.generate_c_tag()
return tag
def get_used_c_tags(self):
@@ -91,7 +96,10 @@
raise XOSValidationError("The c_tag you specified (%s) has already been used on device %s" % (self.c_tag, self.onu_device))
if not hasattr(self, "c_tag") or self.c_tag is None:
- self.c_tag = self.generate_tag()
+ self.c_tag = self.generate_c_tag()
+
+ if not hasattr(self, "s_tag") or self.s_tag is None:
+ self.s_tag = self.generate_s_tag()
self.set_owner()
diff --git a/xos/synchronizer/models/test_models.py b/xos/synchronizer/models/test_models.py
index bbbbd18..3209fe3 100644
--- a/xos/synchronizer/models/test_models.py
+++ b/xos/synchronizer/models/test_models.py
@@ -66,6 +66,7 @@
self.rcord_subscriber.is_new = True
self.rcord_subscriber.onu_device = "BRCM1234"
self.rcord_subscriber.c_tag = 111
+ self.rcord_subscriber.s_tag = 222
self.rcord_subscriber.ip_address = "1.1.1.1"
self.rcord_subscriber.mac_address = "00:AA:00:00:00:01"
self.rcord_subscriber.owner.leaf_model.access = "voltha"
@@ -169,6 +170,20 @@
self.assertGreater(self.rcord_subscriber.c_tag, 16)
self.assertLess(self.rcord_subscriber.c_tag, 4097)
+ def test_generate_s_tag(self):
+ self.rcord_subscriber.c_tag = None
+
+ self.rcord_subscriber.save()
+
+ self.models_decl.RCORDSubscriber_decl.save.assert_called()
+ self.assertNotEqual(self.rcord_subscriber.s_tag, None)
+
+ def test_provisioned_s_stag(self):
+ self.rcord_subscriber.save()
+ self.models_decl.RCORDSubscriber_decl.save.assert_called()
+ self.assertEqual(self.rcord_subscriber.s_tag, 222)
+
+
if __name__ == '__main__':
unittest.main()