From 3359254efacfe7df0f8f3e94594c5e25a5d54366 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Tue, 7 Jan 2020 11:09:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=81=BF=E5=85=8D=E6=8B=A5=E6=9C=89?= =?UTF-8?q?=E5=B8=A6=E5=AE=BD=E5=8C=85=E7=9A=84=E8=85=BE=E8=AE=AF=E4=BA=91?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=9C=BA=E5=99=A8=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/multicloud/qcloud/bandwidthpackage.go | 63 +++++++++++++++++++ pkg/multicloud/qcloud/instance.go | 2 - .../qcloud/shell/bandwidthpackage.go | 37 +++++++++++ 3 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 pkg/multicloud/qcloud/bandwidthpackage.go create mode 100644 pkg/multicloud/qcloud/shell/bandwidthpackage.go diff --git a/pkg/multicloud/qcloud/bandwidthpackage.go b/pkg/multicloud/qcloud/bandwidthpackage.go new file mode 100644 index 0000000000..892ee27396 --- /dev/null +++ b/pkg/multicloud/qcloud/bandwidthpackage.go @@ -0,0 +1,63 @@ +// 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 qcloud + +import ( + "fmt" + "time" + + "yunion.io/x/pkg/errors" +) + +type SBandwidthPackageSet struct { + AddressIp string + ResourceId string + ResourceType string +} + +type SBandwidthPackage struct { + BandwidthPackageId string + BandwidthPackageName string + ChargeType string + CreatedTime time.Time + NetworkType string + Protocol string + ResourceSet []SBandwidthPackageSet +} + +func (region *SRegion) GetBandwidthPackages(ids []string, offset int, limit int) ([]SBandwidthPackage, int, error) { + if limit < 1 || limit > 50 { + limit = 50 + } + params := map[string]string{ + "Region": region.Region, + "Limit": fmt.Sprintf("%d", limit), + "Offset": fmt.Sprintf("%d", offset), + } + for idx, id := range ids { + params[fmt.Sprintf("BandwidthPackageIds.%d", idx)] = id + } + packages := []SBandwidthPackage{} + resp, err := region.vpcRequest("DescribeBandwidthPackages", params) + if err != nil { + return nil, 0, errors.Wrap(err, "DescribeBandwidthPackages") + } + err = resp.Unmarshal(&packages, "BandwidthPackageSet") + if err != nil { + return nil, 0, errors.Wrap(err, "resp.Unmarshal") + } + total, _ := resp.Float("TotalCount") + return packages, int(total), nil +} diff --git a/pkg/multicloud/qcloud/instance.go b/pkg/multicloud/qcloud/instance.go index 2a471e58f5..70936aa19c 100644 --- a/pkg/multicloud/qcloud/instance.go +++ b/pkg/multicloud/qcloud/instance.go @@ -504,8 +504,6 @@ func (self *SRegion) CreateInstance(name string, imageId string, instanceType st params["Placement.Zone"] = zoneId params["InstanceName"] = name - params["InternetAccessible.InternetChargeType"] = "TRAFFIC_POSTPAID_BY_HOUR" - params["InternetAccessible.InternetMaxBandwidthOut"] = "100" params["InternetAccessible.PublicIpAssigned"] = "FALSE" //params["HostName"] = name if len(keypair) > 0 { diff --git a/pkg/multicloud/qcloud/shell/bandwidthpackage.go b/pkg/multicloud/qcloud/shell/bandwidthpackage.go new file mode 100644 index 0000000000..09683854fc --- /dev/null +++ b/pkg/multicloud/qcloud/shell/bandwidthpackage.go @@ -0,0 +1,37 @@ +// 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 shell + +import ( + "yunion.io/x/onecloud/pkg/multicloud/qcloud" + "yunion.io/x/onecloud/pkg/util/shellutils" +) + +func init() { + type BandwidthPackageListOptions struct { + Ids []string `help:"Bandwidth package ids"` + Offset int `help:"List offset"` + Limit int `help:"List limit"` + } + shellutils.R(&BandwidthPackageListOptions{}, "bandwidth-package-list", "List bandwidth packages", func(cli *qcloud.SRegion, args *BandwidthPackageListOptions) error { + packages, total, err := cli.GetBandwidthPackages(args.Ids, args.Offset, args.Limit) + if err != nil { + return err + } + printList(packages, total, args.Offset, args.Limit, []string{}) + return nil + }) + +}