3 from django.db.models import F, Q
4 from planetstack.config import Config
5 from observer.openstacksyncstep import OpenStackSyncStep
6 from core.models.sliver import Sliver
7 from util.logger import Logger, logging
9 class SyncSliverIps(OpenStackSyncStep):
13 def fetch_pending(self, deleted):
17 slivers = Sliver.objects.filter(ip=None)
20 def sync_record(self, sliver):
21 driver = self.driver.client_driver(tenant=sliver.slice.name,
22 deployment=sliver.node.deployment.name)
23 servers = driver.shell.nova.servers.findall(id=sliver.instance_id)
28 # First try to grab the dedicated public address
29 # NOTE: "ext-net" is hardcoded here.
31 ext_net_addrs = server.addresses.get("ext-net")
\r
33 ip = ext_net_addrs[0]["addr"]
\r
35 # If there was no public address, then grab the first address in the
\r
38 if server.addresses:
\r
39 addrs = server.addresses.values()[0]
\r
43 if ip and ip!=sliver.ip:
46 logger.info("saved sliver ip: %s %s" % (sliver, ip))