summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Behrens <cbehrens@codestud.com>2010-08-06 18:54:45 -0500
committerChris Behrens <cbehrens@codestud.com>2010-08-06 18:54:45 -0500
commitba3b5ac30d9cd72e1cb757919ea76843112b307e (patch)
tree1215b996fafc2be7a666e2df92c4f0b775d71df4
parent094d64334e419d86a550c913ea4f0b8f086777bd (diff)
pep8 and pylint cleanups
-rw-r--r--nova/scheduler/scheduler.py29
-rw-r--r--nova/scheduler/service.py18
2 files changed, 28 insertions, 19 deletions
diff --git a/nova/scheduler/scheduler.py b/nova/scheduler/scheduler.py
index 79ed9dc06..49ef40f06 100644
--- a/nova/scheduler/scheduler.py
+++ b/nova/scheduler/scheduler.py
@@ -18,19 +18,17 @@
Scheduler Classes
"""
-import logging
import random
-import sys
import time
-from nova import exception
from nova import flags
from nova.datastore import Redis
FLAGS = flags.FLAGS
flags.DEFINE_integer('node_down_time',
60,
- 'seconds without heartbeat that determines a compute node to be down')
+ 'seconds without heartbeat that determines a '
+ 'compute node to be down')
class Scheduler(object):
@@ -40,21 +38,32 @@ class Scheduler(object):
@property
def compute_nodes(self):
- return [identifier.split(':')[0] for identifier in Redis.instance().smembers("daemons") if (identifier.split(':')[1] == "nova-compute")]
+ return [identifier.split(':')[0]
+ for identifier in Redis.instance().smembers("daemons")
+ if (identifier.split(':')[1] == "nova-compute")]
def compute_node_is_up(self, node):
- time_str = Redis.instance().hget('%s:%s:%s' % ('daemon', node, 'nova-compute'), 'updated_at')
+ time_str = Redis.instance().hget('%s:%s:%s' %
+ ('daemon', node, 'nova-compute'),
+ 'updated_at')
+ if not time_str:
+ return False
+
# Would be a lot easier if we stored heartbeat time in epoch :)
- return(time_str and
- (time.time() - (int(time.mktime(time.strptime(time_str.replace('Z', 'UTC'), '%Y-%m-%dT%H:%M:%S%Z'))) - time.timezone) < FLAGS.node_down_time))
+ time_str = time_str.replace('Z', 'UTC')
+ time_split = time.strptime(time_str, '%Y-%m-%dT%H:%M:%S%Z')
+ epoch_time = int(time.mktime(time_split)) - time.timezone
+ return (time.time() - epoch_time) < FLAGS.node_down_time
def compute_nodes_up(self):
- return [node for node in self.compute_nodes if self.compute_node_is_up(node)]
+ return [node for node in self.compute_nodes
+ if self.compute_node_is_up(node)]
def pick_node(self, instance_id, **_kwargs):
"""You DEFINITELY want to define this in your subclass"""
raise NotImplementedError("Your subclass should define pick_node")
+
class RandomScheduler(Scheduler):
"""
Implements Scheduler as a random node selector
@@ -67,6 +76,7 @@ class RandomScheduler(Scheduler):
nodes = self.compute_nodes_up()
return nodes[int(random.random() * len(nodes))]
+
class BestFitScheduler(Scheduler):
"""
Implements Scheduler as a best-fit node selector
@@ -77,4 +87,3 @@ class BestFitScheduler(Scheduler):
def pick_node(self, instance_id, **_kwargs):
raise NotImplementedError("BestFitScheduler is not done yet")
-
diff --git a/nova/scheduler/service.py b/nova/scheduler/service.py
index 39bfd6e07..1246b6e72 100644
--- a/nova/scheduler/service.py
+++ b/nova/scheduler/service.py
@@ -33,19 +33,20 @@ flags.DEFINE_string('scheduler_type',
'random',
'the scheduler to use')
-scheduler_classes = {
- 'random': scheduler.RandomScheduler,
- 'bestfit': scheduler.BestFitScheduler
- }
-
+scheduler_classes = {'random': scheduler.RandomScheduler,
+ 'bestfit': scheduler.BestFitScheduler}
+
+
class SchedulerService(service.Service):
"""
Manages the running instances.
"""
+
def __init__(self):
super(SchedulerService, self).__init__()
if (FLAGS.scheduler_type not in scheduler_classes):
- raise exception.Error("Scheduler '%s' does not exist" % FLAGS.scheduler_type)
+ raise exception.Error("Scheduler '%s' does not exist" %
+ FLAGS.scheduler_type)
self._scheduler_class = scheduler_classes[FLAGS.scheduler_type]
def noop(self):
@@ -77,7 +78,6 @@ class SchedulerService(service.Service):
rpc.cast('%s.%s' % (FLAGS.compute_topic, node),
{"method": "run_instance",
- "args": {"instance_id" : instance_id}})
- logging.debug("Casting to node %s for instance %s" %
+ "args": {"instance_id": instance_id}})
+ logging.debug("Casting to node %s for running instance %s" %
(node, instance_id))
-