github.com/aiven/aiven-go-client@v1.36.0/mirrormaker_replication_flow.go (about) 1 package aiven 2 3 type ( 4 // MirrorMakerReplicationFlowHandler is the client which interacts with the 5 // Kafka MirrorMaker 2 ReplicationFlows endpoints on Aiven. 6 MirrorMakerReplicationFlowHandler struct { 7 client *Client 8 } 9 10 // ReplicationFlow a replication flow entity 11 ReplicationFlow struct { 12 Enabled bool `json:"enabled"` 13 OffsetSyncsTopicLocation string `json:"offset_syncs_topic_location,omitempty"` 14 SourceCluster string `json:"source_cluster,omitempty"` 15 TargetCluster string `json:"target_cluster,omitempty"` 16 ReplicationPolicyClass string `json:"replication_policy_class"` 17 SyncGroupOffsetsEnabled bool `json:"sync_group_offsets_enabled"` 18 SyncGroupOffsetsIntervalSeconds int `json:"sync_group_offsets_interval_seconds"` 19 EmitHeartbeatsEnabled bool `json:"emit_heartbeats_enabled"` 20 Topics []string `json:"topics"` 21 TopicsBlacklist []string `json:"topics.blacklist"` 22 } 23 24 // MirrorMakerReplicationFlowRequest request used to create a Kafka MirrorMaker 2 25 // ReplicationFlows entry. 26 MirrorMakerReplicationFlowRequest struct { 27 ReplicationFlow 28 } 29 30 // MirrorMakerReplicationFlowsResponse represents the response from Aiven after 31 // interacting with the Kafka MirrorMaker 2 API. 32 MirrorMakerReplicationFlowsResponse struct { 33 APIResponse 34 ReplicationFlows []ReplicationFlow `json:"replication_flows"` 35 } 36 37 // MirrorMakerReplicationFlowResponse represents the response from Aiven after 38 // interacting with the Kafka MirrorMaker 2 API. 39 MirrorMakerReplicationFlowResponse struct { 40 APIResponse 41 ReplicationFlow ReplicationFlow `json:"replication_flow"` 42 } 43 ) 44 45 // Create creates new Kafka MirrorMaker 2 Replication Flows entry. 46 func (h *MirrorMakerReplicationFlowHandler) Create(project, service string, req MirrorMakerReplicationFlowRequest) error { 47 path := buildPath("project", project, "service", service, "mirrormaker", "replication-flows") 48 bts, err := h.client.doPostRequest(path, req) 49 if err != nil { 50 return err 51 } 52 53 return checkAPIResponse(bts, nil) 54 } 55 56 // Update updates new Kafka MirrorMaker 2 Replication Flows entry. 57 func (h *MirrorMakerReplicationFlowHandler) Update(project, service, sourceCluster, targetCluster string, req MirrorMakerReplicationFlowRequest) (*MirrorMakerReplicationFlowResponse, error) { 58 path := buildPath("project", project, "service", service, "mirrormaker", "replication-flows", sourceCluster, targetCluster) 59 60 // unset source and destination clusters fields 61 req.SourceCluster = "" 62 req.TargetCluster = "" 63 64 bts, err := h.client.doPutRequest(path, req) 65 if err != nil { 66 return nil, err 67 } 68 69 var rsp MirrorMakerReplicationFlowResponse 70 if errR := checkAPIResponse(bts, &rsp); errR != nil { 71 return nil, errR 72 } 73 74 return &rsp, nil 75 } 76 77 // List gets a Kafka MirrorMaker 2 Replication Flows. 78 func (h *MirrorMakerReplicationFlowHandler) List(project, service string) (*MirrorMakerReplicationFlowsResponse, error) { 79 path := buildPath("project", project, "service", service, "mirrormaker", "replication-flows") 80 bts, err := h.client.doGetRequest(path, nil) 81 if err != nil { 82 return nil, err 83 } 84 85 var rsp MirrorMakerReplicationFlowsResponse 86 if errR := checkAPIResponse(bts, &rsp); errR != nil { 87 return nil, errR 88 } 89 90 return &rsp, nil 91 } 92 93 // Get gets a Kafka MirrorMaker 2 Replication Flows. 94 func (h *MirrorMakerReplicationFlowHandler) Get(project, service, sourceCluster, targetCluster string) (*MirrorMakerReplicationFlowResponse, error) { 95 path := buildPath("project", project, "service", service, "mirrormaker", "replication-flows", sourceCluster, targetCluster) 96 bts, err := h.client.doGetRequest(path, nil) 97 if err != nil { 98 return nil, err 99 } 100 101 var rsp MirrorMakerReplicationFlowResponse 102 if errR := checkAPIResponse(bts, &rsp); errR != nil { 103 return nil, errR 104 } 105 106 return &rsp, nil 107 } 108 109 // Delete deletes a Kafka MirrorMaker 2 Replication Flows entry. 110 func (h *MirrorMakerReplicationFlowHandler) Delete(project, service, sourceCluster, targetCluster string) error { 111 path := buildPath("project", project, "service", service, "mirrormaker", "replication-flows", sourceCluster, targetCluster) 112 bts, err := h.client.doDeleteRequest(path, nil) 113 if err != nil { 114 return err 115 } 116 117 return checkAPIResponse(bts, nil) 118 }