Skip to content

Commit 9bd76a6

Browse files
GeminiDB: other apis (#892)
1 parent 0d0683f commit 9bd76a6

File tree

4 files changed

+157
-0
lines changed

4 files changed

+157
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package v3
2+
3+
import (
4+
"os"
5+
"testing"
6+
"time"
7+
8+
"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
9+
"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
10+
"github.com/opentelekomcloud/gophertelekomcloud/openstack/gemini/v3/instance"
11+
"github.com/opentelekomcloud/gophertelekomcloud/openstack/gemini/v3/logs"
12+
th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
13+
)
14+
15+
func TestGeminiInstanceLogs(t *testing.T) {
16+
t.Skip("too long to run in ci")
17+
vpcID := os.Getenv("OS_VPC_ID")
18+
subnetID := os.Getenv("OS_NETWORK_ID")
19+
secGroupID := os.Getenv("OS_SECURITY_GROUP_ID")
20+
21+
client, err := clients.NewGeminiDBClient()
22+
th.AssertNoErr(t, err)
23+
24+
createResp := createGeminiInstance(t, client, vpcID, subnetID, secGroupID)
25+
26+
t.Cleanup(func() {
27+
t.Logf("Attempting to delete gemini db")
28+
_, err = instance.Delete(client, createResp.Id)
29+
th.AssertNoErr(t, err)
30+
})
31+
32+
endDate := time.Now().Format("2006-01-02T15:04:05-0700")
33+
startDate := time.Now().Add(-1 * time.Hour).Format("2006-01-02T15:04:05-0700")
34+
35+
logsOpts := logs.GetSlowLogsOpts{
36+
InstanceId: createResp.Id,
37+
StartDate: startDate,
38+
EndDate: endDate,
39+
}
40+
41+
slowLogs, err := logs.GetSlowLogs(client, logsOpts)
42+
th.AssertNoErr(t, err)
43+
tools.PrintResource(t, slowLogs)
44+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package v3
2+
3+
import (
4+
"testing"
5+
6+
"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
7+
"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
8+
"github.com/opentelekomcloud/gophertelekomcloud/openstack/gemini/v3/quota"
9+
th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
10+
)
11+
12+
func TestGeminiGetQuotas(t *testing.T) {
13+
client, err := clients.NewGeminiDBClient()
14+
th.AssertNoErr(t, err)
15+
16+
t.Logf("Attempting to get Gemini db quotas")
17+
listResp, err := quota.GetQuotas(client)
18+
th.AssertNoErr(t, err)
19+
tools.PrintResource(t, listResp)
20+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package logs
2+
3+
import (
4+
"bytes"
5+
6+
golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
7+
"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
8+
"github.com/opentelekomcloud/gophertelekomcloud/pagination"
9+
)
10+
11+
type GetSlowLogsOpts struct {
12+
InstanceId string `json:"-"`
13+
StartDate string `q:"start_date" required:"true"`
14+
EndDate string `q:"end_date" required:"true"`
15+
NodeId string `q:"node_id"`
16+
Offset int `q:"offset"`
17+
Limit int `q:"limit"`
18+
Type string `q:"type"`
19+
}
20+
21+
func GetSlowLogs(client *golangsdk.ServiceClient, opts GetSlowLogsOpts) ([]SlowlogResult, error) {
22+
url, err := golangsdk.NewURLBuilder().
23+
WithEndpoints("instances", opts.InstanceId, "slowlog").
24+
WithQueryParams(&opts).Build()
25+
if err != nil {
26+
return nil, err
27+
}
28+
29+
pages, err := pagination.Pager{
30+
Client: client,
31+
InitialURL: client.ServiceURL(url.String()),
32+
CreatePage: func(r pagination.NewPageResult) pagination.NewPage {
33+
return SlowLogPage{NewSinglePageBase: pagination.NewSinglePageBase{NewPageResult: r}}
34+
},
35+
}.NewAllPages()
36+
37+
if err != nil {
38+
return nil, err
39+
}
40+
return ExtractSlowLogs(pages)
41+
}
42+
43+
func ExtractSlowLogs(r pagination.NewPage) ([]SlowlogResult, error) {
44+
var s struct {
45+
SlowLogList []SlowlogResult `json:"slow_log_list"`
46+
TotalRecord int `json:"total_record"`
47+
}
48+
err := extract.Into(bytes.NewReader((r.(SlowLogPage)).Body), &s)
49+
return s.SlowLogList, err
50+
}
51+
52+
type SlowLogPage struct {
53+
pagination.NewSinglePageBase
54+
}
55+
56+
type SlowlogResult struct {
57+
Time string `json:"time"`
58+
Database string `json:"database"`
59+
QuerySample string `json:"query_sample"`
60+
Type string `json:"type"`
61+
StartTime string `json:"start_time"`
62+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package quota
2+
3+
import (
4+
golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
5+
"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
6+
)
7+
8+
func GetQuotas(client *golangsdk.ServiceClient) (*QuotasDetailResponse, error) {
9+
raw, err := client.Get(client.ServiceURL("quotas"), nil, nil)
10+
if err != nil {
11+
return nil, err
12+
}
13+
14+
var res QuotasDetailResponse
15+
err = extract.Into(raw.Body, &res)
16+
return &res, err
17+
}
18+
19+
type QuotasDetailResponse struct {
20+
Quotas ShowResourcesListResponseBody `json:"quotas"`
21+
}
22+
23+
type ShowResourcesListResponseBody struct {
24+
Resources []ShowResourcesDetailResponseBody `json:"resources"`
25+
}
26+
27+
type ShowResourcesDetailResponseBody struct {
28+
Type string `json:"type"`
29+
Quota int `json:"quota"`
30+
Used int `json:"used"`
31+
}

0 commit comments

Comments
 (0)