@@ -1173,8 +1173,8 @@ func getPriceIdForUpgrade(packageItems []datatypes.Product_Item_Price, option st
11731173// Check the virtual server instance is ready for use
11741174// A Virtual server is ready when there are no active transaction, and it is not doing an OS reload.
11751175func (vs virtualServerManager ) InstanceIsReady (id int , until time.Time ) (bool , string , error ) {
1176- mask := `mask[id, lastOperatingSystemReload[id,modifyDate], activeTransaction[id,transactionStatus[name]]
1177- provisionDate, powerState[keyName]`
1176+ mask := `mask[id, lastOperatingSystemReload[id,modifyDate], activeTransaction[id,transactionStatus[name]],
1177+ provisionDate, powerState[keyName]] `
11781178 for {
11791179 virtualGuest , err := vs .GetInstance (id , mask )
11801180 if err != nil {
@@ -1184,37 +1184,26 @@ provisionDate, powerState[keyName]`
11841184 lastReload := virtualGuest .LastOperatingSystemReload
11851185 activeTxn := virtualGuest .ActiveTransaction
11861186 provisionDate := virtualGuest .ProvisionDate
1187-
1187+ txnMessage := "-"
1188+ if activeTxn != nil && activeTxn .TransactionStatus != nil && activeTxn .TransactionStatus .Name != nil {
1189+ txnMessage = * activeTxn .TransactionStatus .Name
1190+ }
11881191 var reloading bool
11891192 if activeTxn != nil && activeTxn .Id != nil && lastReload != nil && lastReload .Id != nil {
11901193 reloading = activeTxn != nil && lastReload != nil && * activeTxn .Id == * lastReload .Id
11911194 }
11921195 if provisionDate != nil && ! reloading {
1193- //fmt.Println("power state:", *virtualGuest.PowerState.KeyName)
11941196 if virtualGuest .PowerState != nil && virtualGuest .PowerState .KeyName != nil {
1195- sub_map := map [string ]interface {}{"Id" : id , "State" : * virtualGuest .PowerState .KeyName }
1196- if * virtualGuest .PowerState .KeyName == "HALTED" {
1197- return false , T ("Virtual guest instance {{.Id}} is {{.State}}." , sub_map ), nil
1197+ if * virtualGuest .PowerState .KeyName == "HALTED" || * virtualGuest .PowerState .KeyName == "PAUSED" {
1198+ return false , * virtualGuest .PowerState .KeyName , nil
11981199 }
1199- if * virtualGuest .PowerState .KeyName == "PAUSED" {
1200- return false , T ("Virtual guest instance {{.Id}} is {{.State}}." , sub_map ), nil
1201- }
1202- }
1203-
1204- pingable , err := vs .VirtualGuestService .Id (id ).IsPingable ()
1205- if err != nil {
1206- return false , T ("Failed to reach virtual guest instance {{.Id}}." , map [string ]interface {}{"Id" : id }), err
1207- }
1208- //fmt.Println("pingable:", pingable)
1209- if pingable == false {
1210- return false , T ("Virtual guest instance {{.Id}} is not reachable." , map [string ]interface {}{"Id" : id }), nil
12111200 }
12121201 return true , "" , nil
12131202 }
12141203
12151204 now := time .Now ()
12161205 if now .After (until ) {
1217- return false , T ( "Virtual guest instance {{.Id}} is loading operating system." , map [ string ] interface {}{ "Id" : id }) , nil
1206+ return false , txnMessage , nil
12181207 }
12191208
12201209 min := math .Min (float64 (1.0 ), float64 (until .Sub (now )))
0 commit comments