Removed hpc_observer garbage collector.
[plstackapi.git] / planetstack / openstack_observer / steps / sync_sliver_ips.py
1 import os
2 import base64
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
8
9 logger = Logger(level=logging.INFO)
10
11 class SyncSliverIps(OpenStackSyncStep):
12     provides=[Sliver]
13     requested_interval=0
14
15     def fetch_pending(self, deleted):
16         return [] # XXX smbaker - disabling this sync_step, since sliver.ip is obsoleted by sync_network_slivers()
17
18         # Not supported yet
19         if (deleted):
20             return []
21         slivers = Sliver.objects.filter(ip=None)
22         return slivers
23
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)
28         if not servers:
29             return
30         server = servers[0]
31
32         # First try to grab the dedicated public address
33         # NOTE: "ext-net" is hardcoded here.
34         ip = None
35         ext_net_addrs = server.addresses.get("ext-net")\r
36         if ext_net_addrs:\r
37             ip = ext_net_addrs[0]["addr"]\r
38 \r
39         # If there was no public address, then grab the first address in the\r
40         # list.\r
41         if not ip:\r
42             if server.addresses:\r
43                 addrs = server.addresses.values()[0]\r
44                 if addrs:\r
45                     ip = addrs[0]["addr"]
46
47         if ip and ip!=sliver.ip:
48             sliver.ip = ip
49             sliver.save()
50             logger.info("saved sliver ip: %s %s" % (sliver, ip))