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  }