Compare commits

...

811 Commits

Author SHA1 Message Date
Zexi Li
2d255b3bdb Merge pull request #14409 from swordqiu/automated-cherry-pick-of-#14406-upstream-release-3.9
Automated cherry pick of #14406: feature: support apigatewa type of endpoint
2022-06-05 22:27:28 +08:00
Qiu Jian
ce92c90ed2 feature: support apigatewa type of endpoint 2022-06-05 19:01:06 +08:00
Jian Qiu
bce7d6b2ca update vendor 3.9 20220605 (#14408)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-06-05 18:36:40 +08:00
Jian Qiu
2a9c2dc3d6 fix(region):资源统计bug,已使用资源统计包含裸金属资源,总数未包含,导致资源使用率统计异常。 guestUsage统计中排除掉裸金属资源,hypervisors.Delete(api.HYPERVISOR_CONTAINER, api.HYPERVISOR_BAREMETAL) (#14402)
Co-authored-by: chenxiaochen <chenxiaochen@bonc.com.cn>
2022-06-05 18:10:45 +08:00
Jian Qiu
70dad62096 update vendor 20220604 3.9 (#14400)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-06-04 23:41:43 +08:00
Jian Qiu
300fb781cb feature: fetch options of an application via api (#14397)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-06-04 10:33:20 +08:00
Zexi Li
3388c86694 fix(host): openvswitch service name on UOS (#14393) 2022-06-03 01:50:16 +08:00
屈轩
dcb7401801 fix(region): eip allocate (#14390) 2022-06-03 01:49:48 +08:00
Jian Qiu
63fe172906 feat(host,region): suport live change disk storage (#14363)
Guest start drive mirror job to copy full disk to target, after drive
mirror job ready, guest reopen target disk to replace source disk.
Qemu must support block reopen image feature.

Supported storage: local, ceph

Signed-off-by: wanyaoqi <d3lx.yq@gmail.com>

Co-authored-by: wanyaoqi <d3lx.yq@gmail.com>
2022-06-03 01:48:04 +08:00
Zexi Li
2aa4785cc5 Merge pull request #14388 from ioito/automated-cherry-pick-of-#14387-upstream-release-3.9
Automated cherry pick of #14387: fix(region): apsara bucket limit size
2022-06-02 16:31:59 +08:00
Zexi Li
f9eeca1cd7 Merge pull request #14386 from ioito/automated-cherry-pick-of-#14385-upstream-release-3.9
Automated cherry pick of #14385: optimize(region): add more image dist
2022-06-02 16:31:28 +08:00
Zexi Li
00313d8e15 Merge pull request #14384 from ioito/automated-cherry-pick-of-#14383-upstream-release-3.9
Automated cherry pick of #14383: fix(region): api doc
2022-06-02 16:25:00 +08:00
ioito
7c1d0c483a optimize(region): add more image dist 2022-06-02 16:20:57 +08:00
ioito
0fe882fe1c fix(region): apsara bucket limit size 2022-06-02 16:07:50 +08:00
ioito
3d7343e18d fix(region): api doc 2022-06-02 15:40:03 +08:00
Zexi Li
c1dae4b25d Merge pull request #14373 from ioito/automated-cherry-pick-of-#14372-upstream-release-3.9
Automated cherry pick of #14372: fix(region): 避免加锁导致设置标签超时
2022-06-02 10:20:47 +08:00
Zexi Li
c34aee5443 Merge pull request #14378 from ioito/automated-cherry-pick-of-#14377-upstream-release-3.9
Automated cherry pick of #14377: fix(region): disk save task
2022-06-02 10:20:09 +08:00
Zexi Li
7fb88d0dfa Merge pull request #14381 from ioito/automated-cherry-pick-of-#14380-upstream-release-3.9
Automated cherry pick of #14380: fix(region): clean vm misc options
2022-06-02 10:18:59 +08:00
ioito
2ea4b86ee3 fix(region): clean vm misc options 2022-06-02 10:12:08 +08:00
Zexi Li
3bb788e673 Merge pull request #14376 from swordqiu/automated-cherry-pick-of-#14375-upstream-release-3.9
Automated cherry pick of #14375: fix: remove virtio-blk num-queues param
2022-06-01 23:49:02 +08:00
ioito
62dfe45b7a fix(region): disk save task 2022-06-01 15:48:04 +08:00
Qiu Jian
0cd6c6b658 fix: remove virtio-blk num-queues param 2022-06-01 12:28:01 +08:00
ioito
0e0c513542 fix(region): 避免加锁导致设置标签超时 2022-06-01 12:01:39 +08:00
Zexi Li
0ddc9792da Merge pull request #14365 from ioito/automated-cherry-pick-of-#14364-upstream-release-3.9
Automated cherry pick of #14364: fix(region): aliyun bucket access url
2022-06-01 09:39:35 +08:00
Zexi Li
48ce3f43a1 Merge pull request #14368 from swordqiu/hotfix/qj-disable-disk-io-multiqueue
Hotfix/qj disable disk io multiqueue
2022-06-01 09:38:26 +08:00
Qiu Jian
7644641143 add options to set disk driver and cachemode 2022-05-31 20:55:53 +08:00
Qiu Jian
53311dbd03 fix: disable disk multi-queue 2022-05-31 20:45:07 +08:00
Zexi Li
b0d6318ace Merge pull request #14362 from swordqiu/automated-cherry-pick-of-#14359-upstream-release-3.9
Automated cherry pick of #14359: fix: wrong hypervisor in kvm vnc info
2022-05-31 11:04:03 +08:00
ioito
28b414c282 fix(region): aliyun bucket access url 2022-05-31 10:50:35 +08:00
Jian Qiu
c39fda77c5 fix: more detailed log for server hange_config (#14360)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-31 09:43:01 +08:00
Qiu Jian
ca381f1ce4 fix: wrong hypervisor in kvm vnc info 2022-05-31 01:09:44 +08:00
Zexi Li
f8b7b92f38 Merge pull request #14356 from swordqiu/automated-cherry-pick-of-#14344-upstream-release-3.9
Automated cherry pick of #14344: fix: allow set pagination order
2022-05-30 23:51:44 +08:00
Zexi Li
f13d04b229 Merge pull request #14349 from ioito/automated-cherry-pick-of-#14348-upstream-release-3.9
Automated cherry pick of #14348: fix(region): public cloud user data
2022-05-30 23:48:23 +08:00
Zexi Li
dfd0b32a5f Merge pull request #14355 from swordqiu/hotfix/qj-update-vendor-3.9-20220530
update vendor 3.9 20220530
2022-05-30 23:44:43 +08:00
Zexi Li
77f37ea0c2 Merge pull request #14352 from ioito/automated-cherry-pick-of-#14351-upstream-release-3.9
Automated cherry pick of #14351: fix(region): aliyun disk external id
2022-05-30 23:43:35 +08:00
Qiu Jian
1a043c7958 fix: allow set pagination order 2022-05-30 23:41:54 +08:00
Zexi Li
3e803aed1a Merge pull request #14346 from swordqiu/automated-cherry-pick-of-#14345-upstream-release-3.9
Automated cherry pick of #14345: fix: recover host status if maintain an empty host
2022-05-30 23:41:07 +08:00
Qiu Jian
ffb86dfca2 update vendor 3.9 20220530 2022-05-30 21:30:57 +08:00
ioito
936771a7eb fix(region): aliyun disk external id 2022-05-30 16:03:31 +08:00
ioito
3087bf44e6 fix(region): public cloud user data 2022-05-30 14:53:39 +08:00
Qiu Jian
3e9c83e7f1 fix: recover host status if maintain an empty host 2022-05-30 14:42:22 +08:00
Jian Qiu
9c88fe5bb6 fix: backup pack missing encrypt_key_id (#14337)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-29 10:12:58 +08:00
Jian Qiu
c1bac685a1 fix: server associate eip check (#14340)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-29 10:12:21 +08:00
Jian Qiu
13cab82e50 fix: hide server rtc_change event log (#14335)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-28 09:07:34 +08:00
Zexi Li
f72699d691 Merge pull request #14331 from ioito/automated-cherry-pick-of-#14330-upstream-release-3.9
Automated cherry pick of #14330: fix(region): huawei lb eip sync
2022-05-27 02:30:12 +08:00
Zexi Li
06f2f0d553 Merge pull request #14329 from ioito/automated-cherry-pick-of-#14328-upstream-release-3.9
Automated cherry pick of #14328: fix(region): apsara bucket limit
2022-05-27 02:29:38 +08:00
ioito
0c84e1cc02 fix(region): huawei lb eip sync 2022-05-26 19:57:10 +08:00
ioito
b5a0f62841 fix(region): apsara bucket limit 2022-05-26 19:18:28 +08:00
Zexi Li
1622eb010b Merge pull request #14319 from swordqiu/automated-cherry-pick-of-#14318-upstream-release-3.9
Automated cherry pick of #14318: fix: make server is_daemon an admin attribute
2022-05-26 12:13:44 +08:00
Qiu Jian
268f7e8436 fix: make server is_daemon an admin attribute 2022-05-26 08:14:53 +08:00
Zexi Li
a29f9e782d Merge pull request #14313 from ioito/automated-cherry-pick-of-#14312-upstream-release-3.9
Automated cherry pick of #14312: fix(region): aliyun oss https
2022-05-25 18:41:15 +08:00
ioito
6075b8464c fix(region): aliyun oss https 2022-05-25 16:54:08 +08:00
Zexi Li
c1cc7672b6 Merge pull request #14309 from ioito/automated-cherry-pick-of-#14308-upstream-release-3.9
Automated cherry pick of #14308: fix(region): azure disk status
2022-05-25 14:44:54 +08:00
Zexi Li
bc91525232 Merge pull request #14311 from ioito/automated-cherry-pick-of-#14310-upstream-release-3.9
Automated cherry pick of #14310: fix(region): eip update
2022-05-25 14:44:35 +08:00
ioito
6733570353 fix(region): eip update 2022-05-25 12:17:57 +08:00
ioito
b3fd54e964 fix(region): azure disk status 2022-05-25 11:45:13 +08:00
Zexi Li
396db51c31 Merge pull request #14306 from ioito/automated-cherry-pick-of-#14300-upstream-release-3.9
Automated cherry pick of #14300: fix(region): eip associate type
2022-05-25 11:16:27 +08:00
ioito
3da67e2055 fix(region): eip associate type 2022-05-25 10:17:42 +08:00
Zexi Li
34dd8e27bf Merge pull request #14296 from ioito/automated-cherry-pick-of-#14295-upstream-release-3.9
Automated cherry pick of #14295: fix(region): account probe lock
2022-05-25 10:17:20 +08:00
Zexi Li
e901a62ea4 Merge pull request #14294 from zexi/automated-cherry-pick-of-#14293-upstream-release-3.9
Automated cherry pick of #14293: feat(climc): feature configuration
2022-05-25 10:09:38 +08:00
Zexi Li
be5eb40de8 Merge pull request #14305 from swordqiu/automated-cherry-pick-of-#14304-upstream-release-3.9
Automated cherry pick of #14304: feature: daemon server support
2022-05-25 10:03:44 +08:00
Zexi Li
63d6d325e2 feat(climc): feature configuration 2022-05-25 10:01:48 +08:00
Qiu Jian
48350323f8 feature: daemon server support 2022-05-25 08:41:13 +08:00
Zexi Li
eee02b8a68 Merge pull request #14302 from ioito/automated-cherry-pick-of-#14301-upstream-release-3.9
Automated cherry pick of #14301: fix(region): huawei object temp url
2022-05-24 18:27:12 +08:00
ioito
faecd33aee fix(region): huawei object temp url 2022-05-24 16:27:27 +08:00
Zexi Li
9d81b63ccf Merge pull request #14298 from ioito/automated-cherry-pick-of-#14297-upstream-release-3.9
Automated cherry pick of #14297: fix(region): avoid panic with qcloud sync
2022-05-24 14:17:01 +08:00
ioito
e4a5a30ed4 fix(region): avoid panic with qcloud sync 2022-05-24 11:38:46 +08:00
ioito
ba6182db98 fix(region): account probe lock 2022-05-24 11:30:57 +08:00
Zexi Li
bc7be4a64e Merge pull request #14292 from ioito/automated-cherry-pick-of-#14291-upstream-release-3.9
Automated cherry pick of #14291: fix(region): input apsara organization id
2022-05-23 19:27:36 +08:00
ioito
124751949e fix(region): input apsara organization id 2022-05-23 18:50:57 +08:00
Zexi Li
02348c46f3 Merge pull request #14289 from ioito/automated-cherry-pick-of-#14288-upstream-release-3.9
Automated cherry pick of #14288: fix(host): optimized disk resize
2022-05-23 14:51:53 +08:00
ioito
443a7a5923 fix(host): optimized disk resize 2022-05-23 11:02:26 +08:00
Zexi Li
e2856c35f4 Merge pull request #14284 from swordqiu/automated-cherry-pick-of-#14283-upstream-release-3.9
Automated cherry pick of #14283: fix: fail to recogonize vmdk image
2022-05-22 22:01:52 +08:00
Zexi Li
8d083a57c4 Merge pull request #14281 from swordqiu/automated-cherry-pick-of-#14280-upstream-release-3.9
Automated cherry pick of #14280: fix: force invalidate cached image early
2022-05-22 22:01:05 +08:00
屈轩
4985d69a7f fix(host-deployer): ignore root fs mount error (#14286) 2022-05-22 17:19:03 +08:00
Qiu Jian
7574722120 fix: fail to recogonize vmdk image 2022-05-21 17:58:44 +08:00
Qiu Jian
c0cb70d35b fix: force invalidate cached image early 2022-05-21 02:55:38 +08:00
Zexi Li
2098ca1d00 Merge pull request #14279 from ioito/automated-cherry-pick-of-#14278-upstream-release-3.9
Automated cherry pick of #14278: fix(cloudmon): report influxdb data
2022-05-20 19:13:32 +08:00
ioito
07ef57f823 fix(monitor): vm_disk userd_percent 2022-05-20 18:35:48 +08:00
ioito
37a6982f5c fix(cloudmon): report influxdb data 2022-05-20 18:35:48 +08:00
Zexi Li
0d4b9009f8 Merge pull request #14276 from swordqiu/automated-cherry-pick-of-#14275-upstream-release-3.9
Automated cherry pick of #14275: fix: fail to update isolated_devices of type USB
2022-05-19 10:03:31 +08:00
Qiu Jian
7b523ae500 fix: fail to update isolated_devices of type USB 2022-05-19 02:04:21 +08:00
屈轩
084f92996f fix(region): add log for set expire time (#14267) 2022-05-19 01:22:43 +08:00
Zexi Li
0e5257138f fix(region): GPU device type update supported (#14270) 2022-05-19 01:21:43 +08:00
Zexi Li
fa1644134e Merge pull request #14273 from ioito/automated-cherry-pick-of-#14272-upstream-release-3.9
Automated cherry pick of #14272: fix(region): check is gpu by server sku
2022-05-18 23:11:43 +08:00
ioito
93eaf16d13 fix(region): check is gpu by server sku 2022-05-18 21:24:27 +08:00
屈轩
3803cd603b fix(common): data resp (#14265) 2022-05-17 16:37:04 +08:00
Zexi Li
1bfe1d83cd Merge pull request #14263 from swordqiu/automated-cherry-pick-of-#14262-upstream-release-3.9
Automated cherry pick of #14262: fix: kvm resume should be treated as start
2022-05-16 10:50:05 +08:00
Zexi Li
dfe0d9edc1 Merge pull request #14261 from swordqiu/automated-cherry-pick-of-#14260-upstream-release-3.9
Automated cherry pick of #14260: fix: adjust logger events
2022-05-16 10:34:32 +08:00
Qiu Jian
d2dede18f2 fix: kvm resume should be treated as start 2022-05-16 02:20:10 +08:00
Qiu Jian
2602fea916 fix: adjust logger events 2022-05-16 01:53:38 +08:00
Jian Qiu
e74f6ec59e feat(host): create disk from encrypted snapshot (#14258)
support create disk from encrypted snapshot, new disk encrypt info must
same with snapshot, and should used with libqemuio2.12.

area: host,host-image,fetcherfs
Signed-off-by: wanyaoqi <wanyaoqi1995@163.com>

Co-authored-by: wanyaoqi <wanyaoqi1995@163.com>
2022-05-16 00:34:17 +08:00
Jian Qiu
2c5601dcd5 fix: host ping piggyback storage info (#14259)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-16 00:34:05 +08:00
Zexi Li
df2cf4222b Merge pull request #14254 from swordqiu/automated-cherry-pick-of-#14249-upstream-release-3.9
Automated cherry pick of #14249: fix(apigateway): 修复oidc认证中,返回的id_token为空
2022-05-15 15:08:55 +08:00
huangzekeng
0d51c655c9 fix(apigateway): 修复oidc认证中,返回的id_token为空
修复odic认证返回的id_token为空
2022-05-13 21:52:11 +08:00
Zexi Li
65699fd86e Merge pull request #14248 from zexi/automated-cherry-pick-of-#14246-upstream-release-3.9
Automated cherry pick of #14246: feat(climc): SERVERIDS of devtool batch apply
2022-05-13 17:35:48 +08:00
屈轩
23322273b7 fix(reigon): ecloud sign time (#14251) 2022-05-13 17:28:26 +08:00
Zexi Li
5cae5af87e Merge pull request #14241 from ioito/automated-cherry-pick-of-#14240-upstream-release-3.9
Automated cherry pick of #14240: fix(region): secgroup guest cnt
2022-05-13 15:23:33 +08:00
Zexi Li
4e08d1f911 feat(climc): SERVERIDS of devtool batch apply 2022-05-13 13:41:52 +08:00
Zexi Li
65326923bf Merge pull request #14244 from swordqiu/automated-cherry-pick-of-#14243-upstream-release-3.9
Automated cherry pick of #14243: fix: set procutils execution LANG env
2022-05-13 10:05:12 +08:00
Qiu Jian
aaad00bfd0 fix: set procutils execution LANG env 2022-05-12 19:03:53 +08:00
ioito
65125c8dcf fix(region): secgroup guest cnt 2022-05-12 18:03:33 +08:00
Zexi Li
1227bd28b0 fix(region): get spec of baremetal in ready status (#14234) 2022-05-11 08:29:50 +08:00
Zexi Li
91e5679fe0 fix(cloudcommon): update splittable checksum (#14231) 2022-05-11 08:29:12 +08:00
Zexi Li
5bc9bb75e0 Merge pull request #14239 from ioito/automated-cherry-pick-of-#14238-upstream-release-3.9
Automated cherry pick of #14238: fix(region): json name
2022-05-10 16:59:34 +08:00
ioito
a1ae4f6b84 fix(region): json name 2022-05-10 16:56:56 +08:00
Zexi Li
55dfe366fb Merge pull request #14237 from ioito/automated-cherry-pick-of-#14236-upstream-release-3.9
Automated cherry pick of #14236: fix(region): return storage info with topology
2022-05-10 14:02:09 +08:00
ioito
3dd861eccb fix(region): return storage info with topology 2022-05-10 13:55:45 +08:00
Zexi Li
f828be614a Merge pull request #14226 from ioito/automated-cherry-pick-of-#14225-upstream-release-3.9
Automated cherry pick of #14225: fix(regoon): search rds by ip addr
2022-05-10 09:18:30 +08:00
Zexi Li
c1544714c8 Merge pull request #14230 from swordqiu/automated-cherry-pick-of-#14229-upstream-release-3.9
Automated cherry pick of #14229: fix: adjust opsadmin and secadmin policy
2022-05-10 09:18:06 +08:00
Zexi Li
6f8b39e87b Merge pull request #14228 from swordqiu/automated-cherry-pick-of-#14227-upstream-release-3.9
Automated cherry pick of #14227: fix: host sync wire class metadata
2022-05-10 09:17:43 +08:00
Qiu Jian
cfc52229f9 fix: adjust opsadmin and secadmin policy 2022-05-10 00:18:52 +08:00
Qiu Jian
e98e58c5f0 fix: host sync wire class metadata 2022-05-09 23:04:24 +08:00
ioito
24064b5c06 fix(regoon): search rds by ip addr 2022-05-09 22:18:25 +08:00
Jian Qiu
202c3b3f9f fix: adjust syslog format (#14224)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-09 08:01:20 +08:00
Jian Qiu
633b30326d fix: ignore no partition error for initial deployment (#14221)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-08 23:42:51 +08:00
Jian Qiu
27b7c6b617 fix: adjust secadmin and opsadmin policies (#14219)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-08 23:42:16 +08:00
屈轩
ebf671af8f fix(region): remove metadata (#14215) 2022-05-07 20:35:16 +08:00
yunion-ci-robot
ebb4bd87b4 Merge pull request #14211 from zexi/server-usb-filter
Server usb filter
2022-05-07 19:34:25 +08:00
Zexi Li
6763716c52 fix(region): server usb filter 2022-05-07 19:21:49 +08:00
Jian Qiu
71d6f9a448 fix: adjust opsadmin policy (#14208)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-07 01:19:43 +08:00
Zexi Li
4f6d1e5422 fix(build): model api gen updated (#14206) 2022-05-06 23:22:27 +08:00
Zexi Li
361941aee7 Merge pull request #14204 from ioito/automated-cherry-pick-of-#14203-upstream-release-3.9
Automated cherry pick of #14203: fix(region): rds ip addr
2022-05-05 20:10:01 +08:00
Zexi Li
e6a5b3588f Merge pull request #14202 from ioito/automated-cherry-pick-of-#14201-upstream-release-3.9
Automated cherry pick of #14201: fix(region): apsara bucket capacity
2022-05-05 20:09:13 +08:00
ioito
9241c500fc fix(region): apsara bucket capacity 2022-05-05 18:44:35 +08:00
ioito
6d5fc745f0 fix(region): rds ip addr 2022-05-05 18:42:21 +08:00
Jian Qiu
c22f333b00 fix: backup recover failure (#14200)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-04 23:28:17 +08:00
Jian Qiu
4928252b53 fix: disk reset encrypted disks (#14196)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-04 23:08:59 +08:00
Jian Qiu
194ef77ee8 fix: add more deetails for sub-snapshot/sub-backup/sub-images (#14198)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-04 23:08:28 +08:00
Jian Qiu
1c0dd752e2 fix: live migrate encrypted server (#14193)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-04 01:19:33 +08:00
Jian Qiu
2e653f48ce Automated cherry pick of #14191: Feature/qj encryption support snapshot backup (#14192)
* feature: encryption support snapshot and backup

* fix: encrypted snapshot create

* fix issues with backup encryption

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-03 11:40:12 +08:00
Jian Qiu
bad3b197ba fix: save guest image with empty partition fail (#14190)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-02 16:29:39 +08:00
Jian Qiu
cd19a9bb04 fix: deploy encrypted disk (#14188)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-02 09:07:15 +08:00
Jian Qiu
082f153b49 fix: add image set class metadata climc (#14186)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-02 09:06:51 +08:00
Jian Qiu
f76a6a3de9 fix: adaptively enable NetworkManager (#14184)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-05-02 09:06:28 +08:00
Zexi Li
4e88127181 fix(baremetal): try clear jbod devices before create (#14178) 2022-05-01 21:35:53 +08:00
Jian Qiu
facfe4a096 fix: clean temp server when migrate prepare dest fail (#14175)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-29 08:11:03 +08:00
Jian Qiu
7c222fc636 fix(host): fix get disk pci addr (#14172)
Fix hot-plug virtio disk failed.
after add usb and rng deivce, available pci address should update.

Signed-off-by: wanyaoqi <wanyaoqi1995@163.com>

Co-authored-by: wanyaoqi <wanyaoqi1995@163.com>
2022-04-29 02:46:09 +08:00
Rain Zheng
0643d0cda6 Automated cherry pick of #14062: Windows monitor agent (#14063)
* feat: add pywinrm to ansibleserver-base

* feat(devtool,ansibleserver): support install monitor agent to windows
2022-04-29 00:38:39 +08:00
Zexi Li
aa5db88d3d Merge pull request #14166 from ioito/automated-cherry-pick-of-#14165-upstream-release-3.9
Automated cherry pick of #14165: fix(region): qcloud account read only
2022-04-28 20:46:37 +08:00
Zexi Li
81079fcf62 Merge pull request #14170 from ioito/automated-cherry-pick-of-#14169-upstream-release-3.9
Automated cherry pick of #14169: fix(region): remove account sync pre check
2022-04-28 20:43:49 +08:00
ioito
04b9dd9489 fix(region): remove account sync pre check 2022-04-28 20:41:14 +08:00
Jian Qiu
9e28180c01 fix: cleanup s3 mount directory before glance start (#14168)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-28 16:50:09 +08:00
ioito
96270ef1c4 fix(region): qcloud account read only 2022-04-28 14:46:15 +08:00
Zexi Li
3db70ae86d Merge pull request #14161 from swordqiu/automated-cherry-pick-of-#14160-upstream-release-3.9
Automated cherry pick of #14160: fix: logclient i18n for backup ops
2022-04-28 09:45:57 +08:00
Zexi Li
bafca6e2fc Merge pull request #14157 from swordqiu/automated-cherry-pick-of-#14156-upstream-release-3.9
Automated cherry pick of #14156: fix: apigateway sends encrypt_passwd to indicate passwd encryption
2022-04-28 09:45:46 +08:00
Zexi Li
54ef5cf130 Merge pull request #14163 from swordqiu/automated-cherry-pick-of-#14162-upstream-release-3.9
Automated cherry pick of #14162: fix: guest vdi spec override image spec
2022-04-28 09:44:51 +08:00
Zexi Li
c08ba48863 fix(baremetal): disable use perccli temporarily (#14145) 2022-04-28 09:42:29 +08:00
Jian Qiu
d258d9b6c7 fix: mount disk readonly (#14164)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-28 09:34:50 +08:00
Qiu Jian
4cc1bd9eec fix: guest vdi spec override image spec 2022-04-27 20:58:19 +08:00
Qiu Jian
6f9d26b603 fix: logclient i18n for backup ops 2022-04-27 20:44:04 +08:00
Zexi Li
14bbe5f43c Merge pull request #14159 from swordqiu/automated-cherry-pick-of-#14158-upstream-release-3.9
Automated cherry pick of #14158: fix: glance convert vmdk fail
2022-04-27 14:33:51 +08:00
Qiu Jian
41308b1884 fix: glance convert vmdk fail 2022-04-27 14:05:50 +08:00
Qiu Jian
7fd32926ce fix: apigateway sends encrypt_passwd to indicate passwd encryption 2022-04-27 13:05:17 +08:00
Zexi Li
f1cb546b76 Merge pull request #14138 from ioito/automated-cherry-pick-of-#14135-upstream-release-3.9
Automated cherry pick of #14135: fix(region): account probe time
2022-04-27 08:58:33 +08:00
Zexi Li
49c6a911a8 Merge pull request #14137 from ioito/automated-cherry-pick-of-#14136-upstream-release-3.9
Automated cherry pick of #14136: fix(region): ipv6 gateway purge
2022-04-26 10:24:43 +08:00
Zexi Li
f24187ec41 Merge pull request #14140 from ioito/automated-cherry-pick-of-#14139-upstream-release-3.9
Automated cherry pick of #14139: fix(region): openstack vm nic
2022-04-26 10:21:33 +08:00
Zexi Li
94515b7493 fix(baremetal): bond network not config and chage not found (#14148) 2022-04-26 02:49:54 +08:00
Zexi Li
5f91fbd917 Merge pull request #14142 from swordqiu/automated-cherry-pick-of-#14141-upstream-release-3.9
Automated cherry pick of #14141: fix: fail to delete storages with fake-deleted snapshots
2022-04-26 02:25:49 +08:00
Qiu Jian
077f7ab32a fix: fail to delete storages with fake-deleted snapshots 2022-04-25 22:44:44 +08:00
ioito
ab65271ecd fix(region): openstack vm nic 2022-04-25 16:59:22 +08:00
ioito
7204f92e6d fix(region): account probe time 2022-04-25 14:35:48 +08:00
ioito
e7f3ea9e2e fix(region): ipv6 gateway purge 2022-04-25 14:30:43 +08:00
Zexi Li
d92f702ee6 Merge pull request #14134 from ioito/automated-cherry-pick-of-#14133-upstream-release-3.9
Automated cherry pick of #14133: fix(region): hw request api
2022-04-24 19:21:55 +08:00
Zexi Li
b5b8a50f08 Merge pull request #14131 from ioito/automated-cherry-pick-of-#14130-upstream-release-3.9
Automated cherry pick of #14130: fix(region): vdi check
2022-04-24 19:20:25 +08:00
ioito
dcad355462 fix(region): hw request api 2022-04-24 17:54:38 +08:00
ioito
7b3f3ce656 fix(region): vdi check 2022-04-24 17:12:30 +08:00
Zexi Li
b1a86f59a1 Merge pull request #14125 from ioito/automated-cherry-pick-of-#14120-upstream-release-3.9
Automated cherry pick of #14120: fix(host): mount disk error
2022-04-24 15:05:25 +08:00
Zexi Li
b4db10a6d4 Merge pull request #14127 from zexi/automated-cherry-pick-of-#14123-upstream-release-3.9
Automated cherry pick of #14123: fix(region): make access_ip of host updatable
2022-04-24 14:29:35 +08:00
Zexi Li
24974a0495 fix(region): make access_ip of host updatable 2022-04-24 11:52:57 +08:00
ioito
33b3a63aa3 fix(host): mount disk error 2022-04-24 11:48:19 +08:00
Zexi Li
0f380935e1 Merge pull request #14122 from zexi/automated-cherry-pick-of-#14121-upstream-release-3.9
Automated cherry pick of #14121: fix(webconsole): record command input and ps1
2022-04-24 10:26:21 +08:00
Zexi Li
06e54c9988 fix(webconsole): record command input and ps1 2022-04-23 23:27:23 +08:00
Jian Qiu
2ad8d75482 feature: uos guest support (#14118)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-23 19:22:19 +08:00
Jian Qiu
8ad5da9eb2 fix: imags peripherals missing id (#14115)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-23 19:21:44 +08:00
Zexi Li
4cb9a859bf fix(webconsole): ssh command log with login user (#14113) 2022-04-23 19:21:16 +08:00
Zexi Li
eab2d5f862 Merge pull request #14110 from zexi/automated-cherry-pick-of-#14072-upstream-release-3.9
Automated cherry pick of #14072: feat(webconsole): ssh command log
2022-04-22 14:33:43 +08:00
Zexi Li
8ebcc6439b feat(webconsole): ssh command log 2022-04-22 14:22:59 +08:00
Zexi Li
be6e52fae9 Merge pull request #14106 from ioito/automated-cherry-pick-of-#14105-upstream-release-3.9
Automated cherry pick of #14105: fix(region): avoid panic
2022-04-22 14:20:28 +08:00
Zexi Li
e54ace048b Merge pull request #14109 from ioito/automated-cherry-pick-of-#14108-upstream-release-3.9
Automated cherry pick of #14108: fix(region): secgroup created time
2022-04-22 14:19:08 +08:00
ioito
2186835816 fix(region): secgroup created time 2022-04-22 14:07:31 +08:00
Zexi Li
15e5b9308d Merge pull request #14103 from zhaoxiangchun/automated-cherry-pick-of-#14102-upstream-release-3.9
Automated cherry pick of #14102: fix(cloudmon): add apsarea diskusage metric
2022-04-22 11:41:18 +08:00
ioito
deef04747f fix(region): avoid panic 2022-04-22 11:02:51 +08:00
zhaoxiangchun
bde8f46c77 fix(cloudmon): add apsarea diskusage metric 2022-04-21 20:25:48 +08:00
Zexi Li
bd527d2ce3 Merge pull request #14101 from ioito/automated-cherry-pick-of-#14100-upstream-release-3.9
Automated cherry pick of #14100: fix(region): sync resource created time
2022-04-21 20:08:14 +08:00
ioito
9a06a0ae37 fix(region): sync resource created time 2022-04-21 19:47:40 +08:00
Zexi Li
d56774b68f Merge pull request #14094 from ioito/automated-cherry-pick-of-#14093-upstream-release-3.9
Automated cherry pick of #14093: fix(region): avoid panic
2022-04-21 19:06:21 +08:00
Zexi Li
84bb52da9b Merge pull request #14097 from ioito/automated-cherry-pick-of-#14096-upstream-release-3.9
Automated cherry pick of #14096: fix(region): sync vm name
2022-04-21 19:05:44 +08:00
Zexi Li
cd9b5e1986 Merge pull request #14099 from ioito/automated-cherry-pick-of-#14098-upstream-release-3.9
Automated cherry pick of #14098: feat(region): ipv6 gateway sync for apsara
2022-04-21 19:04:35 +08:00
ioito
05d38e8f8a feat(region): ipv6 gateway sync for apsara 2022-04-21 17:47:35 +08:00
ioito
616f981535 fix(region): avoid panic 2022-04-21 17:09:45 +08:00
ioito
956a78245a fix(region): sync vm name 2022-04-21 17:04:01 +08:00
Zexi Li
aed5a2f9e6 Merge pull request #14092 from ioito/automated-cherry-pick-of-#14091-upstream-release-3.9
Automated cherry pick of #14091: fix(region): apsara oss to asapi
2022-04-20 21:57:25 +08:00
ioito
e7af9354a8 fix(region): apsara oss to asapi 2022-04-20 20:31:30 +08:00
Jian Qiu
102198fa81 fix: always recycle disk files (#14067)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-20 16:43:06 +08:00
Jian Qiu
d7d406a43f fix: adjust opsadmin permission (#14087)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-20 16:28:21 +08:00
Jian Qiu
6198ad0003 fix: arm support spice (#14090)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-20 16:27:59 +08:00
Jian Qiu
ae7bf39ada fix: cached image fail to refresh (#14082)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-20 15:02:28 +08:00
Jian Qiu
6b47369d36 fix: make notify template example field nullable (#14084)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-20 15:01:16 +08:00
Zexi Li
e33c3e60a2 Merge pull request #14077 from ioito/automated-cherry-pick-of-#14076-upstream-release-3.9
Automated cherry pick of #14076: fix(region): account sync
2022-04-19 19:43:39 +08:00
Zexi Li
99d66a42e7 Merge pull request #14080 from ioito/automated-cherry-pick-of-#14079-upstream-release-3.9
Automated cherry pick of #14079: fix(region): refactor huawei eip api
2022-04-19 19:43:17 +08:00
ioito
7e98279e2d fix(region): refactor huawei eip api 2022-04-19 18:53:24 +08:00
ioito
df5c5b0630 fix(region): account sync 2022-04-19 16:48:15 +08:00
Zexi Li
40c318af79 Merge pull request #14070 from ioito/automated-cherry-pick-of-#14069-upstream-release-3.9
Automated cherry pick of #14069: fix(region): enable and disable log for provider regions
2022-04-19 16:25:17 +08:00
Zexi Li
5c18ed6eb2 Merge pull request #14075 from ioito/automated-cherry-pick-of-#14074-upstream-release-3.9
Automated cherry pick of #14074: fix(region): apsara credential update
2022-04-19 16:21:31 +08:00
ioito
ba1ae72d80 fix(region): apsara credential update 2022-04-19 16:09:18 +08:00
ioito
729994ab4f fix(region): enable and disable log for provider regions 2022-04-19 11:44:39 +08:00
Zexi Li
8759cc1b07 Merge pull request #14064 from ioito/automated-cherry-pick-of-#14036-upstream-release-3.9
Automated cherry pick of #14036: fix(region): huawei lb api
2022-04-18 18:32:38 +08:00
ioito
e3c290c5ee fix(region): huawei lb api 2022-04-18 18:01:04 +08:00
Zexi Li
0412a519e4 Merge pull request #14056 from swordqiu/automated-cherry-pick-of-#14055-upstream-release-3.9
Automated cherry pick of #14055: feature: user reset credential
2022-04-18 16:29:50 +08:00
Zexi Li
2b399c40d5 Merge pull request #14061 from zhasm/automated-cherry-pick-of-#14060-upstream-release-3.9
Automated cherry pick of #14060: fix(notify): 通知模板更新
2022-04-18 15:57:54 +08:00
Zhang Dongliang
e34a8422b8 fix(notify): 通知模板更新 2022-04-18 15:49:15 +08:00
Zexi Li
72114cf293 Merge pull request #14059 from ioito/automated-cherry-pick-of-#14057-upstream-release-3.9
Automated cherry pick of #14057: fix(apigateway): log export timeout
2022-04-18 14:39:36 +08:00
ioito
89c76341ea fix(apigateway): log export timeout 2022-04-18 14:24:29 +08:00
Qiu Jian
a7f176cc42 feature: user reset credential 2022-04-18 00:18:35 +08:00
Jian Qiu
78af815471 fix: user project lists with metadata (#14054)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-18 00:06:11 +08:00
Jian Qiu
0fb04f2e22 fix: extend guest disk attributes (#14051)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-17 23:08:42 +08:00
Jian Qiu
a80340d8ac fix: allow opsadmin view logs (#14049)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-17 23:08:17 +08:00
Jian Qiu
3ac9208175 fix: guest backup bufixes (#14047)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-17 23:07:50 +08:00
Zexi Li
54f403a80d Merge pull request #14031 from ioito/automated-cherry-pick-of-#14030-upstream-release-3.9
Automated cherry pick of #14030: fix(region): qcloud bandwidth and networkinterface
2022-04-17 12:39:15 +08:00
Zexi Li
5ba1145c46 Merge pull request #14012 from ioito/automated-cherry-pick-of-#14011-upstream-release-3.9
Automated cherry pick of #14011: feat(region): external project create
2022-04-17 00:35:30 +08:00
Zexi Li
6e94f8ea37 Merge pull request #14034 from ioito/automated-cherry-pick-of-#14033-upstream-release-3.9
Automated cherry pick of #14033: fix(region): azure created time sync
2022-04-17 00:33:58 +08:00
Zexi Li
cb420ba554 Merge pull request #13859 from zhaoxiangchun/automated-cherry-pick-of-#13858-upstream-release-3.9
Automated cherry pick of #13858: feat(cloudmon): support bingo cloud metric pull
2022-04-17 00:32:47 +08:00
Jian Qiu
3ee0a77e7b fix: log auth fail event (#14044)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-16 18:35:20 +08:00
Jian Qiu
f874969910 fix: guest save image inherit projects of guest (#14042)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-16 09:34:46 +08:00
Zexi Li
f5c2ac5304 Merge pull request #14040 from swordqiu/automated-cherry-pick-of-#14039-upstream-release-3.9
Automated cherry pick of #14039: fix permission 20220416
2022-04-16 03:56:08 +08:00
Zexi Li
408cc8618b Merge pull request #14038 from swordqiu/automated-cherry-pick-of-#14037-upstream-release-3.9
Automated cherry pick of #14037: fix: sync IDP domain default project
2022-04-16 03:37:13 +08:00
Qiu Jian
39d0433190 fix permission 20220416 2022-04-16 02:33:40 +08:00
Qiu Jian
98ecbe4d19 fix: sync IDP domain default project 2022-04-16 00:24:29 +08:00
ioito
05efa456d3 fix(region): azure created time sync 2022-04-15 17:36:25 +08:00
ioito
3c153a189d fix(region): qcloud bandwidth and networkinterface 2022-04-15 16:11:04 +08:00
Zexi Li
e99ff7becb Merge pull request #14026 from ioito/automated-cherry-pick-of-#14025-upstream-release-3.9
Automated cherry pick of #14025: fix(region): apsara resource groups
2022-04-15 11:35:16 +08:00
Zexi Li
74603b4322 Merge pull request #14028 from ioito/automated-cherry-pick-of-#14027-upstream-release-3.9
Automated cherry pick of #14027: fix(climc): eip change bw cli
2022-04-15 11:33:59 +08:00
ioito
3fafd34406 fix(climc): eip change bw cli 2022-04-15 11:14:45 +08:00
Zexi Li
a92fc2ce99 Merge pull request #14024 from ioito/automated-cherry-pick-of-#14023-upstream-release-3.9
Automated cherry pick of #14023: fix(logger): action log export timeout
2022-04-14 20:41:03 +08:00
ioito
df00af8a5f fix(region): apsara resource groups 2022-04-14 20:38:39 +08:00
ioito
e387f8dbca fix(logger): action log export timeout 2022-04-14 14:42:29 +08:00
zhaoxiangchun
d9c0afc613 feat(cloudmon): support bingo cloud metric pull 2022-04-14 12:46:22 +08:00
Jian Qiu
7fbd233102 fix: encrypt by user id (#14022)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-14 07:55:07 +08:00
Jian Qiu
3c62aaa161 fix: log roles support utf8 (#14018)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-14 00:50:34 +08:00
Jian Qiu
67e3c9afbd fix: use user owner key to create user (#14016)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-13 23:16:04 +08:00
屈轩
ccb7e96095 fix(keystone): remove notify (#14014) 2022-04-13 23:15:24 +08:00
ioito
df0a76ece7 feat(region): external project create 2022-04-13 17:11:13 +08:00
Zexi Li
9c236c4803 Merge pull request #14008 from ioito/automated-cherry-pick-of-#14007-upstream-release-3.9
Automated cherry pick of #14007: fix(region): avoid export duplicate tag key
2022-04-13 16:21:00 +08:00
Zexi Li
269236e25f Merge pull request #14006 from rainzm/automated-cherry-pick-of-#14005-upstream-release-3.9
Automated cherry pick of #14005: feat(notify): add topic_type in notification details
2022-04-13 16:20:31 +08:00
ioito
c60c1c1aad fix(region): avoid export duplicate tag key 2022-04-13 16:09:10 +08:00
rainzm
1efc554ed5 feat(notify): add topic_type in notification details 2022-04-13 16:03:33 +08:00
Zexi Li
97b061e96d Merge pull request #14003 from ioito/automated-cherry-pick-of-#14002-upstream-release-3.9
Automated cherry pick of #14002: fix(region): host order by commit rate
2022-04-13 12:18:52 +08:00
ioito
ddb8d743fe fix(region): host order by commit rate 2022-04-13 11:29:17 +08:00
Jian Qiu
2d778cb80f fix: backup bugifxes: 1. not inherit projects of disk. 2. class not inherit by disk 3. fail to creat guest image (#14001)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-13 01:39:45 +08:00
Zexi Li
01cf767c33 Merge pull request #13981 from zexi/isp-mul-disks
fix(region): multi disk created after instance snapshot
2022-04-13 00:55:56 +08:00
Zexi Li
5ab684ea52 Merge pull request #13999 from swordqiu/automated-cherry-pick-of-#13998-upstream-release-3.9
Automated cherry pick of #13998: fix: adjust admin default permissions
2022-04-13 00:55:32 +08:00
Zexi Li
b34a607f46 Merge pull request #13997 from swordqiu/automated-cherry-pick-of-#13996-upstream-release-3.9
Automated cherry pick of #13996: fix: migrate set down time
2022-04-13 00:55:03 +08:00
Qiu Jian
3dd40047cf fix: adjust admin default permissions 2022-04-12 21:03:19 +08:00
Qiu Jian
4d05122d78 fix: migrate set down time 2022-04-12 20:25:05 +08:00
Zexi Li
ea79ab321c Merge pull request #13993 from ioito/automated-cherry-pick-of-#13987-upstream-release-3.9
Automated cherry pick of #13987: fix(region): huawei api
2022-04-12 16:45:28 +08:00
ioito
25ce1c4633 fix(region): huawei api 2022-04-12 16:01:39 +08:00
Zexi Li
4661d0b602 Merge pull request #13990 from ioito/automated-cherry-pick-of-#13989-upstream-release-3.9
Automated cherry pick of #13989: fix(region): avoid panic
2022-04-12 15:05:59 +08:00
ioito
a3ec1b4509 fix(region): avoid panic 2022-04-12 14:56:38 +08:00
Zexi Li
9cc827b9c0 Merge pull request #13980 from swordqiu/automated-cherry-pick-of-#13979-upstream-release-3.9
Automated cherry pick of #13979: fix: change qemu default version to 4.2.0
2022-04-12 14:38:12 +08:00
Zexi Li
ee74a8e8f4 Merge pull request #13986 from rainzm/automated-cherry-pick-of-#13985-upstream-release-3.9
Automated cherry pick of #13985: feat(notify): filter notification by topic_type
2022-04-12 14:37:49 +08:00
rainzm
115b91e681 feat(notify): filter notification by topic_type
之前的模型,消息和Event是一一对应的,一个Event可以和多个Topic对应,
为了支持通过Topic Type过滤消息,现在Event和Topic是一一对应的。
2022-04-12 14:23:53 +08:00
Zexi Li
60e13cc618 fix(region): multi disk created after instance snapshot 2022-04-12 13:53:26 +08:00
Jian Qiu
80848c95d7 fix: more detailed privilege hint (#13976)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-12 12:10:29 +08:00
Qiu Jian
56d76b4682 fix: change qemu default version to 4.2.0 2022-04-12 12:08:06 +08:00
Jian Qiu
559c3ae1d2 fix: encrypt server cannot attach disk with conflict encrypt key (#13974)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-12 10:12:26 +08:00
Jian Qiu
b3e2e9856b fix: disk create input preserve encrypt info (#13972)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-12 10:11:45 +08:00
Jian Qiu
1985bced03 fix: schduler not sync cached image class metadata (#13970)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-12 10:09:47 +08:00
Zexi Li
d161e5b6a8 Merge pull request #13968 from swordqiu/automated-cherry-pick-of-#13967-upstream-release-3.9
Automated cherry pick of #13967: fix: create table missing indexes
2022-04-11 22:59:27 +08:00
Qiu Jian
3af22d20b5 fix: create table missing indexes 2022-04-11 22:13:07 +08:00
Zexi Li
8880a44bfd Merge pull request #13963 from ioito/automated-cherry-pick-of-#13962-upstream-release-3.9
Automated cherry pick of #13962: fix(region): aws all regions
2022-04-11 20:46:21 +08:00
ioito
ab52a8fcac fix(region): aws all regions 2022-04-11 20:01:08 +08:00
Zexi Li
cccb5182b0 Merge pull request #13961 from zexi/automated-cherry-pick-of-#13960-upstream-release-3.9
Automated cherry pick of #13960: feat(region): kvm qemu version and cmdline info
2022-04-11 18:57:00 +08:00
Zexi Li
5915a2a3bb Merge pull request #13959 from ioito/automated-cherry-pick-of-#13958-upstream-release-3.9
Automated cherry pick of #13958: fix(region): cloud lake of permissions
2022-04-11 18:56:08 +08:00
Zexi Li
4239057b1d Merge pull request #13955 from zhaoxiangchun/automated-cherry-pick-of-#13954-upstream-release-3.9
Automated cherry pick of #13954: fix(region): app replace backgroud ctx
2022-04-11 18:37:58 +08:00
Zexi Li
92c5fd463f feat(region): kvm qemu version and cmdline info 2022-04-11 18:24:28 +08:00
ioito
97f03c87aa fix(region): cloud lake of permissions 2022-04-11 16:48:20 +08:00
Jian Qiu
3f34b2cbb3 fix: disable lock ctx check (#13957)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-11 14:56:14 +08:00
zhaoxiangchun
9c7b3a47a5 fix(region): app replace backgroud ctx 2022-04-11 14:52:05 +08:00
Jian Qiu
4d7496418b fix: support create encrypt key on create (#13951)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-11 14:41:24 +08:00
Zexi Li
12ae5f2f18 Merge pull request #13944 from ioito/automated-cherry-pick-of-#13940-upstream-release-3.9
Automated cherry pick of #13940: fix(region): google label encode
2022-04-11 09:53:09 +08:00
Zexi Li
0a434f7f75 Merge pull request #13953 from swordqiu/automated-cherry-pick-of-#13952-upstream-release-3.9
Automated cherry pick of #13952: fix: fangde desktop
2022-04-11 09:51:30 +08:00
Qiu Jian
38b01d5fc3 fix: fangde desktop 2022-04-11 09:32:47 +08:00
Jian Qiu
981715c0a0 fix: keystone issues: 1. add no_policy_violation_check (#13949)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-11 06:39:20 +08:00
Zexi Li
d4ac70645a Merge pull request #13942 from rainzm/automated-cherry-pick-of-#13941-upstream-release-3.9
Automated cherry pick of #13941: fix(region): exclude the host whose config or config.network is nil
2022-04-09 14:32:07 +08:00
Zexi Li
0244f5ce37 Merge pull request #13947 from ioito/automated-cherry-pick-of-#13946-upstream-release-3.9
Automated cherry pick of #13946: fix(region): read only fix
2022-04-08 20:11:21 +08:00
ioito
85ba3dad83 fix(region): read only fix 2022-04-08 19:51:15 +08:00
ioito
c226a684bf fix(region): google label encode 2022-04-08 17:54:49 +08:00
rainzm
b7d63ef3d1 fix(region): exclude the host whose config or config.network is nil 2022-04-08 17:49:50 +08:00
Zexi Li
d0f5ff6d3e Merge pull request #13939 from zexi/automated-cherry-pick-of-#13938-upstream-release-3.9
Automated cherry pick of #13938: fix(notify): lock panic when InitializeData
2022-04-08 15:20:25 +08:00
Zexi Li
85ff236532 fix(notify): lock panic when InitializeData 2022-04-08 15:11:16 +08:00
Zexi Li
f6cbc261d7 Merge pull request #13932 from ioito/automated-cherry-pick-of-#13922-upstream-release-3.9
Automated cherry pick of #13922: fix(region): account read only
2022-04-08 09:58:31 +08:00
Zexi Li
3f567afcc5 Merge pull request #13937 from zexi/automated-cherry-pick-of-#13936-upstream-release-3.9
Automated cherry pick of #13936: feat(build): add onecloud-base:v3.15.4-0 image build file
2022-04-08 09:41:01 +08:00
Zexi Li
7178f2a92d feat(build): add onecloud-base:v3.15.4-0 image build file 2022-04-08 09:39:23 +08:00
屈轩
17d232ce6a fix(region): qcloud client no need fetch bucket (#13921) 2022-04-08 01:36:01 +08:00
Jian Qiu
77eea49817 host: fix isImportFromLibvirt (#13934)
should check __origin_id not getOriginId

Signed-off-by: wanyaoqi <wanyaoqi1995@163.com>

Co-authored-by: wanyaoqi <wanyaoqi1995@163.com>
2022-04-08 01:30:15 +08:00
Zexi Li
5f26d49b3f Merge pull request #13902 from swordqiu/automated-cherry-pick-of-#13901-upstream-release-3.9
Automated cherry pick of #13901: fix: scheduler add missing context
2022-04-07 22:07:03 +08:00
ioito
944c62a933 fix(region): account read only 2022-04-07 19:28:23 +08:00
Zexi Li
3999950ee7 Merge pull request #13929 from ioito/automated-cherry-pick-of-#13928-upstream-release-3.9
Automated cherry pick of #13928: fix(region): aws storage type sync
2022-04-07 17:46:20 +08:00
ioito
d1bc8e0460 fix(region): aws storage type sync 2022-04-07 17:31:02 +08:00
Zexi Li
2cb105944f Merge pull request #13926 from ioito/automated-cherry-pick-of-#13923-upstream-release-3.9
Automated cherry pick of #13923: fix(region): cloudpods misc fix
2022-04-07 17:31:01 +08:00
Zexi Li
95d2be18a4 Merge pull request #13925 from ioito/automated-cherry-pick-of-#13924-upstream-release-3.9
Automated cherry pick of #13924: fix(region): ctx lock panic
2022-04-07 17:29:36 +08:00
ioito
38626f5f3e fix(region): ctx lock panic 2022-04-07 15:00:02 +08:00
ioito
0ff06fbb90 fix(region): cloudpods misc fix 2022-04-06 16:38:51 +08:00
Zexi Li
a0bbbf3c0f Merge pull request #13911 from swordqiu/automated-cherry-pick-of-#13910-upstream-release-3.9
Automated cherry pick of #13910: fix: migrate set downtime
2022-04-06 12:49:10 +08:00
Zexi Li
2be3d2f1de Merge pull request #13889 from swordqiu/automated-cherry-pick-of-#13888-upstream-release-3.9
Automated cherry pick of #13888: fix: panic when locking on Background or TODO context
2022-04-06 12:20:32 +08:00
Jian Qiu
14e1b8ee41 feature: event log add severity and kind fields (#13920)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-06 06:57:58 +08:00
Jian Qiu
4d3299b892 fix: logout event log (#13917)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-06 01:30:44 +08:00
Jian Qiu
dde16447dd fix: typos in predefined policy yaml (#13915)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 16:15:37 +08:00
Jian Qiu
48d3c1138b fix: chage parameter not compatible with fangde OS (#13908)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 16:14:46 +08:00
Jian Qiu
5fbf6eaf47 fix: save image for aarch64 os show os_arch of x86_64 (#13904)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 16:12:44 +08:00
Jian Qiu
bd5df1445c fix: update vendor for sqlchemy (#13913)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 16:11:53 +08:00
Qiu Jian
62fb3da5f9 fix: migrate set downtime 2022-04-05 15:17:23 +08:00
Qiu Jian
ec66231da5 fix: scheduler add missing context 2022-04-05 14:22:33 +08:00
屈轩
5378e21231 fix(region): sync aliyun remark to cloud (#13847) 2022-04-05 11:22:05 +08:00
屈轩
ed809bc3b9 fix(region): optimized disk-list (#13875) 2022-04-05 11:20:27 +08:00
Jian Qiu
23364d81c3 fix: cloudaccounts getMoreDetails should pass ctx (#13885)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 11:18:38 +08:00
Jian Qiu
3d2b7c796f fix: better handling of network not avaiable on host error (#13891)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 11:18:03 +08:00
Jian Qiu
5a8b0c95f1 fix: make temporary snapshots invisible (#13882)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 11:16:06 +08:00
Jian Qiu
ab0c8b6c20 fix: opsadmin should have project list and get permission (#13895)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 11:15:15 +08:00
Jian Qiu
fe929274eb Automated cherry pick of #13896: fix: host inherit class metadata from wire (#13897)
* fix: host inherit class metadata from wire

* deal with host delete exit

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 11:14:37 +08:00
Jian Qiu
8c7dee6f90 fix: make test format errors (#13899)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-05 11:14:08 +08:00
Qiu Jian
932d067334 fix: panic when locking on Background or TODO context 2022-04-05 00:13:40 +08:00
Zexi Li
2ae4863b09 Merge pull request #13864 from ioito/automated-cherry-pick-of-#13863-upstream-release-3.9
Automated cherry pick of #13863: fix(apigateway): convert net err to service error
2022-04-03 10:54:09 +08:00
Zexi Li
097b7b3b1b Merge pull request #13878 from rainzm/automated-cherry-pick-of-#13877-upstream-release-3.9
Automated cherry pick of #13877: fix(notify): enable websocket notifications defaultly for event notify
2022-04-02 18:59:33 +08:00
rainzm
a408a7634f fix(notify): enable websocket notifications defaultly for event notify 2022-04-02 18:51:53 +08:00
Zexi Li
e611ecfaa6 Merge pull request #13866 from rainzm/automated-cherry-pick-of-#13865-upstream-release-3.9
Automated cherry pick of #13865: Security notify
2022-04-02 18:11:59 +08:00
Zexi Li
9e5e3a2ecf Merge pull request #13873 from rainzm/automated-cherry-pick-of-#13872-upstream-release-3.9
Automated cherry pick of #13872: feat(region): add reason when syning status for backup storage
2022-04-02 18:02:51 +08:00
Zexi Li
7420715087 Merge pull request #13870 from ioito/automated-cherry-pick-of-#13869-upstream-release-3.9
Automated cherry pick of #13869: fix(region): vm public ip sync
2022-04-02 14:55:59 +08:00
rainzm
1b95d8d6ad feat(region): add reason when syning status for backup storage 2022-04-02 14:36:04 +08:00
Zexi Li
6b7cb73243 Merge pull request #13840 from ioito/automated-cherry-pick-of-#13839-upstream-release-3.9
Automated cherry pick of #13839: fix(region): qcloud use new dns api
2022-04-02 14:14:56 +08:00
ioito
6e42103d5e fix(region): qcloud use new dns api 2022-04-02 14:09:08 +08:00
ioito
75e0dc0a16 fix(region): vm public ip sync 2022-04-02 11:54:28 +08:00
Zexi Li
eec313cc98 Merge pull request #13868 from swordqiu/automated-cherry-pick-of-#13867-upstream-release-3.9
Automated cherry pick of #13867: fix: support qemu backing file with json format
2022-04-01 23:07:02 +08:00
Zexi Li
1872eb87ab Merge pull request #13861 from zhaoxiangchun/automated-cherry-pick-of-#13860-upstream-release-3.9
Automated cherry pick of #13860: fix(cloudmon): fix gcp metric pull
2022-04-01 23:03:59 +08:00
Qiu Jian
7ce2e36867 fix: support qemu backing file with json format 2022-04-01 21:10:44 +08:00
Zexi Li
300a7079fb Merge pull request #13849 from ioito/automated-cherry-pick-of-#13848-upstream-release-3.9
Automated cherry pick of #13848: fix(region): show account lake of permission
2022-04-01 19:48:56 +08:00
rainzm
590dd27358 feat(climc): add notify-event-send 2022-04-01 19:03:41 +08:00
rainzm
2c348ae64c feat(keystone): call event notify when user is locked 2022-04-01 19:03:41 +08:00
rainzm
e50cc0207d feat(host): notify when snapshot memory checksum test fail 2022-04-01 19:03:41 +08:00
rainzm
9e6248edd3 feat(image): notify when image checksum test fail 2022-04-01 19:03:41 +08:00
rainzm
18cb197a9e feat(cloudcommon): notify when the checksum of db table record test fail
1. remove pkg/cloudcommon/db dependency on pkg/cloudcommon
2. init db notifier in pkg/cloudcommon.InitDB
3. move interface 'IStartable' to pkg/util/logclient package which alone references above interface
2022-04-01 19:03:41 +08:00
rainzm
640c4a286a feat(cloudcommon): add SystemEventNotify and SystemExceptionNotifyWithResult 2022-04-01 19:03:41 +08:00
rainzm
1b662edde5 feat(notify): add topic 'checksum test faile' and 'user lock' 2022-04-01 19:03:41 +08:00
ioito
b9502a5c63 fix(apigateway): convert net err to service error 2022-04-01 15:40:02 +08:00
zhaoxiangchun
a16f80f153 fix(cloudmon): fix gcp metric pull
1. external_id format
2022-04-01 14:51:41 +08:00
Jian Qiu
b59cfa64f0 fix: fail to snapshot and clone due to mismatch class metadata (#13857)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-01 13:19:14 +08:00
Jian Qiu
0d0d1feaf5 fix: cloudshell use dynamic keystone endpoint (#13854)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-04-01 13:14:56 +08:00
Zexi Li
053257b34d Merge pull request #13851 from zexi/fix-arm-ovmf
fix(host): arm ovmf not injected
2022-04-01 12:28:57 +08:00
Zexi Li
7bf1531c66 fix(host): arm ovmf not injected 2022-04-01 11:51:46 +08:00
ioito
fdf2af3e23 fix(region): show account lake of permission 2022-04-01 11:43:05 +08:00
Jian Qiu
4651414f9d fix: aarch64 ensure UEFI (#13845)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-03-31 18:16:07 +08:00
Zexi Li
d739ac9278 Merge pull request #13843 from swordqiu/automated-cherry-pick-of-#13842-upstream-release-3.9
Automated cherry pick of #13842: fix: region should be refered by consts.GetRegion()
2022-03-31 17:01:57 +08:00
Qiu Jian
4bc8425073 fix: region should be refered by consts.GetRegion() 2022-03-31 16:59:28 +08:00
屈轩
042ab4eb02 fix(apigateway): export timeout (#13828) 2022-03-31 13:51:12 +08:00
Jian Qiu
1378c8a358 feature: add webconsole enabled user the default webconsole policy (#13838)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-03-31 13:50:53 +08:00
Jian Qiu
60ba75ca0d fix: image may missing os_arch and checksum (#13836)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-03-31 13:50:19 +08:00
Zexi Li
c1c870c2fa Merge pull request #13825 from ioito/automated-cherry-pick-of-#13824-upstream-release-3.9
Automated cherry pick of #13824: fix(region): curl vender update
2022-03-30 16:56:04 +08:00
Zexi Li
97e3fe16ca Merge pull request #13832 from rainzm/automated-cherry-pick-of-#13831-upstream-release-3.9
Automated cherry pick of #13831: fix(glance): check image after initializing s3
2022-03-30 16:53:17 +08:00
rainzm
10a3662a0e fix(glance): check image after initializing s3 2022-03-30 16:03:06 +08:00
ioito
810823080e fix(region): curl vender update 2022-03-30 11:05:20 +08:00
Zexi Li
5d9f026d5f Merge pull request #13822 from swordqiu/automated-cherry-pick-of-#13821-upstream-release-3.9
Automated cherry pick of #13821: fix: remote file not move
2022-03-30 10:14:37 +08:00
Zexi Li
f74793fc2c fix(telegraf-raid-plugin): zombies recycle (#13816) 2022-03-30 07:40:47 +08:00
Qiu Jian
db58d52881 fix: remote file not move 2022-03-30 07:36:01 +08:00
Zexi Li
15f6e65c97 Merge pull request #13814 from ioito/automated-cherry-pick-of-#13813-upstream-release-3.9
Automated cherry pick of #13813: fix(apigateway): report data for cloudpods
2022-03-29 22:38:11 +08:00
ioito
cdceda5876 fix(apigateway): report data for cloudpods 2022-03-29 18:18:58 +08:00
Zexi Li
adf4b78566 Merge pull request #13812 from swordqiu/automated-cherry-pick-of-#13811-upstream-release-3.9
Automated cherry pick of #13811: fix: change arm default machine virt
2022-03-29 13:27:38 +08:00
Qiu Jian
c48171a6b3 fix: change arm default machine virt 2022-03-29 12:45:34 +08:00
Zexi Li
44c3495e8e Merge pull request #13809 from ioito/automated-cherry-pick-of-#13808-upstream-release-3.9
Automated cherry pick of #13808: fix(region): cloudprovider distinct
2022-03-29 11:53:48 +08:00
Zexi Li
3b237fda58 Merge pull request #13804 from ioito/automated-cherry-pick-of-#13803-upstream-release-3.9
Automated cherry pick of #13803: fix(region): order by host storage
2022-03-29 11:53:16 +08:00
ioito
b7bedb5830 fix(region): cloudprovider distinct 2022-03-29 09:51:59 +08:00
Zexi Li
1e17d1d038 feat(keystone): config option db record checksum (#13807) 2022-03-28 12:40:41 +08:00
ioito
8920f31c67 fix(region): order by host storage 2022-03-28 11:33:13 +08:00
Jian Qiu
a93bf7aa58 fix: predefined ops/sec/adt manager roles (#13802)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-03-27 22:49:36 +08:00
Jian Qiu
971fb2336a fix: add GetEncryptKeysRpc (#13800)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-03-27 14:49:12 +08:00
Jian Qiu
be6ebcc5f9 region/host: fix reset ceph root disk after rebuild root (#13797)
Ceph storage disk rebuild root will rename origin disk to backing
disk, so we need use backing disk reset snapshot.

Signed-off-by: wanyaoqi <wanyaoqi1995@163.com>

Co-authored-by: wanyaoqi <wanyaoqi1995@163.com>
2022-03-27 11:34:46 +08:00
Zexi Li
a509068e52 fix(logger): SActionlog should return ActionLogManager (#13796) 2022-03-27 11:01:40 +08:00
Zexi Li
63d6da7540 feat(vendor): update vendor for master (#13793) 2022-03-27 11:01:12 +08:00
Zexi Li
1c315881a1 Merge pull request #13791 from zexi/automated-cherry-pick-of-#13788-upstream-release-3.9
Automated cherry pick of #13788: update ghw dependency
2022-03-26 19:05:30 +08:00
Tai Groot
24fdff215f update vendor modules 2022-03-26 19:05:00 +08:00
Tai Groot
709535c1bb update ghw dependency 2022-03-26 19:05:00 +08:00
Zexi Li
58d1eda84e Merge pull request #13781 from zhaoxiangchun/automated-cherry-pick-of-#13780-upstream-release-3.9
Automated cherry pick of #13780: fix(cloudmon): cloudmon fix
2022-03-26 19:01:16 +08:00
Zexi Li
e0dc71164c Merge pull request #13790 from swordqiu/automated-cherry-pick-of-#13789-upstream-release-3.9
Automated cherry pick of #13789: fix: aes decrypt failure
2022-03-26 19:00:52 +08:00
Zexi Li
941122e6fc Merge pull request #13786 from swordqiu/automated-cherry-pick-of-#13785-upstream-release-3.9
Automated cherry pick of #13785: fix: instance group with classic network cannot associate with eip
2022-03-26 19:00:21 +08:00
Qiu Jian
8fd80418d2 fix: aes decrypt failure 2022-03-26 15:19:58 +08:00
Jian Qiu
abc7643e65 feature: qemu encryption support (#13776)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-03-26 14:52:56 +08:00
Qiu Jian
74e1d3c296 fix: instance group with classic network cannot associate with eip 2022-03-26 03:26:38 +08:00
Zexi Li
4dd3c499fd fix(host-deployer): chage for exists cloudroot user (#13783) 2022-03-25 20:10:21 +08:00
zhaoxiangchun
aa3655122f fix(cloudmon): cloudmon fix
1. 增加account tag
2. aws region pull metric add lock
2022-03-25 16:31:26 +08:00
Zexi Li
c511f30bde Merge pull request #13778 from ioito/automated-cherry-pick-of-#13777-upstream-release-3.9
Automated cherry pick of #13777: fix(region): cpu float to int
2022-03-25 11:45:24 +08:00
ioito
2354905bed fix(region): cpu float to int 2022-03-25 11:30:50 +08:00
Zexi Li
7bcbdda962 Merge pull request #13773 from ioito/automated-cherry-pick-of-#13772-upstream-release-3.9
Automated cherry pick of #13772: fix(region): bingo node attr
2022-03-24 21:25:27 +08:00
Zexi Li
1eab1c3734 Merge pull request #13770 from ioito/automated-cherry-pick-of-#13769-upstream-release-3.9
Automated cherry pick of #13769: fix(region): cloudpods misc fix
2022-03-24 21:24:32 +08:00
Zexi Li
104bec269d Merge pull request #13775 from ioito/automated-cherry-pick-of-#13774-upstream-release-3.9
Automated cherry pick of #13774: fix(region): add seclib aes
2022-03-24 18:53:59 +08:00
ioito
d70ccebf95 fix(region): add seclib aes 2022-03-24 18:09:04 +08:00
ioito
1010efd110 fix(region): bingo node attr 2022-03-24 17:05:34 +08:00
ioito
0909ee914e fix(region): cloudpods misc fix 2022-03-24 14:33:51 +08:00
Zexi Li
163502760d Merge pull request #13768 from swordqiu/automated-cherry-pick-of-#13767-upstream-release-3.9
Automated cherry pick of #13767: fix: host deploy chmod after mkdir to ensure permission
2022-03-23 23:45:25 +08:00
Zexi Li
1a22106a4b Merge pull request #13754 from ioito/automated-cherry-pick-of-#13753-upstream-release-3.9
Automated cherry pick of #13753: fix(region): clean glance image cache
2022-03-23 23:44:23 +08:00
Qiu Jian
19d8d579e4 fix: host deploy chmod after mkdir to ensure permission 2022-03-23 20:37:22 +08:00
Zexi Li
21d72cb847 Merge pull request #13765 from rainzm/automated-cherry-pick-of-#13764-upstream-release-3.9
Automated cherry pick of #13764: fix(region): release lock in SyncAppEnvironments
2022-03-23 16:41:20 +08:00
rainzm
023e1d55fa fix(region): release lock in SyncAppEnvironments 2022-03-23 16:32:52 +08:00
Zexi Li
da24a2ac0d Merge pull request #13763 from ioito/automated-cherry-pick-of-#13762-upstream-release-3.9
Automated cherry pick of #13762: fix(region): bingocloud sync fix
2022-03-23 15:58:29 +08:00
ioito
9256fbb8b0 fix(region): bingocloud sync fix 2022-03-23 15:47:29 +08:00
Zexi Li
686052e22d Merge pull request #13750 from ioito/automated-cherry-pick-of-#13749-upstream-release-3.9
Automated cherry pick of #13749: fix(region): vmware no need secgroup
2022-03-23 11:00:13 +08:00
Zexi Li
11ebed2582 Merge pull request #13758 from ioito/automated-cherry-pick-of-#13757-upstream-release-3.9
Automated cherry pick of #13757: fix(region): host sched tag sync
2022-03-23 00:28:14 +08:00
Zexi Li
fc845fee4d Merge pull request #13761 from swordqiu/automated-cherry-pick-of-#13760-upstream-release-3.9
Automated cherry pick of #13760: fix: add more set class metadata commands
2022-03-23 00:27:25 +08:00
Qiu Jian
30f35398e2 fix: add more set class metadata commands 2022-03-22 22:06:39 +08:00
ioito
7e1afd56a6 fix(region): host sched tag sync 2022-03-22 18:54:39 +08:00
ioito
a99734a4ac fix(region): clean glance image cache 2022-03-22 17:30:17 +08:00
ioito
daf743a269 fix(region): vmware no need secgroup 2022-03-21 20:09:17 +08:00
Zexi Li
eeab97193d Merge pull request #13748 from zexi/automated-cherry-pick-of-#13747-upstream-release-3.9
Automated cherry pick of #13747: fix(region): add host cpuset used cores
2022-03-21 18:39:55 +08:00
Zexi Li
f02a91d947 fix(region): add host cpuset used cores 2022-03-21 18:18:34 +08:00
Zexi Li
2e6ce0c630 Merge pull request #13688 from ioito/automated-cherry-pick-of-#13687-upstream-release-3.9
Automated cherry pick of #13687: fix(region): log export
2022-03-21 18:17:43 +08:00
Zexi Li
e117144b20 feat(region,host): memory snapshot checksum (#13746) 2022-03-21 17:54:42 +08:00
Zexi Li
15e0d71739 Merge pull request #13742 from ioito/automated-cherry-pick-of-#13738-upstream-release-3.9
Automated cherry pick of #13738: fix(region): elastic search public connection
2022-03-21 16:41:13 +08:00
Zexi Li
b234a36a3e Merge pull request #13745 from zexi/automated-cherry-pick-of-#13744-upstream-release-3.9
Automated cherry pick of #13744: fix(region): guest and host cpuset one-to-one validate
2022-03-21 16:40:25 +08:00
Zexi Li
f0760c979f feat(cloudcommon,region,keystone,logger): use enable_db_checksum_tables option control checksum record (#13737)
region: guests_tbl
keystone: user
logger: action_tbl
2022-03-21 13:28:37 +08:00
Zexi Li
0736f06021 fix(region): guest and host cpuset one-to-one validate 2022-03-21 12:54:15 +08:00
Zexi Li
4fbff1ea98 Merge pull request #13740 from ioito/automated-cherry-pick-of-#13739-upstream-release-3.9
Automated cherry pick of #13739: fix(region): sku init
2022-03-21 12:52:14 +08:00
Zexi Li
5bf40fd644 Merge pull request #13722 from zhaoxiangchun/automated-cherry-pick-of-#13721-upstream-release-3.9
Automated cherry pick of #13721: fix(host): fix guest nicStat  Metric in host
2022-03-21 12:51:15 +08:00
ioito
d27529a07d fix(region): elastic search public connection 2022-03-21 12:10:08 +08:00
ioito
35ee1afbd5 fix(region): sku init 2022-03-21 11:46:52 +08:00
Zexi Li
46576944d9 Merge pull request #13728 from ioito/automated-cherry-pick-of-#13727-upstream-release-3.9
Automated cherry pick of #13727: fix(region): sku name
2022-03-21 11:38:42 +08:00
Zexi Li
6919512044 Merge pull request #13735 from rainzm/automated-cherry-pick-of-#13734-upstream-release-3.9
Automated cherry pick of #13734: fix(region): get project id correctly when recovery guest
2022-03-21 11:26:39 +08:00
rainzm
2c58779569 fix(region): get project id correctly when recovery guest 2022-03-21 11:04:16 +08:00
Zexi Li
68d1e126f4 Merge pull request #13731 from rainzm/automated-cherry-pick-of-#13730-upstream-release-3.9
Automated cherry pick of #13730: fix(region): use ServerCreateInput as instanceBackup.ServerConfig
2022-03-18 19:52:35 +08:00
rainzm
05e4869013 fix(region): use ServerCreateInput as instanceBackup.ServerConfig 2022-03-18 19:28:11 +08:00
ioito
9d865538d9 fix(region): sku name 2022-03-18 18:08:48 +08:00
Rain Zheng
41eb60b651 fix(region): use original project to recovery from instance backup (#13726) 2022-03-18 17:09:19 +08:00
zhaoxiangchun
01c18c93e0 fix(host): fix guest nicStat Metric in host 2022-03-18 15:46:45 +08:00
Zexi Li
ac97daa1c4 Merge pull request #13719 from ioito/automated-cherry-pick-of-#13718-upstream-release-3.9
Automated cherry pick of #13718: fix(region): host schedtags with topology
2022-03-18 14:36:39 +08:00
ioito
c0a78b2b1a fix(region): host schedtags with topology 2022-03-18 14:11:27 +08:00
Zexi Li
611ce88ec7 Merge pull request #13716 from ioito/automated-cherry-pick-of-#13715-upstream-release-3.9
Automated cherry pick of #13715: fix(region): sku init
2022-03-18 11:52:03 +08:00
ioito
05501e7457 fix(region): sku init 2022-03-18 10:08:42 +08:00
Zexi Li
d0adedd2b2 Merge pull request #13709 from ioito/automated-cherry-pick-of-#13708-upstream-release-3.9
Automated cherry pick of #13708: fix(region): google gcp and label
2022-03-17 21:27:45 +08:00
Zexi Li
c3d29ec4da Merge pull request #13712 from swordqiu/automated-cherry-pick-of-#13711-upstream-release-3.9
Automated cherry pick of #13711: fix: host deploy mkdir permission
2022-03-17 21:24:59 +08:00
Qiu Jian
73f5c5e102 fix: host deploy mkdir permission 2022-03-17 16:52:57 +08:00
ioito
1752d6bc48 fix(region): google gcp and label 2022-03-17 16:25:44 +08:00
Zexi Li
5c02b0bab4 Merge pull request #13703 from ioito/automated-cherry-pick-of-#13702-upstream-release-3.9
Automated cherry pick of #13702: fix(region): sync with storagecachedimage status
2022-03-16 18:10:23 +08:00
Zexi Li
cca80f3471 Merge pull request #13697 from ioito/automated-cherry-pick-of-#13696-upstream-release-3.9
Automated cherry pick of #13696: fix(region): cloudpods error
2022-03-16 17:46:09 +08:00
Zexi Li
5170ec6285 Merge pull request #13700 from ioito/automated-cherry-pick-of-#13699-upstream-release-3.9
Automated cherry pick of #13699: fix(region): sync owner id
2022-03-16 17:36:57 +08:00
Zexi Li
f08c97223f Merge pull request #13706 from rainzm/automated-cherry-pick-of-#13705-upstream-release-3.9
Automated cherry pick of #13705: feat(region,esxiagent): support specifying storage when creating a data disk
2022-03-16 17:36:15 +08:00
rainzm
003729723d feat(region,esxiagent): support specifying storage when creating a data disk 2022-03-16 16:40:15 +08:00
ioito
2799b73bb2 fix(region): sync with storagecachedimage status 2022-03-16 14:42:37 +08:00
ioito
517209b05c fix(region): sync owner id 2022-03-15 21:34:50 +08:00
ioito
54aea36d90 fix(region): cloudpods error 2022-03-15 20:20:56 +08:00
Zexi Li
be314acf88 Merge pull request #13694 from ioito/automated-cherry-pick-of-#13693-upstream-release-3.9
Automated cherry pick of #13693: fix(region): redis project sync
2022-03-15 20:01:03 +08:00
ioito
ee88ba74ba fix(region): redis project sync 2022-03-15 19:51:25 +08:00
Zexi Li
aa67d7c4c1 Merge pull request #13692 from zexi/automated-cherry-pick-of-#13691-upstream-release-3.9
Automated cherry pick of #13691: Db checksum
2022-03-15 14:23:47 +08:00
Zexi Li
b456aa32ec fix(keystone): db_checksum_skip_init blacklist 2022-03-15 11:34:30 +08:00
Jian Qiu
e95f3519a8 fix(host/region): fix import servers from libvirt (#13689)
make servers_import_from_libvirt workable in container environment.
bindmount libvirt monitor dir to host container and use procutils read
guest xml configure.

Signed-off-by: wanyaoqi <wanyaoqi1995@163.com>

Co-authored-by: wanyaoqi <wanyaoqi1995@163.com>
2022-03-15 00:51:23 +08:00
屈轩
63a3064544 fix(host): upload storage info with zone id (#13560) 2022-03-15 00:50:53 +08:00
Zexi Li
2537062ee9 feat(cloudcommon): db record checksum for consistency (#13682) 2022-03-14 23:30:26 +08:00
ioito
1f8af4eac1 fix(region): log export 2022-03-14 15:23:24 +08:00
Zexi Li
1d1d26e35f Merge pull request #13684 from ioito/automated-cherry-pick-of-#13683-upstream-release-3.9
Automated cherry pick of #13683: fix(region): remove random sync
2022-03-14 15:11:29 +08:00
ioito
f23fb2e79e fix(region): remove random sync 2022-03-14 10:36:28 +08:00
屈轩
ad5b3e1ea0 fix(keystone): auth token error (#13192) 2022-03-12 16:52:08 +08:00
Zexi Li
a3568a77ca Merge pull request #13678 from swordqiu/automated-cherry-pick-of-#13677-upstream-release-3.9
Automated cherry pick of #13677: fix: server inherit the vdi_protocol of image property
2022-03-11 21:09:25 +08:00
Qiu Jian
d4ea856caa fix: server inherit the vdi_protocol of image property 2022-03-11 19:48:38 +08:00
屈轩
b6bccf3b8f fix(glance): image save (#13674) 2022-03-11 16:16:52 +08:00
屈轩
a343308554 fix(region): google disk name (#13671) 2022-03-11 16:15:32 +08:00
Zexi Li
b193c8e08e Merge pull request #13644 from ioito/automated-cherry-pick-of-#13643-upstream-release-3.9
Automated cherry pick of #13643: fix(region): bingo cloud request proxy
2022-03-11 10:18:47 +08:00
屈轩
2c21ac9810 fix(climc): add purge splitable for action and cloudevent (#13664) 2022-03-10 23:41:58 +08:00
Zexi Li
73f67385b9 Merge pull request #13646 from ioito/automated-cherry-pick-of-#13645-upstream-release-3.9
Automated cherry pick of #13645: fix(region): remove nullable tag
2022-03-10 19:36:55 +08:00
Zexi Li
07ae798843 Merge pull request #13660 from swordqiu/automated-cherry-pick-of-#13659-upstream-release-3.9
Automated cherry pick of #13659: fix: aws s3 object with leading slash
2022-03-10 18:51:07 +08:00
Zexi Li
100a3f6023 Merge pull request #13668 from rainzm/automated-cherry-pick-of-#13667-upstream-release-3.9
Automated cherry pick of #13667: fix(host): avoid deadlock when fetch image fails
2022-03-10 18:50:24 +08:00
rainzm
4355b3e79d fix(host): avoid deadlock when fetch image fails 2022-03-10 18:38:11 +08:00
Qiu Jian
d4554e22da fix: aws s3 object with leading slash 2022-03-10 11:03:29 +08:00
Zexi Li
47138ad84d Merge pull request #13642 from rainzm/automated-cherry-pick-of-#13641-upstream-release-3.9
Automated cherry pick of #13641: optimization for class metadata and instance backup
2022-03-10 01:12:46 +08:00
Zexi Li
2b76012cf5 Merge pull request #13658 from ioito/automated-cherry-pick-of-#13657-upstream-release-3.9
Automated cherry pick of #13657: fix(region): host guest cnt for deleted
2022-03-10 01:11:11 +08:00
ioito
3aa63bea58 fix(region): host guest cnt for deleted 2022-03-09 15:57:45 +08:00
Zexi Li
19d8d389dc Merge pull request #13648 from ioito/automated-cherry-pick-of-#13647-upstream-release-3.9
Automated cherry pick of #13647: fix(region): huawei storage type
2022-03-09 14:58:28 +08:00
Zexi Li
91e1cc28dd Merge pull request #13654 from zhaoxiangchun/automated-cherry-pick-of-#13652-upstream-release-3.9
Automated cherry pick of #13652: fix(cloudmon): 3.9 release add Usage pull func
2022-03-09 14:58:03 +08:00
Zexi Li
104941e750 Merge pull request #13653 from rainzm/automated-cherry-pick-of-#13651-upstream-release-3.9
Automated cherry pick of #13651: fix(scheduler): init db after init auth
2022-03-09 14:57:02 +08:00
ioito
6be5c30d1f fix(region): huawei storage type 2022-03-09 14:45:56 +08:00
zhaoxiangchun
80a4ed6516 fix(cloudmon): 3.9 release add Usage pull func 2022-03-09 14:35:11 +08:00
rainzm
0735ea23a2 fix(scheduler): init db after init auth 2022-03-09 14:33:59 +08:00
ioito
0cd13477b9 fix(region): remove nullable tag 2022-03-09 11:58:52 +08:00
屈轩
4614e07920 fix(region): show guest cnt for host (#13640) 2022-03-09 10:07:20 +08:00
ioito
754ab9dc22 fix(region): bingo cloud request proxy 2022-03-08 20:49:27 +08:00
rainzm
44c9dece67 feat(region): try to restore to the original project when the instance backup is recoveryed 2022-03-08 19:08:30 +08:00
rainzm
5d63202e2e fix(region): get mountpoint from guestdisk not disk's metadata 2022-03-08 19:08:30 +08:00
rainzm
19530722da feat(scheduler): class metadata ignore public system image 2022-03-08 19:08:30 +08:00
Zexi Li
041d99db8b Merge pull request #13616 from ioito/automated-cherry-pick-of-#13569-upstream-release-3.9
Automated cherry pick of #13569: feat(region): support bingocloud sync
2022-03-08 14:47:47 +08:00
Zexi Li
3aae7b9113 Merge pull request #13637 from rainzm/automated-cherry-pick-of-#13636-upstream-release-3.9
Automated cherry pick of #13636: fix(region): add generate_name if not before validate guest creating data
2022-03-08 13:04:11 +08:00
Zexi Li
aee9ee2abf Merge pull request #13547 from zexi/update-etcd-package-v3.9
feat(vendor): update etcd package for v3.9
2022-03-08 10:41:56 +08:00
Zexi Li
f3b0275885 Merge pull request #13630 from zexi/automated-cherry-pick-of-#13629-upstream-release-3.9
Automated cherry pick of #13629: feat(region): instance snapshot with_memory filter
2022-03-08 10:40:57 +08:00
Zexi Li
aba19b4f42 Merge pull request #13632 from rainzm/automated-cherry-pick-of-#13631-upstream-release-3.9
Automated cherry pick of #13631: Instancebackup force delete
2022-03-08 10:40:30 +08:00
Zexi Li
396f2d81d5 Merge pull request #13634 from ioito/automated-cherry-pick-of-#13633-upstream-release-3.9
Automated cherry pick of #13633: fix(region): allow skip server sync by system tags
2022-03-08 10:34:34 +08:00
rainzm
7e8b30f0be fix(region): add generate_name if not before validate guest creating data 2022-03-07 19:00:01 +08:00
ioito
63f2c992b1 fix(region): allow skip server sync by system tags 2022-03-07 17:45:26 +08:00
rainzm
aaa70fe02e feat(region): support for forced deletion of instance backups 2022-03-07 17:39:33 +08:00
rainzm
f3d0364d6a feat(climc): add DeleteWithParam 2022-03-07 17:39:33 +08:00
rainzm
0cb26254bb feat(region): check backup storage status before making backup 2022-03-07 17:39:33 +08:00
Zexi Li
e3c4e0685f Merge pull request #13607 from swordqiu/automated-cherry-pick-of-#13606-upstream-release-3.9
Automated cherry pick of #13606: fix: disable cache for oidc auth callback
2022-03-07 16:01:05 +08:00
Zexi Li
23e1af8cc5 Merge pull request #13621 from ioito/automated-cherry-pick-of-#13620-upstream-release-3.9
Automated cherry pick of #13620: fix(region): qcloud disk range changed
2022-03-07 16:00:16 +08:00
Zexi Li
53b3a78657 Merge pull request #13625 from zexi/automated-cherry-pick-of-#13624-upstream-release-3.9
Automated cherry pick of #13624: feat(telegraf-raid-plugin): update rootfs and image version
2022-03-07 15:59:32 +08:00
Zexi Li
0c9cf44129 feat(region): instance snapshot with_memory filter 2022-03-07 15:58:50 +08:00
Zexi Li
f9b9cf321f feat(telegraf-raid-plugin): update rootfs and image version 2022-03-07 12:14:40 +08:00
ioito
5e296d3324 fix(region): qcloud disk range changed 2022-03-07 11:14:24 +08:00
Rain Zheng
fe8ee9b4fb Automated cherry pick of #13618: Instancebackup/syncstatus (#13619)
* feat(region): add status in snapshot or save phase for instancebackup

* feat(region): add sync_status for instancebackup

* fix(region): ignore uefi support check when related property is empty

* feat(region): add syncstatus for backup storage

* fix(region): correct stage for InstanceBackupDeleteTask

* feat(climc): add syncstatus for backupstorage and instancebackup
2022-03-07 09:52:32 +08:00
ioito
935aaca3c6 feat(region): support bingocloud sync 2022-03-06 17:28:50 +08:00
Rain Zheng
d473a7f162 fix(scheduledtask): treat hour and minute as utc time (#13611) 2022-03-06 17:08:00 +08:00
屈轩
1436a28bb8 fix(region): rds project sync (#13614) 2022-03-06 17:07:14 +08:00
Qiu Jian
f1448583d0 fix: disable cache for oidc auth callback 2022-03-06 12:01:25 +08:00
Zexi Li
3c33be673a Merge pull request #13604 from ioito/automated-cherry-pick-of-#13603-upstream-release-3.9
Automated cherry pick of #13603: fix(region): expend length lb info
2022-03-06 11:07:17 +08:00
ioito
a8a8b5e5ac fix(region): expend length lb info 2022-03-06 11:05:47 +08:00
Zexi Li
9c36ddc1a3 Merge pull request #13583 from ioito/automated-cherry-pick-of-#13582-upstream-release-3.9
Automated cherry pick of #13582: fix(keystone, apigateway): project role with metadata
2022-03-06 10:21:18 +08:00
Zexi Li
fb21daf79a Merge pull request #13601 from ioito/automated-cherry-pick-of-#13600-upstream-release-3.9
Automated cherry pick of #13600: fix(region): remote useless info of azure lb
2022-03-06 10:20:08 +08:00
ioito
20bbe57327 fix(region): remote useless info of azure lb 2022-03-06 10:03:11 +08:00
Zexi Li
3f240113cb Merge pull request #13597 from rainzm/automated-cherry-pick-of-#13596-upstream-release-3.9
Automated cherry pick of #13596: fix(ansible): use the correct length value 'text'
2022-03-04 22:00:30 +08:00
rainzm
2e321832eb fix(ansible): use the correct length value 'text' 2022-03-04 16:13:31 +08:00
Zexi Li
008614798b Merge pull request #13594 from ioito/automated-cherry-pick-of-#13593-upstream-release-3.9
Automated cherry pick of #13593: fix(region): external project filter by manager id
2022-03-04 12:28:30 +08:00
ioito
fb886df9fe fix(region): external project filter by manager id 2022-03-04 12:03:43 +08:00
Zexi Li
22d9c5961e Merge pull request #13580 from zexi/automated-cherry-pick-of-#13577-upstream-release-3.9
Automated cherry pick of #13577: feat(host): server instance snapshot with memory
2022-03-04 10:17:18 +08:00
Zexi Li
6b0710028f Merge pull request #13574 from rainzm/automated-cherry-pick-of-#13573-upstream-release-3.9
Automated cherry pick of #13573: class metadata limit for vpc, wire and network
2022-03-03 21:01:25 +08:00
Zexi Li
4f5766d858 Merge pull request #13590 from rainzm/automated-cherry-pick-of-#13589-upstream-release-3.9
Automated cherry pick of #13589: fix(region,devtool): get ssh port from 'servers/<id>/sshport' api
2022-03-03 21:00:20 +08:00
Zexi Li
49140e8d42 Merge pull request #13585 from ioito/automated-cherry-pick-of-#13584-upstream-release-3.9
Automated cherry pick of #13584: fix(region): not allow merge default secgroup
2022-03-03 20:59:23 +08:00
rainzm
588eab575d fix(region,devtool): get ssh port from 'servers/<id>/sshport' api 2022-03-03 19:05:04 +08:00
Zexi Li
2042799c16 Merge pull request #13579 from zexi/automated-cherry-pick-of-#13578-upstream-release-3.9
Automated cherry pick of #13578: fix(host): remove addr of qemu nic option
2022-03-03 16:25:29 +08:00
Zexi Li
f2e59887f6 Merge pull request #13588 from zexi/automated-cherry-pick-of-#13581-upstream-release-3.9
Automated cherry pick of #13581: fix(region): instance snapshot reset should match self guest
2022-03-03 16:25:03 +08:00
Zexi Li
98f8c76dd0 fix(region): instance snapshot reset should match self guest 2022-03-03 15:52:50 +08:00
ioito
2688dbe4a8 fix(region): not allow merge default secgroup 2022-03-03 15:49:59 +08:00
ioito
00fdad777f fix(keystone, apigateway): project role with metadata 2022-03-03 15:35:27 +08:00
Zexi Li
b211b8e569 feat(host): server instance snapshot with memory 2022-03-03 14:37:29 +08:00
Zexi Li
74a7ada3c1 Merge pull request #13576 from swordqiu/automated-cherry-pick-of-#13575-upstream-release-3.9
Automated cherry pick of #13575: fix: host update sn
2022-03-03 09:29:43 +08:00
Zexi Li
2cc257cb75 fix(host): remove addr of qemu nic option 2022-03-03 09:29:06 +08:00
Qiu Jian
e5ec456608 fix: host update sn 2022-03-02 20:35:58 +08:00
rainzm
39289c486b fix(scheduler): ignore classmetadata check when it is nil 2022-03-02 17:32:42 +08:00
rainzm
08c03964c0 feat(region): increase classmetadata limit for vpc, wire, network and host
host will inherit wire's classmetadata when adding netif and netif is
admin type
2022-03-02 17:32:42 +08:00
Zexi Li
fc423dadd6 Merge pull request #13571 from ioito/automated-cherry-pick-of-#13570-upstream-release-3.9
Automated cherry pick of #13570: fix(host): rbd disk path
2022-03-02 12:01:03 +08:00
ioito
ff8dac1f29 fix(host): rbd disk path 2022-03-02 11:44:41 +08:00
Zexi Li
2aa6d5d680 Merge pull request #13567 from ioito/automated-cherry-pick-of-#13566-upstream-release-3.9
Automated cherry pick of #13566: fix(notify): add panic notify
2022-03-01 19:18:52 +08:00
Zexi Li
e583935aa5 Merge pull request #13564 from rainzm/automated-cherry-pick-of-#13563-upstream-release-3.9
Automated cherry pick of #13563: fix(region): expiration notification works for resources after renewal
2022-03-01 19:06:46 +08:00
rainzm
6040286514 fix(region): expiration notification works for resources after renewal 2022-03-01 17:22:48 +08:00
ioito
fe48e8a04c fix(notify): add panic notify 2022-03-01 17:19:19 +08:00
Zexi Li
a6b5c8ad1c Merge pull request #13556 from ioito/automated-cherry-pick-of-#13555-upstream-release-3.9
Automated cherry pick of #13555: fi(apigateway): user info with totp
2022-03-01 11:15:12 +08:00
Zexi Li
9ca75daa3b Merge pull request #13562 from ioito/automated-cherry-pick-of-#13561-upstream-release-3.9
Automated cherry pick of #13561: fix(climc): add cmd for global vpc
2022-03-01 11:07:57 +08:00
Zexi Li
0faa4af662 Merge pull request #13553 from ioito/automated-cherry-pick-of-#13552-upstream-release-3.9
Automated cherry pick of #13552: fix(yunionapi): reset password with base64
2022-03-01 11:04:29 +08:00
ioito
bc5c833ce5 fix(climc): add cmd for global vpc 2022-02-28 15:25:39 +08:00
Zexi Li
ed1933e1ef Merge pull request #13550 from ioito/automated-cherry-pick-of-#13529-upstream-release-3.9
Automated cherry pick of #13529: fix(region): aws rds create
2022-02-28 15:14:43 +08:00
ioito
70e6f06452 fi(apigateway): user info with totp 2022-02-28 11:16:10 +08:00
ioito
e461367556 fix(yunionapi): reset password with base64 2022-02-28 10:55:38 +08:00
Zexi Li
4e15212c64 Merge pull request #13294 from rainzm/automated-cherry-pick-of-#13293-upstream-release-3.9
Automated cherry pick of #13293: fix(glance): convert image in s3 storage
2022-02-28 10:48:30 +08:00
Zexi Li
9c3aafce7b feat(region): add server-cpuset-cores cmd to get pinned and usable cores (#13549) 2022-02-26 21:44:01 +08:00
屈轩
f4a68dbde4 fix(region): project tags filter for usages (#13477) 2022-02-26 14:28:27 +08:00
rainzm
c4160e72b4 fix(glance): re-convert as long as subformat is not active
之前的写法会导致saving或者save_fail状态的subformat,不会再次
转换。而且镜像是否需要转换,由ImageCheckTask决定了,ImageConvertTask
只需要注意不重新转换active的subformat就好了,save失败的subformat
也应该设置状态为save_fail。
2022-02-25 18:54:45 +08:00
rainzm
485157fb9e fix(glance): convert image in s3 storage 2022-02-25 18:54:45 +08:00
ioito
4971ad5450 fix(region): aws rds create 2022-02-25 18:35:36 +08:00
Zexi Li
70d434662e feat(vendor): update etcd package 2022-02-25 16:50:53 +08:00
Zexi Li
cfba372181 Merge pull request #13537 from ioito/automated-cherry-pick-of-#13536-upstream-release-3.9
Automated cherry pick of #13536: fix(region): nutanix nic sync
2022-02-25 16:39:19 +08:00
Zexi Li
6fd4523655 Merge pull request #13544 from zexi/automated-cherry-pick-of-#13543-upstream-release-3.9
Automated cherry pick of #13543: fix(host): arm kvm duplicate video0 device
2022-02-25 10:14:17 +08:00
Zexi Li
b371c1b493 Merge pull request #13540 from ioito/automated-cherry-pick-of-#13539-upstream-release-3.9
Automated cherry pick of #13539: fix(climc): add --help for other cli
2022-02-24 23:48:59 +08:00
Zexi Li
99d108b4f4 fix(host): arm kvm duplicate video0 device 2022-02-24 23:18:41 +08:00
Zexi Li
dae58011b8 Merge pull request #13542 from rainzm/automated-cherry-pick-of-#13541-upstream-release-3.9
Automated cherry pick of #13541: fix(region): call parent's PostCreate in virtualResourceBase.PostCreate
2022-02-24 19:08:44 +08:00
rainzm
7a11e76f2d fix(region): call parent's PostCreate in virtualResourceBase.PostCreate 2022-02-24 18:53:10 +08:00
ioito
b04015baa1 fix(climc): add --help for other cli 2022-02-24 16:16:33 +08:00
ioito
4cb1b83dba fix(region): nutanix nic sync 2022-02-24 14:35:38 +08:00
Zexi Li
8a33d4adb1 Merge pull request #13530 from swordqiu/automated-cherry-pick-of-#13510-upstream-release-3.9
Automated cherry pick of #13510: fix: allow IDP initiated SAML login
2022-02-24 11:53:39 +08:00
Zexi Li
085dbd32f2 Merge pull request #13535 from ioito/automated-cherry-pick-of-#13480-upstream-release-3.9
Automated cherry pick of #13480: fix(climc): support --help args
2022-02-24 11:53:18 +08:00
ioito
64e93c485a fix(climc): support --help args 2022-02-24 11:16:23 +08:00
Zexi Li
3956fb2c74 Merge pull request #13532 from rainzm/automated-cherry-pick-of-#13531-upstream-release-3.9
Automated cherry pick of #13531: fix(region): init scalinggroup controller in correct order
2022-02-24 10:18:05 +08:00
rainzm
8082ef4f63 fix(region): init scalinggroup controller in correct order 2022-02-23 20:14:48 +08:00
Zexi Li
ab7cd85201 Automated cherry pick of #13527: feat(region,host): server cpuset supported (#13528)
* feat(region,host): server cpuset supported

* feat(region,host): cpuset remove
2022-02-23 16:07:15 +08:00
Qiu Jian
bf4a0ae949 fix: allow IDP initiated SAML login 2022-02-23 15:31:40 +08:00
Zexi Li
23b6f965b3 Merge pull request #13526 from rainzm/automated-cherry-pick-of-#13525-upstream-release-3.9
Automated cherry pick of #13525: feat(region,host): support packing and unpacking instancebackup
2022-02-23 14:54:20 +08:00
rainzm
3068e081b7 fix: update generated model 2022-02-23 14:45:52 +08:00
rainzm
8f22e72399 feat(region,host): support packing and unpacking instancebackup 2022-02-23 14:30:41 +08:00
Zexi Li
48f45387cf Merge pull request #13519 from ioito/automated-cherry-pick-of-#13518-upstream-release-3.9
Automated cherry pick of #13518: fix(region): vm nic sync with network
2022-02-22 19:23:18 +08:00
Rain Zheng
f58eba6ff0 fix(region): delete disk actually when cleaning disks (#13522) 2022-02-22 17:59:13 +08:00
ioito
26041425e5 fix(region): vm nic sync with network 2022-02-22 15:58:43 +08:00
Zexi Li
0ebd63b325 Merge pull request #13516 from ioito/automated-cherry-pick-of-#13515-upstream-release-3.9
Automated cherry pick of #13515: fix(host): host register
2022-02-22 15:53:20 +08:00
ioito
b981dcf280 fix(host): host register 2022-02-22 15:29:36 +08:00
Zexi Li
a4a8ff15ac Merge pull request #13512 from ioito/automated-cherry-pick-of-#13511-upstream-release-3.9
Automated cherry pick of #13511: fix(host): ceph df with total_bytes
2022-02-22 11:04:00 +08:00
ioito
a97c3c0282 fix(host): ceph df with total_bytes 2022-02-22 09:48:18 +08:00
Zexi Li
165d3de4c4 fix(region): live migrate skip_kernel_check api (#13509) 2022-02-21 21:22:30 +08:00
Zexi Li
8b58ae5991 Merge pull request #13497 from ioito/automated-cherry-pick-of-#13496-upstream-release-3.9
Automated cherry pick of #13496: fix(host): add host online offline log
2022-02-21 18:11:34 +08:00
Zexi Li
4d71e83fcb Merge pull request #13494 from zexi/automated-cherry-pick-of-#13493-upstream-release-3.9
Automated cherry pick of #13493: fix(host-image): update build flags
2022-02-21 18:10:20 +08:00
Zexi Li
07e0e0d455 Merge pull request #13500 from swordqiu/automated-cherry-pick-of-#13499-upstream-release-3.9
Automated cherry pick of #13499: feature: policy limited by time range
2022-02-21 18:09:54 +08:00
Zexi Li
0862edc3dc Merge pull request #13503 from ioito/automated-cherry-pick-of-#13502-upstream-release-3.9
Automated cherry pick of #13502: fix(climc): log purge
2022-02-21 18:09:19 +08:00
Zexi Li
e00c2a7312 Merge pull request #13505 from swordqiu/automated-cherry-pick-of-#13504-upstream-release-3.9
Automated cherry pick of #13504: fix: user create user nil pointer error
2022-02-21 16:53:21 +08:00
Qiu Jian
c0860eb514 fix: user create user nil pointer error 2022-02-21 12:17:35 +08:00
ioito
8dcf415f15 fix(climc): log purge 2022-02-21 10:46:57 +08:00
Qiu Jian
5635ff99e1 feature: policy limited by time range 2022-02-20 02:17:40 +08:00
ioito
2270b3d595 fix(host): add host online offline log 2022-02-18 18:31:37 +08:00
Zexi Li
223872fe1f fix(host-image): update build flags 2022-02-18 10:54:25 +08:00
Zexi Li
53c545c49c Merge pull request #13490 from rainzm/automated-cherry-pick-of-#13489-upstream-release-3.9
Automated cherry pick of #13489: feat(climc): add public and private for backupstorage
2022-02-18 09:50:39 +08:00
Zexi Li
028d83d534 Merge pull request #13479 from ioito/automated-cherry-pick-of-#13478-upstream-release-3.9
Automated cherry pick of #13478: fix(climc): server create with disk desc
2022-02-18 09:50:04 +08:00
Zexi Li
5f595f2b8e Merge pull request #13492 from zexi/automated-cherry-pick-of-#13485-upstream-release-3.9
Automated cherry pick of #13485: fix(baremetal): update baremetal-base image version
2022-02-18 09:48:08 +08:00
Zexi Li
1dd1457de5 fix(baremetal): update baremetal-base image version 2022-02-17 22:10:02 +08:00
rainzm
b88cacf7d7 feat(climc): add public and private for backupstorage 2022-02-17 19:23:30 +08:00
Zexi Li
2c28f3f47e Merge pull request #13487 from rainzm/automated-cherry-pick-of-#13486-upstream-release-3.9
Automated cherry pick of #13486: fix(region): send SERVER_DELETE event notify when guest is actually deleted
2022-02-17 17:55:13 +08:00
rainzm
8eaf0cd8ac fix(region): send SERVER_DELETE event notify when guest is actually deleted 2022-02-17 17:45:09 +08:00
Zexi Li
b46633c317 Merge pull request #13476 from swordqiu/automated-cherry-pick-of-#13475-upstream-release-3.9
Automated cherry pick of #13475: fix: not initialize input BIOS
2022-02-17 11:59:01 +08:00
Zexi Li
d54392d89d Merge pull request #13482 from rainzm/automated-cherry-pick-of-#13481-upstream-release-3.9
Automated cherry pick of #13481: Fix for secret/resource
2022-02-16 20:24:54 +08:00
rainzm
db9ef0985e fix: add common Inherit 2022-02-16 20:16:51 +08:00
rainzm
918772bdb7 fix(image): add independent PerformChangeOwner for image 2022-02-16 20:16:51 +08:00
Zexi Li
13571fcb48 Merge pull request #13372 from rainzm/automated-cherry-pick-of-#13371-upstream-release-3.9
Automated cherry pick of #13371: Classification of resources
2022-02-16 17:52:03 +08:00
rainzm
d55330da2d fix(scheduler): add GetAllClassMedata in mock test 2022-02-16 17:45:01 +08:00
rainzm
e54788521d feat: add GetAllClassMetadata for tenantcache 2022-02-16 17:45:01 +08:00
rainzm
7b03a02c90 feat: add project with class metadata 2022-02-16 17:45:01 +08:00
rainzm
3f057a6fa5 feat(climc): add (set-)class-metadata 2022-02-16 17:45:01 +08:00
rainzm
e9b34f2842 fix(region): remove secret level resource 2022-02-16 17:45:01 +08:00
rainzm
4a1460d1cf feat(region): add class-metadata for standaloneAnonResource 2022-02-16 17:45:01 +08:00
rainzm
c3976861d1 feat(region): check class_metadate when attach disk to guest 2022-02-16 17:45:01 +08:00
rainzm
2d7c77d8c2 feat(region,image): inherit between resources
host -> guest -> disk -> image/backup/snapshot
          |
instance image/backup/snapshot -> image/backup/snapshot
2022-02-16 17:45:01 +08:00
rainzm
5d0707a4e8 feat(scheduler): add class_metadata predicate 2022-02-16 17:45:00 +08:00
rainzm
a78fdaa975 feat(region,image): cachedimage inherits the class metadata of image 2022-02-16 17:45:00 +08:00
rainzm
761defc187 feat(region,image): add SecretResourceBase 2022-02-16 17:45:00 +08:00
rainzm
3d97646620 feat(region): add metadata prefix 'cls'
Such tags have inherited and isolated properties
2022-02-16 17:45:00 +08:00
ioito
890fbd5ea4 fix(climc): server create with disk desc 2022-02-16 16:25:08 +08:00
Qiu Jian
8aeebbad16 fix: not initialize input BIOS 2022-02-16 14:24:36 +08:00
Zexi Li
e2bde82254 Merge pull request #13469 from ioito/automated-cherry-pick-of-#13468-upstream-release-3.9
Automated cherry pick of #13468: fix(glance): image statistics
2022-02-16 10:27:19 +08:00
Zexi Li
4b0f456a2f Merge pull request #13458 from ioito/automated-cherry-pick-of-#13457-upstream-release-3.9
Automated cherry pick of #13457: fix(keyston): add sync log for ldap
2022-02-15 19:04:25 +08:00
Zexi Li
570b08328a Merge pull request #13464 from ioito/automated-cherry-pick-of-#13463-upstream-release-3.9
Automated cherry pick of #13463: fix(region): tag key export
2022-02-15 19:02:53 +08:00
Zexi Li
08a86eddb9 fix(baremetal): grub msdos partition detected (#13467) 2022-02-15 18:58:12 +08:00
ioito
7f47724ebe fix(glance): image statistics 2022-02-15 18:47:47 +08:00
ioito
2f9a1ceb1a fix(region): tag key export 2022-02-15 18:16:38 +08:00
Zexi Li
c43e03fcb3 Merge pull request #13461 from ioito/automated-cherry-pick-of-#13460-upstream-release-3.9
Automated cherry pick of #13460: fix(region): qcloud tdsql tags
2022-02-15 17:54:38 +08:00
ioito
f9d49a6a74 fix(region): qcloud tdsql tags 2022-02-15 17:30:54 +08:00
ioito
d7209a17d6 fix(keyston): add sync log for ldap 2022-02-15 15:48:03 +08:00
Zexi Li
839f95014a Merge pull request #13452 from swordqiu/automated-cherry-pick-of-#13451-upstream-release-3.9
Automated cherry pick of #13451: fix: class network mtu should consider default_mtu
2022-02-15 15:25:17 +08:00
Zexi Li
4a4089482e Merge pull request #13455 from zexi/automated-cherry-pick-of-#13454-upstream-release-3.9
Automated cherry pick of #13454: fix(host): aarch64 vm usb id duplicated
2022-02-15 15:24:26 +08:00
Zexi Li
49ebfa9d32 fix(host): aarch64 vm usb id duplicated 2022-02-15 11:36:06 +08:00
Qiu Jian
1338845c0a fix: class network mtu should consider default_mtu 2022-02-15 09:59:39 +08:00
Zexi Li
d84eb997ad Merge pull request #13449 from swordqiu/automated-cherry-pick-of-#13442-upstream-release-3.9
Automated cherry pick of #13442: fix: filter server by vip or eip of vip
2022-02-15 09:52:37 +08:00
Qiu Jian
f480e8d8fd fix: filter server by vip or eip of vip 2022-02-15 08:59:05 +08:00
Zexi Li
0ade12c14d Merge pull request #13447 from ioito/automated-cherry-pick-of-#13446-upstream-release-3.9
Automated cherry pick of #13446: fix(host): arm qemu remove -no-kvm
2022-02-14 21:31:54 +08:00
Zexi Li
ab25805da5 Merge pull request #13444 from ioito/automated-cherry-pick-of-#13443-upstream-release-3.9
Automated cherry pick of #13443: fix(region): minio s3 object set acl error
2022-02-14 18:59:14 +08:00
ioito
dcea58a705 fix(host): arm qemu remove -no-kvm 2022-02-14 17:47:18 +08:00
ioito
3741b588c6 fix(region): minio s3 object set acl error 2022-02-14 15:23:50 +08:00
Zexi Li
57e46a5694 Merge pull request #13440 from swordqiu/automated-cherry-pick-of-#13439-upstream-release-3.9
Automated cherry pick of #13439: fix: delete disk skip recycle_bin
2022-02-14 09:59:43 +08:00
Zexi Li
7bab145b3b Merge pull request #13410 from ioito/automated-cherry-pick-of-#13409-upstream-release-3.9
Automated cherry pick of #13409: fix(region): associate manager with external project
2022-02-14 09:59:00 +08:00
Qiu Jian
90f7b9aa8a fix: delete disk skip recycle_bin 2022-02-13 20:46:40 +08:00
Zexi Li
f7d881a830 Merge pull request #13427 from swordqiu/automated-cherry-pick-of-#13426-upstream-release-3.9
Automated cherry pick of #13426: fix: delay block stream after server start
2022-02-12 21:15:23 +08:00
Zexi Li
b27c2f3b3f Merge pull request #13431 from swordqiu/automated-cherry-pick-of-#13430-upstream-release-3.9
Automated cherry pick of #13430: feature: local user add need_reset_password field
2022-02-12 21:14:42 +08:00
Zexi Li
4e783b2ab8 Merge pull request #13434 from swordqiu/automated-cherry-pick-of-#13433-upstream-release-3.9
Automated cherry pick of #13433: feature: customizable totp issuer string
2022-02-12 21:14:07 +08:00
Zexi Li
f085291db3 Merge pull request #13437 from swordqiu/automated-cherry-pick-of-#13436-upstream-release-3.9
Automated cherry pick of #13436: fix: missing instance type for cloned server
2022-02-12 21:13:36 +08:00
Qiu Jian
85be7c2894 fix: missing instance type for cloned server 2022-02-12 06:18:01 +08:00
Qiu Jian
8f851c4bda feature: local user add need_reset_password field 2022-02-12 02:21:33 +08:00
Qiu Jian
359b257195 feature: customizable totp issuer string 2022-02-12 02:18:27 +08:00
Qiu Jian
ad0c588520 fix: delay block stream after server start 2022-02-12 00:34:18 +08:00
Zexi Li
4aa675515c Merge pull request #13423 from ioito/automated-cherry-pick-of-#13422-upstream-release-3.9
Automated cherry pick of #13422: feat(region): bingo cloud cli
2022-02-11 20:13:47 +08:00
ioito
c3523cff4f feat(region): bingo cloud cli 2022-02-11 18:26:02 +08:00
Zexi Li
0493496015 fix(region): vm_sync_isolated_device i18n (#13420) 2022-02-11 12:16:27 +08:00
Zexi Li
b0cdde4a4c feat(baremetal): grub http boot initrd and kernel (#13416) 2022-02-11 12:14:53 +08:00
Zexi Li
68824c3ae9 Merge pull request #13417 from ioito/automated-cherry-pick-of-#13415-upstream-release-3.9
Automated cherry pick of #13415: fix(region): action log
2022-02-11 11:38:00 +08:00
ioito
3e7c86f7ac fix(region): action log 2022-02-11 11:12:09 +08:00
Zexi Li
8d878bb795 Merge pull request #13407 from ioito/automated-cherry-pick-of-#13406-upstream-release-3.9
Automated cherry pick of #13406: fix(region): skip first sync waf rule
2022-02-10 18:26:48 +08:00
Zexi Li
1dfd878c35 Merge pull request #13412 from swordqiu/automated-cherry-pick-of-#13411-upstream-release-3.9
Automated cherry pick of #13411: feature: policy import/export utils
2022-02-10 18:25:51 +08:00
Qiu Jian
cae3bd6849 feature: policy import/export utils 2022-02-10 18:16:05 +08:00
ioito
b61f3f9b49 fix(region): associate manager with external project 2022-02-10 17:17:29 +08:00
ioito
858aa15700 fix(region): skip first sync waf rule 2022-02-10 16:23:51 +08:00
Zexi Li
32d94e25cd fix(baremetal): add boot_loader syslinux and grub option (#13402) 2022-02-09 20:36:33 +08:00
Zexi Li
d67cf16a10 Merge pull request #13405 from zhaoxiangchun/automated-cherry-pick-of-#13404-upstream-release-3.9
Automated cherry pick of #13404: fix(cloudmon): fix  Apsara elb metric
2022-02-09 17:40:43 +08:00
Zexi Li
0523a79d23 Merge pull request #13399 from ioito/automated-cherry-pick-of-#13398-upstream-release-3.9
Automated cherry pick of #13398: fix(region): huawei routetable
2022-02-09 17:35:39 +08:00
zhaoxiangchun
6a87e9f2b1 fix(cloudmon): fix Apsara elb metric 2022-02-09 17:29:57 +08:00
ioito
0bf93d3cea fix(region): huawei routetable 2022-02-09 14:07:33 +08:00
Zexi Li
eb652dc041 Merge pull request #13397 from ioito/automated-cherry-pick-of-#13396-upstream-release-3.9
Automated cherry pick of #13396: fix(host): sparse file seek
2022-02-09 10:40:16 +08:00
ioito
700053515e fix(host): sparse file seek 2022-02-09 10:31:57 +08:00
Zexi Li
856282c9c8 Merge pull request #13394 from zexi/automated-cherry-pick-of-#13392-upstream-release-3.9
Automated cherry pick of #13392: fix(host): make tls-creds empty when no tls migrate
2022-02-08 16:45:24 +08:00
Zexi Li
474f3ae550 fix(host): make tls-creds empty when no tls migrate 2022-02-08 16:42:34 +08:00
Zexi Li
798b9207a9 Merge pull request #13391 from zexi/automated-cherry-pick-of-#13389-upstream-release-3.9
Automated cherry pick of #13389: fix(region): batch migrate use enable_tls_migration option
2022-02-08 16:13:22 +08:00
Zexi Li
6227df8e3d fix(region): batch migrate use enable_tls_migration option 2022-02-08 15:13:09 +08:00
Zexi Li
20f7d3f270 Merge pull request #13387 from zexi/automated-cherry-pick-of-#13386-upstream-release-3.9
Automated cherry pick of #13386: fix(host): dist prepare migrate_certs
2022-02-08 12:36:30 +08:00
Zexi Li
bb08fcc7b2 fix(host): dist prepare migrate_certs 2022-02-08 12:30:44 +08:00
Zexi Li
b166e1ec58 Merge pull request #13383 from swordqiu/automated-cherry-pick-of-#13382-upstream-release-3.9
Automated cherry pick of #13382: fix: qemu-img info force share (-U)
2022-02-08 10:09:49 +08:00
Qiu Jian
b3f7eb473f fix: qemu-img info force share (-U) 2022-02-08 02:27:22 +08:00
Zexi Li
7d1468e3ad feat(region,keystone): add enable_tls_migration config (#13380) 2022-02-07 15:24:34 +08:00
Zexi Li
e6ab6ebdc5 Merge pull request #13377 from swordqiu/automated-cherry-pick-of-#13376-upstream-release-3.9
Automated cherry pick of #13376: feature: cleanup native hugepage codes
2022-02-07 14:20:31 +08:00
Qiu Jian
df8d6e155a feature: cleanup native hugepage codes 2022-02-06 17:59:47 +08:00
Jian Qiu
9314f0e1ce feature: baremetal tftp send customized files according to a file map (#13375)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-02-03 21:21:26 +08:00
Rain Zheng
cb06987b01 fix(host): judge whether the resource exists correctly (#13369) 2022-01-29 00:58:27 +08:00
屈轩
993f714856 fix(region): optimized public image sync (#13356) 2022-01-29 00:56:49 +08:00
Jian Qiu
3f58cc45e4 fix: test secgroup rules to ovn ACL and recode guest adminSecgroup (#13362)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2022-01-29 00:51:30 +08:00
屈轩
0f356fbb51 fix(region): update go mod (#13365) 2022-01-28 15:28:39 +08:00
屈轩
05aedacc62 fix(common): tenant cache name (#13367) 2022-01-28 15:28:14 +08:00
屈轩
ae641bb72a fix(host,region): add action log (#13303) 2022-01-28 11:18:02 +08:00
屈轩
0a16ceb2bb fix(region): set sys disk index to 0 (#13323) 2022-01-28 11:16:55 +08:00
屈轩
b3dbbe867a fix(region): 支持同时指定项目切自动创建项目 (#13360) 2022-01-28 11:13:24 +08:00
Zexi Li
414953534c Merge pull request #13354 from ioito/automated-cherry-pick-of-#13341-upstream-release-3.9
Automated cherry pick of #13341: feat(host): transfer sparse file over network
2022-01-27 15:33:50 +08:00
Zexi Li
9e7c4eb939 Merge pull request #13349 from ioito/automated-cherry-pick-of-#13348-upstream-release-3.9
Automated cherry pick of #13348: fix(region): clear vm secgroup
2022-01-27 15:28:55 +08:00
Zexi Li
94e9506f9f Merge pull request #13351 from zexi/automated-cherry-pick-of-#13339-upstream-release-3.9
Automated cherry pick of #13339: Tls migration
2022-01-27 15:28:18 +08:00
ioito
72584a936e feat(host): transfer sparse file over network 2022-01-27 14:33:57 +08:00
Zexi Li
1eb2b52f6c Merge pull request #13346 from ioito/automated-cherry-pick-of-#13345-upstream-release-3.9
Automated cherry pick of #13345: fix(region): nutanix disk
2022-01-27 12:25:33 +08:00
Zexi Li
bbbed559a3 feat(region,host): tls live migrating 2022-01-27 12:05:32 +08:00
Zexi Li
d900384c10 feat(util): add tls util 2022-01-27 12:05:31 +08:00
ioito
47842e63e8 fix(region): clear vm secgroup 2022-01-27 11:17:30 +08:00
ioito
b398a22233 fix(region): nutanix disk 2022-01-27 10:17:09 +08:00
Zexi Li
940a94dd79 Merge pull request #13343 from swordqiu/automated-cherry-pick-of-#13342-upstream-release-3.9
Automated cherry pick of #13342: feature: support fangde OS
2022-01-27 01:37:11 +08:00
Qiu Jian
b637dc414f feature: support fangde OS 2022-01-26 23:27:38 +08:00
Zexi Li
61feb018a9 Merge pull request #13337 from ioito/automated-cherry-pick-of-#13336-upstream-release-3.9
Automated cherry pick of #13336: fix(region): huawei rtb name
2022-01-26 19:08:06 +08:00
Zexi Li
cfc62fac68 Merge pull request #13333 from ioito/automated-cherry-pick-of-#13332-upstream-release-3.9
Automated cherry pick of #13332: fix(region): nutanix image and vpc vlan id
2022-01-26 18:38:49 +08:00
Zexi Li
982783ed36 Merge pull request #13328 from rainzm/automated-cherry-pick-of-#13327-upstream-release-3.9
Automated cherry pick of #13327: fix(scheduledtask): format time from utc_offset
2022-01-26 17:48:38 +08:00
ioito
eaddf74eee fix(region): huawei rtb name 2022-01-26 16:13:42 +08:00
ioito
9f60311a75 fix(region): nutanix image and vpc vlan id 2022-01-26 15:48:40 +08:00
Zexi Li
273bb7bb98 Merge pull request #13331 from swordqiu/automated-cherry-pick-of-#13330-upstream-release-3.9
Automated cherry pick of #13330: fix: support qemu 4.2.0
2022-01-26 13:56:25 +08:00
Qiu Jian
06fd0efdbe fix: support qemu 4.2.0 2022-01-26 13:47:40 +08:00
rainzm
5229646094 fix(scheduledtask): format time from utc_offset 2022-01-26 12:02:53 +08:00
Zexi Li
ab873ee0c2 Merge pull request #13315 from ioito/automated-cherry-pick-of-#13314-upstream-release-3.9
Automated cherry pick of #13314: fix(keystone): add global setting
2022-01-26 10:47:57 +08:00
Zexi Li
9f2e16aa94 Merge pull request #13326 from rainzm/automated-cherry-pick-of-#13325-upstream-release-3.9
Automated cherry pick of #13325: Bugfix/bakcup
2022-01-26 10:47:04 +08:00
Zexi Li
d7d1f602bf Merge pull request #13320 from ioito/automated-cherry-pick-of-#13319-upstream-release-3.9
Automated cherry pick of #13319: fix(region): nutanix disk type
2022-01-26 10:30:00 +08:00
rainzm
1f613a9961 fix(region): marshall correctly SDiskBackup.DiskConfig 2022-01-25 17:53:21 +08:00
rainzm
237d9b650b fix(host): init local backup dir 2022-01-25 17:53:21 +08:00
ioito
717d6025bd fix(region): nutanix disk type 2022-01-25 16:52:27 +08:00
Zexi Li
575b49aa87 Merge pull request #13317 from ioito/automated-cherry-pick-of-#13316-upstream-release-3.9
Automated cherry pick of #13316: fix(region): nutanix instance vcpu
2022-01-25 14:58:00 +08:00
ioito
37ea4ad7bb fix(region): nutanix instance vcpu 2022-01-25 14:46:45 +08:00
ioito
5f2c6b4964 fix(keystone): add global setting 2022-01-25 14:15:58 +08:00
Zexi Li
457f3f80fb Merge pull request #13309 from swordqiu/automated-cherry-pick-of-#13308-upstream-release-3.9
Automated cherry pick of #13308: fix: allow view events of owner objects
2022-01-25 11:18:02 +08:00
Zexi Li
d0dbd264b3 Merge pull request #13312 from ioito/automated-cherry-pick-of-#13311-upstream-release-3.9
Automated cherry pick of #13311: fix(region): nutanix misc fix
2022-01-25 11:17:25 +08:00
ioito
88599207fd fix(region): nutanix misc fix 2022-01-25 11:10:55 +08:00
Qiu Jian
6fcb4daf3d fix: allow view events of owner objects 2022-01-25 02:08:20 +08:00
Zexi Li
27dc458b8f Merge pull request #13300 from ioito/automated-cherry-pick-of-#13299-upstream-release-3.9
Automated cherry pick of #13299: fix(region): nutanix duplicate vlan id
2022-01-24 23:29:59 +08:00
Zexi Li
6e939b250f Merge pull request #13306 from swordqiu/automated-cherry-pick-of-#13305-upstream-release-3.9
Automated cherry pick of #13305: fix: rng device should use urandom instead of random
2022-01-24 23:26:51 +08:00
Qiu Jian
bda29b5d39 fix: rng device should use urandom instead of random 2022-01-24 23:19:49 +08:00
Zexi Li
22ab0614bc Merge pull request #13242 from rainzm/automated-cherry-pick-of-#13239-upstream-release-3.9
Automated cherry pick of #13239: Instance/Disk Backup Support
2022-01-24 18:13:51 +08:00
ioito
f8d9b467fc fix(region): nutanix duplicate vlan id 2022-01-24 14:18:33 +08:00
Zexi Li
8f95d417e6 Merge pull request #13291 from swordqiu/automated-cherry-pick-of-#13290-upstream-release-3.9
Automated cherry pick of #13290: fix: baremetal mismatch with empty Guid
2022-01-24 10:46:45 +08:00
Qiu Jian
f6d5487709 fix: baremetal mismatch with empty Guid 2022-01-22 18:55:01 +08:00
Zexi Li
694356eda2 Merge pull request #13280 from ioito/automated-cherry-pick-of-#13216-upstream-release-3.9
Automated cherry pick of #13216: feat(region): support nutanix
2022-01-22 18:24:11 +08:00
Zexi Li
319056ac07 Merge pull request #13289 from zexi/automated-cherry-pick-of-#13288-upstream-release-3.9
Automated cherry pick of #13288: fix(region): add generate_name before validate creating data
2022-01-22 16:43:30 +08:00
rainzm
7d2ee93f0f fix(region): add generate_name before validate creating data 2022-01-22 16:43:09 +08:00
rainzm
3d7ec819dc fix(region): optimize codes
1. do not ignore err
2. replace jsonutils.JSONObject with specific structure
3. delete redundant code
4. fix edge problems
2022-01-22 15:37:30 +08:00
rainzm
9fb7c3c0aa fix(region): set status creating for instance backup when creating 2022-01-22 15:37:30 +08:00
rainzm
bec0637184 feat(climc): add climc command for instance/disk backup 2022-01-22 15:37:30 +08:00
rainzm
38cc99242a feat(region): support instance backup
Instance backup is a logical collection of multiple disk backups
2022-01-22 15:37:30 +08:00
rainzm
155f3b96e9 feat(region, host): support disk backup
1. create backup for disk
2. create disk from backup
3. recovery disk directly
4. delete backup
2022-01-22 15:37:30 +08:00
rainzm
f886fba591 fix(cloudcommon): splice notifyurl correctly 2022-01-22 15:37:30 +08:00
Zexi Li
de5926159f Merge pull request #13283 from ioito/automated-cherry-pick-of-#13282-upstream-release-3.9
Automated cherry pick of #13282: fix(common): always return next_marker
2022-01-22 12:19:46 +08:00
Zexi Li
62d299fe14 Merge pull request #13286 from swordqiu/automated-cherry-pick-of-#13285-upstream-release-3.9
Automated cherry pick of #13285: fix: arm image support UEFI by default
2022-01-22 12:19:03 +08:00
Qiu Jian
ed2764c35c fix: arm image support UEFI by default 2022-01-21 19:04:36 +08:00
ioito
339aa215cb fix(common): always return next_marker 2022-01-21 18:44:29 +08:00
ioito
552cdee2a6 feat(region): support nutanix 2022-01-21 14:04:57 +08:00
Zexi Li
a43a0a393f fix(host): enable qemu log (#13279) 2022-01-21 13:19:42 +08:00
Zexi Li
0634c2cc4d Merge pull request #13277 from zexi/automated-cherry-pick-of-#12901-upstream-release-3.9
Automated cherry pick of #12901: feat(host): qemu 4.0.1 supported
2022-01-21 11:58:09 +08:00
Zexi Li
46087b57a1 fix(host): qmpmon typo 2022-01-21 11:52:41 +08:00
Zexi Li
406059b10d feat(host): qemu 4.0.1 supported 2022-01-21 11:52:41 +08:00
Zexi Li
41fb28b711 Merge pull request #13275 from zexi/automated-cherry-pick-of-#13274-upstream-release-3.9
Automated cherry pick of #13274: fix(hostman): cmdline option range panic
2022-01-21 11:51:06 +08:00
Zexi Li
47f2fee07d fix(hostman): cmdline option range panic 2022-01-21 11:47:14 +08:00
Zexi Li
b9e72e5529 Merge pull request #13266 from swordqiu/automated-cherry-pick-of-#13265-upstream-release-3.9
Automated cherry pick of #13265: fix: batch migrate in parrallel
2022-01-21 10:12:45 +08:00
Zexi Li
5e89424002 Merge pull request #13271 from swordqiu/automated-cherry-pick-of-#13269-upstream-release-3.9
Automated cherry pick of #13269: feature: support log to remote syslog server
2022-01-21 10:12:11 +08:00
Zexi Li
fa9278f982 Merge pull request #13270 from zexi/automated-cherry-pick-of-#13268-upstream-release-3.9
Automated cherry pick of #13268: Qemu migrate args
2022-01-21 09:55:59 +08:00
Zexi Li
13a1a6a3d1 feat(host,region): unify target qemu commandline from source 2022-01-21 00:37:46 +08:00
Qiu Jian
8308fe55c3 feature: support log to remote syslog server 2022-01-21 00:11:31 +08:00
Qiu Jian
49e6d9ad9a fix: batch migrate in parrallel 2022-01-20 21:41:56 +08:00
Zexi Li
c5f6500d9d Merge pull request #13261 from rainzm/automated-cherry-pick-of-#13260-upstream-release-3.9
Automated cherry pick of #13260: fix(host): Stop the retry of purge when the target does not exist
2022-01-20 21:09:17 +08:00
Zexi Li
f847705265 Merge pull request #13264 from zhaoxiangchun/automated-cherry-pick-of-#13263-upstream-release-3.9
Automated cherry pick of #13263: fix(cloudmon): fix cloudmon GetResourceByOperator
2022-01-20 21:08:49 +08:00
zhaoxiangchun
09d5a2d137 fix(cloudmon): fix cloudmon GetResourceByOperator 2022-01-20 19:02:07 +08:00
rainzm
99a40aae1e fix(host): Stop the retry of purge when the target does not exist 2022-01-20 18:08:43 +08:00
Zexi Li
c7a4f4087c Merge pull request #13258 from ioito/automated-cherry-pick-of-#13257-upstream-release-3.9
Automated cherry pick of #13257: fix(common): metadata update key
2022-01-20 17:43:43 +08:00
ioito
f7f89723df fix(common): metadata update key 2022-01-20 15:18:47 +08:00
Zexi Li
d3934c1ad9 Merge pull request #13244 from rainzm/automated-cherry-pick-of-#13243-upstream-release-3.9
Automated cherry pick of #13243: feat(notify): judge whether to enable automatic renewal when the expiration notice is given
2022-01-20 09:54:15 +08:00
Zexi Li
b8ae224679 Merge pull request #13256 from swordqiu/automated-cherry-pick-of-#13226-upstream-release-3.9
Automated cherry pick of #13226: fix: usages should be filtered by policy tags
2022-01-20 09:45:30 +08:00
Zexi Li
992cd0255c Merge pull request #13241 from swordqiu/automated-cherry-pick-of-#13240-upstream-release-3.9
Automated cherry pick of #13240: fix: add header x-xss-protection
2022-01-20 09:44:37 +08:00
Zexi Li
0e9d7e1d6a Merge pull request #13254 from swordqiu/automated-cherry-pick-of-#13253-upstream-release-3.9
Automated cherry pick of #13253: fix: vpcagent nil pointer panic
2022-01-20 09:43:50 +08:00
Qiu Jian
ed2e26be16 fix: usages should be filered by policy tags 2022-01-20 00:47:35 +08:00
Qiu Jian
2f5d34185b fix: vpcagent nil pointer panic 2022-01-20 00:44:27 +08:00
Zexi Li
656e8ebb4d fix(baremetal): raid ssd disk as firstly root disk (#13248) 2022-01-20 00:42:18 +08:00
Zexi Li
b032b49fb8 Merge pull request #13250 from ioito/automated-cherry-pick-of-#13249-upstream-release-3.9
Automated cherry pick of #13249: fix(apigateway): add is forget login user option
2022-01-19 20:06:20 +08:00
ioito
a0d1be21c1 fix(apigateway): add is forget login user option 2022-01-19 20:01:50 +08:00
rainzm
43af7d7c3a fix(region,notify): add create, delete and sync notification of loadbalancerbackendgroup 2022-01-19 19:21:50 +08:00
rainzm
c23f50c3cf feat(notify): judge whether to enable automatic renewal when the expiration notice is given 2022-01-19 19:21:50 +08:00
Qiu Jian
0221f03e4d fix: add header x-xss-protection 2022-01-19 13:00:40 +08:00
Zexi Li
af70990130 Merge pull request #13236 from ioito/automated-cherry-pick-of-#13235-upstream-release-3.9
Automated cherry pick of #13235: fix(region): vpc tag sync
2022-01-19 11:01:18 +08:00
ioito
885b271bbd fix(region): vpc tag sync 2022-01-19 10:58:30 +08:00
Zexi Li
97db184568 Merge pull request #13233 from ioito/automated-cherry-pick-of-#13232-upstream-release-3.9
Automated cherry pick of #13232: fix(region): qcloud lb bandwidth
2022-01-19 00:43:47 +08:00
ioito
da14e94e4a fix(region): qcloud lb bandwidth 2022-01-18 22:14:18 +08:00
Zexi Li
f970eb5245 Merge pull request #13228 from swordqiu/automated-cherry-pick-of-#13227-upstream-release-3.9
Automated cherry pick of #13227: fix: list join resource nil pointer access
2022-01-18 16:56:45 +08:00
Zexi Li
8299ab8b8d Merge pull request #13230 from zexi/automated-cherry-pick-of-#13229-upstream-release-3.9
Automated cherry pick of #13229: feat(build): make glance-base image
2022-01-18 16:46:49 +08:00
Zexi Li
1dfd8e2418 feat(build): make glance-base image 2022-01-18 16:22:27 +08:00
Qiu Jian
6abe033a80 fix: list join resource nil pointer access 2022-01-18 09:21:28 +08:00
Zexi Li
73c8ed7b68 fix(hostman): config BONDING_OPTS for ifcfg-bondx (#13224) 2022-01-18 02:46:51 +08:00
Zexi Li
a3a938c386 Merge pull request #13218 from swordqiu/automated-cherry-pick-of-#13217-upstream-release-3.9
Automated cherry pick of #13217: fix: full sync of project and domain metadata
2022-01-18 00:32:52 +08:00
Qiu Jian
69c05bb126 fix: full sync of project and domain metadata 2022-01-17 21:55:59 +08:00
Zexi Li
cd1a0419b8 Merge pull request #13220 from ioito/automated-cherry-pick-of-#13219-upstream-release-3.9
Automated cherry pick of #13219: fix(region): sync tags for vpc and network
2022-01-17 20:41:15 +08:00
ioito
cb875c98dd fix(region): sync tags for vpc and network 2022-01-17 20:37:47 +08:00
Zexi Li
e7a6bf633d Merge pull request #13214 from zexi/automated-cherry-pick-of-#13213-upstream-release-3.9
Automated cherry pick of #13213: fix(region): create wire input bw deprecated
2022-01-17 18:38:51 +08:00
Zexi Li
524cc2e7e0 fix(region): create wire input bw deprecated 2022-01-17 14:55:47 +08:00
Zexi Li
c8d1fe18dc Merge pull request #13204 from ioito/automated-cherry-pick-of-#13203-upstream-release-3.9
Automated cherry pick of #13203: fix(region): add cidr filter for route table
2022-01-17 10:09:49 +08:00
Zexi Li
7e1d311046 Merge pull request #13210 from swordqiu/automated-cherry-pick-of-#13207-upstream-release-3.9
Automated cherry pick of #13207: fix: handle exception that qemu quit or cancel migrate during migration
2022-01-17 10:09:25 +08:00
Zexi Li
b062507c24 Merge pull request #13211 from swordqiu/automated-cherry-pick-of-#13209-upstream-release-3.9
Automated cherry pick of #13209: feature: support dhcp relay information option 82
2022-01-17 10:08:16 +08:00
Qiu Jian
455a12a157 feature: support dhcp relay information option 82 2022-01-17 01:08:32 +08:00
Qiu Jian
12f0788f5a fix: handle exception that qemu quit or cancel migrate during migration 2022-01-17 01:07:59 +08:00
ioito
a44c9d9c7a fix(region): add cidr filter for route table 2022-01-15 16:14:33 +08:00
Zexi Li
02d0cc8307 Merge pull request #13202 from zhaoxiangchun/automated-cherry-pick-of-#13200-upstream-release-3.9
Automated cherry pick of #13200: fix(common): ListItemFilter func exec in the end
2022-01-15 10:42:02 +08:00
zhaoxiangchun
67374efb6c fix(common): ListItemFilter func exec in the end
1.ListItemFilter 中如果有group by 操作(meter服务),如果使用框架解析filter参数,
会把filter 解析加入到 having结构中。
2022-01-15 10:37:56 +08:00
Zexi Li
6759c2bb10 Merge pull request #13197 from zhaoxiangchun/automated-cherry-pick-of-#13196-upstream-release-3.9
Automated cherry pick of #13196: fix(monitor): alerting resourece filter by scope
2022-01-14 10:33:24 +08:00
Zexi Li
215665a0c2 Merge pull request #13194 from ioito/automated-cherry-pick-of-#13193-upstream-release-3.9
Automated cherry pick of #13193: feat(region): add nutanix sync
2022-01-13 19:09:20 +08:00
zhaoxiangchun
170681b13d fix(monitor): alerting resourece filter by scope 2022-01-13 18:46:27 +08:00
ioito
513bbb0188 feat(region): add nutanix sync 2022-01-13 18:08:08 +08:00
Zexi Li
df4c3936ef Merge pull request #13189 from zhaoxiangchun/automated-cherry-pick-of-#13187-upstream-release-3.9
Automated cherry pick of #13187: fix(s3gateway): delete dbinit
2022-01-13 10:34:27 +08:00
Zexi Li
752ddaf7c7 Merge pull request #13191 from ioito/automated-cherry-pick-of-#13168-upstream-release-3.9
Automated cherry pick of #13168: fix(region): show worker and tasks list by service type
2022-01-13 10:28:57 +08:00
Zexi Li
a8e2cf7e6f Merge pull request #13190 from ioito/automated-cherry-pick-of-#13188-upstream-release-3.9
Automated cherry pick of #13188: fix(region): wire statusinfras
2022-01-13 10:28:29 +08:00
ioito
66a17faad2 fix(region): show worker and tasks list by service type 2022-01-13 10:26:08 +08:00
ioito
64125a6f69 fix(region): wire statusinfras 2022-01-13 10:25:36 +08:00
zhaoxiangchun
8604bb2b5c fix(s3gateway): delete dbinit 2022-01-13 10:23:14 +08:00
Zexi Li
a67326f405 Merge pull request #13186 from zexi/automated-cherry-pick-of-#13185-upstream-release-3.9
Automated cherry pick of #13185: fix(baremetal): perccli image update
2022-01-11 18:51:07 +08:00
Zexi Li
ca23ac0a8d fix(baremetal): perccli image update 2022-01-11 18:24:43 +08:00
Zexi Li
971cfc83f7 Merge pull request #13184 from zexi/automated-cherry-pick-of-#13167-upstream-release-3.9
Automated cherry pick of #13167: feat(baremetal): megaraid perccli supported
2022-01-11 18:18:28 +08:00
Zexi Li
481fcca40b feat(baremetal): megaraid perccli supported 2022-01-11 17:30:47 +08:00
Zexi Li
0c064191d6 Merge pull request #13179 from swordqiu/automated-cherry-pick-of-#13169-upstream-release-3.9
Automated cherry pick of #13169: fix: guest sync status persistent block_stream status
2022-01-11 10:32:08 +08:00
Zexi Li
f5cb4ff0f0 Merge pull request #13177 from swordqiu/automated-cherry-pick-of-#13176-upstream-release-3.9
Automated cherry pick of #13176: fix: add snapshot_and_clone event notes
2022-01-11 10:31:13 +08:00
Qiu Jian
166de5471a fix: guest sync status persistent block_stream status 2022-01-11 10:13:57 +08:00
Qiu Jian
a814a47605 fix: add snapshot_and_clone event notes 2022-01-11 09:35:05 +08:00
Zexi Li
1172cf3304 Merge pull request #13175 from zexi/automated-cherry-pick-of-#13125-upstream-release-3.9
Automated cherry pick of #13125: fix(region,scheduler): live migrate target host kernel version check
2022-01-11 09:29:35 +08:00
Zexi Li
2f8d882fd2 fix(region,scheduler): live migrate target host kernel version check 2022-01-11 09:29:19 +08:00
Zexi Li
d30c4680f8 Merge pull request #13174 from zexi/automated-cherry-pick-of-#13139-upstream-release-3.9
Automated cherry pick of #13139: feat(scheduler): baremetal uefi image filter
2022-01-11 09:27:23 +08:00
Zexi Li
e1a1218b5b feat(scheduler): baremetal uefi image filter 2022-01-11 09:26:50 +08:00
Zexi Li
5351f3aa0a Merge pull request #13173 from zexi/automated-cherry-pick-of-#13171-upstream-release-3.9
Automated cherry pick of #13171: fix: ceph clone image across pool should use pool of target image
2022-01-11 09:23:18 +08:00
Qiu Jian
5bb4296f06 fix: ceph clone image across pool should use pool of target image 2022-01-11 09:22:43 +08:00
2759 changed files with 358251 additions and 147353 deletions

View File

@@ -49,7 +49,7 @@ CGO_LDFLAGS_ENV = $(shell go env CGO_LDFLAGS)
ifdef LIBQEMUIO_PATH
X_CGO_CFLAGS := ${CGO_CFLAGS_ENV} -I${LIBQEMUIO_PATH}/src -I${LIBQEMUIO_PATH}/src/include
X_CGO_LDFLAGS := ${CGO_LDFLAGS_ENV} -laio -lqemuio -lpthread -L ${LIBQEMUIO_PATH}/src
X_CGO_LDFLAGS := ${CGO_LDFLAGS_ENV} -laio -lqemuio -lpthread -lgnutls -lnettle -L ${LIBQEMUIO_PATH}/src
endif
export GOOS ?= linux
@@ -330,7 +330,7 @@ image:
.PHONY: image
image-telegraf-raid-plugin:
VERSION=release-1.6.1 ARCH=all make image telegraf-raid-plugin
VERSION=release-1.6.3 ARCH=all make image telegraf-raid-plugin
%:
@:

View File

@@ -1,7 +1,7 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/ansibleserver-base:v1.0.5-2
FROM registry.cn-beijing.aliyuncs.com/yunionio/ansibleserver-base:v1.1.0
# install playbook and telegraf install pkg
COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.3.4 /opt/yunion/playbook /opt/yunion/playbook
COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.3.4 /opt/yunion/ansible-install-pkg /opt/yunion/ansible-install-pkg
COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.4.0 /opt/yunion/playbook /opt/yunion/playbook
COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.4.0 /opt/yunion/ansible-install-pkg /opt/yunion/ansible-install-pkg
ADD ./_output/alpine-build/bin/ansibleserver /opt/yunion/bin/ansibleserver

View File

@@ -11,5 +11,8 @@ RUN set -x \
&& apk add openssh-client \
&& apk add sshpass \
&& apk add ansible \
&& apk add py3-pip \
&& apk add tzdata git ca-certificates \
&& rm -rf /var/cache/apk/*
RUN pip3 install pywinrm

View File

@@ -1,4 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/baremetal-base:v0.3.3-2-grub
FROM registry.cn-beijing.aliyuncs.com/yunionio/baremetal-base:v0.3.6
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"

View File

@@ -1,7 +1,7 @@
#FROM --platform=linux/amd64 registry.cn-beijing.aliyuncs.com/yunionio/centos-build:1.1-4 as build
#RUN yum install -y https://iso.yunion.cn/vm-images/baremetal-pxerom-1.1.0-21092209.x86_64.rpm
#RUN yum install -y http://192.168.23.50:8083/baremetal-pxerom-1.1.0-21092209.x86_64.rpm
FROM registry.cn-beijing.aliyuncs.com/yunionio/yunionos:v0.1.1 as yunionos
FROM registry.cn-beijing.aliyuncs.com/yunionio/yunionos:v0.1.4 as yunionos
FROM centos:8 as grub-stage

View File

@@ -1,8 +1,5 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/torrent:20210815.0
FROM registry.cn-beijing.aliyuncs.com/yunionio/glance-base:v0.0.1
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
RUN apk add --no-cache s3fs-fuse --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing
ENV TZ UTC
RUN mkdir -p /opt/yunion/bin
ADD ./_output/alpine-build/bin/glance /opt/yunion/bin/glance

View File

@@ -0,0 +1,5 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/torrent:20210815.0
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
RUN apk add --no-cache s3fs-fuse --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing

View File

@@ -0,0 +1,13 @@
FROM alpine:3.15.4
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
ENV TZ UTC
RUN mkdir -p /opt/yunion/bin
RUN sed -i 's!https://dl-cdn.alpinelinux.org/!https://mirrors.ustc.edu.cn/!g' /etc/apk/repositories
RUN apk update && \
apk add --no-cache tzdata curl busybox-extras tcpdump strace ca-certificates && \
rm -rf /var/cache/apk/*

View File

@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/yunion-rootfs:v1.0
FROM registry.cn-beijing.aliyuncs.com/yunionio/yunion-rootfs:v1.1
ADD ./_output/centos-build/bin/telegraf-raid-plugin /opt/yunion/bin/telegraf-raid-plugin

View File

@@ -8,9 +8,12 @@ debian10-base:
-t registry.cn-beijing.aliyuncs.com/yunionio/debian10-base:1.0 -f ./Dockerfile.debian-base .
ONECLOUD_BASE_VERSION = v0.3-3.13.5
ONECLOUD_BASE_VERSION_3-15-4 = v3.15.4-0
onecloud-base:
$(DOCKER_BUILDX)/onecloud-base:$(ONECLOUD_BASE_VERSION) -f ./Dockerfile.onecloud-base .
onecloud-base-3-15-4:
$(DOCKER_BUILDX)/onecloud-base:$(ONECLOUD_BASE_VERSION_3-15-4) -f ./Dockerfile.onecloud-base-3-15-4 .
ANSIBLESERVER_BASE = v1.0.5-2
@@ -27,12 +30,20 @@ WEBCONSOLE_BASE_VERSION = v0.2-1
webconsole-base:
$(DOCKER_BUILDX)/webconsole-base:$(WEBCONSOLE_BASE_VERSION) -f ./Dockerfile.webconsole-base .
BAREMETAL_BASE_VERSION = v0.3.3-2-grub
BAREMETAL_BASE_VERSION = v0.3.6
baremetal-base:
$(DOCKER_BUILDX)/baremetal-base:$(BAREMETAL_BASE_VERSION) -f ./Dockerfile.baremetal-base .
#docker push $(REGISTRY)/baremetal-base:$(BAREMETAL_BASE_VERSION)
TORRENT_VERSION = 20210815.0
torrent:
$(DOCKER_BUILDX)/torrent:$(TORRENT_VERSION) -f ./Dockerfile.torrent .
GLANCE_BASE_VERSION = v0.0.1
glance-base:
$(DOCKER_BUILDX)/glance-base:$(GLANCE_BASE_VERSION) -f ./Dockerfile.glance-base .
FILE_REPO_VERSION = v0.3.3
file-repo:

View File

@@ -0,0 +1,13 @@
{{- $d := .resource_details -}}
{{- if eq .resource_type "db_table_field" }}
数据库{{ $d.db_name }}表{{ $d.table_name }}记录{{ $d.name }}被修改,完整性校验失败
{{- end -}}
{{- if eq .resource_type "cloudpods_component" }}
{{ $d.details }}
{{- end -}}
{{- if eq .resource_type "snapshot" }}
快照{{ $d.name }}的内存快照完整性校验失败
{{- end -}}
{{- if eq .resource_type "image" }}
镜像{{ $d.name }}完整性校验失败
{{- end -}}

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.name }} 发生异常: {{ $d.message }}

View File

@@ -11,4 +11,4 @@
{{- if $d.public_dns -}}
,外网地址为{{ $d.public_dns }}:{{ $d.public_connect_port }}的
{{- end -}}
{{ .resource_type_display }}{{ $d.name }}还有{{ .advance_days }}天就要到期释放,如需续期使用,请尽快前往控制台处理
{{ .resource_type_display }}{{ $d.name }}还有{{ .advance_days }}天就要到期释放,{{ if $d.auto_renew }}到期已开启自动续费,{{ end }}如有其它变更,请尽快前往控制台处理

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.name }} 离线 {{- if $d.reason -}} 原因: {{ $d.reason }} {{- end -}}

View File

@@ -0,0 +1,4 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.task_name }} PANIC {{- if $d.error -}} 错误: {{ $d.error }} {{- end -}}
堆栈信息:
{{ $d.stack }}

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
账号{{ $d.name }}由于异常登录已被锁定,请核实情况,如果需要为用户解锁,请到用户列表启用该用户。

View File

@@ -0,0 +1,14 @@
{{- $d := .resource_details -}}
{{- if eq .resource_type "db_table_field" }}
The record {{ $d.name }} in table {{ $d.table_name }} of the database {{ $d.db_name }} has been modified because the checksum test failed.
{{- end -}}
{{- if eq .resource_type "cloudpods_component" }}
{{ $d.details }}
{{- end -}}
{{- if eq .resource_type "snapshot" }}
The checksum of the memory snapshot of the snapshot {{ $d.name }} test failed.
{{- end -}}
{{- if eq .resource_type "image" }}
The checksum of the image {{ $d.name }} test failed.
{{- end -}}

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.name }} exception occurs: {{ $d.message }}

View File

@@ -1,2 +1,2 @@
{{- $d := .resource_details -}}
Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type }} {{ $d.name }} {{ if $d.public_dns -}} with external address {{ $d.public_dns }}:{{ $d.public_connect_port }} {{ end -}} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} will expire and be released in {{ .advance_days }} days. If you need to renew, please go to the console as soon as possible
Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type }} {{ $d.name }} {{ if $d.public_dns -}} with external address {{ $d.public_dns }}:{{ $d.public_connect_port }} {{ end -}} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} will expire and be released in {{ .advance_days }} days. {{ if $d.auto_renew }}It has turned on automatic renewal. {{ end }}If there are other changes, please go to the console as soon as possible.

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
The {{ .resource_type }} {{ $d.name }} Offline {{- if $d.reason -}} Reason: {{ $d.reason }}的 {{- end -}}

View File

@@ -0,0 +1,4 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.task_name }} PANIC {{- if $d.error -}} Error: {{ $d.error }} {{- end -}}
Stack Info:
{{ $d.stack }}

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
The account {{ $d.name }} has been locked due to abnormal login. Please verify the situation. If you need to unlock the user, please go to the user list to enable the user.

View File

@@ -0,0 +1,6 @@
{{- $d := .resource_details -}}
{{- if eq .resource_type "cloudpods_component" }}
{{ $d.title }}
{{- else -}}
{{ .resource_type_display }}完整性校验失败
{{- end -}}

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.name }} 发生异常: {{ $d.message }}

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.name }} 离线

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.task_name }} PANIC

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
账号{{ $d.name }}已被锁定

View File

@@ -0,0 +1,6 @@
{{- $d := .resource_details -}}
{{- if eq .resource_type "cloudpods_component" }}
{{ $d.title }}
{{- else -}}
The checksum of {{ .resource_type_display }} test failed
{{- end -}}

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.name }} exception occurs: {{ $d.message }}

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
The {{ .resource_type }} {{ $d.name }} Offline

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
{{ .resource_type }} {{ $d.task_name }} PANIC

View File

@@ -0,0 +1,2 @@
{{- $d := .resource_details -}}
Account {{ $d.name }} has been locked

View File

@@ -32,7 +32,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
CloudEnv string `help:"Cloud environment" default:"$ALIYUN_CLOUD_ENV" choices:"InternationalCloud|FinanceCloud" metavar:"ALIYUN_CLOUD_ENV"`
AccessKey string `help:"Access key" default:"$ALIYUN_ACCESS_KEY" metavar:"ALIYUN_ACCESS_KEY"`
Secret string `help:"Secret" default:"$ALIYUN_SECRET" metavar:"ALIYUN_SECRET"`
@@ -41,10 +40,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"aliyuncli",
"Command-line interface to aliyun API.",
`See "aliyuncli help COMMAND" for help on a specific command.`)
`See "aliyuncli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -54,20 +53,9 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -132,33 +120,33 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *aliyun.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *aliyun.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -31,22 +31,20 @@ import (
)
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AccessKey string `help:"Access key" default:"$APSARA_ACCESS_KEY" metavar:"APSARA_ACCESS_KEY"`
Secret string `help:"Secret" default:"$APSARA_SECRET" metavar:"APSARA_SECRET"`
cloudprovider.SApsaraEndpoints `help:"Endpoints for Apsara"`
Endpoint string `help:"Apsara endpoint" default:"$APSARA_ENDPOINT" metavar:"APSARA_ENDPOINT"`
RegionId string `help:"RegionId" default:"$APSARA_REGION" metavar:"APSARA_REGION"`
DEFAULT_REGION string `help:"Default region" default:"$APSARA_DEFAULT_REGION"`
SUBCOMMAND string `help:"apsaracli subcommand" subcommand:"true"`
Debug bool `help:"debug mode"`
AccessKey string `help:"Access key" default:"$APSARA_ACCESS_KEY" metavar:"APSARA_ACCESS_KEY"`
Secret string `help:"Secret" default:"$APSARA_SECRET" metavar:"APSARA_SECRET"`
Endpoint string `help:"Apsara endpoint" default:"$APSARA_ENDPOINT" metavar:"APSARA_ENDPOINT"`
RegionId string `help:"RegionId" default:"$APSARA_REGION" metavar:"APSARA_REGION"`
DEFAULT_REGION string `help:"Default region" default:"$APSARA_DEFAULT_REGION"`
SUBCOMMAND string `help:"apsaracli subcommand" subcommand:"true"`
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"apsaracli",
"Command-line interface to apsara API.",
`See "apsaracli help COMMAND" for help on a specific command.`)
`See "apsaracli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -56,20 +54,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -107,7 +93,6 @@ func newClient(options *BaseOptions) (*apsara.SRegion, error) {
options.AccessKey,
options.Secret,
options.Endpoint,
options.SApsaraEndpoints,
).Debug(options.Debug).
CloudproviderConfig(
cloudprovider.ProviderConfig{
@@ -137,31 +122,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *apsara.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *apsara.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}

View File

@@ -32,7 +32,6 @@ import (
)
type BaseOptions struct {
Help bool `help:"Show help"`
Debug bool `help:"debug mode"`
AccessUrl string `help:"Access key" default:"$AWS_ACCESS_URL" choices:"ChinaCloud|InternationalCloud" metavar:"AWS_ACCESS_URL"`
AccessKey string `help:"Access key" default:"$AWS_ACCESS_KEY" metavar:"AWS_ACCESS_KEY"`
@@ -43,10 +42,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"awscli",
"Command-line interface to aws API.",
`See "awscli help COMMAND" for help on a specific command.`)
`See "awscli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -56,20 +55,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -135,33 +122,33 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *aws.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *aws.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -32,7 +32,6 @@ import (
)
type BaseOptions struct {
Help bool `help:"Show help"`
Debug bool `help:"debug mode"`
DirectoryID string `help:"Azure account Directory ID/Tenant ID" default:"$AZURE_DIRECTORY_ID" metavar:"AZURE_DIRECTORY_ID"`
SubscriptionID string `help:"Azure account subscription ID" default:"$AZURE_SUBSCRIPTION_ID" metavar:"AZURE_SUBSCRIPTION_ID"`
@@ -44,10 +43,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"azurecli",
"Command-line interface to azure API.",
`See "azurecli help COMMAND" for help on a specific command.`)
`See "azurecli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -57,20 +56,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -153,33 +140,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *azure.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *azure.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

150
cmd/bingocli/main.go Normal file
View File

@@ -0,0 +1,150 @@
// 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 main
import (
"fmt"
"net/http"
"net/url"
"os"
"golang.org/x/net/http/httpproxy"
"yunion.io/x/structarg"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/multicloud/bingocloud"
_ "yunion.io/x/onecloud/pkg/multicloud/bingocloud/shell"
"yunion.io/x/onecloud/pkg/util/shellutils"
)
type BaseOptions struct {
Debug bool `help:"debug mode"`
RegionId string
Endpoint string `help:"Endpoint" default:"$BINGO_CLOUD_ENDPOINT" metavar:"BINGO_CLOUD_ENDPOINT"`
AccessKey string `help:"Access Key" default:"$BINGO_CLOUD_ACCESS_KEY" metavar:"BINGO_CLOUD_ACCESS_KEY"`
SecretKey string `help:"Secret Key" default:"$BINGO_CLOUD_SECRET_KEY" metavar:"BINGO_CLOUD_SECRET_KEY"`
SUBCOMMAND string `help:"bingocli subcommand" subcommand:"true"`
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"bingocli",
"Command-line interface to bingo cloud API.",
`See "bingocli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
}
subcmd := parse.GetSubcommand()
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
}
return parse, nil
}
func showErrorAndExit(e error) {
fmt.Fprintf(os.Stderr, "%s", e)
fmt.Fprintln(os.Stderr)
os.Exit(1)
}
func newClient(options *BaseOptions) (*bingocloud.SRegion, error) {
if len(options.Endpoint) == 0 {
return nil, fmt.Errorf("Missing endpoint")
}
if len(options.AccessKey) == 0 {
return nil, fmt.Errorf("Missing access key")
}
if len(options.SecretKey) == 0 {
return nil, fmt.Errorf("Missing secret key")
}
cfg := &httpproxy.Config{
HTTPProxy: os.Getenv("HTTP_PROXY"),
HTTPSProxy: os.Getenv("HTTPS_PROXY"),
NoProxy: os.Getenv("NO_PROXY"),
}
cfgProxyFunc := cfg.ProxyFunc()
proxyFunc := func(req *http.Request) (*url.URL, error) {
return cfgProxyFunc(req.URL)
}
cli, err := bingocloud.NewBingoCloudClient(
bingocloud.NewBingoCloudClientConfig(
options.Endpoint,
options.AccessKey,
options.SecretKey,
).Debug(options.Debug).
CloudproviderConfig(
cloudprovider.ProviderConfig{
ProxyFunc: proxyFunc,
},
),
)
if err != nil {
return nil, err
}
return cli.GetRegion(options.RegionId)
}
func main() {
parser, e := getSubcommandParser()
if e != nil {
showErrorAndExit(e)
}
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *bingocloud.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -36,7 +36,6 @@ import (
)
type BaseOptions struct {
Help bool `help:"Show help" short-token:"h"`
Debug bool `help:"Show debug information"`
Version bool `help:"Show version"`
Timeout int `default:"600" help:"Number of seconds to wait for a response"`
@@ -75,7 +74,7 @@ func getSubcommandsParser() (*structarg.ArgumentParser, error) {
prog = "climc"
desc = `Command-line interface to the API server.`
)
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
prog,
desc,
`See "climc help COMMAND" for help on a specific command.`)
@@ -86,22 +85,10 @@ func getSubcommandsParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument")
}
type HelpOptions struct {
SUBCOMMAND string `help:"Sub-command name"`
}
shell.R(&HelpOptions{}, "help", "Show help information of any subcommand", func(suboptions *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(suboptions.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
promptRootCmd := promputils.InitRootCmd(prog, desc, parse.GetOptArgs(), parse.GetPosArgs())
for _, v := range shell.CommandTable {
_par, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_par, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
@@ -254,15 +241,18 @@ func executeSubcommand(
options *BaseOptions,
sessionFactory func() *mcclient.ClientSession,
) {
var e error
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
e = subcmd.Invoke(sessionFactory(), suboptions)
if subparser.IsHelpSet() {
helpStr, err := subcmd.SubHelpString(options.SUBCOMMAND)
if err != nil {
showErrorAndExit(err)
}
fmt.Println(helpStr)
return
}
if e != nil {
showErrorAndExit(e)
err := subcmd.Invoke(sessionFactory(), suboptions)
if err != nil {
showErrorAndExit(err)
}
}
@@ -282,7 +272,7 @@ func ClimcMain() {
return
}
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
return
}

View File

@@ -36,6 +36,7 @@ import (
_ "yunion.io/x/onecloud/cmd/climc/shell/quota"
_ "yunion.io/x/onecloud/cmd/climc/shell/scheduledtask"
_ "yunion.io/x/onecloud/cmd/climc/shell/scheduler"
_ "yunion.io/x/onecloud/cmd/climc/shell/webconsole"
_ "yunion.io/x/onecloud/cmd/climc/shell/yunionconf"
)

View File

@@ -75,6 +75,10 @@ func Executor(s string) {
} else {
session.GetClient().SetDebug(false)
}
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
@@ -84,11 +88,7 @@ func Executor(s string) {
fmt.Println(e)
} else {
suboptions := subparser.Options()
if args[0] == "help" {
e = subcmd.Invoke(suboptions)
} else {
e = subcmd.Invoke(session, suboptions)
}
e = subcmd.Invoke(session, suboptions)
if e != nil {
fmt.Println(e)
}

View File

@@ -15,8 +15,10 @@
package cloudevent
import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/cloudevent"
"yunion.io/x/onecloud/pkg/mcclient/modules/cloudevent"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
@@ -33,25 +35,35 @@ func init() {
if err != nil {
return err
}
result, err := modules.Cloudevents.List(s, params)
result, err := cloudevent.Cloudevents.List(s, params)
if err != nil {
return err
}
printList(result, modules.Cloudevents.GetColumns(s))
printList(result, cloudevent.Cloudevents.GetColumns(s))
return nil
})
type CloudeventSplitTableOptions struct {
}
R(&CloudeventSplitTableOptions{}, "cloud-event-splitable", "Show obsolete cloud event logs", func(s *mcclient.ClientSession, opts *CloudeventSplitTableOptions) error {
resp, err := cloudevent.Cloudevents.Get(s, "splitable", nil)
if err != nil {
return err
}
printObject(resp)
return nil
})
type CloudeventLogsPurgeOptions struct {
Tables []string
}
R(&CloudeventLogsPurgeOptions{}, "cloud-event-purge", "Purge obsolete cloud event logs", func(s *mcclient.ClientSession, opts *CloudeventLogsPurgeOptions) error {
_, err := modules.Cloudevents.PerformClassAction(s, "purge-splitable", nil)
if err != nil {
return err
}
_, err = modules.CloudeventLogs.PerformClassAction(s, "purge-splitable", nil)
R(&CloudeventLogsPurgeOptions{}, "cloud-event-purge-splitable", "Purge obsolete cloud event logs", func(s *mcclient.ClientSession, opts *CloudeventLogsPurgeOptions) error {
resp, err := cloudevent.Cloudevents.PerformClassAction(s, "purge-splitable", jsonutils.Marshal(opts))
if err != nil {
return err
}
printObject(resp)
return nil
})
}

View File

@@ -20,6 +20,7 @@ import (
)
var (
R = shell.R
printList = printutils.PrintJSONList
R = shell.R
printList = printutils.PrintJSONList
printObject = printutils.PrintJSONObject
)

View File

@@ -0,0 +1,52 @@
// 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 (
"yunion.io/x/onecloud/cmd/climc/shell"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
"yunion.io/x/onecloud/pkg/mcclient/options"
"yunion.io/x/onecloud/pkg/mcclient/options/compute"
)
func init() {
bsCmd := shell.NewResourceCmd(&modules.BackupStorages)
bsCmd.List(&compute.BackupStorageListOptions{})
bsCmd.Show(&compute.BackupStorageIdOptions{})
bsCmd.Create(&compute.BackupStorageCreateOptions{})
bsCmd.Delete(&compute.BackupStorageIdOptions{})
bsCmd.Perform("public", &options.BasePublicOptions{})
bsCmd.Perform("private", &options.BaseIdOptions{})
bsCmd.Perform("syncstatus", &compute.DiskBackupSyncstatusOptions{})
dbCmd := shell.NewResourceCmd(&modules.DiskBackups)
dbCmd.List(&compute.DiskBackupListOptions{})
dbCmd.Show(&compute.DiskBackupIdOptions{})
dbCmd.DeleteWithParam(&compute.DiskBackupDeleteOptions{})
dbCmd.Create(&compute.DiskBackupCreateOptions{})
dbCmd.Perform("recovery", &compute.DiskBackupRecoveryOptions{})
dbCmd.Perform("syncstatus", &compute.DiskBackupSyncstatusOptions{})
ibCmd := shell.NewResourceCmd(&modules.InstanceBackups)
ibCmd.List(&compute.InstanceBackupListOptions{})
ibCmd.Show(&compute.InstanceBackupIdOptions{})
ibCmd.DeleteWithParam(&compute.InstanceBackupDeleteOptions{})
ibCmd.Perform("recovery", &compute.InstanceBackupRecoveryOptions{})
ibCmd.Perform("pack", &compute.InstanceBackupPackOptions{})
// ibCmd.PerformClass("create-from-package", &compute.InstanceBackupManagerCreateFromPackageOptions{})
ibCmd.Create(&compute.InstanceBackupManagerCreateFromPackageOptions{})
ibCmd.Perform("syncstatus", &compute.DiskBackupSyncstatusOptions{})
ibCmd.Perform("set-class-metadata", &options.ResourceMetadataOptions{})
}

View File

@@ -48,6 +48,8 @@ func init() {
cmd.CreateWithKeyword("create-ecloud", &options.SEcloudCloudAccountCreateOptions{})
cmd.CreateWithKeyword("create-jdcloud", &options.SJDcloudCloudAccountCreateOptions{})
cmd.CreateWithKeyword("create-cloudpods", &options.SCloudpodsCloudAccountCreateOptions{})
cmd.CreateWithKeyword("create-nutanix", &options.SNutanixCloudAccountCreateOptions{})
cmd.CreateWithKeyword("create-bingocloud", &options.SBingoCloudAccountCreateOptions{})
cmd.UpdateWithKeyword("update-vmware", &options.SVMwareCloudAccountUpdateOptions{})
cmd.UpdateWithKeyword("update-aliyun", &options.SAliyunCloudAccountUpdateOptions{})
@@ -64,6 +66,8 @@ func init() {
cmd.UpdateWithKeyword("update-ctyun", &options.SCtyunCloudAccountUpdateOptions{})
cmd.UpdateWithKeyword("update-jdcloud", &options.SJDcloudCloudAccountUpdateOptions{})
cmd.UpdateWithKeyword("update-cloudpods", &options.SCloudpodsCloudAccountUpdateOptions{})
cmd.UpdateWithKeyword("update-nutanix", &options.SNutanixCloudAccountUpdateOptions{})
cmd.UpdateWithKeyword("update-bingocloud", &options.SBingoCloudAccountUpdateOptions{})
cmd.Perform("update-credential", &options.CloudaccountUpdateCredentialOptions{})
@@ -75,6 +79,7 @@ func init() {
cmd.PerformWithKeyword("update-credential-aws", "update-credential", &options.SAWSCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-openstack", "update-credential", &options.SOpenStackCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-huawei", "update-credential", &options.SHuaweiCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-apsara", "update-credential", &options.SApsaraCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-hcso", "update-credential", &options.SHCSOAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-ucloud", "update-credential", &options.SUcloudCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-zstack", "update-credential", &options.SZStackCloudAccountUpdateCredentialOptions{})
@@ -82,6 +87,8 @@ func init() {
cmd.PerformWithKeyword("update-credential-ctyun", "update-credential", &options.SCtyunCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-jdcloud", "update-credential", &options.SJDcloudCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-cloudpods", "update-credential", &options.SCloudpodsCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-nutanix", "update-credential", &options.SNutanixCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("update-credential-bingocloud", "update-credential", &options.SBingoCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("test-connectivity-google", "test-connectivity", &options.SGoogleCloudAccountUpdateCredentialOptions{})
cmd.PerformWithKeyword("test-connectivity-vmware", "test-connectivity", &options.SVMwareCloudAccountUpdateCredentialOptions{})

View File

@@ -15,14 +15,34 @@
package compute
import (
"yunion.io/x/jsonutils"
"compress/zlib"
"context"
"fmt"
"io"
"net/http"
"os"
"strconv"
"time"
"github.com/cheggaaa/pb/v3"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
"yunion.io/x/onecloud/pkg/mcclient/options"
compute_options "yunion.io/x/onecloud/pkg/mcclient/options/compute"
"yunion.io/x/onecloud/pkg/util/httputils"
"yunion.io/x/onecloud/pkg/util/sparsefile"
)
func init() {
cmd := shell.NewResourceCmd(&modules.Disks)
cmd.Perform("set-class-metadata", &options.ResourceMetadataOptions{})
type DiskListOptions struct {
options.BaseListOptions
Unused *bool `help:"Show unused disks"`
@@ -194,7 +214,7 @@ func init() {
return nil
})
R(&options.DiskCreateOptions{}, "disk-create", "Create a virtual disk", func(s *mcclient.ClientSession, args *options.DiskCreateOptions) error {
R(&compute_options.DiskCreateOptions{}, "disk-create", "Create a virtual disk", func(s *mcclient.ClientSession, args *compute_options.DiskCreateOptions) error {
params, err := args.Params()
if err != nil {
return err
@@ -309,4 +329,110 @@ func init() {
return nil
})
type DiskDownloadOptions struct {
ID string `help:"ID or name of disk" json:"-"`
Compress bool
Sparse bool
Timeout int `help:"Timeout hours for download" default:"5"`
Debug bool
FILE string
}
R(&DiskDownloadOptions{}, "disk-download", "Download disk from host", func(s *mcclient.ClientSession, args *DiskDownloadOptions) error {
disk, err := modules.Disks.GetById(s, args.ID, nil)
if err != nil {
return err
}
storageId, _ := disk.GetString("storage_id")
storage, err := modules.Storages.GetById(s, storageId, nil)
if err != nil {
return err
}
hostsInfo := []struct {
Id string
}{}
storage.Unmarshal(&hostsInfo, "hosts")
header := http.Header{}
header.Set("X-Auth-Token", s.GetToken().GetTokenString())
if args.Compress {
header.Set("X-Compress-Content", "zlib")
}
if args.Sparse {
header.Set("X-Sparse-Content", "true")
}
client := httputils.GetTimeoutClient(time.Hour * time.Duration(args.Timeout))
for _, host := range hostsInfo {
host, err := modules.Hosts.GetById(s, host.Id, nil)
if err != nil {
return err
}
managerUri, _ := host.GetString("manager_uri")
if len(managerUri) == 0 {
continue
}
url := fmt.Sprintf("%s/download/disks/%s/%s", managerUri, storageId, args.ID)
resp, err := httputils.Request(client, context.Background(), httputils.GET, url, header, nil, args.Debug)
if err != nil {
log.Errorf("request %s error: %v", url, err)
continue
}
defer resp.Body.Close()
totalSize, _ := strconv.ParseInt(resp.Header.Get("Content-Length"), 10, 64)
sparseHeader, _ := strconv.ParseInt(resp.Header.Get("X-Sparse-Header"), 10, 64)
fi, err := os.Create(args.FILE)
if err != nil {
return errors.Wrapf(err, "os.Create(%s)", args.FILE)
}
defer fi.Close()
var reader = resp.Body
if args.Compress {
zlibRC, err := zlib.NewReader(resp.Body)
if err != nil {
return errors.Wrapf(err, "zlib.NewReader")
}
defer zlibRC.Close()
reader = zlibRC
}
var writer io.Writer = fi
if sparseHeader > 0 {
writer = sparsefile.NewSparseFileWriter(fi, sparseHeader, totalSize)
}
bar := pb.Full.Start64(totalSize)
barReader := bar.NewProxyReader(reader)
_, err = io.Copy(writer, barReader)
return err
}
return fmt.Errorf("no available download url")
})
type SparseHoleOptions struct {
FILE string
}
R(&SparseHoleOptions{}, "sparse-file-hole", "Show sparse file holes", func(s *mcclient.ClientSession, args *SparseHoleOptions) error {
fi, err := os.Open(args.FILE)
if err != nil {
return err
}
defer fi.Close()
sp, err := sparsefile.NewSparseFileReader(fi)
if err != nil {
return err
}
holes := sp.GetHoles()
printObject(jsonutils.Marshal(holes))
return nil
})
}

View File

@@ -33,6 +33,6 @@ func init() {
cmd.Perform("dissociate", &compute.EipDissociateOptions{})
cmd.Perform("sync", &options.BaseIdOptions{})
cmd.Perform("syncstatus", &options.BaseIdOptions{})
cmd.Perform("change-bandwidth", &options.BaseIdOptions{})
cmd.Perform("change-bandwidth", &compute.EipChangeBandwidthOptions{})
cmd.Perform("change-owner", &compute.EipChangeOwnerOptions{})
}

View File

@@ -15,57 +15,16 @@
package compute
import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient/modules/compute"
"yunion.io/x/onecloud/pkg/mcclient/options"
opts "yunion.io/x/onecloud/pkg/mcclient/options/compute"
)
func init() {
type ExternalProjectListOptions struct {
options.BaseListOptions
}
R(&ExternalProjectListOptions{}, "external-project-list", "List public cloud projects", func(s *mcclient.ClientSession, opts *ExternalProjectListOptions) error {
params, err := options.ListStructToParams(opts)
if err != nil {
return err
}
result, err := modules.ExternalProjects.List(s, params)
if err != nil {
return err
}
printList(result, modules.ExternalProjects.GetColumns(s))
return nil
})
type ExternalProjectShowOptions struct {
ID string `help:"ID"`
}
R(&ExternalProjectShowOptions{}, "external-project-show", "Show details of project mapping", func(s *mcclient.ClientSession, args *ExternalProjectShowOptions) error {
info, err := modules.ExternalProjects.Get(s, args.ID, nil)
if err != nil {
return err
}
printObject(info)
return nil
})
type ExternalProjectUpdateOptions struct {
ID string `help:"ExternalProject ID or Name"`
PROJECT string `help:"Local project ID or Name"`
}
R(&ExternalProjectUpdateOptions{}, "external-project-change-project", "Change external project point to local project", func(s *mcclient.ClientSession, args *ExternalProjectUpdateOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.PROJECT), "project")
result, err := modules.ExternalProjects.PerformAction(s, args.ID, "change-project", params)
if err != nil {
return err
}
printObject(result)
return nil
})
cmd := shell.NewResourceCmd(&compute.ExternalProjects).WithKeyword("external-project")
cmd.List(&opts.ExternalProjectListOptions{})
cmd.Create(&opts.ExternalProjectCreateOptions{})
cmd.Show(&options.BaseIdOptions{})
cmd.Perform("change-project", &opts.ExterProjectChagneProjectOptions{})
}

View File

@@ -17,12 +17,14 @@ package compute
import (
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient/modules/compute"
opts "yunion.io/x/onecloud/pkg/mcclient/options"
options "yunion.io/x/onecloud/pkg/mcclient/options/compute"
)
func init() {
cmd := shell.NewResourceCmd(&compute.GlobalVpcs).WithKeyword("global-vpc")
cmd.List(&options.GlobalVpcListOptions{})
cmd.Delete(&opts.BaseIdOptions{})
cmd.Show(&options.GlobalVpcIdOption{})
cmd.Create(&options.GlobalVpcCreateOptions{})
cmd.Perform("syncstatus", &options.GlobalVpcIdOption{})

View File

@@ -17,6 +17,7 @@ package compute
import (
"context"
"fmt"
"strings"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
@@ -49,6 +50,8 @@ func init() {
cmd.BatchDelete(&options.BaseIdsOptions{})
cmd.Perform("remove-all-netifs", &options.BaseIdOptions{})
cmd.Perform("probe-isolated-devices", &options.BaseIdOptions{})
cmd.Perform("class-metadata", &options.ResourceMetadataOptions{})
cmd.Perform("set-class-metadata", &options.ResourceMetadataOptions{})
cmd.BatchPerform("enable", &options.BaseIdsOptions{})
cmd.BatchPerform("disable", &options.BaseIdsOptions{})
@@ -59,6 +62,7 @@ func init() {
cmd.Get("ipmi", &options.BaseIdOptions{})
cmd.Get("vnc", &options.BaseIdOptions{})
cmd.Get("app-options", &options.BaseIdOptions{})
R(&options.BaseIdOptions{}, "host-logininfo", "Get SSH login information of a host", func(s *mcclient.ClientSession, args *options.BaseIdOptions) error {
srvid, e := modules.Hosts.GetId(s, args.ID, nil)
@@ -115,6 +119,33 @@ func init() {
return nil
})
type HostSysInfoOpt struct {
options.BaseIdOptions
Key string `help:"The key for extract, e.g. 'cpu_info.processors'"`
Format string `help:"Output format" choices:"yaml|json" default:"yaml"`
}
R(&HostSysInfoOpt{}, "host-sysinfo", "Get host system info", func(s *mcclient.ClientSession, args *HostSysInfoOpt) error {
obj, err := modules.Hosts.Get(s, args.GetId(), nil)
if err != nil {
return err
}
keys := []string{"sys_info"}
if args.Key != "" {
keys = append(keys, strings.Split(args.Key, ".")...)
}
sysInfo, err := obj.Get(keys...)
if err != nil {
return errors.Wrap(err, "Get sys_info")
}
if args.Format == "yaml" {
fmt.Print(sysInfo.YAMLString())
} else {
fmt.Print(sysInfo.PrettyString())
}
return nil
})
type HostUpdateOptions struct {
ID string `help:"ID or Name of Host"`
Name string `help:"New name of the host"`
@@ -131,6 +162,8 @@ func init() {
IpmiUsername string `help:"IPMI user"`
IpmiPassword string `help:"IPMI password"`
IpmiIpAddr string `help:"IPMI ip_addr"`
Sn string `help:"serial number"`
}
R(&HostUpdateOptions{}, "host-update", "Update information of a host", func(s *mcclient.ClientSession, args *HostUpdateOptions) error {
params := jsonutils.NewDict()
@@ -170,6 +203,9 @@ func init() {
if len(args.IpmiIpAddr) > 0 {
params.Add(jsonutils.NewString(args.IpmiIpAddr), "ipmi_ip_addr")
}
if len(args.Sn) > 0 {
params.Add(jsonutils.NewString(args.Sn), "sn")
}
if params.Size() == 0 {
return fmt.Errorf("Not data to update")
}

View File

@@ -15,6 +15,8 @@
package compute
import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
"yunion.io/x/onecloud/pkg/mcclient/options"
@@ -24,13 +26,21 @@ func init() {
type InstanceSnapshotsListOptions struct {
options.BaseListOptions
GuestId string `help:"guest id" json:"guest_id"`
GuestId string `help:"guest id" json:"guest_id"`
HasMemory bool `help:"contains memory snapshot" json:"-"`
NotHasMemory bool `help:"not contains memory snapshot" json:"-"`
}
R(&InstanceSnapshotsListOptions{}, "instance-snapshot-list", "Show instance snapshots", func(s *mcclient.ClientSession, args *InstanceSnapshotsListOptions) error {
params, err := options.ListStructToParams(args)
if err != nil {
return err
}
if args.HasMemory {
params.Set("with_memory", jsonutils.NewBool(true))
}
if args.NotHasMemory {
params.Set("with_memory", jsonutils.NewBool(false))
}
result, err := modules.InstanceSnapshots.List(s, params)
if err != nil {
return err
@@ -51,7 +61,7 @@ func init() {
type InstanceSnapshotShowOptions struct {
ID string `help:"ID or Name of snapshot"`
}
R(&InstanceSnapshotShowOptions{}, "snapshot-show", "Show snapshot details", func(s *mcclient.ClientSession, args *InstanceSnapshotShowOptions) error {
R(&InstanceSnapshotShowOptions{}, "instance-snapshot-show", "Show snapshot details", func(s *mcclient.ClientSession, args *InstanceSnapshotShowOptions) error {
result, err := modules.InstanceSnapshots.Get(s, args.ID, nil)
if err != nil {
return err

View File

@@ -0,0 +1,28 @@
// 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 (
"yunion.io/x/onecloud/cmd/climc/shell"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
"yunion.io/x/onecloud/pkg/mcclient/options"
"yunion.io/x/onecloud/pkg/mcclient/options/compute"
)
func init() {
cmd := shell.NewResourceCmd(&modules.IPv6Gateways)
cmd.List(&compute.IPv6GatewayListOptions{})
cmd.Show(&options.BaseIdOptions{})
}

View File

@@ -94,6 +94,7 @@ func init() {
ReservedCpu *int `help:"reserved cpu for isolated device"`
ReservedMem *int `help:"reserved mem for isolated device"`
ReservedStorage *int `help:"reserved storage for isolated device"`
DevType string `help:"Device type" choices:"GPU-HPC|GPU-VGA"`
}
R(&DeviceUpdateOptions{}, "isolated-device-update", "Update a isolated device", func(s *mcclient.ClientSession, args *DeviceUpdateOptions) error {
res := modules.IsolatedDevices.BatchUpdate(s, args.ID, jsonutils.Marshal(args))

View File

@@ -40,6 +40,7 @@ func init() {
cmd.Perform("sync", &options.NetworkIdOptions{})
cmd.Perform("purge", &options.NetworkIdOptions{})
cmd.Get("change-owner-candidate-domains", &options.NetworkIdOptions{})
cmd.Perform("set-class-metadata", &options.ResourceMetadataOptions{})
type NetworkShareOptions struct {
ID string `help:"ID or Name of the zone to show"`

View File

@@ -50,7 +50,7 @@ func init() {
cmd.BatchPut(new(options.ServerUpdateOptions))
cmd.GetMetadata(new(options.ServerIdOptions))
cmd.Perform("clone", new(options.ServerCloneOptions))
cmd.BatchPerform("start", new(options.ServerIdsOptions))
cmd.BatchPerform("start", new(options.ServerStartOptions))
cmd.BatchPerform("syncstatus", new(options.ServerIdsOptions))
cmd.BatchPerform("sync", new(options.ServerIdsOptions))
cmd.Perform("switch-to-backup", new(options.ServerSwitchToBackupOptions))
@@ -100,6 +100,10 @@ func init() {
cmd.Perform("user-metadata", &baseoptions.ResourceMetadataOptions{})
cmd.Perform("set-user-metadata", &baseoptions.ResourceMetadataOptions{})
cmd.Perform("probe-isolated-devices", &options.ServerIdOptions{})
cmd.Perform("cpuset", &options.ServerCPUSetOptions{})
cmd.Perform("cpuset-remove", &options.ServerIdOptions{})
cmd.Perform("calculate-record-checksum", &options.ServerIdOptions{})
cmd.Perform("set-class-metadata", &baseoptions.ResourceMetadataOptions{})
cmd.Get("vnc", new(options.ServerIdOptions))
cmd.Get("desc", new(options.ServerIdOptions))
@@ -110,6 +114,10 @@ func init() {
cmd.Get("make-sshable-cmd", new(options.ServerIdOptions))
cmd.Get("change-owner-candidate-domains", new(options.ServerChangeOwnerCandidateDomainsOptions))
cmd.Get("change-owner-candidate-domains", new(options.ServerChangeOwnerCandidateDomainsOptions))
cmd.Get("cpuset-cores", new(options.ServerIdOptions))
cmd.Get("sshport", new(options.ServerIdOptions))
cmd.Get("qemu-info", new(options.ServerIdOptions))
cmd.GetProperty(&options.ServerStatusStatisticsOptions{})
cmd.GetProperty(&options.ServerProjectStatisticsOptions{})
cmd.GetProperty(&options.ServerDomainStatisticsOptions{})
@@ -235,19 +243,6 @@ func init() {
},
)
R(&options.ServerCreateOptions{}, "server-check-create-data", "Check create server data", func(s *mcclient.ClientSession, opts *options.ServerCreateOptions) error {
params, err := opts.Params()
if err != nil {
return err
}
server, err := modules.Servers.PerformClassAction(s, "check-create-data", params.JSON(params))
if err != nil {
return err
}
printObject(server)
return nil
})
R(&options.ServerCreateOptions{}, "server-create", "Create a server", func(s *mcclient.ClientSession, opts *options.ServerCreateOptions) error {
params, err := opts.Params()
if err != nil {
@@ -265,24 +260,24 @@ func init() {
return err
}
printList(modulebase.JSON2ListResult(result), listFields)
return nil
}
taskNotify := baseoptions.BoolV(opts.TaskNotify)
if taskNotify {
s.PrepareTask()
}
if count > 1 {
results := modules.Servers.BatchCreate(s, params.JSON(params), count)
printBatchResults(results, modules.Servers.GetColumns(s))
} else {
taskNotify := baseoptions.BoolV(opts.TaskNotify)
if taskNotify {
s.PrepareTask()
}
if count > 1 {
results := modules.Servers.BatchCreate(s, params.JSON(params), count)
printBatchResults(results, modules.Servers.GetColumns(s))
} else {
server, err := modules.Servers.Create(s, params.JSON(params))
if err != nil {
return err
}
printObject(server)
}
if taskNotify {
s.WaitTaskNotify()
server, err := modules.Servers.Create(s, params.JSON(params))
if err != nil {
return err
}
printObject(server)
}
if taskNotify {
s.WaitTaskNotify()
}
return nil
})
@@ -730,8 +725,9 @@ func init() {
return nil
})
type ServerCreateSnapshot struct {
ID string `help:"ID or name of VM" json:"-"`
SNAPSHOT string `help:"Instance snapshot name" json:"name"`
ID string `help:"ID or name of VM" json:"-"`
SNAPSHOT string `help:"Instance snapshot name" json:"name"`
WithMemory bool `help:"Save memory state" json:"with_memory"`
}
R(&ServerCreateSnapshot{}, "instance-snapshot-create", "create instance snapshot", func(s *mcclient.ClientSession, opts *ServerCreateSnapshot) error {
params := jsonutils.Marshal(opts)
@@ -742,6 +738,20 @@ func init() {
printObject(result)
return nil
})
type ServerCreateBackup struct {
ID string `help:"ID or name of VM" json:"-"`
BACKUP string `help:"Instance backup name" json:"name"`
BACKUPSTORAGEID string `help:"backup storage id" json:"backup_storage_id"`
}
R(&ServerCreateBackup{}, "server-create-instance-backup", "create instance backup", func(s *mcclient.ClientSession, opts *ServerCreateBackup) error {
params := jsonutils.Marshal(opts)
result, err := modules.Servers.PerformAction(s, opts.ID, "instance-backup", params)
if err != nil {
return err
}
printObject(result)
return nil
})
type ServerSnapshotAndClone struct {
ID string `help:"ID or name of VM" json:"-"`
@@ -767,6 +777,7 @@ func init() {
type ServerRollBackSnapshot struct {
ID string `help:"ID or name of VM" json:"-"`
InstanceSnapshot string `help:"Instance snapshot id or name" json:"instance_snapshot"`
WithMemory bool `help:"Memory restore" json:"with_memory"`
AutoStart bool `help:"Auto start VM"`
}
R(&ServerRollBackSnapshot{}, "instance-snapshot-reset", "reset instance snapshot", func(s *mcclient.ClientSession, opts *ServerRollBackSnapshot) error {

View File

@@ -33,4 +33,5 @@ func init() {
cmd.PerformWithKeyword("merge", "merge-from", new(options.WireMergeOptions))
cmd.Perform("merge-network", new(options.WireOptions))
cmd.Get("topology", &options.WireOptions{})
cmd.Perform("set-class-metadata", &options.ResourceMetadataOptions{})
}

View File

@@ -15,15 +15,18 @@
package compute
import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
)
func init() {
type WorkerListOptions struct {
ServiceType string `choices:"image|cloudid|cloudevent|devtool|ansible|identity|notify|log|compute|compute_v2"`
}
R(&WorkerListOptions{}, "worker-list", "List workers", func(s *mcclient.ClientSession, args *WorkerListOptions) error {
result, err := modules.Workers.List(s, nil)
result, err := modules.Workers.List(s, jsonutils.Marshal(args))
if err != nil {
return err
}

View File

@@ -19,9 +19,8 @@ import (
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/modules/compute"
"yunion.io/x/onecloud/pkg/mcclient/modules/identity"
"yunion.io/x/onecloud/pkg/mcclient/modules/image"
)
type BaseEventListOptions struct {
@@ -42,6 +41,9 @@ type BaseEventListOptions struct {
OwnerDomainIds []string `help:"filter by owner domain ids"`
PagingMarker string `help:"marker for pagination"`
PagingOrder string `help:"pagination order" choices:"DESC|ASC"`
Filter []string `help:"Filters"`
}
type EventListOptions struct {
@@ -61,11 +63,11 @@ func doComputeEventList(s *mcclient.ClientSession, args *EventListOptions) error
}
func doImageEventList(s *mcclient.ClientSession, args *EventListOptions) error {
return DoEventList(image.ImageLogs, s, args)
return DoEventList(modules.ImageLogs, s, args)
}
func doIdentityEventList(s *mcclient.ClientSession, args *EventListOptions) error {
return DoEventList(identity.IdentityLogs, s, args)
return DoEventList(modules.IdentityLogs, s, args)
}
func DoEventList(man modulebase.ResourceManager, s *mcclient.ClientSession, args *EventListOptions) error {
@@ -120,6 +122,12 @@ func DoEventList(man modulebase.ResourceManager, s *mcclient.ClientSession, args
if len(args.PagingMarker) > 0 {
params.Add(jsonutils.NewString(args.PagingMarker), "paging_marker")
}
if len(args.PagingOrder) > 0 {
params.Add(jsonutils.NewString(args.PagingOrder), "paging_order")
}
if len(args.Filter) > 0 {
params.Add(jsonutils.NewStringArray(args.Filter), "filter")
}
logs, err := man.List(s, params)
if err != nil {
return err

View File

@@ -15,68 +15,13 @@
package events
import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
"yunion.io/x/onecloud/pkg/mcclient/modules/cloudevent"
"yunion.io/x/onecloud/pkg/mcclient/modules/compute"
"yunion.io/x/onecloud/pkg/mcclient/modules/identity"
"yunion.io/x/onecloud/pkg/mcclient/modules/image"
"yunion.io/x/onecloud/pkg/mcclient/modules/logger"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type EventSplitableOptions struct {
Service string `help:"service" choices:"compute|identity|image|log|cloudevent" default:"compute"`
}
R(&EventSplitableOptions{}, "logs-splitable", "Show splitable info of event table", func(s *mcclient.ClientSession, args *EventSplitableOptions) error {
var results jsonutils.JSONObject
var err error
switch args.Service {
case "identity":
results, err = identity.IdentityLogs.Get(s, "splitable", nil)
case "image":
results, err = image.ImageLogs.Get(s, "splitable", nil)
case "log":
results, err = logger.Actions.Get(s, "splitable", nil)
case "cloudevent":
results, err = cloudevent.Cloudevents.Get(s, "splitable", nil)
default:
results, err = compute.Logs.Get(s, "splitable", nil)
}
if err != nil {
return err
}
tables, err := results.GetArray()
if err != nil {
return err
}
listResult := &modulebase.ListResult{
Data: tables,
}
printList(listResult, nil)
return nil
})
R(&EventSplitableOptions{}, "logs-purge", "Purge obsolete splitable of event table", func(s *mcclient.ClientSession, args *EventSplitableOptions) error {
var results jsonutils.JSONObject
var err error
switch args.Service {
case "identity":
results, err = identity.IdentityLogs.PerformClassAction(s, "purge-splitable", nil)
case "image":
results, err = image.ImageLogs.PerformClassAction(s, "purge-splitable", nil)
case "log":
results, err = logger.Actions.PerformClassAction(s, "purge-splitable", nil)
case "cloudevent":
results, err = cloudevent.Cloudevents.PerformClassAction(s, "purge-splitable", nil)
default:
results, err = compute.Logs.PerformClassAction(s, "purge-splitable", nil)
}
if err != nil {
return err
}
printObject(results)
return nil
})
cmd := shell.NewResourceCmd(&modules.Logs).WithKeyword("logs")
cmd.Show(&options.EventSplitableOptions{})
cmd.PerformClass("purge-splitable", &options.EventPurgeSplitableOptions{})
}

View File

@@ -362,6 +362,32 @@ func (cmd ResourceCmd) Delete(args IDeleteOpt) {
cmd.RunWithDesc("delete", fmt.Sprintf("Delete %s", man.GetKeyword()), args, callback)
}
type IDeleteWithParamOpt interface {
IDeleteOpt
QueryParams() (jsonutils.JSONObject, error)
}
func (cmd ResourceCmd) DeleteWithParam(args IDeleteWithParamOpt) {
man := cmd.manager
callback := func(s *mcclient.ClientSession, args IDeleteWithParamOpt) error {
queryParams, err := args.QueryParams()
if err != nil {
return err
}
params, err := args.Params()
if err != nil {
return err
}
ret, err := man.(modulebase.Manager).DeleteWithParam(s, args.GetId(), queryParams, params)
if err != nil {
return err
}
PrintObject(ret)
return nil
}
cmd.RunWithDesc("delete", fmt.Sprintf("Delete %s", man.GetKeyword()), args, callback)
}
type IWithDescOpt interface {
Description() string
}

View File

@@ -0,0 +1,102 @@
// 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 identity
import (
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/identity"
)
func init() {
type CredentialAesKeyOptions struct {
User string `help:"User"`
UserDomain string `help:"domain of user"`
}
type CredentialCreateAesKeyOptions struct {
CredentialAesKeyOptions
NAME string `help:"name of key"`
ALG string `help:"name of alg" choices:"aes-256|sm4"`
}
R(&CredentialCreateAesKeyOptions{}, "credential-create-enckey", "Create AES 256 Secret Key", func(s *mcclient.ClientSession, args *CredentialCreateAesKeyOptions) error {
var uid string
var err error
if len(args.User) > 0 {
uid, err = modules.UsersV3.FetchId(s, args.User, args.UserDomain)
if err != nil {
return err
}
}
secret, err := modules.Credentials.CreateEncryptKey(s, uid, args.NAME, args.ALG)
if err != nil {
return err
}
printObject(secret.Marshal())
return nil
})
R(&CredentialAesKeyOptions{}, "credential-get-enckey", "Get encryption secret keys for user", func(s *mcclient.ClientSession, args *CredentialAesKeyOptions) error {
var uid string
var err error
if len(args.User) > 0 {
uid, err = modules.UsersV3.FetchId(s, args.User, args.UserDomain)
if err != nil {
return err
}
}
secrets, err := modules.Credentials.GetEncryptKeys(s, uid)
if err != nil {
return err
}
result := modulebase.ListResult{}
result.Data = make([]jsonutils.JSONObject, len(secrets))
for i := range secrets {
result.Data[i] = secrets[i].Marshal()
}
printList(&result, nil)
return nil
})
type CredentialAesKeyEncryptOptions struct {
ID string `help:"id or name of credential"`
SECRET string `help:"secret to encrypt"`
}
R(&CredentialAesKeyEncryptOptions{}, "credential-enckey-encrypt", "Encrypt with a encryption key", func(s *mcclient.ClientSession, args *CredentialAesKeyEncryptOptions) error {
sec, err := modules.Credentials.EncryptKeyEncryptBase64(s, args.ID, []byte(args.SECRET))
if err != nil {
return err
}
fmt.Println(sec)
return nil
})
type CredentialAesKeyDecryptOptions struct {
ID string `help:"id or name of credential"`
SECRET string `help:"secret to decrypt"`
}
R(&CredentialAesKeyDecryptOptions{}, "credential-enckey-decrypt", "Decrypt with a encryption key", func(s *mcclient.ClientSession, args *CredentialAesKeyDecryptOptions) error {
sec, err := modules.Credentials.EncryptKeyDecryptBase64(s, args.ID, args.SECRET)
if err != nil {
return err
}
fmt.Println(string(sec))
return nil
})
}

View File

@@ -28,7 +28,7 @@ import (
func init() {
type CredentialListOptions struct {
Scope string `help:"scope" choices:"project|domain|system"`
Type string `help:"credential type" choices:"totp|recovery|aksk"`
Type string `help:"credential type" choices:"totp|recovery|aksk|enc_key"`
User string `help:"filter by user"`
UserDomain string `help:"the domain of user"`
}

View File

@@ -748,6 +748,20 @@ func init() {
return nil
})
type IdpGetCallbackUriOptions struct {
ID string `help:"id or name of idp to query" json:"-"`
api.GetIdpSsoCallbackUriInput
}
R(&IdpGetCallbackUriOptions{}, "idp-sso-callback-url", "Get sso callback url of a SSO idp", func(s *mcclient.ClientSession, args *IdpGetCallbackUriOptions) error {
result, err := modules.IdentityProviders.GetSpecific(s, args.ID, "sso-callback-uri", jsonutils.Marshal(args))
if err != nil {
return err
}
printObject(result)
return nil
})
type IdpSetDefaultSsoOptions struct {
ID string `help:"id or name of idp to set default Sso" json:"-"`

View File

@@ -39,10 +39,17 @@ import (
"yunion.io/x/onecloud/pkg/util/tagutils"
)
func createPolicy(s *mcclient.ClientSession, name string, policy string, domain string, enabled bool, disabled bool, desc string, scope string, isSystem *bool, objectags, projecttags, domaintags tagutils.TTagSet) error {
func createPolicy(s *mcclient.ClientSession, name string, genName string, policy string, domain string, enabled bool, disabled bool, desc string, scope string, isSystem *bool, objectags, projecttags, domaintags tagutils.TTagSet) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(name), "name")
params.Add(jsonutils.NewString(name), "type")
if len(genName) > 0 {
params.Add(jsonutils.NewString(genName), "generate_name")
params.Add(jsonutils.NewString(genName), "type")
} else if len(name) > 0 {
params.Add(jsonutils.NewString(name), "name")
params.Add(jsonutils.NewString(name), "type")
} else {
return fmt.Errorf("mising name")
}
params.Add(jsonutils.NewString(policy), "policy")
if len(domain) > 0 {
params.Add(jsonutils.NewString(domain), "project_domain_id")
@@ -83,7 +90,31 @@ func createPolicy(s *mcclient.ClientSession, name string, policy string, domain
printObject(result)
return nil
}
func createPolicyFromJson(s *mcclient.ClientSession, old jsonutils.JSONObject, argsName, genName, argsDomain, argsScope string) error {
policy, _ := old.GetString("policy")
enabled, _ := old.Bool("enabled")
desc, _ := old.GetString("description")
scope, _ := old.GetString("scope")
if len(argsScope) > 0 {
scope = argsScope
}
isSystem, _ := old.Bool("is_system")
var objectTags, projectTags, domainTags tagutils.TTagSet
if old.Contains("object_tags") {
objectTags = make(tagutils.TTagSet, 0)
old.Unmarshal(&objectTags, "object_tags")
}
if old.Contains("project_tags") {
projectTags = make(tagutils.TTagSet, 0)
old.Unmarshal(&projectTags, "project_tags")
}
if old.Contains("domain_tags") {
domainTags = make(tagutils.TTagSet, 0)
old.Unmarshal(&domainTags, "domain_tags")
}
return createPolicy(s, argsName, genName, policy, argsDomain, enabled, !enabled, desc, scope, &isSystem, objectTags, projectTags, domainTags)
}
func init() {
@@ -119,10 +150,40 @@ func init() {
objectTags := baseoptions.SplitTag(args.ObjectTags)
projectTags := baseoptions.SplitTag(args.ProjectTags)
domainTags := baseoptions.SplitTag(args.DomainTags)
return createPolicy(s, args.NAME, string(policyBytes), args.Domain, args.Enabled, args.Disabled, args.Desc, args.Scope, args.IsSystem, objectTags, projectTags, domainTags)
return createPolicy(s, args.NAME, "", string(policyBytes), args.Domain, args.Enabled, args.Disabled, args.Desc, args.Scope, args.IsSystem, objectTags, projectTags, domainTags)
})
type PolicyExportOptions struct {
ID string `json:"id"`
}
R(&PolicyExportOptions{}, "policy-export", "Export a policy", func(s *mcclient.ClientSession, args *PolicyExportOptions) error {
ret, err := modules.Policies.Get(s, args.ID, nil)
if err != nil {
return err
}
fmt.Println(ret.PrettyString())
return nil
})
type PolicyImportOptions struct {
FILE string `json:"id"`
Domain string `help:"domain of the policy"`
}
R(&PolicyImportOptions{}, "policy-import", "Import a policy", func(s *mcclient.ClientSession, args *PolicyImportOptions) error {
cont, err := ioutil.ReadFile(args.FILE)
if err != nil {
return err
}
jsonCont, err := jsonutils.Parse(cont)
if err != nil {
return err
}
name, _ := jsonCont.GetString("name")
return createPolicyFromJson(s, jsonCont, "", name, args.Domain, "")
})
type PolicyCloneOptions struct {
Scope string `help:"scope of policy"`
Domain string `help:"domain of the policy"`
OLD string `help:"name or id of the old policy"`
NAME string `help:"name of the policy"`
@@ -132,25 +193,7 @@ func init() {
if err != nil {
return err
}
policy, _ := old.GetString("policy")
enabled, _ := old.Bool("enabled")
desc, _ := old.GetString("description")
scope, _ := old.GetString("scope")
isSystem, _ := old.Bool("is_system")
var objectTags, projectTags, domainTags tagutils.TTagSet
if old.Contains("object_tags") {
objectTags = make(tagutils.TTagSet, 0)
old.Unmarshal(&objectTags, "object_tags")
}
if old.Contains("project_tags") {
projectTags = make(tagutils.TTagSet, 0)
old.Unmarshal(&projectTags, "project_tags")
}
if old.Contains("domain_tags") {
domainTags = make(tagutils.TTagSet, 0)
old.Unmarshal(&domainTags, "domain_tags")
}
return createPolicy(s, args.NAME, policy, args.Domain, enabled, !enabled, desc, scope, &isSystem, objectTags, projectTags, domainTags)
return createPolicyFromJson(s, old, args.NAME, "", args.Domain, args.Scope)
})
type PolicyPatchOptions struct {

View File

@@ -31,6 +31,8 @@ func init() {
cmd.List(&identity_options.ProjectListOptions{})
cmd.Perform("user-metadata", &options.ResourceMetadataOptions{})
cmd.Perform("set-user-metadata", &options.ResourceMetadataOptions{})
cmd.Perform("class-metadata", &options.ResourceMetadataOptions{})
cmd.Perform("set-class-metadata", &options.ResourceMetadataOptions{})
cmd.GetProperty(&identity_options.ProjectGetPropertyTagValuePairOptions{})
cmd.GetProperty(&identity_options.ProjectGetPropertyTagValueTreeOptions{})
cmd.GetProperty(&identity_options.ProjectGetPropertyDomainTagValuePairOptions{})

View File

@@ -456,4 +456,17 @@ func init() {
printObject(result)
return nil
})
type UserResetCredentialOptions struct {
USER string `json:"-" help:"ID or name of user to operate"`
TYPE string `json:"type" help:"Crednetial type of reset" choices:"totp|recovery|aksk|enc_key"`
}
R(&UserResetCredentialOptions{}, "user-reset-credentials", "Reset user credential", func(s *mcclient.ClientSession, args *UserResetCredentialOptions) error {
result, err := modules.UsersV3.PerformAction(s, args.USER, "reset-credentials", jsonutils.Marshal(args))
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -24,11 +24,13 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
"yunion.io/x/onecloud/pkg/mcclient/modules/identity"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/image"
"yunion.io/x/onecloud/pkg/mcclient/options"
"yunion.io/x/onecloud/pkg/mcclient/options/glance"
)
type ImageOptionalOptions struct {
@@ -58,6 +60,8 @@ type ImageOptionalOptions struct {
DiskDriver string `help:"Perfer disk driver" choices:"virtio|scsi|pvscsi|ide|sata"`
NetDriver string `help:"Preferred network driver" choices:"virtio|e1000|vmxnet3"`
DisableUsbKbd bool `help:"Disable usb keyboard on this image(for hypervisor kvm)"`
BootMode string `help:"UEFI support" choices:"UEFI|BIOS"`
VdiProtocol string `help:"VDI protocol" choices:"vnc|spice"`
}
func addImageOptionalOptions(s *mcclient.ClientSession, params *jsonutils.JSONDict, args ImageOptionalOptions) error {
@@ -116,6 +120,7 @@ func addImageOptionalOptions(s *mcclient.ClientSession, params *jsonutils.JSONDi
}
if len(args.OsArch) > 0 {
params.Add(jsonutils.NewString(args.OsArch), "properties", "os_arch")
params.Add(jsonutils.NewString(args.OsArch), "os_arch")
}
if len(args.OsLang) > 0 {
params.Add(jsonutils.NewString(args.OsLang), "properties", "os_language")
@@ -138,73 +143,26 @@ func addImageOptionalOptions(s *mcclient.ClientSession, params *jsonutils.JSONDi
if args.DisableUsbKbd {
params.Add(jsonutils.NewString("true"), "properties", "disable_usb_kbd")
}
if args.BootMode == "UEFI" {
params.Add(jsonutils.JSONTrue, "properties", "uefi_support")
} else if args.BootMode == "BIOS" {
params.Add(jsonutils.JSONFalse, "properties", "uefi_support")
}
if len(args.VdiProtocol) > 0 {
params.Add(jsonutils.NewString(args.VdiProtocol), "properties", "vdi_protocol")
}
return nil
}
func init() {
type ImageListOptions struct {
options.BaseListOptions
IsPublic string `help:"filter images public or not(True, False or None)" choices:"true|false"`
IsStandard string `help:"filter images standard or non-standard" choices:"true|false"`
Protected string `help:"filter images by protected" choices:"true|false"`
IsUefi bool `help:"list uefi image"`
Format []string `help:"Disk formats"`
SubFormats []string `help:"Sub formats"`
Name string `help:"Name filter"`
OsType []string `help:"Type of OS filter e.g. 'Windows, Linux, Freebsd, Android, macOS, VMWare'"`
Distribution []string `help:"Distribution filter, e.g. 'CentOS, Ubuntu, Debian, Windows'"`
}
R(&ImageListOptions{}, "image-list", "List images", func(s *mcclient.ClientSession, args *ImageListOptions) error {
params, err := args.Params()
if err != nil {
return err
}
if len(args.IsPublic) > 0 {
params.Add(jsonutils.NewString(args.IsPublic), "is_public")
}
if len(args.IsStandard) > 0 {
params.Add(jsonutils.NewString(args.IsStandard), "is_standard")
}
if len(args.Protected) > 0 {
params.Add(jsonutils.NewString(args.Protected), "protected")
}
if args.IsUefi {
params.Add(jsonutils.JSONTrue, "uefi")
}
if len(args.Tenant) > 0 {
tid, e := identity.Projects.GetId(s, args.Tenant, nil)
if e != nil {
return e
}
params.Add(jsonutils.NewString(tid), "owner")
}
if len(args.Name) > 0 {
params.Add(jsonutils.NewString(args.Name), "name")
}
if len(args.Format) > 0 {
fs := jsonutils.NewArray()
for _, f := range args.Format {
fs.Add(jsonutils.NewString(f))
}
params.Add(fs, "disk_formats")
}
if len(args.SubFormats) > 0 {
params.Add(jsonutils.Marshal(args.SubFormats), "sub_formats")
}
if len(args.OsType) > 0 {
params.Add(jsonutils.NewStringArray(args.OsType), "os_types")
}
if len(args.Distribution) > 0 {
params.Add(jsonutils.NewStringArray(args.Distribution), "distributions")
}
result, err := modules.Images.List(s, params)
if err != nil {
return err
}
printList(result, modules.Images.GetColumns(s))
return nil
})
cmd := shell.NewResourceCmd(&modules.Images)
cmd.List(&glance.ImageListOptions{})
cmd.GetProperty(&glance.ImageStatusStatisticsOptions{})
cmd.Perform("user-metadata", &options.ResourceMetadataOptions{})
cmd.Perform("set-user-metadata", &options.ResourceMetadataOptions{})
cmd.Perform("class-metadata", &options.ResourceMetadataOptions{})
cmd.Perform("set-class-metadata", &options.ResourceMetadataOptions{})
type ImageOperationOptions struct {
ID []string `help:"Image id or name" metavar:"IMAGE"`
@@ -295,11 +253,17 @@ func init() {
type ImageUploadOptions struct {
NAME string `help:"Image Name"`
FILE string `help:"The local image filename to Upload"`
EncryptKey string `help:"encrypt key id"`
ImageOptionalOptions
}
R(&ImageUploadOptions{}, "image-upload", "Upload a local image", func(s *mcclient.ClientSession, args *ImageUploadOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.NAME), "name")
if len(args.EncryptKey) > 0 {
params.Add(jsonutils.NewString(args.EncryptKey), "encrypt_key_id")
}
err := addImageOptionalOptions(s, params, args.ImageOptionalOptions)
if err != nil {
return err
@@ -326,8 +290,9 @@ func init() {
type ImageImportOptions struct {
ImageOptionalOptions
NAME string `help:"Image Name"`
COPYFROM string `help:"Image external location url"`
NAME string `help:"Image Name"`
COPYFROM string `help:"Image external location url"`
EncryptKey string `help:"encrypt key id"`
}
R(&ImageImportOptions{}, "image-import", "Import a external image", func(s *mcclient.ClientSession, args *ImageImportOptions) error {
params := jsonutils.NewDict()
@@ -335,6 +300,9 @@ func init() {
if len(args.Format) == 0 {
return fmt.Errorf("Please specify image format")
}
if len(args.EncryptKey) > 0 {
params.Add(jsonutils.NewString(args.EncryptKey), "encrypt_key_id")
}
err := addImageOptionalOptions(s, params, args.ImageOptionalOptions)
if err != nil {
return err

View File

@@ -120,6 +120,31 @@ func doActionList(s *mcclient.ClientSession, args *ActionListOptions) error {
func init() {
R(&ActionListOptions{}, "action-show", "Show operation action logs", doActionList)
type ActionSplitTableOptions struct {
}
R(&ActionSplitTableOptions{}, "action-splitable", "Show splitables", func(s *mcclient.ClientSession, args *ActionSplitTableOptions) error {
resp, err := modules.Actions.Get(s, "splitable", nil)
if err != nil {
return err
}
printObject(resp)
return nil
})
type ActionPurgeOptions struct {
Tables []string
}
R(&ActionPurgeOptions{}, "action-purge-splitable", "Purge action splitables", func(s *mcclient.ClientSession, args *ActionPurgeOptions) error {
resp, err := modules.Actions.PerformClassAction(s, "purge-splitable", jsonutils.Marshal(args))
if err != nil {
return err
}
printObject(resp)
return nil
})
R(&TypeActionListOptions{}, "server-action", "Show operation action logs of server", func(s *mcclient.ClientSession, args *TypeActionListOptions) error {
nargs := ActionListOptions{BaseActionListOptions: args.BaseActionListOptions, Id: args.ID, Type: []string{"server"}}
return doActionList(s, &nargs)

View File

@@ -12,21 +12,23 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package panicutils
package misc
import (
"context"
"runtime/debug"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudcommon/notifyclient"
npk "yunion.io/x/onecloud/pkg/mcclient/modules/notify"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
)
const PANIC_ERROR = "PANIC_ERROR"
func SendPanicMessage(ctx context.Context, err error) {
iNotes := jsonutils.Marshal(map[string]string{"stack": string(debug.Stack()), "error": err.Error()})
notifyclient.SystemNotifyWithCtx(ctx, npk.NotifyPriorityCritical, PANIC_ERROR, iNotes)
func init() {
type AppOptionsOptions struct {
SERVICE string `help:"Service type"`
}
R(&AppOptionsOptions{}, "app-options-show", "query backend service for its options", func(s *mcclient.ClientSession, args *AppOptionsOptions) error {
opts, err := modules.GetAppOptions(s, args.SERVICE)
if err != nil {
return err
}
printObject(opts)
return nil
})
}

View File

@@ -0,0 +1,157 @@
// 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 misc
import (
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/errors"
"yunion.io/x/pkg/utils"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf"
)
func init() {
var features = []string{
"onestack",
"baremetal",
"lb",
"aliyun",
"aws",
"azure",
"ctyun",
"google",
"huawei",
"qcloud",
"ucloud",
"ecloud",
"jdcloud",
"vmware",
"openstack",
"dstack",
"zstack",
"apsara",
"cloudpods",
"hcso",
"nutanix",
"s3",
"ceph",
"xsky",
"bill",
"auth",
"onecloud",
"public",
"private",
"storage",
"default",
"k8s",
"monitor",
}
const (
GlobalSettings = "global-settings"
SystemScope = "system"
YunionAgent = "yunionagent"
)
type FeatureCfgOpts struct {
Switch string `help:"Config feature on or off" choices:"on|off"`
}
featureR := func(name string) {
R(&FeatureCfgOpts{}, fmt.Sprintf("feature-config-%s", name), fmt.Sprintf("Set feature %s on or off", name), func(s *mcclient.ClientSession, args *FeatureCfgOpts) error {
enable := true
if args.Switch == "off" {
enable = false
}
items, err := yunionconf.Parameters.List(s, jsonutils.Marshal(map[string]string{
"name": GlobalSettings,
"scope": "system"}))
if err != nil {
return errors.Wrapf(err, "get %s from yunionconf", GlobalSettings)
}
if len(items.Data) == 0 {
// create it if enabled
if enable {
input := map[string]interface{}{
"name": GlobalSettings,
"service_id": YunionAgent,
"value": map[string]interface{}{
"setupKeys": []string{name},
"setupOneStackInitialized": true,
},
}
params := jsonutils.Marshal(input)
if _, err := yunionconf.Parameters.Create(s, params); err != nil {
return errors.Errorf("create %s for feature %q", GlobalSettings, name)
}
return nil
} else {
return errors.Errorf("not found %s", GlobalSettings)
}
}
if len(items.Data) != 1 {
return errors.Errorf("found %d %q from yunionconf", len(items.Data), GlobalSettings)
}
// update it
ss := items.Data[0]
value, err := ss.Get("value")
if err != nil {
return errors.Wrap(err, "get value")
}
setupKeys := []string{}
if value.Contains("setupKeys") {
if err := value.Unmarshal(&setupKeys, "setupKeys"); err != nil {
return errors.Wrap(err, "unmarshal setupKeys")
}
}
if !enable {
if utils.IsInStringArray(name, setupKeys) {
newKeys := []string{}
for _, key := range setupKeys {
if key != name {
newKeys = append(newKeys, key)
}
}
setupKeys = newKeys
}
} else if enable {
if !utils.IsInStringArray(name, setupKeys) {
setupKeys = append(setupKeys, name)
}
}
value.(*jsonutils.JSONDict).Set("setupKeys", jsonutils.Marshal(setupKeys))
id, err := ss.GetString("id")
if err != nil {
return errors.Errorf("get id from %s", ss)
}
ss.(*jsonutils.JSONDict).Set("value", value)
obj, err := yunionconf.Parameters.Update(s, id, ss)
if err != nil {
return errors.Wrapf(err, "update %s(%s)", GlobalSettings, id)
}
printObject(obj)
return nil
})
}
for _, name := range features {
featureR(name)
}
}

View File

@@ -37,10 +37,10 @@ func init() {
return nil
})
type TaskShowOptions struct {
type RegionTaskShowOptions struct {
ID string `help:"ID or name of the task"`
}
R(&TaskShowOptions{}, "region-task-show", "Show details of a region task", func(s *mcclient.ClientSession, args *TaskShowOptions) error {
R(&RegionTaskShowOptions{}, "region-task-show", "Show details of a region task", func(s *mcclient.ClientSession, args *RegionTaskShowOptions) error {
result, err := compute.ComputeTasks.Get(s, args.ID, nil)
if err != nil {
return err
@@ -48,4 +48,38 @@ func init() {
printObject(result)
return nil
})
type TaskListOptions struct {
ObjName string `help:"object name"`
ObjId string `help:"object id"`
TaskName string `help:"task name"`
ServiceType string `choices:"image|cloudid|cloudevent|devtool|ansible|identity|notify|log|compute|compute_v2"`
}
R(&TaskListOptions{}, "task-list", "List tasks", func(s *mcclient.ClientSession, args *TaskListOptions) error {
params := jsonutils.Marshal(args)
man := compute.TasksManager{}
result, err := man.List(s, params)
if err != nil {
return err
}
printList(result, man.GetColumns(s))
return nil
})
type TaskShowOptions struct {
ID string `help:"ID or name of the task"`
ServiceType string `choices:"image|cloudid|cloudevent|devtool|ansible|identity|notify|log|compute|compute_v2"`
}
R(&TaskShowOptions{}, "task-show", "Show details of a task", func(s *mcclient.ClientSession, args *TaskShowOptions) error {
man := compute.TasksManager{}
params := jsonutils.Marshal(args)
result, err := man.Get(s, args.ID, params)
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -15,6 +15,8 @@
package notifyv2
import (
"fmt"
"yunion.io/x/jsonutils"
api "yunion.io/x/onecloud/pkg/apis/notify"
@@ -87,6 +89,7 @@ func init() {
ContactType string `help:"contact_type"`
ReceiverId string `help:"receiver_id"`
TopicType string `help:"topic type"`
}
R(&NotificationListInput{}, "notify-list", "List notify message", func(s *mcclient.ClientSession, args *NotificationListInput) error {
params, err := options.ListStructToParams(args)
@@ -100,4 +103,30 @@ func init() {
printList(ret, modules.Notification.GetColumns(s))
return nil
})
type NotificationEventInput struct {
Event string
Priority string
MsgBody string
}
R(&NotificationEventInput{}, "notify-event-send", "Send notify event message", func(s *mcclient.ClientSession, args *NotificationEventInput) error {
body, err := jsonutils.ParseString(args.MsgBody)
if err != nil {
return err
}
dict, ok := body.(*jsonutils.JSONDict)
if !ok {
return fmt.Errorf("msg_body should be a json string, like '{'name': 'hello'}'")
}
params := api.NotificationManagerEventNotifyInput{
ReceiverIds: []string{},
ResourceDetails: dict,
Event: args.Event,
Priority: args.Priority,
}
_, err = modules.Notification.PerformClassAction(s, "event-notify", jsonutils.Marshal(params))
if err != nil {
return fmt.Errorf("unable to EventNotify: %s", err)
}
return nil
})
}

View File

@@ -41,6 +41,7 @@ func init() {
ScheduledType string `help:"scheduled type" choices:"timing|cycle"`
ResourceType string `help:"resource type"`
Operation string `help:"operation"`
UtcOffset int `help:"utc offset"`
}
R(&ScheduledTaskListOptions{}, "scheduledtask-list", "list Scheduled Task", func(s *mcclient.ClientSession, args *ScheduledTaskListOptions) error {
params, err := options.ListStructToParams(args)

View File

@@ -0,0 +1,40 @@
// 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 webconsole
import (
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/cmd/climc/shell/events"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules/webconsole"
)
var (
R = shell.R
)
func init() {
R(&events.EventListOptions{}, "webconsole-commandlog", "Show webconsole command logs", func(s *mcclient.ClientSession, args *events.EventListOptions) {
ret, err := webconsole.CommandLog.List(s, jsonutils.Marshal(args))
if err != nil {
fmt.Println(err)
}
shell.PrintList(ret, webconsole.CommandLog.GetColumns(s))
})
}

View File

@@ -32,7 +32,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AuthURL string `help:"Auth URL" default:"$CLOUDPODS_AUTH_URL" metavar:"CLOUDPODS_AUTH_URL"`
AccessKey string `help:"AccessKey" default:"$CLOUDPODS_ACCESS_KEY" metavar:"CLOUDPODS_ACCESS_KEY"`
AccessSecret string `help:"AccessSecret" default:"$CLOUDPODS_ACCESS_SECRET" metavar:"CLOUDPODS_ACCESS_SECRET"`
@@ -41,10 +40,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, err := structarg.NewArgumentParser(&BaseOptions{},
parse, err := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"cloudpodscli",
"Command-line interface to cloudpods API.",
`See "cloudpodscli help COMMAND" for help on a specific command.`)
`See "cloudpodscli COMMAND --help" for help on a specific command.`)
if err != nil {
return nil, err
@@ -54,19 +53,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, err := subcmd.SubHelpString(args.SUBCOMMAND)
if err != nil {
return err
}
fmt.Print(helpstr)
return nil
})
for _, v := range shellutils.CommandTable {
_, err = subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, err = subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if err != nil {
return nil, err
}
@@ -133,13 +121,13 @@ func main() {
err = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if err != nil {
if err != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
@@ -149,16 +137,16 @@ func main() {
return
}
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
err = subcmd.Invoke(suboptions)
} else {
var region *cloudpods.SRegion
region, err = newClient(options)
if err != nil {
showErrorAndExit(err)
}
err = subcmd.Invoke(region, suboptions)
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *cloudpods.SRegion
region, err = newClient(options)
if err != nil {
showErrorAndExit(err)
}
err = subcmd.Invoke(region, suboptions)
if err != nil {
showErrorAndExit(err)
}

View File

@@ -26,15 +26,14 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
SUBCOMMAND string `help:"aliyuncli subcommand" subcommand:"true"`
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"cryptool",
"Command-line cryptography tools.",
`See "cryptool help COMMAND" for help on a specific command.`)
`See "cryptool COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -44,20 +43,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -77,26 +64,24 @@ func main() {
showErrorAndExit(e)
}
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
e = subcmd.Invoke(suboptions)
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
e = subcmd.Invoke(suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -0,0 +1,39 @@
// 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/util/shellutils"
"yunion.io/x/onecloud/pkg/util/zeroclean"
)
func init() {
type ZeroCleanOptions struct {
Recursive bool `help:"recursive" optional:"true"`
FILE string `help:"file to clean"`
}
shellutils.R(&ZeroCleanOptions{}, "zero-clean", "Zero clean file", func(args *ZeroCleanOptions) error {
var err error
if args.Recursive {
err = zeroclean.ZeroDir(args.FILE)
} else {
err = zeroclean.ZeroFile(args.FILE)
}
if err != nil {
return err
}
return nil
})
}

View File

@@ -33,7 +33,6 @@ import (
type BaseOptions struct {
cloudprovider.SCtyunExtraOptions
Help bool `help:"Show help" default:"false"`
Debug bool `help:"Show debug" default:"false"`
AccessKey string `help:"Access key" default:"$CTYUN_ACCESS_KEY"`
Secret string `help:"Secret" default:"$CTYUN_SECRET"`
@@ -42,10 +41,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"ctyuncli",
"Command-line interface to ctyun API.",
`See "ctyuncli help COMMAND" for help on a specific command.`)
`See "ctyuncli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -55,20 +54,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -131,33 +118,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *ctyun.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *ctyun.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -31,7 +31,6 @@ import (
)
type Options struct {
Help bool `help:"Show help" default:"false"`
Debug bool `help:"Show debug" default:"false"`
AccessKey string `help:"Access key" default:"$ECLOUD_ACCESS_KEY"`
AccessSecret string `help:"Secret" default:"$ECLOUD_ACCESS_SECRET"`
@@ -40,10 +39,10 @@ type Options struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&Options{},
parse, e := structarg.NewArgumentParserWithHelp(&Options{},
"ecloudcli",
"Command-line interface to ecloud API.",
`See "ecloud help COMMAND" for help on a specific command.`)
`See "ecloudcli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -53,20 +52,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -129,33 +116,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*Options)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *ecloud.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *ecloud.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -31,7 +31,6 @@ import (
)
type BaseOptions struct {
Help bool `help:"Show help"`
Host string `help:"Host IP or NAME" default:"$VMWARE_HOST" metavar:"VMWARE_HOST"`
Port int `help:"Service port" default:"$VMWARE_PORT" metavar:"VMWARE_PORT"`
Account string `help:"VCenter or ESXi Account" default:"$VMWARE_ACCOUNT" metavar:"VMWARE_ACCOUNT"`
@@ -40,10 +39,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
"govmcli",
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"esxicli",
"Command-line interface to VMware VSphere Webservice API.",
`See "govmcli help COMMAND" for help on a specific command.`)
`See "esxicli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -53,20 +52,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -126,33 +113,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var esxicli *esxi.SESXiClient
esxicli, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(esxicli, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var esxicli *esxi.SESXiClient
esxicli, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(esxicli, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -63,7 +63,7 @@ func initFetcherFs() (*FetcherFs, error) {
url: opt.Url,
}
if err := fetcherFs.fetchMetaInfo(); err != nil {
return nil, err
return nil, errors.Wrapf(err, "fetch meta info")
}
segs := strings.Split(opt.Url, "/")
if len(segs[len(segs)-1]) == 0 {
@@ -271,5 +271,11 @@ func (fs *FetcherFs) destory() error {
func NewRequestHeader() http.Header {
header := http.Header{}
header.Set("X-Auth-Token", opt.Token)
if len(opt.EncryptKey) > 0 {
header.Set("X-Encrypt-Key", opt.EncryptKey)
}
if len(opt.EncryptAlg) > 0 {
header.Set("X-Encrypt-Alg", opt.EncryptAlg)
}
return header
}

View File

@@ -31,6 +31,10 @@ type Options struct {
MountPoint string `help:"mount path of fuse fs" required:"true"`
Debug bool `help:"enable debug go fuse"`
Foreground bool `help:"run in foreground"`
// image encrypt info
EncryptAlg string `help:"image encrypt alg"`
EncryptKey string `help:"image encrypt password"`
}
var opt = &Options{}

View File

@@ -36,7 +36,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AuthFile string `help:"google cloud auth json file path" default:"$GOOGLE_AUTH_FILE" metavar:"GOOGLE_AUTH_FILE"`
ClientEmail string `help:"Client email" default:"$GOOGLE_CLIENT_EMAIL" metavar:"GOOGLE_CLIENT_EMAIL"`
ProjectID string `help:"Project ID" default:"$GOOGLE_PROJECT_ID" metavar:"GOOGLE_PROJECT_ID"`
@@ -47,10 +46,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"googlecli",
"Command-line interface to google API.",
`See "googlecli help COMMAND" for help on a specific command.`)
`See "googlecli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -60,20 +59,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -160,13 +147,13 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
@@ -176,16 +163,16 @@ func main() {
return
}
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *google.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *google.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}

View File

@@ -32,7 +32,6 @@ import (
type BaseOptions struct {
cloudprovider.SHCSOEndpoints
Help bool `help:"Show help" default:"false"`
Debug bool `help:"Show debug" default:"false"`
AccessKey string `help:"Access key" default:"$HUAWEI_ACCESS_KEY" metavar:"HUAWEI_ACCESS_KEY"`
Secret string `help:"Secret" default:"$HUAWEI_SECRET" metavar:"HUAWEI_SECRET"`
@@ -43,10 +42,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
"huaweicli",
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"hcsocli",
"Command-line interface to huawei API.",
`See "huaweicli help COMMAND" for help on a specific command.`)
`See "hcsocli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -56,20 +55,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -136,33 +123,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *huawei.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *huawei.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -31,7 +31,6 @@ import (
)
type BaseOptions struct {
Help bool `help:"Show help" default:"false"`
Debug bool `help:"Show debug" default:"false"`
CloudEnv string `help:"Cloud environment" default:"$HUAWEI_CLOUD_ENV" choices:"ChinaCloud|InternationalCloud" metavar:"HUAWEI_CLOUD_ENV"`
AccessKey string `help:"Access key" default:"$HUAWEI_ACCESS_KEY" metavar:"HUAWEI_ACCESS_KEY"`
@@ -42,10 +41,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"huaweicli",
"Command-line interface to huawei API.",
`See "huaweicli help COMMAND" for help on a specific command.`)
`See "huaweicli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -55,20 +54,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -134,33 +121,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *huawei.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *huawei.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -27,7 +27,6 @@ import (
)
type BaseOptions struct {
Help bool `help:"Show help" short-token:"h"`
MODE string `help:"Execute command mode" choices:"ssh|rmcp"`
HOST string `help:"IP address of remote host"`
PASSWD string `help:"Password"`
@@ -43,11 +42,11 @@ func showErrorAndExit(e error) {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parser, err := structarg.NewArgumentParser(
parser, err := structarg.NewArgumentParserWithHelp(
&BaseOptions{},
"ipmicli",
"Command-line interface to ipmitool",
`See "ipmicli help COMMAND" for help on a specific command.`,
`See "ipmicli COMMAND --help" for help on a specific command.`,
)
if err != nil {
return nil, err
@@ -56,20 +55,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -108,14 +95,14 @@ func main() {
err = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if err != nil {
if err != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
@@ -127,15 +114,15 @@ func main() {
suboptions := subparser.Options()
var args []interface{}
if options.SUBCOMMAND == "help" {
args = append(args, suboptions)
} else {
executor, err := newExecutor(options)
if err != nil {
showErrorAndExit(err)
}
args = append(args, executor, suboptions)
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
executor, err := newExecutor(options)
if err != nil {
showErrorAndExit(err)
}
args = append(args, executor, suboptions)
err = subcmd.Invoke(args...)
if err != nil {
showErrorAndExit(err)

View File

@@ -33,7 +33,6 @@ import (
)
type Options struct {
Help bool `help:"Show help" default:"false"`
Debug bool `help:"Show debug" default:"false"`
AccessKey string `help:"Access key" default:"$JDCLOUD_ACCESS_KEY"`
AccessSecret string `help:"Secret" default:"$JDCLOUD_ACCESS_SECRET"`
@@ -42,10 +41,10 @@ type Options struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, err := structarg.NewArgumentParser(&Options{},
parse, err := structarg.NewArgumentParserWithHelp(&Options{},
"jdcloudcli",
"Command-line interface to ecloud API.",
`See "ecloud help COMMAND" for help on a specific command.`,
`See "jdcloudcli COMMAND --help" for help on a specific command.`,
)
if err != nil {
return nil, err
@@ -55,20 +54,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, err := subcmd.SubHelpString(args.SUBCOMMAND)
if err != nil {
return err
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -123,38 +110,37 @@ func main() {
err = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*Options)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
return
}
if options.Debug {
log.SetLogLevel(log.Logger(), logrus.DebugLevel)
} else {
if options.Debug {
log.SetLogLevel(log.Logger(), logrus.DebugLevel)
log.SetLogLevel(log.Logger(), logrus.InfoLevel)
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if err != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
log.SetLogLevel(log.Logger(), logrus.InfoLevel)
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if err != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(err)
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
err = subcmd.Invoke(suboptions)
} else {
var region *jdcloud.SRegion
region, err = newClient(options)
if err != nil {
showErrorAndExit(err)
}
err = subcmd.Invoke(region, suboptions)
}
if err != nil {
showErrorAndExit(err)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(err)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *jdcloud.SRegion
region, err = newClient(options)
if err != nil {
showErrorAndExit(err)
}
err = subcmd.Invoke(region, suboptions)
if err != nil {
showErrorAndExit(err)
}
}

View File

@@ -27,8 +27,7 @@ import (
)
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
Debug bool `help:"Show debug" default:"false"`
Url string `help:"ldap url, like ldap://10.168.222.23:389 or ldaps://10.168.222.23:389" default:"$LDAP_URL"`
Account string `help:"LDAP Account" default:"$LDAP_ACCOUNT"`
Password string `help:"LDAP password" default:"$LDAP_PASSWORD"`
@@ -38,10 +37,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"ldapcli",
"Command-line tool for LDAP API.",
`See "ldapcli help COMMAND" for help on a specific command.`)
`See "ldapcli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -51,20 +50,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -104,33 +91,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
var cli *ldaputils.SLDAPClient
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
cli, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(cli, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
var cli *ldaputils.SLDAPClient
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
cli, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(cli, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

151
cmd/ncli/main.go Normal file
View File

@@ -0,0 +1,151 @@
// 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 main
import (
"fmt"
"net/http"
"net/url"
"os"
"golang.org/x/net/http/httpproxy"
"yunion.io/x/structarg"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/multicloud/nutanix"
_ "yunion.io/x/onecloud/pkg/multicloud/nutanix/shell"
"yunion.io/x/onecloud/pkg/util/shellutils"
)
type BaseOptions struct {
Debug bool `help:"debug mode"`
Host string `help:"Host" default:"$NUTANIX_HOST" metavar:"NUTANIX_HOST"`
Username string `help:"Username" default:"$NUTANIX_USERNAME" metavar:"NUTANIX_USERNAME"`
Password string `help:"Password" default:"$NUTANIX_PASSWORD" metavar:"NUTANIX_PASSWORD"`
Port int `help:"Port" default:"$NUTANIX_PORT|9440" metavar:"NUTANIX_PORT"`
SUBCOMMAND string `help:"ncli subcommand" subcommand:"true"`
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"ncli",
"Command-line interface to nutanix API.",
`See "ncli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
}
subcmd := parse.GetSubcommand()
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
}
return parse, nil
}
func showErrorAndExit(e error) {
fmt.Fprintf(os.Stderr, "%s", e)
fmt.Fprintln(os.Stderr)
os.Exit(1)
}
func newClient(options *BaseOptions) (*nutanix.SRegion, error) {
if len(options.Host) == 0 {
return nil, fmt.Errorf("Missing host")
}
if len(options.Username) == 0 {
return nil, fmt.Errorf("Missing username")
}
if len(options.Password) == 0 {
return nil, fmt.Errorf("Missing password")
}
cfg := &httpproxy.Config{
HTTPProxy: os.Getenv("HTTP_PROXY"),
HTTPSProxy: os.Getenv("HTTPS_PROXY"),
NoProxy: os.Getenv("NO_PROXY"),
}
cfgProxyFunc := cfg.ProxyFunc()
proxyFunc := func(req *http.Request) (*url.URL, error) {
return cfgProxyFunc(req.URL)
}
cli, err := nutanix.NewNutanixClient(
nutanix.NewNutanixClientConfig(
options.Host,
options.Username,
options.Password,
options.Port,
).Debug(options.Debug).
CloudproviderConfig(
cloudprovider.ProviderConfig{
ProxyFunc: proxyFunc,
},
),
)
if err != nil {
return nil, err
}
return cli.GetRegion()
}
func main() {
parser, e := getSubcommandParser()
if e != nil {
showErrorAndExit(e)
}
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *nutanix.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -32,7 +32,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AuthURL string `help:"Auth URL" default:"$OPENSTACK_AUTH_URL" metavar:"OPENSTACK_AUTH_URL"`
Username string `help:"Username" default:"$OPENSTACK_USERNAME" metavar:"OPENSTACK_USERNAME"`
Password string `help:"Password" default:"$OPENSTACK_PASSWORD" metavar:"OPENSTACK_PASSWORD"`
@@ -45,10 +44,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"openstackcli",
"Command-line interface to openstack API.",
`See "openstackcli help COMMAND" for help on a specific command.`)
`See "openstackcli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -58,20 +57,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -143,36 +130,35 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *openstack.SRegion
if len(options.RegionID) == 0 {
options.RegionID = openstack.OPENSTACK_DEFAULT_REGION
}
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *openstack.SRegion
if len(options.RegionID) == 0 {
options.RegionID = openstack.OPENSTACK_DEFAULT_REGION
}
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -32,7 +32,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AppID string `help:"AppID" default:"$QCLOUD_APPID" metavar:"QCLOUD_APPID"`
SecretID string `help:"Secret" default:"$QCLOUD_SECRET_ID" metavar:"QCLOUD_SECRET_ID"`
SecretKey string `help:"Access key" default:"$QCLOUD_SECRET_KEY" metavar:"QCLOUD_SECRET_KEY"`
@@ -41,10 +40,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"qcloudcli",
"Command-line interface to tencentcloud API.",
`See "tencentcli help COMMAND" for help on a specific command.`)
`See "qcloudcli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -54,20 +53,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -128,36 +115,35 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *qcloud.SRegion
if len(options.RegionId) == 0 {
options.RegionId = qcloud.QCLOUD_DEFAULT_REGION
}
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *qcloud.SRegion
if len(options.RegionId) == 0 {
options.RegionId = qcloud.QCLOUD_DEFAULT_REGION
}
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -29,7 +29,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
Host string `help:"SSH Host IP" default:"$RAID_HOST" metavar:"RAID_HOST"`
Username string `help:"Username, usually root" default:"$RAID_USERNAME" metavar:"RAID_USERNAME"`
Password string `help:"Password" default:"$RAID_PASSWORD" metavar:"RAID_PASSWORD"`
@@ -43,10 +42,10 @@ var (
)
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(options,
parse, e := structarg.NewArgumentParserWithHelp(options,
"raidcli",
"Command-line interface to test RAID drivers.",
`See "raidcli help COMMAND" for help on a specific command.`)
`See "raidcli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -56,20 +55,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -141,33 +128,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
// options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var client raid.IRaidDriver
client, e = newClient()
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(client, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var client raid.IRaidDriver
client, e = newClient()
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(client, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -33,7 +33,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
Endpoint string `help:"Endpoint, usually https://<host_ipmi_ip>" default:"$REDFISH_ENDPOINT" metavar:"REDFISH_ENDPOINT"`
Username string `help:"Username, usually root" default:"$REDFISH_USERNAME" metavar:"REDFISH_USERNAME"`
Password string `help:"Password" default:"$REDFISH_PASSWORD" metavar:"REDFISH_PASSWORD"`
@@ -45,10 +44,10 @@ var (
)
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(options,
parse, e := structarg.NewArgumentParserWithHelp(options,
"redfishcli",
"Command-line interface to redfish API.",
`See "redfishcli help COMMAND" for help on a specific command.`)
`See "redfishcli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -58,21 +57,9 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
bmcJnlp()
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -159,35 +146,35 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
// options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else if options.SUBCOMMAND == "bmc-jnlp" {
e = subcmd.Invoke(suboptions)
} else {
var client redfish.IRedfishDriver
client, e = newClient()
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(client, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
} else if options.SUBCOMMAND == "bmc-jnlp" {
e = subcmd.Invoke(suboptions)
} else {
var client redfish.IRedfishDriver
client, e = newClient()
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(client, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -31,7 +31,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AccessUrl string `help:"Access url" default:"$S3_ACCESS_URL" metavar:"S3_ACCESS_URL"`
AccessKey string `help:"Access key" default:"$S3_ACCESS_KEY" metavar:"S3_ACCESS_KEY"`
Secret string `help:"Secret" default:"$S3_SECRET" metavar:"S3_SECRET"`
@@ -40,10 +39,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"s3cli",
"Command-line interface to standard S3 API.",
`See "s3cli help COMMAND" for help on a specific command.`)
`See "s3cli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -53,20 +52,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -121,33 +108,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var client cloudprovider.ICloudRegion
client, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(client, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var client cloudprovider.ICloudRegion
client, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(client, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -33,6 +33,7 @@ import (
"yunion.io/x/onecloud/pkg/baremetal/utils/raid/drivers"
"yunion.io/x/onecloud/pkg/compute/baremetal"
"yunion.io/x/onecloud/pkg/util/httputils"
"yunion.io/x/onecloud/pkg/util/procutils"
)
const (
@@ -142,6 +143,7 @@ func (c *RaidInfoCollector) CollectReportData() string {
}
func (c *RaidInfoCollector) Start() {
go procutils.WaitZombieLoop(context.TODO())
for {
c.runMain()
time.Sleep(time.Second * 1)

View File

@@ -31,7 +31,6 @@ import (
)
type BaseOptions struct {
Help bool `help:"Show help" default:"false"`
Debug bool `help:"Show debug" default:"false"`
AccessKey string `help:"Access key" default:"$UCLOUD_ACCESS_KEY" metavar:"UCLOUD_ACCESS_KEY"`
@@ -42,10 +41,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"ucloudcli",
"Command-line interface to ucloud API.",
`See "ucloudcli help COMMAND" for help on a specific command.`)
`See "ucloudcli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -55,20 +54,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -132,33 +119,32 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *ucloud.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *ucloud.SRegion
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

View File

@@ -32,7 +32,6 @@ import (
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AuthURL string `help:"Auth URL" default:"$ZSTACK_AUTH_URL" metavar:"ZSTACK_AUTH_URL"`
Username string `help:"Username" default:"$ZSTACK_USERNAME" metavar:"ZSTACK_USERNAME"`
Password string `help:"Password" default:"$ZSTACK_PASSWORD" metavar:"ZSTACK_PASSWORD"`
@@ -41,10 +40,10 @@ type BaseOptions struct {
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
parse, e := structarg.NewArgumentParser(&BaseOptions{},
parse, e := structarg.NewArgumentParserWithHelp(&BaseOptions{},
"zstackcli",
"Command-line interface to zstack API.",
`See "zstackcli help COMMAND" for help on a specific command.`)
`See "zstackcli COMMAND --help" for help on a specific command.`)
if e != nil {
return nil, e
@@ -54,20 +53,8 @@ func getSubcommandParser() (*structarg.ArgumentParser, error) {
if subcmd == nil {
return nil, fmt.Errorf("No subcommand argument.")
}
type HelpOptions struct {
SUBCOMMAND string `help:"sub-command name"`
}
shellutils.R(&HelpOptions{}, "help", "Show help of a subcommand", func(args *HelpOptions) error {
helpstr, e := subcmd.SubHelpString(args.SUBCOMMAND)
if e != nil {
return e
} else {
fmt.Print(helpstr)
return nil
}
})
for _, v := range shellutils.CommandTable {
_, e := subcmd.AddSubParser(v.Options, v.Command, v.Desc, v.Callback)
_, e := subcmd.AddSubParserWithHelp(v.Options, v.Command, v.Desc, v.Callback)
if e != nil {
return nil, e
}
@@ -134,36 +121,35 @@ func main() {
e = parser.ParseArgs(os.Args[1:], false)
options := parser.Options().(*BaseOptions)
if options.Help {
if parser.IsHelpSet() {
fmt.Print(parser.HelpString())
} else {
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
return
}
subcmd := parser.GetSubcommand()
subparser := subcmd.GetSubParser()
if e != nil || subparser == nil {
if subparser != nil {
fmt.Print(subparser.Usage())
} else {
suboptions := subparser.Options()
if options.SUBCOMMAND == "help" {
e = subcmd.Invoke(suboptions)
} else {
var region *zstack.SRegion
if len(options.RegionID) == 0 {
options.RegionID = zstack.ZSTACK_DEFAULT_REGION
}
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
}
if e != nil {
showErrorAndExit(e)
}
fmt.Print(parser.Usage())
}
showErrorAndExit(e)
}
suboptions := subparser.Options()
if subparser.IsHelpSet() {
fmt.Print(subparser.HelpString())
return
}
var region *zstack.SRegion
if len(options.RegionID) == 0 {
options.RegionID = zstack.ZSTACK_DEFAULT_REGION
}
region, e = newClient(options)
if e != nil {
showErrorAndExit(e)
}
e = subcmd.Invoke(region, suboptions)
if e != nil {
showErrorAndExit(e)
}
}

80
go.mod
View File

@@ -4,15 +4,15 @@ go 1.13
require (
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669
cloud.google.com/go/storage v1.5.0
cloud.google.com/go/storage v1.10.0
github.com/360EntSecGroup-Skylar/excelize v1.4.0
github.com/Azure/azure-sdk-for-go v36.1.0+incompatible
github.com/Azure/go-autorest/autorest v0.9.6
github.com/Azure/go-autorest/autorest/azure/auth v0.4.2
github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
github.com/ClickHouse/clickhouse-go v1.4.7 // indirect
github.com/DataDog/dd-trace-go v0.6.1 // indirect
github.com/DataDog/zstd v1.3.4 // indirect
github.com/LeeEirc/terminalparser v0.0.0-20220328021224-de16b7643ea4
github.com/Masterminds/goutils v1.1.0 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible
@@ -20,7 +20,6 @@ require (
github.com/RoaringBitmap/roaring v0.4.16 // indirect
github.com/Shopify/sarama v1.20.0 // indirect
github.com/Shopify/toxiproxy v2.1.4+incompatible // indirect
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect
github.com/aliyun/alibaba-cloud-sdk-go v1.61.684
github.com/aliyun/aliyun-oss-go-sdk v2.0.4+incompatible
github.com/anacrolix/dht v0.0.0-20181129074040-b09db78595aa // indirect
@@ -32,15 +31,14 @@ require (
github.com/apache/thrift v0.12.0 // indirect
github.com/aws/aws-sdk-go v1.39.0
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
github.com/basgys/goxml2json v1.1.1-0.20181031222924-996d9fc8d313
github.com/beevik/etree v1.1.0 // indirect
github.com/benbjohnson/clock v1.0.0
github.com/bitly/go-simplejson v0.5.0
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
github.com/c-bata/go-prompt v0.2.1
github.com/c-bata/go-prompt v0.2.4
github.com/cheggaaa/pb/v3 v3.0.8
github.com/coredns/coredns v1.3.0
github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a // indirect
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect
github.com/creack/pty v1.1.11
github.com/dnaeon/go-vcr v1.1.0 // indirect
github.com/dnstap/golang-dnstap v0.0.0-20170829151710-2cf77a2b5e11 // indirect
@@ -54,18 +52,14 @@ require (
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 // indirect
github.com/fsnotify/fsnotify v1.4.9
github.com/ghodss/yaml v1.0.0
github.com/gin-gonic/gin v1.7.0
github.com/gin-gonic/gin v1.7.7
github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 // indirect
github.com/go-logfmt/logfmt v0.4.0 // indirect
github.com/go-ole/go-ole v1.2.2 // indirect
github.com/go-sql-driver/mysql v1.5.0 // indirect
github.com/go-yaml/yaml v2.1.0+incompatible
github.com/gofrs/uuid v4.1.0+incompatible // indirect
github.com/golang-plus/errors v1.0.0
github.com/golang-plus/testing v1.0.0 // indirect
github.com/golang-plus/uuid v1.0.0
github.com/golang/mock v1.3.1
github.com/golang/protobuf v1.4.2
github.com/golang/mock v1.4.4
github.com/golang/protobuf v1.5.2
github.com/google/gopacket v1.1.17
github.com/googollee/go-engine.io v0.0.0-20180829091931-e2f255711dcb // indirect
github.com/googollee/go-socket.io v0.0.0-20181214084611-0ad7206c347a
@@ -75,7 +69,9 @@ require (
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
github.com/hako/durafmt v0.0.0-20180520121703-7b7ae1e72ead
github.com/huandu/xstrings v1.2.0 // indirect
github.com/huaweicloud/huaweicloud-sdk-go v1.0.26
github.com/imdario/mergo v0.3.6 // indirect
github.com/jaypipes/ghw v0.9.0
github.com/jdcloud-api/jdcloud-sdk-go v1.55.0
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
github.com/koding/websocketproxy v0.0.0-20181220232114-7ed82d81a28c
@@ -86,7 +82,7 @@ require (
github.com/ma314smith/signedxml v0.0.0-20200410192636-c342a2d0ae60
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-runewidth v0.0.13 // indirect
github.com/mattn/go-sqlite3 v1.14.9
github.com/mattn/go-sqlite3 v1.14.12
github.com/mattn/go-tty v0.0.0-20181127064339-e4f871175a2f // indirect
github.com/mdlayher/arp v0.0.0-20190313224443-98a83c8a2717
github.com/mdlayher/ethernet v0.0.0-20190606142754-0394541c37b7
@@ -96,67 +92,69 @@ require (
github.com/minio/minio-go v6.0.14+incompatible
github.com/mitchellh/copystructure v1.0.0 // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/moul/http2curl v1.0.0
github.com/mozillazg/go-pinyin v0.15.0
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 // indirect
github.com/opentracing/opentracing-go v1.0.2 // indirect
github.com/openzipkin/zipkin-go-opentracing v0.3.4 // indirect
github.com/pierrec/lz4/v4 v4.1.12
github.com/pkg/errors v0.9.1
github.com/pkg/term v0.0.0-20181116001808-27bbf2edb814 // indirect
github.com/pquerna/otp v1.2.0
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a // indirect
github.com/satori/go.uuid v1.2.0 // indirect
github.com/sergi/go-diff v1.2.0
github.com/serialx/hashring v0.0.0-20180504054112-49a4782e9908
github.com/sevlyar/go-daemon v0.1.5
github.com/shirou/gopsutil v2.18.10+incompatible
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 // indirect
github.com/sirupsen/logrus v1.4.2
github.com/shirou/gopsutil v2.21.11+incompatible
github.com/sirupsen/logrus v1.6.0
github.com/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9
github.com/smartystreets/goconvey v1.6.4
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/stretchr/testify v1.5.1
github.com/stretchr/testify v1.7.0
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e
github.com/tencentcloud/tencentcloud-sdk-go v3.0.135+incompatible
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413
github.com/tencentyun/cos-go-sdk-v5 v0.7.24
github.com/tinylib/msgp v1.1.0 // indirect
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect
github.com/tjfoc/gmsm v1.4.1
github.com/tklauser/go-sysconf v0.3.9 // indirect
github.com/tredoe/osutil v0.0.0-20161130133508-7d3ee1afa71c
github.com/vishvananda/netlink v1.0.0
github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible
github.com/vmware/govmomi v0.20.1
go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5
go.uber.org/atomic v1.4.0 // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
go.etcd.io/etcd/api/v3 v3.5.0
go.etcd.io/etcd/client/v3 v3.5.0
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e
golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0
golang.org/x/net v0.0.0-20210525063256-abc453219eb5
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect
golang.org/x/text v0.3.3
golang.org/x/tools v0.0.0-20200515220128-d3bf790afa53 // indirect
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
golang.org/x/text v0.3.7
golang.org/x/time v0.0.0-20191024005414-555d28b269f0
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20191008142428-8d021180e987
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
google.golang.org/grpc v1.29.0
google.golang.org/protobuf v1.24.0
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c
google.golang.org/grpc v1.38.0
google.golang.org/protobuf v1.26.0
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect
gopkg.in/fatih/set.v0 v0.2.1
gopkg.in/ini.v1 v1.44.0 // indirect
gopkg.in/ldap.v3 v3.0.3
gopkg.in/yaml.v2 v2.2.8
honnef.co/go/tools v0.0.1-2020.1.4 // indirect
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.19.3
k8s.io/apimachinery v0.19.3
k8s.io/client-go v0.19.3
k8s.io/cluster-bootstrap v0.19.3
moul.io/http2curl/v2 v2.3.0
yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656
yunion.io/x/jsonutils v0.0.0-20211213041607-f6733e38783e
yunion.io/x/log v0.0.0-20201210064738-43181789dc74
yunion.io/x/jsonutils v1.0.0
yunion.io/x/log v1.0.0
yunion.io/x/ovsdb v0.0.0-20200526071744-27bf0940cbc7
yunion.io/x/pkg v0.0.0-20211116020154-6a76ba2f7e97
yunion.io/x/pkg v1.0.0
yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e
yunion.io/x/sqlchemy v0.0.0-20211226083340-1ba177bc58be
yunion.io/x/structarg v0.0.0-20200720093445-9f850fa222ce
yunion.io/x/sqlchemy v1.1.2-0.20220605095853-a45080a21847
yunion.io/x/structarg v0.0.0-20220312084958-9c6c79c7d1c6
)
replace google.golang.org/grpc => google.golang.org/grpc v1.29.0

474
go.sum
View File

@@ -1,6 +1,5 @@
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669 h1:FNCRpXiquG1aoyqcIWVFmpTSKVcx2bQD38uZZeGtdlw=
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -9,19 +8,33 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM=
cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw=
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8=
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0 h1:RPUcBvDeYgQFMfQu1eBMq6piD1SXmLH+vK3qjewZPus=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/360EntSecGroup-Skylar/excelize v1.4.0 h1:43rak9uafmwSJpXfFO1heKQph8tP3nlfWJWFQQtW1R0=
github.com/360EntSecGroup-Skylar/excelize v1.4.0/go.mod h1:R8KYLmGns0vDPe6/HyphW0mzW+MFexlGDafU0ykVEnU=
@@ -56,15 +69,16 @@ github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1Gn
github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k=
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/ClickHouse/clickhouse-go v1.4.7 h1:NNZQmlW8dVxGn19pF65BmWr0vq8Pj5Iy8ykyBKhFCPw=
github.com/ClickHouse/clickhouse-go v1.4.7/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
github.com/DataDog/dd-trace-go v0.6.1 h1:nsZ2lohbSw1CKtfNRu3wPh1jFirv6XSz8vqNpuIYWbM=
github.com/DataDog/dd-trace-go v0.6.1/go.mod h1:SmQTTcC37XMyEm75HV0AWiZIYxDiaNhRi49zorIpW+o=
github.com/DataDog/zstd v1.3.4 h1:LAGHkXuvC6yky+C2CUG2tD7w8QlrUwpue8XwIh0X4AY=
github.com/DataDog/zstd v1.3.4/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
github.com/LeeEirc/terminalparser v0.0.0-20220328021224-de16b7643ea4 h1:Gk7m4Nu2jqVqJAJqNlTYqkiq96WkANAtB4fVi+t7Xv8=
github.com/LeeEirc/terminalparser v0.0.0-20220328021224-de16b7643ea4/go.mod h1:tiLv6VBLH4Z3KdBSe2qIKRwQDGCVQ9/F5fOKpQGvyoA=
github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg=
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
@@ -84,13 +98,16 @@ github.com/Shopify/sarama v1.20.0 h1:wAMHhl1lGRlobeoV/xOKpbqD2OQsOvY4A/vIOGroIe8
github.com/Shopify/sarama v1.20.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8=
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM=
github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA=
github.com/a8m/mark v0.1.1-0.20170507133748-44f2db618845/go.mod h1:c8Mh99Cw82nrsAnPgxQSZHkswVOJF7/MqZb1ZdvriLM=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/aliyun/alibaba-cloud-sdk-go v1.61.684 h1:MHqPW0la4Op96JGMkpB7Kxrz0Se5nowF6rLhHTZBUn4=
github.com/aliyun/alibaba-cloud-sdk-go v1.61.684/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA=
github.com/aliyun/aliyun-oss-go-sdk v2.0.4+incompatible h1:EaK5256H3ELiyaq5O/Zwd6fnghD6DqmZDQmmzzJklUU=
@@ -129,6 +146,7 @@ github.com/anacrolix/torrent v0.0.0-20181129073333-cc531b8c4a80 h1:LnqSEnVSkn8Z4
github.com/anacrolix/torrent v0.0.0-20181129073333-cc531b8c4a80/go.mod h1:AYCt8S7XNEn0Oq+bIZYUfma6/USBjugDp4nynaHQBTE=
github.com/anacrolix/utp v0.0.0-20180219060659-9e0e1d1d0572 h1:kpt6TQTVi6gognY+svubHfxxpq0DLU9AfTQyZVc3UOc=
github.com/anacrolix/utp v0.0.0-20180219060659-9e0e1d1d0572/go.mod h1:MDwc+vsGEq7RMw6lr2GKOEqjWny5hO5OZXRVNaBJ2Dk=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/aokoli/goutils v1.0.1 h1:7fpzNGoJ3VA8qcrm++XEE1QUe0mIwNeLa02Nwq7RDkg=
github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
github.com/apache/thrift v0.12.0 h1:pODnxUFNcjP9UTLZGTdeh+j16A8lJbRvD3rOtrk/7bs=
@@ -137,14 +155,16 @@ github.com/aws/aws-sdk-go v1.39.0 h1:74BBwkEmiqBbi2CGflEh34l0YNtIibTjZsibGarkNjo
github.com/aws/aws-sdk-go v1.39.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA=
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
github.com/basgys/goxml2json v1.1.1-0.20181031222924-996d9fc8d313 h1:fKPpQHBQgt4dQuG6x+yH4gdgtodFDgN9rvHzwJzTKeg=
github.com/basgys/goxml2json v1.1.1-0.20181031222924-996d9fc8d313/go.mod h1:wH7a5Np/Q4QoECFIU8zTQlZwZkrilY0itPfecMw41Dw=
github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs=
github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=
github.com/benbjohnson/clock v1.0.0 h1:78Jk/r6m4wCi6sndMpty7A//t4dw/RW5fV4ZgDVfX1w=
github.com/benbjohnson/clock v1.0.0/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
github.com/bkaradzic/go-lz4 v1.0.0 h1:RXc4wYsyz985CkXXeX04y4VnZFGG8Rd43pRaHsOXAKk=
@@ -157,31 +177,26 @@ github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2 h1:1B/+1BcRhOMG1KH/YhNIU8OppSWk5d/NGyfRla88CuY=
github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo=
github.com/c-bata/go-prompt v0.2.1 h1:HTPxmnfY4y5x3Myo7Gq4ce989jfnvZIBgdBp6y8bjYM=
github.com/c-bata/go-prompt v0.2.1/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34=
github.com/c-bata/go-prompt v0.2.4 h1:7pKUJ3CUgzdu1HJeWhNRkpVyY/NnlJhM/7d6YgHNOao=
github.com/c-bata/go-prompt v0.2.4/go.mod h1:PqlttLXp0E7bZcoDW+dmzyKqFbmQTFoNzGSuW/AQRmo=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cheggaaa/pb/v3 v3.0.8 h1:bC8oemdChbke2FHIIGy9mn4DPJ2caZYQnfbRqwmdCoA=
github.com/cheggaaa/pb/v3 v3.0.8/go.mod h1:UICbiLec/XO6Hw6k+BHEtHeQFzzBH4i2/qk/ow1EJTA=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg=
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y=
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
github.com/coredns/coredns v1.3.0 h1:Ubjr8ZrOpEj95/A9dqQqQAG2k5DWEFdg2ZB3tUXuULA=
github.com/coredns/coredns v1.3.0/go.mod h1:zASH/MVDgR6XZTbxvOnsZfffS+31vg6Ackf/wo1+AM0=
github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a h1:W8b4lQ4tFF21aspRGoBuCNV6V2fFJBF+pm1J6OY8Lys=
github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=
github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -197,7 +212,6 @@ github.com/dnstap/golang-dnstap v0.0.0-20170829151710-2cf77a2b5e11 h1:m8nX8hsUgh
github.com/dnstap/golang-dnstap v0.0.0-20170829151710-2cf77a2b5e11/go.mod h1:s1PfVYYVmTMgCSPtho4LKBDecEHJWtiVDPNv78Z985U=
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
@@ -214,14 +228,11 @@ github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkg
github.com/elgatito/upnp v0.0.0-20180711183757-2f244d205f9a h1:2Zw3pxDRTs4nX1WCLAEm27UN0hvjZSge7EaUUQexRZw=
github.com/elgatito/upnp v0.0.0-20180711183757-2f244d205f9a/go.mod h1:afkYpY8JAIL4341N7Zj9xJ5yTovsg6BkWfBFlCzIoF4=
github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/farsightsec/golang-framestream v0.0.0-20181102145529-8a0cb8ba8710 h1:QdyRyGZWLEvJG5Kw3VcVJvhXJ5tZ1MkRgqpJOEZSySM=
github.com/farsightsec/golang-framestream v0.0.0-20181102145529-8a0cb8ba8710/go.mod h1:eNde4IQyEiA5br02AouhEHCu3p3UzrCdFR4LuQHklMI=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
github.com/fernet/fernet-go v0.0.0-20180830025343-9eac43b88a5e h1:P10tZmVD2XclAaT9l7OduMH1OLFzTa1wUuUqHZnEdI0=
@@ -237,8 +248,8 @@ github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU=
github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs=
github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2 h1:Ujru1hufTHVb++eG6OuNDKMxZnGIvF6o/u8q/8h2+I4=
github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
@@ -246,15 +257,20 @@ github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493 h1:OTanQnFt0bi5
github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
github.com/go-ole/go-ole v1.2.2 h1:QNWhweRd9D5Py2rRVboZ2L4SEoW/dyraWJCc8bgS8kE=
github.com/go-ole/go-ole v1.2.2/go.mod h1:pnvuG7BrDMZ8ifMurTQmxwhQM/odqm9sSqNe5BUI7v4=
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
@@ -268,17 +284,18 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-yaml/yaml v2.1.0+incompatible h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwnTLB6vQiq+o=
github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/uuid v4.1.0+incompatible h1:sIa2eCvUTwgjbqXrPLfNwUf9S3i3mpH1O1atV+iL/Wk=
github.com/gofrs/uuid v4.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
github.com/golang-plus/errors v1.0.0 h1:9Rh4itnph6OYO7wm9u3FUTLMFMKCoL07+bLiYKELxWw=
github.com/golang-plus/errors v1.0.0/go.mod h1:YTFZjOTBcUFieeZe4q+7Umfu/sceSr3XQyBIkTkzpd8=
@@ -287,26 +304,35 @@ github.com/golang-plus/testing v1.0.0/go.mod h1:psANDlKPZ0ycedUzCS0Trf8h98sFyOyB
github.com/golang-plus/uuid v1.0.0 h1:ga84hG89vda++AGpup4N/cbfbM3O4d3R5ON9/jcN6AY=
github.com/golang-plus/uuid v1.0.0/go.mod h1:pBDDRrdgRHHqyYlj1d1i2gwyBq62Zc+sP2cDiCDkBLI=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
@@ -316,8 +342,13 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -327,11 +358,16 @@ github.com/google/gopacket v1.1.17 h1:rMrlX2ZY2UbvT+sdz3+6J+pp2z+msCq9MxTU6ymxbB
github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
@@ -348,7 +384,6 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGa
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/mux v1.7.0 h1:tOSd0UKHQd6urX6ApfOn4XdBMY6Sh1MfxV3kmaazO+U=
github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gosuri/uilive v0.0.0-20170323041506-ac356e6e42cd/go.mod h1:qkLSc0A5EXSP6B04TrN4oQoxqFI7A8XvoXSlJi8cwk8=
@@ -356,12 +391,8 @@ github.com/gosuri/uiprogress v0.0.0-20170224063937-d0567a9d84a1/go.mod h1:C1RTYn
github.com/gosuri/uitable v0.0.0-20160404203958-36ee7e946282 h1:KFqmdzEPbU7Uck2tn50t+HQXZNVkxe8M9qRb/ZoSHaE=
github.com/gosuri/uitable v0.0.0-20160404203958-36ee7e946282/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI=
github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
github.com/hako/durafmt v0.0.0-20180520121703-7b7ae1e72ead h1:Y9WOGZY2nw5ksbEf5AIpk+vK52Tdg/VN/rHFRfEeeGQ=
@@ -372,11 +403,16 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0=
github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4=
github.com/huaweicloud/huaweicloud-sdk-go v1.0.26 h1:aWTl4Ng9lZUW1DupYyqYiqkTwuTKMmqUZBKLmX0iWxo=
github.com/huaweicloud/huaweicloud-sdk-go v1.0.26/go.mod h1:YHXxw/bm7AohI4jTY8Z43JYw+DPCDLqjxoLTqmcyja4=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/jaypipes/ghw v0.9.0 h1:TWF4wNIGtZcgDJaiNcFgby5BR8s2ixcUe0ydxNO2McY=
github.com/jaypipes/ghw v0.9.0/go.mod h1:dXMo19735vXOjpIBDyDYSp31sB2u4hrtRCMxInqQ64k=
github.com/jaypipes/pcidb v1.0.0/go.mod h1:TnYUvqhPBzCKnH34KrIX22kAeEbDCSRJ9cqLRCuNDfk=
github.com/jdcloud-api/jdcloud-sdk-go v1.55.0 h1:mzVj8r6fluEwjn8ogqtGfYW2qSIVUaEq0JAsvjCav3A=
github.com/jdcloud-api/jdcloud-sdk-go v1.55.0/go.mod h1:UrKjuULIWLjHFlG6aSPunArE5QX57LftMmStAZJBEX8=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
@@ -386,15 +422,15 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
github.com/jsimonetti/rtnetlink v0.0.0-20190606172950-9527aa82566a/go.mod h1:Oz+70psSo5OFh8DBl0Zv2ACw7Esh6pPUphlvZG9x7uw=
github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
@@ -402,16 +438,17 @@ github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVY
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/koding/websocketproxy v0.0.0-20181220232114-7ed82d81a28c h1:N7A4JCA2G+j5fuFxCsJqjFU/sZe0mj8H0sSoSwbaikw=
github.com/koding/websocketproxy v0.0.0-20181220232114-7ed82d81a28c/go.mod h1:Nn5wlyECw3iJrzi0AhIWg+AJUb4PlRQVW4/3XHH1LZA=
github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=
github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
@@ -442,19 +479,20 @@ github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-sqlite3 v1.7.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.14.9 h1:10HX2Td0ocZpYEjhilsuo6WWtUqttj2Kb0KtD86/KYA=
github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0=
github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
github.com/mattn/go-tty v0.0.0-20181127064339-e4f871175a2f h1:4P7Ul+TAnk92vTeVkXs6VLjmf1EhrYtDRa03PCYY6VM=
github.com/mattn/go-tty v0.0.0-20181127064339-e4f871175a2f/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
@@ -486,6 +524,7 @@ github.com/minio/minio-go/v6 v6.0.33 h1:CNThMAZ9bN6OEIP8DulqlYpaXKJ18rgG/Cqm14Q4
github.com/minio/minio-go/v6 v6.0.33/go.mod h1:vaNT59cWULS37E+E9zkuN/BVnKHyXtVGS+b04Boc66Y=
github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY=
@@ -494,13 +533,12 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=
github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
github.com/mozillazg/go-httpheader v0.2.1 h1:geV7TrjbL8KXSyvghnFm+NyTux/hxwueTSrwhe88TQQ=
github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60=
github.com/mozillazg/go-pinyin v0.15.0 h1:sSwlnsogK/WMzcf0HnjgxyAI4GU6LFqwXnhr77q1Z80=
@@ -509,8 +547,8 @@ github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae h1:VeRdUYdCw49yizlSbM
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
@@ -531,50 +569,63 @@ github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pierrec/lz4/v4 v4.1.12 h1:44l88ehTZAUGW4VlO1QC4zkilL99M6Y9MXNwEs0uzP8=
github.com/pierrec/lz4/v4 v4.1.12/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pkg/diff v0.0.0-20200914180035-5b29258ca4f7/go.mod h1:zO8QMzTeZd5cpnIkz/Gn6iK0jDfGicM1nynOkkPIl28=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/term v0.0.0-20181116001808-27bbf2edb814 h1:qWlKm6sU/AyVAgBC1Pg1uuY/X/p4lNYG7t4v8/f4FJE=
github.com/pkg/term v0.0.0-20181116001808-27bbf2edb814/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ=
github.com/pkg/term v1.0.0 h1:raTSNJjic7X4n89hhPyLOsgRYczmr3MyezRierWCTa8=
github.com/pkg/term v1.0.0/go.mod h1:6rk0zrj6TXf8MR5fdVFsZMeGM2lxe3tUFLNBRlwX+dk=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pquerna/otp v1.2.0 h1:/A3+Jn+cagqayeR3iHs/L62m5ue7710D35zl1zJ1kok=
github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk=
github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw=
github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=
github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 h1:GHRpF1pTW19a8tTFrMLUcfWwyC0pnifVo2ClaLq+hP8=
github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8=
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/serialx/hashring v0.0.0-20180504054112-49a4782e9908 h1:RRpyb4kheanCQVyYfOhkZoD/cwClvn12RzHex2ZmHxw=
github.com/serialx/hashring v0.0.0-20180504054112-49a4782e9908/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc=
github.com/sevlyar/go-daemon v0.1.5 h1:Zy/6jLbM8CfqJ4x4RPr7MJlSKt90f00kNM1D401C+Qk=
github.com/sevlyar/go-daemon v0.1.5/go.mod h1:6dJpPatBT9eUwM5VCw9Bt6CdX9Tk6UWvhW3MebLDRKE=
github.com/shirou/gopsutil v2.18.10+incompatible h1:cy84jW6EVRPa5g9HAHrlbxMSIjBhDSX0OFYyMYminYs=
github.com/shirou/gopsutil v2.18.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U=
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
github.com/shirou/gopsutil v2.21.11+incompatible h1:lOGOyCG67a5dv2hq5Z1BLDUqqKp3HkbjPcz5j6XMS0U=
github.com/shirou/gopsutil v2.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9 h1:lpEzuenPuO1XNTeikEmvqYFcU37GVLl8SRNblzyvGBE=
github.com/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9/go.mod h1:PLPIyL7ikehBD1OAjmKKiOEhbvWyHGaNDjquXMcYABo=
github.com/smartystreets/assertions v0.0.0-20180607162144-eb5b59917fa2/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
@@ -585,15 +636,13 @@ github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:s
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/gunit v0.0.0-20180314194857-6f0d6275bdcd/go.mod h1:XUKj4gbqj2QvJk/OdLWzyZ3FYli0f+MdpngyryX0gcw=
github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -603,13 +652,15 @@ github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/syncthing/syncthing v0.14.48-rc.4/go.mod h1:nw3siZwHPA6M8iSfjDCWQ402eqvEIasMQOE8nFOxy7M=
github.com/tailscale/depaware v0.0.0-20210622194025-720c4b409502/go.mod h1:p9lPsd+cx33L3H9nNoecRRxPssFKUwwI50I3pZ0yT+8=
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e h1:nt2877sKfojlHCTOBXbpWjBkuWKritFaGIfgQwbQUls=
github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e/go.mod h1:B4+Kq1u5FlULTjFSM707Q6e/cOHFv0z/6QRoxubDIQ8=
github.com/tencentcloud/tencentcloud-sdk-go v3.0.135+incompatible h1:QIMoFqKCmNp4HPLiTR+couZbHsIZfoOllncHYvtqse8=
github.com/tencentcloud/tencentcloud-sdk-go v3.0.135+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413 h1:DvydszksqriOr0Zze9OREt8OrIrtMSFcVD8lz3xNAQA=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentyun/cos-go-sdk-v5 v0.7.24 h1:ZsZij764lOaPsj7mEAlyxXvslGt6/m312Tzqj/zeRpo=
github.com/tencentyun/cos-go-sdk-v5 v0.7.24/go.mod h1:wQBO5HdAkLjj2q6XQiIfDSP8DXDNrppDRw2Kp/1BODA=
github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e h1:T5PdfK/M1xyrHwynxMIVMWLS7f/qHwfslZphxtGnw7s=
@@ -617,16 +668,18 @@ github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e/go.
github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU=
github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo=
github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs=
github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ=
github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8=
github.com/tredoe/osutil v0.0.0-20161130133508-7d3ee1afa71c h1:5q7IHeqvAA4hWR1CfpTOS7RFsTDC36TaSZ8Dvc00bPk=
github.com/tredoe/osutil v0.0.0-20161130133508-7d3ee1afa71c/go.mod h1:M/I710pXKQToMdqt/D+mJ4QsnW6WDaajyB6DWFmDXBs=
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/vishvananda/netlink v1.0.0 h1:bqNY2lgheFIu1meHUFSH3d7vG93AFyqg3oGbJCOJgSM=
github.com/vishvananda/netlink v1.0.0/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df h1:OviZH7qLw/7ZovXvuNyL3XQl8UFofeikI1NW1Gypu7k=
@@ -641,24 +694,31 @@ github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPyS
github.com/willf/bloom v0.0.0-20170505221640-54e3b963ee16/go.mod h1:MmAltL9pDMNTrvUkxdg0k0q5I0suxmuwp3KbyrZLOZ8=
github.com/willf/bloom v2.0.3+incompatible h1:QDacWdqcAUI1MPOwIQZRy9kOR7yxfyEmxX8Wdm2/JPA=
github.com/willf/bloom v2.0.3+incompatible/go.mod h1:MmAltL9pDMNTrvUkxdg0k0q5I0suxmuwp3KbyrZLOZ8=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk=
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5 h1:Gqga3zA9tdAcfqobUGjSoCob5L3f8Dt5EuOp3ihNZko=
go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
go.etcd.io/etcd/api/v3 v3.5.0 h1:GsV3S+OfZEOCNXdtNkBSR7kgLobAa/SO6tCxRa0GAYw=
go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/client/pkg/v3 v3.5.0 h1:2aQv6F436YnN7I4VbI8PPYrBhu+SmrTaADcf8Mi/6PU=
go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
go.etcd.io/etcd/client/v3 v3.5.0 h1:62Eh0XOro+rDwkrypAGDfgmNh5Joq+z+W9HZdlXMzek=
go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -672,6 +732,7 @@ golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -680,32 +741,38 @@ golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxT
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20191227195350-da58074b4299 h1:zQpM52jfKHG6II1ISZY1ZcpygvuSFZpLwfluuF89XOg=
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE=
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180524181706-dfa909b99c79/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -716,37 +783,57 @@ golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191003171128-d98b1b443823/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI=
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180724212812-e072cadbbdc8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -765,42 +852,69 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190830023255-19e00faab6ad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191003212358-c178f38b412c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0 h1:xrCZDmdtoloIiooiA9q0OQb9r8HejIHYoHGhGCe1pGg=
golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
@@ -823,13 +937,35 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200417140056-c07e33ef3290/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515220128-d3bf790afa53 h1:vmsb6v0zUdmUlXfwKaYrHPPRCV0lHq/IwNIf0ASGjyQ=
golang.org/x/tools v0.0.0-20200515220128-d3bf790afa53/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA=
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.zx2c4.com/wireguard v0.0.20190908 h1:SUoXDdwSMtomLdvke+zz83/u9tNvl4hHmcTIWp38tow=
golang.zx2c4.com/wireguard v0.0.20190908/go.mod h1:LhfXh5z6bLC2lW2ve6BzYZFwnnsXK3OQjySR0Yh2dO8=
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20191008142428-8d021180e987 h1:26OAgqBTufVr8WKonCEhhjO1oKsYhHv0iM5Dg92G1TM=
@@ -840,15 +976,23 @@ google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEn
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA=
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w=
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
@@ -860,16 +1004,26 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/grpc v1.29.0 h1:2pJjwYOdkZ9HlN4sWRYBg9ttH5bCOlsueaM+b/oYjwo=
google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
@@ -880,8 +1034,11 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d h1:TxyelI5cVkbREznMhfzycHdkp5cLA7DpE+GKjSslYhM=
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw=
@@ -889,7 +1046,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fatih/set.v0 v0.2.1 h1:Xvyyp7LXu34P0ROhCyfXkmQCAoOUKb1E2JS9I7SE5CY=
gopkg.in/fatih/set.v0 v0.2.1/go.mod h1:5eLWEndGL4zGGemXWrKuts+wTJR0y+w+auqUJZbmyBg=
@@ -901,23 +1057,31 @@ gopkg.in/ini.v1 v1.44.0 h1:YRJzTUp0kSYWUVFF5XAbDFfyiqwsl0Vb9R8TVP5eRi0=
gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ldap.v3 v3.0.3 h1:YKRHW/2sIl05JsCtx/5ZuUueFuJyoj/6+DGXe3wp6ro=
gopkg.in/ldap.v3 v3.0.3/go.mod h1:oxD7NyBuxchC+SgJDE1Q5Od05eGt29SDQVBmV+HYbzw=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/urfave/cli.v1 v1.19.1/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g=
k8s.io/api v0.19.3 h1:GN6ntFnv44Vptj/b+OnMW7FmzkpDoIDLZRvKX3XH9aU=
k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs=
k8s.io/apimachinery v0.19.3 h1:bpIQXlKjB4cB/oNpnNnV+BybGPR7iP5oYpsOTEJ4hgc=
@@ -933,7 +1097,11 @@ k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg=
k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
moul.io/http2curl/v2 v2.3.0 h1:9r3JfDzWPcbIklMOs2TnIFzDYvfAZvjeavG6EzP7jYs=
moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA=
sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
@@ -942,22 +1110,24 @@ sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 h1:0zlZD5uhZoIHgLVAWCz2aHaYk2ZrNsACCYD7R6EIBII=
yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws=
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
yunion.io/x/jsonutils v0.0.0-20211213041607-f6733e38783e h1:zOVxZ0HrDOHLTm5YxkDKUm1x5jMVKbQ/iBSAyn5l1+Q=
yunion.io/x/jsonutils v0.0.0-20211213041607-f6733e38783e/go.mod h1:p0nyMqGA/apTxxyLIU/o1k4V7Vujl2O6ey30L594sYE=
yunion.io/x/jsonutils v0.0.0-20220106020632-953b71a4c3a8/go.mod h1:p0nyMqGA/apTxxyLIU/o1k4V7Vujl2O6ey30L594sYE=
yunion.io/x/jsonutils v1.0.0 h1:ySgXdIoRqUZRYA0t8QVqRkWgV8IWJlh2JtGovqqc+iI=
yunion.io/x/jsonutils v1.0.0/go.mod h1:p0nyMqGA/apTxxyLIU/o1k4V7Vujl2O6ey30L594sYE=
yunion.io/x/log v0.0.0-20190514041436-04ce53b17c6b/go.mod h1:+gauLs73omeJAPlsXcevLsJLKixV+sR/E7WSYTSx1fE=
yunion.io/x/log v0.0.0-20190629062853-9f6483a7103d/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U=
yunion.io/x/log v0.0.0-20201210064738-43181789dc74 h1:7D+sQ/XaUTUEm+NCrKXOhXBKlzEd0RyS2qZ4vBGjx2o=
yunion.io/x/log v0.0.0-20201210064738-43181789dc74/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U=
yunion.io/x/log v1.0.0 h1:VPgssPi8Om+KAHjlEjf6RDU86du//yO+X0upu+h6fZM=
yunion.io/x/log v1.0.0/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U=
yunion.io/x/ovsdb v0.0.0-20200526071744-27bf0940cbc7 h1:gjqNa2uQzIEXyySsbvVz0UltTEbGsnFFlvnzOpCfHdo=
yunion.io/x/ovsdb v0.0.0-20200526071744-27bf0940cbc7/go.mod h1:0vLkNEhlmA64HViPBAnSTUMrx5QP1CLsxXmxDKQ80tc=
yunion.io/x/pkg v0.0.0-20190620104149-945c25821dbf/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v0.0.0-20190628082551-f4033ba2ea30/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v0.0.0-20200814072949-4f1b541857d6/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v0.0.0-20211116020154-6a76ba2f7e97 h1:lY+5NlWwO2aIkfNnVOGKHmZvMt6m4ZuGtarIjwNfUsg=
yunion.io/x/pkg v0.0.0-20211116020154-6a76ba2f7e97/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v1.0.0 h1:G7Sng0fMZNKR5cavi5qQUxWjI1Tfbawk2vWnfII2rXg=
yunion.io/x/pkg v1.0.0/go.mod h1:nYOMflWG1wQC6301rGVglQva9bYbJxHThEJUxRAgMFc=
yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e h1:v+EzIadodSwkdZ/7bremd7J8J50Cise/HCylsOJngmo=
yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e/go.mod h1:0iFKpOs1y4lbCxeOmq3Xx/0AcQoewVPwj62eRluioEo=
yunion.io/x/sqlchemy v0.0.0-20211226083340-1ba177bc58be h1:LCmMlLgRLr6EmnMQtzbsys6QGY2wfFk+1IOgb2tG/7E=
yunion.io/x/sqlchemy v0.0.0-20211226083340-1ba177bc58be/go.mod h1:FTdwPdGhMgh4E+UFXc9klI1Ok34fMuybTT+jLhOaIjI=
yunion.io/x/structarg v0.0.0-20200720093445-9f850fa222ce h1:kU8xE7O5uZ1GSJVMZHoJ+jrNL7csUQHYGyAPW9QfNpE=
yunion.io/x/structarg v0.0.0-20200720093445-9f850fa222ce/go.mod h1:EP6NSv2C0zzqBDTKumv8hPWLb3XvgMZDHQRfyuOrQng=
yunion.io/x/sqlchemy v1.0.1/go.mod h1:FTdwPdGhMgh4E+UFXc9klI1Ok34fMuybTT+jLhOaIjI=
yunion.io/x/sqlchemy v1.1.2-0.20220605095853-a45080a21847 h1:Q/2krbKiUPjDhAAQpJQTV0GDqOMjCitC7Zn1Nr7dAVI=
yunion.io/x/sqlchemy v1.1.2-0.20220605095853-a45080a21847/go.mod h1:LdxyRXxK6LklfUVW1my2fNapK1kcYRZh8nNWnILwHyM=
yunion.io/x/structarg v0.0.0-20220312084958-9c6c79c7d1c6 h1:WuWXhY3DvhdRTzWCJ/kwt3Ss6KIq7+KqJwb+esvNGwU=
yunion.io/x/structarg v0.0.0-20220312084958-9c6c79c7d1c6/go.mod h1:EP6NSv2C0zzqBDTKumv8hPWLb3XvgMZDHQRfyuOrQng=

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More