blob: 8e50cf375d3a05e63792f1350d3d4863549e9ac4 [file] [log] [blame]
import os
import sys
#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
import time
from core.models.instance import Instance
from openstack.manager import OpenStackManager
class InstanceAgent:
def run(self):
manager = OpenStackManager()
# exit if openstack is disable or unavailable
if not manager.enabled or not manager.has_openstack:
sys.exit()
while True :
# fill in null ip addresses
instances = Instance.objects.filter(ip=None)
for instance in instances:
# update connection
manager.client.connect(username=manager.client.keystone.username,
password=manager.client.keystone.password,
tenant=instance.slice.name)
instance.os_manager = manager
servers = manager.client.nova.servers.findall(id=instance.instance_id)
if not servers:
continue
server = servers[0]
ips = server.addresses.get(instance.slice.name, [])
if not ips:
continue
instance.ip = ips[0]['addr']
instance.save()
time.sleep(7)
if __name__ == '__main__':
InstanceAgent().run()