Add 'slave_direct_ssh' parameter to fuel driver
Change-Id: I3c70fbfc8a05f6465919ca095479ca12ecf115f8
This commit is contained in:
parent
65c6f928d8
commit
533654d951
|
@ -356,12 +356,15 @@ class FuelManagement(cloud_management.CloudManagement,
|
|||
address: 192.168.1.10
|
||||
username: root
|
||||
private_key_file: ~/.ssh/id_rsa_fuel
|
||||
slave_direct_ssh: True
|
||||
|
||||
parameters:
|
||||
|
||||
- **address** - ip address of fuel master node
|
||||
- **username** - username for fuel master and slave nodes
|
||||
- **private_key_file** - path to key file (optional)
|
||||
- **slave_direct_ssh** - if *False* then fuel master is used as ssh proxy
|
||||
(optional)
|
||||
"""
|
||||
|
||||
NAME = 'fuel'
|
||||
|
@ -420,6 +423,7 @@ class FuelManagement(cloud_management.CloudManagement,
|
|||
'address': {'type': 'string'},
|
||||
'username': {'type': 'string'},
|
||||
'private_key_file': {'type': 'string'},
|
||||
'slave_direct_ssh': {'type': 'boolean'},
|
||||
|
||||
},
|
||||
'required': ['address', 'username'],
|
||||
|
@ -433,13 +437,19 @@ class FuelManagement(cloud_management.CloudManagement,
|
|||
self.master_node_address = cloud_management_params['address']
|
||||
self.username = cloud_management_params['username']
|
||||
self.private_key_file = cloud_management_params.get('private_key_file')
|
||||
self.slave_direct_ssh = cloud_management_params.get(
|
||||
'slave_direct_ssh', False)
|
||||
|
||||
self.master_node_executor = executor.AnsibleRunner(
|
||||
remote_user=self.username, private_key_file=self.private_key_file)
|
||||
|
||||
jump_host = self.master_node_address
|
||||
if self.slave_direct_ssh:
|
||||
jump_host = None
|
||||
|
||||
self.cloud_executor = executor.AnsibleRunner(
|
||||
remote_user=self.username, private_key_file=self.private_key_file,
|
||||
jump_host=self.master_node_address)
|
||||
jump_host=jump_host)
|
||||
|
||||
self.cached_cloud_hosts = list()
|
||||
|
||||
|
|
|
@ -34,6 +34,28 @@ class FuelManagementTestCase(test.TestCase):
|
|||
' {"ip": "10.0.0.3", "mac": "03", "fqdn": "node-3"}]'
|
||||
})
|
||||
|
||||
@mock.patch('os_faults.ansible.executor.AnsibleRunner', autospec=True)
|
||||
@ddt.data((
|
||||
dict(address='fuel.local', username='root'),
|
||||
(mock.call(private_key_file=None, remote_user='root'),
|
||||
mock.call(private_key_file=None, remote_user='root',
|
||||
jump_host='fuel.local'))
|
||||
), (
|
||||
dict(address='fuel.local', username='root', slave_direct_ssh=True),
|
||||
(mock.call(private_key_file=None, remote_user='root'),
|
||||
mock.call(private_key_file=None, remote_user='root',
|
||||
jump_host=None))
|
||||
))
|
||||
@ddt.unpack
|
||||
def test_init(self, config, expected_runner_calls, mock_ansible_runner):
|
||||
ansible_runner_inst = mock_ansible_runner.return_value
|
||||
|
||||
fuel_managment = fuel.FuelManagement(config)
|
||||
|
||||
mock_ansible_runner.assert_has_calls(expected_runner_calls)
|
||||
self.assertIs(fuel_managment.master_node_executor, ansible_runner_inst)
|
||||
self.assertIs(fuel_managment.cloud_executor, ansible_runner_inst)
|
||||
|
||||
@mock.patch('os_faults.ansible.executor.AnsibleRunner', autospec=True)
|
||||
def test_verify(self, mock_ansible_runner):
|
||||
ansible_runner_inst = mock_ansible_runner.return_value
|
||||
|
|
Loading…
Reference in New Issue