blob: fb4fd5b7ff9fbdc15dd4cea79b781aa6470ae34e [file] [log] [blame]
Sapan Bhatia24836f12013-08-27 10:16:05 -04001import os
2import base64
3from planetstack.config import Config
Sapan Bhatia04c94ad2013-09-02 18:00:28 -04004from observer.openstacksyncstep import OpenStackSyncStep
5from core.models.sliver import Sliver
Sapan Bhatia24836f12013-08-27 10:16:05 -04006
7class SyncSliverIps(OpenStackSyncStep):
Tony Mackce79de02013-09-24 10:12:33 -04008 provides=[Sliver]
9 requested_interval=0
Tony Mack66646d52013-09-24 21:47:12 -040010
Tony Mackce79de02013-09-24 10:12:33 -040011 def fetch_pending(self):
12 slivers = Sliver.objects.filter(ip=None)
13 return slivers
Sapan Bhatia24836f12013-08-27 10:16:05 -040014
Tony Mackce79de02013-09-24 10:12:33 -040015 def sync_record(self, sliver):
Tony Mack387a73f2013-09-18 07:59:14 -040016 driver = self.driver.client_driver(tenant=sliver.slice.name)
Tony Mackce79de02013-09-24 10:12:33 -040017 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]))