from metaflow import Config, FlowSpec, current, environment, kubernetes, step

class RegressionTestFlow(FlowSpec):
    regression_config = Config(
        "regression_config",
        default="test/regression_test/configs/sample_regression_test_config.yaml",
        parser="yaml.full_load",
    )

    @kubernetes(image=IMAGE_NAME)
    @step
    def start(self):

        self.cluster_location = self.regression_config["metadata"]["cluster_location"]
        cluster_name_prefix = self.regression_config["metadata"]["custom_cluster_name_prefix"]
        self.cluster_names = [cluster_name_prefix + "-before-changes", cluster_name_prefix + "-after-changes"]

        self.tasks = self.regression_config["tasks"]
        self.project_name = "Regression-Test-" + datetime.now().strftime("%Y-%m-%d-%H%M%S%f")

        self.next(self.start_cluster, foreach="cluster_names")

    
    @kubernetes(image=IMAGE_NAME)
    @step
    def start_cluster(self):
        import argparse
        import yaml

        cluster_substring = self.input.split("-")[-2]
        self.config = {
            "metadata": dict(self.regression_config.metadata),
            "image": dict(self.regression_config[cluster_substring + "_change_image"]),
        }

        self.config["metadata"]["custom_cluster_name"] = self.input
        self.config["workers"] = [dict(worker) for worker in self.regression_config.workers]
        self.config_temp_path = f"{cluster_substring}_changes_config.yaml"
		self.next(self.submit_and_monitor_job, foreach="tasks")
		
	@kubernetes(image=IMAGE_NAME)
    @step
    def submit_and_monitor(self):
      ....


