diff --git a/common/library/module_utils/input_validation/validation_flows/provision_validation.py b/common/library/module_utils/input_validation/validation_flows/provision_validation.py index 3addbeb50e..fbe410f40b 100644 --- a/common/library/module_utils/input_validation/validation_flows/provision_validation.py +++ b/common/library/module_utils/input_validation/validation_flows/provision_validation.py @@ -23,12 +23,22 @@ from ansible.module_utils.input_validation.common_utils import en_us_validation_msg from ansible.module_utils.input_validation.validation_flows import common_validation import csv +import yaml from io import StringIO file_names = config.files create_error_msg = validation_utils.create_error_msg create_file_path = validation_utils.create_file_path +def load_oim_metadata(metadata_file_path): + with open(metadata_file_path, 'r') as file: + metadata = yaml.safe_load(file) + return metadata + +metadata_file_path = '/opt/omnia/.data/oim_metadata.yml' +metadata = load_oim_metadata(metadata_file_path) +oim_timezone = metadata['oim_timezone'] + # Expected header columns (case-insensitive) required_headers = [ "FUNCTIONAL_GROUP_NAME", @@ -232,6 +242,7 @@ def validate_provision_config( timezone_file_path = os.path.join( module_utils_base, "input_validation", "common_utils", "timezone.txt" ) + pxe_mapping_file_path = data.get("pxe_mapping_file_path", "") if pxe_mapping_file_path and validation_utils.verify_path(pxe_mapping_file_path): try: @@ -258,6 +269,19 @@ def validate_provision_config( create_error_msg("timezone", timezone, en_us_validation_msg.TIMEZONE_FAIL_MSG) ) + # Detect system timezone + input_timezone = timezone + + # Compare both timezones + if oim_timezone != input_timezone: + errors.append( + create_error_msg( + "timezone_mismatch", + f"Provided input timezone : {input_timezone}, Detected oim timezone: {oim_timezone}", + "Timezone mismatch detected. Please ensure both timezone matche,s refer file timezone.txt." + ) + ) + default_lease_time = data["default_lease_time"] if not validation_utils.validate_default_lease_time(default_lease_time): errors.append( diff --git a/omnia.sh b/omnia.sh index 5a1edf1437..dd1787e6ae 100755 --- a/omnia.sh +++ b/omnia.sh @@ -620,7 +620,12 @@ validate_oim() { exit 1 fi - + oim_timezone=$(timedatectl | grep "Time zone" | awk '{print $3}') + if [[ -z "$oim_timezone" ]]; then + echo -e "${RED}Timezone is not set!${NC}" + exit 1 + fi + podman --version # Capture the exit status @@ -740,6 +745,7 @@ EOF echo "oim_hostname: $(hostname)" echo "oim_node_name: $(hostname -s)" echo "domain_name: $domain_name" + echo "oim_timezone: $oim_timezone" echo "omnia_core_hashed_passwd: $hashed_passwd" echo "omnia_share_option: $share_option" } >> "$oim_metadata_file"