Ejemplo n.º 1
0
    def add_service(self, store, service_info):

        if self._session_id is None:
            self.authenticate()

        params = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><resource name="' + service_info['name'] + '" ><url>' + service_info['url'] + '</url></resource>'
        session_cookie = 'JSESSIONID=' + self._session_id + ';' + ' Path=/FiwareMarketplace'
        headers = {'content-type': 'application/xml', 'Cookie': session_cookie}
        url = urljoin(self._marketplace_uri, "offering/store/" + store + "/offering")

        url = url_fix(url)

        opener = urllib2.build_opener()
        request = MethodRequest("PUT", url, params, headers)
        try:
            response = opener.open(request)
        except HTTPError, e:
            # Marketplace redirects to a login page (sprint_security_login) if
            # the session expires. In addition, python don't follow
            # redirections when issuing PUT requests, so we have to check for
            # a 302 startus code
            if e.code == 302:
                self._session_id = None
                self.add_service(store, service_info)
                return
            else:
                raise e
Ejemplo n.º 2
0
    def delete_store(self, store):

        if self._session_id is None:
            self.authenticate()

        opener = urllib2.build_opener()
        session_cookie = 'JSESSIONID=' + self._session_id + ';' + ' Path=/FiwareMarketplace'
        headers = {'content-type': 'application/xml', 'Cookie': session_cookie}
        url = urljoin(self._marketplace_uri, "registration/store/" + store)

        url = url_fix(url)

        request = MethodRequest("DELETE", url, '', headers)

        try:
            response = opener.open(request)
        except HTTPError, e:
            # Marketplace redirects to a login page (sprint_security_login) if
            # the session expires. In addition, python don't follow
            # redirections when issuing DELETE requests, so we have to check for
            # a 302 startus code
            if e.code == 302:
                self._session_id = None
                self.delete_store(store)
                return
            else:
                raise e
Ejemplo n.º 3
0
    def delete_service(self, service):
        store = self._get_store_name()

        url = urljoin(self._marketplace_uri,
                      "api/v2/store/" + store + "/description/" + service)
        url = url_fix(url)
        self._make_request('DELETE', url, '', {}, 204)
Ejemplo n.º 4
0
    def delete_store(self):
        store = self._get_store_name()

        url = urljoin(self._marketplace_uri, "v1/registration/store/" + store)

        url = url_fix(url)
        self._make_request('DELETE', url, '', {}, 200)
Ejemplo n.º 5
0
    def delete_store(self):
        # Get WStore name in the marketplace
        store = self._get_store_name()

        url = urljoin(self._marketplace_uri, "api/v2/store/" + store)
        url = url_fix(url)
        self._make_request('DELETE', url, '', {}, 204)
    def delete_store(self):
        # Get WStore name in the marketplace
        store = self._get_store_name()

        url = urljoin(self._marketplace_uri, "api/v2/store/" + store)
        url = url_fix(url)
        self._make_request('DELETE', url, '', {}, 204)
Ejemplo n.º 7
0
    def delete_service(self, service):
        store = self._get_store_name()

        url = urljoin(self._marketplace_uri, "v1/offering/store/" + store + "/offering/" + service)
        url = url_fix(url)

        self._make_request('DELETE', url, '', {}, 200)
    def delete_store(self):
        store = self._get_store_name()

        url = urljoin(self._marketplace_uri, "v1/registration/store/" + store)

        url = url_fix(url)
        self._make_request('DELETE', url, '', {}, 200)
Ejemplo n.º 9
0
    def add_service(self, offering):
        store = self._get_store_name()

        offering_id = offering.owner_organization.name + ' ' + offering.name + ' ' + offering.version

        params = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><resource name="' + offering_id + '" ><url>' + offering.description_url + '</url></resource>'
        headers = {'content-type': 'application/xml'}
        url = urljoin(self._marketplace_uri, "v1/offering/store/" + store + "/offering")

        url = url_fix(url)
        self._make_request('PUT', url, params, headers, 201)

        return offering_id
Ejemplo n.º 10
0
    def _save_resource_file(self, provider, file_):
        # Load file contents
        if isinstance(file_, dict):
            file_name = file_['name']
            content = base64.b64decode(file_['data'])
        else:
            file_name = file_.name
            file_.seek(0)
            content = file_.read()

        # Check file name
        if not is_valid_file(file_name):
            raise ValueError('Invalid file name format: Unsupported character')

        # Create provider dir for assets if it does not exists
        provider_dir = os.path.join(settings.MEDIA_ROOT, 'assets', provider)

        if not os.path.isdir(provider_dir):
            os.mkdir(provider_dir)

        file_path = os.path.join(provider_dir, file_name)
        resource_path = file_path[file_path.index(settings.MEDIA_DIR):]

        if resource_path.startswith('/'):
            resource_path = resource_path[1:]

        # Check if the file already exists
        if os.path.exists(file_path):
            res = Resource.objects.get(resource_path=resource_path)
            if res.product_id is not None:
                # If the resource has product_id field, it means that a product
                # spec has been created, so it cannot be overridden
                raise ConflictError('The provided digital asset file (' +
                                    file_name + ') already exists')
            res.delete()

        # Create file
        with open(file_path, "wb") as f:
            f.write(content)

        self.rollback_logger['files'].append(file_path)

        site = settings.SITE
        return resource_path, url_fix(
            urljoin(site, '/charging/' + resource_path))
    def delete_service(self, service):
        store = self._get_store_name()

        url = urljoin(self._marketplace_uri, "api/v2/store/" + store + "/description/" + service)
        url = url_fix(url)
        self._make_request('DELETE', url, '', {}, 204)