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:
@@ -2,6 +2,6 @@
|
||||
"name": "DevstackEngine",
|
||||
"provider": {
|
||||
"name": "DummyProvider",
|
||||
"credentials": ["root@10.2.0.8"]
|
||||
"credentials": [{"user": "root", "host": "10.2.0.8"}]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"}]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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'}]
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -90,7 +90,7 @@ class LxcProvider(provider.ProviderFactory):
|
||||
},
|
||||
'host_provider': {
|
||||
'name': 'DummyProvider',
|
||||
'credentials': ['root@host.net']
|
||||
'credentials': [{'user': 'root', 'host': 'host.net'}]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user