Skip to content

Commit

Permalink
Use image template instead of allowing arbitary prefix
Browse files Browse the repository at this point in the history
Prefixes aren't a thing, but image formats are. Required for CI.
  • Loading branch information
smarterclayton committed Apr 17, 2018
1 parent aa680b2 commit 896f79b
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 22 deletions.
29 changes: 19 additions & 10 deletions pkg/oc/bootstrap/clusteradd/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,9 @@ var availableComponents = map[string]func(ctx componentinstall.Context) componen

func NewCmdAdd(name, fullName string, out, errout io.Writer) *cobra.Command {
config := &ClusterAddConfig{
Out: out,
ErrOut: errout,
Out: out,
ErrOut: errout,
ImageTemplate: variable.NewDefaultImageTemplate(),
}
cmd := &cobra.Command{
Use: name,
Expand Down Expand Up @@ -124,9 +125,10 @@ func (c *ClusterAddConfig) Run() error {
}

type ClusterAddConfig struct {
ImageTemplate variable.ImageTemplate
ImageTag string

BaseDir string
ImageTag string
Image string
ServerLogLevel int
ComponentsToInstall []string

Expand All @@ -146,9 +148,16 @@ func (c *ClusterAddConfig) Complete(cmd *cobra.Command) error {
}

// do some defaulting
if len(c.ImageTag) == 0 {
c.ImageTag = strings.TrimRight("v"+version.Get().Major+"."+version.Get().Minor, "+")
}
c.ImageTemplate.Format = variable.Expand(c.ImageTemplate.Format, func(s string) (string, bool) {
if s == "version" {
if len(c.ImageTag) == 0 {
return strings.TrimRight("v"+version.Get().Major+"."+version.Get().Minor, "+"), true
}
return c.ImageTag, true
}
return "", false
}, variable.Identity)

if len(c.BaseDir) == 0 {
c.BaseDir = "openshift.local.clusterup"
}
Expand Down Expand Up @@ -191,19 +200,19 @@ func (c *ClusterAddConfig) Check() error {
func (c *ClusterAddConfig) Bind(flags *pflag.FlagSet) {
flags.StringVar(&c.ImageTag, "tag", "", "Specify the tag for OpenShift images")
flags.MarkHidden("tag")
flags.StringVar(&c.Image, "image", variable.DefaultImagePrefix, "Specify the images to use for OpenShift")
flags.StringVar(&c.ImageTemplate.Format, "image", c.ImageTemplate.Format, "Specify the images to use for OpenShift")
flags.StringVar(&c.BaseDir, "base-dir", c.BaseDir, "Directory on Docker host for cluster up configuration")
flags.IntVar(&c.ServerLogLevel, "server-loglevel", 0, "Log level for OpenShift server")
}

func (c *ClusterAddConfig) openshiftImage() string {
return fmt.Sprintf("%s:%s", c.Image, c.ImageTag)
return c.ImageTemplate.ExpandOrDie("control-plane")
}

func (c *ClusterAddConfig) GetLogDir() string {
return path.Join(c.BaseDir, "logs")
}

func (c *ClusterAddConfig) imageFormat() string {
return fmt.Sprintf("%s-${component}:%s", c.Image, c.ImageTag)
return c.ImageTemplate.Format
}
2 changes: 2 additions & 0 deletions pkg/oc/bootstrap/docker/run_self_hosted.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ func (c *ClusterUpConfig) StartSelfHosted(out io.Writer) error {
"NODE_CONFIG_HOST_PATH": configDirs.nodeConfigDir,
"KUBEDNS_CONFIG_HOST_PATH": configDirs.kubeDNSConfigDir,
"LOGLEVEL": fmt.Sprintf("%d", c.ServerLogLevel),
"IMAGE": c.openshiftImage(),
}

clientConfigBuilder, err := kclientcmd.LoadFromFile(filepath.Join(configDirs.masterConfigDir, "admin.kubeconfig"))
Expand Down Expand Up @@ -258,6 +259,7 @@ func (c *ClusterUpConfig) BuildConfig() (*configDirs, error) {
"/path/to/master/config-dir": configLocations.masterConfigDir,
"/path/to/openshift-apiserver/config-dir": configLocations.openshiftAPIServerConfigDir,
"ETCD_VOLUME": "emptyDir:\n",
"openshift/origin-control-plane:latest": c.openshiftImage(),
}
if len(c.HostDataDir) > 0 {
substitutions["ETCD_VOLUME"] = `hostPath:
Expand Down
33 changes: 21 additions & 12 deletions pkg/oc/bootstrap/docker/up.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ func NewCmdUp(name, fullName string, out, errout io.Writer, clusterAdd *cobra.Co
PortForwarding: defaultPortForwarding(),
DNSPort: openshift.DefaultDNSPort,

ImageTemplate: variable.NewDefaultImageTemplate(),

// We pass cluster add as a command to prevent anyone from ever cheating with their wiring. You either work from flags or
// or you don't work. You cannot add glue of any sort.
ClusterAdd: clusterAdd,
Expand All @@ -122,8 +124,9 @@ func NewCmdUp(name, fullName string, out, errout io.Writer, clusterAdd *cobra.Co
}

type ClusterUpConfig struct {
Image string
ImageTag string
ImageTemplate variable.ImageTemplate
ImageTag string

DockerMachine string
SkipRegistryCheck bool
PortForwarding bool
Expand Down Expand Up @@ -173,9 +176,9 @@ type ClusterUpConfig struct {
}

func (c *ClusterUpConfig) Bind(flags *pflag.FlagSet) {
flags.StringVar(&c.ImageTag, "tag", "", "Specify the tag for OpenShift images")
flags.StringVar(&c.ImageTag, "tag", "", "Specify an explicit version for OpenShift images")
flags.MarkHidden("tag")
flags.StringVar(&c.Image, "image", variable.DefaultImagePrefix, "Specify the images to use for OpenShift")
flags.StringVar(&c.ImageTemplate.Format, "image", c.ImageTemplate.Format, "Specify the images to use for OpenShift")
flags.BoolVar(&c.SkipRegistryCheck, "skip-registry-check", false, "Skip Docker daemon registry check")
flags.StringVar(&c.PublicHostname, "public-hostname", "", "Public hostname for OpenShift cluster")
flags.StringVar(&c.RoutingSuffix, "routing-suffix", "", "Default suffix for server routes")
Expand Down Expand Up @@ -237,10 +240,17 @@ func (c *ClusterUpConfig) Complete(cmd *cobra.Command, out io.Writer) error {

c.command = cmd

// do some defaulting
if len(c.ImageTag) == 0 {
c.ImageTag = strings.TrimRight("v"+version.Get().Major+"."+version.Get().Minor, "+")
}
// ignore version tags
c.ImageTemplate.Format = variable.Expand(c.ImageTemplate.Format, func(s string) (string, bool) {
if s == "version" {
if len(c.ImageTag) == 0 {
return strings.TrimRight("v"+version.Get().Major+"."+version.Get().Minor, "+"), true
}
return c.ImageTag, true
}
return "", false
}, variable.Identity)

if len(c.BaseDir) == 0 {
c.SpecifiedBaseDir = false
c.BaseDir = "openshift.local.clusterup"
Expand Down Expand Up @@ -484,8 +494,7 @@ func (c *ClusterUpConfig) Start(out io.Writer) error {
taskPrinter.Success()

if len(c.ComponentsToEnable) > 0 {
args := append([]string{}, "--image="+c.Image)
args = append(args, "--tag="+c.ImageTag)
args := append([]string{}, "--image="+c.ImageTemplate.Format)
args = append(args, "--base-dir="+c.BaseDir)
args = append(args, c.ComponentsToEnable...)

Expand Down Expand Up @@ -814,7 +823,7 @@ func (c *ClusterUpConfig) PostClusterStartupMutations(out io.Writer) error {
}

func (c *ClusterUpConfig) imageFormat() string {
return fmt.Sprintf("%s-${component}:%s", c.Image, c.ImageTag)
return c.ImageTemplate.Format
}

// Login logs into the new server and sets up a default user and project
Expand Down Expand Up @@ -923,7 +932,7 @@ func (c *ClusterUpConfig) DockerHelper() *dockerhelper.Helper {
}

func (c *ClusterUpConfig) openshiftImage() string {
return fmt.Sprintf("%s:%s", c.Image, c.ImageTag)
return c.ImageTemplate.ExpandOrDie("control-plane")
}

func (c *ClusterUpConfig) determineAdditionalIPs(ip string) ([]string, error) {
Expand Down

0 comments on commit 896f79b

Please sign in to comment.