in cli_tools/gce_windows_upgrade/upgrader/workflows.go [224:283]
func populateUpgradeStepsFrom2008r2To2012r2(u *upgrader, w *daisy.Workflow) error {
cleanupWorkflow, err := u.generateWorkflowWithSteps("cleanup", "10m", populateCleanupSteps)
if err != nil {
return nil
}
w.Steps = map[string]*daisy.Step{
"start-instance": {
StartInstances: &daisy.StartInstances{
Instances: []string{u.instanceURI},
},
},
"wait-for-boot": {
Timeout: "15m",
WaitForInstancesSignal: &daisy.WaitForInstancesSignal{
{
Name: u.instanceURI,
SerialOutput: &daisy.SerialOutput{
Port: 1,
SuccessMatch: "Beginning upgrade startup script.",
},
},
},
},
"wait-for-upgrade": {
WaitForAnyInstancesSignal: &daisy.WaitForAnyInstancesSignal{
{
Name: u.instanceURI,
SerialOutput: &daisy.SerialOutput{
Port: 1,
SuccessMatch: "windows_upgrade_current_version='Windows Server 2012 R2 Datacenter'",
FailureMatch: []string{"UpgradeFailed:"},
StatusMatch: "GCEMetadataScripts:",
},
},
{
Name: u.instanceURI,
SerialOutput: &daisy.SerialOutput{
Port: 3,
// These errors were thrown from setup.exe.
FailureMatch: []string{"Windows needs to be restarted", "CheckDiskSpaceRequirements not satisfied"},
// This is the prefix of error log emitted from install media. Catch it and write to daisy log for debugging.
StatusMatch: "$WINDOWS.~BT setuperr$",
},
},
},
},
"cleanup-temp-resources": {
IncludeWorkflow: &daisy.IncludeWorkflow{
Workflow: cleanupWorkflow,
},
},
}
w.Dependencies = map[string][]string{
"wait-for-boot": {"start-instance"},
"wait-for-upgrade": {"start-instance"},
"cleanup-temp-resources": {"wait-for-upgrade"},
}
return nil
}