@@ -19,7 +19,7 @@ package katibconfig
1919import (
2020 "context"
2121 "encoding/json"
22- "errors "
22+ "fmt "
2323 "strings"
2424
2525 corev1 "k8s.io/api/core/v1"
@@ -44,6 +44,12 @@ type SuggestionConfig struct {
4444 PersistentVolumeLabels map [string ]string `json:"persistentVolumeLabels,omitempty"`
4545}
4646
47+ // EarlyStoppingConfig is the JSON early stopping structure in Katib config.
48+ type EarlyStoppingConfig struct {
49+ Image string `json:"image"`
50+ ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
51+ }
52+
4753// MetricsCollectorConfig is the JSON metrics collector structure in Katib config.
4854type MetricsCollectorConfig struct {
4955 Image string `json:"image"`
@@ -52,12 +58,6 @@ type MetricsCollectorConfig struct {
5258 WaitAllProcesses * bool `json:"waitAllProcesses,omitempty"`
5359}
5460
55- // EarlyStoppingConfig is the JSON early stopping structure in Katib config.
56- type EarlyStoppingConfig struct {
57- Image string `json:"image"`
58- ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
59- }
60-
6161// GetSuggestionConfigData gets the config data for the given suggestion algorithm name.
6262func GetSuggestionConfigData (algorithmName string , client client.Client ) (SuggestionConfig , error ) {
6363 configMap := & corev1.ConfigMap {}
@@ -73,7 +73,7 @@ func GetSuggestionConfigData(algorithmName string, client client.Client) (Sugges
7373 // Try to find suggestion data in config map
7474 config , ok := configMap .Data [consts .LabelSuggestionTag ]
7575 if ! ok {
76- return SuggestionConfig {}, errors . New ("failed to find suggestions config in ConfigMap: " + consts .KatibConfigMapName )
76+ return SuggestionConfig {}, fmt . Errorf ("failed to find suggestions config in ConfigMap: %s" , consts .KatibConfigMapName )
7777 }
7878
7979 // Parse suggestion data to map where key = algorithm name, value = SuggestionConfig
@@ -85,20 +85,17 @@ func GetSuggestionConfigData(algorithmName string, client client.Client) (Sugges
8585 // Try to find SuggestionConfig for the algorithm
8686 suggestionConfigData , ok = suggestionsConfig [algorithmName ]
8787 if ! ok {
88- return SuggestionConfig {}, errors . New ("failed to find suggestion config for algorithm: " + algorithmName + " in ConfigMap: " + consts .KatibConfigMapName )
88+ return SuggestionConfig {}, fmt . Errorf ("failed to find suggestion config for algorithm: %s in ConfigMap: %s" , algorithmName , consts .KatibConfigMapName )
8989 }
9090
9191 // Get image from config
9292 image := suggestionConfigData .Image
9393 if strings .TrimSpace (image ) == "" {
94- return SuggestionConfig {}, errors . New ("required value for image configuration of algorithm name: " + algorithmName )
94+ return SuggestionConfig {}, fmt . Errorf ("required value for image configuration of algorithm name: %s" , algorithmName )
9595 }
9696
97- // Get Image Pull Policy
98- imagePullPolicy := suggestionConfigData .ImagePullPolicy
99- if imagePullPolicy != corev1 .PullAlways && imagePullPolicy != corev1 .PullIfNotPresent && imagePullPolicy != corev1 .PullNever {
100- suggestionConfigData .ImagePullPolicy = consts .DefaultImagePullPolicy
101- }
97+ // Set Image Pull Policy
98+ suggestionConfigData .ImagePullPolicy = setImagePullPolicy (suggestionConfigData .ImagePullPolicy )
10299
103100 // Set resource requirements for suggestion
104101 suggestionConfigData .Resource = setResourceRequirements (suggestionConfigData .Resource )
@@ -119,9 +116,8 @@ func GetSuggestionConfigData(algorithmName string, client client.Client) (Sugges
119116 }
120117
121118 // Set default resources
122- defaultVolumeStorage , _ := resource .ParseQuantity (consts .DefaultSuggestionVolumeStorage )
123119 if len (pvcSpec .Resources .Requests ) == 0 {
124-
120+ defaultVolumeStorage , _ := resource . ParseQuantity ( consts . DefaultSuggestionVolumeStorage )
125121 pvcSpec .Resources .Requests = make (map [corev1.ResourceName ]resource.Quantity )
126122 pvcSpec .Resources .Requests [corev1 .ResourceStorage ] = defaultVolumeStorage
127123 }
@@ -157,7 +153,7 @@ func GetEarlyStoppingConfigData(algorithmName string, client client.Client) (Ear
157153 // Try to find early stopping data in config map.
158154 config , ok := configMap .Data [consts .LabelEarlyStoppingTag ]
159155 if ! ok {
160- return EarlyStoppingConfig {}, errors . New ("failed to find early stopping config in ConfigMap: " + consts .KatibConfigMapName )
156+ return EarlyStoppingConfig {}, fmt . Errorf ("failed to find early stopping config in ConfigMap: %s" , consts .KatibConfigMapName )
161157 }
162158
163159 // Parse early stopping data to map where key = algorithm name, value = EarlyStoppingConfig.
@@ -169,20 +165,17 @@ func GetEarlyStoppingConfigData(algorithmName string, client client.Client) (Ear
169165 // Try to find EarlyStoppingConfig for the algorithm.
170166 earlyStoppingConfigData , ok = earlyStoppingsConfig [algorithmName ]
171167 if ! ok {
172- return EarlyStoppingConfig {}, errors . New ("failed to find early stopping config for algorithm: " + algorithmName + " in ConfigMap: " + consts .KatibConfigMapName )
168+ return EarlyStoppingConfig {}, fmt . Errorf ("failed to find early stopping config for algorithm: %s in ConfigMap: %s" , algorithmName , consts .KatibConfigMapName )
173169 }
174170
175171 // Get image from config.
176172 image := earlyStoppingConfigData .Image
177173 if strings .TrimSpace (image ) == "" {
178- return EarlyStoppingConfig {}, errors . New ("required value for image configuration of algorithm name: " + algorithmName )
174+ return EarlyStoppingConfig {}, fmt . Errorf ("required value for image configuration of algorithm name: %s" , algorithmName )
179175 }
180176
181- // Get Image Pull Policy.
182- imagePullPolicy := earlyStoppingConfigData .ImagePullPolicy
183- if imagePullPolicy != corev1 .PullAlways && imagePullPolicy != corev1 .PullIfNotPresent && imagePullPolicy != corev1 .PullNever {
184- earlyStoppingConfigData .ImagePullPolicy = consts .DefaultImagePullPolicy
185- }
177+ // Set Image Pull Policy.
178+ earlyStoppingConfigData .ImagePullPolicy = setImagePullPolicy (earlyStoppingConfigData .ImagePullPolicy )
186179
187180 return earlyStoppingConfigData , nil
188181}
@@ -202,7 +195,7 @@ func GetMetricsCollectorConfigData(cKind common.CollectorKind, client client.Cli
202195 // Try to find metrics collector data in config map
203196 config , ok := configMap .Data [consts .LabelMetricsCollectorSidecar ]
204197 if ! ok {
205- return MetricsCollectorConfig {}, errors . New ("failed to find metrics collector config in ConfigMap: " + consts .KatibConfigMapName )
198+ return MetricsCollectorConfig {}, fmt . Errorf ("failed to find metrics collector config in ConfigMap: %s" , consts .KatibConfigMapName )
206199 }
207200 // Parse metrics collector data to map where key = collector kind, value = MetricsCollectorConfig
208201 kind := string (cKind )
@@ -214,27 +207,31 @@ func GetMetricsCollectorConfigData(cKind common.CollectorKind, client client.Cli
214207 // Try to find MetricsCollectorConfig for the collector kind
215208 metricsCollectorConfigData , ok = mcsConfig [kind ]
216209 if ! ok {
217- return MetricsCollectorConfig {}, errors . New ("failed to find metrics collector config for kind: " + kind + " in ConfigMap: " + consts .KatibConfigMapName )
210+ return MetricsCollectorConfig {}, fmt . Errorf ("failed to find metrics collector config for kind: %s in ConfigMap: %s" , kind , consts .KatibConfigMapName )
218211 }
219212
220213 // Get image from config
221214 image := metricsCollectorConfigData .Image
222215 if strings .TrimSpace (image ) == "" {
223- return MetricsCollectorConfig {}, errors . New ("required value for image configuration of metrics collector kind: " + kind )
216+ return MetricsCollectorConfig {}, fmt . Errorf ("required value for image configuration of metrics collector kind: %s" , kind )
224217 }
225218
226- // Get Image Pull Policy
227- imagePullPolicy := metricsCollectorConfigData .ImagePullPolicy
228- if imagePullPolicy != corev1 .PullAlways && imagePullPolicy != corev1 .PullIfNotPresent && imagePullPolicy != corev1 .PullNever {
229- metricsCollectorConfigData .ImagePullPolicy = consts .DefaultImagePullPolicy
230- }
219+ // Set Image Pull Policy
220+ metricsCollectorConfigData .ImagePullPolicy = setImagePullPolicy (metricsCollectorConfigData .ImagePullPolicy )
231221
232222 // Set resource requirements for metrics collector
233223 metricsCollectorConfigData .Resource = setResourceRequirements (metricsCollectorConfigData .Resource )
234224
235225 return metricsCollectorConfigData , nil
236226}
237227
228+ func setImagePullPolicy (imagePullPolicy corev1.PullPolicy ) corev1.PullPolicy {
229+ if imagePullPolicy != corev1 .PullAlways && imagePullPolicy != corev1 .PullIfNotPresent && imagePullPolicy != corev1 .PullNever {
230+ return consts .DefaultImagePullPolicy
231+ }
232+ return imagePullPolicy
233+ }
234+
238235func setResourceRequirements (configResource corev1.ResourceRequirements ) corev1.ResourceRequirements {
239236
240237 // If requests are empty create new map
@@ -298,7 +295,7 @@ func setResourceRequirements(configResource corev1.ResourceRequirements) corev1.
298295 }
299296
300297 // If user explicitly sets ephemeral-storage value to something negative, nuke it.
301- // This enables compability with the GKE nodepool autoscalers, which cannot scale
298+ // This enables compatibility with the GKE nodepool autoscalers, which cannot scale
302299 // pods which define ephemeral-storage resource constraints.
303300 if diskLimit .Sign () == - 1 && diskRequest .Sign () == - 1 {
304301 delete (configResource .Limits , corev1 .ResourceEphemeralStorage )
0 commit comments