remove references to OpenStackDriver and OpenStackClient outside of OpenStackManager
[plstackapi.git] / plstackapi / openstack / sliveragent.py
1 import os
2 import sys
3 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "plstackapi.planetstack.settings")
4 import time
5 from plstackapi.core.models.sliver import Sliver
6 from plstackapi.openstack.manager import OpenStackManager
7
8 class SliverAgent:
9
10     def run(self):
11         manager = OpenStackManager()
12         # exit if openstack is disable or unavailable
13         if not manager.enabled or not manager.has_openstack:
14             sys.exit()
15
16         while True :
17             # fill in null ip addresses 
18             slivers = Sliver.objects.filter(ip=None)
19             for sliver in slivers:
20                 # update connection
21                 manager.client.connect(username=manager.client.keystone.username,
22                                password=manager.client.keystone.password,
23                                tenant=sliver.slice.name)  
24                 sliver.os_manager = manager
25                 servers = manager.client.nova.servers.findall(id=sliver.instance_id)
26                 if not servers:
27                     continue
28                 server = servers[0]
29                 ips = server.addresses.get(sliver.slice.name, [])
30                 if not ips:
31                     continue
32                 sliver.ip = ips[0]['addr']
33                 sliver.save()
34             time.sleep(7)
35                 
36                                         
37 if __name__ == '__main__':
38     SliverAgent().run()
39