Adding UNI to be onboarded via Tosca

Change-Id: Ib1f38203372575c1e2638fd1d961221972f4f1f7
diff --git a/xos/models.py b/xos/models.py
index 4ebda3b..580bb4f 100644
--- a/xos/models.py
+++ b/xos/models.py
@@ -461,3 +461,43 @@
 
     def __init__(self, *args, **kwargs):
         super(VnodGlobalService, self).__init__(*args, **kwargs)
+
+
+class UserNetworkInterface(PlCoreBase):
+
+    class Meta:
+        app_label = METRONETWORK_KIND
+        verbose_name = "User Network Interface"
+
+    id = models.AutoField(verbose_name="id", primary_key=True, editable=False)
+    enabled = models.IntegerField(verbose_name="State of UNI", editable=True)
+    capacity = models.IntegerField(verbose_name="UNI Capacity", editable=True)
+    bw_used = models.IntegerField(verbose_name="UNI bandwidth used", editable=True)
+    vlanIds = models.CharField(verbose_name="VlanIds in this UNI", max_length=256, editable=True)
+    location = models.CharField(verbose_name="Location", max_length=256, editable=True, blank=True)
+    latlng = models.CharField(verbose_name="Latitude/Longitude", max_length=50, editable=True, blank=True)
+    name = models.CharField(unique=True, verbose_name="Name", max_length=256, editable=True)
+
+    def __init__(self, *args, **kwargs):
+        super(UserNetworkInterface, self).__init__(*args, **kwargs)
+
+    def __unicode__(self):  return u'%s' % (self.name)
+
+    def save(self, *args, **kwargs):
+
+        if self.latlng:
+            try:
+                latlng_value = getattr(self, 'latlng').strip()
+                if (latlng_value.startswith('[') and latlng_value.endswith(']') and latlng_value.index(',') > 0):
+                    lat = latlng_value[1: latlng_value.index(',')].strip()
+                    lng = latlng_value[latlng_value.index(',') + 1: len(latlng_value) - 1].strip()
+
+                    # If lat and lng are not floats, the code below should result in an error.
+                    lat_validation = float(lat)
+                    lng_validation = float(lng)
+                else:
+                    raise ValueError("The lat/lng value is not formatted correctly.")
+            except:
+                raise ValueError("The lat/lng value is not formatted correctly.")
+
+        super(UserNetworkInterface, self).save(*args, **kwargs)
\ No newline at end of file