func ComputeVacateRequest()

in pkg/api/platformapi/allocatorapi/vacate.go [639:724]


func ComputeVacateRequest(pr *models.MoveClustersDetails, resources, to []string, overrides PlanOverrides) *models.MoveClustersRequest {
	var req models.MoveClustersRequest
	for _, c := range pr.ElasticsearchClusters {
		if len(resources) > 0 && !slice.HasString(resources, *c.ClusterID) {
			continue
		}

		if overrides.SkipSnapshot != nil {
			c.CalculatedPlan.PlanConfiguration.SkipSnapshot = overrides.SkipSnapshot
		}

		if overrides.SkipDataMigration != nil {
			c.CalculatedPlan.PlanConfiguration.SkipDataMigration = overrides.SkipDataMigration
		}

		if overrides.OverrideFailsafe != nil {
			c.CalculatedPlan.PlanConfiguration.OverrideFailsafe = overrides.OverrideFailsafe
		}

		c.CalculatedPlan.PlanConfiguration.PreferredAllocators = to
		req.ElasticsearchClusters = append(req.ElasticsearchClusters,
			&models.MoveElasticsearchClusterConfiguration{
				ClusterIds:   []string{*c.ClusterID},
				PlanOverride: c.CalculatedPlan,
			},
		)
	}

	for _, c := range pr.KibanaClusters {
		if len(resources) > 0 && !slice.HasString(resources, *c.ClusterID) {
			continue
		}

		c.CalculatedPlan.PlanConfiguration.PreferredAllocators = to
		req.KibanaClusters = append(req.KibanaClusters,
			&models.MoveKibanaClusterConfiguration{
				ClusterIds:   []string{*c.ClusterID},
				PlanOverride: c.CalculatedPlan,
			},
		)
	}

	for _, c := range pr.ApmClusters {
		if len(resources) > 0 && !slice.HasString(resources, *c.ClusterID) {
			continue
		}

		c.CalculatedPlan.PlanConfiguration.PreferredAllocators = to
		req.ApmClusters = append(req.ApmClusters,
			&models.MoveApmClusterConfiguration{
				ClusterIds:   []string{*c.ClusterID},
				PlanOverride: c.CalculatedPlan,
			},
		)
	}

	for _, c := range pr.AppsearchClusters {
		if len(resources) > 0 && !slice.HasString(resources, *c.ClusterID) {
			continue
		}

		c.CalculatedPlan.PlanConfiguration.PreferredAllocators = to
		req.AppsearchClusters = append(req.AppsearchClusters,
			&models.MoveAppSearchConfiguration{
				ClusterIds:   []string{*c.ClusterID},
				PlanOverride: c.CalculatedPlan,
			},
		)
	}

	for _, c := range pr.EnterpriseSearchClusters {
		if len(resources) > 0 && !slice.HasString(resources, *c.ClusterID) {
			continue
		}

		c.CalculatedPlan.PlanConfiguration.PreferredAllocators = to
		req.EnterpriseSearchClusters = append(req.EnterpriseSearchClusters,
			&models.MoveEnterpriseSearchConfiguration{
				ClusterIds:   []string{*c.ClusterID},
				PlanOverride: c.CalculatedPlan,
			},
		)
	}

	return &req
}