X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fobserver%2Fsteps%2Fsync_sliver_ips.py;fp=planetstack%2Fobserver%2Fsteps%2Fsync_sliver_ips.py;h=4421ca5f768a4fc6f834f094bdc4c3d4acefbc16;hb=24836f18c96de50f93cacb2be40f311f66e4876a;hp=0000000000000000000000000000000000000000;hpb=f61e17af98a435ab1eac843ee865abff81f5fa4c;p=plstackapi.git diff --git a/planetstack/observer/steps/sync_sliver_ips.py b/planetstack/observer/steps/sync_sliver_ips.py new file mode 100644 index 0000000..4421ca5 --- /dev/null +++ b/planetstack/observer/steps/sync_sliver_ips.py @@ -0,0 +1,22 @@ +import os +import base64 +from planetstack.config import Config + +class SyncSliverIps(OpenStackSyncStep): + provides=[Sliver] + def fetch_pending(self): + slivers = Sliver.objects.filter(ip=None) + return slivers + + def sync_record(self, sliver): + self.manager.init_admin(tenant=sliver.slice.name) + servers = self.manager.driver.shell.nova.servers.findall(id=sliver.instance_id) + if not servers: + continue + server = servers[0] + ips = server.addresses.get(sliver.slice.name, []) + if not ips: + continue + sliver.ip = ips[0]['addr'] + sliver.save() + logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))