Skip to content

Commit 52d52aa

Browse files
committed
fix(api): resolve all api voilation exceptions in katib api
Signed-off-by: truc0 <[email protected]>
1 parent eb8af4d commit 52d52aa

File tree

7 files changed

+408
-67
lines changed

7 files changed

+408
-67
lines changed
Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +0,0 @@
1-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/common/v1beta1,AlgorithmSpec,AlgorithmSettings
2-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/common/v1beta1,EarlyStoppingSpec,AlgorithmSettings
3-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/common/v1beta1,FilterSpec,MetricsFormat
4-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/common/v1beta1,ObjectiveSpec,AdditionalMetricNames
5-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/common/v1beta1,ObjectiveSpec,MetricStrategies
6-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/common/v1beta1,Observation,Metrics
7-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentSpec,Parameters
8-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentStatus,Conditions
9-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentStatus,EarlyStoppedTrialList
10-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentStatus,FailedTrialList
11-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentStatus,KilledTrialList
12-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentStatus,MetricsUnavailableTrialList
13-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentStatus,PendingTrialList
14-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentStatus,RunningTrialList
15-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,ExperimentStatus,SucceededTrialList
16-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,FeasibleSpace,List
17-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,GraphConfig,InputSizes
18-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,GraphConfig,OutputSizes
19-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,NasConfig,Operations
20-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,Operation,Parameters
21-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,OptimalTrial,ParameterAssignments
22-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/experiments/v1beta1,TrialTemplate,TrialParameters
23-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/suggestions/v1beta1,SuggestionStatus,AlgorithmSettings
24-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/suggestions/v1beta1,SuggestionStatus,Conditions
25-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/suggestions/v1beta1,SuggestionStatus,Suggestions
26-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/suggestions/v1beta1,TrialAssignment,EarlyStoppingRules
27-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/suggestions/v1beta1,TrialAssignment,ParameterAssignments
28-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/trials/v1beta1,TrialSpec,EarlyStoppingRules
29-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/trials/v1beta1,TrialSpec,ParameterAssignments
30-
API rule violation: list_type_missing,github.com/kubeflow/katib/pkg/apis/controller/trials/v1beta1,TrialStatus,Conditions

pkg/apis/controller/common/v1beta1/common_types.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ type AlgorithmSpec struct {
2727
AlgorithmName string `json:"algorithmName,omitempty"`
2828

2929
// Key-value pairs representing settings for suggestion algorithms.
30+
// +listType=map
31+
// +listMapKey=Name
32+
// +optional
3033
AlgorithmSettings []AlgorithmSetting `json:"algorithmSettings,omitempty"`
3134
}
3235

@@ -46,6 +49,9 @@ type EarlyStoppingSpec struct {
4649
AlgorithmName string `json:"algorithmName,omitempty"`
4750

4851
// Key-value pairs representing settings for early stopping algorithm.
52+
// +listType=map
53+
// +listMapKey=Name
54+
// +optional
4955
AlgorithmSettings []EarlyStoppingSetting `json:"algorithmSettings,omitempty"`
5056
}
5157

@@ -105,10 +111,15 @@ type ObjectiveSpec struct {
105111
// AdditionalMetricNames represents metrics that should be collected from Trials.
106112
// This can be empty if we only care about the objective metric.
107113
// Note: If we adopt a push instead of pull mechanism, this can be omitted completely.
114+
// +listType=set
115+
// +optional
108116
AdditionalMetricNames []string `json:"additionalMetricNames,omitempty"`
109117

110118
// MetricStrategies defines various rules (min, max or latest) to extract metrics values.
111119
// This field is allowed to missing, experiment defaulter (webhook) will fill it.
120+
// +listType=map
121+
// +listMapKey=Name
122+
// +optional
112123
MetricStrategies []MetricStrategy `json:"metricStrategies,omitempty"`
113124
}
114125

@@ -150,6 +161,9 @@ type Metric struct {
150161
// +k8s:deepcopy-gen=true
151162
type Observation struct {
152163
// Key-value pairs for metric names and values
164+
// +listType=map
165+
// +listMapKey=Name
166+
// +optional
153167
Metrics []Metric `json:"metrics,omitempty"`
154168
}
155169

@@ -177,6 +191,8 @@ type SourceSpec struct {
177191
type FilterSpec struct {
178192
// When the metrics output follows format as this field specified, metricsCollector
179193
// collects it and reports to metrics server, it can be "<metric_name>: <float>" or else
194+
// +listType=set
195+
// +optional
180196
MetricsFormat []string `json:"metricsFormat,omitempty"`
181197
}
182198

pkg/apis/controller/experiments/v1beta1/experiment_types.go

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ import (
2626
// ExperimentSpec is the specification of an Experiment.
2727
type ExperimentSpec struct {
2828
// List of hyperparameter configurations.
29+
// +listType=map
30+
// +listMapKey=Name
31+
// +optional
2932
Parameters []ParameterSpec `json:"parameters,omitempty"`
3033

3134
// Describes the objective of the experiment.
@@ -78,30 +81,47 @@ type ExperimentStatus struct {
7881
LastReconcileTime *metav1.Time `json:"lastReconcileTime,omitempty"`
7982

8083
// List of observed runtime conditions for this Experiment.
84+
// +listType=map
85+
// +listMapKey=Type
86+
// +optional
8187
Conditions []ExperimentCondition `json:"conditions,omitempty"`
8288

8389
// Current optimal trial parameters and observations.
8490
CurrentOptimalTrial OptimalTrial `json:"currentOptimalTrial,omitempty"`
8591

8692
// List of trial names which are running.
93+
// +listType=set
94+
// +optional
8795
RunningTrialList []string `json:"runningTrialList,omitempty"`
8896

8997
// List of trial names which are pending.
98+
// +listType=set
99+
// +optional
90100
PendingTrialList []string `json:"pendingTrialList,omitempty"`
91101

92102
// List of trial names which have already failed.
103+
// +listType=set
104+
// +optional
93105
FailedTrialList []string `json:"failedTrialList,omitempty"`
94106

95107
// List of trial names which have already succeeded.
108+
// +listType=set
109+
// +optional
96110
SucceededTrialList []string `json:"succeededTrialList,omitempty"`
97111

98112
// List of trial names which have been killed.
113+
// +listType=set
114+
// +optional
99115
KilledTrialList []string `json:"killedTrialList,omitempty"`
100116

101117
// List of trial names which have been early stopped.
118+
// +listType=set
119+
// +optional
102120
EarlyStoppedTrialList []string `json:"earlyStoppedTrialList,omitempty"`
103121

104122
// List of trial names which have been metrics unavailable
123+
// +listType=set
124+
// +optional
105125
MetricsUnavailableTrialList []string `json:"metricsUnavailableTrialList,omitempty"`
106126

107127
// Trials is the total number of trials owned by the experiment.
@@ -134,6 +154,9 @@ type OptimalTrial struct {
134154
// BestTrialName is the name of the best trial.
135155
BestTrialName string `json:"bestTrialName,omitempty"`
136156
// Key-value pairs for hyperparameters and assignment values.
157+
// +listType=map
158+
// +listMapKey=Name
159+
// +optional
137160
ParameterAssignments []common.ParameterAssignment `json:"parameterAssignments,omitempty"`
138161

139162
// Observation for this trial
@@ -207,8 +230,11 @@ const (
207230
)
208231

209232
type FeasibleSpace struct {
210-
Max string `json:"max,omitempty"`
211-
Min string `json:"min,omitempty"`
233+
Max string `json:"max,omitempty"`
234+
Min string `json:"min,omitempty"`
235+
236+
// +listType=set
237+
// +optional
212238
List []string `json:"list,omitempty"`
213239
Step string `json:"step,omitempty"`
214240
Distribution Distribution `json:"distribution,omitempty"`
@@ -233,6 +259,9 @@ type TrialTemplate struct {
233259
TrialSource `json:",inline"`
234260

235261
// List of parameters that are used in trial template
262+
// +listType=map
263+
// +listMapKey=Name
264+
// +optional
236265
TrialParameters []TrialParameterSpec `json:"trialParameters,omitempty"`
237266

238267
// Labels that determines if pod needs to be injected by Katib sidecar container.
@@ -314,20 +343,34 @@ type ExperimentList struct {
314343
// NasConfig contains config for NAS job
315344
type NasConfig struct {
316345
GraphConfig GraphConfig `json:"graphConfig,omitempty"`
317-
Operations []Operation `json:"operations,omitempty"`
346+
347+
// +listType=map
348+
// +listMapKey=OperationType
349+
// +optional
350+
Operations []Operation `json:"operations,omitempty"`
318351
}
319352

320353
// GraphConfig contains a config of DAG
321354
type GraphConfig struct {
322-
NumLayers *int32 `json:"numLayers,omitempty"`
323-
InputSizes []int32 `json:"inputSizes,omitempty"`
355+
NumLayers *int32 `json:"numLayers,omitempty"`
356+
357+
// +listType=set
358+
// +optional
359+
InputSizes []int32 `json:"inputSizes,omitempty"`
360+
361+
// +listType=set
362+
// +optional
324363
OutputSizes []int32 `json:"outputSizes,omitempty"`
325364
}
326365

327366
// Operation contains type of operation in DAG
328367
type Operation struct {
329-
OperationType string `json:"operationType,omitempty"`
330-
Parameters []ParameterSpec `json:"parameters,omitempty"`
368+
OperationType string `json:"operationType,omitempty"`
369+
370+
// +listType=map
371+
// +listMapKey=Name
372+
// +optional
373+
Parameters []ParameterSpec `json:"parameters,omitempty"`
331374
}
332375

333376
func init() {

pkg/apis/controller/suggestions/v1beta1/suggestion_types.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,18 @@ type SuggestionStatus struct {
4646
// AlgorithmSettings defines HP or NAS algorithm settings which suggestion gRPC service returns.
4747
// These settings overwrites Experiment's settings before the gRPC request.
4848
// It can be empty if settings haven't been changed.
49+
// +listType=map
50+
// +listMapKey=Name
51+
// +optional
4952
AlgorithmSettings []common.AlgorithmSetting `json:"algorithmSettings,omitempty"`
5053

5154
// Number of suggestion results
5255
SuggestionCount int32 `json:"suggestionCount,omitempty"`
5356

5457
// Suggestion results
58+
// +listType=map
59+
// +listMapKey=Name
60+
// +optional
5561
Suggestions []TrialAssignment `json:"suggestions,omitempty"`
5662

5763
// Represents time when the Suggestion was acknowledged by the Suggestion controller.
@@ -70,19 +76,28 @@ type SuggestionStatus struct {
7076
LastReconcileTime *metav1.Time `json:"lastReconcileTime,omitempty"`
7177

7278
// List of observed runtime conditions for this Suggestion.
79+
// +listType=map
80+
// +listMapKey=Type
81+
// +optional
7382
Conditions []SuggestionCondition `json:"conditions,omitempty"`
7483
}
7584

7685
// TrialAssignment is the assignment for one trial.
7786
type TrialAssignment struct {
7887
// Suggestion results with Trial parameters
88+
// +listType=map
89+
// +listMapKey=Name
90+
// +optional
7991
ParameterAssignments []common.ParameterAssignment `json:"parameterAssignments,omitempty"`
8092

8193
// Name of the suggestion
8294
Name string `json:"name,omitempty"`
8395

8496
// Rules for early stopping techniques
8597
// Contains rule name, value and comparison type
98+
// +listType=map
99+
// +listMapKey=Name
100+
// +optional
86101
EarlyStoppingRules []common.EarlyStoppingRule `json:"earlyStoppingRules,omitempty"`
87102

88103
// Suggestion label metadata to attach to Trial job

pkg/apis/controller/trials/v1beta1/trial_types.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,16 @@ type TrialSpec struct {
2929
Objective *common.ObjectiveSpec `json:"objective,omitempty"`
3030

3131
// Key-value pairs for hyperparameters and assignment values.
32+
// +listType=map
33+
// +listMapKey=Name
34+
// +optional
3235
ParameterAssignments []common.ParameterAssignment `json:"parameterAssignments,omitempty"`
3336

3437
// Rules for early stopping techniques.
3538
// Each rule should be met to early stop Trial.
39+
// +listType=map
40+
// +listMapKey=Name
41+
// +optional
3642
EarlyStoppingRules []common.EarlyStoppingRule `json:"earlyStoppingRules,omitempty"`
3743

3844
// Raw text for the trial run spec. This can be any generic Kubernetes
@@ -84,6 +90,9 @@ type TrialStatus struct {
8490
LastReconcileTime *metav1.Time `json:"lastReconcileTime,omitempty"`
8591

8692
// List of observed runtime conditions for this Trial.
93+
// +listType=map
94+
// +listMapKey=Type
95+
// +optional
8796
Conditions []TrialCondition `json:"conditions,omitempty"`
8897

8998
// Results of the Trial - objectives and other metrics values.

0 commit comments

Comments
 (0)