Commit 3bb17116 authored by Seblu's avatar Seblu
Browse files

fix copy implementation.

parent aea3254c
Loading
Loading
Loading
Loading
+11 −14
Original line number Diff line number Diff line
@@ -237,23 +237,20 @@ def c_copy(parser, args):
    '''
    Copy an image from a repository to another one
    '''
    args.repo_filter = args.repo_src
    # load repositories
    repoman = load_repositories(args)
    repo_src = select_one_repository(repoman)
    args.repo_filter = args.repo_dst
    repoman = load_repositories(args)
    repo_dst = select_one_repository(repoman)
    if args.image_version is None:
        args.image_version = repo_src.last(args.image)
        if args.image_version == -1:
            raise Exception("Unable to find last version of %s" % args.image)
    arrow("Copying %s v%s from %s to %s" % (args.image, args.image_version,
                                   repo_src.config.name, repo_dst.config.name))
    srcrepo = repoman[args.repo_src]
    dstrepo = repoman[args.repo_dst]
    # load source image
    srcimg = srcrepo.get(args.image, args.image_version)
    # Advertise
    arrow("Copying %s v%s from %s to %s" % (srcimg.name,
                                             srcimg.version,
                                             srcrepo.config.name,
                                             dstrepo.config.name))
    arrowlevel(1)
    pkg = repo_src.get(args.image, args.image_version)
    repo_dst.add(pkg)
    dstrepo.add(srcimg)
    arrowlevel(-1)
    arrow("Done")

def c_help(parser, args):
    '''
+13 −2
Original line number Diff line number Diff line
@@ -240,10 +240,13 @@ class Repository(object):
        '''
        return self.db.ask("SELECT name,version FROM image WHERE name = ? AND version = ? LIMIT 1", (name,version)).fetchone() is not None

    def get(self, name, version):
    def get(self, name, version=None):
        '''
        Return an image from a name and version
        '''
        # is no version take the last
        if version is None:
            version = self.last(name)
        # get file md5 from db
        r = self.db.ask("select md5 from image where name = ? and version = ? limit 1",
                        (name,version)).fetchone()
@@ -483,7 +486,15 @@ class RepositoryManager(object):
        '''
        Return a repostiory by its position in list
        '''
        if type(key) == int:
            return self.repos[key]
        elif type(key) == str:
            for repo in self.repos:
                if repo.config.name == key:
                    return repo
            raise Exception("No repository named: %s" % key)
        else:
            raise TypeError

    def register(self, config):
        '''