func CheckVacateFailures()

in pkg/api/platformapi/allocatorapi/vacate.go [473:591]


func CheckVacateFailures(failures *models.MoveClustersDetails, filter []string, allocatorID string) error {
	if failures == nil {
		return nil
	}

	var merr = multierror.NewPrefixed("vacate error")
	const errMsgFmt = "%s (%s)"
	const errCtx = "failed vacating"
	for _, failure := range failures.ElasticsearchClusters {
		if len(filter) > 0 && !slice.HasString(filter, *failure.ClusterID) {
			continue
		}

		var ferr error
		if len(failure.Errors) > 0 {
			var err = failure.Errors[0]
			ferr = fmt.Errorf("%s (%s)", *err.Message, *err.Code)
		}
		if !strings.Contains(ferr.Error(), PlanPendingMessage) {
			merr = merr.Append(VacateError{
				AllocatorID: allocatorID,
				ResourceID:  *failure.ClusterID,
				Kind:        util.Elasticsearch,
				Ctx:         errCtx,
				Err:         ferr,
			})
		}
	}

	for _, failure := range failures.KibanaClusters {
		if len(filter) > 0 && !slice.HasString(filter, *failure.ClusterID) {
			continue
		}

		var ferr error
		if len(failure.Errors) > 0 {
			var err = failure.Errors[0]
			ferr = fmt.Errorf("%s (%s)", *err.Message, *err.Code)
		}

		if !strings.Contains(ferr.Error(), PlanPendingMessage) {
			merr = merr.Append(VacateError{
				AllocatorID: allocatorID,
				ResourceID:  *failure.ClusterID,
				Kind:        util.Kibana,
				Ctx:         errCtx,
				Err:         ferr,
			})
		}
	}

	for _, failure := range failures.ApmClusters {
		if len(filter) > 0 && !slice.HasString(filter, *failure.ClusterID) {
			continue
		}

		var ferr error
		if len(failure.Errors) > 0 {
			var err = failure.Errors[0]
			ferr = fmt.Errorf("%s (%s)", *err.Message, *err.Code)
		}

		if !strings.Contains(ferr.Error(), PlanPendingMessage) {
			merr = merr.Append(VacateError{
				AllocatorID: allocatorID,
				ResourceID:  *failure.ClusterID,
				Kind:        util.Apm,
				Ctx:         errCtx,
				Err:         ferr,
			})
		}
	}

	for _, failure := range failures.AppsearchClusters {
		if len(filter) > 0 && !slice.HasString(filter, *failure.ClusterID) {
			continue
		}

		var ferr error
		if len(failure.Errors) > 0 {
			var err = failure.Errors[0]
			ferr = fmt.Errorf("%s (%s)", *err.Message, *err.Code)
		}

		if !strings.Contains(ferr.Error(), PlanPendingMessage) {
			merr = merr.Append(VacateError{
				AllocatorID: allocatorID,
				ResourceID:  *failure.ClusterID,
				Kind:        util.Appsearch,
				Ctx:         errCtx,
				Err:         ferr,
			})
		}
	}

	for _, failure := range failures.EnterpriseSearchClusters {
		if len(filter) > 0 && !slice.HasString(filter, *failure.ClusterID) {
			continue
		}

		var ferr error
		if len(failure.Errors) > 0 {
			var err = failure.Errors[0]
			ferr = fmt.Errorf("%s (%s)", *err.Message, *err.Code)
		}

		if !strings.Contains(ferr.Error(), PlanPendingMessage) {
			merr = merr.Append(VacateError{
				AllocatorID: allocatorID,
				ResourceID:  *failure.ClusterID,
				Kind:        util.EnterpriseSearch,
				Ctx:         errCtx,
				Err:         ferr,
			})
		}
	}

	return merr.ErrorOrNil()
}