Пример #1
0
    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()
Пример #2
0
    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
Пример #3
0
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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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()