Merge pull request #676 from stevvooe/delete-image
cmd/dist, images: allow image delete
This commit is contained in:
		
							
								
								
									
										38
									
								
								cmd/dist/images.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								cmd/dist/images.go
									
									
									
									
										vendored
									
									
								
							| @@ -61,3 +61,41 @@ var imagesCommand = cli.Command{ | |||||||
| 		return nil | 		return nil | ||||||
| 	}, | 	}, | ||||||
| } | } | ||||||
|  |  | ||||||
|  | var rmiCommand = cli.Command{ | ||||||
|  | 	Name:        "rmi", | ||||||
|  | 	Usage:       "Delete one or more images by reference.", | ||||||
|  | 	ArgsUsage:   "[flags] <ref> [<ref>, ...]", | ||||||
|  | 	Description: `Delete one or more images by reference.`, | ||||||
|  | 	Flags:       []cli.Flag{}, | ||||||
|  | 	Action: func(clicontext *cli.Context) error { | ||||||
|  | 		var ( | ||||||
|  | 			ctx     = background | ||||||
|  | 			exitErr error | ||||||
|  | 		) | ||||||
|  |  | ||||||
|  | 		db, err := getDB(clicontext, false) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return errors.Wrap(err, "failed to open database") | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		tx, err := db.Begin(true) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return errors.Wrap(err, "could not start transaction") | ||||||
|  | 		} | ||||||
|  | 		defer tx.Rollback() | ||||||
|  |  | ||||||
|  | 		for _, target := range clicontext.Args() { | ||||||
|  | 			if err := images.Delete(tx, target); err != nil { | ||||||
|  | 				if exitErr == nil { | ||||||
|  | 					exitErr = errors.Wrapf(err, "unable to delete %v", target) | ||||||
|  | 				} | ||||||
|  | 				log.G(ctx).WithError(err).Errorf("unable to delete %v", target) | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			fmt.Println(target) | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		return exitErr | ||||||
|  | 	}, | ||||||
|  | } | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								cmd/dist/main.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								cmd/dist/main.go
									
									
									
									
										vendored
									
									
								
							| @@ -62,6 +62,7 @@ distribution tool | |||||||
| 	} | 	} | ||||||
| 	app.Commands = []cli.Command{ | 	app.Commands = []cli.Command{ | ||||||
| 		imagesCommand, | 		imagesCommand, | ||||||
|  | 		rmiCommand, | ||||||
| 		pullCommand, | 		pullCommand, | ||||||
| 		fetchCommand, | 		fetchCommand, | ||||||
| 		fetchObjectCommand, | 		fetchObjectCommand, | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								cmd/dist/pull.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								cmd/dist/pull.go
									
									
									
									
										vendored
									
									
								
							| @@ -67,6 +67,7 @@ command. As part of this process, we do the following: | |||||||
|  |  | ||||||
| 		ingester := contentservice.NewIngesterFromClient(contentapi.NewContentClient(conn)) | 		ingester := contentservice.NewIngesterFromClient(contentapi.NewContentClient(conn)) | ||||||
| 		provider := contentservice.NewProviderFromClient(contentapi.NewContentClient(conn)) | 		provider := contentservice.NewProviderFromClient(contentapi.NewContentClient(conn)) | ||||||
|  |  | ||||||
| 		cs, err := resolveContentStore(clicontext) | 		cs, err := resolveContentStore(clicontext) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			return err | ||||||
|   | |||||||
| @@ -103,6 +103,12 @@ func List(tx *bolt.Tx) ([]Image, error) { | |||||||
| 	return images, nil | 	return images, nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func Delete(tx *bolt.Tx, name string) error { | ||||||
|  | 	return withImagesBucket(tx, func(bkt *bolt.Bucket) error { | ||||||
|  | 		return bkt.DeleteBucket([]byte(name)) | ||||||
|  | 	}) | ||||||
|  | } | ||||||
|  |  | ||||||
| func readImage(image *Image, bkt *bolt.Bucket) error { | func readImage(image *Image, bkt *bolt.Bucket) error { | ||||||
| 	return bkt.ForEach(func(k, v []byte) error { | 	return bkt.ForEach(func(k, v []byte) error { | ||||||
| 		if v == nil { | 		if v == nil { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Kenfe-Mickaël Laventure
					Kenfe-Mickaël Laventure