DummyProvider refactoring

In the 'credentials' config section of dummy provider it is possible to
specify additionally port, key and password.

Change-Id: I784b8c4b9b920d80ded5af87e996f6df44d5c380
Related: blueprint provider-server-refactoring
This commit is contained in:
Maksym Iarmak
2013-12-18 18:38:20 +02:00
parent fafabbe305
commit c0679ba623
8 changed files with 32 additions and 20 deletions

View File

@@ -2,6 +2,6 @@
"name": "DevstackEngine",
"provider": {
"name": "DummyProvider",
"credentials": ["root@10.2.0.8"]
"credentials": [{"user": "root", "host": "10.2.0.8"}]
}
}

View File

@@ -11,7 +11,7 @@
"ipv4_prefixlen": 16,
"host_provider": {
"name": "DummyProvider",
"credentials": ["root@10.2.250.103"]
"credentials": [{"user": "root", "host": "10.2.250.103"}]
}
}
}

View File

@@ -40,7 +40,7 @@ class DevstackEngine(engine.EngineFactory):
},
"provider": {
"name": "DummyProvider",
"credentials": ["root@10.2.0.8"]
"credentials": [{'user': 'root', 'host': '10.2.0.8'}]
}
}
"""

View File

@@ -20,18 +20,25 @@ from rally.serverprovider import provider
class DummyProvider(provider.ProviderFactory):
"""Just return endpoints from own configuration."""
CREDENTIALS_SCHEMA = {
'type': 'object',
'properties': {
'host': {'type': 'string'},
'port': {'type': 'integer'},
'user': {'type': 'string'},
'key': {'type': 'string'},
'password': {'type': 'string'}
},
'required': ['host', 'user']
}
CONFIG_SCHEMA = {
'type': 'object',
'properties': {
'name': {
'type': 'string'
},
'name': {'type': 'string'},
'credentials': {
'type': 'array',
'items': {
"type": "string",
"pattern": "^.+@.+$"
},
'items': CREDENTIALS_SCHEMA
},
},
'required': ['credentials']
@@ -42,11 +49,14 @@ class DummyProvider(provider.ProviderFactory):
self.credentials = config['credentials']
def create_servers(self):
credentials = []
for ep in self.credentials:
user, host = ep.split('@')
credentials.append(provider.Server(host, user))
return credentials
servers = []
for endpoint in self.credentials:
servers.append(provider.Server(ip=endpoint['host'],
user=endpoint['user'],
key=endpoint.get('key'),
password=endpoint.get('password'),
port=endpoint.get('port', 22)))
return servers
def destroy_servers(self):
pass

View File

@@ -90,7 +90,7 @@ class LxcProvider(provider.ProviderFactory):
},
'host_provider': {
'name': 'DummyProvider',
'credentials': ['root@host.net']
'credentials': [{'user': 'root', 'host': 'host.net'}]
}
}

View File

@@ -26,7 +26,7 @@ SAMPLE_CONFIG = {
'name': 'DevstackEngine',
'provider': {
'name': 'DummyProvider',
'credentials': ['root@example.com'],
'credentials': [{'user': 'root', 'host': 'example.com'}],
},
'localrc': {
'ADMIN_PASSWORD': 'secret',

View File

@@ -27,7 +27,8 @@ class DummyProviderTestCase(test.TestCase):
def setUp(self):
super(DummyProviderTestCase, self).setUp()
self.config = {'name': 'DummyProvider',
'credentials': ['user@host1', 'user@host2']}
'credentials': [{'user': 'user', 'host': 'host1'},
{'user': 'user', 'host': 'host2'}]}
def test_create_servers(self):
provider = serverprovider.ProviderFactory.get_provider(self.config,
@@ -42,6 +43,6 @@ class DummyProviderTestCase(test.TestCase):
dummy.DummyProvider, None, self.config)
def test_invalid_credentials(self):
self.config['credentials'] = ['user host1', 'user host2']
self.config['credentials'] = ['user@host1', 'user@host2']
self.assertRaises(jsonschema.ValidationError,
dummy.DummyProvider, None, self.config)

View File

@@ -111,7 +111,8 @@ class LxcProviderTestCase(test.BaseTestCase):
},
'host_provider': {
'name': 'DummyProvider',
'credentials': ['root@host1.net', 'root@host2.net']}
'credentials': [{'user': 'root', 'host': 'host1.net'},
{'user': 'root', 'host': 'host2.net'}]}
}
self.mock_deployment = mock.MagicMock()
self.provider = lxc.provider.ProviderFactory.get_provider(