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: