Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CES] Reimplement Alarm Rules v1 API #381

Merged
merged 27 commits into from
Aug 12, 2022
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d4cedf4
[DCS] Change Capacity to float32
Aloento Jul 27, 2022
3b3c5eb
[DCS] Change Capacity to float32
Aloento Jul 27, 2022
4ec013c
Merge remote-tracking branch 'Aloento/devel' into Aloento-devel
Jul 27, 2022
cc99daa
[DCS]: update test to check float capacity
Jul 27, 2022
6263f7b
[CES] ListAlarms
Aloento Jul 27, 2022
2964595
Merge remote-tracking branch 'origin/devel' into devel
Aloento Jul 27, 2022
f0df08b
Merge branch 'opentelekomcloud:devel' into devel
Aloento Jul 27, 2022
6cab7cb
[CES] Finished
Aloento Jul 27, 2022
72755d7
Merge remote-tracking branch 'origin/devel' into devel
Aloento Jul 27, 2022
115b91e
[CES] err
Aloento Jul 27, 2022
bd5e5f0
[CES] *
Aloento Jul 27, 2022
dcb7542
[CES] *
Aloento Jul 27, 2022
aeec8fa
Merge branch 'opentelekomcloud:devel' into devel
Aloento Jul 29, 2022
9c494e0
Merge branch 'opentelekomcloud:devel' into devel
Aloento Jul 29, 2022
9d2f573
Merge branch 'opentelekomcloud:devel' into devel
Aloento Aug 1, 2022
e3a980c
remove cloudeyeservice
Aloento Aug 2, 2022
26dd452
Add TestAlarms
Aloento Aug 3, 2022
31772d8
AlarmActionEnabled: false
Aloento Aug 3, 2022
4287916
pass
Aloento Aug 3, 2022
7f0dd95
change test
Aloento Aug 4, 2022
71aaef0
Remove Extract
Aloento Aug 9, 2022
d35f3c5
Merge branch 'opentelekomcloud:devel' into devel
Aloento Aug 9, 2022
87fd9b9
to opts
Aloento Aug 9, 2022
ef8b11b
Merge branch 'opentelekomcloud:devel' into devel
Aloento Aug 10, 2022
0b0e9eb
move to split files
Aloento Aug 12, 2022
a5c9401
Merge branch 'opentelekomcloud:devel' into devel
Aloento Aug 12, 2022
c44188f
nil
Aloento Aug 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions acceptance/openstack/ces/v1/alarms_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,13 @@ func TestAlarms(t *testing.T) {
client, err := clients.NewCesV1Client()
th.AssertNoErr(t, err)

lim := 10
alarmsRes, err := alarms.ListAlarms(client, alarms.ListAlarmsRequest{
Limit: &lim,
Limit: 10,
Order: "desc",
}).Extract()
})

th.AssertNoErr(t, err)
th.AssertEquals(t, alarmsRes.MetaData.Count <= lim, true)
th.AssertEquals(t, alarmsRes.MetaData.Count <= 10, true)

f := false
newAlarm, err := alarms.CreateAlarm(client, alarms.CreateAlarmRequest{
Expand All @@ -43,18 +42,20 @@ func TestAlarms(t *testing.T) {
},
AlarmEnabled: &f,
AlarmActionEnabled: &f,
}).Extract()
})
th.AssertNoErr(t, err)

err = alarms.UpdateAlarmAction(client, newAlarm.AlarmId, alarms.ModifyAlarmActionReq{
AlarmEnabled: true,
t.Cleanup(func() {
err = alarms.DeleteAlarm(client, newAlarm)
th.AssertNoErr(t, err)
})
th.AssertNoErr(t, err)

showAlarm, err := alarms.ShowAlarm(client, newAlarm.AlarmId).Extract()
err = alarms.UpdateAlarmAction(client, newAlarm, alarms.ModifyAlarmActionRequest{
AlarmEnabled: true,
})
th.AssertNoErr(t, err)
th.AssertEquals(t, showAlarm.MetricAlarms[0].AlarmEnabled, true)

err = alarms.DeleteAlarm(client, newAlarm.AlarmId)
showAlarm, err := alarms.ShowAlarm(client, newAlarm)
th.AssertNoErr(t, err)
th.AssertEquals(t, showAlarm[0].AlarmEnabled, true)
}
66 changes: 42 additions & 24 deletions openstack/ces/v1/alarms/requests.go
Original file line number Diff line number Diff line change
@@ -1,52 +1,64 @@
package alarms

import (
"fmt"

golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
)

type ListAlarmsRequest struct {
Aloento marked this conversation as resolved.
Show resolved Hide resolved
// The value ranges from 1 to 100, and is 100 by default.
// This parameter is used to limit the number of query results.
Limit *int `q:"limit,omitempty"`
Limit int `q:"limit"`
// Specifies the result sorting method, which is sorted by timestamp.
// The default value is desc.
// asc: The query results are displayed in the ascending order.
// desc: The query results are displayed in the descending order.
Order string `q:"order,omitempty"`
Order string `q:"order"`
// Specifies the first queried alarm to be displayed on a page.
Start string `q:"start,omitempty"`
Start string `q:"start"`
}

func ListAlarms(client *golangsdk.ServiceClient, req ListAlarmsRequest) (r ListAlarmsResult) {
func ListAlarms(client *golangsdk.ServiceClient, opts ListAlarmsRequest) (*ListAlarmsResponse, error) {
Aloento marked this conversation as resolved.
Show resolved Hide resolved
url := alarmsURL(client)
query, err := golangsdk.BuildQueryString(req)
query, err := golangsdk.BuildQueryString(opts)
if err != nil {
return
return nil, err
}

raw := golangsdk.Result{}
url += query.String()
_, r.Err = client.Get(url, &r.Body, nil)
r.Err = err
return

_, err = client.Get(url, &raw.Body, nil)
if err != nil {
return nil, err
}

var s ListAlarmsResponse
err = raw.ExtractInto(&s)
return &s, err
}

// ------------------------------------------------------------------------------------------------

func ShowAlarm(client *golangsdk.ServiceClient, id string) (r ShowAlarmResult) {
_, r.Err = client.Get(alarmIdURL(client, id), &r.Body, nil)
return
func ShowAlarm(client *golangsdk.ServiceClient, id string) ([]MetricAlarms, error) {
raw := golangsdk.Result{}
_, err := client.Get(alarmIdURL(client, id), &raw.Body, nil)
if err != nil {
return nil, err
}

var res []MetricAlarms
err = raw.ExtractIntoSlicePtr(&res, "metric_alarms")
return res, err
}

// ------------------------------------------------------------------------------------------------

type ModifyAlarmActionReq struct {
type ModifyAlarmActionRequest struct {
// Specifies whether the alarm rule is enabled.
AlarmEnabled bool `json:"alarm_enabled"`
}

func UpdateAlarmAction(client *golangsdk.ServiceClient, id string, req ModifyAlarmActionReq) (err error) {
func UpdateAlarmAction(client *golangsdk.ServiceClient, id string, req ModifyAlarmActionRequest) (err error) {
reqBody, err := golangsdk.BuildRequestBody(req, "")
if err != nil {
return
Expand All @@ -71,7 +83,6 @@ func DeleteAlarm(client *golangsdk.ServiceClient, id string) (err error) {

type CreateAlarmRequest struct {
// Specifies the alarm rule name.
//
// Enter 1 to 128 characters. Only letters, digits, underscores (_), and hyphens (-) are allowed.
AlarmName string `json:"alarm_name"`
// Provides supplementary information about the alarm rule. Enter 0 to 256 characters.
Expand Down Expand Up @@ -107,14 +118,21 @@ type MetricForAlarm struct {
ResourceGroupId string `json:"resource_group_id,omitempty"`
}

func CreateAlarm(client *golangsdk.ServiceClient, req CreateAlarmRequest) (r CreateAlarmResult) {
reqBody, err := golangsdk.BuildRequestBody(req, "")
func CreateAlarm(client *golangsdk.ServiceClient, opts CreateAlarmRequest) (string, error) {
reqBody, err := golangsdk.BuildRequestBody(opts, "")
if err != nil {
r.Err = fmt.Errorf("failed to create Alarm Request map: %s", err)
return
return "", err
}

_, err = client.Post(alarmsURL(client), reqBody, &r.Body, nil)
r.Err = err
return
raw := golangsdk.Result{}
_, err = client.Post(alarmsURL(client), reqBody, &raw.Body, nil)
if err != nil {
return "", err
}

var s struct {
AlarmId string `json:"alarm_id"`
}
err = raw.ExtractInto(&s)
return s.AlarmId, err
}
68 changes: 1 addition & 67 deletions openstack/ces/v1/alarms/results.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
package alarms

import (
"fmt"

golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
)

type ListAlarmsResponse struct {
MetricAlarms []MetricAlarms `json:"metric_alarms,omitempty"`
MetaData MetaData `json:"meta_data,omitempty"`
Expand Down Expand Up @@ -60,7 +54,7 @@ type Condition struct {
ComparisonOperator string `json:"comparison_operator"`
// Specifies the number of consecutive occurrence times that the alarm policy was met.
// The value ranges from 1 to 5.
Count int32 `json:"count"`
Count int `json:"count"`
// Specifies the data rollup method. The following methods are supported:
//
// average: Cloud Eye calculates the average value of metric data within a rollup period.
Expand Down Expand Up @@ -92,63 +86,3 @@ type AlarmActions struct {
// If you set type to autoscaling, you must set notificationList to [].
NotificationList []string `json:"notificationList"`
}

type ListAlarmsResult struct {
golangsdk.Result
}

func (r ListAlarmsResult) Extract() (*ListAlarmsResponse, error) {
var s = ListAlarmsResponse{}
if r.Err != nil {
return nil, r.Err
}
err := r.ExtractInto(&s)
if err != nil {
return nil, fmt.Errorf("failed to extract List Alarms Response")
}
return &s, nil
}

// ------------------------------------------------------------------------------------------------

type ShowAlarmResponse struct {
MetricAlarms []MetricAlarms `json:"metric_alarms,omitempty"`
}

type ShowAlarmResult struct {
golangsdk.Result
}

func (r ShowAlarmResult) Extract() (*ShowAlarmResponse, error) {
var s = ShowAlarmResponse{}
if r.Err != nil {
return nil, r.Err
}
err := r.ExtractInto(&s)
if err != nil {
return nil, fmt.Errorf("failed to extract Show Alarms Response")
}
return &s, nil
}

// ------------------------------------------------------------------------------------------------

type CreateAlarmResponse struct {
AlarmId string `json:"alarm_id,omitempty"`
}

type CreateAlarmResult struct {
golangsdk.Result
}

func (r CreateAlarmResult) Extract() (*CreateAlarmResponse, error) {
var s = CreateAlarmResponse{}
if r.Err != nil {
return nil, r.Err
}
err := r.ExtractInto(&s)
if err != nil {
return nil, fmt.Errorf("failed to extract Create Alarms Response")
}
return &s, nil
}