Skip to content

[feature] KEP-11385: Add validation for Literal runtime parameters in API Server and Driver #12602

@mprahl

Description

@mprahl

Feature Area

/area backend

Part of KEP-11385.

Acceptance Criteria

The ComponentInputsSpec_ParameterSpec struct should be updated with a literals field:

type ComponentInputsSpec_ParameterSpec struct {
    state protoimpl.MessageState `protogen:"open.v1"`
    Type PrimitiveType_PrimitiveTypeEnum `protobuf:"varint,1,opt,name=type,proto3,enum=ml_pipelines.PrimitiveType_PrimitiveTypeEnum" json:"type,omitempty"`
    ParameterType ParameterType_ParameterTypeEnum `protobuf:"varint,2,opt,name=parameter_type,json=parameterType,proto3,enum=ml_pipelines.ParameterType_ParameterTypeEnum" json:"parameter_type,omitempty"`
    DefaultValue *structpb.Value `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"`
    IsOptional bool `protobuf:"varint,4,opt,name=is_optional,json=isOptional,proto3" json:"is_optional,omitempty"`
    Description   string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
    Literals []*structpb.Value `protobuf:"bytes,6,rep,name=literals,proto3" json:"literals,omitempty"`
    unknownFields protoimpl.UnknownFields
    sizeCache     protoimpl.SizeCache
}

Acceptance Criteria

  • ComponentInputsSpec_ParameterSpec proto contains a literals field.
  • Pipeline Run Server checks each runtime parameter’s ComponentInputsSpec_ParameterSpec literals field for a non-empty value. Runtime parameter is validated against this field if non-empty. (Hint: v2_template.validatePipelineJobInputs())
  • Extend backend/src/v2/driver.resolveInputParameter() to validate resolved upstream inputs against Literal parameters.
  • Validate these changes by adding the valid and invalid cases outlined in the KEP to the workflow compiler unit test cases. Only include behavior outlined in the Workflow Compiler column.

Metadata

Metadata

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions