Use only IP address to SSH overcloud nodes

Change-Id: I0540f0f2adf2ac114a1fb0964a08415e123b4a74
This commit is contained in:
Federico Ressi 2020-09-25 10:36:26 +02:00
parent bfb46b703b
commit 6395db0bb6
3 changed files with 23 additions and 7 deletions

View File

@ -15,6 +15,8 @@
# under the License.
from __future__ import absolute_import
import typing
import netaddr
from oslo_log import log
@ -37,7 +39,9 @@ INETS = {
}
def list_ip_addresses(ip_version=None, scope=None, **execute_params):
def list_ip_addresses(ip_version: typing.Optional[int] = None,
scope: str = None, **execute_params) -> \
typing.List[netaddr.IPAddress]:
inets = INETS.get(ip_version)
if inets is None:
error = "invalid IP version: {!r}".format(ip_version)
@ -61,14 +65,25 @@ def list_ip_addresses(ip_version=None, scope=None, **execute_params):
except (IndexError, ValueError):
continue
address = fields[3]
if '/' in address:
# Remove netmask prefix length
address, _ = address.split('/', 1)
ips.append(netaddr.IPAddress(address))
address, prefix_len = parse_ip_address(fields[3])
if prefix_len >= address.netmask_bits():
LOG.warning("Ignore suspicious IP address: "
f"{address}/{prefix_len} ({fields})")
else:
ips.append(address)
return ips
def parse_ip_address(text: str) -> typing.Tuple[netaddr.IPAddress, int]:
if '/' in text:
# Remove netmask prefix length
address, prefix_len_text = text.split('/', 1)
prefix_len = int(prefix_len_text)
else:
prefix_len = 0
return netaddr.IPAddress(address), prefix_len
def list_network_namespaces(**execute_params):
namespaces = tobiko.Selection()
output = execute_ip(['-o', 'netns', 'list'], **execute_params)

View File

@ -149,7 +149,7 @@ class OvercloudHostConfig(tobiko.SharedFixture):
self._connect_parameters = ssh.gather_ssh_connect_parameters(**kwargs)
def setup_fixture(self):
self.hostname = self.hostname or str(overcloud_node_ip_address(
self.hostname = str(overcloud_node_ip_address(
name=self.host, ip_version=self.ip_version,
network_name=self.network_name))
self.port = self.port or CONF.tobiko.tripleo.overcloud_ssh_port

View File

@ -58,6 +58,7 @@ class TripleoTopology(topology.OpenStackTopology):
config = _overcloud.overcloud_host_config(server.name)
ssh_client = _overcloud.overcloud_ssh_client(server.name)
node = self.add_node(address=config.hostname,
hostname=server.name,
group='overcloud',
ssh_client=ssh_client)
self.discover_overcloud_node_subgroups(node)