func populateRollbackSteps()

in cli_tools/gce_windows_upgrade/upgrader/workflows.go [502:576]


func populateRollbackSteps(u *upgrader, w *daisy.Workflow) error {
	stepStopInstance, err := daisyutils.NewStep(w, "stop-instance")
	if err != nil {
		return err
	}
	stepStopInstance.StopInstances = &daisy.StopInstances{
		Instances: []string{u.instanceURI},
	}

	stepDetachNewOSDisk, err := daisyutils.NewStep(w, "detach-new-os-disk", stepStopInstance)
	if err != nil {
		return err
	}
	stepDetachNewOSDisk.DetachDisks = &daisy.DetachDisks{
		{
			Instance:   u.instanceURI,
			DeviceName: daisyutils.GetDeviceURI(u.instanceProject, u.instanceZone, u.osDiskDeviceName),
		},
	}

	stepAttachOldOSDisk, err := daisyutils.NewStep(w, "attach-old-os-disk", stepDetachNewOSDisk)
	if err != nil {
		return err
	}
	stepAttachOldOSDisk.AttachDisks = &daisy.AttachDisks{
		{
			Instance: u.instanceURI,
			AttachedDisk: compute.AttachedDisk{
				Source:     u.osDiskURI,
				DeviceName: u.osDiskDeviceName,
				AutoDelete: u.osDiskAutoDelete,
				Boot:       true,
			},
		},
	}

	stepDetachInstallMediaDisk, err := daisyutils.NewStep(w, "detach-install-media-disk", stepAttachOldOSDisk)
	if err != nil {
		return err
	}
	stepDetachInstallMediaDisk.DetachDisks = &daisy.DetachDisks{
		{
			Instance:   u.instanceURI,
			DeviceName: daisyutils.GetDeviceURI(u.instanceProject, u.instanceZone, u.installMediaDiskName),
		},
	}

	stepRestoreScript, err := daisyutils.NewStep(w, "restore-script", stepDetachInstallMediaDisk)
	if err != nil {
		return err
	}
	stepRestoreScript.UpdateInstancesMetadata = &daisy.UpdateInstancesMetadata{
		{
			Instance: u.instanceURI,
			Metadata: map[string]string{
				metadataWindowsStartupScriptURL:       u.getOriginalStartupScriptURL(),
				metadataWindowsStartupScriptURLBackup: "",
			},
		},
	}

	// TODO: use a flag to determine whether to start the instance. b/156668741

	stepDeleteNewOSDiskAndInstallMediaDisk, err := daisyutils.NewStep(w, "delete-new-os-disk-and-install-media-disk", stepRestoreScript)
	if err != nil {
		return err
	}
	stepDeleteNewOSDiskAndInstallMediaDisk.DeleteResources = &daisy.DeleteResources{
		Disks: []string{
			daisyutils.GetDiskURI(u.instanceProject, u.instanceZone, u.newOSDiskName),
			daisyutils.GetDiskURI(u.instanceProject, u.instanceZone, u.installMediaDiskName),
		},
	}
	return nil
}