def test_apply(self, runner, builder): paunch.apply('foo', {'bar': 'baz'}, 'tester') runner.assert_called_once_with('tester', docker_cmd=None) builder.assert_called_once_with(config_id='foo', config={'bar': 'baz'}, runner=runner.return_value, labels=None) builder.return_value.apply.assert_called_once_with()
def test_apply_labels(self, runner, builder): paunch.apply(config_id='foo', config={'bar': 'baz'}, managed_by='tester', labels={'bink': 'boop'}) runner.assert_called_once_with('tester', docker_cmd=None) builder.assert_called_once_with(config_id='foo', config={'bar': 'baz'}, runner=runner.return_value, labels={'bink': 'boop'}) builder.return_value.apply.assert_called_once_with()
def take_action(self, parsed_args): labels = collections.OrderedDict() for l in parsed_args.labels: k, v = l.split(('='), 1) labels[k] = v with open(parsed_args.file, 'r') as f: config = yaml.safe_load(f) paunch.apply(parsed_args.config_id, config, managed_by='paunch', labels=labels)
def take_action(self, parsed_args): # takes 1, or 2 if --verbose, or 4 - 5 if --debug log_level = (self.app_args.verbose_level + int(self.app_args.debug) * 3) log_file = self.app_args.log_file or constants.LOG_FILE self.log = utils.common.configure_logging(__name__, log_level, log_file) labels = collections.OrderedDict() for l in parsed_args.labels: k, v = l.split(('='), 1) labels[k] = v with open(parsed_args.file, 'r') as f: config = yaml.safe_load(f) stdout, stderr, rc = paunch.apply(parsed_args.config_id, config, managed_by='paunch', labels=labels, cont_cmd=parsed_args.default_runtime, log_level=log_level, log_file=log_file) return rc
def test_apply(self, runner, builder): paunch.apply( config_id='foo', config={'bar': 'baz'}, managed_by='tester', labels=None, cont_cmd='podman') runner.assert_called_once_with('tester', cont_cmd='podman', log=mock.ANY) builder.assert_called_once_with( config_id='foo', config={'bar': 'baz'}, runner=runner.return_value, labels=None, log=mock.ANY ) builder.return_value.apply.assert_called_once_with()
def test_apply_container_log(self, runner, builder): paunch.apply(config_id='foo', config={'bar': 'baz'}, managed_by='tester', labels=None, cont_cmd='podman', cont_log_path='/var/log', healthcheck_disabled=False) runner.assert_called_once_with('tester', cont_cmd='podman', log=mock.ANY) builder.assert_called_once_with(config_id='foo', config={'bar': 'baz'}, runner=runner.return_value, labels=None, log=mock.ANY, cont_log_path='/var/log', healthcheck_disabled=False) builder.return_value.apply.assert_called_once_with()
def main(argv=sys.argv): global log log = logging.getLogger('heat-config') handler = logging.StreamHandler(sys.stderr) handler.setFormatter( logging.Formatter( '[%(asctime)s] (%(name)s) [%(levelname)s] %(message)s')) log.addHandler(handler) log.setLevel('DEBUG') c = json.load(sys.stdin) input_values = dict((i['name'], i['value']) for i in c.get('inputs', {})) if input_values.get('deploy_action') == 'DELETE': json.dump(build_response('', '', 0), sys.stdout) return config = c.get('config', '') cid = c.get('id') if not config: log.debug("No 'config' input found, nothing to do.") json.dump(build_response('', '', 0), sys.stdout) return stdout = [] stderr = [] deploy_status_code = 0 # convert config to dict if not isinstance(config, dict): config = yaml.safe_load(config) labels = collections.OrderedDict() labels['deploy_stack_id'] = input_values.get('deploy_stack_id') labels['deploy_resource_name'] = input_values.get('deploy_resource_name') stdout, stderr, deploy_status_code = paunch.apply(cid, config, 'docker-cmd', labels, DOCKER_CMD) json.dump( build_response('\n'.join(stdout), '\n'.join(stderr), deploy_status_code), sys.stdout)
def take_action(self, parsed_args): (self.log, log_file, log_level) = \ utils.common.configure_logging_from_args(__name__, self.app_args) labels = collections.OrderedDict() for l in parsed_args.labels: k, v = l.split(('='), 1) labels[k] = v with open(parsed_args.file, 'r') as f: config = yaml.safe_load(f) stdout, stderr, rc = paunch.apply( parsed_args.config_id, config, managed_by='paunch', labels=labels, cont_cmd=parsed_args.default_runtime, log_level=log_level, log_file=log_file, cont_log_path=parsed_args.cont_log_path, healthcheck_disabled=parsed_args.healthcheck_disabled) return rc
def paunch_apply(self): self.results['action'].append('Applying config_id %s' % self.config_id) if not self.config: self.module.fail_json( msg="Paunch apply requires 'config' parameter", stdout='', stderr='', rc=1) stdout_list, stderr_list, rc = p.apply( self.config_id, self.config_yaml, managed_by=self.managed_by, labels=[], cont_cmd=self.container_cli, log_level=self.log_level, log_file=self.log_file, cont_log_path=self.container_log_stdout_path, healthcheck_disabled=self.healthcheck_disabled, cleanup=self.cleanup) stdout, stderr = ["\n".join(i) for i in (stdout_list, stderr_list)] # Test paunch idempotency how we can. changed_strings = ['rm -f', 'Completed', 'Created'] if any(s in stdout for s in changed_strings): self.results['changed'] = True self.results.update({"stdout": stdout, "stderr": stderr, "rc": rc}) if rc != 0: self.module.fail_json(msg="Paunch failed with config_id %s" % self.config_id, stdout=stdout, stderr=stderr, rc=rc) self.module.exit_json(**self.results)