def __init__(self, argv=None): super(AppContainer, self).__init__() self.argv = instance(argv) self.configure_parsers() self.configure_inventory() self.terraform_runner = auto(TerraformRunner) self.packer_runner = auto(PackerRunner) self.ssh_runner = auto(SshRunner) self.play_runner = auto(PlaybookRunner) self.run_runner = auto(CommandRunner) self.sync_runner = auto(SyncRunner) self.helmfile_runner = auto(HelmfileRunner) self.config_runner = auto(ConfigGeneratorRunner) self.cluster_config = cache(auto(ClusterConfig)) self.ops_config = cache(auto(OpsConfig)) self.cluster_config_generator = auto(ClusterConfigGenerator) self.ssh_config_generator = auto(SshConfigGenerator) self.template = auto(Template) # bind the command executor self.execute = auto(Executor) self.configure() self.validate_ops_version()
def configure(self): args = self.root_parser.parse_args(self.argv) configure_logging(args) logger.debug('cli args: %s', args) # Bind some very useful dependencies self.console_args = cache(instance(args)) self.cluster_config_path = cache( lambda c: get_cluster_config_path(c.root_dir, c.console_args)) self.root_dir = cache(lambda c: get_root_dir(c.console_args)) self.cluster_name = lambda c: c.cluster_config['cluster'] self.package_dir = lambda c: os.path.dirname(__file__) # change path to the root_dir logger.info('root dir: %s', self.root_dir) os.chdir(self.root_dir) return args
def test_cache_provider(): def random(): import random return random.random() container = Container() container.counter = lambda c: random() assert container.counter != container.counter container.counter = cache(lambda c: random()) assert container.counter == container.counter
def configure(self): args, extra_args = self.root_parser.parse_known_args(self.argv) configure_logging(args) logger.debug('cli args: {}, extra_args: {}'.format(args, extra_args)) # Bind some very useful dependencies self.console_args = cache(instance(args)) self.console_extra_args = cache(instance(extra_args)) self.command = lambda c: self.console_args.command self.cluster_config_path = cache( lambda c: get_cluster_config_path( c.root_dir, c.console_args)) self.root_dir = cache(lambda c: get_root_dir(c.console_args)) self.package_dir = lambda c: os.path.dirname(__file__) # change path to the root_dir logger.info('root dir: {}'.format(self.root_dir)) os.chdir(self.root_dir) return args
def configure_inventory(self): self.inventory_runner = auto(InventoryRunner) self.base_inventory_generator = cache(auto(InventoryGenerator)) self.inventory_generator = cache(auto(CachedInventoryGenerator)) self.ansible_inventory = cache(auto(AnsibleInventory)) inventory_generators = ListInstanceProvider() inventory_generators.add(auto(DirInventoryGenerator)) inventory_generators.add(auto(ShellInventoryGenerator)) inventory_generators.add(auto(PluginInventoryGenerator)) self.inventory_generators = inventory_generators # inventory generator plugins inventory_plugins = ListInstanceProvider() inventory_plugins.add(instance(ec2)) inventory_plugins.add(instance(legacy_pcs)) inventory_plugins.add(instance(cns)) inventory_plugins.add(instance(azr)) inventory_plugins.add(instance(skms)) self.inventory_plugins = inventory_plugins
def __init__(self, argv=None): super(AppContainer, self).__init__() self.argv = instance(argv) self.configure_parsers() self.kompos_config = cache(auto(KomposConfig)) self.terraform_runner = auto(TerraformRunner) self.helmfile_runner = auto(HelmfileRunner) self.config_runner = auto(ConfigGeneratorRunner) # bind the command executor self.execute = auto(Executor) self.configure() self.kompos_config.validate_version()