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
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
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)
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)
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_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 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
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))