implement fetch_pending()
[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
11     def fetch_pending(self):
12         slivers = Sliver.objects.filter(ip=None)
13         return slivers
14
15     def sync_record(self, sliver):
16         driver = self.driver.client_driver(tenant=sliver.slice.name)  
17         servers = driver.shell.nova.servers.findall(id=sliver.instance_id)
18         if not servers:
19             return
20         server = servers[0]
21         ips = server.addresses.get(sliver.slice.name, [])
22         if not ips:
23             return
24         sliver.ip = ips[0]['addr']
25         sliver.save()
26         logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))