Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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]
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 def test_load_empty_list(self):
     yml_dict = yamlutils.load('[]')
     self.assertEqual([], yml_dict)
Ejemplo n.º 11
0
 def test_load_yaml(self):
     yml_dict = yamlutils.load('a: x\nb: y\n')
     self.assertEqual({'a': 'x', 'b': 'y'}, yml_dict)
Ejemplo n.º 12
0
    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