func populateUpgradeStepsFrom2008r2To2012r2()

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
}