Skip to content

Commit

Permalink
Enable Opensearch option in Godo (#678)
Browse files Browse the repository at this point in the history
* Add Opensearch to Godo

* Enable listing of database events

---------

Co-authored-by: Rahul Bhardwaj <rahulbhardwaj@digitalocean.com>
  • Loading branch information
bhardwajRahul and Rahul Bhardwaj committed Apr 10, 2024
1 parent ed9407a commit 374906f
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 8 deletions.
14 changes: 9 additions & 5 deletions databases.go
Expand Up @@ -158,7 +158,7 @@ type DatabasesService interface {
UpdateTopic(context.Context, string, string, *DatabaseUpdateTopicRequest) (*Response, error)
GetMetricsCredentials(context.Context) (*DatabaseMetricsCredentials, *Response, error)
UpdateMetricsCredentials(context.Context, *DatabaseUpdateMetricsCredentialsRequest) (*Response, error)
ListDatabaseEvents(context.Context, string) ([]*DatabaseEvent, *Response, error)
ListDatabaseEvents(context.Context, string, *ListOptions) ([]DatabaseEvent, *Response, error)
}

// DatabasesServiceOp handles communication with the Databases related methods
Expand Down Expand Up @@ -698,6 +698,7 @@ type DatabaseOptions struct {
PostgresSQLOptions DatabaseEngineOptions `json:"pg"`
RedisOptions DatabaseEngineOptions `json:"redis"`
KafkaOptions DatabaseEngineOptions `json:"kafka"`
OpensearchOptions DatabaseEngineOptions `json:"opensearch"`
}

// DatabaseEngineOptions represents the configuration options that are available for a given database engine
Expand All @@ -715,7 +716,7 @@ type DatabaseLayout struct {

// ListDatabaseEvents contains a list of project events.
type ListDatabaseEvents struct {
Events []*DatabaseEvent `json:"events"`
Events []DatabaseEvent `json:"events"`
}

// DatbaseEvent contains the information about a Datbase event.
Expand All @@ -727,7 +728,7 @@ type DatabaseEvent struct {
}

type ListDatabaseEventsRoot struct {
Events []*DatabaseEvent `json:"events"`
Events []DatabaseEvent `json:"events"`
}

// URN returns a URN identifier for the database
Expand Down Expand Up @@ -1537,8 +1538,12 @@ func (svc *DatabasesServiceOp) UpdateMetricsCredentials(ctx context.Context, upd
return resp, nil
}

func (svc *DatabasesServiceOp) ListDatabaseEvents(ctx context.Context, databaseID string) ([]*DatabaseEvent, *Response, error) {
func (svc *DatabasesServiceOp) ListDatabaseEvents(ctx context.Context, databaseID string, opts *ListOptions) ([]DatabaseEvent, *Response, error) {
path := fmt.Sprintf(databaseEvents, databaseID)
path, err := addOptions(path, opts)
if err != nil {
return nil, nil, err
}
root := new(ListDatabaseEventsRoot)
req, err := svc.client.NewRequest(ctx, http.MethodGet, path, nil)
if err != nil {
Expand All @@ -1551,5 +1556,4 @@ func (svc *DatabasesServiceOp) ListDatabaseEvents(ctx context.Context, databaseI
}

return root.Events, resp, nil

}
59 changes: 56 additions & 3 deletions databases_test.go
Expand Up @@ -2078,7 +2078,56 @@ func TestDatabases_GetDatabaseOptions(t *testing.T) {
"num_nodes": 3,
"sizes": [
"gd-2vcpu-8gb",
"gd-4vcpu-16gb"
"gd-4vcpu-16gb"
]
}
]
},
"opensearch": {
"regions": [
"ams3",
"tor1"
],
"versions": [
"1",
"2"
],
"layouts": [
{
"num_nodes": 1,
"sizes": [
"db-s-2vcpu-4gb",
"db-s-4vcpu-8gb"
]
},
{
"num_nodes": 3,
"sizes": [
"db-s-2vcpu-4gb",
"m3-2vcpu-16gb",
"db-s-4vcpu-8gb",
"m3-4vcpu-32gb"
]
},
{
"num_nodes": 6,
"sizes": [
"m3-2vcpu-16gb",
"m3-4vcpu-32gb"
]
},
{
"num_nodes": 9,
"sizes": [
"m3-2vcpu-16gb",
"m3-4vcpu-32gb"
]
},
{
"num_nodes": 15,
"sizes": [
"m3-2vcpu-16gb",
"m3-4vcpu-32gb"
]
}
]
Expand Down Expand Up @@ -2124,21 +2173,25 @@ func TestDatabases_GetDatabaseOptions(t *testing.T) {
require.NotNil(t, options.RedisOptions)
require.NotNil(t, options.MySQLOptions)
require.NotNil(t, options.KafkaOptions)
require.NotNil(t, options.OpensearchOptions)
require.Greater(t, len(options.MongoDBOptions.Regions), 0)
require.Greater(t, len(options.PostgresSQLOptions.Regions), 0)
require.Greater(t, len(options.RedisOptions.Regions), 0)
require.Greater(t, len(options.MySQLOptions.Regions), 0)
require.Greater(t, len(options.KafkaOptions.Regions), 0)
require.Greater(t, len(options.OpensearchOptions.Regions), 0)
require.Greater(t, len(options.MongoDBOptions.Versions), 0)
require.Greater(t, len(options.PostgresSQLOptions.Versions), 0)
require.Greater(t, len(options.RedisOptions.Versions), 0)
require.Greater(t, len(options.MySQLOptions.Versions), 0)
require.Greater(t, len(options.KafkaOptions.Versions), 0)
require.Greater(t, len(options.OpensearchOptions.Versions), 0)
require.Greater(t, len(options.MongoDBOptions.Layouts), 0)
require.Greater(t, len(options.PostgresSQLOptions.Layouts), 0)
require.Greater(t, len(options.RedisOptions.Layouts), 0)
require.Greater(t, len(options.MySQLOptions.Layouts), 0)
require.Greater(t, len(options.KafkaOptions.Layouts), 0)
require.Greater(t, len(options.OpensearchOptions.Layouts), 0)
}

func TestDatabases_CreateDatabaseUserWithMySQLSettings(t *testing.T) {
Expand Down Expand Up @@ -3137,7 +3190,7 @@ func TestDatabases_ListDatabaseEvents(t *testing.T) {

path := fmt.Sprintf("/v2/databases/%s/events", dbID)

want := []*DatabaseEvent{
want := []DatabaseEvent{
{
ID: "pe8u2huh",
ServiceName: "customer-events",
Expand All @@ -3162,7 +3215,7 @@ func TestDatabases_ListDatabaseEvents(t *testing.T) {
fmt.Fprint(w, body)
})

got, _, err := client.Databases.ListDatabaseEvents(ctx, dbID)
got, _, err := client.Databases.ListDatabaseEvents(ctx, dbID, &ListOptions{})
require.NoError(t, err)
require.Equal(t, want, got)
}

0 comments on commit 374906f

Please sign in to comment.