Skip to content

Commit

Permalink
NO-ISSUE: Check IPS on static IPs mode (openshift#1127)
Browse files Browse the repository at this point in the history
  • Loading branch information
YuviGold committed Oct 4, 2021
1 parent 9f94d2b commit 974675b
Show file tree
Hide file tree
Showing 23 changed files with 265 additions and 394 deletions.
87 changes: 48 additions & 39 deletions discovery-infra/test_infra/consts/consts.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from enum import Enum
from typing import List

from .durations import MINUTE, HOUR

from assisted_service_client import models


class OpenshiftVersion(Enum):
VERSION_4_6 = "4.6"
Expand All @@ -15,6 +18,7 @@ class NetworkType:
OVNKubernetes = "OVNKubernetes"


# Files & Directories
WORKING_DIR = "build"
TF_FOLDER = f"{WORKING_DIR}/terraform"
TFVARS_JSON_NAME = "terraform.tfvars.json"
Expand All @@ -23,9 +27,16 @@ class NetworkType:
BASE_IMAGE_FOLDER = "/tmp/images"
IMAGE_NAME = "installer-image.iso"
STORAGE_PATH = "/var/lib/libvirt/openshift-images"
HOST_PASSTHROUGH_CPU_MODE = "host-passthrough"
MASTER_TF_CPU_MODE = HOST_PASSTHROUGH_CPU_MODE
WORKER_TF_CPU_MODE = HOST_PASSTHROUGH_CPU_MODE
DEFAULT_CLUSTER_KUBECONFIG_DIR_PATH = "build/kubeconfig"
OCP_VERSIONS_JSON_PATH = "assisted-service/data/default_ocp_versions.json"

TF_TEMPLATES_ROOT = "terraform_files"
TF_TEMPLATE_BARE_METAL_FLOW = f"{TF_TEMPLATES_ROOT}/baremetal"
TF_TEMPLATE_NONE_PLATFORM_FLOW = f"{TF_TEMPLATES_ROOT}/none"
TF_TEMPLATE_BARE_METAL_INFRA_ENV_FLOW = f"{TF_TEMPLATES_ROOT}/baremetal_infra_env"
TF_NETWORK_POOL_PATH = "/tmp/tf_network_pool.json"

# Timeouts
NODES_REGISTERED_TIMEOUT = 20 * MINUTE
DEFAULT_CHECK_STATUSES_INTERVAL = 5
CLUSTER_READY_FOR_INSTALL_TIMEOUT = 10 * MINUTE
Expand All @@ -41,19 +52,35 @@ class NetworkType:
DISCONNECTED_TIMEOUT = 10 * MINUTE
PENDING_USER_ACTION_TIMEOUT = 30 * MINUTE
ERROR_TIMEOUT = 10 * MINUTE
TF_TEMPLATES_ROOT = "terraform_files"
TF_TEMPLATE_BARE_METAL_FLOW = f"{TF_TEMPLATES_ROOT}/baremetal"
TF_TEMPLATE_NONE_PLATFORM_FLOW = f"{TF_TEMPLATES_ROOT}/none"
TF_TEMPLATE_BARE_METAL_INFRA_ENV_FLOW = f"{TF_TEMPLATES_ROOT}/baremetal_infra_env"
TF_NETWORK_POOL_PATH = "/tmp/tf_network_pool.json"
NUMBER_OF_MASTERS = 3
WAIT_FOR_BM_API = 15 * MINUTE

# Networking
DEFAULT_CLUSTER_NETWORKS_IPV4: List[models.ClusterNetwork] = [models.ClusterNetwork(cidr="172.30.0.0/16", host_prefix=23)]
DEFAULT_SERVICE_NETWORKS_IPV4: List[models.ServiceNetwork] = [models.ServiceNetwork(cidr="10.128.0.0/14")]
DEFAULT_MACHINE_NETWORKS_IPV4: List[models.MachineNetwork] = \
[models.MachineNetwork(cidr="192.168.127.0/24"), models.MachineNetwork("192.168.145.0/24")]

DEFAULT_CLUSTER_NETWORKS_IPV6: List[models.ClusterNetwork] = [models.ClusterNetwork(cidr="2003:db8::/112", host_prefix=64)]
DEFAULT_SERVICE_NETWORKS_IPV6: List[models.ServiceNetwork] = [models.ServiceNetwork(cidr="2002:db8::/53")]
DEFAULT_MACHINE_NETWORKS_IPV6: List[models.MachineNetwork] = \
[models.MachineNetwork(cidr="1001:db9::/120"), models.MachineNetwork("3001:db9::/120")]

DEFAULT_CLUSTER_NETWORKS_IPV4V6 = DEFAULT_CLUSTER_NETWORKS_IPV4 + DEFAULT_CLUSTER_NETWORKS_IPV6
DEFAULT_SERVICE_NETWORKS_IPV4V6 = DEFAULT_SERVICE_NETWORKS_IPV4 + DEFAULT_SERVICE_NETWORKS_IPV6
DEFAULT_MACHINE_NETWORKS_IPV4V6 = DEFAULT_MACHINE_NETWORKS_IPV4[0] + DEFAULT_MACHINE_NETWORKS_IPV6[0]

DEFAULT_PROXY_SERVER_PORT = 3129
DEFAULT_LOAD_BALANCER_PORT = 6443

TEST_INFRA = "test-infra"
CLUSTER = CLUSTER_PREFIX = "%s-cluster" % TEST_INFRA
INFRA_ENV_PREFIX = "%s-infra-env" % TEST_INFRA
TEST_NETWORK = "test-infra-net-"
TEST_SECONDARY_NETWORK = "test-infra-secondary-network-"
DEFAULT_CLUSTER_KUBECONFIG_DIR_PATH = "build/kubeconfig"
WAIT_FOR_BM_API = 15 * MINUTE

HOST_PASSTHROUGH_CPU_MODE = "host-passthrough"
MASTER_TF_CPU_MODE = HOST_PASSTHROUGH_CPU_MODE
WORKER_TF_CPU_MODE = HOST_PASSTHROUGH_CPU_MODE
NUMBER_OF_MASTERS = 3
NAMESPACE_POOL_SIZE = 15
PODMAN_FLAGS = "--cgroup-manager=cgroupfs --storage-driver=vfs --events-backend=file"
DEFAULT_ADDITIONAL_NTP_SOURCE = "clock.redhat.com"
Expand All @@ -63,27 +90,6 @@ class NetworkType:
DEFAULT_TEST_INFRA_DOMAIN = f".{CLUSTER_PREFIX}-{DEFAULT_NAMESPACE}.{DEFAULT_BASE_DNS_DOMAIN}"
TEST_TARGET_INTERFACE = "vnet3"
SUFFIX_LENGTH = 8
OCP_VERSIONS_JSON_PATH = "assisted-service/data/default_ocp_versions.json"

DEFAULT_IPV6_SERVICE_CIDR = "2003:db8::/112"
DEFAULT_IPV6_CLUSTER_CIDR = "2002:db8::/53"
DEFAULT_IPV6_HOST_PREFIX = 64
DEFAULT_PROXY_SERVER_PORT = 3129
DEFAULT_LOAD_BALANCER_PORT = 6443

IP_NETWORK_ASSET_FIELDS = (
"machine_cidr",
"machine_cidr6",
"provisioning_cidr",
"provisioning_cidr6",
)
REQUIRED_ASSET_FIELDS = (
"libvirt_network_if",
"libvirt_secondary_network_if",
*IP_NETWORK_ASSET_FIELDS,
)


class ImageType:
FULL_ISO = "full-iso"
MINIMAL_ISO = "minimal-iso"
Expand Down Expand Up @@ -212,9 +218,12 @@ class HighAvailabilityMode:


class BaseAsset:
MACHINE_CIDR = "192.168.127.0/24"
MACHINE_CIDR6 = "1001:db9::/120"
PROVISIONING_CIDR = "192.168.145.0/24"
PROVISIONING_CIDR6 = "3001:db9::/120"
NETWORK_IF = "tt1"
SECONDARY_NETWORK_IF = "stt1"
ASSET_FIELD_CIDRS = "cidrs"
ASSET_FIELD_INTERFACES = "libvirt_network_interfaces"
REQUIRED_ASSET_FIELDS = (
ASSET_FIELD_CIDRS,
ASSET_FIELD_INTERFACES,
)

CIDRS = [network.cidr for network in DEFAULT_MACHINE_NETWORKS_IPV4 + DEFAULT_MACHINE_NETWORKS_IPV6]
NETWORK_INTERFACSE = ["tt1", "stt1"]
3 changes: 0 additions & 3 deletions discovery-infra/test_infra/consts/env_defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
DEFAULT_SSH_PUBLIC_KEY_PATH: Path = Path.home() / ".ssh" / "id_rsa.pub"
DEFAULT_INSTALLER_KUBECONFIG = None
DEFAULT_LOG_FOLDER: Path = Path("/tmp/assisted_test_infra_logs")
DEFAULT_SERVICE_CIDR: str = "172.30.0.0/16"
DEFAULT_CLUSTER_CIDR: str = "10.128.0.0/14"
DEFAULT_HOST_PREFIX: int = 23
DEFAULT_IMAGE_TYPE: str = consts.ImageType.FULL_ISO
DEFAULT_TEST_TEARDOWN: bool = True
DEFAULT_PLATFORM: str = consts.Platforms.BARE_METAL
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ def list_nodes(self) -> List[Node]:

def list_nodes_with_name_filter(self, name_filter) -> List[Node]:
logging.info("Listing current hosts with name filter %s", name_filter)
vir_domains = list()
nodes = list()

domains = self.libvirt_connection.listAllDomains()
Expand All @@ -66,9 +65,8 @@ def list_nodes_with_name_filter(self, name_filter) -> List[Node]:
nodes.append(
Node(domain_name, self, self.private_ssh_key_path)
)
vir_domains.append(domain)

logging.info("Found domains %s", vir_domains)
logging.info("Found domains %s", [node.name for node in nodes])
return nodes

def list_networks(self):
Expand Down Expand Up @@ -235,7 +233,6 @@ def start_all_nodes(self):
nodes = self.list_nodes()

for node in nodes:
# TODO - Parameter 'check_ips' unfilled
self.start_node(node.name())
return nodes

Expand Down Expand Up @@ -427,7 +424,6 @@ def undefine_interface(self, node_name, mac):
def restart_node(self, node_name):
logging.info("Restarting %s", node_name)
self.shutdown_node(node_name=node_name)
# TODO - Parameter 'check_ips' unfilled
self.start_node(node_name=node_name)

def format_all_node_disks(self):
Expand Down Expand Up @@ -470,6 +466,7 @@ def _get_domain_ips_and_macs(domain):

ips = []
macs = []
logging.debug(f"Host {domain.name()} interfaces are {interfaces}")
if interfaces:
for (_, val) in interfaces.items():
if val['addrs']:
Expand All @@ -486,7 +483,7 @@ def _get_domain_ips(self, domain):
ips, _ = self._get_domain_ips_and_macs(domain)
return ips

def _wait_till_domain_has_ips(self, domain, timeout=360, interval=5):
def _wait_till_domain_has_ips(self, domain, timeout=360, interval=10):
logging.info("Waiting till host %s will have ips", domain.name())
waiting.wait(
lambda: len(self._get_domain_ips(domain)) > 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,11 +168,12 @@ def get_ram_kib(self, node_name: str) -> int:
def set_ram_kib(self, node_name: str, ram_kib: int) -> None:
pass

def get_machine_cidr(self) -> Optional[str]:
# Default to auto resolve by the cluster. see cluster.get_machine_cidr
return None
def get_primary_machine_cidr(self) -> Optional[str]:
# Default to auto resolve by the cluster. see cluster.get_primary_machine_cidr
return None

def get_provisioning_cidr(self) -> Optional[str]:
def get_machine_networks(self) -> Optional[List[str]]:
# Default to auto resolve by the cluster. see cluster.get_machine_networks
return None

@abstractmethod
Expand Down
Loading

0 comments on commit 974675b

Please sign in to comment.