@@ -101,7 +101,8 @@ func TestReadConfig(t *testing.T) {
101101 [BlockStorage]
102102 bs-version = auto
103103 trust-device-path = yes
104-
104+ [Metadata]
105+ search-order = configDrive, metadataService
105106 ` ))
106107 if err != nil {
107108 t .Fatalf ("Should succeed when a valid config is provided: %s" , err )
@@ -128,6 +129,9 @@ func TestReadConfig(t *testing.T) {
128129 if cfg .BlockStorage .BSVersion != "auto" {
129130 t .Errorf ("incorrect bs.bs-version: %v" , cfg .BlockStorage .BSVersion )
130131 }
132+ if cfg .Metadata .SearchOrder != "configDrive, metadataService" {
133+ t .Errorf ("incorrect md.search-order: %v" , cfg .Metadata .SearchOrder )
134+ }
131135}
132136
133137func TestToAuthOptions (t * testing.T ) {
@@ -169,6 +173,9 @@ func TestCheckOpenStackOpts(t *testing.T) {
169173 ManageSecurityGroups : true ,
170174 NodeSecurityGroupID : "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144" ,
171175 },
176+ metadataOpts : MetadataOpts {
177+ SearchOrder : configDriveID ,
178+ },
172179 },
173180 expectedError : nil ,
174181 },
@@ -187,6 +194,9 @@ func TestCheckOpenStackOpts(t *testing.T) {
187194 ManageSecurityGroups : true ,
188195 NodeSecurityGroupID : "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144" ,
189196 },
197+ metadataOpts : MetadataOpts {
198+ SearchOrder : configDriveID ,
199+ },
190200 },
191201 expectedError : nil ,
192202 },
@@ -203,6 +213,9 @@ func TestCheckOpenStackOpts(t *testing.T) {
203213 ManageSecurityGroups : true ,
204214 NodeSecurityGroupID : "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144" ,
205215 },
216+ metadataOpts : MetadataOpts {
217+ SearchOrder : configDriveID ,
218+ },
206219 },
207220 expectedError : fmt .Errorf ("monitor-delay not set in cloud provider config" ),
208221 },
@@ -221,9 +234,43 @@ func TestCheckOpenStackOpts(t *testing.T) {
221234 MonitorMaxRetries : uint (3 ),
222235 ManageSecurityGroups : true ,
223236 },
237+ metadataOpts : MetadataOpts {
238+ SearchOrder : configDriveID ,
239+ },
224240 },
225241 expectedError : fmt .Errorf ("node-security-group not set in cloud provider config" ),
226242 },
243+ {
244+ name : "test5" ,
245+ openstackOpts : & OpenStack {
246+ provider : nil ,
247+ metadataOpts : MetadataOpts {
248+ SearchOrder : "" ,
249+ },
250+ },
251+ expectedError : fmt .Errorf ("Invalid value in section [Metadata] with key `search-order`. Value cannot be empty" ),
252+ },
253+ {
254+ name : "test6" ,
255+ openstackOpts : & OpenStack {
256+ provider : nil ,
257+ metadataOpts : MetadataOpts {
258+ SearchOrder : "value1,value2,value3" ,
259+ },
260+ },
261+ expectedError : fmt .Errorf ("Invalid value in section [Metadata] with key `search-order`. Value cannot contain more than 2 elements" ),
262+ },
263+ {
264+ name : "test7" ,
265+ openstackOpts : & OpenStack {
266+ provider : nil ,
267+ metadataOpts : MetadataOpts {
268+ SearchOrder : "value1" ,
269+ },
270+ },
271+ expectedError : fmt .Errorf ("Invalid element '%s' found in section [Metadata] with key `search-order`." +
272+ "Supported elements include '%s' and '%s'" , "value1" , configDriveID , metadataID ),
273+ },
227274 }
228275
229276 for _ , testcase := range tests {
@@ -374,6 +421,8 @@ func configFromEnv() (cfg Config, ok bool) {
374421 (cfg .Global .TenantId != "" || cfg .Global .TenantName != "" ||
375422 cfg .Global .DomainId != "" || cfg .Global .DomainName != "" ))
376423
424+ cfg .Metadata .SearchOrder = fmt .Sprintf ("%s,%s" , configDriveID , metadataID )
425+
377426 return
378427}
379428
0 commit comments