def run(self, collector, stack, available_actions, tasks, **extras): """Run this task""" task_action = available_actions[self.action] self.set_description(available_actions) configuration = collector.configuration.wrapped() if self.options: if stack: configuration.update({"stacks": {stack: self.options}}) else: configuration.update(self.options) configuration.update(configuration["args_dict"].as_dict(), source="<cli>") if self.overrides: overrides = {} for key, val in self.overrides.items(): overrides[key] = val if isinstance(val, MergedOptions): overrides[key] = dict(val.items()) configuration.update(overrides) if task_action.needs_stack: environment = configuration["bespin"].environment if not environment: raise BadOption("Please specify an environment", available=list( configuration.get("environments", {}).keys())) if configuration["environments"].get(environment) is None: raise BadOption( "No configuration found for specified environment", environment=environment, available=list(configuration["environments"].keys())) self.find_stack(stack, configuration) stack = configuration["stacks"][stack] bespin = configuration["bespin"] info = {"done": False} def set_credentials(): if info["done"]: return info["done"] = True environment = configuration["bespin"].environment if not environment: raise BadOption("Please specify an environment", available=list( configuration["environments"].keys())) if environment not in configuration["environments"]: raise BadOption("Please specify a defined environment", available=list( configuration["environments"].keys())) region = configuration["environments"][environment].region no_assume_role = configuration["bespin"].no_assume_role if self.options and "no_assume_role" in self.options: no_assume_role = self.options["no_assume_role"] assume_role = NotSpecified if no_assume_role else configuration[ "bespin"].assume_role credentials = Credentials( region, configuration["environments"][environment].account_id, assume_role) bespin.credentials = credentials bespin.set_credentials = set_credentials if task_action.needs_credentials: bespin.set_credentials() artifact = configuration["bespin"].chosen_artifact or None if task_action.needs_artifact and not artifact: raise BadOption("Please specify an artifact") from bespin.collector import Collector new_collector = Collector() new_collector.configuration = configuration new_collector.configuration_file = collector.configuration_file return task_action(collector, stack=stack, artifact=artifact, tasks=tasks, **extras)
def run(self, collector, stack, available_actions, tasks, **extras): """Run this task""" task_action = available_actions[self.action] self.set_description(available_actions) configuration = collector.configuration.wrapped() if self.options: if stack: configuration.update({"stacks": {stack: self.options}}) else: configuration.update(self.options) configuration.update(configuration["cli_args"].as_dict(), source="<cli>") if self.overrides: overrides = {} for key, val in self.overrides.items(): overrides[key] = val if isinstance(val, MergedOptions): overrides[key] = dict(val.items()) configuration.update(overrides) if task_action.needs_stack: environment = configuration["bespin"].environment if not environment: raise BadOption("Please specify an environment", available=list(configuration.get("environments", {}).keys())) if configuration["environments"].get(environment) is None: raise BadOption("No configuration found for specified environment", environment=environment, available=list(configuration["environments"].keys())) self.find_stack(stack, configuration) stack = configuration["stacks"][stack] bespin = configuration["bespin"] info = {"done": False} def set_credentials(): if info["done"]: return info["done"] = True environment = configuration["bespin"].environment if not environment: raise BadOption("Please specify an environment", available=list(configuration["environments"].keys())) if environment not in configuration["environments"]: raise BadOption("Please specify a defined environment", available=list(configuration["environments"].keys())) region = configuration["environments"][environment].region no_assume_role = configuration["bespin"].no_assume_role if self.options and "no_assume_role" in self.options: no_assume_role = self.options["no_assume_role"] assume_role = NotSpecified if no_assume_role else configuration["bespin"].assume_role credentials = Credentials( region , configuration["environments"][environment].account_id , assume_role ) bespin.credentials = credentials bespin.set_credentials = set_credentials if task_action.needs_credentials: bespin.set_credentials() artifact = configuration["bespin"].chosen_artifact or None if task_action.needs_artifact and not artifact: raise BadOption("Please specify an artifact") from bespin.collector import Collector new_collector = Collector() new_collector.configuration = configuration new_collector.configuration_file = collector.configuration_file return task_action(collector, stack=stack, artifact=artifact, tasks=tasks, **extras)