in internal/kibana/role.go [526:568]
func expandKibanaRoleKibana(v interface{}) ([]kbapi.KibanaRoleKibana, diag.Diagnostics) {
kibanaConfigs := []kbapi.KibanaRoleKibana{}
definedKibanaConfigs := v.(*schema.Set)
for _, item := range definedKibanaConfigs.List() {
each := item.(map[string]interface{})
config := kbapi.KibanaRoleKibana{
Base: []string{},
Feature: map[string][]string{},
}
if basePrivileges, ok := each["base"].(*schema.Set); ok && basePrivileges.Len() > 0 {
if _features, ok := each["feature"].(*schema.Set); ok && _features.Len() > 0 {
return nil, diag.Errorf("Only one of the `feature` or `base` privileges allowed!")
}
config.Base = make([]string, basePrivileges.Len())
for i, name := range basePrivileges.List() {
config.Base[i] = name.(string)
}
} else if kibanaFeatures, ok := each["feature"].(*schema.Set); ok && kibanaFeatures.Len() > 0 {
for _, item := range kibanaFeatures.List() {
featureData := item.(map[string]interface{})
featurePrivileges := featureData["privileges"].(*schema.Set)
_features := make([]string, featurePrivileges.Len())
for i, f := range featurePrivileges.List() {
_features[i] = f.(string)
}
config.Feature[featureData["name"].(string)] = _features
}
} else {
return nil, diag.Errorf("Either on of the `feature` or `base` privileges must be set for kibana role!")
}
if roleSpaces, ok := each["spaces"].(*schema.Set); ok && roleSpaces.Len() > 0 {
config.Spaces = make([]string, roleSpaces.Len())
for i, name := range roleSpaces.List() {
config.Spaces[i] = name.(string)
}
}
kibanaConfigs = append(kibanaConfigs, config)
}
return kibanaConfigs, nil
}