Exemple #1
0
 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()
Exemple #2
0
    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()
Exemple #3
0
    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)
Exemple #4
0
    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
Exemple #5
0
 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()
Exemple #6
0
 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)
Exemple #8
0
    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
Exemple #9
0
    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)