50ec6ad95fe7b27ac07652d2d315d0035a9cf956
[plstackapi.git] / planetstack / observer / steps / sync_sliver_ips.py
1 import os
2 import base64
3 from planetstack.config import Config
4 from observer.openstacksyncstep import OpenStackSyncStep
5 from core.models.sliver import Sliver
6
7 class SyncSliverIps(OpenStackSyncStep):
8     provides=[Sliver]
9     requested_interval=0
10     def fetch_pending(self):
11         slivers = Sliver.objects.filter(ip=None)
12         return slivers
13
14     def sync_record(self, sliver):
15         driver = self.driver.client_driver(tenant=sliver.slice.name)  
16         servers = driver.shell.nova.servers.findall(id=sliver.instance_id)
17         if not servers:
18             return
19         server = servers[0]
20         ips = server.addresses.get(sliver.slice.name, [])
21         if not ips:
22             return
23         sliver.ip = ips[0]['addr']
24         sliver.save()
25         logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))