From 7a2c092548470ecda0f29e10863a390c6826bbc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 17 Apr 2024 15:25:57 +0800 Subject: [PATCH] fix(cloudmon): vendor update for support oracle metric (#20039) --- go.mod | 2 +- go.sum | 4 +- pkg/cloudmon/providerdriver/oracle.go | 35 ++++++++ vendor/modules.txt | 2 +- .../pkg/multicloud/oracle/boot-disk.go | 9 +- .../x/cloudmux/pkg/multicloud/oracle/disk.go | 7 +- .../x/cloudmux/pkg/multicloud/oracle/eip.go | 12 +-- .../pkg/multicloud/oracle/instance.go | 21 +++-- .../cloudmux/pkg/multicloud/oracle/monitor.go | 88 +++++++++++++++++++ .../cloudmux/pkg/multicloud/oracle/network.go | 5 +- .../cloudmux/pkg/multicloud/oracle/oracle.go | 51 +++++------ .../multicloud/oracle/provider/provider.go | 2 +- .../cloudmux/pkg/multicloud/oracle/region.go | 9 +- .../pkg/multicloud/oracle/security-group.go | 6 +- 14 files changed, 188 insertions(+), 65 deletions(-) create mode 100644 pkg/cloudmon/providerdriver/oracle.go create mode 100644 vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/monitor.go diff --git a/go.mod b/go.mod index a7a5691511..ad2b5d0ab4 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( k8s.io/client-go v0.19.3 k8s.io/cluster-bootstrap v0.19.3 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240416095227-3e37fc917f65 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240417061814-6a1fe9ae3c31 yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 yunion.io/x/jsonutils v1.0.1-0.20240203102553-4096f103b401 yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91 diff --git a/go.sum b/go.sum index 601d8acbdd..ba71ece2de 100644 --- a/go.sum +++ b/go.sum @@ -1204,8 +1204,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240416095227-3e37fc917f65 h1:TyUeqGO9VvE0+I4mGshrsUP/Zxy7FYdlY9oAL96OXCs= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240416095227-3e37fc917f65/go.mod h1:dsUESXIbXJ+/ywbNClhldOrbPOiBi2udrgOnB/ffoWk= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240417061814-6a1fe9ae3c31 h1:rSADiPVCxHz6yoTrQgYoJAS6RNz8sg51x/oL9ykUNnQ= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240417061814-6a1fe9ae3c31/go.mod h1:dsUESXIbXJ+/ywbNClhldOrbPOiBi2udrgOnB/ffoWk= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= diff --git a/pkg/cloudmon/providerdriver/oracle.go b/pkg/cloudmon/providerdriver/oracle.go new file mode 100644 index 0000000000..30ba52f92d --- /dev/null +++ b/pkg/cloudmon/providerdriver/oracle.go @@ -0,0 +1,35 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package providerdriver + +import ( + api "yunion.io/x/onecloud/pkg/apis/compute" +) + +type OracleCollect struct { + SCollectByResourceIdDriver +} + +func (self *OracleCollect) GetProvider() string { + return api.CLOUD_PROVIDER_ORACLE +} + +func (self *OracleCollect) IsSupportMetrics() bool { + return true +} + +func init() { + Register(&OracleCollect{}) +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 16508a5b53..39ffe34ade 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1472,7 +1472,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240416095227-3e37fc917f65 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240417061814-6a1fe9ae3c31 ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/boot-disk.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/boot-disk.go index 2dd0f91076..7d332a2d39 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/boot-disk.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/boot-disk.go @@ -16,6 +16,7 @@ package oracle import ( "context" + "net/url" "time" "yunion.io/x/jsonutils" @@ -60,8 +61,6 @@ func (self *SRegion) GetBootDisk(id string) (*SBootDisk, error) { return nil, err } return ret, nil - - return nil, cloudprovider.ErrNotImplemented } func (self *SBootDisk) GetId() string { @@ -187,11 +186,11 @@ func (self *SBootDisk) GetProjectId() string { } func (self *SRegion) GetBootDisks(zoneId string) ([]SBootDisk, error) { - params := map[string]interface{}{} + query := url.Values{} if len(zoneId) > 0 { - params["availabilityDomain"] = zoneId + query.Set("availabilityDomain", zoneId) } - resp, err := self.list(SERVICE_IAAS, "bootVolumes", params) + resp, err := self.list(SERVICE_IAAS, "bootVolumes", query) if err != nil { return nil, err } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/disk.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/disk.go index d2deed2b9a..86791c6a45 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/disk.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/disk.go @@ -16,6 +16,7 @@ package oracle import ( "context" + "net/url" "time" "yunion.io/x/jsonutils" @@ -187,11 +188,11 @@ func (self *SDisk) GetProjectId() string { } func (self *SRegion) GetDisks(zoneId string) ([]SDisk, error) { - params := map[string]interface{}{} + query := url.Values{} if len(zoneId) > 0 { - params["availabilityDomain"] = zoneId + query.Set("availabilityDomain", zoneId) } - resp, err := self.list(SERVICE_IAAS, "volumes", params) + resp, err := self.list(SERVICE_IAAS, "volumes", query) if err != nil { return nil, err } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/eip.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/eip.go index fdb84cdd34..9d0a5873cb 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/eip.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/eip.go @@ -15,6 +15,7 @@ package oracle import ( + "net/url" "time" "yunion.io/x/jsonutils" @@ -163,16 +164,15 @@ func (self *SRegion) GetEips(lifetime string) ([]SEipAddress, error) { if err != nil { return nil, err } - params := map[string]interface{}{ - "scope": "AVAILABILITY_DOMAIN", - } + query := url.Values{} + query.Set("scope", "AVAILABILITY_DOMAIN") if len(lifetime) > 0 { - params["lifetime"] = lifetime + query.Set("lifetime", lifetime) } ret := []SEipAddress{} for _, zone := range zones { - params["availabilityDomain"] = zone.Name - resp, err := self.list(SERVICE_IAAS, "publicIps", params) + query.Set("availabilityDomain", zone.Name) + resp, err := self.list(SERVICE_IAAS, "publicIps", query) if err != nil { return nil, err } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/instance.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/instance.go index a5399429d2..63c8fe18af 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/instance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/instance.go @@ -16,6 +16,7 @@ package oracle import ( "context" + "net/url" "time" billing_api "yunion.io/x/cloudmux/pkg/apis/billing" @@ -103,9 +104,9 @@ type SInstance struct { } func (self *SRegion) GetInstances(zoneId string) ([]SInstance, error) { - params := map[string]interface{}{} + params := url.Values{} if len(zoneId) > 0 { - params["availabilityDomain"] = zoneId + params.Set("availabilityDomain", zoneId) } resp, err := self.list(SERVICE_IAAS, "instances", params) if err != nil { @@ -389,9 +390,8 @@ type SVolumeAttachment struct { } func (self *SRegion) GetAttachedDisks(instanceId string) ([]SVolumeAttachment, error) { - params := map[string]interface{}{ - "instanceId": instanceId, - } + params := url.Values{} + params.Set("instanceId", instanceId) resp, err := self.list(SERVICE_IAAS, "volumeAttachments", params) if err != nil { return nil, err @@ -409,10 +409,9 @@ type SBootVolumeAttachment struct { } func (self *SRegion) GetBootVolumeAttachments(zoneId, instanceId string) ([]SBootVolumeAttachment, error) { - params := map[string]interface{}{ - "instanceId": instanceId, - "availabilityDomain": zoneId, - } + params := url.Values{} + params.Set("instanceId", instanceId) + params.Set("availabilityDomain", zoneId) resp, err := self.list(SERVICE_IAAS, "bootVolumeAttachments", params) if err != nil { return nil, err @@ -430,9 +429,9 @@ type SVnicAttachment struct { } func (self *SRegion) GetVnicAttachments(instanceId string) ([]SVnicAttachment, error) { - params := map[string]interface{}{} + params := url.Values{} if len(instanceId) > 0 { - params["instanceId"] = instanceId + params.Set("instanceId", instanceId) } resp, err := self.list(SERVICE_IAAS, "vnicAttachments", params) if err != nil { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/monitor.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/monitor.go new file mode 100644 index 0000000000..a5fb4adbee --- /dev/null +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/monitor.go @@ -0,0 +1,88 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package oracle + +import ( + "fmt" + "net/url" + "time" + + "yunion.io/x/pkg/errors" + + "yunion.io/x/cloudmux/pkg/cloudprovider" +) + +func (self *SOracleClient) GetMetrics(opts *cloudprovider.MetricListOptions) ([]cloudprovider.MetricValues, error) { + switch opts.ResourceType { + case cloudprovider.METRIC_RESOURCE_TYPE_SERVER: + return self.GetEcsMetrics(opts) + default: + return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "%s", opts.ResourceType) + } +} + +func (self *SOracleClient) GetEcsMetrics(opts *cloudprovider.MetricListOptions) ([]cloudprovider.MetricValues, error) { + query := url.Values{} + query.Set("compartmentId", self.compartment) + + results := []cloudprovider.MetricValues{} + for metricType, queryStr := range map[cloudprovider.TMetricType]string{ + cloudprovider.VM_METRIC_TYPE_CPU_USAGE: fmt.Sprintf("CPUUtilization[1m]{resourceId = \"%s\"}.mean()", opts.ResourceId), + cloudprovider.VM_METRIC_TYPE_MEM_USAGE: fmt.Sprintf("MemoryUtilization[1m]{resourceId = \"%s\"}.mean()", opts.ResourceId), + cloudprovider.VM_METRIC_TYPE_DISK_IO_READ_IOPS: fmt.Sprintf("DiskIopsRead[1m]{resourceId = \"%s\"}.rate()", opts.ResourceId), + cloudprovider.VM_METRIC_TYPE_DISK_IO_WRITE_IOPS: fmt.Sprintf("DiskIopsWritten[1m]{resourceId = \"%s\"}.rate()", opts.ResourceId), + cloudprovider.VM_METRIC_TYPE_DISK_IO_READ_BPS: fmt.Sprintf("DiskBytesRead[1m]{resourceId = \"%s\"}.rate()", opts.ResourceId), + cloudprovider.VM_METRIC_TYPE_DISK_IO_WRITE_BPS: fmt.Sprintf("DiskBytesWritten[1m]{resourceId = \"%s\"}.rate()", opts.ResourceId), + cloudprovider.VM_METRIC_TYPE_NET_BPS_RX: fmt.Sprintf("NetworksBytesIn[1m]{resourceId = \"%s\"}.rate()", opts.ResourceId), + cloudprovider.VM_METRIC_TYPE_NET_BPS_TX: fmt.Sprintf("NetworksBytesOut[1m]{resourceId = \"%s\"}.rate()", opts.ResourceId), + } { + params := map[string]interface{}{ + "namespace": "oci_computeagent", + "startTime": opts.StartTime, + "endTime": opts.EndTime, + "query": queryStr, + } + resp, err := self.post(SERVICE_TELEMETRY, opts.RegionExtId, "metrics/actions/summarizeMetricsData", query, params) + if err != nil { + return nil, err + } + ret := []struct { + AggregatedDatapoints []struct { + Timestamp time.Time + Value float64 + } + }{} + err = resp.Unmarshal(&ret) + if err != nil { + return nil, err + } + result := cloudprovider.MetricValues{ + Id: opts.ResourceId, + MetricType: metricType, + Values: []cloudprovider.MetricValue{}, + } + for _, values := range ret { + for _, v := range values.AggregatedDatapoints { + result.Values = append(result.Values, cloudprovider.MetricValue{ + Timestamp: v.Timestamp, + Value: v.Value, + }) + } + } + results = append(results, result) + + } + return results, nil +} diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/network.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/network.go index 3addc870b4..3c1b67203d 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/network.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/network.go @@ -15,6 +15,7 @@ package oracle import ( + "net/url" "time" "yunion.io/x/jsonutils" @@ -140,9 +141,9 @@ func (self *SNetwork) GetProjectId() string { } func (self *SRegion) GetNetworks(vpcId string) ([]SNetwork, error) { - params := map[string]interface{}{} + params := url.Values{} if len(vpcId) > 0 { - params["vcnId"] = vpcId + params.Set("vcnId", vpcId) } resp, err := self.list(SERVICE_IAAS, "subnets", params) if err != nil { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/oracle.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/oracle.go index 66d2e1b2bf..ce40985e27 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/oracle.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/oracle.go @@ -44,11 +44,13 @@ const ( CLOUD_PROVIDER_ORACLE_CN = "甲骨文" ORACLE_DEFAULT_REGION = "ap-singapore-1" DEFAULT_API_VERSION = "20160918" + MONITORY_API_VERSION = "20180401" NEXT_TOKEN = "opc-next-page" - SERVICE_IAAS = "iaas" - SERVICE_IDENTITY = "identity" + SERVICE_IAAS = "iaas" + SERVICE_IDENTITY = "identity" + SERVICE_TELEMETRY = "telemetry" ) type OracleClientConfig struct { @@ -189,8 +191,10 @@ func (self *SOracleClient) getUrl(service, regionId, resource string) (string, e regionId = ORACLE_DEFAULT_REGION } switch service { - case "iaas", "identity": + case SERVICE_IAAS, SERVICE_IDENTITY: return fmt.Sprintf("https://%s.%s.oraclecloud.com/%s/%s", service, regionId, DEFAULT_API_VERSION, strings.TrimPrefix(resource, "/")), nil + case SERVICE_TELEMETRY: + return fmt.Sprintf("https://%s.%s.oraclecloud.com/%s/%s", service, regionId, MONITORY_API_VERSION, strings.TrimPrefix(resource, "/")), nil default: return "", errors.Wrapf(cloudprovider.ErrNotSupported, service) } @@ -271,16 +275,16 @@ func (self *SOracleClient) Do(req *http.Request) (*http.Response, error) { return client.Do(req) } -func (self *SOracleClient) list(service, regionId, resource string, params map[string]interface{}) (jsonutils.JSONObject, error) { - if params == nil { - params = map[string]interface{}{} +func (self *SOracleClient) list(service, regionId, resource string, query url.Values) (jsonutils.JSONObject, error) { + if query == nil { + query = url.Values{} } if len(self.compartment) > 0 { - params["compartmentId"] = self.compartment + query.Set("compartmentId", self.compartment) } ret := jsonutils.NewArray() for { - resp, token, err := self.request(httputils.GET, service, regionId, resource, params) + resp, token, err := self.request(httputils.GET, service, regionId, resource, query, nil) if err != nil { return nil, err } @@ -289,28 +293,25 @@ func (self *SOracleClient) list(service, regionId, resource string, params map[s if len(token) == 0 { break } - params["page"] = token + query.Set("page", token) } return ret, nil } -func (self *SOracleClient) get(service, regionId, resource, id string, params map[string]interface{}) (jsonutils.JSONObject, error) { +func (self *SOracleClient) get(service, regionId, resource, id string, query url.Values) (jsonutils.JSONObject, error) { if len(id) == 0 { return nil, errors.Wrapf(cloudprovider.ErrNotFound, "empty id") } - if params == nil { - params = map[string]interface{}{} - } - resp, _, err := self.request(httputils.GET, service, regionId, resource+"/"+id, params) + resp, _, err := self.request(httputils.GET, service, regionId, resource+"/"+id, query, nil) return resp, err } -func (self *SOracleClient) post(service, regionId, resource string, params map[string]interface{}) (jsonutils.JSONObject, error) { - resp, _, err := self.request(httputils.POST, service, regionId, resource, params) +func (self *SOracleClient) post(service, regionId, resource string, query url.Values, params map[string]interface{}) (jsonutils.JSONObject, error) { + resp, _, err := self.request(httputils.POST, service, regionId, resource, query, params) return resp, err } -func (self *SOracleClient) request(method httputils.THttpMethod, service, regionId, resource string, params map[string]interface{}) (jsonutils.JSONObject, string, error) { +func (self *SOracleClient) request(method httputils.THttpMethod, service, regionId, resource string, query url.Values, params map[string]interface{}) (jsonutils.JSONObject, string, error) { uri, err := self.getUrl(service, regionId, resource) if err != nil { return nil, "", err @@ -318,15 +319,9 @@ func (self *SOracleClient) request(method httputils.THttpMethod, service, region if params == nil { params = map[string]interface{}{} } - values := url.Values{} - if method == httputils.GET { - for k, v := range params { - values.Set(k, v.(string)) - } - if len(values) > 0 { - uri = fmt.Sprintf("%s?%s", uri, values.Encode()) - } - params = nil + + if len(query) > 0 { + uri = fmt.Sprintf("%s?%s", uri, query.Encode()) } req := httputils.NewJsonRequest(method, uri, params) @@ -381,7 +376,9 @@ type Compartment struct { } func (self *SOracleClient) GetCompartments() ([]Compartment, error) { - resp, err := self.list(SERVICE_IDENTITY, ORACLE_DEFAULT_REGION, "compartments", map[string]interface{}{"compartmentId": self.tenancyOCID}) + query := url.Values{} + query.Set("compartmentId", self.tenancyOCID) + resp, err := self.list(SERVICE_IDENTITY, ORACLE_DEFAULT_REGION, "compartments", query) if err != nil { return nil, err } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/provider/provider.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/provider/provider.go index dd655fca0c..0402f1d2a8 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/provider/provider.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/provider/provider.go @@ -218,5 +218,5 @@ func (self *SOracleProvider) GetCloudRegionExternalIdPrefix() string { } func (self *SOracleProvider) GetMetrics(opts *cloudprovider.MetricListOptions) ([]cloudprovider.MetricValues, error) { - return nil, cloudprovider.ErrNotImplemented + return self.client.GetMetrics(opts) } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/region.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/region.go index 87dd9e7ba2..b12ebb86c6 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/region.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/region.go @@ -16,6 +16,7 @@ package oracle import ( "fmt" + "net/url" api "yunion.io/x/cloudmux/pkg/apis/compute" "yunion.io/x/cloudmux/pkg/cloudprovider" @@ -171,12 +172,12 @@ func (self *SRegion) GetIZoneById(id string) (cloudprovider.ICloudZone, error) { return nil, cloudprovider.ErrNotFound } -func (self *SRegion) list(service, resource string, params map[string]interface{}) (jsonutils.JSONObject, error) { - return self.client.list(service, self.RegionName, resource, params) +func (self *SRegion) list(service, resource string, query url.Values) (jsonutils.JSONObject, error) { + return self.client.list(service, self.RegionName, resource, query) } -func (self *SRegion) get(service, resource, id string, params map[string]interface{}) (jsonutils.JSONObject, error) { - return self.client.get(service, self.RegionName, resource, id, params) +func (self *SRegion) get(service, resource, id string, query url.Values) (jsonutils.JSONObject, error) { + return self.client.get(service, self.RegionName, resource, id, query) } func (self *SRegion) GetIStoragecacheById(id string) (cloudprovider.ICloudStoragecache, error) { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/security-group.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/security-group.go index 10a7c98c60..000d41c26f 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/security-group.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/oracle/security-group.go @@ -15,6 +15,8 @@ package oracle import ( + "net/url" + api "yunion.io/x/cloudmux/pkg/apis/compute" "yunion.io/x/cloudmux/pkg/cloudprovider" "yunion.io/x/cloudmux/pkg/multicloud" @@ -88,9 +90,9 @@ func (self *SSecurityGroup) GetProjectId() string { } func (self *SRegion) GetSecurityGroups(vpcId string) ([]SSecurityGroup, error) { - params := map[string]interface{}{} + params := url.Values{} if len(vpcId) > 0 { - params["vcnId"] = vpcId + params.Set("vcnId", vpcId) } resp, err := self.list(SERVICE_IAAS, "securityLists", params) if err != nil {