|
40 | 40 | configMapLoggerKey = "configMapName" |
41 | 41 | preflightSecretLoggerKey = "preflightSecretName" |
42 | 42 | logLevelLoggerKey = "logLevel" |
| 43 | + namespaceLoggerKey = "ns" |
| 44 | + cnfCertSuiteRunLoggerKey = "cnfCertificationSuiteRun" |
43 | 45 | ) |
44 | 46 |
|
45 | 47 | func (r *CnfCertificationSuiteRun) SetupWebhookWithManager(mgr ctrl.Manager) error { |
@@ -97,25 +99,60 @@ func (r *CnfCertificationSuiteRun) ValidateCreate() error { |
97 | 99 |
|
98 | 100 | func (r *CnfCertificationSuiteRun) validateConfigMap() error { |
99 | 101 | configMap := &v1.ConfigMap{} |
| 102 | + |
| 103 | + if r.Spec.ConfigMapName == "" { |
| 104 | + err := fmt.Errorf("spec.configMapName must not be an empty string") |
| 105 | + logger.Error(err, "CnfCertificationSuiteRun's config map name is invalid", |
| 106 | + configMapLoggerKey, r.Spec.ConfigMapName, namespaceLoggerKey, r.Namespace) |
| 107 | + return err |
| 108 | + } |
| 109 | + |
| 110 | + // Return an error if config map is not found by name and ns, or field is empty |
100 | 111 | err := c.Get(context.TODO(), types.NamespacedName{Name: r.Spec.ConfigMapName, Namespace: r.Namespace}, configMap) |
101 | 112 | if err != nil { |
102 | 113 | logger.Error(err, "CnfCertificationSuiteRun's config map name field is invalid", |
103 | | - configMapLoggerKey, r.Spec.ConfigMapName) |
| 114 | + configMapLoggerKey, r.Spec.ConfigMapName, namespaceLoggerKey, r.Namespace) |
104 | 115 | return err |
105 | 116 | } |
106 | | - logger.Info("CnfCertificationSuiteRun's config map name field is valid", configMapLoggerKey, configMap.Name) |
107 | | - return err |
| 117 | + |
| 118 | + // Verify required field exists and that it's not empty |
| 119 | + if value, exists := configMap.Data["tnf_config.yaml"]; !exists || value == "" { |
| 120 | + err := fmt.Errorf("config map's 'tnf_config.yaml' field must be set with a non-empty and valid configuration yaml for the CNF Certification Suite") |
| 121 | + logger.Error(err, "CnfCertificationSuiteRun's config map is invalid", |
| 122 | + configMapLoggerKey, r.Spec.ConfigMapName, namespaceLoggerKey, r.Namespace) |
| 123 | + return err |
| 124 | + } |
| 125 | + |
| 126 | + logger.Info("CnfCertificationSuiteRun's config map field is valid", configMapLoggerKey, configMap.Name, namespaceLoggerKey, r.Namespace) |
| 127 | + return nil |
108 | 128 | } |
109 | 129 |
|
110 | 130 | func (r *CnfCertificationSuiteRun) validatePreflightSecret() error { |
111 | 131 | preflightSecret := &v1.Secret{} |
112 | | - err := c.Get(context.TODO(), types.NamespacedName{Name: r.Spec.PreflightSecretName, Namespace: r.Namespace}, preflightSecret) |
| 132 | + |
| 133 | + // Nil Preflight Secret is valid |
| 134 | + if r.Spec.PreflightSecretName == nil { |
| 135 | + logger.Info("Warning: No preflight secret was set.", cnfCertSuiteRunLoggerKey, r.Name, namespaceLoggerKey, r.Namespace) |
| 136 | + return nil |
| 137 | + } |
| 138 | + |
| 139 | + // Return an error if preflight secret is not found by name and ns, or field is empty |
| 140 | + err := c.Get(context.TODO(), types.NamespacedName{Name: *r.Spec.PreflightSecretName, Namespace: r.Namespace}, preflightSecret) |
113 | 141 | if err != nil { |
114 | 142 | logger.Error(err, "CnfCertificationSuiteRun's preflight secret name field is invalid", |
115 | | - preflightSecretLoggerKey, r.Spec.PreflightSecretName) |
| 143 | + preflightSecretLoggerKey, r.Spec.PreflightSecretName, namespaceLoggerKey, r.Namespace) |
116 | 144 | return err |
117 | 145 | } |
118 | | - logger.Info("CnfCertificationSuiteRun's preflight secret name field is valid", preflightSecretLoggerKey, preflightSecret.Name) |
| 146 | + |
| 147 | + // Verify required field exists and that it's not empty |
| 148 | + if value, exists := preflightSecret.Data["preflight_dockerconfig.json"]; !exists || value == nil { |
| 149 | + err := fmt.Errorf("preflight secret's 'preflight_dockerconfig.json' field must be set with a valid docker config json content") |
| 150 | + logger.Error(err, "CnfCertificationSuiteRun's preflight secret is invalid", |
| 151 | + configMapLoggerKey, r.Spec.ConfigMapName, namespaceLoggerKey, r.Namespace) |
| 152 | + return err |
| 153 | + } |
| 154 | + |
| 155 | + logger.Info("CnfCertificationSuiteRun's preflight secret field is valid", preflightSecretLoggerKey, preflightSecret.Name, namespaceLoggerKey, r.Namespace) |
119 | 156 | return nil |
120 | 157 | } |
121 | 158 |
|
|
0 commit comments