def handle(self, request, data): LOG.info('CreateLanguagepack %s' % data) solum = solumclient(request) param_data = {} if data['param_file']: inf = data['param_file'].read() param_data = yamlutils.load(inf) lp_metadata = None if data['lp_metadata']: lp_metadata = json.dumps(json.load(data['lp_metadata'])) try: solum.languagepacks.create( name=data['name'], source_uri=data['source_uri'], lp_metadata=lp_metadata, lp_params=param_data, description=data['description']) message = _( 'Languagepack %s was successfully created.') % data['name'] messages.success(request, message) except Exception: redirect = reverse('horizon:solum:languagepacks:index') exceptions.handle(self.request, _('Unable to create languagepack.'), redirect=redirect) return True
def list(self, **kwargs): kwargs = self._filter_kwargs(kwargs) kwargs.setdefault("headers", kwargs.get("headers", {})) kwargs["headers"]["Content-Type"] = "x-application/yaml" resp = self.client.get(self.build_url(base_url="/v1", **kwargs), **kwargs) try: resp_plan = yamlutils.load(resp.content) except ValueError as e: raise exc.CommandException(message="Could not load Plan. " "Reason: %s" % e.message) return [Plan(self, res, loaded=True) for res in resp_plan if res]
def _get(self, url, response_key=None): kwargs = {"headers": {}} kwargs["headers"]["Content-Type"] = "x-application/yaml" resp = self.client.get(url, **kwargs) try: resp_plan = yamlutils.load(resp.content) except ValueError as e: raise exc.CommandException(message="Could not load Plan. " "Reason: %s" % e.message) return Plan(self, resp_plan, loaded=True)
def _get(self, url, response_key=None): kwargs = {'headers': {}} kwargs['headers']['Content-Type'] = 'x-application/yaml' resp = self.client.get(url, **kwargs) try: resp_plan = yamlutils.load(resp.content) except ValueError as e: raise exc.BaseException(message='Could not load Plan. ' 'Reason: %s' % e.message) return Plan(self, resp_plan, loaded=True)
def update(self, plan, **kwargs): kwargs = self._filter_kwargs(kwargs) kwargs["data"] = plan kwargs.setdefault("headers", kwargs.get("headers", {})) kwargs["headers"]["Content-Type"] = "x-application/yaml" resp = self.client.put(self.build_url(base_url="/v1", **kwargs), **kwargs) try: resp_plan = yamlutils.load(resp.content) except ValueError as e: raise exc.CommandException(message="Could not load Plan. " "Reason: %s" % e.message) return self.resource_class(self, resp_plan)
def test_plan_create(self, mock_plan_create): FakeResource = collections.namedtuple("FakeResource", "uuid name description uri") mock_plan_create.return_value = FakeResource('foo', 'foo', 'foo', 'foo') raw_data = 'version: 1\nname: ex_plan1\ndescription: dsc1.' plan_data = yamlutils.dump(yamlutils.load(raw_data)) mopen = mock.mock_open(read_data=raw_data) with mock.patch('%s.open' % solum.__name__, mopen, create=True): self.make_env() self.shell("plan create /dev/null") mock_plan_create.assert_called_once_with(plan_data)
def create(self, plan, **kwargs): kwargs = self._filter_kwargs(kwargs) kwargs['data'] = plan kwargs.setdefault("headers", kwargs.get("headers", {})) kwargs['headers']['Content-Type'] = 'x-application/yaml' resp = self.client.post( self.build_url(base_url="/v1", **kwargs), **kwargs) try: resp_plan = yamlutils.load(resp.content) except ValueError as e: raise exc.BaseException(message='Could not load Plan. ' 'Reason: %s' % e.message) return Plan(self, resp_plan)
def test_plan_create_with_private_github_repo(self, mock_plan_create): FakeResource = collections.namedtuple( "FakeResource", "uuid name description uri artifacts") mock_plan_create.return_value = FakeResource('foo', 'foo', 'foo', 'foo', 'artifacts') expected_printed_dict_args = mock_plan_create.return_value._asdict() expected_printed_dict_args.pop('artifacts') raw_data = 'version: 1\nname: ex_plan1\ndescription: dsc1.' plan_data = yamlutils.dump(yamlutils.load(raw_data)) mopen = mock.mock_open(read_data=raw_data) with mock.patch('%s.open' % solum.__name__, mopen, create=True): self.make_env() self.shell("plan create /dev/null") mock_plan_create.assert_called_once_with(plan_data)
def create(self, plan, **kwargs): kwargs = self._filter_kwargs(kwargs) kwargs["data"] = plan kwargs.setdefault("headers", kwargs.get("headers", {})) kwargs["headers"]["Content-Type"] = "x-application/yaml" try: resp = self.client.post(self.build_url(base_url="/v1", **kwargs), **kwargs) except Exception as e: message = vars(e).get("details", str(e)) raise exceptions.BadRequest(message=message) try: resp_plan = yamlutils.load(resp.content) except ValueError as e: raise exc.CommandException(message="Could not load Plan. " "Reason: %s" % e.message) return Plan(self, resp_plan)
def test_load_empty_list(self): yml_dict = yamlutils.load('[]') self.assertEqual([], yml_dict)
def test_load_yaml(self): yml_dict = yamlutils.load('a: x\nb: y\n') self.assertEqual({'a': 'x', 'b': 'y'}, yml_dict)
def handle(self, request, data): LOG.info('CreateApplication %s' % data) solum = solumclient(request) app_data = None if data['source'] == 'app_file': inf = data['app_file'].read() app_data = yamlutils.load(inf) if 'repo_token' not in app_data: app_data['repo_token'] = '' else: app_data = { 'version': 1, 'description': 'default app description', 'source': { 'repository': '', 'revision': 'master', 'repo_token': '' }, 'workflow_config': { 'test_cmd': '', 'run_cmd': '' } } if data['name']: app_data['name'] = data['name'] if data['languagepack']: app_data['languagepack'] = data['languagepack'] if data['git_url']: app_data['source'] = dict() app_data['source']['repository'] = data['git_url'] app_data['source']['revision'] = 'master' if data['run_cmd']: if app_data.get('workflow_config') is None: app_data['workflow_config'] = dict() if not app_data['workflow_config']['run_cmd']: app_data['workflow_config']['run_cmd'] = data['run_cmd'] if data['unittest_cmd']: if app_data.get('workflow_config') is None: app_data['workflow_config'] = dict() if not app_data['workflow_config']['test_cmd']: app_data['workflow_config']['test_cmd'] = data['unittest_cmd'] if not app_data.get('ports'): app_data['ports'] = [] if data['port']: app_data['ports'].append(data['port']) else: app_data['ports'].append(80) if data['param_file']: param_def = data['param_file'].read() app_data['parameters'] = yamlutils.load(param_def) try: solum.apps.create(**app_data) messages.success(request, _('Application was successfully created.')) return True except Exception: msg = _('Unable to create application') redirect = reverse("horizon:solum:applications:index") exceptions.handle(request, msg, redirect=redirect) return False