Commit 39e4dbc2 authored by Sebastien Luttringer's avatar Sebastien Luttringer
Browse files

Allow del command to keep payload inside repository

new option --preserve, -p is added
parent 360723ab
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -163,7 +163,7 @@ def c_del(parser, args):
                                                             repo.config.name))
            if not confirm():
                raise Exception("Aborted!")
        repo.delete(img.name, img.version)
        repo.delete(img.name, img.version, payloads=not args.preserve)

def c_diff(parser, args):
    '''
@@ -412,6 +412,8 @@ p_del.add_argument("-b", "--best", action="store_true", default=False,
                   help="in best mode, image is the most recent in all repositories")
p_del.add_argument("-f", "--force", action="store_true", default=False,
                   help="delete image without confirmation")
p_del.add_argument("-p", "--preserve", action="store_true", default=False,
                   help="preserve payloads. doesn't remove it from repository")
p_del.set_defaults(func=c_del)

# diff command parser
+1 −1
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ _is() {
	    (( args > 2 )) && _image && _repo
            ;;
	del)
            [[ "$cur" == -* ]] && _opt '-h --help -b --best -f --force' && return 0
            [[ "$cur" == -* ]] && _opt '-h --help -b --best -f --force -p --preserve' && return 0
            _image
            ;;
	diff)
+5 −2
Original line number Diff line number Diff line
@@ -287,7 +287,7 @@ class Repository(object):
        else:
            arrow("Nothing to clean")

    def delete(self, name, version):
    def delete(self, name, version, payloads=True):
        '''
        Delete an image from repository
        '''
@@ -307,8 +307,11 @@ class Repository(object):
        self.db.ask("DELETE FROM image WHERE md5 = ?",
                        (md5s[0],)).fetchone()
        self.db.commit()
        # Removing script image
        # Removing files
        arrow("Removing files from pool")
        # if asked don't remove payloads
        if not payloads:
            md5s = [ md5s[0] ]
        arrowlevel(1)
        for md5 in md5s:
            self._remove_file(md5)