Metadata order search tests
This commit is contained in:
		
				
					committed by
					
						
						Richard Gonzalez
					
				
			
			
				
	
			
			
			
						parent
						
							870195ad59
						
					
				
				
					commit
					0e81cac328
				
			@@ -156,6 +156,7 @@ func getMetadata(order string) (*Metadata, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		elements := strings.Split(order, ",")
 | 
							elements := strings.Split(order, ",")
 | 
				
			||||||
		for _, id := range elements {
 | 
							for _, id := range elements {
 | 
				
			||||||
 | 
								id = strings.TrimSpace(id)
 | 
				
			||||||
			switch id {
 | 
								switch id {
 | 
				
			||||||
			case configDriveID:
 | 
								case configDriveID:
 | 
				
			||||||
				md, err = getMetadataFromConfigDrive()
 | 
									md, err = getMetadataFromConfigDrive()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -253,6 +253,10 @@ func checkOpenStackOpts(openstackOpts *OpenStack) error {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := checkMetadataSearchOrder(openstackOpts.metadataOpts.SearchOrder); err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -282,8 +286,6 @@ func newOpenStack(cfg Config) (*OpenStack, error) {
 | 
				
			|||||||
		err = openstack.Authenticate(provider, cfg.toAuthOptions())
 | 
							err = openstack.Authenticate(provider, cfg.toAuthOptions())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = validateMetadataSearchOrder(cfg.Metadata.SearchOrder)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -753,7 +755,7 @@ func (os *OpenStack) volumeService(forceVersion string) (volumeService, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func validateMetadataSearchOrder(order string) error {
 | 
					func checkMetadataSearchOrder(order string) error {
 | 
				
			||||||
	if order == "" {
 | 
						if order == "" {
 | 
				
			||||||
		return errors.New("Invalid value in section [Metadata] with key `search-order`. Value cannot be empty")
 | 
							return errors.New("Invalid value in section [Metadata] with key `search-order`. Value cannot be empty")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -763,14 +765,15 @@ func validateMetadataSearchOrder(order string) error {
 | 
				
			|||||||
		return errors.New("Invalid value in section [Metadata] with key `search-order`. Value cannot contain more than 2 elements")
 | 
							return errors.New("Invalid value in section [Metadata] with key `search-order`. Value cannot contain more than 2 elements")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, o := range elements {
 | 
						for _, id := range elements {
 | 
				
			||||||
		switch o {
 | 
							id = strings.TrimSpace(id)
 | 
				
			||||||
 | 
							switch id {
 | 
				
			||||||
		case configDriveID:
 | 
							case configDriveID:
 | 
				
			||||||
		case metadataID:
 | 
							case metadataID:
 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
			errTxt := "Invalid element '%s' found in section [Metadata] with key `search-order`." +
 | 
								errTxt := "Invalid element '%s' found in section [Metadata] with key `search-order`." +
 | 
				
			||||||
				"Supported elements include '%s' and '%s'"
 | 
									"Supported elements include '%s' and '%s'"
 | 
				
			||||||
			return fmt.Errorf(errTxt, o, configDriveID, metadataID)
 | 
								return fmt.Errorf(errTxt, id, configDriveID, metadataID)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -101,7 +101,8 @@ func TestReadConfig(t *testing.T) {
 | 
				
			|||||||
 [BlockStorage]
 | 
					 [BlockStorage]
 | 
				
			||||||
 bs-version = auto
 | 
					 bs-version = auto
 | 
				
			||||||
 trust-device-path = yes
 | 
					 trust-device-path = yes
 | 
				
			||||||
 | 
					 [Metadata]
 | 
				
			||||||
 | 
					 search-order = configDrive, metadataService
 | 
				
			||||||
 `))
 | 
					 `))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatalf("Should succeed when a valid config is provided: %s", err)
 | 
							t.Fatalf("Should succeed when a valid config is provided: %s", err)
 | 
				
			||||||
@@ -128,6 +129,9 @@ func TestReadConfig(t *testing.T) {
 | 
				
			|||||||
	if cfg.BlockStorage.BSVersion != "auto" {
 | 
						if cfg.BlockStorage.BSVersion != "auto" {
 | 
				
			||||||
		t.Errorf("incorrect bs.bs-version: %v", cfg.BlockStorage.BSVersion)
 | 
							t.Errorf("incorrect bs.bs-version: %v", cfg.BlockStorage.BSVersion)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if cfg.Metadata.SearchOrder != "configDrive, metadataService" {
 | 
				
			||||||
 | 
							t.Errorf("incorrect md.search-order: %v", cfg.Metadata.SearchOrder)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestToAuthOptions(t *testing.T) {
 | 
					func TestToAuthOptions(t *testing.T) {
 | 
				
			||||||
@@ -169,6 +173,9 @@ func TestCheckOpenStackOpts(t *testing.T) {
 | 
				
			|||||||
					ManageSecurityGroups: true,
 | 
										ManageSecurityGroups: true,
 | 
				
			||||||
					NodeSecurityGroupID:  "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144",
 | 
										NodeSecurityGroupID:  "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144",
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
									metadataOpts: MetadataOpts{
 | 
				
			||||||
 | 
										SearchOrder: configDriveID,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			expectedError: nil,
 | 
								expectedError: nil,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -187,6 +194,9 @@ func TestCheckOpenStackOpts(t *testing.T) {
 | 
				
			|||||||
					ManageSecurityGroups: true,
 | 
										ManageSecurityGroups: true,
 | 
				
			||||||
					NodeSecurityGroupID:  "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144",
 | 
										NodeSecurityGroupID:  "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144",
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
									metadataOpts: MetadataOpts{
 | 
				
			||||||
 | 
										SearchOrder: configDriveID,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			expectedError: nil,
 | 
								expectedError: nil,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -203,6 +213,9 @@ func TestCheckOpenStackOpts(t *testing.T) {
 | 
				
			|||||||
					ManageSecurityGroups: true,
 | 
										ManageSecurityGroups: true,
 | 
				
			||||||
					NodeSecurityGroupID:  "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144",
 | 
										NodeSecurityGroupID:  "b41d28c2-d02f-4e1e-8ffb-23b8e4f5c144",
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
									metadataOpts: MetadataOpts{
 | 
				
			||||||
 | 
										SearchOrder: configDriveID,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			expectedError: fmt.Errorf("monitor-delay not set in cloud provider config"),
 | 
								expectedError: fmt.Errorf("monitor-delay not set in cloud provider config"),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -221,9 +234,43 @@ func TestCheckOpenStackOpts(t *testing.T) {
 | 
				
			|||||||
					MonitorMaxRetries:    uint(3),
 | 
										MonitorMaxRetries:    uint(3),
 | 
				
			||||||
					ManageSecurityGroups: true,
 | 
										ManageSecurityGroups: true,
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
									metadataOpts: MetadataOpts{
 | 
				
			||||||
 | 
										SearchOrder: configDriveID,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			expectedError: fmt.Errorf("node-security-group not set in cloud provider config"),
 | 
								expectedError: fmt.Errorf("node-security-group not set in cloud provider config"),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name: "test5",
 | 
				
			||||||
 | 
								openstackOpts: &OpenStack{
 | 
				
			||||||
 | 
									provider: nil,
 | 
				
			||||||
 | 
									metadataOpts: MetadataOpts{
 | 
				
			||||||
 | 
										SearchOrder: "",
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								expectedError: fmt.Errorf("Invalid value in section [Metadata] with key `search-order`. Value cannot be empty"),
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name: "test6",
 | 
				
			||||||
 | 
								openstackOpts: &OpenStack{
 | 
				
			||||||
 | 
									provider: nil,
 | 
				
			||||||
 | 
									metadataOpts: MetadataOpts{
 | 
				
			||||||
 | 
										SearchOrder: "value1,value2,value3",
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								expectedError: fmt.Errorf("Invalid value in section [Metadata] with key `search-order`. Value cannot contain more than 2 elements"),
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name: "test7",
 | 
				
			||||||
 | 
								openstackOpts: &OpenStack{
 | 
				
			||||||
 | 
									provider: nil,
 | 
				
			||||||
 | 
									metadataOpts: MetadataOpts{
 | 
				
			||||||
 | 
										SearchOrder: "value1",
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								expectedError: fmt.Errorf("Invalid element '%s' found in section [Metadata] with key `search-order`."+
 | 
				
			||||||
 | 
									"Supported elements include '%s' and '%s'", "value1", configDriveID, metadataID),
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, testcase := range tests {
 | 
						for _, testcase := range tests {
 | 
				
			||||||
@@ -374,6 +421,8 @@ func configFromEnv() (cfg Config, ok bool) {
 | 
				
			|||||||
		(cfg.Global.TenantId != "" || cfg.Global.TenantName != "" ||
 | 
							(cfg.Global.TenantId != "" || cfg.Global.TenantName != "" ||
 | 
				
			||||||
			cfg.Global.DomainId != "" || cfg.Global.DomainName != ""))
 | 
								cfg.Global.DomainId != "" || cfg.Global.DomainName != ""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cfg.Metadata.SearchOrder = fmt.Sprintf("%s,%s", configDriveID, metadataID)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user