diff --git a/neat/common.py b/neat/common.py index 74f493b..240bfb5 100644 --- a/neat/common.py +++ b/neat/common.py @@ -21,6 +21,7 @@ from neat.contracts_extra import * import os import time import json +import re import numpy from neat.config import * @@ -223,6 +224,19 @@ def parse_parameters(params): return dict((str(k), v) for k, v in json.loads(params).items()) + +@contract +def parse_compute_hosts(compute_hosts): + """ Transform a coma-separated list of host names into a list. + + :param compute_hosts: A coma-separated list of host names. + :type compute_hosts: str + + :return: A list of host names. + :rtype: list(str) + """ + return filter(None, re.split('\W+', compute_hosts)) + @contract def calculate_migration_time(vms, bandwidth): diff --git a/neat/globals/manager.py b/neat/globals/manager.py index 4b678cb..db8d2e3 100644 --- a/neat/globals/manager.py +++ b/neat/globals/manager.py @@ -71,7 +71,6 @@ from contracts import contract from neat.contracts_extra import * import bottle -import re import json from hashlib import sha1 from novaclient.v1_1 import client @@ -235,20 +234,8 @@ def init_state(config): service_type="compute"), 'hashed_username': sha1(config['os_admin_user']).hexdigest(), 'hashed_password': sha1(config['os_admin_password']).hexdigest(), - 'compute_hosts': parse_compute_hosts(config['compute_hosts'])} - - -@contract -def parse_compute_hosts(compute_hosts): - """ Transform a coma-separated list of host names into a list. - - :param compute_hosts: A coma-separated list of host names. - :type compute_hosts: str - - :return: A list of host names. - :rtype: list(str) - """ - return filter(None, re.split('\W+', compute_hosts)) + 'compute_hosts': common.parse_compute_hosts( + config['compute_hosts'])} @contract diff --git a/tests/globals/test_manager.py b/tests/globals/test_manager.py index df1b2df..0f5af17 100644 --- a/tests/globals/test_manager.py +++ b/tests/globals/test_manager.py @@ -146,7 +146,7 @@ class GlobalManager(TestCase): 'user', 'password', 'tenant', 'url', service_type='compute'). \ and_return(nova).once() - expect(manager).parse_compute_hosts('host1, host2'). \ + expect(common).parse_compute_hosts('host1, host2'). \ and_return(hosts).once() state = manager.init_state(config) assert state['previous_time'] == 0 @@ -156,13 +156,6 @@ class GlobalManager(TestCase): assert state['hashed_password'] == sha1('password').hexdigest() assert state['compute_hosts'] == hosts - def test_parse_compute_hosts(self): - assert manager.parse_compute_hosts('') == [] - assert manager.parse_compute_hosts('test1, test2') == \ - ['test1', 'test2'] - assert manager.parse_compute_hosts('t1,, t2 , t3') == \ - ['t1', 't2', 't3'] - def test_service(self): app = mock('app') state = {'hashed_username': 'user', diff --git a/tests/test_common.py b/tests/test_common.py index 718486f..647ed36 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -146,6 +146,13 @@ class Common(TestCase): self.assertEqual(common.parse_parameters(params), {'param1': 0.56, 'param2': 'abc'}) + def test_parse_compute_hosts(self): + assert common.parse_compute_hosts('') == [] + assert common.parse_compute_hosts('test1, test2') == \ + ['test1', 'test2'] + assert common.parse_compute_hosts('t1,, t2 , t3') == \ + ['t1', 't2', 't3'] + @qc(10) def calculate_migration_time( data=dict_(