mirror of https://github.com/k3s-io/k3s
Metadata order search tests
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue