Merge pull request #117202 from pohly/scheduler-perf-zero-count

scheduler perf: allow creating 0 items
This commit is contained in:
Kubernetes Prow Robot 2023-04-11 21:18:20 -07:00 committed by GitHub
commit aa026a6b30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -265,6 +265,14 @@ func isValidParameterizable(val string) bool {
return strings.HasPrefix(val, "$") return strings.HasPrefix(val, "$")
} }
func isValidCount(allowParameterization bool, count int, countParam string) bool {
if !allowParameterization || countParam == "" {
// Ignore parameter. The value itself must be okay.
return count >= 0
}
return isValidParameterizable(countParam)
}
// createNodesOp defines an op where nodes are created as a part of a workload. // createNodesOp defines an op where nodes are created as a part of a workload.
type createNodesOp struct { type createNodesOp struct {
// Must be "createNodes". // Must be "createNodes".
@ -288,9 +296,7 @@ func (cno *createNodesOp) isValid(allowParameterization bool) error {
if cno.Opcode != createNodesOpcode { if cno.Opcode != createNodesOpcode {
return fmt.Errorf("invalid opcode %q", cno.Opcode) return fmt.Errorf("invalid opcode %q", cno.Opcode)
} }
ok := cno.Count > 0 || if !isValidCount(allowParameterization, cno.Count, cno.CountParam) {
(cno.CountParam != "" && allowParameterization && isValidParameterizable(cno.CountParam))
if !ok {
return fmt.Errorf("invalid Count=%d / CountParam=%q", cno.Count, cno.CountParam) return fmt.Errorf("invalid Count=%d / CountParam=%q", cno.Count, cno.CountParam)
} }
return nil return nil
@ -331,9 +337,7 @@ func (cmo *createNamespacesOp) isValid(allowParameterization bool) error {
if cmo.Opcode != createNamespacesOpcode { if cmo.Opcode != createNamespacesOpcode {
return fmt.Errorf("invalid opcode %q", cmo.Opcode) return fmt.Errorf("invalid opcode %q", cmo.Opcode)
} }
ok := cmo.Count > 0 || if !isValidCount(allowParameterization, cmo.Count, cmo.CountParam) {
(cmo.CountParam != "" && allowParameterization && isValidParameterizable(cmo.CountParam))
if !ok {
return fmt.Errorf("invalid Count=%d / CountParam=%q", cmo.Count, cmo.CountParam) return fmt.Errorf("invalid Count=%d / CountParam=%q", cmo.Count, cmo.CountParam)
} }
return nil return nil
@ -390,9 +394,7 @@ func (cpo *createPodsOp) isValid(allowParameterization bool) error {
if cpo.Opcode != createPodsOpcode { if cpo.Opcode != createPodsOpcode {
return fmt.Errorf("invalid opcode %q; expected %q", cpo.Opcode, createPodsOpcode) return fmt.Errorf("invalid opcode %q; expected %q", cpo.Opcode, createPodsOpcode)
} }
ok := cpo.Count > 0 || if !isValidCount(allowParameterization, cpo.Count, cpo.CountParam) {
(cpo.CountParam != "" && allowParameterization && isValidParameterizable(cpo.CountParam))
if !ok {
return fmt.Errorf("invalid Count=%d / CountParam=%q", cpo.Count, cpo.CountParam) return fmt.Errorf("invalid Count=%d / CountParam=%q", cpo.Count, cpo.CountParam)
} }
if cpo.CollectMetrics && cpo.SkipWaitToCompletion { if cpo.CollectMetrics && cpo.SkipWaitToCompletion {
@ -438,9 +440,7 @@ func (cpso *createPodSetsOp) isValid(allowParameterization bool) error {
if cpso.Opcode != createPodSetsOpcode { if cpso.Opcode != createPodSetsOpcode {
return fmt.Errorf("invalid opcode %q; expected %q", cpso.Opcode, createPodSetsOpcode) return fmt.Errorf("invalid opcode %q; expected %q", cpso.Opcode, createPodSetsOpcode)
} }
ok := cpso.Count > 0 || if !isValidCount(allowParameterization, cpso.Count, cpso.CountParam) {
(cpso.CountParam != "" && allowParameterization && isValidParameterizable(cpso.CountParam))
if !ok {
return fmt.Errorf("invalid Count=%d / CountParam=%q", cpso.Count, cpso.CountParam) return fmt.Errorf("invalid Count=%d / CountParam=%q", cpso.Count, cpso.CountParam)
} }
return cpso.CreatePodsOp.isValid(allowParameterization) return cpso.CreatePodsOp.isValid(allowParameterization)