github.com/aiven/aiven-go-client@v1.36.0/examples/kafka_schemas/main.go (about) 1 package main 2 3 import ( 4 "log" 5 "os" 6 "time" 7 8 client "github.com/aiven/aiven-go-client" 9 ) 10 11 func main() { 12 // Create new user client 13 c, err := client.NewUserClient( 14 os.Getenv("AIVEN_USERNAME"), 15 os.Getenv("AIVEN_PASSWORD"), "aiven-go-client-test/"+client.Version()) 16 if err != nil { 17 log.Fatalf("user authentication error: %s", err) 18 } 19 20 // Create new project 21 project, err := c.Projects.Create(client.CreateProjectRequest{ 22 CardID: client.ToStringPointer(os.Getenv("AIVEN_CARD_ID")), 23 Cloud: client.ToStringPointer("google-europe-west1"), 24 Project: "kafka-schema1", 25 }) 26 if err != nil { 27 log.Fatalf("project creation error: %s", err) 28 } 29 30 // Create new Kafka service inside the project 31 userConfig := make(map[string]interface{}) 32 userConfig["kafka_version"] = "2.4" 33 userConfig["schema_registry"] = true 34 35 service, err := c.Services.Create(project.Name, client.CreateServiceRequest{ 36 Cloud: "google-europe-west1", 37 GroupName: "default", 38 MaintenanceWindow: nil, 39 Plan: "business-4", 40 ProjectVPCID: nil, 41 ServiceName: "kafka-test-service", 42 ServiceType: "kafka", 43 TerminationProtection: false, 44 UserConfig: userConfig, 45 ServiceIntegrations: nil, 46 }) 47 if err != nil { 48 log.Fatalf("cannot create new Kafka service, error: %s", err) 49 } 50 51 for { 52 schema, err := c.KafkaSubjectSchemas.Add(project.Name, service.Name, "test1", client.KafkaSchemaSubject{Schema: ` 53 { 54 "doc": "example", 55 "fields": [{ 56 "default": 5, 57 "doc": "my test number", 58 "name": "test", 59 "namespace": "test", 60 "type": "int" 61 }], 62 "name": "example", 63 "namespace": "example", 64 "type": "record" 65 } 66 `, 67 }) 68 69 if err != nil { 70 //service is not started yet, and creation of a new ACL is not available yet 71 if err.(client.Error).Status == 501 { 72 log.Print("Kafka service is not started yet, err :" + err.Error()) 73 log.Print("Next attempt after 10 seconds delay ...") 74 time.Sleep(10 * time.Second) 75 continue 76 } 77 78 log.Fatalf("cannot create new Kafka Schema, error: %s", err) 79 } 80 81 log.Printf("Kafka Schema created, id %d", schema.Id) 82 break 83 } 84 85 _, err = c.KafkaGlobalSchemaConfig.Update(project.Name, service.Name, client.KafkaSchemaConfig{CompatibilityLevel: "FULL"}) 86 if err != nil { 87 log.Fatalf("cannot update Kafka Schema Configuration, error: %s", err) 88 } 89 }