func()

in pkg/api/platformapi/allocatorapi/vacate_params.go [113:152]


func (params VacateParams) Validate() error {
	var merr = multierror.NewPrefixed("invalid allocator vacate params")
	if params.API == nil {
		merr = merr.Append(errAPIMustNotBeNil)
	}

	if len(params.Allocators) == 0 {
		merr = merr.Append(errMustSpecifyAtLeast1Allocator)
	}

	if len(params.ClusterFilter) > 0 && len(params.KindFilter) > 0 {
		merr = merr.Append(errCannotFilterByIDAndKind)
	}

	if params.Concurrency == 0 {
		merr = merr.Append(errConcurrencyCannotBeZero)
	}

	for i := range params.ClusterFilter {
		if len(params.ClusterFilter[i]) != 32 {
			merr = merr.Append(fmt.Errorf(
				"cluster filter: id \"%s\" is invalid, must be 32 characters long", params.ClusterFilter[i],
			))
		}
	}

	if params.Output == nil {
		merr = merr.Append(errOutputDeviceCannotBeNil)
	}

	if params.AllocatorDown != nil && len(params.Allocators) > 1 {
		merr = merr.Append(errCannotOverrideAllocatorDown)
	}

	if err := ec.RequireRegionSet(params.Region); err != nil {
		merr = merr.Append(err)
	}

	return merr.ErrorOrNil()
}