@@ -19,18 +19,18 @@ import (
1919 "net"
2020 "path/filepath"
2121
22- "github.com/sirupsen/logrus"
23- "github.com/spf13/cobra"
24-
2522 "github.com/sealerio/sealer/cmd/sealer/cmd/types"
2623 "github.com/sealerio/sealer/cmd/sealer/cmd/utils"
2724 "github.com/sealerio/sealer/common"
2825 clusterruntime "github.com/sealerio/sealer/pkg/cluster-runtime"
2926 "github.com/sealerio/sealer/pkg/clusterfile"
30- imagecommon "github.com/sealerio/sealer/pkg/define/options"
27+ imagev1 "github.com/sealerio/sealer/pkg/define/image/v1"
28+ "github.com/sealerio/sealer/pkg/define/options"
3129 "github.com/sealerio/sealer/pkg/imagedistributor"
3230 "github.com/sealerio/sealer/pkg/imageengine"
3331 "github.com/sealerio/sealer/pkg/infradriver"
32+ "github.com/sirupsen/logrus"
33+ "github.com/spf13/cobra"
3434)
3535
3636var scaleUpFlags * types.ScaleUpFlags
@@ -87,19 +87,33 @@ func NewScaleUpCmd() *cobra.Command {
8787 if err != nil {
8888 return err
8989 }
90- cf .SetCluster (cluster )
9190
92- infraDriver , err := infradriver . NewInfraDriver ( & cluster )
91+ imageEngine , err := imageengine . NewImageEngine (options. EngineGlobalConfigurations {} )
9392 if err != nil {
9493 return err
9594 }
9695
97- imageEngine , err := imageengine .NewImageEngine (imagecommon.EngineGlobalConfigurations {})
96+ id , err := imageEngine .Pull (& options.PullOptions {
97+ Quiet : false ,
98+ PullPolicy : "missing" ,
99+ Image : cluster .Spec .Image ,
100+ Platform : "local" ,
101+ })
98102 if err != nil {
99103 return err
100104 }
101105
102- return scaleUpCluster (cluster .Spec .Image , mj , nj , infraDriver , imageEngine , cf , scaleUpFlags .IgnoreCache )
106+ imageSpec , err := imageEngine .Inspect (& options.InspectOptions {ImageNameOrID : id })
107+ if err != nil {
108+ return fmt .Errorf ("failed to get sealer image extension: %s" , err )
109+ }
110+
111+ // merge image extension
112+ mergedWithExt := utils .MergeClusterWithImageExtension (& cluster , imageSpec .ImageExtension )
113+
114+ cf .SetCluster (* mergedWithExt )
115+
116+ return scaleUpCluster (mj , nj , imageSpec , cf , imageEngine , scaleUpFlags .IgnoreCache )
103117 },
104118 }
105119
@@ -116,15 +130,23 @@ func NewScaleUpCmd() *cobra.Command {
116130 return scaleUpFlagsCmd
117131}
118132
119- func scaleUpCluster (clusterImageName string , scaleUpMasterIPList , scaleUpNodeIPList []net.IP ,
120- infraDriver infradriver.InfraDriver , imageEngine imageengine.Interface ,
121- cf clusterfile.Interface , ignoreCache bool ) error {
133+ func scaleUpCluster (scaleUpMasterIPList , scaleUpNodeIPList []net.IP , imageSpec * imagev1.ImageSpec ,
134+ cf clusterfile.Interface , imageEngine imageengine.Interface , ignoreCache bool ) error {
122135 logrus .Infof ("start to scale up cluster" )
123136
124137 var (
125138 newHosts = append (scaleUpMasterIPList , scaleUpNodeIPList ... )
126139 )
127140
141+ cluster := cf .GetCluster ()
142+
143+ infraDriver , err := infradriver .NewInfraDriver (& cluster )
144+ if err != nil {
145+ return err
146+ }
147+
148+ clusterImageName := infraDriver .GetClusterImageName ()
149+
128150 clusterHostsPlatform , err := infraDriver .GetHostsPlatform (newHosts )
129151 if err != nil {
130152 return err
@@ -172,11 +194,6 @@ func scaleUpCluster(clusterImageName string, scaleUpMasterIPList, scaleUpNodeIPL
172194 runtimeConfig .KubeadmConfig = * cf .GetKubeadmConfig ()
173195 }
174196
175- imageSpec , err := imageEngine .Inspect (& imagecommon.InspectOptions {ImageNameOrID : clusterImageName })
176- if err != nil {
177- return fmt .Errorf ("failed to get sealer image extension: %s" , err )
178- }
179-
180197 installer , err := clusterruntime .NewInstaller (infraDriver , * runtimeConfig ,
181198 clusterruntime .GetClusterInstallInfo (imageSpec .ImageExtension .Labels , runtimeConfig .ContainerRuntimeConfig ))
182199 if err != nil {
0 commit comments