@@ -36,6 +36,10 @@ var upgradeComponentListPost9 = []string{
3636 finalizeUpgradeGroup ,
3737}
3838
39+ var upgradeComponentListGlobalManager = []string {
40+ mpUpgradeGroup ,
41+ }
42+
3943var postCheckComponentList = []string {
4044 edgeUpgradeGroup ,
4145 hostUpgradeGroup ,
@@ -53,6 +57,7 @@ var componentToSettingKey = map[string]string{
5357
5458var supportedUpgradeMode = []string {"maintenance_mode" , "in_place" , "stage_in_vlcm" }
5559var supportedMaintenanceModeConfigVsanMode = []string {"evacuate_all_data" , "ensure_object_accessibility" , "no_action" }
60+ var lmOnlyAttributes = []string {"edge_group" , "host_group" , "finalize_upgrade_setting" , "edge_upgrade_setting" , "host_upgrade_setting" }
5661
5762var (
5863 // Default waiting setup in seconds
@@ -101,7 +106,10 @@ func getTargetVersion(m interface{}) (string, error) {
101106 return * obj .TargetVersion , nil
102107}
103108
104- func getUpgradeComponentList (targetVersion string ) []string {
109+ func getUpgradeComponentList (targetVersion string , m interface {}) []string {
110+ if isPolicyGlobalManager (m ) {
111+ return upgradeComponentListGlobalManager
112+ }
105113 if util .VersionHigherOrEqual (targetVersion , "9.0.0" ) {
106114 return upgradeComponentListPost9
107115 }
@@ -413,6 +421,15 @@ func upgradeRunCreateOrUpdate(d *schema.ResourceData, m interface{}) error {
413421 id = newUUID ()
414422 }
415423
424+ // Fail if upgrade groups are configured for global manager
425+ if isPolicyGlobalManager (m ) {
426+ for _ , attr := range lmOnlyAttributes {
427+ if d .HasChange (attr ) {
428+ return fmt .Errorf ("attribute %s is not supported for Global Manager" , attr )
429+ }
430+ }
431+ }
432+
416433 // Validate that upgrade_prepare_id is actually from the nsxt_upgrade_prepare_ready data source
417434 upgradePrepareReadyID := d .Get ("upgrade_prepare_ready_id" ).(string )
418435 if ! util .VerifyVerifiableID (upgradePrepareReadyID , "nsxt_upgrade_prepare_ready" ) {
@@ -428,7 +445,7 @@ func upgradeRunCreateOrUpdate(d *schema.ResourceData, m interface{}) error {
428445
429446 log .Printf ("[INFO] Updating UpgradeUnitGroup and UpgradePlanSetting." )
430447 var hasVLCM bool
431- err = prepareUpgrade (upgradeClientSet , d , targetVersion , & hasVLCM )
448+ err = prepareUpgrade (upgradeClientSet , d , m , targetVersion , & hasVLCM )
432449 if err != nil {
433450 return handleCreateError ("NsxtUpgradeRun" , id , err )
434451 }
@@ -443,7 +460,7 @@ func upgradeRunCreateOrUpdate(d *schema.ResourceData, m interface{}) error {
443460 }
444461 }
445462
446- err = runUpgrade (upgradeClientSet , getPartialUpgradeMap (d , targetVersion ), targetVersion , hasVLCM , finalizeUpgrade )
463+ err = runUpgrade (upgradeClientSet , m , getPartialUpgradeMap (d , m , targetVersion ), targetVersion , hasVLCM , finalizeUpgrade )
447464 if err != nil {
448465 return handleCreateError ("NsxtUpgradeRun" , id , err )
449466 }
@@ -454,8 +471,8 @@ func upgradeRunCreateOrUpdate(d *schema.ResourceData, m interface{}) error {
454471 return resourceNsxtUpgradeRunRead (d , m )
455472}
456473
457- func prepareUpgrade (upgradeClientSet * upgradeClientSet , d * schema.ResourceData , targetVersion string , hasVLCM * bool ) error {
458- for _ , component := range getUpgradeComponentList (targetVersion ) {
474+ func prepareUpgrade (upgradeClientSet * upgradeClientSet , d * schema.ResourceData , m interface {}, targetVersion string , hasVLCM * bool ) error {
475+ for _ , component := range getUpgradeComponentList (targetVersion , m ) {
459476 // Customize MP upgrade is not allowed
460477 if component == mpUpgradeGroup || component == finalizeUpgradeGroup {
461478 continue
@@ -516,12 +533,12 @@ func prepareUpgrade(upgradeClientSet *upgradeClientSet, d *schema.ResourceData,
516533 return nil
517534}
518535
519- func getPartialUpgradeMap (d * schema.ResourceData , targetVersion string ) map [string ]bool {
536+ func getPartialUpgradeMap (d * schema.ResourceData , m interface {}, targetVersion string ) map [string ]bool {
520537 isPartialUpgradeMap := map [string ]bool {
521538 edgeUpgradeGroup : false ,
522539 hostUpgradeGroup : false ,
523540 }
524- for _ , component := range getUpgradeComponentList (targetVersion ) {
541+ for _ , component := range getUpgradeComponentList (targetVersion , m ) {
525542 if component == mpUpgradeGroup || component == finalizeUpgradeGroup {
526543 continue
527544 }
@@ -816,10 +833,10 @@ func updateComponentUpgradePlanSetting(settingClient plan.SettingsClient, d *sch
816833 return err
817834}
818835
819- func runUpgrade (upgradeClientSet * upgradeClientSet , partialUpgradeMap map [string ]bool , targetVersion string , hasVLCM , finalizeUpgrade bool ) error {
836+ func runUpgrade (upgradeClientSet * upgradeClientSet , m interface {}, partialUpgradeMap map [string ]bool , targetVersion string , hasVLCM , finalizeUpgrade bool ) error {
820837 partialUpgradeExist := false
821838 prevComponent := ""
822- for _ , c := range getUpgradeComponentList (targetVersion ) {
839+ for _ , c := range getUpgradeComponentList (targetVersion , m ) {
823840 component := c
824841 if ! finalizeUpgrade && component == finalizeUpgradeGroup {
825842 continue
0 commit comments