Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MGMT-13247: day2 controller can target another libvirt node #2044

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions skipper.env
Original file line number Diff line number Diff line change
Expand Up @@ -148,3 +148,10 @@ BOOTSTRAP_INJECT_MANIFEST
INSTALL_MANIFESTS_DIR
CPU_ARCHITECTURE
DAY2_CPU_ARCHITECTURE
DAY2_LIBVIRT_URI
DAY2_MACHINE_CIDR
DAY2_PROVISIONING_CIDR
DAY2_MACHINE_CIDR6
DAY2_PROVISIONING_CIDR6
DAY2_NETWORK_IF
DAY2_SECONDARY_NETWORK_IF
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,12 @@ class BaseDay2ClusterConfig(BaseClusterConfig, ABC):
day2_cpu_architecture: Optional[str] = None
infra_env_id: Optional[str] = None
tf_folder: Optional[str] = None

# day2 libvirt target and network configuration
day2_libvirt_uri: Optional[str] = None
day2_machine_cidr: Optional[str] = None
day2_provisioning_cidr: Optional[str] = None
day2_machine_cidr6: Optional[str] = None
day2_provisioning_cidr6: Optional[str] = None
day2_network_if: Optional[str] = None
day2_secondary_network_if: Optional[str] = None
27 changes: 26 additions & 1 deletion src/tests/base_test.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import hashlib
import json
import os
import shutil
Expand Down Expand Up @@ -137,8 +138,32 @@ def prepared_day2_controller_configuration(
) -> BaseNodesConfig:
assert isinstance(new_day2_controller_configuration, TerraformConfig)

if day2_cluster_configuration.day2_libvirt_uri:
# set libvirt_uri in controller configuration
new_day2_controller_configuration.libvirt_uri = day2_cluster_configuration.day2_libvirt_uri

# define network assets used by the remote libvirt host
day2_base_asset = {
"machine_cidr": day2_cluster_configuration.day2_machine_cidr,
"provisioning_cidr": day2_cluster_configuration.day2_provisioning_cidr,
"machine_cidr6": day2_cluster_configuration.day2_machine_cidr6,
"provisioning_cidr6": day2_cluster_configuration.day2_provisioning_cidr6,
"libvirt_network_if": day2_cluster_configuration.day2_network_if,
"libvirt_secondary_network_if": day2_cluster_configuration.day2_secondary_network_if,
}
assert all(day2_base_asset.values()) # ensure all values are set

unique_id = hashlib.sha1(day2_cluster_configuration.day2_libvirt_uri.encode()).hexdigest()
assets_file = f"{LibvirtNetworkAssets.ASSETS_LOCKFILE_DEFAULT_PATH}/tf_network_pool-{unique_id}.json"
net_asset = LibvirtNetworkAssets(
assets_file=assets_file,
base_asset=day2_base_asset,
libvirt_uri=day2_cluster_configuration.day2_libvirt_uri,
)
else:
net_asset = LibvirtNetworkAssets()

# Configuring net asset which currently supported by libvirt terraform only
net_asset = LibvirtNetworkAssets()
new_day2_controller_configuration.net_asset = net_asset.get()

day1_api_vip = day2_cluster_configuration.day1_cluster_details.api_vip
Expand Down
9 changes: 9 additions & 0 deletions src/tests/global_variables/env_variables_defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,12 @@ class _EnvVariables(DataPool, ABC):
nutanix_port: EnvVar = EnvVar(["NUTANIX_PORT"], loader=int)
nutanix_cluster: EnvVar = EnvVar(["NUTANIX_CLUSTER_NAME"])
nutanix_subnet: EnvVar = EnvVar(["NUTANIX_SUBNET_NAME"])

# day2 libvirt target and VM network configuration
day2_libvirt_uri: EnvVar = EnvVar(["DAY2_LIBVIRT_URI"])
day2_machine_cidr: EnvVar = EnvVar(["DAY2_MACHINE_CIDR"])
day2_provisioning_cidr: EnvVar = EnvVar(["DAY2_PROVISIONING_CIDR"])
day2_machine_cidr6: EnvVar = EnvVar(["DAY2_MACHINE_CIDR6"])
day2_provisioning_cidr6: EnvVar = EnvVar(["DAY2_PROVISIONING_CIDR6"])
day2_network_if: EnvVar = EnvVar(["DAY2_NETWORK_IF"])
day2_secondary_network_if: EnvVar = EnvVar(["DAY2_SECONDARY_NETWORK_IF"])