func validateGCEDefault()

in tui/post_processors.go [301:359]


func validateGCEDefault(input string, q *Queue) tea.Cmd {
	return func() tea.Msg {
		text := strings.TrimSpace(strings.ToLower(input))

		if !checkYesOrNo(text) {
			return errMsg{err: fmt.Errorf("Your answer '%s' is neither 'yes' nor 'no'", input)}
		}

		if string(text[0]) == "n" {
			return successMsg{}
		}

		project := q.stack.GetSetting("project_id")

		basename := q.stack.GetSetting("basename")

		defaultImage, err := q.client.ImageLatestGet(project, gcloud.DefaultImageProject, gcloud.DefaultImageFamily)
		if err != nil {
			return errMsg{
				err: fmt.Errorf(
					"validateGCEDefault: could not get DefaultImage for project(%s) family(%s): %s",
					gcloud.DefaultImageProject,
					gcloud.DefaultImageFamily,
					err,
				),
			}
		}

		defaultConfig := map[string]string{
			"instance-image":        defaultImage,
			"instance-disksize":     gcloud.DefaultDiskSize,
			"instance-disktype":     gcloud.DefaultDiskType,
			"instance-tags":         gcloud.HTTPServerTags,
			"instance-name":         fmt.Sprintf("%s-instance", basename),
			"region":                gcloud.DefaultRegion,
			"zone":                  gcloud.DefaultZone,
			"instance-machine-type": gcloud.DefaultInstanceType,
		}

		for i, v := range defaultConfig {
			q.stack.AddSetting(i, v)
		}
		q.removeModel("instance-webserver")
		q.removeModel("instance-image-project")
		q.removeModel("instance-machine-type-family")
		q.removeModel("instance-image")
		q.removeModel("instance-image-type")
		q.removeModel("instance-disksize")
		q.removeModel("instance-disktype")
		q.removeModel("instance-tags")
		q.removeModel("instance-name")
		q.removeModel("instance-machine-type")
		q.removeModel("region")
		q.removeModel("zone")
		q.removeModel("instance-image-family")

		return successMsg{}
	}
}