Skip to content
Snippets Groups Projects
Commit 3bb17116 authored by Seblu's avatar Seblu
Browse files

fix copy implementation.

parent aea3254c
No related branches found
No related tags found
No related merge requests found
......@@ -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):
'''
......
......@@ -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
'''
return self.repos[key]
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):
'''
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment