Use only IP address to SSH overcloud nodes
Change-Id: I0540f0f2adf2ac114a1fb0964a08415e123b4a74
This commit is contained in:
parent
bfb46b703b
commit
6395db0bb6
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user