Esempio n. 1
0
    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
Esempio n. 2
0
    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