def account_create(self, account, headers=None):
     uri = "/v1.0/account/create"
     account_id = utils.quote(account, "")
     params = {"id": account_id}
     resp, resp_body = self._account_request("PUT", uri, params=params, headers=headers)
     created = resp.status_code == 201
     return created
Beispiel #2
0
 def account_update(self, account, metadata, to_delete=None, headers=None):
     uri = "/v1.0/account/update"
     account_id = utils.quote(account, '')
     params = {'id': account_id}
     data = json.dumps({"metadata": metadata, "to_delete": to_delete})
     resp, resp_body = self._account_request('POST', uri, params=params,
                                             data=data, headers=headers)
Beispiel #3
0
 def account_show(self, account, headers=None):
     uri = "/v1.0/account/show"
     account_id = utils.quote(account, '')
     params = {'id': account_id}
     resp, resp_body = self._account_request('GET', uri, params=params,
                                             headers=headers)
     return resp_body
Beispiel #4
0
 def account_show(self, account, headers=None):
     uri = "/v1.0/account/show"
     account_id = utils.quote(account, '')
     params = {'id': account_id}
     resp, resp_body = self._account_request('GET', uri, params=params,
                                             headers=headers)
     return resp_body
Beispiel #5
0
 def account_update(self, account, metadata, to_delete=None, headers=None):
     uri = "/v1.0/account/update"
     account_id = utils.quote(account, '')
     params = {'id': account_id}
     data = json.dumps({"metadata": metadata, "to_delete": to_delete})
     resp, resp_body = self._account_request('POST', uri, params=params,
                                             data=data, headers=headers)
 def _connect_put(chunk):
     raw_url = chunk["url"]
     parsed = urlparse(raw_url)
     try:
         chunk_path = parsed.path.split('/')[-1]
         h = {}
         h["transfer-encoding"] = "chunked"
         h[chunk_headers["content_id"]] = self.sysmeta['id']
         h[chunk_headers["content_version"]] = self.sysmeta['version']
         h[chunk_headers["content_path"]] = \
             utils.quote(self.sysmeta['content_path'])
         h[chunk_headers["content_chunkmethod"]] = \
             self.sysmeta['chunk_method']
         h[chunk_headers["content_policy"]] = self.sysmeta['policy']
         h[chunk_headers["container_id"]] = self.sysmeta['container_id']
         h[chunk_headers["chunk_pos"]] = chunk["pos"]
         h[chunk_headers["chunk_id"]] = chunk_path
         with ConnectionTimeout(io.CONNECTION_TIMEOUT):
             conn = io.http_connect(
                 parsed.netloc, 'PUT', parsed.path, h)
             conn.chunk = chunk
         return conn, chunk
     except (Exception, Timeout) as e:
         msg = str(e)
         logger.error("Failed to connect to %s (%s)", chunk, msg)
         chunk['error'] = msg
         return None, chunk
Beispiel #7
0
 def _connect_put(chunk):
     raw_url = chunk["url"]
     parsed = urlparse(raw_url)
     try:
         chunk_path = parsed.path.split('/')[-1]
         h = {}
         h["transfer-encoding"] = "chunked"
         h[chunk_headers["content_id"]] = self.sysmeta['id']
         h[chunk_headers["content_version"]] = self.sysmeta['version']
         h[chunk_headers["content_path"]] = \
             utils.quote(self.sysmeta['content_path'])
         h[chunk_headers["content_chunkmethod"]] = \
             self.sysmeta['chunk_method']
         h[chunk_headers["content_policy"]] = self.sysmeta['policy']
         h[chunk_headers["container_id"]] = self.sysmeta['container_id']
         h[chunk_headers["chunk_pos"]] = chunk["pos"]
         h[chunk_headers["chunk_id"]] = chunk_path
         with ConnectionTimeout(io.CONNECTION_TIMEOUT):
             conn = io.http_connect(parsed.netloc, 'PUT', parsed.path,
                                    h)
             conn.chunk = chunk
         return conn, chunk
     except (Exception, Timeout) as e:
         msg = str(e)
         logger.error("Failed to connect to %s (%s)", chunk, msg)
         chunk['error'] = msg
         return None, chunk
Beispiel #8
0
 def account_create(self, account, headers=None):
     uri = '/v1.0/account/create'
     account_id = utils.quote(account, '')
     params = {'id': account_id}
     resp, resp_body = self._account_request('PUT', uri, params=params,
                                             headers=headers)
     created = (resp.status_code == 201)
     return created
Beispiel #9
0
 def account_create(self, account, headers=None):
     uri = '/v1.0/account/create'
     account_id = utils.quote(account, '')
     params = {'id': account_id}
     resp, resp_body = self._account_request('PUT', uri, params=params,
                                             headers=headers)
     created = (resp.status_code == 201)
     return created
Beispiel #10
0
    def container_list(self, account, limit=None, marker=None,
                       end_marker=None, prefix=None, delimiter=None,
                       headers=None):
        uri = "v1.0/account/containers"
        account_id = utils.quote(account, '')
        params = {"id": account_id, "limit": limit, "marker": marker,
                  "delimiter": delimiter, "prefix": prefix,
                  "end_marker": end_marker}

        resp, resp_body = self._account_request(
            'GET', uri, params=params, headers=headers)
        listing = resp_body['listing']
        del resp_body['listing']
        return listing, resp_body
Beispiel #11
0
    def container_list(self, account, limit=None, marker=None,
                       end_marker=None, prefix=None, delimiter=None,
                       headers=None):
        uri = "v1.0/account/containers"
        account_id = utils.quote(account, '')
        params = {"id": account_id, "limit": limit, "marker": marker,
                  "delimiter": delimiter, "prefix": prefix,
                  "end_marker": end_marker}

        resp, resp_body = self._account_request(
            'GET', uri, params=params, headers=headers)
        listing = resp_body['listing']
        del resp_body['listing']
        return listing, resp_body
Beispiel #12
0
 def account_request(self, account, method, action, params=None, **kwargs):
     """Make a request to the account service."""
     self._maybe_refresh_endpoint()
     if not params:
         params = dict()
     if account:
         params['id'] = quote(account)
     try:
         resp, body = self._request(method, action, params=params, **kwargs)
     except OioNetworkException as exc:
         exc_info = sys.exc_info()
         if self._refresh_delay >= 0.0:
             self.logger.info("Refreshing account endpoint after error %s",
                              exc)
             try:
                 self._refresh_endpoint()
             except Exception as exc:
                 self.logger.warn("%s", exc)
         raise exc_info[0], exc_info[1], exc_info[2]
     return resp, body
Beispiel #13
0
        def _connect_put(chunk):
            raw_url = chunk["url"]
            parsed = urlparse(raw_url)
            try:
                chunk_path = parsed.path.split('/')[-1]
                h = {}
                h["transfer-encoding"] = "chunked"
                # FIXME: remove key incoherencies
                # TODO: automatize key conversions
                h[chunk_headers["content_id"]] = self.sysmeta['id']
                h[chunk_headers["content_version"]] = self.sysmeta['version']
                h[chunk_headers["content_path"]] = \
                    utils.quote(self.sysmeta['content_path'])
                h[chunk_headers["content_chunkmethod"]] = \
                    self.sysmeta['chunk_method']
                h[chunk_headers["content_policy"]] = self.sysmeta['policy']
                h[chunk_headers["container_id"]] = self.sysmeta['container_id']
                h[chunk_headers["chunk_pos"]] = chunk["pos"]
                h[chunk_headers["chunk_id"]] = chunk_path

                # Used during reconstruction of EC chunks
                if self.sysmeta['chunk_method'].startswith('ec'):
                    h[chunk_headers["metachunk_size"]] = \
                        self.sysmeta["metachunk_size"]
                    h[chunk_headers["metachunk_hash"]] = \
                        self.sysmeta["metachunk_hash"]

                with ConnectionTimeout(io.CONNECTION_TIMEOUT):
                    conn = io.http_connect(
                        parsed.netloc, 'PUT', parsed.path, h)
                    conn.chunk = chunk
                return conn, chunk
            except (Exception, Timeout) as e:
                msg = str(e)
                logger.exception("Failed to connect to %s (%s)", chunk, msg)
                chunk['error'] = msg
                return None, chunk
 def account_delete(self, account, headers=None):
     uri = "/v1.0/account/delete"
     account_id = utils.quote(account, "")
     params = {"id": account_id}
     resp, resp_body = self._account_request("POST", uri, params=params, headers=headers)
Beispiel #15
0
 def account_delete(self, account, headers=None):
     uri = '/v1.0/account/delete'
     account_id = utils.quote(account, '')
     params = {'id': account_id}
     resp, resp_body = self._account_request('POST', uri, params=params,
                                             headers=headers)
Beispiel #16
0
 def account_delete(self, account, headers=None):
     uri = '/v1.0/account/delete'
     account_id = utils.quote(account, '')
     params = {'id': account_id}
     resp, resp_body = self._account_request('POST', uri, params=params,
                                             headers=headers)