| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- // 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 compute
- import (
- "fmt"
- "io"
- "os"
- "yunion.io/x/jsonutils"
- "yunion.io/x/pkg/util/fileutils"
- "yunion.io/x/pkg/util/printutils"
- "yunion.io/x/onecloud/cmd/climc/shell"
- "yunion.io/x/onecloud/pkg/apis/compute"
- "yunion.io/x/onecloud/pkg/mcclient"
- modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
- computeoptions "yunion.io/x/onecloud/pkg/mcclient/options/compute"
- )
- func init() {
- cmd := shell.NewResourceCmd(&modules.Buckets)
- cmd.List(&computeoptions.BucketListOptions{})
- cmd.GetProperty(&computeoptions.BucketGetPropertyOptions{})
- cmd.Show(&computeoptions.BucketIdOptions{})
- cmd.Perform("syncstatus", &computeoptions.BucketIdOptions{})
- cmd.Update(&computeoptions.BucketUpdateOptions{})
- cmd.Delete(&computeoptions.BucketIdOptions{})
- cmd.Create(&computeoptions.BucketCreateOptions{})
- cmd.GetWithCustomOptionShow("objects", func(data jsonutils.JSONObject, args shell.IGetOpt) {
- listResult := printutils.ListResult{}
- err := data.Unmarshal(&listResult)
- if err != nil {
- return
- }
- printList(&listResult, []string{})
- }, &computeoptions.BucketListObjectsOptions{})
- cmd.Perform("delete", &computeoptions.BucketDeleteObjectsOptions{})
- cmd.Perform("makedir", &computeoptions.BucketMakeDirOptions{})
- cmd.Perform("temp-url", &computeoptions.BucketPresignObjectsOptions{})
- cmd.Perform("acl", &computeoptions.BucketSetAclOptions{})
- cmd.GetWithCustomOptionShow("acl", func(data jsonutils.JSONObject, args shell.IGetOpt) {
- printObject(data)
- }, &computeoptions.BucketAclOptions{})
- cmd.Perform("sync", &computeoptions.BucketSyncOptions{})
- cmd.Perform("limit", &computeoptions.BucketLimitOptions{})
- cmd.GetWithCustomOptionShow("access-info", func(data jsonutils.JSONObject, args shell.IGetOpt) {
- printObject(data)
- }, &computeoptions.BucketAccessInfoOptions{})
- cmd.Perform("metadata", &computeoptions.BucketSetMetadataOptions{})
- cmd.Perform("set-website", &computeoptions.BucketSetWebsiteOption{})
- cmd.GetWithCustomOptionShow("website", func(data jsonutils.JSONObject, args shell.IGetOpt) {
- printObject(data)
- }, &computeoptions.BucketGetWebsiteConfOption{})
- cmd.Perform("delete-website", &computeoptions.BucketDeleteWebsiteConfOption{})
- cmd.Perform("set-cors", &computeoptions.BucketSetCorsOption{})
- cmd.GetWithCustomOptionShow("cors", func(data jsonutils.JSONObject, args shell.IGetOpt) {
- printObject(data)
- }, &computeoptions.BucketGetCorsOption{})
- cmd.Perform("delete-cors", &computeoptions.BucketDeleteCorsOption{})
- cmd.Perform("set-referer", &computeoptions.BucketSetRefererOption{})
- cmd.GetWithCustomOptionShow("referer", func(data jsonutils.JSONObject, args shell.IGetOpt) {
- printObject(data)
- }, &computeoptions.BucketGetRefererOption{})
- cmd.GetWithCustomOptionShow("cdn-domain", func(data jsonutils.JSONObject, args shell.IGetOpt) {
- printObject(data)
- }, &computeoptions.BucketGetCdnDomainOption{})
- cmd.GetWithCustomOptionShow("policy", func(data jsonutils.JSONObject, args shell.IGetOpt) {
- printObject(data)
- }, &computeoptions.BucketGetPolicyOption{})
- cmd.Perform("set-policy", &computeoptions.BucketSetPolicyOption{})
- cmd.Perform("delete-policy", &computeoptions.BucketDeletePolicyOption{})
- R(&computeoptions.BucketUploadObjectsOptions{}, "bucket-object-upload", "Upload an object into a bucket", func(s *mcclient.ClientSession, args *computeoptions.BucketUploadObjectsOptions) error {
- var body io.Reader
- if len(args.Path) > 0 {
- file, err := os.Open(args.Path)
- if err != nil {
- return err
- }
- defer file.Close()
- body = file
- fileInfo, err := file.Stat()
- if err != nil {
- return err
- }
- args.ContentLength = fileInfo.Size()
- } else {
- body = os.Stdin
- }
- if args.ContentLength < 0 {
- return fmt.Errorf("required content-length")
- }
- meta := args.ObjectHeaderOptions.Options2Header()
- err := modules.Buckets.Upload(s, args.ID, args.KEY, body, args.ContentLength, args.StorageClass, args.Acl, meta)
- if err != nil {
- return err
- }
- return nil
- })
- R(&computeoptions.BucketPerfMonOptions{}, "bucket-perf-mon", "Bucket performance monitor", func(s *mcclient.ClientSession, args *computeoptions.BucketPerfMonOptions) error {
- result, err := modules.Buckets.Get(s, args.ID, nil)
- if err != nil {
- return err
- }
- bucketDetails := compute.BucketDetails{}
- err = result.Unmarshal(&bucketDetails)
- if err != nil {
- return err
- }
- bucket, err := modules.GetIBucket(s.GetContext(), s, &bucketDetails)
- if err != nil {
- return err
- }
- payload, err := fileutils.GetSizeBytes(args.Payload, 1024)
- if err != nil {
- return err
- }
- stats, err := modules.ProbeBucketStats(s.GetContext(), bucket, "test", int64(payload))
- if err != nil {
- return err
- }
- fmt.Printf("Upload delay %f ms throughput %f MB/s\n", stats.UploadDelayMs(), stats.UploadThroughputMbps(payload/1024/1024))
- fmt.Printf("Download delay %f ms throughput %f MB/s\n", stats.DownloadDelayMs(), stats.DownloadThroughputMbps(payload/1024/1024))
- fmt.Printf("Delete delay %f ms\n", stats.DeleteDelayMs())
- return nil
- })
- }
|