@@ -98,6 +98,8 @@ func NewCmdUp(name, fullName string, out, errout io.Writer, clusterAdd *cobra.Co
9898 PortForwarding : defaultPortForwarding (),
9999 DNSPort : openshift .DefaultDNSPort ,
100100
101+ ImageTemplate : variable .NewDefaultImageTemplate (),
102+
101103 // We pass cluster add as a command to prevent anyone from ever cheating with their wiring. You either work from flags or
102104 // or you don't work. You cannot add glue of any sort.
103105 ClusterAdd : clusterAdd ,
@@ -122,8 +124,9 @@ func NewCmdUp(name, fullName string, out, errout io.Writer, clusterAdd *cobra.Co
122124}
123125
124126type ClusterUpConfig struct {
125- Image string
126- ImageTag string
127+ ImageTemplate variable.ImageTemplate
128+ ImageTag string
129+
127130 DockerMachine string
128131 SkipRegistryCheck bool
129132 PortForwarding bool
@@ -173,9 +176,9 @@ type ClusterUpConfig struct {
173176}
174177
175178func (c * ClusterUpConfig ) Bind (flags * pflag.FlagSet ) {
176- flags .StringVar (& c .ImageTag , "tag" , "" , "Specify the tag for OpenShift images" )
179+ flags .StringVar (& c .ImageTag , "tag" , "" , "Specify an explicit version for OpenShift images" )
177180 flags .MarkHidden ("tag" )
178- flags .StringVar (& c .Image , "image" , variable . DefaultImagePrefix , "Specify the images to use for OpenShift" )
181+ flags .StringVar (& c .ImageTemplate . Format , "image" , c . ImageTemplate . Format , "Specify the images to use for OpenShift" )
179182 flags .BoolVar (& c .SkipRegistryCheck , "skip-registry-check" , false , "Skip Docker daemon registry check" )
180183 flags .StringVar (& c .PublicHostname , "public-hostname" , "" , "Public hostname for OpenShift cluster" )
181184 flags .StringVar (& c .RoutingSuffix , "routing-suffix" , "" , "Default suffix for server routes" )
@@ -237,10 +240,17 @@ func (c *ClusterUpConfig) Complete(cmd *cobra.Command, out io.Writer) error {
237240
238241 c .command = cmd
239242
240- // do some defaulting
241- if len (c .ImageTag ) == 0 {
242- c .ImageTag = strings .TrimRight ("v" + version .Get ().Major + "." + version .Get ().Minor , "+" )
243- }
243+ // ignore version tags
244+ c .ImageTemplate .Format = variable .Expand (c .ImageTemplate .Format , func (s string ) (string , bool ) {
245+ if s == "version" {
246+ if len (c .ImageTag ) == 0 {
247+ return strings .TrimRight ("v" + version .Get ().Major + "." + version .Get ().Minor , "+" ), true
248+ }
249+ return c .ImageTag , true
250+ }
251+ return "" , false
252+ }, variable .Identity )
253+
244254 if len (c .BaseDir ) == 0 {
245255 c .SpecifiedBaseDir = false
246256 c .BaseDir = "openshift.local.clusterup"
@@ -484,8 +494,7 @@ func (c *ClusterUpConfig) Start(out io.Writer) error {
484494 taskPrinter .Success ()
485495
486496 if len (c .ComponentsToEnable ) > 0 {
487- args := append ([]string {}, "--image=" + c .Image )
488- args = append (args , "--tag=" + c .ImageTag )
497+ args := append ([]string {}, "--image=" + c .ImageTemplate .Format )
489498 args = append (args , "--base-dir=" + c .BaseDir )
490499 args = append (args , c .ComponentsToEnable ... )
491500
@@ -814,7 +823,7 @@ func (c *ClusterUpConfig) PostClusterStartupMutations(out io.Writer) error {
814823}
815824
816825func (c * ClusterUpConfig ) imageFormat () string {
817- return fmt . Sprintf ( "%s-${component}:%s" , c . Image , c . ImageTag )
826+ return c . ImageTemplate . Format
818827}
819828
820829// Login logs into the new server and sets up a default user and project
@@ -923,7 +932,7 @@ func (c *ClusterUpConfig) DockerHelper() *dockerhelper.Helper {
923932}
924933
925934func (c * ClusterUpConfig ) openshiftImage () string {
926- return fmt . Sprintf ( "%s:%s" , c . Image , c . ImageTag )
935+ return c . ImageTemplate . ExpandOrDie ( "control-plane" )
927936}
928937
929938func (c * ClusterUpConfig ) determineAdditionalIPs (ip string ) ([]string , error ) {
0 commit comments