X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fopenstack_observer%2Fsteps%2Fsync_nodes.py;h=d648b7da7119915a607ef9baf57675cd3f0949c7;hb=fd1dc21eba7446820adfa6228ef69ed56b4c2ae5;hp=740b5e1193ddfccbfdadb2cd57d9f1e6af7cacbe;hpb=b83643ce3eae320f38520812fb733d0e1ce4d4f6;p=plstackapi.git diff --git a/planetstack/openstack_observer/steps/sync_nodes.py b/planetstack/openstack_observer/steps/sync_nodes.py index 740b5e1..d648b7d 100644 --- a/planetstack/openstack_observer/steps/sync_nodes.py +++ b/planetstack/openstack_observer/steps/sync_nodes.py @@ -1,12 +1,15 @@ import os import base64 import random -from datetime import datetime +from datetime import datetime from django.db.models import F, Q from planetstack.config import Config from observer.openstacksyncstep import OpenStackSyncStep from core.models.node import Node from core.models.site import Site, Deployment +from util.logger import Logger, logging + +logger = Logger(level=logging.INFO) class SyncNodes(OpenStackSyncStep): provides=[Node] @@ -23,12 +26,17 @@ class SyncNodes(OpenStackSyncStep): nodes = Node.objects.all() node_hostnames = [node.name for node in nodes] - # fetch all nodes from each deployment + # fetch all nodes from each deployment deployments = Deployment.objects.all() new_nodes = [] for deployment in deployments: - driver = self.driver.admin_driver(deployment=deployment.name) - compute_nodes = driver.shell.nova.hypervisors.list() + try: + driver = self.driver.admin_driver(deployment=deployment.name) + compute_nodes = driver.shell.nova.hypervisors.list() + except: + logger.log_exc("Failed to get nodes from deployment %s" % str(deployment)) + continue + for compute_node in compute_nodes: if compute_node.hypervisor_hostname not in node_hostnames: # XX TODO:figure out how to correctly identify a node's site.