コード例 #1
0
ファイル: push.go プロジェクト: jgsqware/hyperclair
//PushHandler push image to Clair
func PushHandler(rw http.ResponseWriter, request *http.Request) error {
	local := request.URL.Query()["local"]

	docker.IsLocal = len(local) > 0
	logrus.Debugf("Hyperclair is local: %v", docker.IsLocal)

	var image docker.Image
	if !docker.IsLocal {
		var err error
		image, err = docker.Pull(parseImageURL(request))
		if err != nil {
			return err
		}
	} else {
		var err error
		image, err = docker.Parse(parseImageURL(request))
		if err != nil {
			return err
		}
		err = docker.Prepare(&image)
		logrus.Debugf("prepared image layers: %d", len(image.FsLayers))
		if err != nil {
			return err
		}
	}

	logrus.Info("Pushing Image")
	if err := docker.Push(image); err != nil {
		return err
	}
	rw.WriteHeader(http.StatusCreated)
	return nil
}
コード例 #2
0
ファイル: push.go プロジェクト: wemanity-belgium/hyperclair
			var err error
			image, err = docker.Parse(imageName)
			if err != nil {
				fmt.Println(xerrors.InternalError)
				logrus.Fatalf("parsing local image %q: %v", imageName, err)
			}
			err = docker.Prepare(&image)
			logrus.Debugf("prepared image layers: %d", len(image.FsLayers))
			if err != nil {
				fmt.Println(xerrors.InternalError)
				logrus.Fatalf("preparing local image %q from history: %v", imageName, err)
			}
		}

		logrus.Info("Pushing Image")
		if err := docker.Push(image); err != nil {
			if err != nil {
				fmt.Println(xerrors.InternalError)
				logrus.Fatalf("pushing image %q: %v", imageName, err)
			}
		}

		fmt.Printf("%v has been pushed to Clair\n", imageName)

	},
}

func init() {
	RootCmd.AddCommand(pushCmd)
	pushCmd.Flags().BoolVarP(&docker.IsLocal, "local", "l", false, "Use local images")
}