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  }