def __enter__(self): # This initiates the upload by issuing: # PUT H:P/v1/repositories/R/ # In that request, we specify the headers: # Content-Type: application/json # Authorization: Basic {base64 encoded auth token} # X-Docker-Token: true resp, unused_content = docker_http.Request( self._transport, '{scheme}://{registry}/v1/repositories/{repository}/'.format( scheme=docker_http.Scheme(self._name.registry), registry=self._name.registry, repository=self._name.repository), self._basic_creds, accepted_codes=[httplib.OK, httplib.CREATED], body='[]') # The response should have an X-Docker-Token header, which # we should extract and annotate subsequent requests with: # Authorization: Token {extracted value} self._token_creds = docker_creds.Token(resp['x-docker-token']) self._endpoint = resp['x-docker-endpoints'] # TODO(user): Consider also supporting cookies, which are # used by Quay.io for authenticated sessions. logging.info('Initiated upload of: %s', self._name) return self
def __enter__(self): # This initiates the pull by issuing: # GET H:P/v1/repositories/R/images resp, unused_content = docker_http.Request( self._transport, '{scheme}://{registry}/v1/repositories/{repository_name}/images'. format(scheme=docker_http.Scheme(self._name.registry), registry=self._name.registry, repository_name=self._name.repository), self._creds, [httplib.OK]) # The response should have an X-Docker-Token header, which # we should extract and annotate subsequent requests with: # Authorization: Token {extracted value} self._creds = docker_creds.Token(resp['x-docker-token']) self._endpoint = resp['x-docker-endpoints'] # TODO(user): Consider also supporting cookies, which are # used by Quay.io for authenticated sessions. # Next, fetch the set of tags in this repository. # GET server1/v1/repositories/R/tags resp, content = docker_http.Request( self._transport, '{scheme}://{endpoint}/v1/repositories/{repository_name}/tags'. format(scheme=docker_http.Scheme(self._endpoint), endpoint=self._endpoint, repository_name=self._name.repository), self._creds, [httplib.OK]) self._tags = json.loads(content) return self