Merge branch 'master' of github.com:open-cloud/xos
diff --git a/xos/cord/models.py b/xos/cord/models.py
index 4bb78b3..a24917a 100644
--- a/xos/cord/models.py
+++ b/xos/cord/models.py
@@ -361,6 +361,23 @@
     def services(self, value):
         pass
 
+    @property
+    def addresses(self):
+        if not self.sliver:
+            return {}
+
+        addresses = {}
+        for ns in self.sliver.networkslivers.all():
+            if "lan" in ns.network.name.lower():
+                addresses["lan"] = ns.ip
+            elif "wan" in ns.network.name.lower():
+                addresses["wan"] = ns.ip
+            elif "private" in ns.network.name.lower():
+                addresses["private"] = ns.ip
+            elif "nat" in ns.network.name.lower():
+                addresses["nat"] = ns.ip
+        return addresses
+
     def pick_node(self):
         nodes = list(Node.objects.all())
         # TODO: logic to filter nodes by which nodes are up, and which
diff --git a/xos/core/xoslib/methods/cordsubscriber.py b/xos/core/xoslib/methods/cordsubscriber.py
index 863fcbe..f351552 100644
--- a/xos/core/xoslib/methods/cordsubscriber.py
+++ b/xos/core/xoslib/methods/cordsubscriber.py
@@ -40,13 +40,18 @@
         image_name = ReadOnlyField()
         routeable_subnet = serializers.CharField(required=False)
 
+        lan_ip = ReadOnlyField()
+        wan_ip = ReadOnlyField()
+        nat_ip = ReadOnlyField()
+        private_ip = ReadOnlyField()
+
         humanReadableName = serializers.SerializerMethodField("getHumanReadableName")
 
         class Meta:
             model = CordSubscriber
             fields = ('humanReadableName', 'id',
                       'service_specific_id', 'vlan_id',
-                      'vcpe_id', 'sliver', 'sliver_name', 'image', 'image_name', 'firewall_enable', 'firewall_rules', 'url_filter_enable', 'url_filter_rules', 'url_filter_level', 'cdn_enable', 'vbng_id', 'routeable_subnet',)
+                      'vcpe_id', 'sliver', 'sliver_name', 'image', 'image_name', 'firewall_enable', 'firewall_rules', 'url_filter_enable', 'url_filter_rules', 'url_filter_level', 'cdn_enable', 'vbng_id', 'routeable_subnet', 'nat_ip', 'lan_ip', 'wan_ip', 'private_ip')
 
 
         def getHumanReadableName(self, obj):
diff --git a/xos/core/xoslib/objects/cordsubscriber.py b/xos/core/xoslib/objects/cordsubscriber.py
index 72a9984..38142d4 100644
--- a/xos/core/xoslib/objects/cordsubscriber.py
+++ b/xos/core/xoslib/objects/cordsubscriber.py
@@ -56,6 +56,30 @@
         raise AttributeError("getattr: %r object has no attribute %r" %
                          (self.__class__, key))
 
+    @property
+    def nat_ip(self):
+        if not self.vcpe:
+            return None
+        return self.vcpe.addresses.get("nat",None)
+
+    @property
+    def lan_ip(self):
+        if not self.vcpe:
+            return None
+        return self.vcpe.addresses.get("lan",None)
+
+    @property
+    def wan_ip(self):
+        if not self.vcpe:
+            return None
+        return self.vcpe.addresses.get("wan",None)
+
+    @property
+    def private_ip(self):
+        if not self.vcpe:
+            return None
+        return self.vcpe.addresses.get("private",None)
+
     def __setattr__(self, key, value):
         for (member_name, passthrough_name) in self.passthroughs:
             if key==member_name: