def take_action(self, parsed_args):
        data = utils.load_content(parsed_args.file.read())

        mistral_client = self.app.client_manager.workflow_engine
        environment = mistral_client.environments.update(**data)

        return format(environment)
    def test_create_with_json_file_uri(self):
        # The contents of env_v2.json must be equivalent to ENVIRONMENT
        path = pkg.resource_filename(
            'mistralclient',
            'tests/unit/resources/env_v2.json'
        )

        # Convert the file path to file URI
        uri = parse.urljoin('file:', request.pathname2url(path))
        data = collections.OrderedDict(
            utils.load_content(
                utils.get_contents_if_file(uri)
            )
        )

        self.requests_mock.post(self.TEST_URL + URL_TEMPLATE,
                                status_code=201,
                                json=data)
        file_input = {'file': uri}
        env = self.environments.create(**file_input)

        self.assertIsNotNone(env)

        expected_data = copy.deepcopy(data)
        expected_data['variables'] = json.dumps(expected_data['variables'])

        self.assertEqual(expected_data, self.requests_mock.last_request.json())
    def test_create_with_json_file_uri(self):
        # The contents of env_v2.json must be equivalent to ENVIRONMENT
        path = pkg.resource_filename(
            'mistralclient',
            'tests/unit/resources/env_v2.json'
        )

        # Convert the file path to file URI
        uri = parse.urljoin('file:', request.pathname2url(path))
        data = OrderedDict(
            utils.load_content(
                utils.get_contents_if_file(uri)
            )
        )

        mock = self.mock_http_post(content=data)
        file_input = {'file': uri}
        env = self.environments.create(**file_input)

        self.assertIsNotNone(env)

        expected_data = copy.deepcopy(data)
        expected_data['variables'] = json.dumps(expected_data['variables'])

        mock.assert_called_once_with(URL_TEMPLATE, json.dumps(expected_data))
    def take_action(self, parsed_args):
        data = utils.load_content(parsed_args.file.read())

        mistral_client = self.app.client_manager.workflow_engine
        environment = mistral_client.environments.update(**data)

        return format(environment)
예제 #5
0
    def take_action(self, parsed_args):
        mistral_client = self.app.client_manager.workflow_engine

        env = (utils.load_file(parsed_args.env)
               if parsed_args.env and os.path.isfile(parsed_args.env) else
               utils.load_content(parsed_args.env))

        execution = mistral_client.tasks.rerun(parsed_args.id,
                                               reset=(not parsed_args.resume),
                                               env=env)

        return format(execution)
예제 #6
0
    def take_action(self, parsed_args):
        mistral_client = self.app.client_manager.workflow_engine

        env = (utils.load_file(parsed_args.env)
               if parsed_args.env and os.path.isfile(parsed_args.env) else
               utils.load_content(parsed_args.env))

        execution = mistral_client.executions.update(
            parsed_args.id,
            parsed_args.state,
            description=parsed_args.description,
            env=env)

        return ExecutionFormatter.format(execution)
예제 #7
0
    def update(self, **kwargs):
        # Check to see if the file name or URI is being passed in. If so,
        # read it's contents first.
        if 'file' in kwargs:
            file = kwargs['file']
            kwargs = utils.load_content(utils.get_contents_if_file(file))

        name = kwargs.get('name', None)
        self._ensure_not_empty(name=name)

        # Convert dict to text for the variables attribute.
        if kwargs.get('variables') and isinstance(kwargs['variables'], dict):
            kwargs['variables'] = jsonutils.dumps(kwargs['variables'])

        return self._update('/environments', kwargs)
    def update(self, **kwargs):
        # Check to see if the file name or URI is being passed in. If so,
        # read it's contents first.
        if 'file' in kwargs:
            file = kwargs['file']
            kwargs = utils.load_content(utils.get_contents_if_file(file))

        name = kwargs.get('name', None)
        self._ensure_not_empty(name=name)

        # Convert dict to text for the variables attribute.
        if kwargs.get('variables') and isinstance(kwargs['variables'], dict):
            kwargs['variables'] = jsonutils.dumps(kwargs['variables'])

        return self._update('/environments', kwargs)
예제 #9
0
    def take_action(self, parsed_args):
        mistral_client = self.app.client_manager.workflow_engine

        env = (
            utils.load_file(parsed_args.env)
            if parsed_args.env and os.path.isfile(parsed_args.env)
            else utils.load_content(parsed_args.env)
        )

        execution = mistral_client.tasks.rerun(
            parsed_args.id,
            reset=(not parsed_args.resume),
            env=env
        )

        return format(execution)
    def test_update_with_yaml_file(self):
        # The contents of env_v2.json must be equivalent to ENVIRONMENT
        path = pkg.resource_filename('mistralclient',
                                     'tests/unit/resources/env_v2.json')
        data = collections.OrderedDict(
            utils.load_content(utils.get_contents_if_file(path)))
        self.requests_mock.put(self.TEST_URL + URL_TEMPLATE, json=data)

        file_input = {'file': path}
        env = self.environments.update(**file_input)

        self.assertIsNotNone(env)

        expected_data = copy.deepcopy(data)
        expected_data['variables'] = json.dumps(expected_data['variables'])

        self.assertEqual(expected_data, self.requests_mock.last_request.json())
예제 #11
0
    def take_action(self, parsed_args):
        mistral_client = self.app.client_manager.workflow_engine

        env = (
            utils.load_file(parsed_args.env)
            if parsed_args.env and os.path.isfile(parsed_args.env)
            else utils.load_content(parsed_args.env)
        )

        execution = mistral_client.executions.update(
            parsed_args.id,
            parsed_args.state,
            description=parsed_args.description,
            env=env
        )

        return format(execution)
    def test_update_with_yaml_file(self):
        # The contents of env_v2.json must be equivalent to ENVIRONMENT
        path = pkg.resource_filename(
            'mistralclient',
            'tests/unit/resources/env_v2.json'
        )
        data = collections.OrderedDict(
            utils.load_content(
                utils.get_contents_if_file(path)
            )
        )
        self.requests_mock.put(self.TEST_URL + URL_TEMPLATE, json=data)

        file_input = {'file': path}
        env = self.environments.update(**file_input)

        self.assertIsNotNone(env)

        expected_data = copy.deepcopy(data)
        expected_data['variables'] = json.dumps(expected_data['variables'])

        self.assertEqual(expected_data, self.requests_mock.last_request.json())
    def test_update_with_yaml_file(self):
        # The contents of env_v2.json must be equivalent to ENVIRONMENT
        path = pkg.resource_filename(
            'mistralclient',
            'tests/unit/resources/env_v2.json'
        )
        data = OrderedDict(
            utils.load_content(
                utils.get_contents_if_file(path)
            )
        )

        mock = self.mock_http_put(content=data)
        file_input = {'file': path}
        env = self.environments.update(**file_input)

        self.assertIsNotNone(env)

        expected_data = copy.deepcopy(data)
        expected_data['variables'] = json.dumps(expected_data['variables'])

        mock.assert_called_once_with(URL_TEMPLATE, json.dumps(expected_data))
    def test_create_with_json_file_uri(self):
        # The contents of env_v2.json must be equivalent to ENVIRONMENT
        path = pkg.resource_filename('mistralclient',
                                     'tests/unit/resources/env_v2.json')
        path = os.path.abspath(path)

        # Convert the file path to file URI
        uri = parse.urljoin('file:', request.pathname2url(path))
        data = collections.OrderedDict(
            utils.load_content(utils.get_contents_if_file(uri)))

        self.requests_mock.post(self.TEST_URL + URL_TEMPLATE,
                                status_code=201,
                                json=data)
        file_input = {'file': uri}
        env = self.environments.create(**file_input)

        self.assertIsNotNone(env)

        expected_data = copy.deepcopy(data)
        expected_data['variables'] = json.dumps(expected_data['variables'])

        self.assertEqual(expected_data, self.requests_mock.last_request.json())
예제 #15
0
 def test_load_empty(self):
     self.assertDictEqual(dict(), utils.load_content(None))
     self.assertDictEqual(dict(), utils.load_content(''))
     self.assertDictEqual(dict(), utils.load_content('{}'))
     self.assertListEqual(list(), utils.load_content('[]'))
예제 #16
0
 def test_load_json_content(self):
     self.assertDictEqual(ENV_DICT, utils.load_content(ENV_STR))
예제 #17
0
 def test_load_yaml_content(self):
     self.assertDictEqual(ENV_DICT, utils.load_content(ENV_YAML))