github.com/aiven/aiven-go-client@v1.36.0/examples/elasticsearch/main.go (about) 1 package main 2 3 import ( 4 "log" 5 "os" 6 7 client "github.com/aiven/aiven-go-client" 8 ) 9 10 func main() { 11 // Create new user client 12 c, err := client.NewUserClient( 13 os.Getenv("AIVEN_USERNAME"), 14 os.Getenv("AIVEN_PASSWORD"), "aiven-go-client-test/"+client.Version()) 15 if err != nil { 16 log.Fatalf("user authentication error: %s", err) 17 } 18 19 // Create new project 20 project, err := c.Projects.Create(client.CreateProjectRequest{ 21 CardID: client.ToStringPointer(os.Getenv("AIVEN_CARD_ID")), 22 Cloud: client.ToStringPointer("google-europe-west1"), 23 Project: "testproject1", 24 }) 25 if err != nil { 26 log.Fatalf("project creation error: %s", err) 27 } 28 29 // Create new Elasticsearch service inside the project 30 userConfig := make(map[string]interface{}) 31 userConfig["elasticsearch_version"] = "7" 32 service, err := c.Services.Create(project.Name, client.CreateServiceRequest{ 33 Cloud: "google-europe-west1", 34 GroupName: "default", 35 MaintenanceWindow: nil, 36 Plan: "startup-4", 37 ProjectVPCID: nil, 38 ServiceName: "my-test-elasticsearch", 39 ServiceType: "elasticsearch", 40 TerminationProtection: false, 41 UserConfig: userConfig, 42 ServiceIntegrations: nil, 43 }) 44 if err != nil { 45 log.Fatalf("cannot create new Elasticsearch service, error: %s", err) 46 } 47 48 // Create new Elasticsearch user 49 user, err := c.ServiceUsers.Create(project.Name, service.Name, client.CreateServiceUserRequest{Username: "es_test_user1"}) 50 if err != nil { 51 log.Fatalf("cannot create new Elasticsearch user, error: %s", err) 52 } 53 54 // List Elasticsearch ACLs 55 esACLs, err := c.ElasticsearchACLs.Get(project.Name, service.Name) 56 if err != nil { 57 log.Fatalf("cannot get an Elasticsearch ACLs list, error: %s", err) 58 } 59 60 log.Printf("Elastic search ACLs : %+v", esACLs) 61 62 // Create new Elasticsearch ACLs for a user 63 var rules []client.ElasticsearchACLRule 64 rules = append(rules, client.ElasticsearchACLRule{ 65 Index: "_all", 66 Permission: "admin", 67 }) 68 69 esACLs.ElasticSearchACLConfig.Add(client.ElasticSearchACL{ 70 Rules: rules, 71 Username: user.Username, 72 }) 73 74 _, err = c.ElasticsearchACLs.Update(project.Name, service.Name, client.ElasticsearchACLRequest{ 75 ElasticSearchACLConfig: esACLs.ElasticSearchACLConfig}) 76 if err != nil { 77 log.Fatalf("cannot update Elasticsearch ACLs, error: %s", err) 78 } 79 }