Merge pull request #547 from qujinping/master

Support insecure registry and enhance parsing of image stream tag
This commit is contained in:
Charlie Drage 2017-04-07 11:40:49 -04:00 committed by GitHub
commit e8b98e32f3
4 changed files with 40 additions and 10 deletions

View File

@ -38,6 +38,7 @@ var (
ConvertJSON bool
ConvertStdout bool
ConvertEmptyVols bool
ConvertInsecureRepo bool
ConvertDeploymentConfig bool
ConvertReplicas int
ConvertOpt kobject.ConvertOptions
@ -68,6 +69,7 @@ var convertCmd = &cobra.Command{
BuildBranch: ConvertBuildBranch,
CreateDeploymentConfig: ConvertDeploymentConfig,
EmptyVols: ConvertEmptyVols,
InsecureRepository: ConvertInsecureRepo,
IsDeploymentFlag: cmd.Flags().Lookup("deployment").Changed,
IsDaemonSetFlag: cmd.Flags().Lookup("daemon-set").Changed,
IsReplicationControllerFlag: cmd.Flags().Lookup("replication-controller").Changed,
@ -101,9 +103,11 @@ func init() {
// OpenShift only
convertCmd.Flags().BoolVar(&ConvertDeploymentConfig, "deployment-config", true, "Generate an OpenShift deploymentconfig object")
convertCmd.Flags().BoolVar(&ConvertInsecureRepo, "insecure-repository", false, "Use an insecure Docker repository for OpenShift ImageStream")
convertCmd.Flags().StringVar(&ConvertBuildRepo, "build-repo", "", "Specify source repository for buildconfig (default remote origin)")
convertCmd.Flags().StringVar(&ConvertBuildBranch, "build-branch", "", "Specify repository branch to use for buildconfig (default master)")
convertCmd.Flags().MarkHidden("deployment-config")
convertCmd.Flags().MarkHidden("insecure-repository")
convertCmd.Flags().MarkHidden("build-repo")
convertCmd.Flags().MarkHidden("build-branch")
@ -138,6 +142,7 @@ Resource Flags:
--daemon-set Generate a Kubernetes daemonset object
-d, --deployment Generate a Kubernetes deployment object
--deployment-config Generate an OpenShift deployment config object
--insecure-repository Specify to use insecure docker repository while generating Openshift image stream object
--replication-controller Generate a Kubernetes replication controller object
Flags:

View File

@ -26,9 +26,10 @@ import (
// TODO: comment
var (
UpReplicas int
UpEmptyVols bool
UpOpt kobject.ConvertOptions
UpReplicas int
UpEmptyVols bool
UpInsecureRepo bool
UpOpt kobject.ConvertOptions
)
var upCmd = &cobra.Command{
@ -39,10 +40,11 @@ var upCmd = &cobra.Command{
// Create the Convert options.
UpOpt = kobject.ConvertOptions{
Replicas: UpReplicas,
InputFiles: GlobalFiles,
Provider: strings.ToLower(GlobalProvider),
EmptyVols: UpEmptyVols,
Replicas: UpReplicas,
InputFiles: GlobalFiles,
Provider: strings.ToLower(GlobalProvider),
EmptyVols: UpEmptyVols,
InsecureRepository: UpInsecureRepo,
}
// Validate before doing anything else.
@ -56,5 +58,6 @@ var upCmd = &cobra.Command{
func init() {
upCmd.Flags().BoolVar(&UpEmptyVols, "emptyvols", false, "Use empty volumes. Do not generate PersistentVolumeClaim")
upCmd.Flags().IntVar(&UpReplicas, "replicas", 1, "Specify the number of replicas generated")
upCmd.Flags().BoolVar(&UpInsecureRepo, "insecure-repository", false, "Use an insecure Docker repository for OpenShift ImageStream")
RootCmd.AddCommand(upCmd)
}

View File

@ -43,6 +43,7 @@ type ConvertOptions struct {
GenerateYaml bool
GenerateJSON bool
EmptyVols bool
InsecureRepository bool
Replicas int
InputFiles []string
OutFile string

View File

@ -75,7 +75,22 @@ var unsupportedKey = map[string]bool{}
// getImageTag get tag name from image name
// if no tag is specified return 'latest'
func getImageTag(image string) string {
p := strings.Split(image, ":")
// format: registry_host:registry_port/repo_name/image_name:image_tag
// example:
// 1) myregistryhost:5000/fedora/httpd:version1.0
// 2) myregistryhost:5000/fedora/httpd
// 3) myregistryhost/fedora/httpd:version1.0
// 4) myregistryhost/fedora/httpd
// 5) fedora/httpd
// 6) httpd
imageAndTag := image
i := strings.Split(image, "/")
if len(i) >= 2 {
imageAndTag = i[len(i)-1]
}
p := strings.Split(imageAndTag, ":")
if len(p) == 2 {
return p[1]
}
@ -144,9 +159,14 @@ func getAbsBuildContext(context string, composeFileDir string) (string, error) {
}
// initImageStream initialize ImageStream object
func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig) *imageapi.ImageStream {
func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig, opt kobject.ConvertOptions) *imageapi.ImageStream {
tag := getImageTag(service.Image)
var importPolicy imageapi.TagImportPolicy
if opt.InsecureRepository {
importPolicy = imageapi.TagImportPolicy{Insecure: true}
}
var tags map[string]imageapi.TagReference
if service.Build == "" {
tags = map[string]imageapi.TagReference{
@ -155,6 +175,7 @@ func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig)
Kind: "DockerImage",
Name: service.Image,
},
ImportPolicy: importPolicy,
},
}
}
@ -333,7 +354,7 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
if opt.CreateDeploymentConfig {
objects = append(objects, o.initDeploymentConfig(name, service, opt.Replicas)) // OpenShift DeploymentConfigs
// create ImageStream after deployment (creating IS will trigger new deployment)
objects = append(objects, o.initImageStream(name, service))
objects = append(objects, o.initImageStream(name, service, opt))
}
// buildconfig needs to be added to objects after imagestream because of this Openshift bug: https://github.com/openshift/origin/issues/4518