sregistry/main/docker/api.py
def download_layers(self, repo_name, digest=None, destination=None):
    ''' download layers is a wrapper to do the following for a client loaded
        with a manifest for an image:
      
        1. use the manifests to retrieve list of digests (get_digests)
        2. atomically download the list to destination (get_layers)

        This function uses the MultiProcess client to download layers
        at the same time.
    '''
    from sregistry.main.workers import ( Workers, download_task )

    # 1. Get manifests if not retrieved
    if not hasattr(self, 'manifests'):
        self._get_manifests(repo_name, digest)

    # Obtain list of digets, and destination for download
    digests = self._get_digests()
    destination = self._get_download_cache(destination)

    # Create multiprocess download client
    workers = Workers()

    # Download each layer atomically
    tasks = []
    layers = []
    for digest in digests:

        targz = "%s/%s.tar.gz" % (destination, digest)

        # Only download if not in cache already
        if not os.path.exists(targz):
            url = "%s/%s/blobs/%s" % (self.base, repo_name, digest)
            tasks.append((url, self.headers, targz))
        layers.append(targz)

    # Download layers with multiprocess workers
    if len(tasks) > 0:
        download_layers = workers.run(func=download_task,
                                      tasks=tasks)
    # Create the metadata tar
    metadata = self._create_metadata_tar(destination)
    if metadata is not None:
        layers.append(metadata)


    return layers
def download_layers(self, repo_name, digest=None, destination=None):
    ''' download layers is a wrapper to do the following for a client loaded
        with a manifest for an image:
      
        1. use the manifests to retrieve list of digests (get_digests)
        2. atomically download the list to destination (get_layers)

        This function uses the MultiProcess client to download layers
        at the same time.
    '''
    from sregistry.main.workers import ( Workers, download_task )

    # 1. Get manifests if not retrieved
    if not hasattr(self, 'manifests'):
        self._get_manifests(repo_name, digest)

    # Obtain list of digets, and destination for download
    digests = self._get_digests()
    destination = self._get_download_cache(destination)

    # Create multiprocess download client
    workers = Workers()

    # Download each layer atomically
    tasks = []
    layers = []
    for digest in digests:

        targz = "%s/%s.tar.gz" % (destination, digest)

        # Only download if not in cache already
        if not os.path.exists(targz):
            url = "%s/%s/blobs/%s" % (self.base, repo_name, digest)
            tasks.append((url, self.headers, targz))
        layers.append(targz)

    # Download layers with multiprocess workers
    if len(tasks) > 0:
        download_layers = workers.run(func=download_task,
                                      tasks=tasks)
    # Create the metadata tar
    metadata = self._create_metadata_tar(destination)
    if metadata is not None:
        layers.append(metadata)


    return layers
def download_layers ( self , repo_name , digest = None , destination = None ) : from sregistry . main . workers import ( Workers , download_task ) # 1. Get manifests if not retrieved if not hasattr ( self , 'manifests' ) : self . _get_manifests ( repo_name , digest ) # Obtain list of digets, and destination for download digests = self . _get_digests ( ) destination = self . _get_download_cache ( destination ) # Create multiprocess download client workers = Workers ( ) # Download each layer atomically tasks = [ ] layers = [ ] for digest in digests : targz = "%s/%s.tar.gz" % ( destination , digest ) # Only download if not in cache already if not os . path . exists ( targz ) : url = "%s/%s/blobs/%s" % ( self . base , repo_name , digest ) tasks . append ( ( url , self . headers , targz ) ) layers . append ( targz ) # Download layers with multiprocess workers if len ( tasks ) > 0 : download_layers = workers . run ( func = download_task , tasks = tasks ) # Create the metadata tar metadata = self . _create_metadata_tar ( destination ) if metadata is not None : layers . append ( metadata ) return layers
download layers is a wrapper to do the following for a client loaded
        with a manifest for an image:
      
        1. use the manifests to retrieve list of digests (get_digests)
        2. atomically download the list to destination (get_layers)

        This function uses the MultiProcess client to download layers
        at the same time.
download layers is a wrapper to do the following for a client loaded with a manifest for an image : 1 . use the manifests to retrieve list of digests ( get_digests ) 2 . atomically download the list to destination ( get_layers )