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 logger = Logger(level=logging.INFO)
11 class SyncSliverIps(OpenStackSyncStep):
15 def fetch_pending(self, deleted):
16 return [] # XXX smbaker - disabling this sync_step, since sliver.ip is obsoleted by sync_network_slivers()
21 slivers = Sliver.objects.filter(ip=None)
24 def sync_record(self, sliver):
25 driver = self.driver.client_driver(tenant=sliver.slice.name,
26 deployment=sliver.node.deployment.name)
27 servers = driver.shell.nova.servers.findall(id=sliver.instance_id)
32 # First try to grab the dedicated public address
33 # NOTE: "ext-net" is hardcoded here.
35 ext_net_addrs = server.addresses.get("ext-net")
\r
37 ip = ext_net_addrs[0]["addr"]
\r
39 # If there was no public address, then grab the first address in the
\r
42 if server.addresses:
\r
43 addrs = server.addresses.values()[0]
\r
47 if ip and ip!=sliver.ip:
50 logger.info("saved sliver ip: %s %s" % (sliver, ip))