Example #1
0
    def POST(self, *args, **kwargs):
        cherrypy.response.status = 201

        if len(args) != 1:
            return rest_error(400, 'Invalid arguments. Found %d'
                                   ' there should be one.')
        self.debug('REST POST %s' % kwargs)
        name = args[0]
        metadata = kwargs.get('metadata')
        description = kwargs.get('description', '')
        visible = kwargs.get('visible', True)
        imagefile = kwargs.get('image', None)
        splink = kwargs.get('splink', '')

        obj = self._site[FACILITY].available[self.parent.plugin_name]
        try:
            spc = ServiceProviderCreator(obj)
            sp = spc.create_from_buffer(name, metadata, description,
                                        visible, imagefile, splink)
        except (InvalidProviderId, ServerAddProviderFailedError) as e:
            self.debug(repr(e))
            return rest_error(400, str(e))
        except Exception, e:  # pylint: disable=broad-except
            self.debug(repr(e))
            return rest_error(500, "Failed to create Service Provider")
Example #2
0
    def POST(self, *args, **kwargs):
        cherrypy.response.status = 201

        if len(args) != 1:
            return rest_error(
                400, 'Invalid arguments. Found %d'
                ' there should be one.')
        self.debug('REST POST %s' % kwargs)
        name = args[0]
        metadata = kwargs.get('metadata')
        description = kwargs.get('description', '')
        visible = kwargs.get('visible', True)
        imagefile = kwargs.get('image', None)
        splink = kwargs.get('splink', '')

        obj = self._site[FACILITY].available[self.parent.plugin_name]
        try:
            spc = ServiceProviderCreator(obj)
            sp = spc.create_from_buffer(name, metadata, description, visible,
                                        imagefile, splink)
        except (InvalidProviderId, ServerAddProviderFailedError) as e:
            self.debug(repr(e))
            return rest_error(400, str(e))
        except Exception as e:  # pylint: disable=broad-except
            self.debug(repr(e))
            return rest_error(500, "Failed to create Service Provider")

        obj.admin.add_sp(name, sp)

        # Added. Now fetch and return the SP data
        return self._get_sp(name)
Example #3
0
    def _get_sp(self, *args, **kwargs):
        """
        If PATH_INFO contains a value then get that value as the name of
        the SP, otherwise return a list of all available SPs.
        """
        if len(args) > 0:
            instance = args[0]
        else:
            instance = None

        idp = self.__get_idp()

        results = list()

        if instance is not None:
            data = idp.get_data(name='name', value=instance)
            if len(data) == 0:
                return rest_error(404, 'Provider %s not found' % instance)
            idval = data.keys()[0]
            data = idp.get_data(idval=idval)
        else:
            data = idp.get_data()

        for idval in data:
            result = dict(provider=data[idval].get('name'),
                          metadata=data[idval].get('metadata'),)
            results.append(result)

        return dict(result=results)
Example #4
0
    def _get_sp(self, *args, **kwargs):
        """
        If PATH_INFO contains a value then get that value as the name of
        the SP, otherwise return a list of all available SPs.
        """
        if len(args) > 0:
            instance = args[0]
        else:
            instance = None

        idp = self.__get_idp()

        results = list()

        if instance is not None:
            data = idp.get_data(name='name', value=instance)
            if len(data) == 0:
                return rest_error(404, 'Provider %s not found' % instance)
            idval = data.keys()[0]
            data = idp.get_data(idval=idval)
        else:
            data = idp.get_data()

        for idval in data:
            result = dict(
                provider=data[idval].get('name'),
                metadata=data[idval].get('metadata'),
            )
            results.append(result)

        return dict(result=results)