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()