From a24b40fc3b39e513fb43f51e6c58f1f1a0d07194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Brod=C3=A9n?= Date: Tue, 30 Jan 2024 14:03:48 +0100 Subject: [PATCH 1/6] Make http client accessable --- api/api.go | 8 +++++--- api/metadata.go | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/api/api.go b/api/api.go index 9ae835d..b601d47 100644 --- a/api/api.go +++ b/api/api.go @@ -7,7 +7,8 @@ import ( ) type API struct { - sling *sling.Sling + sling *sling.Sling + client *http.Client } func (api *API) DefaultRmqVersion() (map[string]interface{}, error) { @@ -20,15 +21,16 @@ func (api *API) DefaultRmqVersion() (map[string]interface{}, error) { return data, nil } -func New(baseUrl, apiKey string, useragent string) *API { +func New(baseUrl, apiKey string, useragent string, client *http.Client) *API { if len(useragent) == 0 { useragent = "84codes go-api" } return &API{ sling: sling.New(). - Client(http.DefaultClient). + Client(client). Base(baseUrl). SetBasicAuth("", apiKey). Set("User-Agent", useragent), + client: client, } } diff --git a/api/metadata.go b/api/metadata.go index 5ae4a64..60a6a41 100644 --- a/api/metadata.go +++ b/api/metadata.go @@ -23,7 +23,7 @@ func (api *API) ValidatePlan(name string) error { path = "api/plans" ) - response, err := api.sling.New().Get(path).Receive(&data, &failed) + response, err := api.sling.New().Client(api.client).Get(path).Receive(&data, &failed) if err != nil { return err } @@ -88,7 +88,7 @@ func (api *API) ValidateRegion(region string) error { platform string ) - response, err := api.sling.New().Get(path).Receive(&data, &failed) + response, err := api.sling.New().Client(api.client).Get(path).Receive(&data, &failed) if err != nil { return err } From cbe95711affc110899e37912e9fef20540cb398e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20H=C3=B6rberg?= Date: Tue, 30 Jan 2024 16:04:45 +0100 Subject: [PATCH 2/6] sleep after makes specs faster --- api/alarms.go | 1 + api/instance.go | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/api/alarms.go b/api/alarms.go index 81960e3..fed60c2 100644 --- a/api/alarms.go +++ b/api/alarms.go @@ -9,6 +9,7 @@ import ( ) func (api *API) CreateAlarm(instanceID int, params map[string]interface{}) (map[string]interface{}, error) { + data := make(map[string]interface{}) failed := make(map[string]interface{}) log.Printf("[DEBUG] go-api::alarm::create instance ID: %v, params: %v", instanceID, params) diff --git a/api/instance.go b/api/instance.go index 111fe3f..3e433a1 100644 --- a/api/instance.go +++ b/api/instance.go @@ -18,7 +18,6 @@ func (api *API) waitUntilReady(instanceID string) (map[string]interface{}, error log.Printf("[DEBUG] go-api::instance::waitUntilReady waiting") for { - time.Sleep(10 * time.Second) response, err := api.sling.New().Path(path).Receive(&data, &failed) if err != nil { return nil, err @@ -34,6 +33,7 @@ func (api *API) waitUntilReady(instanceID string) (map[string]interface{}, error return nil, fmt.Errorf("waitUntilReady failed, status: %v, message: %s", response.StatusCode, failed) } + time.Sleep(10 * time.Second) } } @@ -45,7 +45,6 @@ func (api *API) waitUntilAllNodesReady(instanceID string) error { ) for { - time.Sleep(15 * time.Second) _, err := api.sling.New().Path(path).Receive(&data, &failed) if err != nil { return err @@ -61,6 +60,7 @@ func (api *API) waitUntilAllNodesReady(instanceID string) error { if ready { return nil } + time.Sleep(15 * time.Second) } } @@ -106,7 +106,6 @@ func (api *API) waitUntilDeletion(instanceID string) error { log.Printf("[DEBUG] go-api::instance::waitUntilDeletion waiting") for { - time.Sleep(10 * time.Second) response, err := api.sling.New().Path(path).Receive(&data, &failed) if err != nil { log.Printf("[DEBUG] go-api::instance::waitUntilDeletion error: %v", err) @@ -121,6 +120,7 @@ func (api *API) waitUntilDeletion(instanceID string) error { log.Print("[DEBUG] go-api::instance::waitUntilDeletion deleted") return nil } + time.Sleep(10 * time.Second) } } From d64e8d648031440b39f2d4924b5b6862433fa8e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Brod=C3=A9n?= Date: Fri, 16 Feb 2024 09:46:11 +0100 Subject: [PATCH 3/6] Set nil http.client --- main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.go b/main.go index a6eecf6..ac7cee3 100644 --- a/main.go +++ b/main.go @@ -9,5 +9,5 @@ func main() { } func New(baseUrl, apiKey string) *api.API { - return api.New(baseUrl, apiKey, "84codes go-api") + return api.New(baseUrl, apiKey, "84codes go-api", nil) } From 53415dbea2f72b1801a701bcb9bc6e629186a6dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Brod=C3=A9n?= Date: Fri, 16 Feb 2024 12:13:58 +0100 Subject: [PATCH 4/6] Minor update --- api/alarms.go | 1 - 1 file changed, 1 deletion(-) diff --git a/api/alarms.go b/api/alarms.go index fed60c2..81960e3 100644 --- a/api/alarms.go +++ b/api/alarms.go @@ -9,7 +9,6 @@ import ( ) func (api *API) CreateAlarm(instanceID int, params map[string]interface{}) (map[string]interface{}, error) { - data := make(map[string]interface{}) failed := make(map[string]interface{}) log.Printf("[DEBUG] go-api::alarm::create instance ID: %v, params: %v", instanceID, params) From 9d1d5a2f3a9a277f5fac7af4234a0702204dea74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Brod=C3=A9n?= Date: Tue, 20 Feb 2024 16:24:38 +0100 Subject: [PATCH 5/6] Sleep after makes specs faster --- api/nodes.go | 2 +- api/plugins.go | 2 +- api/plugins_community.go | 2 +- api/upgrade_rabbitmq.go | 2 +- api/vpc.go | 2 +- api/vpc_gcp_peering.go | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/api/nodes.go b/api/nodes.go index d977a96..5ee587a 100644 --- a/api/nodes.go +++ b/api/nodes.go @@ -67,7 +67,6 @@ func (api *API) PostAction(instanceID int, nodeName string, action string) (map[ func (api *API) waitOnNodeAction(instanceID int, nodeName string, action string) (map[string]interface{}, error) { log.Printf("[DEBUG] go-api::nodes::waitOnNodeAction waiting") for { - time.Sleep(20 * time.Second) data, err := api.ReadNode(instanceID, nodeName) if err != nil { @@ -84,5 +83,6 @@ func (api *API) waitOnNodeAction(instanceID int, nodeName string, action string) return data, nil } } + time.Sleep(20 * time.Second) } } diff --git a/api/plugins.go b/api/plugins.go index 7f6e41c..dc8cdee 100644 --- a/api/plugins.go +++ b/api/plugins.go @@ -176,7 +176,6 @@ func (api *API) waitUntilPluginChanged(instanceID int, pluginName string, enable attempt, sleep, timeout int) (map[string]interface{}, error) { for { - time.Sleep(time.Duration(sleep) * time.Second) if attempt*sleep > timeout { return nil, fmt.Errorf("wait until plugin changed reached timeout of %d seconds", timeout) } @@ -193,5 +192,6 @@ func (api *API) waitUntilPluginChanged(instanceID int, pluginName string, enable return response, nil } attempt++ + time.Sleep(time.Duration(sleep) * time.Second) } } diff --git a/api/plugins_community.go b/api/plugins_community.go index 3e914c4..7995521 100644 --- a/api/plugins_community.go +++ b/api/plugins_community.go @@ -151,7 +151,6 @@ func (api *API) waitUntilPluginUninstalled(instanceID int, pluginName string, log.Printf("[DEBUG] go-api::plugin_community::waitUntilPluginUninstalled instance id: %v, name: %v", instanceID, pluginName) for { - time.Sleep(time.Duration(sleep) * time.Second) if attempt*sleep > timeout { return nil, fmt.Errorf("wait until plugin uninstalled reached timeout of %d seconds", timeout) } @@ -164,5 +163,6 @@ func (api *API) waitUntilPluginUninstalled(instanceID int, pluginName string, return response, nil } attempt++ + time.Sleep(time.Duration(sleep) * time.Second) } } diff --git a/api/upgrade_rabbitmq.go b/api/upgrade_rabbitmq.go index fa6480d..ff50228 100644 --- a/api/upgrade_rabbitmq.go +++ b/api/upgrade_rabbitmq.go @@ -46,7 +46,6 @@ func (api *API) waitUntilUpgraded(instanceID int) (string, error) { failed := make(map[string]interface{}) for { - time.Sleep(30 * time.Second) path := fmt.Sprintf("api/instances/%v/nodes", instanceID) _, err := api.sling.New().Path(path).Receive(&data, &failed) if err != nil { @@ -65,5 +64,6 @@ func (api *API) waitUntilUpgraded(instanceID int) (string, error) { if ready { return "", nil } + time.Sleep(30 * time.Second) } } diff --git a/api/vpc.go b/api/vpc.go index 258c505..c07344a 100644 --- a/api/vpc.go +++ b/api/vpc.go @@ -16,7 +16,6 @@ func (api *API) waitUntilVpcReady(vpcID string) error { log.Printf("[DEBUG] go-api::vpc::waitUntilVpcReady waiting") for { - time.Sleep(10 * time.Second) response, err := api.sling.New().Get(path).Receive(&data, &failed) if err != nil { return err @@ -32,6 +31,7 @@ func (api *API) waitUntilVpcReady(vpcID string) error { return fmt.Errorf("waitUntilReady failed, status: %v, message: %s", response.StatusCode, failed) } + time.Sleep(10 * time.Second) } } diff --git a/api/vpc_gcp_peering.go b/api/vpc_gcp_peering.go index 823b8ed..429f4b0 100644 --- a/api/vpc_gcp_peering.go +++ b/api/vpc_gcp_peering.go @@ -17,7 +17,6 @@ func (api *API) waitForGcpPeeringStatus(path, peerID string, ) for { - time.Sleep(time.Duration(sleep) * time.Second) if attempt*sleep > timeout { return fmt.Errorf("wait until GCP VPC peering status reached timeout of %d seconds", timeout) } @@ -42,6 +41,7 @@ func (api *API) waitForGcpPeeringStatus(path, peerID string, log.Printf("[INFO] go-api::vpc_gcp_peering::waitForGcpPeeringStatus Waiting for state = ACTIVE "+ "attempt %d until timeout: %d", attempt, (timeout - (attempt * sleep))) attempt++ + time.Sleep(time.Duration(sleep) * time.Second) } } From a377e606c68b7ae1cb971335f64e234e8e46edd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Brod=C3=A9n?= Date: Wed, 13 Mar 2024 10:33:23 +0100 Subject: [PATCH 6/6] Revert changes made in 38b6036a5d7278c3ca3ad30095dfb986d02f2a27 --- api/vpc_gcp_peering.go | 4 ++-- api/vpc_gcp_peering_withvpcid.go | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/api/vpc_gcp_peering.go b/api/vpc_gcp_peering.go index 429f4b0..bd0cbe7 100644 --- a/api/vpc_gcp_peering.go +++ b/api/vpc_gcp_peering.go @@ -122,7 +122,7 @@ func (api *API) readVpcGcpPeeringWithRetry(path string, attempt, sleep, timeout if err != nil { return attempt, nil, err } else if attempt*sleep > timeout { - return attempt, nil, fmt.Errorf("read plugins reached timeout of %d seconds", timeout) + return attempt, nil, fmt.Errorf("read VPC peering reached timeout of %d seconds", timeout) } switch response.StatusCode { @@ -137,7 +137,7 @@ func (api *API) readVpcGcpPeeringWithRetry(path string, attempt, sleep, timeout return api.readVpcGcpPeeringWithRetry(path, attempt, sleep, timeout) } } - return attempt, nil, fmt.Errorf("read plugin with retry failed, status: %v, message: %s", + return attempt, nil, fmt.Errorf("read VPC peering with retry failed, status: %v, message: %s", response.StatusCode, failed) } diff --git a/api/vpc_gcp_peering_withvpcid.go b/api/vpc_gcp_peering_withvpcid.go index c886b63..87bc91e 100644 --- a/api/vpc_gcp_peering_withvpcid.go +++ b/api/vpc_gcp_peering_withvpcid.go @@ -28,7 +28,6 @@ func (api *API) RequestVpcGcpPeeringWithVpcId(vpcID string, params map[string]in return data, nil } -// func (api *API) ReadVpcGcpPeering(instanceID, sleep, timeout int) ( func (api *API) ReadVpcGcpPeeringWithVpcId(vpcID string, sleep, timeout int) ( map[string]interface{}, error) {