4 from datetime import datetime
5 from django.db.models import F, Q
6 from planetstack.config import Config
7 from observer.openstacksyncstep import OpenStackSyncStep
8 from core.models.node import Node
9 from core.models.site import Site, Deployment
11 class SyncNodes(OpenStackSyncStep):
15 def fetch_pending(self, deleted):
16 # Nodes come from the back end
17 # You can't delete them
22 sites = Site.objects.all()
23 nodes = Node.objects.all()
24 node_hostnames = [node.name for node in nodes]
26 # fetch all nodes from each deployment
27 deployments = Deployment.objects.all()
29 for deployment in deployments:
30 driver = self.driver.admin_driver(deployment=deployment.name)
31 compute_nodes = driver.shell.nova.hypervisors.list()
32 for compute_node in compute_nodes:
33 if compute_node.hypervisor_hostname not in node_hostnames:
34 # XX TODO:figure out how to correctly identify a node's site.
35 # XX pick a random site to add the node to for now
36 site_index = random.randint(0, len(sites))
37 node = Node(name=compute_node.hypervisor_hostname,
38 site=sites[site_index], deployment=deployment)
39 new_nodes.append(node)
44 def sync_record(self, node):