diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-03-03 20:06:52 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-03-03 20:06:52 +0000 |
| commit | a9ffc4760bf5f5bc782b53d47f9c53948a868df2 (patch) | |
| tree | cf0ed1514360629a0235ea98ab87f3a47de1c853 | |
| parent | 5d8e6130e4c1f5abf85dc87456b3844c4e6ccf0f (diff) | |
| parent | 762d5bb38fc39327a318f301291687c6e312f008 (diff) | |
| download | nova-a9ffc4760bf5f5bc782b53d47f9c53948a868df2.tar.gz nova-a9ffc4760bf5f5bc782b53d47f9c53948a868df2.tar.xz nova-a9ffc4760bf5f5bc782b53d47f9c53948a868df2.zip | |
Merge "Add ssh port and key based auth to VPD."
| -rw-r--r-- | nova/tests/baremetal/test_virtual_power_driver.py | 21 | ||||
| -rw-r--r-- | nova/virt/baremetal/virtual_power_driver.py | 19 | ||||
| -rw-r--r-- | nova/virt/powervm/common.py | 6 |
3 files changed, 39 insertions, 7 deletions
diff --git a/nova/tests/baremetal/test_virtual_power_driver.py b/nova/tests/baremetal/test_virtual_power_driver.py index 5a38ed87b..4b140f66a 100644 --- a/nova/tests/baremetal/test_virtual_power_driver.py +++ b/nova/tests/baremetal/test_virtual_power_driver.py @@ -49,6 +49,7 @@ BAREMETAL_FLAGS = dict( virtual_power_type='vbox', virtual_power_host_user=None, virtual_power_host_pass=None, + virtual_power_host_key=None, group='baremetal', ) @@ -128,7 +129,7 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase): self.flags(virtual_power_host_user='user', group="baremetal") self.flags(virtual_power_host_pass='password', group="baremetal") - def test_get_conn_success(self): + def test_get_conn_success_pass(self): self._create_node() self._create_pm() self._conn = self.pm._get_conn() @@ -139,6 +140,24 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase): self.assertEqual(self.pm.connection_data.host, '127.0.0.1') self.assertEqual(self.pm.connection_data.username, 'user') self.assertEqual(self.pm.connection_data.password, 'password') + self.assertEqual(self.pm.connection_data.keyfile, None) + self.mox.VerifyAll() + + def test_get_conn_success_key(self): + self.flags(virtual_power_host_pass='', group="baremetal") + self.flags(virtual_power_host_key='/id_rsa_file.txt', + group="baremetal") + self._create_node() + self._create_pm() + self._conn = self.pm._get_conn() + self.mox.StubOutWithMock(connection, 'ssh_connect') + connection.ssh_connect(mox.IsA(self._conn)).AndReturn(True) + self.mox.ReplayAll() + self.pm._set_connection() + self.assertEqual(self.pm.connection_data.host, '127.0.0.1') + self.assertEqual(self.pm.connection_data.username, 'user') + self.assertEqual(self.pm.connection_data.password, '') + self.assertEqual(self.pm.connection_data.keyfile, '/id_rsa_file.txt') self.mox.VerifyAll() def test_get_full_node_list(self): diff --git a/nova/virt/baremetal/virtual_power_driver.py b/nova/virt/baremetal/virtual_power_driver.py index a18a2f9d3..d3f612ddd 100644 --- a/nova/virt/baremetal/virtual_power_driver.py +++ b/nova/virt/baremetal/virtual_power_driver.py @@ -31,8 +31,11 @@ opts = [ cfg.StrOpt('virtual_power_ssh_host', default='', help='ip or name to virtual power host'), + cfg.StrOpt('virtual_power_ssh_port', + default='22', + help='Port to use for ssh to virtual power host'), cfg.StrOpt('virtual_power_type', - default='vbox', + default='virsh', help='base command to use for virtual power(vbox,virsh)'), cfg.StrOpt('virtual_power_host_user', default='', @@ -40,6 +43,10 @@ opts = [ cfg.StrOpt('virtual_power_host_pass', default='', help='password for virtual power host_user'), + cfg.StrOpt('virtual_power_host_key', + default=None, + help='ssh key for virtual power host_user'), + ] baremetal_vp = cfg.OptGroup(name='baremetal', @@ -101,13 +108,17 @@ class VirtualPowerManager(base.PowerManager): _('virtual_power_host_user not defined. Can not Start')) if not CONF.baremetal.virtual_power_host_pass: - raise exception.NovaException( - _('virtual_power_host_pass not defined. Can not Start')) + # it is ok to not have a password if you have a keyfile + if CONF.baremetal.virtual_power_host_key is None: + raise exception.NovaException( + _('virtual_power_host_pass/key not set. Can not Start')) _conn = connection.Connection( CONF.baremetal.virtual_power_ssh_host, CONF.baremetal.virtual_power_host_user, - CONF.baremetal.virtual_power_host_pass) + CONF.baremetal.virtual_power_host_pass, + CONF.baremetal.virtual_power_ssh_port, + CONF.baremetal.virtual_power_host_key) return _conn def _set_connection(self): diff --git a/nova/virt/powervm/common.py b/nova/virt/powervm/common.py index c1d5d7f07..b36fa57f3 100644 --- a/nova/virt/powervm/common.py +++ b/nova/virt/powervm/common.py @@ -31,11 +31,12 @@ LOG = logging.getLogger(__name__) class Connection(object): - def __init__(self, host, username, password, port=22): + def __init__(self, host, username, password, port=22, keyfile=None): self.host = host self.username = username self.password = password self.port = port + self.keyfile = keyfile def ssh_connect(connection): @@ -51,7 +52,8 @@ def ssh_connect(connection): ssh.connect(connection.host, username=connection.username, password=connection.password, - port=connection.port) + port=connection.port, + key_filename=connection.keyfile) return ssh except Exception: LOG.exception(_('Connection error connecting PowerVM manager')) |
