Merge "Fix SSH host to floating IP from fixed IP"
This commit is contained in:
@@ -97,6 +97,9 @@ ssh_timeout = 300
|
|||||||
# Number of seconds to wait for output from ssh channel
|
# Number of seconds to wait for output from ssh channel
|
||||||
ssh_channel_timeout = 60
|
ssh_channel_timeout = 60
|
||||||
|
|
||||||
|
# Dose the SSH uses Floating IP?
|
||||||
|
use_floatingip_for_ssh = True
|
||||||
|
|
||||||
# The type of endpoint for a Compute API service. Unless you have a
|
# The type of endpoint for a Compute API service. Unless you have a
|
||||||
# custom Keystone service catalog implementation, you probably want to leave
|
# custom Keystone service catalog implementation, you probably want to leave
|
||||||
# this value as "compute"
|
# this value as "compute"
|
||||||
|
@@ -177,6 +177,9 @@ ComputeGroup = [
|
|||||||
cfg.IntOpt('ip_version_for_ssh',
|
cfg.IntOpt('ip_version_for_ssh',
|
||||||
default=4,
|
default=4,
|
||||||
help="IP version used for SSH connections."),
|
help="IP version used for SSH connections."),
|
||||||
|
cfg.BoolOpt('use_floatingip_for_ssh',
|
||||||
|
default=True,
|
||||||
|
help="Dose the SSH uses Floating IP?"),
|
||||||
cfg.StrOpt('catalog_type',
|
cfg.StrOpt('catalog_type',
|
||||||
default='compute',
|
default='compute',
|
||||||
help="Catalog type of the Compute service."),
|
help="Catalog type of the Compute service."),
|
||||||
|
@@ -85,17 +85,21 @@ class TestSnapshotPattern(manager.OfficialClientTest):
|
|||||||
self.addCleanup(self.compute_client.security_group_rules.delete,
|
self.addCleanup(self.compute_client.security_group_rules.delete,
|
||||||
sg_rule.id)
|
sg_rule.id)
|
||||||
|
|
||||||
def _ssh_to_server(self, server):
|
def _ssh_to_server(self, server_or_ip):
|
||||||
|
if isinstance(server_or_ip, basestring):
|
||||||
|
ip = server_or_ip
|
||||||
|
else:
|
||||||
|
network_name_for_ssh = self.config.compute.network_for_ssh
|
||||||
|
ip = server_or_ip.networks[network_name_for_ssh][0]
|
||||||
username = self.config.scenario.ssh_user
|
username = self.config.scenario.ssh_user
|
||||||
ip = server.networks[self.config.compute.network_for_ssh][0]
|
|
||||||
linux_client = RemoteClient(ip,
|
linux_client = RemoteClient(ip,
|
||||||
username,
|
username,
|
||||||
pkey=self.keypair.private_key)
|
pkey=self.keypair.private_key)
|
||||||
|
|
||||||
return linux_client.ssh_client
|
return linux_client.ssh_client
|
||||||
|
|
||||||
def _write_timestamp(self, server):
|
def _write_timestamp(self, server_or_ip):
|
||||||
ssh_client = self._ssh_to_server(server)
|
ssh_client = self._ssh_to_server(server_or_ip)
|
||||||
ssh_client.exec_command('date > /tmp/timestamp; sync')
|
ssh_client.exec_command('date > /tmp/timestamp; sync')
|
||||||
self.timestamp = ssh_client.exec_command('cat /tmp/timestamp')
|
self.timestamp = ssh_client.exec_command('cat /tmp/timestamp')
|
||||||
|
|
||||||
@@ -110,11 +114,19 @@ class TestSnapshotPattern(manager.OfficialClientTest):
|
|||||||
self.assertEquals(snapshot_name, snapshot_image.name)
|
self.assertEquals(snapshot_name, snapshot_image.name)
|
||||||
return image_id
|
return image_id
|
||||||
|
|
||||||
def _check_timestamp(self, server):
|
def _check_timestamp(self, server_or_ip):
|
||||||
ssh_client = self._ssh_to_server(server)
|
ssh_client = self._ssh_to_server(server_or_ip)
|
||||||
got_timestamp = ssh_client.exec_command('cat /tmp/timestamp')
|
got_timestamp = ssh_client.exec_command('cat /tmp/timestamp')
|
||||||
self.assertEqual(self.timestamp, got_timestamp)
|
self.assertEqual(self.timestamp, got_timestamp)
|
||||||
|
|
||||||
|
def _create_floating_ip(self):
|
||||||
|
floating_ip = self.compute_client.floating_ips.create()
|
||||||
|
self.addCleanup(floating_ip.delete)
|
||||||
|
return floating_ip
|
||||||
|
|
||||||
|
def _set_floating_ip_to_server(self, server, floating_ip):
|
||||||
|
server.add_floating_ip(floating_ip)
|
||||||
|
|
||||||
def test_snapshot_pattern(self):
|
def test_snapshot_pattern(self):
|
||||||
# prepare for booting a instance
|
# prepare for booting a instance
|
||||||
self._add_keypair()
|
self._add_keypair()
|
||||||
@@ -122,6 +134,11 @@ class TestSnapshotPattern(manager.OfficialClientTest):
|
|||||||
|
|
||||||
# boot a instance and create a timestamp file in it
|
# boot a instance and create a timestamp file in it
|
||||||
server = self._boot_image(self.config.compute.image_ref)
|
server = self._boot_image(self.config.compute.image_ref)
|
||||||
|
if self.config.compute.use_floatingip_for_ssh:
|
||||||
|
fip_for_server = self._create_floating_ip()
|
||||||
|
self._set_floating_ip_to_server(server, fip_for_server)
|
||||||
|
self._write_timestamp(fip_for_server.ip)
|
||||||
|
else:
|
||||||
self._write_timestamp(server)
|
self._write_timestamp(server)
|
||||||
|
|
||||||
# snapshot the instance
|
# snapshot the instance
|
||||||
@@ -131,4 +148,10 @@ class TestSnapshotPattern(manager.OfficialClientTest):
|
|||||||
server_from_snapshot = self._boot_image(snapshot_image_id)
|
server_from_snapshot = self._boot_image(snapshot_image_id)
|
||||||
|
|
||||||
# check the existence of the timestamp file in the second instance
|
# check the existence of the timestamp file in the second instance
|
||||||
|
if self.config.compute.use_floatingip_for_ssh:
|
||||||
|
fip_for_snapshot = self._create_floating_ip()
|
||||||
|
self._set_floating_ip_to_server(server_from_snapshot,
|
||||||
|
fip_for_snapshot)
|
||||||
|
self._check_timestamp(fip_for_snapshot.ip)
|
||||||
|
else:
|
||||||
self._check_timestamp(server_from_snapshot)
|
self._check_timestamp(server_from_snapshot)
|
||||||
|
Reference in New Issue
Block a user