diff --git a/artcommon/artcommonlib/build_util.py b/artcommon/artcommonlib/build_util.py index a05355373..879f0b837 100644 --- a/artcommon/artcommonlib/build_util.py +++ b/artcommon/artcommonlib/build_util.py @@ -1,10 +1,7 @@ -from datetime import datetime from typing import List, Optional, Iterable, Dict - from artcommonlib import logutil from artcommonlib.model import Missing from artcommonlib.release_util import isolate_assembly_in_release -from doozerlib.release_schedule import ReleaseSchedule LOGGER = logutil.get_logger(__name__) @@ -61,25 +58,10 @@ def canonical_builders_enabled(canonical_builders_from_upstream, runtime) -> boo # Default case: override using ART's config return False - elif canonical_builders_from_upstream == 'auto': - # canonical_builders_from_upstream set to 'auto': rebase according to release schedule - try: - feature_freeze_date = ReleaseSchedule(runtime).get_ff_date() - return datetime.now() < feature_freeze_date - except ChildProcessError: - # Could not access Gitlab: display a warning and fallback to default - LOGGER.warning('Failed retrieving release schedule from Gitlab: fallback to using ART\'s config') - return False - except ValueError as e: - # A GITLAB token env var was not provided: display a warning and fallback to default - LOGGER.warning(f'Fallback to default ART config: {e}') - return False - - elif canonical_builders_from_upstream in ['on', True]: - # yaml parser converts bare 'on' to True, same for 'off' and False + elif canonical_builders_from_upstream is True: return True - elif canonical_builders_from_upstream in ['off', False]: + elif canonical_builders_from_upstream is False: return False else: diff --git a/doozer/doozerlib/release_schedule.py b/doozer/doozerlib/release_schedule.py deleted file mode 100644 index 1efe40f17..000000000 --- a/doozer/doozerlib/release_schedule.py +++ /dev/null @@ -1,49 +0,0 @@ -from datetime import datetime -import os -import threading - -import yaml - -from doozerlib import gitdata - - -class ReleaseSchedule: - """ - This class is a Singleton. Only at first object construction, it will clone ocp-release-schedule repo inside Doozer - working directory, parse and store yaml data related to the current OCP version - """ - - _instance = None - _lock = threading.Lock() - - def __new__(cls, runtime): - if cls._instance is None: - with cls._lock: - # Another thread could have created the instance before the lock was acquired - # So check that the instance is still nonexistent. - if cls._instance is None: - instance = super(ReleaseSchedule, cls).__new__(cls) - instance.initialize(runtime) - cls._instance = instance - return cls._instance - - def initialize(self, runtime): - if 'GITLAB_TOKEN' not in os.environ: - raise ValueError('A GITLAB_TOKEN env var must be defined') - - # Clone ocp-release-schedule in doozer working dir - git_data = gitdata.GitData( - data_path=f'https://oauth2:{os.environ["GITLAB_TOKEN"]}@gitlab.cee.redhat.com/ocp-release-schedule/schedule.git', - clone_dir=runtime.working_dir - ) - - # Parse and store relevant yaml - major = runtime.group_config.vars['MAJOR'] - minor = runtime.group_config.vars['MINOR'] - config_file = f'{git_data.data_dir}/schedules/{major}.{minor}.yaml' - with open(config_file) as f: - self.schedule_data = yaml.safe_load(f.read()) - - def get_ff_date(self) -> datetime: - event = next(item for item in self.schedule_data['events'] if item["name"] == "feature-freeze") - return datetime.strptime(event['date'], '%Y-%m-%dT%H:00:00-00:00') diff --git a/doozer/tests/test_distgit/test_image_distgit/test_image_distgit.py b/doozer/tests/test_distgit/test_image_distgit/test_image_distgit.py index 1375530d3..32efaedaa 100644 --- a/doozer/tests/test_distgit/test_image_distgit/test_image_distgit.py +++ b/doozer/tests/test_distgit/test_image_distgit/test_image_distgit.py @@ -610,9 +610,7 @@ def test_generate_osbs_image_config_with_cachito_enabled(self, is_dir: Mock): self.assertEqual(actual["remote_sources"][0]["remote_source"]["pkg_managers"], ["gomod"]) self.assertEqual(actual["remote_sources"][0]["remote_source"]["flags"], ["gomod-vendor-check"]) - @patch('artcommonlib.build_util.datetime') - @patch('artcommonlib.build_util.ReleaseSchedule') - def test_canonical_builders_enabled(self, release_schedule, mock_datetime): + def test_canonical_builders_enabled(self): # canonical_builders_from_upstream not defined self.img_dg.config.canonical_builders_from_upstream = Missing self.assertEqual(False, self.img_dg._canonical_builders_enabled()) @@ -627,23 +625,6 @@ def test_canonical_builders_enabled(self, release_schedule, mock_datetime): self.img_dg.runtime.group_config.canonical_builders_from_upstream = True self.assertEqual(False, self.img_dg._canonical_builders_enabled()) - # canonical_builders_from_upstream = 'on' in image config (override) - self.img_dg.config.canonical_builders_from_upstream = 'on' - self.img_dg.runtime.group_config.canonical_builders_from_upstream = False - self.assertEqual(True, self.img_dg._canonical_builders_enabled()) - - # canonical_builders_from_upstream = 'auto'; current time < feature freeze - self.img_dg.config.canonical_builders_from_upstream = 'auto' - release_schedule.return_value.get_ff_date.return_value = datetime.datetime(2023, 6, 1, 10, 30, 15) - mock_datetime.now.return_value = datetime.datetime(2023, 5, 1, 10, 30, 15) - self.assertEqual(True, self.img_dg._canonical_builders_enabled()) - - # canonical_builders_from_upstream = 'auto'; current time > feature freeze - self.img_dg.config.canonical_builders_from_upstream = 'auto' - release_schedule.return_value.get_ff_date.return_value = datetime.datetime(2023, 6, 1, 10, 30, 15) - mock_datetime.now.return_value = datetime.datetime(2023, 7, 1, 10, 30, 15) - self.assertEqual(False, self.img_dg._canonical_builders_enabled()) - def test_update_image_config(self): self.img_dg.metadata = MagicMock() # 'when' clause matching upstream rhel version: override diff --git a/ocp-build-data-validator/validator/json_schemas/assembly_group_config.schema.json b/ocp-build-data-validator/validator/json_schemas/assembly_group_config.schema.json index cd4e7be51..e618e0c61 100644 --- a/ocp-build-data-validator/validator/json_schemas/assembly_group_config.schema.json +++ b/ocp-build-data-validator/validator/json_schemas/assembly_group_config.schema.json @@ -228,8 +228,7 @@ }, "urls-": {}, "canonical_builders_from_upstream": { - "description": "Assert our base images, or listen to upstream", - "enum": [true, false, "auto", "off", "no", "on", "yes"] + "type": "boolean" }, "canonical_builders_from_upstream?": { "$ref": "#/properties/canonical_builders_from_upstream" diff --git a/ocp-build-data-validator/validator/json_schemas/image_config.base.schema.json b/ocp-build-data-validator/validator/json_schemas/image_config.base.schema.json index 4b3d4b548..bd6cbf0fd 100644 --- a/ocp-build-data-validator/validator/json_schemas/image_config.base.schema.json +++ b/ocp-build-data-validator/validator/json_schemas/image_config.base.schema.json @@ -207,8 +207,7 @@ }, "content-": {}, "canonical_builders_from_upstream": { - "description": "Override the facility to adhere to upstream suggestions for base images", - "enum": [true, false, "auto", "off", "no", "on", "yes"] + "type": "boolean" }, "canonical_builders_from_upstream?": { "$ref": "#/properties/canonical_builders_from_upstream"