Compare commits

...

1412 Commits

Author SHA1 Message Date
yunion-ci-robot
7f87d4eea5 Merge pull request #5066 from swordqiu/automated-cherry-pick-of-#5065-upstream-release-2.10.0
Automated cherry pick of #5065: fix: allow empty domain for windows deployment
2020-02-10 10:35:56 +08:00
Qiu Jian
a31780bffc fix: allow empty domain for windows deployment 2020-02-10 09:22:40 +08:00
yunion-ci-robot
ccc830abbd Merge pull request #5060 from swordqiu/automated-cherry-pick-of-#5054-upstream-release-2.10.0
Automated cherry pick of #5054: fix: createdAt should not be synced when update
2020-02-09 22:09:58 +08:00
Qiu Jian
5587cded0e fix: createdAt should not be synced when update 2020-02-08 21:31:36 +08:00
yunion-ci-robot
42623c47c8 Merge pull request #5015 from swordqiu/automated-cherry-pick-of-#5014-upstream-release-2.10.0
Automated cherry pick of #5014: fix: support empty dns domain
2020-02-06 09:49:49 +08:00
Qiu Jian
7df7a386d8 fix: support empty dns domain 2020-02-06 03:26:09 +08:00
yunion-ci-robot
789cb16082 Merge pull request #4953 from ioito/automated-cherry-pick-of-#4946-upstream-release-2.10.0
Automated cherry pick of #4946: fix: 腾讯云主机带宽跟随eip带宽变化而变化
2020-01-17 19:43:10 +08:00
Qu Xuan
4212884ab3 fix: 腾讯云主机带宽跟随eip带宽变化而变化 2020-01-17 13:49:11 +08:00
yunion-ci-robot
d118afde9d Merge pull request #4910 from ioito/automated-cherry-pick-of-#4904-upstream-release-2.10.0
Automated cherry pick of #4904: fix: 避免创建azure时指定高级ssd失效
2020-01-16 09:48:06 +08:00
Qu Xuan
5001154665 fix: 避免创建azure时指定高级ssd失效 2020-01-15 18:04:07 +08:00
yunion-ci-robot
7d49e62342 Merge pull request #4855 from ioito/automated-cherry-pick-of-#4849-upstream-release-2.10.0
Automated cherry pick of #4849: fix: aliyun rule fix
2020-01-14 02:19:03 +08:00
Qu Xuan
a1fb63f9f2 fix: aliyun rule fix 2020-01-13 17:46:31 +08:00
yunion-ci-robot
21cb419270 Merge pull request #4790 from yousong/automated-cherry-pick-of-#4784-upstream-release-2.10.0
Automated cherry pick of #4784: dnsrecords: add helper methods
2020-01-10 10:18:00 +08:00
Yousong Zhou
d6e2693d9a dns: chain load records for cname 2020-01-09 23:25:27 +08:00
Yousong Zhou
2937abc329 dns: prepare for responding with A record of cname value 2020-01-09 23:25:27 +08:00
Yousong Zhou
43acb5b2f2 dnsrecords: add helper methods 2020-01-09 23:25:27 +08:00
yunion-ci-robot
7e831feaa1 Merge pull request #4749 from yousong/automated-cherry-pick-of-#4724-upstream-release-2.10.0
Automated cherry pick of #4724: wires: lift name length, charset constraint
2020-01-08 23:41:02 +08:00
Yousong Zhou
a077d0066d wires: lift name length, charset constraint 2020-01-08 19:16:40 +08:00
yunion-ci-robot
ca8a0f59fc Merge pull request #4734 from ioito/automated-cherry-pick-of-#4728-upstream-release-2.10.0
Automated cherry pick of #4728: fix: eip duplicate name
2020-01-08 19:00:57 +08:00
Qu Xuan
4d4964506b fix: eip duplicate name 2020-01-08 18:13:45 +08:00
yunion-ci-robot
0b5d223d5b Merge pull request #4694 from yousong/automated-cherry-pick-of-#4683-upstream-release-2.10.0
Automated cherry pick of #4683: hostman: distro name OpenWrt instead of OpenWRT
2020-01-08 12:53:57 +08:00
Zexi Li
3f67f9e60e Merge pull request #4677 from swordqiu/automated-cherry-pick-of-#4676-upstream-release-2.10.0
Automated cherry pick of #4676: fix: guest network default share scope should be system if non-default-domain-projects is off
2020-01-07 19:30:11 +08:00
Yousong Zhou
a99950173f hostman: openwrt: deploy public key for root 2020-01-07 18:05:27 +08:00
Yousong Zhou
dc4916c3ad hostman: split DeployAuthorizedKeys() 2020-01-07 18:05:27 +08:00
Yousong Zhou
fc7002ba7b hostman: openwrt: support deploy networking scripts 2020-01-07 18:05:27 +08:00
Yousong Zhou
d4f6a384e8 hostman: openwrt: deploy hostname with board config 2020-01-07 18:05:27 +08:00
yunion-ci-robot
2dbfd2b209 Merge pull request #4672 from ioito/automated-cherry-pick-of-#4656-upstream-release-2.10.0
Automated cherry pick of #4656: fix: 避免拥有带宽包的腾讯云创建机器失败
2020-01-07 18:04:57 +08:00
Yousong Zhou
45e9cc958a hostman: also use usb-kbd for openwrt 2020-01-07 18:04:41 +08:00
Yousong Zhou
34743eac7e hostman: distro name OpenWrt instead of OpenWRT 2020-01-07 18:04:26 +08:00
yunion-ci-robot
759334dcc1 Merge pull request #4664 from ioito/automated-cherry-pick-of-#4658-upstream-release-2.10.0
Automated cherry pick of #4658: fix: 避免同步安全组失败后,没有任何日志记录
2020-01-07 17:06:57 +08:00
Qiu Jian
741017dab3 fix: guest network default share scope should be system if non-default-domain-projects is off 2020-01-07 16:50:47 +08:00
Qu Xuan
73aaf6f1d7 fix: 避免拥有带宽包的腾讯云创建机器失败 2020-01-07 16:41:17 +08:00
Qu Xuan
784e265cd7 fix: 避免同步安全组失败后,没有任何日志记录 2020-01-07 11:51:09 +08:00
Zexi Li
c8dd7d0e0d Merge pull request #4615 from ioito/automated-cherry-pick-of-#4609-upstream-release-2.10.0
Automated cherry pick of #4609: fix: 避免仅删除value时,行为演变为删除标签
2020-01-04 23:18:22 +08:00
Qu Xuan
44db08635e fix: 避免仅删除value时,行为演变为删除标签 2020-01-04 22:18:37 +08:00
yunion-ci-robot
405f3e57b7 Merge pull request #4587 from ioito/automated-cherry-pick-of-#4581-upstream-release-2.10.0
Automated cherry pick of #4581: fix: 修复zstack安全组创建失败问题
2020-01-04 20:13:37 +08:00
Qu Xuan
2ffb001aba fix: 修复zstack安全组创建失败问题 2020-01-04 20:03:20 +08:00
Zexi Li
43e3d23e43 Merge pull request #4526 from zexi/automated-cherry-pick-of-#4520-upstream-release-2.10.0
Automated cherry pick of #4520: baremetal: fix megaraid check jbod always disabled
2020-01-03 21:51:41 +08:00
yunion-ci-robot
933b223ca1 Merge pull request #4519 from ioito/automated-cherry-pick-of-#4513-upstream-release-2.10.0
Automated cherry pick of #4513: fix: 腾讯云不支持描述字段参数
2020-01-03 21:33:36 +08:00
Zexi Li
58cdf2a852 baremetal: fix megaraid check jbod always disabled 2020-01-03 21:25:16 +08:00
Qu Xuan
126c16313b fix: 腾讯云不支持描述字段参数 2020-01-03 20:48:19 +08:00
yunion-ci-robot
5344189177 Merge pull request #4468 from yousong/automated-cherry-pick-of-#4464-upstream-release-2.10.0
Automated cherry pick of #4464: networks: 确保外部network也有ifname_hint
2020-01-01 15:30:34 +08:00
Yousong Zhou
85a305e791 networks: 确保外部network也有ifname_hint 2020-01-01 11:54:39 +08:00
yunion-ci-robot
da9b79f526 Merge pull request #4463 from ioito/automated-cherry-pick-of-#4459-upstream-release-2.10.0
Automated cherry pick of #4459: fix: openstack image: vmdk -> qcow2
2020-01-01 09:29:34 +08:00
Qu Xuan
100cd8e3b2 fix: openstack image: vmdk -> qcow2 2019-12-31 19:58:36 +08:00
yunion-ci-robot
68ec08d097 Merge pull request #4449 from wanyaoqi/automated-cherry-pick-of-#4445-upstream-release-2.10.0
Automated cherry pick of #4445: not return on recv packet failed
2019-12-31 17:30:33 +08:00
yunion-ci-robot
e2ef07c679 Merge pull request #4439 from yousong/automated-cherry-pick-of-#4435-upstream-release-2.10.0
Automated cherry pick of #4435: networks: newIfnameHint: 可读性改善
2019-12-31 17:12:32 +08:00
wanyaoqi
5a76023f88 not return on recv packet failed 2019-12-31 17:05:37 +08:00
Yousong Zhou
995d94bffc guestnetworks: 加强ifname内容判断 2019-12-31 14:25:27 +08:00
Yousong Zhou
90a6a36e08 networks: newIfnameHint: 可读性改善 2019-12-31 14:25:27 +08:00
Zexi Li
84fe82d448 Merge pull request #4409 from wanyaoqi/automated-cherry-pick-of-#4405-upstream-release-2.10.0
Automated cherry pick of #4405: fix panic on fstab no content
2019-12-31 00:43:32 +08:00
yunion-ci-robot
50ac1b7deb Merge pull request #4416 from yousong/automated-cherry-pick-of-#4412-upstream-release-2.10.0
Automated cherry pick of #4412: networks: make ifname hint also valid qemu identifier
2019-12-30 18:53:33 +08:00
Yousong Zhou
9c0809fde9 networks: make ifname hint also valid qemu identifier 2019-12-30 18:15:31 +08:00
Zexi Li
f563ff3e16 Merge pull request #4410 from swordqiu/automated-cherry-pick-of-#4401-upstream-release-2.10.0
Automated cherry pick of #4401: fix: host-update ipmi and host-sync-config support
2019-12-30 17:59:23 +08:00
Qiu Jian
ef507126a5 fix: host-update ipmi and host-sync-config support 2019-12-30 16:44:40 +08:00
wanyaoqi
ba921e8b38 fix panic on fstab no content 2019-12-30 16:28:09 +08:00
yunion-ci-robot
e1f19f9c4d Merge pull request #4367 from ioito/automated-cherry-pick-of-#4362-upstream-release-2.10.0
Automated cherry pick of #4362: fix: 更正腾讯云磁盘创建时间
2019-12-29 22:04:39 +08:00
Qu Xuan
796a10d38f fix: 更正腾讯云磁盘创建时间 2019-12-28 13:09:16 +08:00
yunion-ci-robot
1869a05676 Merge pull request #4379 from ioito/automated-cherry-pick-of-#4375-upstream-release-2.10.0
Automated cherry pick of #4375: fix: 避免因太多锁导致删除安全组task失败
2019-12-28 09:53:35 +08:00
Qu Xuan
149586ca13 fix: 避免因太多锁导致删除安全组task失败 2019-12-27 16:24:56 +08:00
Zexi Li
8a734ecf1b Merge pull request #4372 from swordqiu/automated-cherry-pick-of-#4368-upstream-release-2.10.0
Automated cherry pick of #4368: fix: alter user email charset to utf8
2019-12-27 14:29:10 +08:00
Qiu Jian
5268355ef5 fix: alter user email charset to utf8 2019-12-27 14:16:14 +08:00
Zexi Li
410d8face1 Merge pull request #4330 from swordqiu/automated-cherry-pick-of-#4326-upstream-release-2.10.0
Automated cherry pick of #4326: fix: baremetal diskconfig empty adaptor index
2019-12-26 21:16:15 +08:00
yunion-ci-robot
6e81d70595 Merge pull request #4303 from yousong/automated-cherry-pick-of-#4299-upstream-release-2.10.0
Automated cherry pick of #4299: hostman: different error message for different error reason
2019-12-26 11:03:32 +08:00
yunion-ci-robot
ad279dc9db Merge pull request #4311 from ioito/automated-cherry-pick-of-#4307-upstream-release-2.10.0
Automated cherry pick of #4307: fix: 同步openstack宿主机关闭服务后状态
2019-12-26 01:50:14 +08:00
Qiu Jian
307fcda5a3 fix: baremetal diskconfig empty adaptor index 2019-12-26 01:14:45 +08:00
Qu Xuan
14b26e8bc2 fix: 同步openstack宿主机关闭服务后状态 2019-12-25 16:28:56 +08:00
Yousong Zhou
7f4b078f5f hostman: fsdriver: fix hostname deployment for openwrt
We will need to add native uci support later
2019-12-25 16:05:35 +08:00
Yousong Zhou
142e387e32 hostman: add default values for host config 2019-12-25 16:05:35 +08:00
Yousong Zhou
f443c891e8 networks: different indent level for asymmetric branches 2019-12-25 16:05:11 +08:00
Yousong Zhou
a852e49d8e hostman: different error message for different error reason 2019-12-25 16:05:11 +08:00
yunion-ci-robot
b8c8c1ab1f Merge pull request #4216 from yousong/automated-cherry-pick-of-#4212-upstream-release-2.10.0
Automated cherry pick of #4212: guestnetworks: ignore empty preferIfname
2019-12-18 19:00:04 +08:00
Yousong Zhou
9d9ef5da03 guestnetworks: ignore empty preferIfname
Fixes cc02ac74 ("guestnetworks: check ifname uniqueness across different
networks")
2019-12-18 09:19:01 +00:00
yunion-ci-robot
8909cba930 Merge pull request #4200 from ioito/automated-cherry-pick-of-#4194-upstream-release-2.10.0
Automated cherry pick of #4194: fix: 标签过滤和框架保持一致
2019-12-17 16:34:01 +08:00
Qu Xuan
3b1801de0d fix: 标签过滤和框架保持一致 2019-12-17 15:58:38 +08:00
yunion-ci-robot
8cc7c3ee69 Merge pull request #4142 from tb365/automated-cherry-pick-of-#4141-upstream-release-2.10.0
Automated cherry pick of #4141: huawei sync instance offset bugfix
2019-12-14 11:08:59 +08:00
TangBin
9626dae0f5 huawei sync instance offset bugfix 2019-12-13 15:41:31 +08:00
yunion-ci-robot
f5d4f74f81 Merge pull request #4138 from swordqiu/automated-cherry-pick-of-#4134-upstream-release-2.10.0
Automated cherry pick of #4134: fix: misc bugfix for esxi 20191213
2019-12-13 13:00:01 +08:00
yunion-ci-robot
c627a56e6b Merge pull request #4127 from yousong/automated-cherry-pick-of-#4123-upstream-release-2.10.0
Automated cherry pick of #4123: guestnetworks: check ifname uniqueness across different networks
2019-12-13 12:57:01 +08:00
Qiu Jian
30dfca6d2d fix: misc bugfix for esxi 20191213 2019-12-13 12:36:35 +08:00
yunion-ci-robot
e8a96310b4 Merge pull request #4133 from ioito/automated-cherry-pick-of-#4129-upstream-release-2.10.0
Automated cherry pick of #4129: fix: 避免插入时出现duplicate primary key error
2019-12-13 11:37:59 +08:00
Qu Xuan
43dfb4e9c0 fix: 避免插入时出现duplicate primary key error 2019-12-13 10:46:49 +08:00
Yousong Zhou
2b560f39eb guestnetworks: check ifname uniqueness across different networks
With PerformChangeIpAddr, it can happen that a guestnetwork from network
A can take a name that was originally allocated by network B
2019-12-12 15:51:23 +00:00
yunion-ci-robot
1acd980aa0 Merge pull request #4101 from ioito/automated-cherry-pick-of-#4097-upstream-release-2.10.0
Automated cherry pick of #4097: fix: 避免zstack参数含有中文,未编码导致请求失败
2019-12-12 11:01:39 +08:00
Qu Xuan
b9839ea31d fix: 避免zstack参数含有中文,未编码导致请求失败 2019-12-11 23:24:15 +08:00
yunion-ci-robot
c38d80e2b1 Merge pull request #4096 from yousong/automated-cherry-pick-of-#4092-upstream-release-2.10.0
Automated cherry pick of #4092: loadbalancerbackends: janitor: move to InitializeData
2019-12-11 20:13:39 +08:00
Yousong Zhou
8873972837 loadbalancerbackends: janitor: move to InitializeData
The janitor only makes sense when inside region service
2019-12-11 08:26:11 +00:00
yunion-ci-robot
b44344f5ac Merge pull request #4076 from ioito/automated-cherry-pick-of-#4072-upstream-release-2.10.0
Automated cherry pick of #4072: fix: 导出用户标签不加user:前缀
2019-12-11 15:08:38 +08:00
Qu Xuan
e8472c92ac fix: 导出用户标签不加user:前缀 2019-12-09 21:46:45 +08:00
yunion-ci-robot
db2eb20448 Merge pull request #4025 from wanyaoqi/automated-cherry-pick-of-#4021-upstream-release-2.10.0
Automated cherry pick of #4021: add socket used check of deploy server
2019-12-05 14:35:34 +08:00
wanyaoqi
9f567ddcfd add socket used check of deploy server 2019-12-04 11:42:45 +08:00
yunion-ci-robot
3bacfd6d03 Merge pull request #4019 from yousong/automated-cherry-pick-of-#4016-upstream-release-2.10.0
Automated cherry pick of #4016: hostman: hostinfo: turn off report_ignored_msrs
2019-12-04 11:04:34 +08:00
Yousong Zhou
a51aa2d746 hostman: hostinfo: turn off report_ignored_msrs
Quote mainline linux commit fab0aa3b ("KVM: x86: Allow suppressing
prints on RDMSR/WRMSR of unhandled MSRs")

> Some guests use these unhandled MSRs very frequently.
> This cause dmesg to be populated with lots of aggregated messages on
> usage of ignored MSRs. As ignore_msrs=true means that the user is
> well-aware his guest use ignored MSRs, allow to also disable the
> prints on their usage.
>
> An example of such guest is ESXi which tends to access a lot to MSR
> 0x34 (MSR_SMI_COUNT) very frequently.
>
> In addition, we have observed this to cause unnecessary delays to
> guest execution. Such an example is ESXi which experience networking
> delays in it's guests (L2 guests) because of these prints (even when
> prints are rate-limited). This can easily be reproduced by pinging
> from one L2 guest to another.  Once in a while, a peak in ping RTT
> will be observed. Removing these unhandled MSR prints solves the
> issue.
>
> Because these prints can help diagnose issues with guests,
> this commit only suppress them by a module parameter instead of
> removing them from code entirely.
2019-12-04 02:26:50 +00:00
yunion-ci-robot
7d9bae3745 Merge pull request #3962 from wanyaoqi/automated-cherry-pick-of-#3958-upstream-release-2.10.0
Automated cherry pick of #3958: add lock on host detected offline
2019-11-28 14:12:29 +08:00
wanyaoqi
3f28becbf2 add lock on host detected offline 2019-11-28 11:23:42 +08:00
yunion-ci-robot
2507f895cb Merge pull request #3898 from tb365/automated-cherry-pick-of-#3897-upstream-release-2.10.0
Automated cherry pick of #3897: huawei disk detach bugfix
2019-11-27 09:07:27 +08:00
yunion-ci-robot
46e980e76b Merge pull request #3914 from ioito/automated-cherry-pick-of-#3910-upstream-release-2.10.0
Automated cherry pick of #3910: fix: 避免有,Azure更新安全组规则出错
2019-11-27 08:56:28 +08:00
yunion-ci-robot
007b60cb27 Merge pull request #3906 from ioito/automated-cherry-pick-of-#3902-upstream-release-2.10.0
Automated cherry pick of #3902: fix: 普通后台也返回cloudregion_id信息
2019-11-27 08:53:28 +08:00
Qu Xuan
dd6564162f fix: 避免有,Azure更新安全组规则出错 2019-11-26 20:52:08 +08:00
Qu Xuan
275ab78310 fix: 普通后台也返回cloudregion_id信息 2019-11-26 19:14:46 +08:00
TangBin
a3ebacf339 huawei disk detach bugfix 2019-11-26 11:40:18 +08:00
Zexi Li
a4995b2cbf Merge pull request #3888 from swordqiu/automated-cherry-pick-of-#3887-upstream-release-2.10.0
Automated cherry pick of #3887: fix: host-add-netif requires index
2019-11-26 00:43:24 +08:00
Zexi Li
9af81524cb Merge pull request #3883 from swordqiu/automated-cherry-pick-of-#3879-upstream-release-2.10.0
Automated cherry pick of #3879: fix: keystone project resource count not set set to zero
2019-11-26 00:42:00 +08:00
Qiu Jian
b1e7141582 fix: host-add-netif requires index 2019-11-25 23:46:57 +08:00
Qiu Jian
2ad216a77d fix: keystone project resource count not set set to zero 2019-11-25 22:35:46 +08:00
yunion-ci-robot
132365c44e Merge pull request #3872 from ioito/automated-cherry-pick-of-#3868-upstream-release-2.10.0
Automated cherry pick of #3868: fix: 避免openstack重装系统,过不了镜像系统盘大小校验
2019-11-25 17:18:27 +08:00
Qu Xuan
e20e954d73 fix: 避免openstack重装系统,过不了镜像系统盘大小校验 2019-11-25 15:05:12 +08:00
yunion-ci-robot
2e1a8da755 Merge pull request #3867 from zexi/automated-cherry-pick-of-#3863-upstream-release-2.10.0
Automated cherry pick of #3863: baremetal: fix init baremetals fatal exit
2019-11-25 10:21:27 +08:00
Zexi Li
b201a7a007 baremetal: fix init baremetals fatal exit 2019-11-25 09:42:29 +08:00
Zexi Li
a0268d0c3f Merge pull request #3828 from wanyaoqi/automated-cherry-pick-of-#3824-upstream-release-2.10.0
Automated cherry pick of #3824: fix resize disk
2019-11-21 18:22:58 +08:00
wanyaoqi
fc3be951bc fix host register 2019-11-21 18:08:15 +08:00
yunion-ci-robot
8993547c97 Merge pull request #3814 from tb365/automated-cherry-pick-of-#3813-upstream-release-2.10.0
Automated cherry pick of #3813: aws upload image bugfix & huawei change default disk type to SAS
2019-11-21 15:37:26 +08:00
TangBin
ea6b0d9bbc aws upload image bugfix & huawei change default disk type to SAS 2019-11-21 09:34:50 +08:00
wanyaoqi
bef3ec054d fix resize disk 2019-11-20 22:06:52 +08:00
yunion-ci-robot
6e36741bc5 Merge pull request #3792 from yousong/automated-cherry-pick-of-#3788-upstream-release-2.10.0
Automated cherry pick of #3788: lbagent: pidfile: add PidFile
2019-11-19 23:21:22 +08:00
yunion-ci-robot
38735ca704 Merge pull request #3785 from yousong/automated-cherry-pick-of-#3778-upstream-release-2.10.0
Automated cherry pick of #3778: treewide: 避免使用fmt.Print记录日志
2019-11-19 23:15:24 +08:00
Yousong Zhou
9b3efd2482 lbagent: pidfile: remove ReadPidFile() 2019-11-19 12:28:25 +00:00
Yousong Zhou
b660ffa9c5 lbagent: stop daemons: use agentutils.PidFile 2019-11-19 12:28:25 +00:00
Yousong Zhou
62287c6024 lbagent: haproxy: use agentutils.PidFile 2019-11-19 12:28:25 +00:00
Yousong Zhou
0754dd29b1 lbagent: gobetween: use agentutils.PidFile 2019-11-19 12:28:25 +00:00
Yousong Zhou
338c34f65b lbagent: telegraf: use agentutils.PidFile 2019-11-19 12:28:25 +00:00
Yousong Zhou
f996cd09cc lbagent: keepalived: use agentutils.PidFile 2019-11-19 12:28:25 +00:00
Yousong Zhou
6f181f7be9 lbagent: pidfile: add PidFile 2019-11-19 12:28:25 +00:00
Yousong Zhou
5b33b5b709 vendor: update sqlchemy 2019-11-19 12:22:25 +00:00
Yousong Zhou
9dd7cb9c6c treewide: 避免使用fmt.Print记录日志 2019-11-19 12:22:25 +00:00
Yousong Zhou
50b5e4a6da treewide: 将default:"true"的bool字段改为tristate.TriState
使用以下命令进行字段类型更改

	ag 'bool .*`.*default:"true"' pkg \
		| grep models \
		| cut -f1 -d: \
		| xargs sed -i -r -e 's/bool (.*)default:"true"/tristate.TriState \1default:"true"/'

(cherry picked from commit bb1fd0bc59)
2019-11-19 12:22:24 +00:00
Zexi Li
cf9576f439 Merge pull request #3777 from ioito/automated-cherry-pick-of-#3773-upstream-release-2.10.0
Automated cherry pick of #3773: fix: 调整存储容量后刷新调度缓存
2019-11-19 16:10:14 +08:00
Qu Xuan
9969f6d8ad fix: 调整存储容量后刷新调度缓存 2019-11-19 14:35:21 +08:00
Zexi Li
04933e191f Merge pull request #3735 from yousong/automated-cherry-pick-of-#3731-upstream-release-2.10.0
Automated cherry pick of #3731: build: 避免并发构建rpm时触发file exists错误
2019-11-19 10:48:42 +08:00
Yousong Zhou
841dc4c17b build: 避免并发构建rpm时触发file exists错误 2019-11-18 02:45:22 +00:00
yunion-ci-robot
7d9ab4ecac Merge pull request #3720 from ioito/automated-cherry-pick-of-#3699-upstream-release-2.10.0
Automated cherry pick of #3699: fix: cpuCmtbound sync for zstack
2019-11-15 20:21:21 +08:00
Qu Xuan
38984a5e61 fix: cpuCmtbound sync for zstack 2019-11-15 19:08:48 +08:00
yunion-ci-robot
d552648fb6 Merge pull request #3650 from swordqiu/automated-cherry-pick-of-#3649-upstream-release-2.10.0
Automated cherry pick of #3649: fix: agent-list show zone info
2019-11-14 12:38:22 +08:00
yunion-ci-robot
fd2a04a48d Merge pull request #3610 from yousong/automated-cherry-pick-of-#3606-upstream-release-2.10.0
Automated cherry pick of #3606: influxdb: 记录结果中的tags
2019-11-14 00:21:19 +08:00
yunion-ci-robot
92779f44c0 Merge pull request #3640 from ioito/automated-cherry-pick-of-#3636-upstream-release-2.10.0
Automated cherry pick of #3636: fix: 避免associationtype异常
2019-11-14 00:08:25 +08:00
Qiu Jian
e8c1efac55 fix: agent-list show zone info 2019-11-13 23:32:30 +08:00
Qu Xuan
81d5afa4b7 fix: 避免associationtype异常 2019-11-13 19:58:03 +08:00
yunion-ci-robot
002cc5da31 Merge pull request #3635 from ioito/automated-cherry-pick-of-#3631-upstream-release-2.10.0
Automated cherry pick of #3631: fix: 避免匹配到64导致version是6
2019-11-13 19:47:20 +08:00
yunion-ci-robot
dd9a7bfbe3 Merge pull request #3625 from swordqiu/automated-cherry-pick-of-#3621-upstream-release-2.10.0
Automated cherry pick of #3621: fix: nic teaming/bonding not working properly
2019-11-13 17:50:20 +08:00
Qu Xuan
ae0cdfa685 fix: 避免匹配到64导致version是6 2019-11-13 14:53:23 +08:00
Yousong Zhou
6b0cd21679 climc: 添加lblistener{,rule}-backend-status命令 2019-11-13 03:03:51 +00:00
Yousong Zhou
c2821aea07 lblis, lbr: 增加查询后端状态接口 2019-11-13 02:46:38 +00:00
Yousong Zhou
07550e948a lbbackends: 使用yunion.io/pkg/errors 2019-11-13 02:46:38 +00:00
Yousong Zhou
d63ffe5fec influxdb: 记录结果中的tags 2019-11-13 02:46:38 +00:00
Qiu Jian
7b14f7ab7f fix: influxdb write support
(cherry picked from commit b77407c81f)
2019-11-13 02:46:37 +00:00
yunion-ci-robot
05e3266c36 Merge pull request #3615 from wanyaoqi/automated-cherry-pick-of-#3611-upstream-release-2.10.0
Automated cherry pick of #3611: fix resie fs
2019-11-13 01:39:19 +08:00
yunion-ci-robot
3e357543a4 Merge pull request #3619 from yousong/automated-cherry-pick-of-#3523-upstream-release-2.10.0
Automated cherry pick of #3523: lockman: log bug with Errorf
2019-11-13 00:46:19 +08:00
Qiu Jian
2191ae62d6 fix: nic teaming/bonding not working properly 2019-11-13 00:28:14 +08:00
yunion-ci-robot
c1e9b1ba2c Merge pull request #3586 from ioito/automated-cherry-pick-of-#3582-upstream-release-2.10.0
Automated cherry pick of #3582: fix: 避免Openstack越过存储检查
2019-11-12 21:43:33 +08:00
Yousong Zhou
8e67c05b81 vendor: update 2019-11-12 13:33:19 +00:00
Yousong Zhou
e65b6c510c lockman: test multiple lockman 2019-11-12 13:31:13 +00:00
Yousong Zhou
93af604b1d cloudcommon: options: new options for etcd lockman 2019-11-12 13:31:13 +00:00
Yousong Zhou
4d8eb0d167 lockman: distributed lockman with etcd 2019-11-12 13:31:13 +00:00
Yousong Zhou
b79d797963 lockman: log bug with Errorf 2019-11-12 13:31:13 +00:00
wanyaoqi
e5d7b81600 fix resie fs 2019-11-12 21:08:36 +08:00
Qu Xuan
0783ea187d fix: 避免Openstack越过存储检查 2019-11-12 15:19:40 +08:00
yunion-ci-robot
4451c60476 Merge pull request #3561 from tb365/automated-cherry-pick-of-#3558-upstream-release-2.10.0
Automated cherry pick of #3558: huawei disk attach bugfix
2019-11-12 00:33:18 +08:00
tangbin
2da6000a3b huawei disk attach bugfix 2019-11-11 10:30:04 +08:00
yunion-ci-robot
0d9bdd5077 Merge pull request #3531 from zexi/automated-cherry-pick-of-#3528-upstream-release-2.10.0
Automated cherry pick of #3528: webconsole: fix baremetal ipmitool sol payload active on another session
2019-11-08 13:32:15 +08:00
yunion-ci-robot
3d50bef904 Merge pull request #3527 from ioito/automated-cherry-pick-of-#3518-upstream-release-2.10.0
Automated cherry pick of #3518: fix: 虚拟机漂移后设置新的hostId
2019-11-08 11:46:17 +08:00
Zexi Li
1df611a6b8 webconsole: fix baremetal ipmitool sol payload active on another session 2019-11-08 11:36:20 +08:00
Qu Xuan
bdb471e049 fix: 虚拟机漂移后设置新的hostId 2019-11-08 10:52:05 +08:00
yunion-ci-robot
df43601a49 Merge pull request #3517 from ioito/automated-cherry-pick-of-#3492-upstream-release-2.10.0
Automated cherry pick of #3492: fix: 避免version输出不正确
2019-11-08 00:54:17 +08:00
Qu Xuan
713138e6f1 fix: 避免version输出不正确 2019-11-07 17:43:22 +08:00
yunion-ci-robot
215be3fc5e Merge pull request #3483 from tb365/automated-cherry-pick-of-#3478-upstream-release-2.10.0
Automated cherry pick of #3478: region sync fix
2019-11-07 15:08:18 +08:00
TangBin
bb114348ca region sync fix 2019-11-07 12:14:18 +08:00
yunion-ci-robot
4777ab7e9c Merge pull request #3495 from swordqiu/automated-cherry-pick-of-#3494-upstream-release-2.10.0
Automated cherry pick of #3494: fix: skip esxi vm with nil config
2019-11-07 10:19:16 +08:00
yunion-ci-robot
ad0e4eaf49 Merge pull request #3488 from swordqiu/automated-cherry-pick-of-#3487-upstream-release-2.10.0
Automated cherry pick of #3487: fix: nil pointer panic when auth decode body failed
2019-11-07 10:18:18 +08:00
Qiu Jian
132d399747 fix: skip esxi vm with nil config 2019-11-06 22:14:18 +08:00
Qiu Jian
c8265567a2 fix: nil pointer panic when auth decode body failed 2019-11-06 19:41:48 +08:00
yunion-ci-robot
7e2789bfe1 Merge pull request #3471 from yousong/automated-cherry-pick-of-#3468-upstream-release-2.10.0
Automated cherry pick of #3468: azure: fix tmp image file handling
2019-11-06 12:43:14 +08:00
Yousong Zhou
4766bbb570 azure: storagecache: fix writing sparse image file 2019-11-05 09:57:35 +00:00
Yousong Zhou
13edb0ed9e fileutils: add SparseFileWriter 2019-11-05 09:57:35 +00:00
Yousong Zhou
4cc9e080be webconsole: always do session close on pty stop 2019-11-05 09:57:35 +00:00
Yousong Zhou
5da0d93271 seclib2: add doc describing the protocol on removal of tmpfile 2019-11-05 09:15:11 +00:00
Yousong Zhou
d580b89dcc aliyun: fix tmp image file handling 2019-11-05 09:15:11 +00:00
Yousong Zhou
8f5405bd4d azure: fix tmp image file handling 2019-11-05 09:15:11 +00:00
yunion-ci-robot
d686e7ab70 Merge pull request #3446 from ioito/automated-cherry-pick-of-#3428-upstream-release-2.10.0
Automated cherry pick of #3428: fix: 避免创建vmware磁盘快照
2019-11-04 22:44:17 +08:00
Qu Xuan
d4d6c79573 fix: 避免创建vmware磁盘快照 2019-11-04 22:03:56 +08:00
yunion-ci-robot
6be44ab842 Merge pull request #3460 from yousong/automated-cherry-pick-of-#3457-upstream-release-2.10.0
Automated cherry pick of #3457: build: show diffs made by checks
2019-11-04 21:59:14 +08:00
yunion-ci-robot
0508f428e7 Merge pull request #3452 from ioito/automated-cherry-pick-of-#3430-upstream-release-2.10.0
Automated cherry pick of #3430: fix: 标准镜像version
2019-11-04 21:37:16 +08:00
yunion-ci-robot
500562d772 Merge pull request #3449 from ioito/automated-cherry-pick-of-#3429-upstream-release-2.10.0
Automated cherry pick of #3429: fix: 梳理磁盘reset条件
2019-11-04 20:48:14 +08:00
Yousong Zhou
b0e8fec0db build: show diffs made by checks 2019-11-04 07:20:23 +00:00
Qu Xuan
d313e59188 fix: 标准镜像version 2019-11-04 10:21:59 +08:00
Qu Xuan
93749fd449 fix: 梳理磁盘reset条件 2019-11-04 10:19:57 +08:00
Yousong Zhou
6b2913590b Merge pull request #3418 from ioito/automated-cherry-pick-of-#3412-upstream-release-2.10.0
Automated cherry pick of #3412: fix: add latitude for huawei cloud
2019-10-30 21:57:32 +08:00
Qu Xuan
a0d042ec64 fix: add latitude for huawei cloud 2019-10-30 21:31:00 +08:00
yunion-ci-robot
f7cfefcf8b Merge pull request #3401 from wanyaoqi/automated-cherry-pick-of-#3398-upstream-release-2.10.0
Automated cherry pick of #3398: change config add log event
2019-10-29 23:48:11 +08:00
yunion-ci-robot
7355c4ac54 Merge pull request #3404 from ioito/automated-cherry-pick-of-#3363-upstream-release-2.10.0
Automated cherry pick of #3363: fix: 避免虚拟机正常磁盘在回收站
2019-10-28 22:26:09 +08:00
ioito
7f4aa52f0d fix: 避免虚拟机正常磁盘在回收站 2019-10-28 21:56:40 +08:00
yunion-ci-robot
59de7cc3b3 Merge pull request #3377 from yousong/automated-cherry-pick-of-#3374-upstream-release-2.10.0
Automated cherry pick of #3374: lb: 创建时校验不通过返回httperrors
2019-10-28 21:55:09 +08:00
wanyaoqi
6b67da7357 change config add log event 2019-10-28 21:18:04 +08:00
yunion-ci-robot
c884eec18f Merge pull request #3389 from wanyaoqi/automated-cherry-pick-of-#3386-upstream-release-2.10.0
Automated cherry pick of #3386: support hmp
2019-10-28 20:05:10 +08:00
wanyaoqi
4a1512cfbe support hmp 2019-10-28 19:06:32 +08:00
yunion-ci-robot
9ad7917326 Merge pull request #3384 from yousong/automated-cherry-pick-of-#3381-upstream-release-2.10.0
Automated cherry pick of #3381: .circleci: yunionio/onecloud-ci: bump golang version to 1.13.3
2019-10-28 15:46:10 +08:00
Yousong Zhou
825e3f856c goimports: first run 2019-10-28 06:33:32 +00:00
Yousong Zhou
b04f29999d build: add goimports-check 2019-10-28 06:31:21 +00:00
Yousong Zhou
040bc0871d .circleci: use yunionio/onecloud-ci:v1.0.3 2019-10-28 06:31:21 +00:00
Yousong Zhou
dae6c1e806 .circleci: yunionio/onecloud-ci: bundle custom goimports 2019-10-28 06:31:21 +00:00
Yousong Zhou
8ed26af121 .circleci: yunionio/onecloud-ci: run as user "build" 2019-10-28 06:31:21 +00:00
Yousong Zhou
1cd48bb67a .circleci: yunionio/onecloud-ci: bump golang version to 1.13.3 2019-10-28 06:31:21 +00:00
Yousong Zhou
fbd6ddb9f6 cloudcommon: db: 允许普通用户获得pending_deleted字段
Convenient for testing
2019-10-28 02:33:33 +00:00
yunion-ci-robot
dcb73eacf9 Merge pull request #3371 from swordqiu/automated-cherry-pick-of-#3370-upstream-release-2.10.0
Automated cherry pick of #3370: fix: host-wire-update param rename
2019-10-28 09:43:11 +08:00
Qiu Jian
af2bb3e193 fix: hostwire update user network name as wireId 2019-10-27 14:22:12 +08:00
Qiu Jian
7ea1595ba1 fix: host-wire-update param rename 2019-10-27 14:22:12 +08:00
yunion-ci-robot
382f2e66e1 Merge pull request #3350 from ioito/automated-cherry-pick-of-#3347-upstream-release-2.10.0
Automated cherry pick of #3347: fix: 更正stoping状态
2019-10-24 14:12:06 +08:00
ioito
dedbe210f7 fix: 更正stoping状态 2019-10-24 10:55:48 +08:00
yunion-ci-robot
5a01740249 Merge pull request #3333 from swordqiu/automated-cherry-pick-of-#3332-upstream-release-2.10.0
Automated cherry pick of #3332: fix: allow multi-guest-dhcp
2019-10-24 10:46:08 +08:00
yunion-ci-robot
cd13d2b7b0 Merge pull request #3346 from ioito/automated-cherry-pick-of-#3343-upstream-release-2.10.0
Automated cherry pick of #3343: fix: 避免update存储tag信息异常
2019-10-24 07:48:05 +08:00
yunion-ci-robot
801cbd295b Merge pull request #3339 from yousong/automated-cherry-pick-of-#3336-upstream-release-2.10.0
Automated cherry pick of #3336: dns: 添加k8s_skip选项
2019-10-24 07:31:05 +08:00
yunion-ci-robot
507eaf30ee Merge pull request #3328 from ioito/automated-cherry-pick-of-#3325-upstream-release-2.10.0
Automated cherry pick of #3325: fix: 避免解绑eip更新状态不及时导致再次同步出现public ip问题
2019-10-24 01:58:05 +08:00
Qiu Jian
f3da447cad fix: allow multi-guest-dhcp 2019-10-24 01:09:18 +08:00
ioito
e9d67dc886 fix: 避免update存储tag信息异常 2019-10-23 20:56:23 +08:00
Yousong Zhou
1c604fbb77 dns: 添加k8s_skip选项 2019-10-23 08:45:41 +00:00
ioito
4a57706ef7 fix: 避免解绑eip更新状态不及时导致再次同步出现public ip问题 2019-10-22 21:58:45 +08:00
yunion-ci-robot
94437116b3 Merge pull request #3308 from ioito/bugfix/qx-ucloud-secgroup
fix: 修复2.10.0 ucloud安全组同步问题
2019-10-22 10:58:06 +08:00
ioito
2559f5eff8 fix: 修复2.10.0 ucloud安全组同步问题 2019-10-22 10:06:51 +08:00
yunion-ci-robot
4033ac6ddc Merge pull request #3304 from ioito/automated-cherry-pick-of-#3301-upstream-release-2.10.0
Automated cherry pick of #3301: fix: 修复华为云ucloud安全组同步问题
2019-10-22 02:27:04 +08:00
ioito
3b14d0fecd fix: 修复华为云ucloud安全组同步问题 2019-10-21 13:00:33 +08:00
yunion-ci-robot
2ce15ebf50 Merge pull request #3298 from swordqiu/automated-cherry-pick-of-#3297-upstream-release-2.10.0
Automated cherry pick of #3297: fix: esxi change vm instance type always timeout
2019-10-21 09:31:04 +08:00
Qiu Jian
2924c65e35 fix: esxi change vm instance type always timeout 2019-10-21 01:30:02 +08:00
yunion-ci-robot
d697cfd365 Merge pull request #3286 from yousong/automated-cherry-pick-of-#3283-upstream-release-2.10.0
Automated cherry pick of #3283: lbagent: fix listing filter on manager_id
2019-10-18 20:14:02 +08:00
Yousong Zhou
88e0b29400 lbagent: fix listing filter on manager_id 2019-10-18 06:18:02 +00:00
yunion-ci-robot
efa2eaee46 Merge pull request #3277 from wanyaoqi/automated-cherry-pick-of-#3270-upstream-release-2.10.0
Automated cherry pick of #3270: fix reserved memory is zero
2019-10-17 21:40:04 +08:00
wanyaoqi
ccaa315756 fix reserved memory is zero 2019-10-17 15:19:41 +08:00
yunion-ci-robot
10e30916e0 Merge pull request #3267 from ioito/automated-cherry-pick-of-#3264-upstream-release-2.10.0
Automated cherry pick of #3264: fix: 避免返回nil, nil
2019-10-16 20:33:05 +08:00
ioito
8f8c3f4d04 fix: 避免返回nil, nil 2019-10-16 18:13:29 +08:00
Zexi Li
6874d86cd3 Merge pull request #3254 from zexi/automated-cherry-pick-of-#3253-upstream-release-2.10.0
Automated cherry pick of #3253: baremetal: fix stop task hang
2019-10-16 11:51:01 +08:00
Zexi Li
701b2cb2e0 baremetal: fix stop task hang 2019-10-16 11:49:22 +08:00
yunion-ci-robot
df473ef3ae Merge pull request #3234 from ioito/automated-cherry-pick-of-#3231-upstream-release-2.10.0
Automated cherry pick of #3231: fix: 避免删除azure失败
2019-10-15 21:11:01 +08:00
Zexi Li
d07af12583 Merge pull request #3239 from zexi/automated-cherry-pick-of-#3236-upstream-release-2.10.0
Automated cherry pick of #3236: scheduler: adjust skip network filter condition
2019-10-15 16:24:10 +08:00
Zexi Li
1248b75def scheduler: adjust skip network filter condition 2019-10-15 16:23:35 +08:00
yunion-ci-robot
cf1edeb63f Merge pull request #3229 from ioito/automated-cherry-pick-of-#3189-upstream-release-2.10.0
Automated cherry pick of #3189: fix: openstack上传镜像时也指定os_type及额外信息
2019-10-15 16:13:02 +08:00
ioito
b4dcc1d43d fix: 避免删除azure失败 2019-10-15 15:18:38 +08:00
ioito
78b6be546c fix: openstack上传镜像时也指定os_type及额外信息 2019-10-15 10:44:00 +08:00
yunion-ci-robot
9759511206 Merge pull request #3204 from tb365/automated-cherry-pick-of-#3200-upstream-release-2.10.0
Automated cherry pick of #3200: huawei & aws bugfix
2019-10-14 11:59:40 +08:00
yunion-ci-robot
705c21d6cf Merge pull request #3193 from ioito/automated-cherry-pick-of-#3190-upstream-release-2.10.0
Automated cherry pick of #3190: fix: 创建相同配置时返回正确的eip信息
2019-10-14 07:41:41 +08:00
yunion-ci-robot
797b09b778 Merge pull request #3183 from ioito/automated-cherry-pick-of-#3180-upstream-release-2.10.0
Automated cherry pick of #3180: fix: 避免公有云账号统计虚拟的host数量
2019-10-14 07:40:41 +08:00
TangBin
e60b067372 huawei & aws bugfix 2019-10-12 18:14:34 +08:00
ioito
a1fee12739 fix: 创建相同配置时返回正确的eip信息 2019-10-12 16:53:14 +08:00
ioito
2c5131c619 fix: 避免公有云账号统计虚拟的host数量 2019-10-12 11:43:56 +08:00
yunion-ci-robot
87581f827e Merge pull request #3157 from yousong/automated-cherry-pick-of-#3154-upstream-release-2.10.0
Automated cherry pick of #3154: ansibleserver: enable tenant/user cache manager
2019-10-12 10:08:40 +08:00
yunion-ci-robot
43860da561 Merge pull request #3170 from swordqiu/automated-cherry-pick-of-#3169-upstream-release-2.10.0
Automated cherry pick of #3169: fix: string2scope ignore user scope
2019-10-12 10:07:41 +08:00
yunion-ci-robot
f8fbdf3b36 Merge pull request #3176 from yousong/automated-cherry-pick-of-#3173-upstream-release-2.10.0
Automated cherry pick of #3173: hostman: system_service: add IsEnabled() support
2019-10-12 10:05:39 +08:00
Yousong Zhou
932f8645b2 hostman: ensure openvswitch won't automatically start at boot 2019-10-11 15:58:50 +00:00
Yousong Zhou
0026f68ea9 hostman: system_service: add IsEnabled() support 2019-10-11 15:58:50 +00:00
yunion-ci-robot
480b87a86b Merge pull request #3166 from swordqiu/automated-cherry-pick-of-#3165-upstream-release-2.10.0
Automated cherry pick of #3165: fix: skip services without project resources when fetching project resources
2019-10-11 23:52:44 +08:00
Qiu Jian
46e8f105f5 fix: string2scope ignore user scope 2019-10-11 22:08:52 +08:00
Qiu Jian
a10e24a3c4 fix: skip services without project resources when fetching project resources 2019-10-11 18:13:14 +08:00
yunion-ci-robot
1934ac80f3 Merge pull request #3137 from swordqiu/automated-cherry-pick-of-#3136-upstream-release-2.10.0
Automated cherry pick of #3136: fix: guest create eip quota check use owner quota
2019-10-11 14:45:39 +08:00
yunion-ci-robot
69a2eec77e Merge pull request #3153 from yousong/automated-cherry-pick-of-#3150-upstream-release-2.10.0
Automated cherry pick of #3150: hostman: ovs: implement PersistentMAC()
2019-10-10 19:29:40 +08:00
Yousong Zhou
7acc82e449 ansibleserver: enable tenant/user cache manager 2019-10-10 08:11:54 +00:00
Yousong Zhou
4b97937cfd hostman: ovs: implement PersistentMAC()
This is required if phy port was not added as first member or macaddr of
phy port is "locally managed"

More importantly, it needs to be fixed
2019-10-10 08:07:57 +00:00
Zexi Li
2375de8846 Merge pull request #3146 from zexi/automated-cherry-pick-of-#3145-upstream-release-2.10.0
Automated cherry pick of #3145: scheduler: fix not setSchedPendingUsage condition
2019-10-10 10:50:34 +08:00
Zexi Li
ba66d3cd84 scheduler: fix not setSchedPendingUsage condition 2019-10-10 10:50:13 +08:00
Zexi Li
17c24a58b0 Merge pull request #3142 from zexi/automated-cherry-pick-of-#3141-upstream-release-2.10.0
Automated cherry pick of #3141: fix: scheduler specfied network no errors
2019-10-09 21:11:28 +08:00
Zexi Li
ff836e3eea fix: scheduler specfied network no errors 2019-10-09 21:10:39 +08:00
Qiu Jian
18753f8291 fix: guest create eip quota check use owner quota 2019-10-09 17:38:24 +08:00
yunion-ci-robot
3d050196a8 Merge pull request #3124 from zexi/automated-cherry-pick-of-#3121-upstream-release-2.10.0
Automated cherry pick of #3121: scheduler: fix random network domain not matched
2019-10-07 12:59:36 +08:00
Zexi Li
e72d95410d scheduler: fix random network domain not matched 2019-10-07 12:06:31 +08:00
yunion-ci-robot
f4915a90d1 Merge pull request #3118 from zexi/automated-cherry-pick-of-#3117-upstream-release-2.10.0
Automated cherry pick of #3117: scheduler: set random network filter default scope domain
2019-10-06 19:54:36 +08:00
Zexi Li
ae5c05cc95 scheduler: set random network filter default scope domain 2019-10-06 10:35:21 +08:00
yunion-ci-robot
833a6b0eaf Merge pull request #3112 from swordqiu/automated-cherry-pick-of-#3111-upstream-release-2.10.0
Automated cherry pick of #3111: fix: snapsho realdelete nil pointer panic
2019-10-05 07:36:35 +08:00
Qiu Jian
ea869ee61a fix: snapsho realdelete nil pointer panic 2019-10-04 00:10:13 +08:00
yunion-ci-robot
507376fa75 Merge pull request #3107 from swordqiu/automated-cherry-pick-of-#3106-upstream-release-2.10.0
Automated cherry pick of #3106: fix: server-create allow create server with empty disk
2019-09-29 19:33:32 +08:00
Qiu Jian
b593126425 fix: server-create allow create server with empty disk 2019-09-29 17:11:37 +08:00
Zexi Li
fb91090c03 Merge pull request #3101 from zexi/automated-cherry-pick-of-#3098-upstream-release-2.10.0
Automated cherry pick of #3098: scheduler: refactor network_predicate filter
2019-09-29 13:17:15 +08:00
Zexi Li
1af00f5697 scheduler: refactor network_predicate filter 2019-09-28 18:30:34 +08:00
yunion-ci-robot
303f17d369 Merge pull request #3092 from swordqiu/automated-cherry-pick-of-#3091-upstream-release-2.10.0
Automated cherry pick of #3091: fix: reduce policy sync worker queue size
2019-09-28 11:31:33 +08:00
yunion-ci-robot
e963a5b0f8 Merge pull request #3090 from wanyaoqi/automated-cherry-pick-of-#3087-upstream-release-2.10.0
Automated cherry pick of #3087: fix snaphot task complete
2019-09-28 10:50:31 +08:00
Qiu Jian
5e29f892ea fix: reduce policy sync worker queue size 2019-09-27 23:03:45 +08:00
wanyaoqi
d76458f62f fix snaphot task complete 2019-09-27 19:18:03 +08:00
yunion-ci-robot
4e62bca5bd Merge pull request #3063 from yousong/automated-cherry-pick-of-#3059-upstream-release-2.10.0
Automated cherry pick of #3059: guestnetworks: IsExit()减少一次数据库查询
2019-09-27 08:52:30 +08:00
yunion-ci-robot
dddf4d3e7a Merge pull request #3047 from swordqiu/automated-cherry-pick-of-#3046-upstream-release-2.10.0
Automated cherry pick of #3046: fix: keystone panic on invalid auth token
2019-09-27 08:51:30 +08:00
yunion-ci-robot
93cccd92b5 Merge pull request #3074 from wanyaoqi/automated-cherry-pick-of-#3071-upstream-release-2.10.0
Automated cherry pick of #3071: windows format fs fast
2019-09-27 08:50:31 +08:00
yunion-ci-robot
7e73833808 Merge pull request #3070 from wanyaoqi/automated-cherry-pick-of-#3067-upstream-release-2.10.0
Automated cherry pick of #3067: snapshot move to recycle bin
2019-09-26 23:44:31 +08:00
wanyaoqi
cc44e52d23 windows format fs fast 2019-09-26 22:57:54 +08:00
wanyaoqi
d641d3c9cf snapshot move to recycle bin 2019-09-26 22:35:08 +08:00
Yousong Zhou
1392f356c6 guests: list details with nics details 2019-09-26 04:46:08 +00:00
Yousong Zhou
7290d71b1d guestnetworks: IsExit()减少一次数据库查询 2019-09-26 04:46:08 +00:00
yunion-ci-robot
a97a80229a Merge pull request #3042 from yousong/automated-cherry-pick-of-#3039-upstream-release-2.10.0
Automated cherry pick of #3039: lbagents: 添加部署和下线操作记录
2019-09-25 21:26:28 +08:00
Qiu Jian
a22afc5692 fix: keystone panic on invalid auth token 2019-09-25 21:02:37 +08:00
yunion-ci-robot
3edbf06621 Merge pull request #3038 from ioito/automated-cherry-pick-of-#3035-upstream-release-2.10.0
Automated cherry pick of #3035: add: lb vpc info
2019-09-25 13:33:28 +08:00
Yousong Zhou
91cf8bd65c lbagents: 添加部署和下线操作记录 2019-09-25 05:28:02 +00:00
ioito
71a49b0975 add: lb vpc info 2019-09-25 11:49:52 +08:00
yunion-ci-robot
31defde055 Merge pull request #3019 from wanyaoqi/automated-cherry-pick-of-#3004-upstream-release-2.10.0
Automated cherry pick of #3004: fix rbd disk delete rebuild root with snapshot
2019-09-24 20:50:32 +08:00
Yousong Zhou
26e84cedb8 Merge pull request #3016 from yousong/automated-cherry-pick-of-#3010-upstream-release-2.10.0
Automated cherry pick of #3010: lbagents: 禁止在公有云、托管物理机上部署
2019-09-24 10:31:24 +08:00
yunion-ci-robot
1f994e818b Merge pull request #3013 from yousong/automated-cherry-pick-of-#3009-upstream-release-2.10.0
Automated cherry pick of #3009: ansibleserver: 避免数据库故障引起内部状态不一致
2019-09-24 00:50:29 +08:00
wanyaoqi
2290223ba8 fix rbd disk delete rebuild root with snapshot 2019-09-23 22:48:18 +08:00
Yousong Zhou
2999930e43 lbagents: 禁止在公有云、托管物理机上部署 2019-09-23 11:45:54 +00:00
Yousong Zhou
c931a03581 ansibleserver: 避免数据库故障引起内部状态不一致 2019-09-23 11:44:07 +00:00
yunion-ci-robot
fb7ede5938 Merge pull request #3006 from swordqiu/automated-cherry-pick-of-#3005-upstream-release-2.10.0
Automated cherry pick of #3005: fix: tenant filter fail to work
2019-09-21 20:42:28 +08:00
Qiu Jian
969b49bd70 fix: tenant filter fail to work 2019-09-21 20:38:37 +08:00
yunion-ci-robot
223b19782f Merge pull request #2999 from swordqiu/automated-cherry-pick-of-#2998-upstream-release-2.10.0
Automated cherry pick of #2998: fix: adjust default process timeout to 1 minute (previously 15 seconds)
2019-09-19 22:02:28 +08:00
yunion-ci-robot
9edae7f561 Merge pull request #2995 from swordqiu/automated-cherry-pick-of-#2994-upstream-release-2.10.0
Automated cherry pick of #2994: fix: fail to search opslog by obj_name
2019-09-19 22:00:28 +08:00
yunion-ci-robot
355d7e7144 Merge pull request #2964 from wanyaoqi/automated-cherry-pick-of-#2956-upstream-release-2.10.0
Automated cherry pick of #2956: misc fix
2019-09-19 21:22:24 +08:00
yunion-ci-robot
4b019b9e45 Merge pull request #2987 from yousong/automated-cherry-pick-of-#2984-upstream-release-2.10.0
Automated cherry pick of #2984: lbbackends: 改进错误信息传递
2019-09-19 21:12:28 +08:00
Qiu Jian
369d41f628 fix: adjust default process timeout to 1 minute (previously 15 seconds) 2019-09-19 21:08:04 +08:00
Qiu Jian
52ebd96c01 fix: fail to search opslog by obj_name 2019-09-19 21:02:37 +08:00
Yousong Zhou
330c5ce5b1 lbbackends: 改进错误信息传递 2019-09-19 10:40:44 +00:00
yunion-ci-robot
f3d03d152e Merge pull request #2974 from yousong/automated-cherry-pick-of-#2971-upstream-release-2.10.0
Automated cherry pick of #2971: validators: 应对"listener"参数被重复Validate的情况
2019-09-18 23:43:27 +08:00
Yousong Zhou
c3a671591b validators: 应对"listener"参数被重复Validate的情况
Fixes e4ef23515f ("aws elb support")
2019-09-18 07:37:57 +00:00
yunion-ci-robot
4a016a3471 Merge pull request #2967 from swordqiu/automated-cherry-pick-of-#2966-upstream-release-2.10.0
Automated cherry pick of #2966: fix: missing log audit for updating cloudaccount account credential
2019-09-18 11:30:26 +08:00
yunion-ci-robot
53e16ce887 Merge pull request #2953 from swordqiu/automated-cherry-pick-of-#2952-upstream-release-2.10.0
Automated cherry pick of #2952: fix: Table 'yunionlogger.users_cache_tbl' doesn't exist
2019-09-18 11:29:24 +08:00
Qiu Jian
3dc028419c fix: missing log audit for updating cloudaccount account credential 2019-09-18 00:18:54 +08:00
wanyaoqi
16382bff06 misc fix
- optimize batch create validate
2019-09-17 18:53:00 +08:00
Qiu Jian
c63ef27d95 fix: Table 'yunionlogger.users_cache_tbl' doesn't exist 2019-09-17 13:11:42 +08:00
yunion-ci-robot
c2da0481e5 Merge pull request #2947 from ioito/automated-cherry-pick-of-#2944-upstream-release-2.10.0
Automated cherry pick of #2944: fix: 避免zstack高可用关机失效问题
2019-09-17 11:55:25 +08:00
ioito
838c83257b fix: 避免zstack高可用关机失效问题 2019-09-17 11:33:23 +08:00
yunion-ci-robot
257f596de0 Merge pull request #2941 from swordqiu/automated-cherry-pick-of-#2940-upstream-release-2.10.0
Automated cherry pick of #2940: fix: fail to delete disconnected cloudaccount
2019-09-17 08:48:25 +08:00
yunion-ci-robot
8403b2e2c4 Merge pull request #2937 from swordqiu/automated-cherry-pick-of-#2936-upstream-release-2.10.0
Automated cherry pick of #2936: fix: 1. hpssactl blocks on user input 2. host-add-netif reset nic index 3. init baremetal nics with name enX instead of ethX
2019-09-17 08:47:25 +08:00
yunion-ci-robot
8509623af0 Merge pull request #2935 from yousong/automated-cherry-pick-of-#2932-upstream-release-2.10.0
Automated cherry pick of #2932: lbagents: deploy: check existence of pbId before create/update
2019-09-17 01:46:23 +08:00
Qiu Jian
f159f5235e fix: fail to delete disconnected cloudaccount 2019-09-17 01:44:19 +08:00
yunion-ci-robot
17b1285d15 Merge pull request #2919 from wanyaoqi/automated-cherry-pick-of-#2912-upstream-release-2.10.0
Automated cherry pick of #2912: fix init listen interface
2019-09-17 00:14:24 +08:00
Qiu Jian
397e219a07 fix: baremetal prepare updates nic_info incrementally 2019-09-17 00:06:55 +08:00
Qiu Jian
63d9b94207 fix: 1. hpssactl blocks on user input 2. host-add-netif reset nic index 3. init baremetal nics with name enX instead of ethX 2019-09-17 00:06:55 +08:00
Yousong Zhou
25c4609cf5 ansibleserver: ansibleplaybooks: a way out on status chaos
an apb was in state

 - apb.output has content
 - apb.status == running
 - apb.start_time && apb.end_time both set
 - not present in man.sessions

an impossible state
2019-09-16 14:14:12 +00:00
Yousong Zhou
12383cd07c lbagents: deploy: check existence of pbId before create/update 2019-09-16 14:14:12 +00:00
Zexi Li
a507616254 Merge pull request #2931 from zexi/automated-cherry-pick-of-#2928-upstream-release-2.10.0
Automated cherry pick of #2928: scheduler: fix baremetal disk and storage not match
2019-09-16 20:30:09 +08:00
Zexi Li
716d884295 scheduler: fix baremetal disk and storage not match 2019-09-16 20:29:09 +08:00
yunion-ci-robot
4be5cd531f Merge pull request #2925 from ioito/automated-cherry-pick-of-#2921-upstream-release-2.10.0
Automated cherry pick of #2921: fix: 避免删除不存在的快照出错
2019-09-16 18:57:24 +08:00
ioito
66bdba10d3 fix: 避免删除不存在的快照出错 2019-09-16 17:24:51 +08:00
Zexi Li
889c6d593c Merge pull request #2914 from zexi/automated-cherry-pick-of-#2913-upstream-release-2.10.0
Automated cherry pick of #2913: scheduler: fix disk local backend not select matched storage
2019-09-16 14:44:20 +08:00
wanyaoqi
15190fdd26 fix init listen interface 2019-09-16 14:36:01 +08:00
Zexi Li
19c1dcf498 scheduler: fix disk local backend not select matched storage 2019-09-16 13:52:12 +08:00
yunion-ci-robot
c245214047 Merge pull request #2907 from wanyaoqi/automated-cherry-pick-of-#2904-upstream-release-2.10.0
Automated cherry pick of #2904: set concurrent deploy count
2019-09-12 19:11:22 +08:00
yunion-ci-robot
e1d19bbe80 Merge pull request #2909 from ioito/automated-cherry-pick-of-#2908-upstream-release-2.10.0
Automated cherry pick of #2908: fix: 避免cache raw格式的镜像
2019-09-12 19:10:20 +08:00
ioito
6bded31182 fix: 避免cache raw格式的镜像 2019-09-12 19:08:37 +08:00
wanyaoqi
d67df6beff set concurrent deploy count 2019-09-12 19:04:56 +08:00
yunion-ci-robot
3ecb1f6154 Merge pull request #2903 from ioito/automated-cherry-pick-of-#2900-upstream-release-2.10.0
Automated cherry pick of #2900: fix: update vendor
2019-09-12 18:22:21 +08:00
ioito
1abdbe123e fix: update vendor 2019-09-12 18:18:22 +08:00
yunion-ci-robot
c2791b937a Merge pull request #2899 from ioito/automated-cherry-pick-of-#2896-upstream-release-2.10.0
Automated cherry pick of #2896: fix: avoid nil pointer
2019-09-12 17:18:23 +08:00
yunion-ci-robot
47bcbac1d1 Merge pull request #2895 from ioito/automated-cherry-pick-of-#2892-upstream-release-2.10.0
Automated cherry pick of #2892: fix: update go-ceph vendor
2019-09-12 17:16:21 +08:00
ioito
952a52036d fix: update go-ceph vendor 2019-09-12 16:57:56 +08:00
ioito
6d33c4dc6d fix: avoid nil pointer 2019-09-12 16:52:58 +08:00
yunion-ci-robot
f90ba3d7fa Merge pull request #2891 from ioito/automated-cherry-pick-of-#2885-upstream-release-2.10.0
Automated cherry pick of #2885: fix: go-ceph bugifx
2019-09-12 14:34:21 +08:00
ioito
0ca70e050b fix: go-ceph bugifx 2019-09-12 14:19:43 +08:00
Jian Qiu
6b21fbdf64 fix: 1. specifically baremetal use access ip to manage and listen ip to serve baremetal 2. hot net interface might be attached to multiple wire 2. hack fix: baremetal cannot access glance on management network (#2882) 2019-09-12 13:18:10 +08:00
yunion-ci-robot
7eeed23544 Merge pull request #2878 from wanyaoqi/automated-cherry-pick-of-#2877-upstream-release-2.10.0
Automated cherry pick of #2877: fix glance save form url save md5
2019-09-12 12:02:22 +08:00
wanyaoqi
cf8b6a2eb3 fix glance save form url save md5 2019-09-12 11:07:48 +08:00
yunion-ci-robot
fe850f1468 Merge pull request #2872 from ioito/automated-cherry-pick-of-#2869-upstream-release-2.10.0
Automated cherry pick of #2869: fix: 避免置空description失效
2019-09-11 21:36:19 +08:00
yunion-ci-robot
ff0c8210a7 Merge pull request #2874 from swordqiu/automated-cherry-pick-of-#2873-upstream-release-2.10.0
Automated cherry pick of #2873: fix: fail to update reserved ip notes
2019-09-11 21:31:23 +08:00
Qiu Jian
eb15be24e3 fix: fail to update reserved ip notes 2019-09-11 19:29:32 +08:00
ioito
e6176ee095 fix: 避免置空description失效 2019-09-11 16:18:26 +08:00
yunion-ci-robot
aaf1fafadf Merge pull request #2864 from wanyaoqi/automated-cherry-pick-of-#2861-upstream-release-2.10.0
Automated cherry pick of #2861: misc bugfix
2019-09-11 09:30:20 +08:00
yunion-ci-robot
a23cbed51d Merge pull request #2860 from yousong/automated-cherry-pick-of-#2853-upstream-release-2.10.0
Automated cherry pick of #2853: ansibleserver: 限定Playbook字段长度
2019-09-10 22:48:23 +08:00
wanyaoqi
c1fb04f4bc misc bugfix 2019-09-10 22:36:39 +08:00
yunion-ci-robot
3c5bcec1a7 Merge pull request #2859 from ioito/automated-cherry-pick-of-#2855-upstream-release-2.10.0
Automated cherry pick of #2855: fix: 避免密码登录时使用秘钥认证
2019-09-10 17:48:18 +08:00
yunion-ci-robot
9e1d6b34b0 Merge pull request #2852 from ioito/automated-cherry-pick-of-#2849-upstream-release-2.10.0
Automated cherry pick of #2849: fix: 虚拟机更改项目时,eip同时变更
2019-09-10 17:28:22 +08:00
ioito
39544f6524 fix: 避免密码登录时使用秘钥认证 2019-09-10 17:23:36 +08:00
Yousong Zhou
3776dc9eae ansibleserver: 限定Playbook字段长度
避免进入数据库时被截断产生无效数据
2019-09-10 09:22:24 +00:00
ioito
01ff78a898 fix: 虚拟机更改项目时,eip同时变更 2019-09-10 16:50:08 +08:00
yunion-ci-robot
a2db6bb532 Merge pull request #2839 from swordqiu/automated-cherry-pick-of-#2838-upstream-release-2.10.0
Automated cherry pick of #2838: fix: fail to delete orphane VM in esxi https://kb.vmware.com/s/article/1003742
2019-09-10 15:40:19 +08:00
yunion-ci-robot
e3bed5c306 Merge pull request #2843 from tb365/automated-cherry-pick-of-#2842-upstream-release-2.10.0
Automated cherry pick of #2842: fix ucloud snapshot delete
2019-09-10 15:39:19 +08:00
TangBin
dfb5e9a9b4 totp auth code support multi-domain 2019-09-10 15:29:09 +08:00
TangBin
69140a52c5 fix ucloud snapshot delete 2019-09-10 15:26:01 +08:00
yunion-ci-robot
48dfe2d270 Merge pull request #2833 from wanyaoqi/automated-cherry-pick-of-#2800-upstream-release-2.10.0
Automated cherry pick of #2800: misc deploy fix
2019-09-10 15:18:19 +08:00
wanyaoqi
3370955323 guest misc fix 2019-09-10 10:59:57 +08:00
Qiu Jian
e4e3ed7f02 fix: fail to delete orphane VM in esxi https://kb.vmware.com/s/article/1003742 2019-09-10 10:00:28 +08:00
yunion-ci-robot
727c1ac14a Merge pull request #2826 from ioito/automated-cherry-pick-of-#2823-upstream-release-2.10.0
Automated cherry pick of #2823: fix: 修复安全组关联数量校验不正确问题
2019-09-09 23:34:19 +08:00
yunion-ci-robot
8e766a7d81 Merge pull request #2822 from ioito/automated-cherry-pick-of-#2819-upstream-release-2.10.0
Automated cherry pick of #2819: fix: 避免数据盘顺序也被颠倒
2019-09-09 23:31:18 +08:00
wanyaoqi
b91c050fc6 misc deploy fix 2019-09-09 20:37:46 +08:00
Yousong Zhou
cbe5c340cc Merge pull request #2830 from yousong/automated-cherry-pick-of-#2827-upstream-release-2.10.0
Automated cherry pick of #2827: .circleci: fix requires
2019-09-09 18:41:40 +08:00
Yousong Zhou
a84dc63b7e build: rename cleandocgo to adddocgo 2019-09-09 10:04:41 +00:00
Yousong Zhou
be6ba43a3b .circleci: fix requires 2019-09-09 10:04:41 +00:00
Yousong Zhou
9dbccaccff Merge pull request #2818 from yousong/automated-cherry-pick-of-#2809-upstream-release-2.10.0
Automated cherry pick of #2809: build: 将check与构建部分解耦
2019-09-09 17:53:00 +08:00
ioito
67e776aa71 fix: 修复安全组关联数量校验不正确问题 2019-09-09 16:51:07 +08:00
ioito
d54c392ef7 fix: 避免数据盘顺序也被颠倒 2019-09-09 16:47:05 +08:00
yunion-ci-robot
782db5ab9b Merge pull request #2814 from swordqiu/automated-cherry-pick-of-#2813-upstream-release-2.10.0
Automated cherry pick of #2813: fix: fail to find host ip in virtual console vnic
2019-09-09 16:27:20 +08:00
Yousong Zhou
b119a4b411 .circleci: 构建前check 2019-09-09 07:57:16 +00:00
Yousong Zhou
7d493af405 build: 将check与构建部分解耦 2019-09-09 07:56:05 +00:00
Qiu Jian
9c517f0084 fix: fail to find host ip in virtual console vnic 2019-09-09 15:52:59 +08:00
yunion-ci-robot
a6da70c3a4 Merge pull request #2807 from ioito/automated-cherry-pick-of-#2804-upstream-release-2.10.0
Automated cherry pick of #2804: fix: 避免解绑EIP后释放EIP任务失败
2019-09-09 11:56:21 +08:00
ioito
a898d207c8 fix: 避免解绑EIP后释放EIP任务失败 2019-09-09 11:21:21 +08:00
yunion-ci-robot
5d4bc35499 Merge pull request #2798 from wanyaoqi/automated-cherry-pick-of-#2787-upstream-release-2.10.0
Automated cherry pick of #2787: fix guest manager server struct
2019-09-07 19:30:17 +08:00
yunion-ci-robot
2700f34a96 Merge pull request #2784 from ioito/automated-cherry-pick-of-#2783-upstream-release-2.10.0
Automated cherry pick of #2783: fix: 避免重装系统后同步信息导致磁盘类型都为系统盘
2019-09-07 19:06:17 +08:00
wanyaoqi
56a21aacfe fix guest manager server struct 2019-09-07 19:04:12 +08:00
yunion-ci-robot
ec4b113a99 Merge pull request #2776 from swordqiu/automated-cherry-pick-of-#2775-upstream-release-2.10.0
Automated cherry pick of #2775: fix: 1. nil pointer panic error when accessing resource pool and storagecache 2. support multiple disk format
2019-09-07 17:39:18 +08:00
Qiu Jian
221138421f fix: 1. nil pointer panic error when accessing resource pool and storagecache 2. support multiple disk format 2019-09-07 17:22:05 +08:00
ioito
310a4c9831 fix: 避免重装系统后同步信息导致磁盘类型都为系统盘 2019-09-07 13:38:25 +08:00
yunion-ci-robot
ae0b931c7a Merge pull request #2771 from swordqiu/automated-cherry-pick-of-#2733-upstream-release-2.10.0
Automated cherry pick of #2733: fix: optimize logger query time
2019-09-07 13:02:19 +08:00
Qiu Jian
149e1d0e60 fix: optimize logger query time 2019-09-06 13:39:52 +08:00
yunion-ci-robot
11ed89030f Merge pull request #2769 from ioito/automated-cherry-pick-of-#2766-upstream-release-2.10.0
Automated cherry pick of #2766: fix: 不能无限制追加 application/json
2019-09-06 13:10:16 +08:00
yunion-ci-robot
fcb6856b83 Merge pull request #2765 from yousong/automated-cherry-pick-of-#2762-upstream-release-2.10.0
Automated cherry pick of #2762: lbagents: deploy: 检查服务账号有效性
2019-09-06 11:59:17 +08:00
yunion-ci-robot
a8dbe59838 Merge pull request #2761 from wanyaoqi/automated-cherry-pick-of-#2758-upstream-release-2.10.0
Automated cherry pick of #2758: fix vnc connect, filter qmp event
2019-09-06 11:58:20 +08:00
ioito
a7a84ee410 fix: 不能无限制追加 application/json 2019-09-06 11:49:15 +08:00
Yousong Zhou
a4a5178f6f lbagents: deploy: 检查服务账号有效性 2019-09-05 14:00:38 +00:00
wanyaoqi
1ca907858c fix vnc connect, filter qmp event 2019-09-05 21:02:42 +08:00
yunion-ci-robot
12c2d43c11 Merge pull request #2753 from yousong/automated-cherry-pick-of-#2750-upstream-release-2.10.0
Automated cherry pick of #2750: lbagent: reuse mcclient client session
2019-09-05 19:59:18 +08:00
Yousong Zhou
8db877b9ae lbagent: fix possible out of bound index access 2019-09-05 07:38:57 +00:00
Yousong Zhou
b3c03feb79 lbagent: reuse mcclient client session 2019-09-05 07:38:57 +00:00
Zexi Li
29ae921190 Merge pull request #2726 from zexi/automated-cherry-pick-of-#2723-upstream-release-2.10.0
Automated cherry pick of #2723: region: fix create params cdrom missing
2019-09-03 10:47:06 +08:00
Zexi
c755bf7aaa region: fix create params cdrom missing 2019-09-03 10:46:36 +08:00
yunion-ci-robot
a061d82ffc Merge pull request #2704 from swordqiu/automated-cherry-pick-of-#2703-upstream-release-2.10.0
Automated cherry pick of #2703: fix: guest get host nil pointer panic
2019-09-02 21:40:15 +08:00
yunion-ci-robot
42dd7f32d6 Merge pull request #2708 from zexi/automated-cherry-pick-of-#2707-upstream-release-2.10.0
Automated cherry pick of #2707: scheduler: fix reserved resource out of limit bug
2019-09-02 18:53:16 +08:00
Zexi
1bff32bf78 scheduler: fix reserved resource out of limit bug 2019-09-02 18:40:07 +08:00
Qiu Jian
bc7c021283 fix: guest get host nil pointer panic 2019-09-02 18:19:51 +08:00
yunion-ci-robot
348eb8b59a Merge pull request #2702 from ioito/automated-cherry-pick-of-#2699-upstream-release-2.10.0
Automated cherry pick of #2699: fix: 忽略裸金属器删除条件
2019-09-02 17:24:19 +08:00
ioito
eef58b3339 fix: 忽略裸金属器删除条件 2019-09-02 16:32:33 +08:00
yunion-ci-robot
112c6acfda Merge pull request #2695 from ioito/automated-cherry-pick-of-#2689-upstream-release-2.10.0
Automated cherry pick of #2689: fix: 避免裸金属服务器转宿主机任务失败
2019-09-02 15:57:16 +08:00
ioito
ad271c8767 fix: 避免裸金属服务器转宿主机任务失败 2019-09-02 15:33:41 +08:00
yunion-ci-robot
b6778b1f14 Merge pull request #2686 from wanyaoqi/automated-cherry-pick-of-#2683-upstream-release-2.10.0
Automated cherry pick of #2683: fix glance update mindisk
2019-09-02 15:31:15 +08:00
yunion-ci-robot
e1459946aa Merge pull request #2679 from zexi/automated-cherry-pick-of-#2676-upstream-release-2.10.0
Automated cherry pick of #2676: baremetal: auto prepare when pxe boot
2019-09-02 15:30:17 +08:00
wanyaoqi
ce8402e6e3 fix glance update mindisk 2019-09-02 13:54:17 +08:00
yunion-ci-robot
75393b759a Merge pull request #2666 from swordqiu/automated-cherry-pick-of-#2665-upstream-release-2.10.0
Automated cherry pick of #2665: fix: 1. glance/keystone version handler fix 2. allow run glance as normal user
2019-09-02 13:47:15 +08:00
Zexi
c527410628 baremetal: auto prepare when pxe boot 2019-09-02 11:46:59 +08:00
Qiu Jian
0fb41d79be fix: 1. glance/keystone version handler fix 2. allow run glance as normal user 2019-08-31 11:12:53 +08:00
yunion-ci-robot
6843d569fe Merge pull request #2655 from zhasm/automated-cherry-pick-of-#2652-upstream-release-2.10.0
Automated cherry pick of #2652: 修改 Makefile 获取当前分支的方式
2019-08-30 18:24:15 +08:00
张东亮
5af8b74657 修改 Makefile 获取当前分支的方式 2019-08-30 17:59:19 +08:00
yunion-ci-robot
4cb4ca9a4d Merge pull request #2639 from swordqiu/automated-cherry-pick-of-#2629-upstream-release-2.10.0
Automated cherry pick of #2629: fix: incorrect import path of options pkg
2019-08-30 17:21:13 +08:00
liuxueguo6921
be4ff8f6c6 fix: incorrect import path of options pkg 2019-08-30 16:17:06 +08:00
yunion-ci-robot
748b52266b Merge pull request #2646 from ioito/automated-cherry-pick-of-#2601-upstream-release-2.10.0
Automated cherry pick of #2601: fix: 避免创建磁盘时显示provider disable底下的存储
2019-08-30 16:05:14 +08:00
ioito
23de9b54a5 fix: 避免创建磁盘时显示provider disable底下的存储 2019-08-30 10:56:10 +08:00
yunion-ci-robot
bf304e814c Merge pull request #2637 from wanyaoqi/automated-cherry-pick-of-#2635-upstream-release-2.10.0
Automated cherry pick of #2635: bugfix:
2019-08-29 22:46:13 +08:00
wanyaoqi
4ec934a9a9 bugfix:
- fix guest vnc connect failed on host unsupport ipv6
- fix cirros qemu args conflict with windows
2019-08-29 21:25:16 +08:00
yunion-ci-robot
ee6238a0e2 Merge pull request #2633 from ioito/automated-cherry-pick-of-#2630-upstream-release-2.10.0
Automated cherry pick of #2630: fix: avoid not release pending-usage
2019-08-29 21:00:14 +08:00
ioito
b79fd4fb05 fix: avoid not release pending-usage 2019-08-29 20:30:44 +08:00
yunion-ci-robot
c7a6fcbd18 Merge pull request #2618 from ioito/automated-cherry-pick-of-#2615-upstream-release-2.10.0
Automated cherry pick of #2615: fix: avoid rbd image exist when rebuild-root
2019-08-29 17:32:14 +08:00
yunion-ci-robot
e1f697ccf6 Merge pull request #2623 from ioito/automated-cherry-pick-of-#2620-upstream-release-2.10.0
Automated cherry pick of #2620: hotfix: add aliyun request user-agent
2019-08-29 17:19:12 +08:00
ioito
71476e4eac hotfix: add aliyun request user-agent 2019-08-29 16:38:14 +08:00
ioito
24b4ab752e fix: avoid rbd image exist when rebuild-root 2019-08-29 11:49:57 +08:00
yunion-ci-robot
90330fb75a Merge pull request #2614 from ioito/automated-cherry-pick-of-#2569-upstream-release-2.10.0
Automated cherry pick of #2569: fix: 宿主机下线时,需要将宿主机底下的虚拟机状态设为unknown
2019-08-29 11:24:14 +08:00
ioito
5119eb1dbb fix: 宿主机下线时,需要将宿主机底下的虚拟机状态设为unknown 2019-08-29 10:14:53 +08:00
yunion-ci-robot
730f7f9ee1 Merge pull request #2606 from yousong/automated-cherry-pick-of-#2603-upstream-release-2.10.0
Automated cherry pick of #2603: mcclient: ansibleplaybooks: 注册为v2接口
2019-08-28 22:34:13 +08:00
yunion-ci-robot
653656817d Merge pull request #2591 from yousong/automated-cherry-pick-of-#2588-upstream-release-2.10.0
Automated cherry pick of #2588: lbagents: 详情增加zone信息
2019-08-28 22:32:18 +08:00
Yousong Zhou
131fd25d5c mcclient: ansibleplaybooks: 注册为v2接口 2019-08-28 12:47:46 +00:00
yunion-ci-robot
390fa1ad03 Merge pull request #2549 from ioito/automated-cherry-pick-of-#2546-upstream-release-2.10.0
Automated cherry pick of #2546: fix: 避免host disable时detach磁盘
2019-08-28 15:57:16 +08:00
yunion-ci-robot
013ff8fb1d Merge pull request #2545 from ioito/automated-cherry-pick-of-#2512-upstream-release-2.10.0
Automated cherry pick of #2512: fix: add external perform change-project
2019-08-27 11:13:11 +08:00
Yousong Zhou
ace3bde281 lbagents: 详情增加zone信息 2019-08-27 03:03:32 +00:00
yunion-ci-robot
0fa798d646 Merge pull request #2578 from swordqiu/automated-cherry-pick-of-#2577-upstream-release-2.10.0
Automated cherry pick of #2577: fix: quota-list fail if deleted projects found
2019-08-27 10:08:13 +08:00
yunion-ci-robot
ec8cb242ad Merge pull request #2559 from ioito/automated-cherry-pick-of-#2558-upstream-release-2.10.0
Automated cherry pick of #2558: fix: sync and set secgroup public scope
2019-08-26 22:57:16 +08:00
yunion-ci-robot
7994c6e12b Merge pull request #2576 from yousong/automated-cherry-pick-of-#2573-upstream-release-2.10.0
Automated cherry pick of #2573: policy: 将lb集群相关资源归入系统资源类
2019-08-26 22:55:12 +08:00
yunion-ci-robot
57e6a91619 Merge pull request #2587 from wanyaoqi/automated-cherry-pick-of-#2581-upstream-release-2.10.0
Automated cherry pick of #2581: fix rbd disk delete with snapshot
2019-08-26 22:43:13 +08:00
yunion-ci-robot
17bebbf5fe Merge pull request #2584 from wanyaoqi/automated-cherry-pick-of-#2568-upstream-release-2.10.0
Automated cherry pick of #2568: fix host maintenance
2019-08-26 22:42:13 +08:00
wanyaoqi
9de3d292df fix rbd disk delete with snapshot 2019-08-26 22:13:50 +08:00
wanyaoqi
e8b089a3ef fix host maintenance 2019-08-26 22:08:11 +08:00
Qiu Jian
9b6e849e8c fix: quota-list fail if deleted projects found 2019-08-26 19:06:55 +08:00
yunion-ci-robot
be373afc54 Merge pull request #2421 from zexi/automated-cherry-pick-of-#2415-upstream-release-2.10.0
Automated cherry pick of #2415: webconsole: update aliyun vnc base url and uniq vnc session
2019-08-26 16:30:15 +08:00
Yousong Zhou
01e13b6dab policy: 将lb集群相关资源归入系统资源类 2019-08-26 07:43:52 +00:00
Zexi
13835cb07b webconsole: update aliyun vnc base url and uniq vnc session 2019-08-26 15:42:44 +08:00
yunion-ci-robot
a644f9c2af Merge pull request #2565 from tb365/automated-cherry-pick-of-#2564-upstream-release-2.10.0
Automated cherry pick of #2564: aws disk resize bugfix
2019-08-26 15:26:11 +08:00
TangBin
21823f55f8 aws disk resize bugfix 2019-08-26 14:53:31 +08:00
yunion-ci-robot
89fcc70778 Merge pull request #2540 from swordqiu/automated-cherry-pick-of-#2539-upstream-release-2.10.0
Automated cherry pick of #2539: fix: pending usage not release after failed change config
2019-08-24 18:40:10 +08:00
yunion-ci-robot
424cbcc177 Merge pull request #2532 from swordqiu/automated-cherry-pick-of-#2477-upstream-release-2.10.0
Automated cherry pick of #2477: fix: use policy match weight to override less specific policy
2019-08-24 18:39:10 +08:00
yunion-ci-robot
eac5d1552d Merge pull request #2555 from wanyaoqi/automated-cherry-pick-of-#2552-upstream-release-2.10.0
Automated cherry pick of #2552: guest batch migrate
2019-08-24 17:56:10 +08:00
wanyaoqi
1ec0a0640a guest batch migrate 2019-08-24 17:35:06 +08:00
ioito
28dfcd94fe fix: sync and set secgroup public scope 2019-08-24 17:14:46 +08:00
ioito
4f505f090a fix: 避免host disable时detach磁盘 2019-08-24 13:27:28 +08:00
ioito
ea3b84fdb1 fix: add external perform change-project 2019-08-24 10:13:25 +08:00
Qiu Jian
306f05a7a3 fix: pending usage not release after failed change config 2019-08-23 22:45:06 +08:00
yunion-ci-robot
f5407bc61d Merge pull request #2531 from ioito/automated-cherry-pick-of-#2528-upstream-release-2.10.0
Automated cherry pick of #2528: fix: deploy action not sync guest status in subtask
2019-08-23 21:24:08 +08:00
Qiu Jian
bae9b2939f fix: use policy match weight to override less specific policy 2019-08-23 21:18:13 +08:00
ioito
19ee19b4a0 fix: deploy action not sync guest status in subtask 2019-08-23 21:03:07 +08:00
yunion-ci-robot
1ae85bb17e Merge pull request #2525 from ioito/automated-cherry-pick-of-#2522-upstream-release-2.10.0
Automated cherry pick of #2522: fix: sync status after guest sync conf
2019-08-23 18:04:09 +08:00
ioito
9eabb2df62 fix: sync status after guest sync conf 2019-08-23 17:17:15 +08:00
yunion-ci-robot
2f311a4b1b Merge pull request #2502 from ioito/automated-cherry-pick-of-#2499-upstream-release-2.10.0
Automated cherry pick of #2499: fix: qcloud sync unavailable storages
2019-08-23 10:55:09 +08:00
yunion-ci-robot
d938b0dd25 Merge pull request #2494 from yousong/automated-cherry-pick-of-#2491-upstream-release-2.10.0
Automated cherry pick of #2491: networks: 添加ifname_hint字段
2019-08-23 03:38:10 +08:00
yunion-ci-robot
1e51f5da47 Merge pull request #2514 from zexi/automated-cherry-pick-of-#2513-upstream-release-2.10.0
Automated cherry pick of #2513: scheduler: fix disk or net specify resource id execute schedtag filter
2019-08-23 03:37:14 +08:00
yunion-ci-robot
195e6bdb6f Merge pull request #2498 from yousong/automated-cherry-pick-of-#2495-upstream-release-2.10.0
Automated cherry pick of #2495: appsrv: 反转义path segs
2019-08-23 03:14:08 +08:00
yunion-ci-robot
1a68c9be78 Merge pull request #2488 from tb365/automated-cherry-pick-of-#2487-upstream-release-2.10.0
Automated cherry pick of #2487: huawei & aws bugfix
2019-08-23 03:10:09 +08:00
Zexi
e7af6cc36c scheduler: fix disk or net specify resource id execute schedtag filter 2019-08-22 21:58:49 +08:00
ioito
17da544a84 fix: qcloud sync unavailable storages 2019-08-22 20:37:42 +08:00
Yousong Zhou
c5edb0643f guests: detachnetwork时支持以名字指定network 2019-08-22 08:45:49 +00:00
Yousong Zhou
cba294c571 appsrv: 反转义path segs
支持"climc network-delete 中文"
2019-08-22 08:45:49 +00:00
Yousong Zhou
5e6d0709f9 networks: 添加ifname_hint字段
- 升级部署时,从network.Name初始化
 - 创建时,尝试从network.Name取值,取不到则生成随机值
 - 不允许更新
2019-08-22 08:10:49 +00:00
TangBin
78f05b5812 huawei bugfix 2019-08-22 14:34:16 +08:00
TangBin
390aeb3bb5 huawei & aws bugfix 2019-08-22 14:34:16 +08:00
yunion-ci-robot
381d9dc8fc Merge pull request #2486 from ioito/automated-cherry-pick-of-#2483-upstream-release-2.10.0
Automated cherry pick of #2483: fix: zstack reset passworkd with username
2019-08-22 11:42:08 +08:00
yunion-ci-robot
d7163dfe89 Merge pull request #2480 from ioito/automated-cherry-pick-of-#2451-upstream-release-2.10.0
Automated cherry pick of #2451: bugfix: 避免openstack磁盘扩容成功后未能挂载到虚拟机上
2019-08-22 11:40:07 +08:00
ioito
642bb4ed4b fix: zstack reset passworkd with username 2019-08-22 11:26:28 +08:00
ioito
17a97a7616 bugfix: 避免openstack磁盘扩容成功后未能挂载到虚拟机上 2019-08-22 10:16:55 +08:00
yunion-ci-robot
d9946f73f3 Merge pull request #2474 from swordqiu/automated-cherry-pick-of-#2473-upstream-release-2.10.0
Automated cherry pick of #2473: fix: doamin admin cannot access private networks across domain
2019-08-22 09:48:07 +08:00
yunion-ci-robot
624f6efe66 Merge pull request #2470 from swordqiu/automated-cherry-pick-of-#2469-upstream-release-2.10.0
Automated cherry pick of #2469: fix: disk-resize sync guest status cause deadlock
2019-08-22 09:45:08 +08:00
yunion-ci-robot
ba6c7a3df3 Merge pull request #2466 from swordqiu/automated-cherry-pick-of-#2465-upstream-release-2.10.0
Automated cherry pick of #2465: fix: a join update is allowed if one of the joint models is allowed to update
2019-08-22 09:43:08 +08:00
yunion-ci-robot
14644c8a16 Merge pull request #2453 from tb365/automated-cherry-pick-of-#2452-upstream-release-2.10.0
Automated cherry pick of #2452: add update vm name method
2019-08-22 08:11:08 +08:00
yunion-ci-robot
498febf9fc Merge pull request #2432 from ioito/automated-cherry-pick-of-#2414-upstream-release-2.10.0
Automated cherry pick of #2414: hotfix: 避免上传镜像后,再次获取镜像列表因网络原因导致任务失败
2019-08-22 08:10:07 +08:00
Qiu Jian
5266498afa fix: doamin admin cannot access private networks across domain 2019-08-22 00:26:50 +08:00
Qiu Jian
476f2b98f7 fix: disk-resize sync guest status cause deadlock 2019-08-21 23:58:05 +08:00
Qiu Jian
a3e19b1871 fix: a join update is allowed if one of the joint models is allowed to update 2019-08-21 20:41:11 +08:00
yunion-ci-robot
a9a07e8900 Merge pull request #2458 from zexi/automated-cherry-pick-of-#2457-upstream-release-2.10.0
Automated cherry pick of #2457: region: capability domain public network must equal domain_id
2019-08-21 20:30:08 +08:00
yunion-ci-robot
8e1b8d7715 Merge pull request #2464 from wanyaoqi/automated-cherry-pick-of-#2461-upstream-release-2.10.0
Automated cherry pick of #2461: fix snapshot can't delete
2019-08-21 20:17:09 +08:00
Zexi
a32f12f0af region: capability domain public network must equal domain_id 2019-08-21 19:25:43 +08:00
wanyaoqi
1a4d3cb1b6 fix snapshot can't delete 2019-08-21 19:14:53 +08:00
TangBin
73b2d8222b add update vm name method 2019-08-21 15:44:20 +08:00
yunion-ci-robot
7412181960 Merge pull request #2438 from ioito/automated-cherry-pick-of-#2407-upstream-release-2.10.0
Automated cherry pick of #2407: fix: 避免admin=false时,不显示其余项目下的标签信息
2019-08-21 15:33:08 +08:00
yunion-ci-robot
3057673680 Merge pull request #2450 from zexi/automated-cherry-pick-of-#2447-upstream-release-2.10.0
Automated cherry pick of #2447: scheduler: sku not unmarshal to ServerConfigs
2019-08-21 14:57:08 +08:00
Zexi
4337e80f7d scheduler: sku not unmarshal to ServerConfigs 2019-08-21 12:31:51 +08:00
yunion-ci-robot
03384ed221 Merge pull request #2435 from ioito/automated-cherry-pick-of-#2412-upstream-release-2.10.0
Automated cherry pick of #2412: hotfix: snapshot create optimized
2019-08-21 10:57:08 +08:00
ioito
9784b2e2d9 fix: 避免admin=false时,不显示其余项目下的标签信息 2019-08-21 10:28:07 +08:00
ioito
ee01fddcc2 hotfix: snapshot create optimized 2019-08-21 10:24:21 +08:00
ioito
0dcde6dd04 hotfix: 避免上传镜像后,再次获取镜像列表因网络原因导致任务失败 2019-08-21 10:09:00 +08:00
yunion-ci-robot
fe41dbe8ac Merge pull request #2427 from ioito/automated-cherry-pick-of-#2424-upstream-release-2.10.0
Automated cherry pick of #2424: fix: 允许更改私有云region名称
2019-08-20 23:49:07 +08:00
yunion-ci-robot
9a5a51ae74 Merge pull request #2411 from ioito/automated-cherry-pick-of-#2408-upstream-release-2.10.0
Automated cherry pick of #2408: fix: avoid sku validate delete return error
2019-08-20 23:34:11 +08:00
ioito
1af10a6446 fix: 允许更改私有云region名称 2019-08-20 21:21:20 +08:00
yunion-ci-robot
3e99a2d120 Merge pull request #2383 from zexi/automated-cherry-pick-of-#2382-upstream-release-2.10.0
Automated cherry pick of #2382: baremetal: fix ext4 rootfs inode inconsistent
2019-08-20 21:00:08 +08:00
yunion-ci-robot
e1bac65ede Merge pull request #2420 from wanyaoqi/automated-cherry-pick-of-#2417-upstream-release-2.10.0
Automated cherry pick of #2417: fix snapshot ops log
2019-08-20 20:54:07 +08:00
yunion-ci-robot
fa5c003813 Merge pull request #2403 from swordqiu/automated-cherry-pick-of-#2402-upstream-release-2.10.0
Automated cherry pick of #2402: fix: sysadmin should be a system account
2019-08-20 20:47:08 +08:00
wanyaoqi
778ca34e24 fix snapshot ops log 2019-08-20 20:27:54 +08:00
Zexi
aeb55d8efd baremetal: fix ext4 rootfs inode inconsistent 2019-08-20 17:17:24 +08:00
ioito
5c168cc7d5 fix: avoid sku validate delete return error 2019-08-20 15:26:49 +08:00
Qiu Jian
11bce5202f fix: sysadmin should be a system account 2019-08-20 14:01:53 +08:00
yunion-ci-robot
38bd53cd0c Merge pull request #2395 from swordqiu/automated-cherry-pick-of-#2392-upstream-release-2.10.0
Automated cherry pick of #2392: fix: qcloud change config failed
2019-08-20 11:31:05 +08:00
yunion-ci-robot
b71b743440 Merge pull request #2388 from swordqiu/automated-cherry-pick-of-#2387-upstream-release-2.10.0
Automated cherry pick of #2387: fix: cloud-provider-region add cloudaccount_domain_id
2019-08-20 11:28:07 +08:00
yunion-ci-robot
08084bc67b Merge pull request #2398 from ioito/automated-cherry-pick-of-#2381-upstream-release-2.10.0
Automated cherry pick of #2381: fix: httputils show error when resp body is not dict
2019-08-20 10:25:08 +08:00
ioito
6c91f41e7c fix: httputils show error when resp body is not dict 2019-08-20 10:19:12 +08:00
Qiu Jian
12e8f747d9 fix: qcloud change config failed 2019-08-20 01:51:22 +08:00
yunion-ci-robot
1ed014af66 Merge pull request #2380 from wanyaoqi/automated-cherry-pick-of-#2377-upstream-release-2.10.0
Automated cherry pick of #2377: snapshot bugs fix
2019-08-20 00:05:09 +08:00
Qiu Jian
67c0f4fdc2 fix: cloud-provider-region add cloudaccount_domain_id 2019-08-19 22:26:30 +08:00
wanyaoqi
b6b57c12f7 snapshot bugs fix 2019-08-19 20:34:10 +08:00
yunion-ci-robot
42cef580e6 Merge pull request #2376 from swordqiu/automated-cherry-pick-of-#2373-upstream-release-2.10.0
Automated cherry pick of #2373: fix: not sync correctly aws VM's tempoaral public ip
2019-08-19 10:24:06 +08:00
Qiu Jian
4f84a932d9 fix: not sync correctly aws VM's tempoaral public ip 2019-08-19 02:18:42 +08:00
yunion-ci-robot
176c4b9424 Merge pull request #2370 from swordqiu/automated-cherry-pick-of-#2369-upstream-release-2.10.0
Automated cherry pick of #2369: fix: avoid duplicate image uploading if multiple identical instances created at same time
2019-08-19 00:09:05 +08:00
Qiu Jian
5bef41d64f fix: avoid duplicate image uploading if multiple identical instances created at same time 2019-08-18 23:26:16 +08:00
yunion-ci-robot
1d606ec687 Merge pull request #2366 from swordqiu/automated-cherry-pick-of-#2357-upstream-release-2.10.0
Automated cherry pick of #2357: fix: deprecate old user/group joint project API, create new action apis for add user/group to projects with roles
2019-08-17 21:35:08 +08:00
yunion-ci-robot
43de19835f Merge pull request #2363 from swordqiu/automated-cherry-pick-of-#2362-upstream-release-2.10.0
Automated cherry pick of #2362: fix: cloud-account-usage no data for domain admin
2019-08-17 18:55:05 +08:00
Qiu Jian
2951a0d2ff update vendor 2019-08-17 18:54:07 +08:00
Qiu Jian
11cbaefd3d fix: deprecate old user/group joint project API, create new action apis for add user/group to projects with roles 2019-08-17 18:51:28 +08:00
Qiu Jian
3e7ce5545c fix: cloud-account-usage no data for domain admin 2019-08-17 18:41:13 +08:00
yunion-ci-robot
e9c14e7a45 Merge pull request #2359 from swordqiu/automated-cherry-pick-of-#2358-upstream-release-2.10.0
Automated cherry pick of #2358: fix: new user without porject may view any resources
2019-08-17 18:27:05 +08:00
Qiu Jian
43ff1c3a3d fix: new user without porject may view any resources 2019-08-17 13:41:16 +08:00
yunion-ci-robot
2df8c0cc71 Merge pull request #2356 from yousong/automated-cherry-pick-of-#2353-upstream-release-2.10.0
Automated cherry pick of #2353: Makefile: 改正rpm target
2019-08-17 10:00:06 +08:00
yunion-ci-robot
7cf8fa1cc0 Merge pull request #2346 from yousong/automated-cherry-pick-of-#2343-upstream-release-2.10.0
Automated cherry pick of #2343: hostman: windows: 改正批处理代码
2019-08-17 09:58:06 +08:00
yunion-ci-robot
da952ad714 Merge pull request #2350 from swordqiu/automated-cherry-pick-of-#2349-upstream-release-2.10.0
Automated cherry pick of #2349: fix: project_id/domain_id was cleared after FetchProjectInfo/FetchDomainInfo called
2019-08-16 22:09:08 +08:00
Yousong Zhou
029481c756 .travis.yml: 去掉过时comment 2019-08-16 13:58:43 +00:00
Yousong Zhou
18aa150fdd Makefile: 改正rpm target 2019-08-16 13:58:43 +00:00
Qiu Jian
c88ac909bd fix: project_id/domain_id was cleared after FetchProjectInfo/FetchDomainInfo called 2019-08-16 21:26:00 +08:00
yunion-ci-robot
14f5657a0d Merge pull request #2342 from wanyaoqi/automated-cherry-pick-of-#2339-upstream-release-2.10.0
Automated cherry pick of #2339: fix managered disk reset not update disk size
2019-08-16 21:23:06 +08:00
Yousong Zhou
98e024eeca hostman: windows: 改正批处理代码 2019-08-16 13:21:23 +00:00
wanyaoqi
5dcfa16814 fix managered disk reset not update disk size 2019-08-16 18:02:13 +08:00
yunion-ci-robot
ed6c69b5ef Merge pull request #2333 from tb365/automated-cherry-pick-of-#2332-upstream-release-2.10.0
Automated cherry pick of #2332: aws & huawei & ucloud fix
2019-08-16 17:21:06 +08:00
yunion-ci-robot
41b2c07f3c Merge pull request #2315 from ioito/automated-cherry-pick-of-#2311-upstream-release-2.10.0
Automated cherry pick of #2311: fix: avoid duplicate sku error
2019-08-16 17:11:06 +08:00
yunion-ci-robot
883afa6346 Merge pull request #2304 from wanyaoqi/automated-cherry-pick-of-#2301-upstream-release-2.10.0
Automated cherry pick of #2301: fix image head no field tenant
2019-08-16 17:05:06 +08:00
yunion-ci-robot
2bec03b8af Merge pull request #2290 from wanyaoqi/automated-cherry-pick-of-#2287-upstream-release-2.10.0
Automated cherry pick of #2287: fix ceph rescue mode migrate
2019-08-16 17:04:05 +08:00
TangBin
deafd08ed8 aws & huawei & ucloud fix 2019-08-16 16:50:14 +08:00
yunion-ci-robot
6289bc3ff2 Merge pull request #2329 from ioito/automated-cherry-pick-of-#2326-upstream-release-2.10.0
Automated cherry pick of #2326: fix: azure快照的磁盘id应该小写
2019-08-16 16:29:04 +08:00
yunion-ci-robot
0bea25d9fa Merge pull request #2323 from swordqiu/automated-cherry-pick-of-#2322-upstream-release-2.10.0
Automated cherry pick of #2322: fix: openstack provider string should be OpenStack
2019-08-16 16:28:04 +08:00
yunion-ci-robot
c34aef41a0 Merge pull request #2296 from zexi/automated-cherry-pick-of-#2293-upstream-release-2.10.0
Automated cherry pick of #2293: baremetal: raid disk inode inconsistent due to mkfs.ext4 largefile option
2019-08-16 16:14:05 +08:00
ioito
bdd761f0b9 fix: azure快照的磁盘id应该小写 2019-08-16 15:58:20 +08:00
Qiu Jian
4b4e175428 fix: openstack provider string should be OpenStack 2019-08-16 15:41:30 +08:00
yunion-ci-robot
5791bec28e Merge pull request #2319 from ioito/automated-cherry-pick-of-#2316-upstream-release-2.10.0
Automated cherry pick of #2316: fix: create disk with project-src=local
2019-08-16 15:22:06 +08:00
ioito
18d181718e fix: create disk with project-src=local 2019-08-16 15:04:49 +08:00
ioito
950df5249f fix: avoid duplicate sku error 2019-08-16 14:51:00 +08:00
yunion-ci-robot
a85852c57d Merge pull request #2309 from yousong/automated-cherry-pick-of-#2305-upstream-release-2.10.0
Automated cherry pick of #2305: .travis.yml: 不使用docker
2019-08-16 14:39:07 +08:00
Yousong Zhou
ea373dbfea .travis.yml: 不使用docker 2019-08-16 05:44:24 +00:00
wanyaoqi
57aec6fedb fix image head no field tenant 2019-08-16 12:17:24 +08:00
yunion-ci-robot
e515c07865 Merge pull request #2300 from yousong/automated-cherry-pick-of-#2297-upstream-release-2.10.0
Automated cherry pick of #2297: Makefile: 使用rpm/%
2019-08-16 10:36:05 +08:00
Yousong Zhou
0a874d4af7 .travis.yml: 改正权限问题 2019-08-16 02:21:19 +00:00
Yousong Zhou
8ea2e9812e Makefile: 使用rpm/% 2019-08-16 02:21:19 +00:00
yunion-ci-robot
fbd0e33531 Merge pull request #2275 from yousong/automated-cherry-pick-of-#2272-upstream-release-2.10.0
Automated cherry pick of #2272: .travis.yml: 改正配置
2019-08-15 22:02:04 +08:00
Zexi
17fae7f4f8 baremetal: raid disk inode inconsistent due to mkfs.ext4 largefile option 2019-08-15 21:34:32 +08:00
wanyaoqi
cb4476f007 fix ceph rescue mode migrate 2019-08-15 16:04:55 +08:00
yunion-ci-robot
06f7589df4 Merge pull request #2283 from wanyaoqi/automated-cherry-pick-of-#2280-upstream-release-2.10.0
Automated cherry pick of #2280: add distinct field manager
2019-08-15 10:39:02 +08:00
wanyaoqi
48c39c5354 add distinct field manager 2019-08-14 21:03:20 +08:00
yunion-ci-robot
ff78076839 Merge pull request #2279 from ioito/automated-cherry-pick-of-#2276-upstream-release-2.10.0
Automated cherry pick of #2276: fix: missing setup managerId for snapshot
2019-08-14 20:38:06 +08:00
ioito
235154a3e4 fix: missing setup managerId for snapshot 2019-08-14 20:15:15 +08:00
Yousong Zhou
6aee947b8c Makefile: fail for unknown target 2019-08-14 07:13:12 +00:00
Yousong Zhou
902bd84ec5 .travis.yml: 改正配置
找不到commit

	$ git clone --depth=1 --branch=release/2.11 https://github.com/yunionio/onecloud.git yunionio/onecloud
	Cloning into 'yunionio/onecloud'...
	remote: Enumerating objects: 9016, done.
	remote: Counting objects: 100% (9016/9016), done.
	remote: Compressing objects: 100% (6914/6914), done.
	remote: Total 9016 (delta 2420), reused 5969 (delta 1637), pack-reused 0
	Receiving objects: 100% (9016/9016), 14.37 MiB | 14.29 MiB/s, done.
	Resolving deltas: 100% (2420/2420), done.
	$ cd yunionio/onecloud
	$ git checkout -qf 4e9f605844
	fatal: reference is not a tree: 4e9f605844
	The command "git checkout -qf 4e9f60584434f56a410604b4ef36f979ecdb9623" failed and exited with 128 during .
2019-08-14 07:13:12 +00:00
Yousong Zhou
b44af70fdb Merge pull request #2270 from swordqiu/hotfix/qj-cloud-account-sync-status-stop-at-queuing
fix: cloud account status stop at queuing after mannual sync
2019-08-14 10:22:59 +08:00
Qiu Jian
b73714edf8 fix: cloud account status stop at queuing after mannual sync 2019-08-14 10:09:25 +08:00
Yousong Zhou
7d7612133c Merge pull request #2266 from swordqiu/automated-cherry-pick-of-#2264-upstream-release-2.10.0
Automated cherry pick of #2264: fix: qcloud storagecache bucket name too long
2019-08-14 09:51:18 +08:00
Qiu Jian
298ebab0a9 fix: qcloud storagecache bucket name too long 2019-08-14 00:38:47 +08:00
yunion-ci-robot
07cbcf9d12 Merge pull request #2259 from wanyaoqi/automated-cherry-pick-of-#2257-upstream-release-2.10.0
Automated cherry pick of #2257: fix sku cron job
2019-08-13 21:42:01 +08:00
wanyaoqi
bb01794fc0 fix sku cron job 2019-08-13 21:16:27 +08:00
yunion-ci-robot
f104afc206 Merge pull request #2254 from wanyaoqi/automated-cherry-pick-of-#2250-upstream-release-2.10.0
Automated cherry pick of #2250: support get user tags
2019-08-13 18:55:03 +08:00
yunion-ci-robot
cfd347e09e Merge pull request #2246 from wanyaoqi/automated-cherry-pick-of-#2227-upstream-release-2.10.0
Automated cherry pick of #2227: - feature: refact snapshot related code - feature: rbd snapshot - bugfix: ceph cache iso image - delete disk create snapshot and guest create snapshot - fix auto snapshot - fix disk reset
2019-08-13 18:53:03 +08:00
yunion-ci-robot
6b1878c600 Merge pull request #2253 from zexi/automated-cherry-pick-of-#2249-upstream-release-2.10.0
Automated cherry pick of #2249: baremetal: fix rebuild root no password
2019-08-13 18:35:01 +08:00
wanyaoqi
7a387c2dc6 support get user tags 2019-08-13 18:29:54 +08:00
Zexi
a4e9b38e98 baremetal: fix rebuild root no password 2019-08-13 18:25:33 +08:00
wanyaoqi
0950e68b37 - feature: refact snapshot related code - feature: rbd snapshot - bugfix: ceph cache iso image - delete disk create snapshot and guest create snapshot - fix auto snapshot - fix disk reset 2019-08-13 11:39:08 +08:00
yunion-ci-robot
711bd85227 Merge pull request #2236 from ioito/automated-cherry-pick-of-#2234-upstream-release-2.10.0
Automated cherry pick of #2234: fix: no need to inject password by cloud-init for qcloud
2019-08-12 22:17:06 +08:00
yunion-ci-robot
33941ee95d Merge pull request #2223 from swordqiu/automated-cherry-pick-of-#2222-upstream-release-2.10.0
Automated cherry pick of #2222: fix: when turning off non-default-domain-projects, network public scope should swtich to system scope
2019-08-12 21:57:02 +08:00
ioito
30b9c5ef75 fix: no need to inject password by cloud-init for qcloud 2019-08-12 20:27:41 +08:00
yunion-ci-robot
77c1954267 Merge pull request #2231 from zhasm/automated-cherry-pick-of-#2230-upstream-release-2.10.0
Automated cherry pick of #2230: 对 actionlog 的 tenent_id 字段加索引,提升 actionlog 查询速率
2019-08-12 18:19:02 +08:00
Zhang Dongliang
f2503e1397 对 actionlog 的 tenent_id 字段加索引,提升 actionlog 查询速率 2019-08-12 17:57:24 +08:00
Yousong Zhou
7369d0115f Merge pull request #2204 from ioito/automated-cherry-pick-of-#2202-upstream-release-2.10.0
Automated cherry pick of #2202: fix: sync cloud snapshot size
2019-08-12 13:15:28 +08:00
Qiu Jian
f1ffb294e4 fix: when turning off non-default-domain-projects, network public scope should swtich to system scope 2019-08-12 10:21:05 +08:00
yunion-ci-robot
e78fa8e266 Merge pull request #2220 from zhasm/automated-cherry-pick-of-#2219-upstream-release-2.10.0
Automated cherry pick of #2219: quota-set 新增 secgroup 字段
2019-08-12 09:58:02 +08:00
Zhang Dongliang
aef3d52744 quota-set 新增 secgroup 字段 2019-08-12 09:41:44 +08:00
yunion-ci-robot
c18cd16499 Merge pull request #2213 from yousong/automated-cherry-pick-of-#2211-upstream-release-2.10.0
Automated cherry pick of #2211: lbcluster: 添加wire亲和性质
2019-08-11 14:38:01 +08:00
yunion-ci-robot
818844e7b6 Merge pull request #2218 from yousong/automated-cherry-pick-of-#2216-upstream-release-2.10.0
Automated cherry pick of #2216: circleci: coverage.sh: 改善内存消耗
2019-08-11 14:09:59 +08:00
Yousong Zhou
49b2f07a05 circleci: coverage.sh: 改善内存消耗 2019-08-10 18:37:10 +00:00
Yousong Zhou
dc04a24574 lbcluster: 限定仅管理员可操作 2019-08-10 10:29:05 +00:00
Yousong Zhou
423cb11657 lbcluster: lbcluster-list支持--wire, --zone过滤 2019-08-10 10:29:05 +00:00
Yousong Zhou
a5e797ea37 lbcluster: 添加wire亲和性质 2019-08-10 10:29:05 +00:00
ioito
c671bb5159 fix: sync cloud snapshot size 2019-08-10 16:33:34 +08:00
yunion-ci-robot
017d1c8848 Merge pull request #2201 from yousong/automated-cherry-pick-of-#2199-upstream-release-2.10.0
Automated cherry pick of #2199: vendor: update structarg
2019-08-09 20:03:00 +08:00
Yousong Zhou
ca3223373f climc: 去掉help string中关于choice的内容 2019-08-09 11:09:44 +00:00
Yousong Zhou
1f3646e834 vendor: update structarg 2019-08-09 11:09:44 +00:00
yunion-ci-robot
07bff256c3 Merge pull request #2194 from swordqiu/automated-cherry-pick-of-#2193-upstream-release-2.10.0
Automated cherry pick of #2193: fix: imported esxi VM fail to rebuild root
2019-08-09 09:51:59 +08:00
Qiu Jian
4176a640aa fix: imported esxi VM fail to rebuild root 2019-08-09 01:01:57 +08:00
yunion-ci-robot
223580c6b0 Merge pull request #2187 from ioito/automated-cherry-pick-of-#2186-upstream-release-2.10.0
Automated cherry pick of #2186: fix: lb purge error
2019-08-08 20:06:58 +08:00
ioito
b660e1005e fix: lb purge error 2019-08-08 19:52:09 +08:00
yunion-ci-robot
a74479238a Merge pull request #2183 from tb365/automated-cherry-pick-of-#2181-upstream-release-2.10.0
Automated cherry pick of #2181: cpu core bugfix
2019-08-08 19:49:59 +08:00
TangBin
1a61b48259 cpu core bugfix 2019-08-08 19:38:25 +08:00
yunion-ci-robot
10eadab6dc Merge pull request #2173 from ioito/automated-cherry-pick-of-#2161-upstream-release-2.10.0
Automated cherry pick of #2161: hotfix: sync openstack cup and memory cmtbound
2019-08-08 16:52:58 +08:00
yunion-ci-robot
5df802b58f Merge pull request #2177 from zhasm/automated-cherry-pick-of-#2176-upstream-release-2.10.0
Automated cherry pick of #2176: hotfix: 将 websocket 的 broadcast 接口里 topic 这个必选变量设为位置参数; 其他参数给了默认值,非必填
2019-08-08 16:21:58 +08:00
yunion-ci-robot
6d073c50ff Merge pull request #2164 from wanyaoqi/automated-cherry-pick-of-#2162-upstream-release-2.10.0
Automated cherry pick of #2162: server migrate to different mountpoint storage
2019-08-08 16:15:59 +08:00
Zhang Dongliang
b847fadb31 hotfix: 将 websocket 的 broadcast 接口里 topic 这个必选变量设为位置参数; 其他参数给了默认值,非必填 2019-08-08 15:55:46 +08:00
yunion-ci-robot
2976356bae Merge pull request #2168 from yousong/automated-cherry-pick-of-#2146-upstream-release-2.10.0
Automated cherry pick of #2146: climc: add --output-format support
2019-08-08 15:47:58 +08:00
ioito
190b0fd2cb hotfix: sync openstack cup and memory cmtbound 2019-08-08 11:21:02 +08:00
Yousong Zhou
f233074e29 climc: add --output-format support 2019-08-08 01:51:50 +00:00
wanyaoqi
767a0087fd server migrate to different mountpoint storage 2019-08-07 21:14:48 +08:00
yunion-ci-robot
f35a358980 Merge pull request #2154 from yousong/automated-cherry-pick-of-#2152-upstream-release-2.10.0
Automated cherry pick of #2152: lbagent: 改正unicast vrrp日志记录
2019-08-07 19:17:54 +08:00
yunion-ci-robot
eccd9744cc Merge pull request #2156 from ioito/automated-cherry-pick-of-#2123-upstream-release-2.10.0
Automated cherry pick of #2123: fix: get keypair info fail after rebuild-root
2019-08-07 18:03:43 +08:00
ioito
efd2bf4d63 fix: get keypair info fail after rebuild-root 2019-08-07 17:57:32 +08:00
yunion-ci-robot
ded1501a0f Merge pull request #2151 from ioito/automated-cherry-pick-of-#2149-upstream-release-2.10.0
Automated cherry pick of #2149: fix: not sync zstack deleted disk or instance & secgroup rule sync fix
2019-08-07 17:51:46 +08:00
yunion-ci-robot
25c50a1bc6 Merge pull request #2138 from wanyaoqi/automated-cherry-pick-of-#2136-upstream-release-2.10.0
Automated cherry pick of #2136: fix guest cannot delete
2019-08-07 17:22:38 +08:00
yunion-ci-robot
84b3778cea Merge pull request #2148 from ioito/automated-cherry-pick-of-#2135-upstream-release-2.10.0
Automated cherry pick of #2135: hotfix: essd PerformanceLevel sync
2019-08-07 17:21:38 +08:00
Yousong Zhou
471fd292be lbagent: 改正agent参数变更校验 2019-08-07 09:17:50 +00:00
Yousong Zhou
eb0a083811 lbagent: 改正unicast vrrp日志记录 2019-08-07 09:17:50 +00:00
rex zhasm
a3f5129af0 新增 climc notify-broadcast 接口,用于向所有在线用户发 websocket 通知 (#2132) 2019-08-07 16:43:05 +08:00
ioito
48d08302b4 fix: not sync zstack deleted disk or instance & secgroup rule sync fix 2019-08-07 16:21:05 +08:00
ioito
9104ce8006 hotfix: essd PerformanceLevel sync 2019-08-07 15:39:44 +08:00
yunion-ci-robot
59186f02d7 Merge pull request #2141 from swordqiu/automated-cherry-pick-of-#2140-upstream-release-2.10.0
Automated cherry pick of #2140: fix: auth through disconnected ldap IDP
2019-08-07 10:08:10 +08:00
Qiu Jian
96f40fae1a fix: auth through disconnected ldap IDP 2019-08-07 00:34:24 +08:00
yunion-ci-robot
e1c8d00f56 Merge pull request #2122 from ioito/hotfix/qx-sku-check
fix: 避免从高版本降级到2.10.0后因provider字段改变导致操作不兼容
2019-08-06 23:07:12 +08:00
yunion-ci-robot
285f692c0e Merge pull request #2126 from ioito/automated-cherry-pick-of-#2124-upstream-release-2.10.0
Automated cherry pick of #2124: hotfix: deprecated password auth
2019-08-06 23:06:09 +08:00
yunion-ci-robot
885cbe9ab0 Merge pull request #2119 from yousong/automated-cherry-pick-of-#2117-upstream-release-2.10.0
Automated cherry pick of #2117: lbclusters: 改正删除操作
2019-08-06 23:02:11 +08:00
wanyaoqi
403358a3cd fix guest cannot delete 2019-08-06 21:15:16 +08:00
yunion-ci-robot
3aad589253 Merge pull request #2121 from wanyaoqi/automated-cherry-pick-of-#2114-upstream-release-2.10.0
Automated cherry pick of #2114: misc bugfix
2019-08-06 20:26:09 +08:00
Yousong Zhou
141bf4b796 lbagents: 添加undeploy支持 2019-08-06 12:09:30 +00:00
Yousong Zhou
a2e689f93c lbclusters: 改正删除操作 2019-08-06 12:09:30 +00:00
Yousong Zhou
0cb083f16d climc: lb-create: 允许指定cluster 2019-08-06 12:09:30 +00:00
ioito
5823014d78 hotfix: deprecated password auth 2019-08-06 17:13:40 +08:00
yunion-ci-robot
78a013928a Merge pull request #2116 from tb365/bugfix/tb-bugfix-0807
huawei & aws & ucloud fix
2019-08-06 16:13:07 +08:00
ioito
c9d39dfa07 fix: 避免从高版本降级到2.10.0后因provider字段改变导致操作不兼容 2019-08-06 15:49:13 +08:00
wanyaoqi
bdd2142361 misc bugfix 2019-08-06 15:41:11 +08:00
yunion-ci-robot
6e65714bfc Merge pull request #2106 from swordqiu/automated-cherry-pick-of-#2105-upstream-release-2.10.0
Automated cherry pick of #2105: fix: adjust default policies for system resources
2019-08-06 15:30:09 +08:00
TangBin
d2442542c8 huawei & aws & ucloud fix 2019-08-06 15:21:57 +08:00
yunion-ci-robot
e96b3a9b7f Merge pull request #2111 from yousong/automated-cherry-pick-of-#2109-upstream-release-2.10.0
Automated cherry pick of #2109: lbclusters: 创建时仅允许指定OneCloud Zone
2019-08-06 15:07:09 +08:00
Yousong Zhou
5f574b3eb8 lbclusters: 创建时仅允许指定OneCloud Zone 2019-08-05 12:51:43 +00:00
yunion-ci-robot
7b6ed86554 Merge pull request #2099 from wanyaoqi/automated-cherry-pick-of-#2097-upstream-release-2.10.0
Automated cherry pick of #2097: secgroups get distinct tenant
2019-08-05 19:59:09 +08:00
yunion-ci-robot
4b6ed22608 Merge pull request #2096 from ioito/automated-cherry-pick-of-#2094-upstream-release-2.10.0
Automated cherry pick of #2094: hotfix: change order_by=guest -> order_by=guest_cnt
2019-08-05 19:51:08 +08:00
Qiu Jian
2214d29439 fix: adjust default policies for system resources 2019-08-05 18:58:39 +08:00
wanyaoqi
079144785a secgroups get distinct tenant 2019-08-05 12:03:46 +08:00
ioito
cf2a296d64 hotfix: change order_by=guest -> order_by=guest_cnt 2019-08-05 11:26:31 +08:00
yunion-ci-robot
a7684ca36f Merge pull request #2084 from ioito/automated-cherry-pick-of-#2082-upstream-release-2.10.0
Automated cherry pick of #2082: fix: get openstack all customize storage type
2019-08-02 20:16:05 +08:00
ioito
54ec7b453f fix: get openstack all customize storage type 2019-08-02 20:10:20 +08:00
yunion-ci-robot
956584b37c Merge pull request #2091 from yousong/automated-cherry-pick-of-#2089-upstream-release-2.10.0
Automated cherry pick of #2089: ansibleserver: 操作宿主机时默认使用用户root
2019-08-02 12:14:04 +08:00
yunion-ci-robot
515a371228 Merge pull request #2078 from wanyaoqi/automated-cherry-pick-of-#2060-upstream-release-2.10.0
Automated cherry pick of #2060: support get model distinct field
2019-08-02 12:13:04 +08:00
Yousong Zhou
6960fd1797 ansibleserver: 操作宿主机时默认使用用户root 2019-08-02 04:01:59 +00:00
yunion-ci-robot
bcf818f9d2 Merge pull request #2081 from ioito/automated-cherry-pick-of-#2079-upstream-release-2.10.0
Automated cherry pick of #2079: fix: cloudaccount and cloudprovider not in same domain
2019-08-01 22:23:04 +08:00
ioito
768cd4310f fix: cloudaccount and cloudprovider not in same domain 2019-08-01 21:58:56 +08:00
wanyaoqi
647dd4a6d4 support get model distinct field 2019-08-01 21:58:51 +08:00
yunion-ci-robot
dc53e5a113 Merge pull request #2069 from ioito/automated-cherry-pick-of-#2067-upstream-release-2.10.0
Automated cherry pick of #2067: fix: zstack create tcp udp secgroup rule error
2019-08-01 17:32:03 +08:00
yunion-ci-robot
750547fd00 Merge pull request #2066 from ioito/automated-cherry-pick-of-#2064-upstream-release-2.10.0
Automated cherry pick of #2064: hotfix: change params from order_by_cache=asc|desc to order_by=cache & order=asc|desc
2019-08-01 17:31:02 +08:00
yunion-ci-robot
2dd58236b2 Merge pull request #2050 from ioito/automated-cherry-pick-of-#2048-upstream-release-2.10.0
Automated cherry pick of #2048: fix: openstack glance image-list not list all images
2019-08-01 16:55:02 +08:00
yunion-ci-robot
bd02a4768d Merge pull request #2053 from swordqiu/automated-cherry-pick-of-#2051-upstream-release-2.10.0
Automated cherry pick of #2051: fix: 1. project quota-list not include domain quota 2. do not check conformance between project and domain quota
2019-08-01 16:47:02 +08:00
yunion-ci-robot
312b1e08a6 Merge pull request #2074 from wanyaoqi/automated-cherry-pick-of-#2072-upstream-release-2.10.0
Automated cherry pick of #2072: remove host rpm requre
2019-08-01 16:45:01 +08:00
wanyaoqi
cbdca56aff remove host rpm requre 2019-08-01 15:54:16 +08:00
yunion-ci-robot
24c6698e88 Merge pull request #2058 from swordqiu/automated-cherry-pick-of-#2057-upstream-release-2.10.0
Automated cherry pick of #2057: fix: server-list add is_prepaid_recycle field
2019-08-01 15:20:04 +08:00
ioito
b4ddd96a53 fix: zstack create tcp udp secgroup rule error 2019-07-31 22:05:16 +08:00
ioito
b8e00276e1 hotfix: change params from order_by_cache=asc|desc to order_by=cache & order=asc|desc 2019-07-31 21:46:16 +08:00
Qiu Jian
3fcee0953d fix: server-list add is_prepaid_recycle field 2019-07-31 18:32:53 +08:00
Qiu Jian
2f6573f6cd fix: 1. project quota-list not include domain quota 2. do not check conformance between project and domain quota 2019-07-31 17:52:55 +08:00
ioito
e8f9dcde2f fix: openstack glance image-list not list all images 2019-07-31 17:21:56 +08:00
yunion-ci-robot
d4a74e37e3 Merge pull request #2042 from wanyaoqi/automated-cherry-pick-of-#2040-upstream-release-2.10.0
Automated cherry pick of #2040: fix guest get host wire from network
2019-07-31 15:58:00 +08:00
yunion-ci-robot
8faf89aa3e Merge pull request #2028 from ioito/automated-cherry-pick-of-#2026-upstream-release-2.10.0
Automated cherry pick of #2026: fix: zstack system disk resize
2019-07-31 15:57:00 +08:00
yunion-ci-robot
e997f0b30f Merge pull request #2039 from yousong/automated-cherry-pick-of-#2037-upstream-release-2.10.0
Automated cherry pick of #2037: lbagents: 为influxdb_output_url设定默认值
2019-07-31 15:56:00 +08:00
yunion-ci-robot
cc09416c69 Merge pull request #2025 from ioito/automated-cherry-pick-of-#2001-upstream-release-2.10.0
Automated cherry pick of #2001: hotfix: validate resize disk when change config
2019-07-31 15:55:00 +08:00
yunion-ci-robot
4c3e3b82d0 Merge pull request #2021 from ioito/automated-cherry-pick-of-#1982-upstream-release-2.10.0
Automated cherry pick of #1982: fix: rbd image resize not found error
2019-07-31 15:53:59 +08:00
yunion-ci-robot
b5ecddb982 Merge pull request #2045 from wanyaoqi/automated-cherry-pick-of-#2043-upstream-release-2.10.0
Automated cherry pick of #2043: guest export keys add zone
2019-07-31 15:51:01 +08:00
wanyaoqi
ec1728362b guest export keys add zone 2019-07-31 15:44:15 +08:00
wanyaoqi
fdd0839eac fix guest get host wire from network 2019-07-31 14:33:39 +08:00
Yousong Zhou
0aca38fb48 lbagents: details=true时显示cluster的名称 2019-07-31 03:16:20 +00:00
Yousong Zhou
28934f0c20 lbagents: 为influxdb_output_url设定默认值 2019-07-31 03:16:20 +00:00
yunion-ci-robot
0c902764dc Merge pull request #2019 from wanyaoqi/automated-cherry-pick-of-#2017-upstream-release-2.10.0
Automated cherry pick of #2017: fix list order by
2019-07-31 02:23:57 +08:00
yunion-ci-robot
c8a0843fbc Merge pull request #2013 from Zexi/automated-cherry-pick-of-#2011-upstream-release-2.10.0
Automated cherry pick of #2011: region capability: fix regional public network not found
2019-07-31 02:21:58 +08:00
yunion-ci-robot
4a8477f86d Merge pull request #2036 from wanyaoqi/automated-cherry-pick-of-#2034-upstream-release-2.10.0
Automated cherry pick of #2034: remove telegraf config retention_policy
2019-07-30 22:05:59 +08:00
yunion-ci-robot
32c4051c02 Merge pull request #2033 from ioito/automated-cherry-pick-of-#2029-upstream-release-2.10.0
Automated cherry pick of #2029: fix: avoid region2 panic when update openstack storage
2019-07-30 22:00:58 +08:00
wanyaoqi
99f9b94bcd remove telegraf config retention_policy 2019-07-30 22:00:55 +08:00
ioito
f3aba2ef1c fix: avoid region2 panic when update openstack storage 2019-07-30 20:51:42 +08:00
ioito
62391c740c fix: zstack system disk resize 2019-07-30 19:30:45 +08:00
ioito
a20bdb1339 hotfix: validate resize disk when change config 2019-07-30 19:16:14 +08:00
ioito
62d7ffaac8 fix: rbd image resize not found error 2019-07-30 19:10:19 +08:00
wanyaoqi
68ba504ef7 fix list order by 2019-07-30 18:23:02 +08:00
yunion-ci-robot
9ffc238ac3 Merge pull request #2016 from Zexi/automated-cherry-pick-of-#2014-upstream-release-2.10.0
Automated cherry pick of #2014: region: fix server create input params not correct when detach sub resource
2019-07-30 18:14:34 +08:00
Zexi
4ebd7d7d03 region: fix server create input params not correct when detach sub resource 2019-07-30 18:09:00 +08:00
Zexi
5b1c852203 region capability: fix regional public network not found 2019-07-30 17:32:57 +08:00
yunion-ci-robot
5e6e00e6f7 Merge pull request #1987 from swordqiu/automated-cherry-pick-of-#1986-upstream-release-2.10.0
Automated cherry pick of #1986: fix: init sysadmin as system user
2019-07-30 16:50:32 +08:00
yunion-ci-robot
116a6bd9c4 Merge pull request #2003 from tb365/automated-cherry-pick-of-#2002-upstream-release-2.10.0
Automated cherry pick of #2002: copyright update climc fix
2019-07-30 13:59:32 +08:00
yunion-ci-robot
91024d62ce Merge pull request #1995 from tb365/automated-cherry-pick-of-#1994-upstream-release-2.10.0
Automated cherry pick of #1994: huawei rebuild root fix
2019-07-30 13:56:32 +08:00
yunion-ci-robot
6825457676 Merge pull request #2007 from ioito/automated-cherry-pick-of-#2005-upstream-release-2.10.0
Automated cherry pick of #2005: fix: add priority for openstack secgroup rule priority
2019-07-30 12:56:33 +08:00
yunion-ci-robot
5eec952d63 Merge pull request #1991 from ioito/automated-cherry-pick-of-#1989-upstream-release-2.10.0
Automated cherry pick of #1989: fix: qcloud reserved first, second and last ip for internal connection
2019-07-30 12:23:32 +08:00
yunion-ci-robot
fe086d41c2 Merge pull request #1999 from swordqiu/automated-cherry-pick-of-#1998-upstream-release-2.10.0
Automated cherry pick of #1998: fix: managed instance password not correct when deploy with keypair
2019-07-30 11:54:32 +08:00
ioito
46975fe5e0 fix: add priority for openstack secgroup rule priority 2019-07-30 11:50:34 +08:00
yunion-ci-robot
68a597cd96 Merge pull request #1985 from ioito/automated-cherry-pick-of-#1983-upstream-release-2.10.0
Automated cherry pick of #1983: fix: allow normal user create prepaid resource
2019-07-30 11:32:32 +08:00
TangBin
6ce2a174df copyright update climc fix 2019-07-30 11:14:28 +08:00
Qiu Jian
4a2ec7a7c1 fix: managed instance password not correct when deploy with keypair 2019-07-29 20:48:36 +08:00
TangBin
19873ff4c6 huawei rebuild root fix 2019-07-29 20:37:42 +08:00
ioito
3ae818d789 fix: qcloud reserved first, second and last ip for internal connection 2019-07-29 20:03:21 +08:00
Qiu Jian
9413360114 fix: init sysadmin as system user 2019-07-29 17:31:18 +08:00
ioito
e41b3ae2c4 fix: allow normal user create prepaid resource 2019-07-29 16:46:12 +08:00
yunion-ci-robot
18a73464f8 Merge pull request #1981 from wanyaoqi/automated-cherry-pick-of-#1979-upstream-release-2.10.0
Automated cherry pick of #1979: fix server purge
2019-07-29 15:19:31 +08:00
wanyaoqi
90d3e978ad fix server purge 2019-07-29 15:16:20 +08:00
yunion-ci-robot
a2eeaf7693 Merge pull request #1974 from swordqiu/hotfix/qj-turn-on-non-default-domain-projects-2.10
fix: turn on non-default-domain-projects by default at 2.10
2019-07-27 21:33:28 +08:00
Qiu Jian
7fc9447625 fix: turn on non-default-domain-projects by default at 2.10 2019-07-27 21:29:37 +08:00
yunion-ci-robot
8309dd0083 Merge pull request #1972 from swordqiu/automated-cherry-pick-of-#1969-upstream-release-2.10.0
Automated cherry pick of #1969: fix: server create eip quota check error
2019-07-27 21:28:29 +08:00
Qiu Jian
b632f26e39 fix: server create eip quota check error 2019-07-27 20:35:59 +08:00
yunion-ci-robot
ca14a256c7 Merge pull request #1968 from ioito/automated-cherry-pick-of-#1965-upstream-release-2.10.0
Automated cherry pick of #1965: 支持设置ceph精准超时时间
2019-07-27 18:58:29 +08:00
ioito
ae3ee5ae44 支持设置ceph精准超时时间 2019-07-27 18:49:41 +08:00
yunion-ci-robot
6f394545c2 Merge pull request #1964 from tb365/automated-cherry-pick-of-#1962-upstream-release-2.10.0
Automated cherry pick of #1962: add copyright api climc
2019-07-27 18:48:28 +08:00
TangBin
c77d7ead65 add copyright api climc 2019-07-27 16:52:58 +08:00
Qiu Jian
3971bf6a30 fix: allow turn off non-default domain projects 2019-07-27 15:52:11 +08:00
yunion-ci-robot
b775c58a2a Merge pull request #1956 from yousong/automated-cherry-pick-of-#1954-upstream-release-2.10.0
Automated cherry pick of #1954: ansibleplaybooks: 改正输出溢出时的记录
2019-07-27 09:59:07 +08:00
Yousong Zhou
87956baac9 ansibleplaybooks: 改正输出溢出时的记录 2019-07-27 01:14:07 +00:00
yunion-ci-robot
7af63125cb Merge pull request #1953 from yousong/automated-cherry-pick-of-#1951-upstream-release-2.10.0
Automated cherry pick of #1951: ansibleplaybooks: 改正启动失败问题
2019-07-27 00:36:06 +08:00
yunion-ci-robot
2f027684eb Merge pull request #1948 from wanyaoqi/automated-cherry-pick-of-#1946-upstream-release-2.10.0
Automated cherry pick of #1946: bugfix:
2019-07-27 00:33:07 +08:00
yunion-ci-robot
c0cd3245c8 Merge pull request #1944 from tb365/automated-cherry-pick-of-#1942-upstream-release-2.10.0
Automated cherry pick of #1942: 华为 & ucloud fix
2019-07-27 00:27:09 +08:00
Yousong Zhou
459915e4ce ansibleplaybooks: 增量式记录输出 2019-07-26 15:25:15 +00:00
Yousong Zhou
415584d63d pkg: ansible: 支持指定OutputWriter 2019-07-26 15:25:15 +00:00
Yousong Zhou
4669d91610 ansibleplaybooks: Output字段使用mediumtext 2019-07-26 15:25:15 +00:00
Yousong Zhou
95399ecc2c ansibleplaybooks: 改正启动失败问题 2019-07-26 15:25:15 +00:00
wanyaoqi
86b41420a8 bugfix:
- storage cache iso
- guest start on host
2019-07-26 19:47:42 +08:00
yunion-ci-robot
1b9faa7411 Merge pull request #1941 from yousong/automated-cherry-pick-of-#1939-upstream-release-2.10.0
Automated cherry pick of #1939: lbbackends: 若backend guest已删除getVpc返回空且不报错
2019-07-26 18:13:08 +08:00
TangBin
c0b4dc804c huawei rebuild root fix 2019-07-26 18:10:28 +08:00
TangBin
31494ccc22 华为 & ucloud fix 2019-07-26 18:10:28 +08:00
Yousong Zhou
6fe98f7d58 lbbackends: 若backend guest已删除getVpc返回空且不报错 2019-07-26 08:53:07 +00:00
yunion-ci-robot
167f180d2f Merge pull request #1912 from ioito/automated-cherry-pick-of-#1910-upstream-release-2.10.0
Automated cherry pick of #1910: fix: 避免镜像同步到私有云自定义镜像里面
2019-07-26 15:31:09 +08:00
yunion-ci-robot
484772b6c6 Merge pull request #1934 from yousong/automated-cherry-pick-of-#1932-upstream-release-2.10.0
Automated cherry pick of #1932: vendor: update yunion.io/x/pkg
2019-07-26 15:20:08 +08:00
yunion-ci-robot
e06b62e667 Merge pull request #1928 from swordqiu/automated-cherry-pick-of-#1927-upstream-release-2.10.0
Automated cherry pick of #1927: fix: not trauncating task errors
2019-07-26 13:32:10 +08:00
yunion-ci-robot
e35791c955 Merge pull request #1925 from swordqiu/automated-cherry-pick-of-#1924-upstream-release-2.10.0
Automated cherry pick of #1924: fix: server-create may timeout if external image used
2019-07-26 13:31:11 +08:00
yunion-ci-robot
e146e387c1 Merge pull request #1917 from Zexi/automated-cherry-pick-of-#1915-upstream-release-2.10.0
Automated cherry pick of #1915: baremetal: mkfs.ext4 add '-T largefile' option
2019-07-26 13:09:06 +08:00
yunion-ci-robot
dc1d9a6860 Merge pull request #1936 from Zexi/automated-cherry-pick-of-#1935-upstream-release-2.10.0
Automated cherry pick of #1935: region: fix server create params missing data
2019-07-26 12:54:09 +08:00
Zexi
4073d03390 region: fix server create params missing data 2019-07-26 12:51:40 +08:00
Yousong Zhou
1c08a0090a vendor: update yunion.io/x/pkg 2019-07-26 03:47:18 +00:00
yunion-ci-robot
8754468a8e Merge pull request #1920 from yousong/automated-cherry-pick-of-#1918-upstream-release-2.10.0
Automated cherry pick of #1918: lbagents: 加强vrrp校验
2019-07-25 22:39:05 +08:00
Qiu Jian
b0fe78e1aa fix: not trauncating task errors 2019-07-25 22:28:45 +08:00
Qiu Jian
c202412aa3 fix: server-create may timeout if external image used 2019-07-25 21:32:42 +08:00
Yousong Zhou
b2aec39331 lbagents: 加强vrrp校验
- 同cluster中的lbagent
   - vrrp virtual_router_id, preempt, pass必须相同
   - vrrp priority必须不同
 - 同zone不同cluster中的lbagent
   - vrrp virtual_router_id必须相同
 - 创建时若不满足以上条件,则创建失败
 - 更新参数时同时更新同cluster的peer lbagents
2019-07-25 10:53:59 +00:00
Zexi
2c09bf913f baremetal: mkfs.ext4 add '-T largefile' option 2019-07-25 17:12:27 +08:00
ioito
8bb9ebc581 fix: 避免镜像同步到私有云自定义镜像里面 2019-07-25 14:40:40 +08:00
yunion-ci-robot
be14fa6a2c Merge pull request #1907 from swordqiu/automated-cherry-pick-of-#1906-upstream-release-2.10.0
Automated cherry pick of #1906: fix: climc image-public parameter fix
2019-07-25 14:25:13 +08:00
yunion-ci-robot
dfa0afbb84 Merge pull request #1903 from swordqiu/automated-cherry-pick-of-#1902-upstream-release-2.10.0
Automated cherry pick of #1902: fix: role assignments list should include matched policies
2019-07-25 14:24:07 +08:00
yunion-ci-robot
610144a4af Merge pull request #1909 from ioito/automated-cherry-pick-of-#1467-upstream-release-2.10.0
Automated cherry pick of #1467: fix create disk scheduler failed
2019-07-25 11:05:05 +08:00
ioito
8257680548 fix create disk scheduler failed 2019-07-25 10:19:29 +08:00
Qiu Jian
9c0f446754 fix: climc image-public parameter fix 2019-07-25 10:16:31 +08:00
Qiu Jian
574df5a0a3 fix: role assignments list should include matched policies 2019-07-25 02:31:14 +08:00
yunion-ci-robot
faf68a098f Merge pull request #1887 from swordqiu/automated-cherry-pick-of-#1885-upstream-release-2.10.0
Automated cherry pick of #1885: fix: validate info when importing ldap user/group/domain
2019-07-24 16:06:06 +08:00
Qiu Jian
03a18fc797 fix: validate info when importing ldap user/group/domain 2019-07-24 16:02:02 +08:00
Jian Qiu
ff52ab86b1 fix: import errors (#1884) 2019-07-24 15:44:01 +08:00
yunion-ci-robot
e74644a62c Merge pull request #1881 from swordqiu/automated-cherry-pick-of-#1880-upstream-release-2.10.0
Automated cherry pick of #1880: fix: server-logininfo rpc include login_key
2019-07-24 13:26:09 +08:00
Qiu Jian
9412eb081b fix: server-logininfo rpc include login_key 2019-07-24 13:16:26 +08:00
yunion-ci-robot
3a69cf0bcf Merge pull request #1879 from wanyaoqi/automated-cherry-pick-of-#1877-upstream-release-2.10.0
Automated cherry pick of #1877: fix glance list share resource
2019-07-24 12:33:05 +08:00
wanyaoqi
04d825c291 fix glance list share resource 2019-07-24 11:56:54 +08:00
yunion-ci-robot
cd33bc8208 Merge pull request #1864 from ioito/automated-cherry-pick-of-#1860-upstream-release-2.10.0
Automated cherry pick of #1860: 添加同步安全组日志
2019-07-24 09:36:07 +08:00
yunion-ci-robot
06f225e183 Merge pull request #1868 from swordqiu/automated-cherry-pick-of-#1867-upstream-release-2.10.0
Automated cherry pick of #1867: fix: clear pending-delete when sched_fail
2019-07-24 09:34:07 +08:00
yunion-ci-robot
147a553383 Merge pull request #1873 from swordqiu/automated-cherry-pick-of-#1872-upstream-release-2.10.0
Automated cherry pick of #1872: fix: keystone user initialization hit empty extra
2019-07-24 09:25:05 +08:00
Qiu Jian
2bd905f92e fix: keystone user initialization hit empty extra 2019-07-24 09:15:33 +08:00
Qiu Jian
acd530708c fix: clear pending-delete when sched_fail 2019-07-23 23:47:58 +08:00
yunion-ci-robot
9fb63372e2 Merge pull request #1858 from swordqiu/automated-cherry-pick-of-#1857-upstream-release-2.10.0
Automated cherry pick of #1857: fix: esxi change instanceType failed as ChangeConfig2 not implemented
2019-07-23 22:13:07 +08:00
ioito
1bf7152cda 避免重复设置同一vpc底下不同安全组externalId 2019-07-23 21:54:43 +08:00
ioito
6c2a89c277 添加同步安全组日志 2019-07-23 21:54:43 +08:00
Qiu Jian
8f30927648 fix: esxi change instanceType failed as ChangeConfig2 not implemented 2019-07-23 21:15:52 +08:00
yunion-ci-robot
c4f6f51fe4 Merge pull request #1854 from wanyaoqi/automated-cherry-pick-of-#1852-upstream-release-2.10.0
Automated cherry pick of #1852: fix baremetal attach network
2019-07-23 21:06:05 +08:00
yunion-ci-robot
02b08ec8d1 Merge pull request #1856 from ioito/automated-cherry-pick-of-#1840-upstream-release-2.10.0
Automated cherry pick of #1840: 卸载磁盘时忽略云上磁盘已经被删除的错误
2019-07-23 20:17:05 +08:00
yunion-ci-robot
454e53a4f6 Merge pull request #1847 from ioito/automated-cherry-pick-of-#1829-upstream-release-2.10.0
Automated cherry pick of #1829: 避免cacheimage refresh时同步azure镜像信息异常
2019-07-23 18:43:05 +08:00
ioito
cbffbd942a 卸载磁盘时忽略云上磁盘已经被删除的错误 2019-07-23 18:35:33 +08:00
wanyaoqi
e3ec65ad32 fix baremetal attach network 2019-07-23 18:18:54 +08:00
yunion-ci-robot
15a429f6fe Merge pull request #1851 from wanyaoqi/automated-cherry-pick-of-#1843-upstream-release-2.10.0
Automated cherry pick of #1843: bugfix: baremetal import , guest panic notify
2019-07-23 18:18:05 +08:00
wanyaoqi
c065876fe0 bugfix: baremetal import , guest panic notify
- reset baremetal access ip on baremetal rebuild
- add guest panic notify template
2019-07-23 16:15:50 +08:00
ioito
238ea67443 避免cacheimage refresh时同步azure镜像信息异常 2019-07-23 15:05:59 +08:00
yunion-ci-robot
90b08721fc Merge pull request #1838 from wanyaoqi/automated-cherry-pick-of-#1837-upstream-release-2.10.0
Automated cherry pick of #1837: fix guest check quota on change config
2019-07-23 12:06:08 +08:00
yunion-ci-robot
567a32ab27 Merge pull request #1834 from ioito/automated-cherry-pick-of-#1832-upstream-release-2.10.0
Automated cherry pick of #1832: 避免因cloudprovider disable导致账号同步失效
2019-07-23 12:03:06 +08:00
yunion-ci-robot
1d8b232439 Merge pull request #1826 from ioito/automated-cherry-pick-of-#1820-upstream-release-2.10.0
Automated cherry pick of #1820: 仅忽略 no such service错误,否则以最新api结果为准
2019-07-23 11:59:05 +08:00
wanyaoqi
9e2ad488e6 fix guest check quota on change config 2019-07-22 21:18:13 +08:00
ioito
a469547219 避免因cloudprovider disable导致账号同步失效 2019-07-22 20:04:48 +08:00
Zexi Li
88eff95c97 Merge pull request #1830 from Zexi/automated-cherry-pick-of-#1823-upstream-release-2.10.0
Automated cherry pick of #1823: fix: node count for a virtualized host is always 1
2019-07-22 19:16:07 +08:00
Qiu Jian
2c0bbb8e86 fix: node count for a virtualized host is always 1 2019-07-22 19:15:10 +08:00
ioito
4f8b2b3d68 仅忽略 no such service错误,否则以最新api结果为准 2019-07-22 10:11:32 +08:00
yunion-ci-robot
1cb396f94c Merge pull request #1816 from swordqiu/automated-cherry-pick-of-#1815-upstream-release-2.10.0
Automated cherry pick of #1815: fix: image add is_standard field, filter by is_standard=false|true
2019-07-22 10:04:05 +08:00
yunion-ci-robot
74ff996a65 Merge pull request #1705 from wanyaoqi/automated-cherry-pick-of-#1689-upstream-release-2.10.0
Automated cherry pick of #1689: auto create subnet on host register
2019-07-20 13:32:04 +08:00
yunion-ci-robot
7f4ee2091b Merge pull request #1802 from tb365/automated-cherry-pick-of-#1801-upstream-release-2.10.0
Automated cherry pick of #1801: ucloud bugfix
2019-07-19 15:40:05 +08:00
TangBin
b13b8629a6 ucloud bugfix 2019-07-19 15:34:06 +08:00
wanyaoqi
85fa9ac2bd auto create subnet on host register 2019-07-19 15:30:56 +08:00
Qiu Jian
b221a5c300 fix: image add is_standard field, filter by is_standard=false|true 2019-07-19 15:13:21 +08:00
yunion-ci-robot
69fa66af2a Merge pull request #1814 from wanyaoqi/automated-cherry-pick-of-#1812-upstream-release-2.10.0
Automated cherry pick of #1812: host reload telegraf
2019-07-19 11:40:03 +08:00
wanyaoqi
e253031949 host reload telegraf 2019-07-19 11:37:25 +08:00
yunion-ci-robot
ab762eaece Merge pull request #1810 from Zexi/automated-cherry-pick-of-#1808-upstream-release-2.10.0
Automated cherry pick of #1808: scheduler: esxi and zstack hypervisor do cpu and memory filter
2019-07-19 00:50:04 +08:00
yunion-ci-robot
94f27f7937 Merge pull request #1807 from ioito/automated-cherry-pick-of-#1805-upstream-release-2.10.0
Automated cherry pick of #1805: 允许更改openstack存储容量
2019-07-19 00:46:02 +08:00
Zexi
34c267bc22 scheduler: esxi and zstack hypervisor do cpu and memory filter 2019-07-18 20:26:56 +08:00
ioito
5db7002fcc 允许更改openstack存储容量 2019-07-18 19:44:41 +08:00
yunion-ci-robot
64b5c9c229 Merge pull request #1795 from ioito/automated-cherry-pick-of-#1761-upstream-release-2.10.0
Automated cherry pick of #1761: 添加lb eip同步
2019-07-18 15:43:58 +08:00
yunion-ci-robot
fd9570c7b9 Merge pull request #1798 from ioito/automated-cherry-pick-of-#1796-upstream-release-2.10.0
Automated cherry pick of #1796: 提高openstack创建windows机器成功率
2019-07-18 15:39:00 +08:00
ioito
931192cef3 提高openstack创建windows机器成功率 2019-07-18 15:05:57 +08:00
ioito
1e27e5486a 添加lb eip同步 2019-07-18 14:56:32 +08:00
yunion-ci-robot
1582760284 Merge pull request #1790 from swordqiu/automated-cherry-pick-of-#1789-upstream-release-2.10.0
Automated cherry pick of #1789: fix: server change owner did not change disk's owner
2019-07-18 14:18:01 +08:00
yunion-ci-robot
4579b98c8d Merge pull request #1788 from wanyaoqi/automated-cherry-pick-of-#1786-upstream-release-2.10.0
Automated cherry pick of #1786: disk reset set server status
2019-07-18 14:10:59 +08:00
Qiu Jian
e7336217bc fix: server change owner did not change disk's owner 2019-07-18 14:05:21 +08:00
wanyaoqi
04be9cf8d6 disk reset set server status 2019-07-18 11:38:16 +08:00
Zexi Li
f4c655125b Merge pull request #1784 from Zexi/automated-cherry-pick-of-#1783-upstream-release-2.10.0
Automated cherry pick of #1783: glance: fix duplicate data for node db_stats
2019-07-18 10:47:42 +08:00
Zexi
7307d0d5d0 glance: fix duplicate data for node db_stats 2019-07-18 10:46:55 +08:00
yunion-ci-robot
e1c20e6e8e Merge pull request #1781 from Zexi/automated-cherry-pick-of-#1779-upstream-release-2.10.0
Automated cherry pick of #1779: baremetal: fix msdos last primary partition not resized
2019-07-17 22:16:58 +08:00
Zexi
def2f6be96 baremetal: fix msdos last primary partition not resized 2019-07-17 22:09:15 +08:00
yunion-ci-robot
4833fbdea8 Merge pull request #1777 from swordqiu/automated-cherry-pick-of-#1776-upstream-release-2.10.0
Automated cherry pick of #1776: fix: allow access mcclient serviceCatalog
2019-07-17 21:30:59 +08:00
yunion-ci-robot
c8d8ad6c5d Merge pull request #1767 from swordqiu/automated-cherry-pick-of-#1766-upstream-release-2.10.0
Automated cherry pick of #1766: fix: allow project creating prepaid servers
2019-07-17 21:29:01 +08:00
Qiu Jian
7ee238bd11 fix: allow access mcclient serviceCatalog 2019-07-17 21:14:41 +08:00
yunion-ci-robot
11a8b36b83 Merge pull request #1757 from Zexi/automated-cherry-pick-of-#1756-upstream-release-2.10.0
Automated cherry pick of #1756: region: server order by account and remove models stale comments
2019-07-17 21:11:57 +08:00
yunion-ci-robot
dee229479d Merge pull request #1747 from wanyaoqi/automated-cherry-pick-of-#1745-upstream-release-2.10.0
Automated cherry pick of #1745: fix deploy network with routes
2019-07-17 21:03:57 +08:00
yunion-ci-robot
8f94a94bfb Merge pull request #1771 from Zexi/automated-cherry-pick-of-#1770-upstream-release-2.10.0
Automated cherry pick of #1770: scheduler: schedtag predicate match resources then do filter
2019-07-17 13:48:58 +08:00
yunion-ci-robot
d7bff5c755 Merge pull request #1765 from Zexi/automated-cherry-pick-of-#1763-upstream-release-2.10.0
Automated cherry pick of #1763: service db init sync exit
2019-07-17 13:45:59 +08:00
Zexi
4915e8deb8 scheduler: schedtag predicate match resources then do filter 2019-07-17 13:21:47 +08:00
Qiu Jian
fa702f4745 fix: allow project creating prepaid servers 2019-07-16 19:43:26 +08:00
Zexi
9d9c217ffd db: app service support --exit-after-db-init 2019-07-16 19:16:36 +08:00
Zexi
efe9ee5c5c service db init sync exit 2019-07-16 19:16:36 +08:00
yunion-ci-robot
d1bb9231f2 Merge pull request #1755 from Zexi/automated-cherry-pick-of-#1753-upstream-release-2.10.0
Automated cherry pick of #1753: region: fix baremetal specs not found when domain_id specify
2019-07-16 16:59:59 +08:00
Zexi
9e019aa55c region: server order by account and remove models stale comments 2019-07-16 16:10:47 +08:00
yunion-ci-robot
927574fac1 Merge pull request #1737 from wanyaoqi/automated-cherry-pick-of-#1735-upstream-release-2.10.0
Automated cherry pick of #1735: add verify storage mount point
2019-07-16 12:52:58 +08:00
wanyaoqi
05b9cdcbad add verify storage mount point 2019-07-16 11:35:14 +08:00
wanyaoqi
5d6a725d6c fix deploy network with routes 2019-07-16 11:14:43 +08:00
Zexi
eaacbe40ea region: fix baremetal specs not found when domain_id specify 2019-07-16 11:14:10 +08:00
yunion-ci-robot
eb730e3981 Merge pull request #1751 from Zexi/automated-cherry-pick-of-#1717-upstream-release-2.10.0
Automated cherry pick of #1717: host 相关的 rpm 包自动添加 systemd unit service 文件
2019-07-16 11:07:58 +08:00
Zexi
e2c886ba4d host 相关的 rpm 包自动添加 systemd unit service 文件 2019-07-16 10:26:14 +08:00
yunion-ci-robot
e1623368be Merge pull request #1740 from wanyaoqi/automated-cherry-pick-of-#1738-upstream-release-2.10.0
Automated cherry pick of #1738: host listen before register
2019-07-15 23:48:00 +08:00
yunion-ci-robot
79ef325360 Merge pull request #1749 from swordqiu/automated-cherry-pick-of-#1748-upstream-release-2.10.0
Automated cherry pick of #1748: fix: server-change-ipaddr may ignore errors when changing ipaddr
2019-07-15 23:37:01 +08:00
Qiu Jian
652cc46123 fix: server-change-ipaddr may ignore errors when changing ipaddr 2019-07-15 23:00:09 +08:00
yunion-ci-robot
daf7892a27 Merge pull request #1734 from yousong/automated-cherry-pick-of-#1732-upstream-release-2.10.0
Automated cherry pick of #1732: lb: 将lb.backendgroup视为弱引用
2019-07-15 22:17:58 +08:00
yunion-ci-robot
f2d7181386 Merge pull request #1743 from ioito/automated-cherry-pick-of-#1741-upstream-release-2.10.0
Automated cherry pick of #1741: 避免设置disable的cloudproviderregion状态
2019-07-15 21:36:59 +08:00
ioito
8a743b20fa 避免设置disable的cloudproviderregion状态 2019-07-15 16:42:20 +08:00
wanyaoqi
be166937b2 host listen before register 2019-07-15 16:05:10 +08:00
Yousong Zhou
5de506effc lb: 将lb.backendgroup视为弱引用 2019-07-15 05:01:09 +00:00
yunion-ci-robot
3b56ca9dc1 Merge pull request #1730 from yousong/automated-cherry-pick-of-#1729-release-2.10.0
Automated cherry pick of #1729: .circleci: 改进test执行
2019-07-15 12:40:59 +08:00
Yousong Zhou
7b1190735f .circleci: 改进test执行
避免go test执行两次

避免因push到codecov失败造成测试失败

  1457 @@ -10576,5 +10576,33 @@ yunion.io/x/onecloud/pkg/webconsole/comm
  1458  yunion.io/x/onecloud/pkg/webconsole/command/ssh_command.go:147:                        GetData
  1459  yunion.io/x/onecloud/pkg/webconsole/command/ssh_command.go:164:                        ShowInf
  1460  total:                                                                         (statements)
  1461 -Push /tmp/coverage.8mKa1lRFeG/profile.out to codecov.io^M
  1462 -Exited with code 7
  1463 \ No newline at end of file
  1464 +Push /tmp/coverage.GrWO8OlTrX/profile.out to codecov.io^M
  1465 +^M
  1466 +  _____          _^M
  1467 + / ____|        | |^M
  1468 +| |     ___   __| | ___  ___ _____   __^M
  1469 +| |    / _ \ / _` |/ _ \/ __/ _ \ \ / /^M
  1470 +| |___| (_) | (_| |  __/ (_| (_) \ V /^M
  1471 + \_____\___/ \__,_|\___|\___\___/ \_/^M
  1472 +                              Bash-8a28df4^M
  1473 +^M
  1474 +^M
  1475 +==> Circle CI detected.^M
  1476 +    project root: .^M
  1477 +--> token set from env^M
  1478 +    Yaml found at: vendor/github.com/gin-gonic/gin/codecov.yml^M
  1479 +    -> Found 1 reports^M
  1480 +==> Detecting git/mercurial file structure^M
  1481 +==> Reading reports^M
  1482 +    + /tmp/coverage.GrWO8OlTrX/profile.out bytes=2221509^M
2019-07-15 03:50:24 +00:00
yunion-ci-robot
10540d33b2 Merge pull request #1722 from swordqiu/automated-cherry-pick-of-#1721-upstream-release-2.10.0
Automated cherry pick of #1721: fix: ldap sync domain may remove local usrs
2019-07-15 11:16:57 +08:00
yunion-ci-robot
cdc9b6b538 Merge pull request #1726 from ioito/automated-cherry-pick-of-#1724-upstream-release-2.10.0
Automated cherry pick of #1724: 修复purge backend野指针引用问题
2019-07-15 10:36:57 +08:00
ioito
cdf9ed1d12 修复purge backend野指针引用问题 2019-07-15 10:23:34 +08:00
yunion-ci-robot
a8715aca65 Merge pull request #1719 from Zexi/automated-cherry-pick-of-#1718-upstream-release-2.10.0
Automated cherry pick of #1718: scheduler: optimize forecast filter info
2019-07-15 09:23:58 +08:00
Zexi
cc61846359 scheduler: optimize forecast filter info 2019-07-15 09:18:18 +08:00
Qiu Jian
f5cdb2b6cc fix: ldap sync domain may remove local usrs 2019-07-15 08:44:37 +08:00
yunion-ci-robot
47b71cea35 Merge pull request #1708 from yousong/automated-cherry-pick-of-#1706-release-2.10.0
Automated cherry pick of #1706: lbagent: deploy: 仓库配置文件默认sslverify=0
2019-07-13 20:28:57 +08:00
yunion-ci-robot
797bfc009e Merge pull request #1716 from wanyaoqi/automated-cherry-pick-of-#1714-upstream-release-2.10.0
Automated cherry pick of #1714: fix  disk create from snapshot
2019-07-13 19:23:58 +08:00
wanyaoqi
a9fc3adcb8 fix disk create from snapshot 2019-07-13 19:22:37 +08:00
yunion-ci-robot
766076aa1c Merge pull request #1711 from ioito/automated-cherry-pick-of-#1709-upstream-release-2.10.0
Automated cherry pick of #1709: fix console log
2019-07-13 17:39:00 +08:00
ioito
117cbc428a fix console log 2019-07-13 14:47:01 +08:00
Yousong Zhou
cbc3a3b921 lbagent: deploy: 部署结束重启服务 2019-07-13 05:21:09 +00:00
Yousong Zhou
84a478ffad lbagent: deploy: 仓库配置文件默认sslverify=0 2019-07-13 05:21:09 +00:00
yunion-ci-robot
7d0dab5ae4 Merge pull request #1698 from ioito/automated-cherry-pick-of-#1696-upstream-release-2.10.0
Automated cherry pick of #1696: 补充zstack宿主机本地存储
2019-07-12 14:44:56 +08:00
yunion-ci-robot
2b2b48ae09 Merge pull request #1691 from swordqiu/automated-cherry-pick-of-#1690-upstream-release-2.10.0
Automated cherry pick of #1690: fix: invalid old password
2019-07-12 14:43:00 +08:00
yunion-ci-robot
1742963639 Merge pull request #1701 from ioito/automated-cherry-pick-of-#1699-upstream-release-2.10.0
Automated cherry pick of #1699: 同优先级规则deny优先于allow规则生效
2019-07-12 12:01:56 +08:00
ioito
a8d6afe3f9 同优先级规则deny优先于allow规则生效 2019-07-12 11:54:23 +08:00
ioito
d3f43b3e76 补充zstack宿主机本地存储 2019-07-12 10:40:25 +08:00
yunion-ci-robot
f4682443c6 Merge pull request #1695 from wanyaoqi/automated-cherry-pick-of-#1693-upstream-release-2.10.0
Automated cherry pick of #1693: fix host register:
2019-07-12 10:32:56 +08:00
wanyaoqi
641055de71 fix host register: 2019-07-12 10:30:19 +08:00
yunion-ci-robot
7a30fc0c67 Merge pull request #1683 from ioito/automated-cherry-pick-of-#1681-upstream-release-2.10.0
Automated cherry pick of #1681: 宿主机存储利用率仅计算本地存储
2019-07-12 09:07:57 +08:00
Qiu Jian
b5b214cab6 fix: invalid old password 2019-07-11 23:59:24 +08:00
yunion-ci-robot
459aa22987 Merge pull request #1687 from swordqiu/automated-cherry-pick-of-#1686-upstream-release-2.10.0
Automated cherry pick of #1686: fix: notify message use brand insteand of hypervisor
2019-07-11 19:57:57 +08:00
Qiu Jian
ea09d533d1 fix: notify message use brand insteand of hypervisor 2019-07-11 18:35:30 +08:00
yunion-ci-robot
8aee738a7c Merge pull request #1678 from ioito/automated-cherry-pick-of-#1676-upstream-release-2.10.0
Automated cherry pick of #1676: 避免重装系统时绑定秘钥后没有account信息
2019-07-11 18:30:58 +08:00
ioito
fa469a77cf 宿主机存储利用率仅计算本地存储 2019-07-11 17:29:11 +08:00
ioito
b5af099bb8 避免重装系统时绑定秘钥后没有account信息 2019-07-11 16:59:49 +08:00
yunion-ci-robot
871c6e9d99 Merge pull request #1675 from tb365/automated-cherry-pick-of-#1649-upstream-release-2.10.0
Automated cherry pick of #1649: add rpc-global-settings-dictionary
2019-07-11 16:54:57 +08:00
TangBin
5bd2a03bb7 make fmt 2019-07-11 16:52:12 +08:00
yunion-ci-robot
fe506db0fb Merge pull request #1674 from ioito/automated-cherry-pick-of-#1672-upstream-release-2.10.0
Automated cherry pick of #1672: fix grpc client timeout
2019-07-11 13:47:58 +08:00
ioito
4e24dbcc09 fix grpc client timeout 2019-07-11 13:43:33 +08:00
yunion-ci-robot
b7a55a7ccd Merge pull request #1670 from swordqiu/automated-cherry-pick-of-#1667-upstream-release-2.10.0
Automated cherry pick of #1667: fix: task usercred should be utf8 charset
2019-07-11 12:18:56 +08:00
Qiu Jian
4dab0e1846 fix: task usercred should be utf8 charset 2019-07-11 12:12:45 +08:00
yunion-ci-robot
97acf23a77 Merge pull request #1666 from wanyaoqi/automated-cherry-pick-of-#1662-upstream-release-2.10.0
Automated cherry pick of #1662: baremetal init fsdriver
2019-07-11 12:01:56 +08:00
wanyaoqi
83debc7403 baremetal init fsdriver 2019-07-11 11:42:00 +08:00
Jian Qiu
379b99efca Automated cherry pick of #1659: fix: add all ports usage (#1660)
* fix: add all ports usage

* fix: action log project-domain charset is not utf8
2019-07-11 08:57:48 +08:00
yunion-ci-robot
dbd9dbc5f9 Merge pull request #1656 from ioito/automated-cherry-pick-of-#1654-upstream-release-2.10.0
Automated cherry pick of #1654: fix qcloud associate eip timeout after bind
2019-07-11 08:45:56 +08:00
ioito
930f4f34c5 fix qcloud associate eip timeout after bind 2019-07-10 21:14:05 +08:00
yunion-ci-robot
6826331114 Merge pull request #1651 from wanyaoqi/automated-cherry-pick-of-#1603-upstream-release-2.10.0
Automated cherry pick of #1603: - set mirror status on switch
2019-07-10 21:01:56 +08:00
yunion-ci-robot
f5ee0a5805 Merge pull request #1652 from tb365/automated-cherry-pick-of-#1649-upstream-release-2.10.0
Automated cherry pick of #1649: add rpc-global-settings-dictionary
2019-07-10 20:58:57 +08:00
wanyaoqi
85e49b8520 add build file 2019-07-10 20:45:11 +08:00
wanyaoqi
c9aa62f6d7 - set mirror status on switch
- deploy agent

- gpfs snapshot

- code fixs
2019-07-10 20:45:10 +08:00
yunion-ci-robot
042f983815 Merge pull request #1643 from ioito/automated-cherry-pick-of-#1641-upstream-release-2.10.0
Automated cherry pick of #1641: 统一处理ResourceNotFound返回id not find
2019-07-10 20:44:57 +08:00
yunion-ci-robot
5501c1c0eb Merge pull request #1640 from ioito/automated-cherry-pick-of-#1638-upstream-release-2.10.0
Automated cherry pick of #1638: 避免无限删除guest失败
2019-07-10 20:42:57 +08:00
TangBin
2682d903f8 add rpc-global-settings-dictionary 2019-07-10 20:28:41 +08:00
ioito
dcbb0677f8 统一处理ResourceNotFound返回id not find 2019-07-10 16:11:50 +08:00
ioito
adc05c6caa 避免无限删除guest失败 2019-07-10 15:27:05 +08:00
yunion-ci-robot
a37759d756 Merge pull request #1636 from swordqiu/automated-cherry-pick-of-#1635-upstream-release-2.10.0
Automated cherry pick of #1635: fix: possible reduce timeout for quota list
2019-07-10 11:55:56 +08:00
Qiu Jian
70f8fefe10 fix: disk quota usage should exclude pending_deleted disks 2019-07-10 00:11:01 +08:00
Qiu Jian
2bba1ab7f3 fix: possible reduce timeout for quota list 2019-07-10 00:11:01 +08:00
yunion-ci-robot
71d58f8b6d Merge pull request #1628 from ioito/automated-cherry-pick-of-#1626-upstream-release-2.10.0
Automated cherry pick of #1626: metadata permission
2019-07-09 23:23:57 +08:00
Jian Qiu
24406afe2d fix: domain usage is overriden by project usage (#1623) 2019-07-09 23:23:34 +08:00
yunion-ci-robot
851f15226f Merge pull request #1632 from ioito/automated-cherry-pick-of-#1622-upstream-release-2.10.0
Automated cherry pick of #1622: 兼容zone及usable参数
2019-07-09 23:01:55 +08:00
ioito
8f28c80dd9 兼容zone及usable参数 2019-07-09 22:45:42 +08:00
ioito
4184238f0e metadata permission 2019-07-09 22:42:36 +08:00
yunion-ci-robot
484a94b59a Merge pull request #1615 from ioito/automated-cherry-pick-of-#1604-upstream-release-2.10.0
Automated cherry pick of #1604: register sched-start-guest task
2019-07-09 17:30:56 +08:00
yunion-ci-robot
de528bd85e Merge pull request #1607 from ioito/automated-cherry-pick-of-#1602-upstream-release-2.10.0
Automated cherry pick of #1602: add task failed code
2019-07-09 17:28:58 +08:00
yunion-ci-robot
a953ccba17 Merge pull request #1611 from ioito/automated-cherry-pick-of-#1605-upstream-release-2.10.0
Automated cherry pick of #1605: fix clone rbd image error
2019-07-09 17:22:58 +08:00
yunion-ci-robot
bb30d17965 Merge pull request #1620 from swordqiu/automated-cherry-pick-of-#1619-upstream-release-2.10.0
Automated cherry pick of #1619: fix: add default network project privileges
2019-07-09 17:18:56 +08:00
yunion-ci-robot
b497c1e03f Merge pull request #1617 from zhasm/automated-cherry-pick-of-#1616-upstream-release-2.10.0
Automated cherry pick of #1616: + zstack build desc file
2019-07-09 17:17:58 +08:00
Qiu Jian
e4dae64d4d add usage debug 2019-07-09 17:13:26 +08:00
Qiu Jian
325361504c fix: add default network project privileges 2019-07-09 17:13:26 +08:00
Zhang Dongliang
19dad62b37 + zstack build desc file 2019-07-09 16:54:05 +08:00
ioito
c978c63215 register sched-start-guest task 2019-07-09 15:53:41 +08:00
ioito
a515278fee fix clone rbd image error 2019-07-09 15:49:27 +08:00
ioito
9c8ed72488 add task failed code 2019-07-09 15:45:35 +08:00
yunion-ci-robot
5c8f4b19a3 Merge pull request #1601 from ioito/automated-cherry-pick-of-#1599-upstream-release-2.10.0
Automated cherry pick of #1599: fix max session login issue
2019-07-08 21:48:56 +08:00
ioito
e209532a1c fix max session login issue 2019-07-08 16:45:58 +08:00
yunion-ci-robot
51e4dbbe41 Merge pull request #1598 from ioito/automated-cherry-pick-of-#1596-upstream-release-2.10.0
Automated cherry pick of #1596: 私有云或公有云镜像windows默认用户名都是Administrator
2019-07-07 19:08:58 +08:00
ioito
2cac70071d 私有云或公有云镜像windows默认用户名都是Administrator 2019-07-07 18:46:31 +08:00
Jian Qiu
f3e6aca6de fix: image quota rpc support action and cascade params (#1594) 2019-07-06 23:55:18 +08:00
yunion-ci-robot
b562e99a6e Merge pull request #1592 from ioito/automated-cherry-pick-of-#1568-upstream-release-2.10.0
Automated cherry pick of #1568: fix cache domain tenants
2019-07-06 17:19:54 +08:00
yunion-ci-robot
9833f02016 Merge pull request #1590 from ioito/automated-cherry-pick-of-#1584-upstream-release-2.10.0
Automated cherry pick of #1584: fix create server sku not found error
2019-07-06 17:16:54 +08:00
ioito
7d8a5e1d56 fix cache domain tenants 2019-07-06 16:59:02 +08:00
ioito
48c8c74b9d fix create server sku not found error 2019-07-06 16:57:05 +08:00
yunion-ci-robot
a0e199dc3a Merge pull request #1575 from ioito/automated-cherry-pick-of-#1573-upstream-release-2.10.0
Automated cherry pick of #1573: add usable filter for network
2019-07-05 23:03:57 +08:00
Jian Qiu
5ff60bc6d7 fix: quota encode json allowing zero value (#1571) 2019-07-05 23:03:44 +08:00
yunion-ci-robot
46395e3ec6 Merge pull request #1560 from ioito/automated-cherry-pick-of-#1551-upstream-release-2.10.0
Automated cherry pick of #1551: add without_user_meta filter
2019-07-05 22:45:56 +08:00
yunion-ci-robot
09ba6283d6 Merge pull request #1565 from ioito/automated-cherry-pick-of-#1563-upstream-release-2.10.0
Automated cherry pick of #1563: add deploy failed action log
2019-07-05 22:30:00 +08:00
yunion-ci-robot
ed0094fc2e Merge pull request #1562 from ioito/automated-cherry-pick-of-#1543-upstream-release-2.10.0
Automated cherry pick of #1543: fix not set guest status after attach or detach disk
2019-07-05 22:26:54 +08:00
yunion-ci-robot
68ae6a0648 Merge pull request #1556 from ioito/automated-cherry-pick-of-#1550-upstream-release-2.10.0
Automated cherry pick of #1550: fix purge aliyun account error by lbbg
2019-07-05 22:22:01 +08:00
ioito
ca23a5906e add usable filter for network 2019-07-05 18:50:03 +08:00
ioito
a535a019f5 add deploy failed action log 2019-07-05 14:19:11 +08:00
ioito
50ba8365d0 optimized tag filter 2019-07-05 10:24:51 +08:00
ioito
8a1471860e fix not set guest status after attach or detach disk 2019-07-05 10:18:17 +08:00
yunion-ci-robot
631ea3312b Merge pull request #1545 from swordqiu/automated-cherry-pick-of-#1544-upstream-release-2.10.0
Automated cherry pick of #1544: fix: add disk usage for domain and project
2019-07-05 10:16:54 +08:00
ioito
d240f747bb add without_user_meta filter 2019-07-05 10:16:00 +08:00
yunion-ci-robot
b5a547a1c1 Merge pull request #1553 from swordqiu/automated-cherry-pick-of-#1552-upstream-release-2.10.0
Automated cherry pick of #1552: 1. allow replace set quota when action=replace 2. show when the project external resource was fetched
2019-07-05 10:14:56 +08:00
yunion-ci-robot
0e50f2d8da Merge pull request #1541 from swordqiu/automated-cherry-pick-of-#1540-upstream-release-2.10.0
Automated cherry pick of #1540: fix: user filter by role
2019-07-05 10:13:54 +08:00
ioito
10040b96f5 fix purge aliyun account error by lbbg 2019-07-05 10:10:28 +08:00
yunion-ci-robot
53e6039093 Merge pull request #1549 from ioito/automated-cherry-pick-of-#1547-upstream-release-2.10.0
Automated cherry pick of #1547: add azure disk reset func
2019-07-04 23:55:57 +08:00
Qiu Jian
ac8f5655aa 1. allow replace set quota when action=replace 2. show when the project external resource was fetched 2019-07-04 23:37:39 +08:00
Qiu Jian
ee83b3b7da add nics usage 2019-07-04 21:34:08 +08:00
Qiu Jian
047072e0c9 fix: add disk usage for domain and project 2019-07-04 21:33:53 +08:00
ioito
33158aa7c0 add azure disk reset func 2019-07-04 20:04:43 +08:00
yunion-ci-robot
633bed6ab6 Merge pull request #1506 from ioito/hotfix/qx-sku-filter
fix idc sku filter at 2.10.0
2019-07-04 15:35:54 +08:00
yunion-ci-robot
a3d2c3c102 Merge pull request #1519 from yousong/automated-cherry-pick-of-#1517-release-2.10.0
Automated cherry pick of #1517: .circleci: save go cache
2019-07-04 15:30:54 +08:00
Qiu Jian
02b4244ee9 fix: user filter by role 2019-07-04 15:29:57 +08:00
yunion-ci-robot
4de14af7d1 Merge pull request #1538 from swordqiu/automated-cherry-pick-of-#1537-upstream-release-2.10.0
Automated cherry pick of #1537: add ldapcli rpm
2019-07-04 10:29:54 +08:00
Qiu Jian
4d8ec05380 add ldapcli rpm 2019-07-04 10:11:09 +08:00
yunion-ci-robot
ced1363571 Merge pull request #1535 from swordqiu/automated-cherry-pick-of-#1534-upstream-release-2.10.0
Automated cherry pick of #1534: fix: 1. token add projects when no project specified 2. IVirtualResourceManager add GetResourceCount() method 3. domainId not initialized occasionally
2019-07-04 10:02:57 +08:00
yunion-ci-robot
64d3f52e70 Merge pull request #1531 from ioito/automated-cherry-pick-of-#1529-upstream-release-2.10.0
Automated cherry pick of #1529: fix create image with userCred issue
2019-07-03 23:24:55 +08:00
yunion-ci-robot
94690f24fc Merge pull request #1526 from ioito/automated-cherry-pick-of-#1524-upstream-release-2.10.0
Automated cherry pick of #1524: fix azure reserved ips
2019-07-03 23:04:56 +08:00
Qiu Jian
fcaba4875a fix: 1. token add projects when no project specified 2. IVirtualResourceManager add GetResourceCount() method 3. domainId not initialized occasionally 2019-07-03 22:58:22 +08:00
Yousong Zhou
744c27aac4 .circleci: build: save go cache 2019-07-03 13:43:14 +00:00
ioito
b36b8474f8 fix create image with userCred issue 2019-07-03 20:57:15 +08:00
yunion-ci-robot
ca8f6f4a3f Merge pull request #1522 from ioito/automated-cherry-pick-of-#1520-upstream-release-2.10.0
Automated cherry pick of #1520: zstack using shell to init image password
2019-07-03 20:19:54 +08:00
ioito
08ef72f841 fix azure reserved ips 2019-07-03 20:12:06 +08:00
ioito
68d917a7db zstack using shell to init image password 2019-07-03 19:24:15 +08:00
yunion-ci-robot
5eab573eee Merge pull request #1511 from yousong/automated-cherry-pick-of-#1509-release-2.10.0
Automated cherry pick of #1509: pkg: ansible: 改正文件内容写入路径
2019-07-03 18:09:54 +08:00
yunion-ci-robot
bbecc34943 Merge pull request #1514 from wanyaoqi/automated-cherry-pick-of-#1512-upstream-release-2.10.0
Automated cherry pick of #1512: fix image download timout
2019-07-03 18:06:56 +08:00
yunion-ci-robot
601241f744 Merge pull request #1505 from ioito/automated-cherry-pick-of-#1503-upstream-release-2.10.0
Automated cherry pick of #1503: fix cloud-init lock root login issue
2019-07-03 17:44:52 +08:00
wanyaoqi
8a14fced0e fix image download timout 2019-07-03 17:44:27 +08:00
Yousong Zhou
8a5e3da882 pkg: ansible: 改正文件内容写入路径
模板不会在files/目录下寻找

Fixes: 5ec150e7a9 ("pkg: ansible: 添加文件内容支持")
2019-07-03 09:27:21 +00:00
ioito
3344897e13 fix idc sku filter at 2.10.0 2019-07-03 16:30:27 +08:00
ioito
e65a148edb fix cloud-init lock root login issue 2019-07-03 15:55:13 +08:00
yunion-ci-robot
bf65bf77c0 Merge pull request #1480 from ioito/automated-cherry-pick-of-#1479-upstream-release-2.10.0
Automated cherry pick of #1479: fix sync openstack hoststorages issue
2019-07-03 08:33:52 +08:00
yunion-ci-robot
43ddfbd491 Merge pull request #1492 from ioito/automated-cherry-pick-of-#1486-upstream-release-2.10.0
Automated cherry pick of #1486: fix azure set secgroup error
2019-07-03 08:28:52 +08:00
yunion-ci-robot
9de035fde5 Merge pull request #1502 from yousong/automated-cherry-pick-of-#1500-release-2.10.0
Automated cherry pick of #1500: build: mod: 兼容bsd sed
2019-07-03 00:40:51 +08:00
Yousong Zhou
e388de8fed build: mod: 兼容bsd sed 2019-07-02 15:02:23 +00:00
yunion-ci-robot
819674f493 Merge pull request #1497 from wanyaoqi/automated-cherry-pick-of-#1495-upstream-release-2.10.0
Automated cherry pick of #1495: fix export data
2019-07-02 22:09:52 +08:00
wanyaoqi
afbfd101ab fix export data 2019-07-02 22:04:25 +08:00
ioito
73625800fb fix azure set secgroup error 2019-07-02 21:24:29 +08:00
yunion-ci-robot
ecbf7c29a9 Merge pull request #1485 from Zexi/automated-cherry-pick-of-#1484-upstream-release-2.10.0
Automated cherry pick of #1484: scheduler: fix network schedtag not set capacity
2019-07-02 20:38:55 +08:00
Zexi
2dc13a905e scheduler: fix network schedtag not set capacity 2019-07-02 20:35:57 +08:00
ioito
837f46e31a fix sync openstack hoststorages issue 2019-07-02 20:10:28 +08:00
yunion-ci-robot
00803e4ee7 Merge pull request #1476 from swordqiu/automated-cherry-pick-of-#1474-upstream-release-2.10.0
Automated cherry pick of #1474: fix: service catalog nil pointer
2019-07-02 18:53:54 +08:00
yunion-ci-robot
3c78775e15 Merge pull request #1473 from wanyaoqi/automated-cherry-pick-of-#1471-upstream-release-2.10.0
Automated cherry pick of #1471: fix export data, set no limit; expand timeout
2019-07-02 18:49:53 +08:00
Qiu Jian
55c3e67576 fix: service catalog nil pointer 2019-07-02 18:33:00 +08:00
wanyaoqi
c1f988d4ad fix export data, set no limit; expand timeout 2019-07-02 17:57:56 +08:00
yunion-ci-robot
f1644ca567 Merge pull request #1465 from tb365/automated-cherry-pick-of-#1464-upstream-release-2.10.0
Automated cherry pick of #1464: update mod
2019-07-02 16:09:51 +08:00
TangBin
68c9b4e73f update mod 2019-07-02 16:02:58 +08:00
yunion-ci-robot
4af03d1686 Merge pull request #1461 from swordqiu/automated-cherry-pick-of-#1460-upstream-release-2.10.0
Automated cherry pick of #1460: fix: 1. quota add API 2. tenant cache refresh 3. domain quota not initialize
2019-07-02 09:55:51 +08:00
Qiu Jian
0a63f4b017 feature: allow cascade quota set 2019-07-02 09:34:45 +08:00
Qiu Jian
0c2acbf67d fix: 1. quota add API 2. tenant cache refresh 3. domain quota not initialize 2019-07-02 09:34:05 +08:00
yunion-ci-robot
ed22cc1078 Merge pull request #1459 from swordqiu/automated-cherry-pick-of-#1458-upstream-release-2.10.0
Automated cherry pick of #1458: fix: 1. idp sync fail to sync group domainId 2. idp delete fail
2019-07-01 18:54:51 +08:00
yunion-ci-robot
2882952d9f Merge pull request #1455 from wanyaoqi/automated-cherry-pick-of-#1454-upstream-release-2.10.0
Automated cherry pick of #1454: fix dhcp build on OSX
2019-07-01 18:51:53 +08:00
Qiu Jian
c5c3e8acdb fix: generate unique name should exclude existing name 2019-07-01 18:18:36 +08:00
Qiu Jian
611342f6a2 fix: 1. idp sync fail to sync group domainId 2. idp delete fail 2019-07-01 18:18:35 +08:00
yunion-ci-robot
2ab647a173 Merge pull request #1457 from ioito/automated-cherry-pick-of-#1456-upstream-release-2.10.0
Automated cherry pick of #1456: fix attach disk not effect
2019-07-01 18:17:51 +08:00
ioito
314c71cf1d fix attach disk not effect 2019-07-01 15:52:13 +08:00
wanyaoqi
c50ef6be11 fix dhcp build on OSX 2019-07-01 15:09:55 +08:00
yunion-ci-robot
8c1b35cafe Merge pull request #1453 from ioito/automated-cherry-pick-of-#1415-upstream-release-2.10.0
Automated cherry pick of #1415: zone添加GetIVMById,GetIDiskById方法
2019-07-01 12:29:53 +08:00
ioito
b2f336aeb6 zone添加GetIVMById,GetIDiskById方法 2019-07-01 11:47:40 +08:00
yunion-ci-robot
9c2cbe42d5 Merge pull request #1452 from swordqiu/automated-cherry-pick-of-#1451-upstream-release-2.10.0
Automated cherry pick of #1451: fix format
2019-07-01 11:46:51 +08:00
Qiu Jian
0809b69bb4 fix format 2019-07-01 11:41:29 +08:00
yunion-ci-robot
377c79f9aa Merge pull request #1450 from ioito/automated-cherry-pick-of-#1449-upstream-release-2.10.0
Automated cherry pick of #1449: fix nil pointer dereference error
2019-07-01 11:36:51 +08:00
ioito
34738bb516 fix nil pointer dereference error 2019-07-01 11:34:11 +08:00
yunion-ci-robot
6c392f4ae8 Merge pull request #1446 from ioito/automated-cherry-pick-of-#1420-upstream-release-2.10.0
Automated cherry pick of #1420: remove keypair info if rebuild-root net set keypair
2019-07-01 11:19:52 +08:00
ioito
10ffcb073d remove keypair info if rebuild-root net set keypair 2019-07-01 10:26:45 +08:00
yunion-ci-robot
ff0ad6d043 Merge pull request #1443 from swordqiu/automated-cherry-pick-of-#1442-upstream-release-2.10.0
Automated cherry pick of #1442: fix: usage query support brands
2019-07-01 10:11:51 +08:00
yunion-ci-robot
e8ee1c7f53 Merge pull request #1445 from swordqiu/automated-cherry-pick-of-#1440-upstream-release-2.10.0
Automated cherry pick of #1440: feature: 1. esxi vm add resource pool metadata 2. esxicli support network-list 3. add cloud-provider-clirc command to generate rc for each cloud-cli
2019-07-01 10:05:51 +08:00
yunion-ci-robot
d0c96b721f Merge pull request #1444 from swordqiu/automated-cherry-pick-of-#1441-upstream-release-2.10.0
Automated cherry pick of #1441: feature: capability add brands
2019-07-01 10:04:54 +08:00
Qiu Jian
6eafc028ea fix: replace all ext metadata 2019-07-01 09:38:10 +08:00
Qiu Jian
0dcc74ec5f feature: 1. esxi vm add resource pool metadata 2. esxicli support network-list 3. add cloud-provider-clirc command to generate rc for each cloud-cli 2019-07-01 09:38:10 +08:00
Qiu Jian
a7be9437e5 feature: capability add brands 2019-07-01 09:35:49 +08:00
Qiu Jian
bba426e67c fix: usage query support brands 2019-07-01 09:32:49 +08:00
yunion-ci-robot
badf669494 Merge pull request #1436 from tb365/automated-cherry-pick-of-#1435-upstream-release-2.10.0
Automated cherry pick of #1435: fix eip projcet source & snapshot bugfix
2019-06-30 00:25:51 +08:00
yunion-ci-robot
39b8963fc1 Merge pull request #1439 from yousong/automated-cherry-pick-of-#1438-release-2.10.0
Automated cherry pick of #1438: lb: 改正lbcluster校验
2019-06-30 00:24:52 +08:00
Yousong Zhou
d8bc1d40e6 lb: 改正lbcluster校验
- 仅对私有云应用
 - 若显式指定了lbcluster,校验lbcluster.zoneId==network.zone
2019-06-29 13:40:46 +00:00
TangBin
b43ecc4310 fix eip projcet source & snapshot bugfix 2019-06-29 18:11:52 +08:00
yunion-ci-robot
e81ebce304 Merge pull request #1431 from swordqiu/automated-cherry-pick-of-#1428-upstream-release-2.10.0
Automated cherry pick of #1428: fix: 1. ldap sync remove domain/user errors 2. esxi compatibility issues
2019-06-29 14:58:54 +08:00
yunion-ci-robot
bb58bca77f Merge pull request #1433 from Zexi/automated-cherry-pick-of-#1432-upstream-release-2.10.0
Automated cherry pick of #1432: update vendor to fix log caller field missing
2019-06-29 14:54:53 +08:00
Zexi
478ceaee63 update vendor to fix log caller field missing 2019-06-29 14:36:47 +08:00
Qiu Jian
93d759c9f8 fix: 1. ldap sync remove domain/user errors 2. esxi compatibility issues 2019-06-29 14:33:57 +08:00
yunion-ci-robot
a7450aed3b Merge pull request #1427 from yousong/automated-cherry-pick-of-#1421-release-2.10.0
Automated cherry pick of #1421: httperrors: 支持从msgTmpl转换为带%s的msgFmt
2019-06-29 14:32:52 +08:00
yunion-ci-robot
72f312ec11 Merge pull request #1425 from yousong/automated-cherry-pick-of-#1424-release-2.10.0
Automated cherry pick of #1424: build: 移除Gopkg.toml, Gopkg.lock
2019-06-29 14:28:52 +08:00
yunion-ci-robot
9aa2b54b07 Merge pull request #1426 from yousong/automated-cherry-pick-of-#1422-release-2.10.0
Automated cherry pick of #1422: lbclusters: 初次支持
2019-06-29 14:21:52 +08:00
Yousong Zhou
dc36e35c70 validators: errors: 使用msgFmt而非包含{NN}的msgTmpl 2019-06-29 05:22:04 +00:00
Yousong Zhou
2f4c4aed88 httperrors: 支持从msgTmpl转换为带%s的msgFmt 2019-06-29 05:22:04 +00:00
Yousong Zhou
3b10089269 lbclusters: 初次支持 2019-06-29 05:18:30 +00:00
Yousong Zhou
0762de2cd7 .circleci: store_artifacts 2019-06-29 05:10:39 +00:00
Yousong Zhou
866d22fae0 .circleci: bump yunionio/onecloud-ci to version v1.0.2 2019-06-29 05:10:38 +00:00
Yousong Zhou
076314d308 build: docker-build as the first-class citizen 2019-06-29 05:10:38 +00:00
Yousong Zhou
7edcd37dc0 build: 移除Gopkg.toml, Gopkg.lock 2019-06-29 05:10:38 +00:00
yunion-ci-robot
39ff1ddfb6 Merge pull request #1419 from wanyaoqi/automated-cherry-pick-of-#1418-upstream-release-2.10.0
Automated cherry pick of #1418: network filter by part of ip
2019-06-27 19:53:50 +08:00
yunion-ci-robot
7c1ed842ea Merge pull request #1416 from wanyaoqi/automated-cherry-pick-of-#1412-upstream-release-2.10.0
Automated cherry pick of #1412: baremetal listen dhcp port
2019-06-27 18:29:50 +08:00
wanyaoqi
900a939c96 network filter by part of ip 2019-06-27 17:57:02 +08:00
yunion-ci-robot
a6b01b219a Merge pull request #1417 from swordqiu/automated-cherry-pick-of-#1411-upstream-release-2.10.0
Automated cherry pick of #1411: fix: 1. auto create project after import domains 2. add actionlogs for identity resources
2019-06-27 17:33:51 +08:00
yunion-ci-robot
9b98778bff Merge pull request #1414 from ioito/automated-cherry-pick-of-#1407-upstream-release-2.10.0
Automated cherry pick of #1407: private cloud filter eip by zone
2019-06-27 17:32:51 +08:00
yunion-ci-robot
b22236d097 Merge pull request #1405 from yousong/automated-cherry-pick-of-#1404-release-2.10.0
Automated cherry pick of #1404: ansibleserver: 直接指定IP地址时默认ansible_user指定
2019-06-27 17:23:53 +08:00
yunion-ci-robot
bc04f05078 Merge pull request #1401 from yousong/automated-cherry-pick-of-#1400-release-2.10.0
Automated cherry pick of #1400: lbagent: 启动时全量取API数据
2019-06-27 17:20:55 +08:00
yunion-ci-robot
aafc7e7f62 Merge pull request #1397 from ioito/automated-cherry-pick-of-#1396-upstream-release-2.10.0
Automated cherry pick of #1396: wait ready or running after change vm config
2019-06-27 17:17:51 +08:00
yunion-ci-robot
6f9a577cac Merge pull request #1393 from wanyaoqi/automated-cherry-pick-of-#1384-upstream-release-2.10.0
Automated cherry pick of #1384: - live migrate filter cpu model
2019-06-27 16:59:51 +08:00
Qiu Jian
4a527aea0b update vendor 2019-06-27 16:53:35 +08:00
Qiu Jian
8306485468 fix: misc bugfixes. 2019-06-27 16:53:35 +08:00
Qiu Jian
43ce838980 fix: 1. auto create project after import domains 2. add actionlogs for identity resources 2019-06-27 16:53:35 +08:00
wanyaoqi
d4cf2cad57 baremetal listen dhcp port 2019-06-27 16:40:27 +08:00
ioito
1d4cda6557 private cloud filter eip by zone 2019-06-27 15:02:13 +08:00
Zexi Li
8c2344d252 Merge pull request #1406 from Zexi/automated-cherry-pick-of-#1347-upstream-release-2.10.0
Automated cherry pick of #1347: scheduler: add schedule filter interface to guestdriver
2019-06-26 21:25:50 +08:00
Zexi
9c5a471905 scheduler: add schedule filter interface to guestdriver 2019-06-26 21:24:33 +08:00
Yousong Zhou
c9050d44ca ansibleserver: 直接指定IP地址时默认ansible_user指定 2019-06-26 12:59:01 +00:00
Yousong Zhou
3107652757 lbagent: 启动时全量取API数据
此变更之后,data/目录内容更多服务于调试作用
2019-06-26 12:25:52 +00:00
ioito
5b9da4b3ef wait ready or running after change vm config 2019-06-26 19:32:46 +08:00
wanyaoqi
c45f0d4014 optimize sync status with backup 2019-06-26 13:05:48 +08:00
wanyaoqi
5edfbc2636 - live migrate filter cpu model
- fix list export keys
2019-06-26 13:05:47 +08:00
yunion-ci-robot
d06a8ae657 Merge pull request #1390 from wanyaoqi/automated-cherry-pick-of-#1174-upstream-release-2.10.0
Automated cherry pick of #1174: import running libvirt guests
2019-06-26 12:39:50 +08:00
yunion-ci-robot
4800fa858c Merge pull request #1389 from wanyaoqi/automated-cherry-pick-of-#1348-upstream-release-2.10.0
Automated cherry pick of #1348: - add pvpanic device - fix import baremetal server status admin - fix gpu params position, fix notify event - delete unknown guests
2019-06-26 12:38:49 +08:00
wanyaoqi
921499943a import running libvirt guests 2019-06-26 11:20:07 +08:00
wanyaoqi
a6f27f3a90 - add pvpanic device - fix import baremetal server status admin - fix gpu params position, fix notify event - delete unknown guests 2019-06-26 10:58:34 +08:00
yunion-ci-robot
95715fc69d Merge pull request #1377 from tb365/automated-cherry-pick-of-#1376-upstream-release-2.10.0
Automated cherry pick of #1376: ucloud create instance & huawei change instance config bugfix
2019-06-26 08:31:50 +08:00
yunion-ci-robot
5359993489 Merge pull request #1388 from swordqiu/automated-cherry-pick-of-#1387-upstream-release-2.10.0
Automated cherry pick of #1387: fix: initialize system project quota
2019-06-26 08:23:50 +08:00
yunion-ci-robot
2c37dbfbca Merge pull request #1386 from swordqiu/automated-cherry-pick-of-#1385-upstream-release-2.10.0
Automated cherry pick of #1385: fix: 1. role_assignment missing groups 2. project rpcs returns errors
2019-06-26 08:22:49 +08:00
Qiu Jian
5b98028d38 fix: initialize system project quota 2019-06-26 08:12:29 +08:00
Qiu Jian
25254c648a fix: 1. role_assignment missing groups 2. project rpcs returns errors 2019-06-26 00:41:19 +08:00
yunion-ci-robot
7561ffbcb2 Merge pull request #1371 from yousong/feature/yousong-go-mod-2.10
treewide: 2.10引入go modules支持
2019-06-25 23:28:55 +08:00
yunion-ci-robot
bd7572745f Merge pull request #1373 from wanyaoqi/automated-cherry-pick-of-#1357-upstream-release-2.10.0
Automated cherry pick of #1357: set default http client timeout
2019-06-25 23:21:51 +08:00
yunion-ci-robot
57e2396aa5 Merge pull request #1381 from ioito/automated-cherry-pick-of-#1380-upstream-release-2.10.0
Automated cherry pick of #1380: clear scheduler cache afeter change host cmtbound
2019-06-25 23:15:55 +08:00
ioito
d6b783325e clear scheduler cache afeter change host cmtbound 2019-06-25 21:00:49 +08:00
yunion-ci-robot
938424bf7a Merge pull request #1379 from ioito/automated-cherry-pick-of-#1378-upstream-release-2.10.0
Automated cherry pick of #1378: 避免镜像第一次上传时未做缓存
2019-06-25 20:58:49 +08:00
ioito
9092d5bcde 避免镜像第一次上传时未做缓存 2019-06-25 20:51:49 +08:00
TangBin
6fb3e0c98b ucloud create instance & huawei change instance config bugfix 2019-06-25 19:10:35 +08:00
wanyaoqi
c860ca4ed0 set default http client timeout 2019-06-25 15:30:34 +08:00
Yousong Zhou
a3f1098542 build: 改正版本信息注入 2019-06-25 07:21:30 +00:00
Yousong Zhou
1fd7eeb7e9 build: apply "-mod vendor" also to test target 2019-06-25 05:09:57 +00:00
Yousong Zhou
88c0dfeba0 build: fix $(shell go ..) call 2019-06-25 05:09:51 +00:00
Yousong Zhou
a4f0860b60 build: switch to using go mod 2019-06-25 05:09:38 +00:00
Yousong Zhou
977ba2dcce vendor: using go modules
This change was made with the following commands

        go mod init
        go mod tidy
        go mod vendor -v

Revision of github.com/op/go-logging changed because
github.com/anacrolix/torrent requires the current version in its go.mod

        # github.com/op/go-logging
        yunion.io/x/onecloud/cmd/torrent
        github.com/anacrolix/torrent
        github.com/elgatito/upnp
        github.com/op/go-logging

Content of google.golang.org/grpc changed and it's indeed the case after
checking with the upstream repo.  It's very likely that the old content
is wrong.

Some packages like golang.org/x/sys/unix are added because they are
indeeded needed

Some packages are removed as a whole because they are needed anymore
2019-06-25 05:09:07 +00:00
yunion-ci-robot
84ba38e984 Merge pull request #1360 from ioito/automated-cherry-pick-of-#1359-upstream-release-2.10.0
Automated cherry pick of #1359: 替换有远端安全组的规则,避免网络不通
2019-06-25 12:01:50 +08:00
yunion-ci-robot
8cf4fc6230 Merge pull request #1368 from yousong/automated-cherry-pick-of-#1367-release-2.10.0
Automated cherry pick of #1367: lbagents: 改正vrrp模板
2019-06-25 11:45:51 +08:00
Yousong Zhou
203201bda2 validators: 默认将pending deleted的模型排除在外 2019-06-25 02:36:48 +00:00
Yousong Zhou
efaba50fc3 db: 添加IPendingDeletable类型 2019-06-25 02:36:48 +00:00
Yousong Zhou
692675c857 lbagents: 改正vrrp模板 2019-06-25 02:36:47 +00:00
yunion-ci-robot
985941cf32 Merge pull request #1365 from wanyaoqi/automated-cherry-pick-of-#1364-upstream-release-2.10.0
Automated cherry pick of #1364: make dhcp server port optional
2019-06-25 10:35:50 +08:00
yunion-ci-robot
168d9701ef Merge pull request #1362 from swordqiu/automated-cherry-pick-of-#1361-upstream-release-2.10.0
Automated cherry pick of #1361: fix: cloud account syncstatus is not accurate
2019-06-25 08:43:50 +08:00
Qiu Jian
c0fd2c80b9 fix: cloud account syncstatus is not accurate 2019-06-24 22:19:03 +08:00
wanyaoqi
67e0db6fb6 make dhcp server port optional 2019-06-24 20:35:31 +08:00
ioito
595dd97cfa 替换有远端安全组的规则,避免网络不通 2019-06-24 17:37:40 +08:00
yunion-ci-robot
a00867806d Merge pull request #1356 from wanyaoqi/automated-cherry-pick-of-#1336-upstream-release-2.10.0
Automated cherry pick of #1336: dhcp use raw socket vendor update update golang/x/sys
2019-06-24 15:15:49 +08:00
wanyaoqi
5fe178fe19 dhcp use raw socket vendor update update golang/x/sys 2019-06-24 15:01:33 +08:00
yunion-ci-robot
154a658a86 Merge pull request #1351 from swordqiu/automated-cherry-pick-of-#1350-upstream-release-2.10.0
Automated cherry pick of #1350: fix: 1. sync delete projects and related quota&usage data 2. sync delete user/group/domain for ldap driver 3. ModelManager add OrderByExtraFields
2019-06-24 12:42:51 +08:00
yunion-ci-robot
74918c5ae4 Merge pull request #1329 from tb365/automated-cherry-pick-of-#1328-upstream-release-2.10.0
Automated cherry pick of #1328: add init local sku data
2019-06-24 12:41:50 +08:00
Qiu Jian
ef8bf3e844 fix: update gin import 2019-06-24 12:32:49 +08:00
yunion-ci-robot
d08f96f596 Merge pull request #1353 from ioito/automated-cherry-pick-of-#1352-upstream-release-2.10.0
Automated cherry pick of #1352: avoid duplicate network name
2019-06-24 12:32:49 +08:00
Qiu Jian
de3add2d65 update vendor 2019-06-24 12:32:47 +08:00
Qiu Jian
f4b289ffce fix: 1. sync delete projects and related quota&usage data 2. sync delete user/group/domain for ldap driver 3. ModelManager add OrderByExtraFields 2019-06-24 12:31:44 +08:00
ioito
d6584b2553 avoid duplicate network name 2019-06-24 11:22:52 +08:00
yunion-ci-robot
87fedb242c Merge pull request #1349 from wanyaoqi/automated-cherry-pick-of-#1206-upstream-release-2.10.0
Automated cherry pick of #1206: gpfs
2019-06-22 13:00:49 +08:00
wanyaoqi
89e9d83cc1 fix attach storages 2019-06-22 12:51:58 +08:00
wanyaoqi
ead932a0a2 gpfs
- support gpfs
- fix cache non lvm
2019-06-22 12:51:24 +08:00
yunion-ci-robot
cc143b3e72 Merge pull request #1300 from Zexi/automated-cherry-pick-of-#1298-upstream-release-2.10.0
Automated cherry pick of #1298: baremetal: change ipmi user password
2019-06-22 12:45:50 +08:00
yunion-ci-robot
fe13be6d13 Merge pull request #1340 from ioito/automated-cherry-pick-of-#1339-upstream-release-2.10.0
Automated cherry pick of #1339: fix zstack mini disk size
2019-06-22 12:32:49 +08:00
yunion-ci-robot
59319d837f Merge pull request #1332 from yousong/automated-cherry-pick-of-#1271-release-2.10.0
Automated cherry pick of #1271: lbagents: 增加deploy支持
2019-06-22 12:19:49 +08:00
Zexi Li
59ec51770c Merge pull request #1344 from Zexi/automated-cherry-pick-of-#1341-upstream-release-2.10.0
Automated cherry pick of #1341: scheduler: fix prefer avoid score
2019-06-21 14:05:24 +08:00
Zexi
9cd27606ea scheduler: fix prefer avoid score 2019-06-21 13:57:29 +08:00
ioito
ea1625ce61 fix zstack mini disk size 2019-06-21 11:24:12 +08:00
Jian Qiu
9e5df5da0a fix: protect projects with resources in any services (#1338) 2019-06-21 09:09:42 +08:00
yunion-ci-robot
18cfd21b97 Merge pull request #1335 from Zexi/automated-cherry-pick-of-#1334-upstream-release-2.10.0
Automated cherry pick of #1334: scheduler: add image zone filter
2019-06-21 09:08:50 +08:00
Zexi
8416de411d scheduler: add image zone filter 2019-06-20 21:37:11 +08:00
yunion-ci-robot
f58d72d860 Merge pull request #1333 from wanyaoqi/automated-cherry-pick-of-#1330-upstream-release-2.10.0
Automated cherry pick of #1330: remove default listen address
2019-06-20 21:25:50 +08:00
wanyaoqi
4733eb4ffb remove default listen address 2019-06-20 20:45:14 +08:00
Yousong Zhou
3e4636b621 lbagents: 增加deploy支持 2019-06-20 10:12:12 +00:00
Yousong Zhou
afe1fb2165 lb: lbbackendgroups: 去掉多余lbbg.DoPendingDelete() 2019-06-20 10:12:12 +00:00
yunion-ci-robot
fc417aee47 Merge pull request #1225 from yousong/automated-cherry-pick-of-#1223-release-2.10.0
Automated cherry pick of #1223: lb: backends: 仅针对guest类型后端查询vpcId
2019-06-20 17:52:48 +08:00
yunion-ci-robot
15d3b176be Merge pull request #1227 from yousong/automated-cherry-pick-of-#1210-release-2.10.0
Automated cherry pick of #1210: ansibleserver: 在pb执行失败时打出警告日志
2019-06-20 17:50:50 +08:00
Yousong Zhou
0b1f91b847 mcclient: models: 添加ansibleplaybooks 2019-06-20 09:14:55 +00:00
Yousong Zhou
ed4597286d mcclient: ansibleplaybooks: 使用apis.XxxInput 2019-06-20 09:14:55 +00:00
Yousong Zhou
633c3fbd30 apis: add ansible 2019-06-20 09:14:55 +00:00
Yousong Zhou
e84b832282 mcclient: options: ansibleplaybooks: 支持指定文件 2019-06-20 09:14:55 +00:00
Yousong Zhou
421d4bf8db pkg: ansible: 添加文件内容支持 2019-06-20 09:14:55 +00:00
Yousong Zhou
f16913c165 ansibleserver: 在pb执行失败时打出警告日志 2019-06-20 09:14:55 +00:00
yunion-ci-robot
caa9a77e5e Merge pull request #1323 from ioito/automated-cherry-pick-of-#1322-upstream-release-2.10.0
Automated cherry pick of #1322: 避免产生storagecacheimage脏数据
2019-06-20 15:45:48 +08:00
yunion-ci-robot
7856c7f780 Merge pull request #1327 from ioito/automated-cherry-pick-of-#1326-upstream-release-2.10.0
Automated cherry pick of #1326: fix delete rules failure
2019-06-20 15:40:48 +08:00
TangBin
2898bfff6a init skus data filter by region 2019-06-20 11:34:48 +08:00
tangbin
912faadd7b add init local sku data 2019-06-20 11:34:48 +08:00
ioito
8f4af3c7b3 fix delete rules failure 2019-06-20 11:08:33 +08:00
yunion-ci-robot
2920db361e Merge pull request #1325 from swordqiu/automated-cherry-pick-of-#1324-upstream-release-2.10.0
Automated cherry pick of #1324: fix: 1. user-project-list 404 2. check quotas of all projects when set domain quota 3. host.cpu shows negative number
2019-06-20 09:31:49 +08:00
Qiu Jian
6f4a68e21e fix: 1. user-project-list 404 2. check quotas of all projects when set domain quota 3. host.cpu shows negative number 2019-06-20 00:06:52 +08:00
ioito
4b505441b7 避免产生storagecacheimage脏数据 2019-06-19 21:21:19 +08:00
yunion-ci-robot
3e377ffff0 Merge pull request #1318 from wanyaoqi/automated-cherry-pick-of-#1316-upstream-release-2.10.0
Automated cherry pick of #1316: fix storage attach host sync status
2019-06-19 20:17:53 +08:00
wanyaoqi
ffa97dcf82 fix storage attach host sync status 2019-06-19 20:02:00 +08:00
yunion-ci-robot
a67fd9c5cc Merge pull request #1306 from ioito/automated-cherry-pick-of-#1305-upstream-release-2.10.0
Automated cherry pick of #1305: dissocate and release eip optimized\
2019-06-19 18:06:51 +08:00
yunion-ci-robot
86cb77bb6a Merge pull request #1311 from ioito/automated-cherry-pick-of-#1273-upstream-release-2.10.0
Automated cherry pick of #1273: add azure region geographicinfo
2019-06-19 18:02:48 +08:00
yunion-ci-robot
2527b77984 Merge pull request #1315 from ioito/automated-cherry-pick-of-#1314-upstream-release-2.10.0
Automated cherry pick of #1314: fix zstack create account error
2019-06-19 17:57:49 +08:00
ioito
13f7412d6f fix zstack create account error 2019-06-19 17:54:58 +08:00
yunion-ci-robot
c41e7faac3 Merge pull request #1266 from ioito/automated-cherry-pick-of-#1265-upstream-release-2.10.0
Automated cherry pick of #1265: avoid openstack zone externalid equals
2019-06-19 17:46:49 +08:00
yunion-ci-robot
0af400ed00 Merge pull request #1270 from ioito/automated-cherry-pick-of-#1269-upstream-release-2.10.0
Automated cherry pick of #1269: set port when protocol is not any
2019-06-19 17:41:49 +08:00
yunion-ci-robot
6abc204f33 Merge pull request #1302 from ioito/automated-cherry-pick-of-#1301-upstream-release-2.10.0
Automated cherry pick of #1301: fix update zstack account password error
2019-06-19 17:40:49 +08:00
yunion-ci-robot
2aad7f8b84 Merge pull request #1310 from ioito/automated-cherry-pick-of-#1309-upstream-release-2.10.0
Automated cherry pick of #1309: fix invalid memory address or nil pointer error
2019-06-19 17:35:49 +08:00
ioito
c444529690 add azure region geographicinfo 2019-06-19 17:21:53 +08:00
ioito
4eca90b331 fix invalid memory address or nil pointer error 2019-06-19 17:09:35 +08:00
ioito
c696264d17 dissocate and release eip optimized\ 2019-06-19 16:28:37 +08:00
yunion-ci-robot
90e21c3823 Merge pull request #1304 from Zexi/automated-cherry-pick-of-#1303-upstream-release-2.10.0
Automated cherry pick of #1303: region: capabilities add PublicNetworkCount
2019-06-19 15:24:54 +08:00
Zexi
bc4f7a9e10 region: capabilities add PublicNetworkCount 2019-06-19 15:18:38 +08:00
ioito
d07318869a fix update zstack account password error 2019-06-19 15:06:25 +08:00
Zexi
92538dda74 baremetal: change ipmi user password 2019-06-19 11:33:42 +08:00
Jian Qiu
d931a6a067 misc bugfix (#1297) 2019-06-19 02:46:44 +08:00
yunion-ci-robot
9139fecaae Merge pull request #1293 from wanyaoqi/automated-cherry-pick-of-#1292-upstream-release-2.10.0
Automated cherry pick of #1292: unshare projects on change owner
2019-06-18 23:46:56 +08:00
yunion-ci-robot
b199585ebb Merge pull request #1295 from swordqiu/automated-cherry-pick-of-#1294-upstream-release-2.10.0
Automated cherry pick of #1294: fix: user-show system user not found
2019-06-18 23:45:54 +08:00
yunion-ci-robot
29e3e74c84 Merge pull request #1289 from Zexi/automated-cherry-pick-of-#1288-upstream-release-2.10.0
Automated cherry pick of #1288: scheduler: fix shared projects network filtered
2019-06-18 23:44:54 +08:00
Qiu Jian
ea66ba3f0a fix: user-show system user not found 2019-06-18 23:40:26 +08:00
wanyaoqi
c40b544ab0 unshare projects on change owner 2019-06-18 23:25:32 +08:00
yunion-ci-robot
9a42005fd1 Merge pull request #1291 from swordqiu/automated-cherry-pick-of-#1290-upstream-release-2.10.0
Automated cherry pick of #1290: fix: misc bugfxi for quotas
2019-06-18 22:40:55 +08:00
Qiu Jian
52aa709466 fix: misc bugfxi for quotas 2019-06-18 22:37:50 +08:00
Zexi
77185a3922 scheduler: fix shared projects network filtered 2019-06-18 22:23:49 +08:00
yunion-ci-robot
c99869aee6 Merge pull request #1283 from ioito/automated-cherry-pick-of-#1282-upstream-release-2.10.0
Automated cherry pick of #1282: fix zstack storagecache error
2019-06-18 20:22:52 +08:00
yunion-ci-robot
532f374432 Merge pull request #1286 from wanyaoqi/automated-cherry-pick-of-#1255-upstream-release-2.10.0
Automated cherry pick of #1255: fix glance copy from url set checksum
2019-06-18 18:44:52 +08:00
wanyaoqi
2c33aca2b5 fix glance copy from url set checksum 2019-06-18 18:37:10 +08:00
yunion-ci-robot
689c803b34 Merge pull request #1285 from swordqiu/automated-cherry-pick-of-#1284-upstream-release-2.10.0
Automated cherry pick of #1284: fix: add lb and group ip address usage
2019-06-18 18:30:52 +08:00
Qiu Jian
4d673d8d81 fix: add lb and group ip address usage 2019-06-18 18:16:51 +08:00
ioito
749a23864f fix zstack storagecache error 2019-06-18 17:56:51 +08:00
yunion-ci-robot
afb62e8f13 Merge pull request #1279 from wanyaoqi/automated-cherry-pick-of-#1278-upstream-release-2.10.0
Automated cherry pick of #1278: filter storage not attached
2019-06-18 17:22:54 +08:00
wanyaoqi
f82af1da2f filter storage not attached 2019-06-18 16:56:26 +08:00
yunion-ci-robot
14d52679d7 Merge pull request #1277 from swordqiu/automated-cherry-pick-of-#1257-upstream-release-2.10.0
Automated cherry pick of #1257: feature: recode quota, cache quota usage, allow list all project/domain quotas
2019-06-18 12:15:53 +08:00
Qiu Jian
0a76371ad4 fix: misc 2019-06-18 12:09:24 +08:00
Qiu Jian
5436771e81 fix: images quota support 2019-06-18 12:09:24 +08:00
Qiu Jian
8eb2c7af7b feature: recode quota, cache quota usage, allow list all project/domain quotas 2019-06-18 12:09:24 +08:00
Qiu Jian
6547467f31 fix: quota-list includes image quotas 2019-06-18 12:09:24 +08:00
Qiu Jian
ff0ab48953 fix: quota_tbl not initialized 2019-06-18 12:09:24 +08:00
Qiu Jian
bc64f9cd5b fix: images quota support 2019-06-18 12:09:23 +08:00
Qiu Jian
65e0998ab6 feature: recode quota, cache quota usage, allow list all project/domain quotas 2019-06-18 12:09:22 +08:00
Qiu Jian
20d343f126 fix: images quota support 2019-06-18 12:09:22 +08:00
Qiu Jian
b7caca42de feature: recode quota, cache quota usage, allow list all project/domain quotas 2019-06-18 12:09:22 +08:00
yunion-ci-robot
eb1ab003c7 Merge pull request #1264 from swordqiu/automated-cherry-pick-of-#1263-upstream-release-2.10.0
Automated cherry pick of #1263: fix: generate unique name for user totp credential
2019-06-18 11:12:52 +08:00
yunion-ci-robot
794f595136 Merge pull request #1251 from ioito/automated-cherry-pick-of-#1240-upstream-release-2.10.0
Automated cherry pick of #1240: choice valid storage for storagecache
2019-06-18 11:06:52 +08:00
ioito
a5ecc4c52d set port when protocol is not any 2019-06-17 20:57:28 +08:00
ioito
975b82e2ec avoid openstack zone externalid equals 2019-06-17 20:15:50 +08:00
yunion-ci-robot
fc580ea244 Merge pull request #1254 from wanyaoqi/automated-cherry-pick-of-#1073-upstream-release-2.10.0
Automated cherry pick of #1073: register baremetal
2019-06-17 18:19:53 +08:00
Qiu Jian
76f9d0013d fix: generate unique name for user totp credential 2019-06-17 16:45:59 +08:00
yunion-ci-robot
d2860d1f68 Merge pull request #1262 from swordqiu/automated-cherry-pick-of-#1261-upstream-release-2.10.0
Automated cherry pick of #1261: fix: update vendor 20190617
2019-06-17 16:43:54 +08:00
Qiu Jian
06f08ac379 fix: update vendor 20190617 2019-06-17 08:41:36 +00:00
yunion-ci-robot
abf6e431da Merge pull request #1258 from wanyaoqi/automated-cherry-pick-of-#1256-upstream-release-2.10.0
Automated cherry pick of #1256: fix guest sync status interval
2019-06-17 15:51:53 +08:00
wanyaoqi
5b8d090579 fix guest sync status interval 2019-06-17 15:40:27 +08:00
wanyaoqi
6f60ce4cb8 register baremetal 2019-06-17 12:51:57 +08:00
Yousong Zhou
9bf29057c1 pkg: atexit: 增加自定义类型prio 2019-06-17 03:45:27 +00:00
Yousong Zhou
086ba13055 lb: backends: 清理后端虚机已删除的backend 2019-06-17 03:45:27 +00:00
Yousong Zhou
36a890d686 pkg: atexit: 增加PRIO_LOG_OTHER 2019-06-17 03:45:27 +00:00
Yousong Zhou
9ed6b66c46 lb: backends: 仅针对guest类型后端查询vpcId 2019-06-17 03:45:27 +00:00
ioito
da7455e22e choice valid storage for storagecache 2019-06-17 10:15:25 +08:00
Zexi Li
9ef9116862 Merge pull request #1222 from Zexi/automated-cherry-pick-of-#1221-upstream-release-2.10.0
Automated cherry pick of #1221: climc: k8s yaml edit
2019-06-17 10:04:39 +08:00
yunion-ci-robot
10b62ba27e Merge pull request #1250 from wanyaoqi/automated-cherry-pick-of-#1248-upstream-release-2.10.0
Automated cherry pick of #1248: fix share resource left join
2019-06-16 23:32:53 +08:00
wanyaoqi
d17a76756e fix share resource left join 2019-06-16 23:24:26 +08:00
yunion-ci-robot
af73a697fa Merge pull request #1247 from swordqiu/automated-cherry-pick-of-#1246-upstream-release-2.10.0
Automated cherry pick of #1246: fix: network is_public init value set to true for domain scope
2019-06-16 22:20:53 +08:00
Qiu Jian
5d28749920 fix: network is_public init value set to true for domain scope 2019-06-16 22:16:49 +08:00
yunion-ci-robot
1c18f32dc9 Merge pull request #1245 from wanyaoqi/automated-cherry-pick-of-#1244-upstream-release-2.10.0
Automated cherry pick of #1244: fix clean sched cache
2019-06-16 21:57:53 +08:00
wanyaoqi
f2595079df fix clean sched cache 2019-06-16 21:55:22 +08:00
yunion-ci-robot
989cc41202 Merge pull request #1226 from yousong/automated-cherry-pick-of-#1220-release-2.10.0
Automated cherry pick of #1220: cloudaccounts: 检查删除条件时避免不必要log
2019-06-16 21:07:52 +08:00
yunion-ci-robot
88249e0515 Merge pull request #1243 from wanyaoqi/automated-cherry-pick-of-#1234-upstream-release-2.10.0
Automated cherry pick of #1234: fix shared projects
2019-06-16 21:06:53 +08:00
wanyaoqi
2b38051813 fix shared projects 2019-06-16 20:58:55 +08:00
yunion-ci-robot
070c052634 Merge pull request #1239 from ioito/automated-cherry-pick-of-#1238-upstream-release-2.10.0
Automated cherry pick of #1238: secgroup-list remove rules
2019-06-16 20:57:52 +08:00
yunion-ci-robot
4bd75b6b09 Merge pull request #1242 from ioito/automated-cherry-pick-of-#1241-upstream-release-2.10.0
Automated cherry pick of #1241: fix guest-order-by-disk error
2019-06-16 20:55:52 +08:00
ioito
9e8de079c2 fix guest-order-by-disk error 2019-06-16 19:36:14 +08:00
ioito
07b5ef66d0 secgroup-list remove rules 2019-06-16 18:49:32 +08:00
yunion-ci-robot
1f4603b2db Merge pull request #1237 from swordqiu/automated-cherry-pick-of-#1236-upstream-release-2.10.0
Automated cherry pick of #1236: fix: update vendor
2019-06-16 18:09:52 +08:00
Qiu Jian
ba67b3cd12 fix: update vendor 2019-06-16 18:05:57 +08:00
yunion-ci-robot
348a1f0b17 Merge pull request #1235 from ioito/automated-cherry-pick-of-#1228-upstream-release-2.10.0
Automated cherry pick of #1228: fix zstack cdrome error
2019-06-16 18:04:51 +08:00
ioito
4e34a37f75 fix zstack cdrome error 2019-06-16 17:31:23 +08:00
yunion-ci-robot
f7c2a9c0cf Merge pull request #1233 from swordqiu/automated-cherry-pick-of-#1232-upstream-release-2.10.0
Automated cherry pick of #1232: fix: no need to specify query scope when get with parameters
2019-06-16 15:09:51 +08:00
Qiu Jian
67845b0734 fix: no need to specify query scope when get with parameters 2019-06-16 15:07:14 +08:00
yunion-ci-robot
bdfc41933f Merge pull request #1229 from wanyaoqi/automated-cherry-pick-of-#1224-upstream-release-2.10.0
Automated cherry pick of #1224: shared project resource
2019-06-16 14:31:52 +08:00
wanyaoqi
f62aa3d428 shared project resource 2019-06-16 14:29:28 +08:00
Yousong Zhou
0f381cf0b3 cloudaccounts: 检查删除条件时避免不必要log
应由调用方决定是否需要log
2019-06-15 14:04:58 +00:00
yunion-ci-robot
295aa0059b Merge pull request #1213 from ioito/automated-cherry-pick-of-#1196-upstream-release-2.10.0
Automated cherry pick of #1196: fix balance permission error
2019-06-15 21:38:51 +08:00
yunion-ci-robot
3147c69999 Merge pull request #1212 from ioito/automated-cherry-pick-of-#1211-upstream-release-2.10.0
Automated cherry pick of #1211: show error with context
2019-06-15 21:18:52 +08:00
Zexi
2af483ce17 climc: k8s yaml edit 2019-06-15 18:19:17 +08:00
yunion-ci-robot
e313d44f4e Merge pull request #1219 from Zexi/automated-cherry-pick-of-#1218-upstream-release-2.10.0
Automated cherry pick of #1218: scheduler: fix network filter specify is_public check
2019-06-15 17:26:52 +08:00
Zexi
556eef0dd6 scheduler: fix network filter specify is_public check 2019-06-15 17:23:55 +08:00
yunion-ci-robot
6c5bbbf8d7 Merge pull request #1205 from swordqiu/automated-cherry-pick-of-#1204-upstream-release-2.10.0
Automated cherry pick of #1204: fix: fail to list joint virtaul resource of other domain
2019-06-15 16:56:52 +08:00
yunion-ci-robot
ae76f47de0 Merge pull request #1203 from swordqiu/automated-cherry-pick-of-#1202-upstream-release-2.10.0
Automated cherry pick of #1202: fix: cloud-region/zone add domain&scope filter
2019-06-15 16:55:53 +08:00
Zexi Li
dd22086ad0 Merge pull request #1217 from Zexi/automated-cherry-pick-of-#1216-upstream-release-2.10.0
Automated cherry pick of #1216: scheduler: set input networks domain if empty
2019-06-15 15:36:48 +08:00
Zexi
8f5a596a2e scheduler: set input networks domain if empty 2019-06-15 15:31:05 +08:00
ioito
f7aec45099 fix balance permission error 2019-06-15 13:52:39 +08:00
ioito
da89550286 show error with context 2019-06-15 13:39:33 +08:00
yunion-ci-robot
7e7f7083b5 Merge pull request #1185 from tb365/automated-cherry-pick-of-#1184-upstream-release-2.10.0
Automated cherry pick of #1184: qcloud elb create bugfix & ucloud bugfix
2019-06-15 10:40:51 +08:00
yunion-ci-robot
e27d533b58 Merge pull request #1207 from yousong/automated-cherry-pick-of-#1201-release-2.10.0
Automated cherry pick of #1201: cloudcommon: 移除非必要日志
2019-06-15 10:16:52 +08:00
Yousong Zhou
39a5a85f95 cloudcommon: 移除非必要日志 2019-06-14 13:29:04 +00:00
yunion-ci-robot
e59472f251 Merge pull request #1198 from wanyaoqi/automated-cherry-pick-of-#1197-upstream-release-2.10.0
Automated cherry pick of #1197: remove qemu kbd argument
2019-06-14 20:35:52 +08:00
Qiu Jian
86813a5e40 fix: fail to list joint virtaul resource of other domain 2019-06-14 20:24:48 +08:00
Qiu Jian
cfe037522d fix: cloud-region/zone add domain&scope filter 2019-06-14 18:16:38 +08:00
yunion-ci-robot
858852c96e Merge pull request #1200 from ioito/automated-cherry-pick-of-#1199-upstream-release-2.10.0
Automated cherry pick of #1199: create disk and wait disk status is ready
2019-06-14 16:09:51 +08:00
ioito
045e986ff4 create disk and wait disk status is ready 2019-06-14 16:05:28 +08:00
wanyaoqi
afeaeb598d remove qemu kbd argument 2019-06-14 13:43:40 +08:00
yunion-ci-robot
73cd37d1aa Merge pull request #1195 from swordqiu/automated-cherry-pick-of-#1194-upstream-release-2.10.0
Automated cherry pick of #1194: fix: sync network publicScope
2019-06-14 12:03:52 +08:00
yunion-ci-robot
2d58bc129e Merge pull request #1193 from Zexi/automated-cherry-pick-of-#1192-upstream-release-2.10.0
Automated cherry pick of #1192: scheduler: network domain scope filter
2019-06-14 12:02:51 +08:00
Qiu Jian
2ca0f9aa20 fix: sync network publicScope 2019-06-14 11:59:22 +08:00
Zexi
5fa6d5fce6 scheduler: network domain scope filter 2019-06-14 10:28:34 +08:00
yunion-ci-robot
51c80309f6 Merge pull request #1190 from Zexi/automated-cherry-pick-of-#1189-upstream-release-2.10.0
Automated cherry pick of #1189: scheduler: select networks by project domain order
2019-06-13 21:55:51 +08:00
Zexi
56e4c080d9 scheduler: select networks by project domain order 2019-06-13 21:52:31 +08:00
yunion-ci-robot
c92b9d3a60 Merge pull request #1188 from swordqiu/automated-cherry-pick-of-#1187-upstream-release-2.10.0
Automated cherry pick of #1187: fix: change domain to project_domain
2019-06-13 21:40:52 +08:00
Qiu Jian
b1d6ddec3d fix: change domain to project_domain 2019-06-13 21:11:00 +08:00
yunion-ci-robot
b06548c3e6 Merge pull request #1181 from ioito/automated-cherry-pick-of-#1180-upstream-release-2.10.0
Automated cherry pick of #1180: fix typo code
2019-06-13 20:41:53 +08:00
yunion-ci-robot
ee2f2f4a2f Merge pull request #1183 from swordqiu/automated-cherry-pick-of-#1182-upstream-release-2.10.0
Automated cherry pick of #1182: fix: role-list missing shared roles
2019-06-13 20:39:52 +08:00
TangBin
b826c6e1ff qcloud elb create bugfix & ucloud bugfix 2019-06-13 20:36:41 +08:00
Qiu Jian
cae068b049 fix: role-list missing shared roles 2019-06-13 20:01:26 +08:00
ioito
36b0e20fa7 fix typo code 2019-06-13 19:49:27 +08:00
yunion-ci-robot
0022264c1b Merge pull request #1163 from yousong/automated-cherry-pick-of-#1147-release-2.10.0
Automated cherry pick of #1147: ansibleserver: 创建opslog表
2019-06-13 16:24:51 +08:00
yunion-ci-robot
889cddc5a4 Merge pull request #1157 from ioito/automated-cherry-pick-of-#1086-upstream-release-2.10.0
Automated cherry pick of #1086: 创建完磁盘后attach guest
2019-06-13 16:21:53 +08:00
yunion-ci-robot
6cd597c333 Merge pull request #1179 from Zexi/automated-cherry-pick-of-#1178-upstream-release-2.10.0
Automated cherry pick of #1178: virtual resource details rename domain to project_domain
2019-06-13 16:19:51 +08:00
Zexi
ed46ba92ca virtual resource details rename domain to project_domain 2019-06-13 16:15:24 +08:00
yunion-ci-robot
09f6a06c87 Merge pull request #1177 from Zexi/automated-cherry-pick-of-#1176-upstream-release-2.10.0
Automated cherry pick of #1176: region: fix pending_deleted virtual resource filter by name
2019-06-13 15:24:52 +08:00
Zexi
4da94c7e4d region: fix pending_deleted virtual resource filter by name 2019-06-13 15:18:42 +08:00
yunion-ci-robot
6f2026f058 Merge pull request #1169 from yousong/automated-cherry-pick-of-#1168-release-2.10.0
Automated cherry pick of #1168: webconsole: 改正文件权限
2019-06-13 14:23:53 +08:00
yunion-ci-robot
4cd23ac007 Merge pull request #1173 from swordqiu/automated-cherry-pick-of-#1172-upstream-release-2.10.0
Automated cherry pick of #1172: fix: 1. project add user/group rpc paramter error 2. secgrouprule 403 3.
2019-06-13 14:12:53 +08:00
Qiu Jian
0714b3ed50 fix: 1. project add user/group rpc paramter error 2. secgrouprule 403 3. 2019-06-13 14:09:56 +08:00
Yousong Zhou
13639afefd webconsole: 改正文件权限
- 密钥不需要执行权限
 - 先改权限再写内容
2019-06-12 10:27:10 +00:00
yunion-ci-robot
55c813c5aa Merge pull request #1165 from ioito/automated-cherry-pick-of-#1164-upstream-release-2.10.0
Automated cherry pick of #1164: 添加vpc操作日志
2019-06-12 18:02:52 +08:00
ioito
c3875302c4 添加vpc操作日志 2019-06-12 16:59:00 +08:00
Yousong Zhou
e25f38695d build: 添加ansibleserver 2019-06-12 08:19:13 +00:00
Yousong Zhou
0cfb162300 ansibleserver: 使用API查sshkeypairs 2019-06-12 08:19:13 +00:00
Yousong Zhou
2999d6001d mcclient: models: 添加SshKeypair 2019-06-12 08:19:12 +00:00
Yousong Zhou
74465c44e6 mcclient: sshkeypairs: 允许参数为nil 2019-06-12 08:19:12 +00:00
Yousong Zhou
236333a5da ansibleserver: 避免持锁不释放的情况 2019-06-12 08:19:12 +00:00
Yousong Zhou
eb535a3054 ansibleserver: 创建opslog表 2019-06-12 08:19:12 +00:00
yunion-ci-robot
21f9f67755 Merge pull request #1154 from ioito/automated-cherry-pick-of-#1120-upstream-release-2.10.0
Automated cherry pick of #1120: network创建或删除后刷新调度缓存
2019-06-12 15:25:52 +08:00
yunion-ci-robot
09f3352edb Merge pull request #1159 from wanyaoqi/automated-cherry-pick-of-#1158-upstream-release-2.10.0
Automated cherry pick of #1158: fix attach able storage
2019-06-12 14:43:52 +08:00
wanyaoqi
fd8aa826e2 fix attach able storage 2019-06-12 13:54:32 +08:00
yunion-ci-robot
c790d2e35c Merge pull request #1153 from Zexi/automated-cherry-pick-of-#1152-upstream-release-2.10.0
Automated cherry pick of #1152: scheduler: support sharable candidate
2019-06-12 11:50:52 +08:00
ioito
047dd93df3 创建完磁盘后attach guest 2019-06-12 11:44:24 +08:00
ioito
04ee6d6d59 network创建或删除后刷新调度缓存 2019-06-12 11:38:00 +08:00
Zexi
aca63eb14f scheduler: support sharable candidate 2019-06-12 11:35:28 +08:00
yunion-ci-robot
482451851e Merge pull request #1148 from swordqiu/automated-cherry-pick-of-#1146-upstream-release-2.10.0
Automated cherry pick of #1146: fix: 1. capability privilege interface bugfix 2. cloud-provider privilege issue
2019-06-12 09:42:52 +08:00
yunion-ci-robot
5a0d147b8e Merge pull request #1150 from zhasm/automated-cherry-pick-of-#1149-upstream-release-2.10.0
Automated cherry pick of #1149: +ansibleserver
2019-06-12 09:33:50 +08:00
Zhang Dongliang
ee016ef207 +ansibleserver 2019-06-12 09:29:20 +08:00
yunion-ci-robot
bc27a1f383 Merge pull request #1117 from ioito/automated-cherry-pick-of-#1116-upstream-release-2.10.0
Automated cherry pick of #1116: fix qcloud disk create name error
2019-06-12 09:04:52 +08:00
Qiu Jian
d392f41a55 fix: 1. capability privilege interface bugfix 2. cloud-provider privilege issue 2019-06-12 09:00:37 +08:00
yunion-ci-robot
5dc4277bef Merge pull request #1133 from yousong/automated-cherry-pick-of-#910-release-2.10.0
Automated cherry pick of #910: ansible服务化
2019-06-12 08:37:50 +08:00
yunion-ci-robot
5a018efb9d Merge pull request #1145 from Zexi/automated-cherry-pick-of-#1144-upstream-release-2.10.0
Automated cherry pick of #1144: fix: region disk create domain id
2019-06-11 23:11:53 +08:00
yunion-ci-robot
205c56b1b6 Merge pull request #1139 from yousong/automated-cherry-pick-of-#1130-release-2.10.0
Automated cherry pick of #1130: networks: merge与split时将lbnetwork考虑进去
2019-06-11 23:04:53 +08:00
Zexi
7acbb3976c fix: region disk create domain id 2019-06-11 23:01:07 +08:00
yunion-ci-robot
75939d52f3 Merge pull request #1143 from Zexi/automated-cherry-pick-of-#1142-upstream-release-2.10.0
Automated cherry pick of #1142: scheduler: misc bugfix
2019-06-11 20:33:52 +08:00
yunion-ci-robot
4960c7f54e Merge pull request #1136 from wanyaoqi/automated-cherry-pick-of-#1135-upstream-release-2.10.0
Automated cherry pick of #1135: fix disk delete task base
2019-06-11 20:32:54 +08:00
Zexi
2b4d801ee9 scheduler: misc bugfix
- wait region db sync
- disk schedule filter by domain
- normal user forecast 403 forbidden
2019-06-11 20:31:14 +08:00
Yousong Zhou
4b1ec8325e networks: merge与split时将lbnetwork考虑进去
- 共用代码,并放到独立的文件中
 - 尽力更新,中途出错不中断,最后一起报出
2019-06-11 06:10:26 +00:00
wanyaoqi
cfa66ce805 fix disk delete task base 2019-06-11 11:05:53 +08:00
yunion-ci-robot
083bc1caa5 Merge pull request #1132 from swordqiu/automated-cherry-pick-of-#1131-upstream-release-2.10.0
Automated cherry pick of #1131: fix: 1. zone/region capability containts by domain 2. yunionconf query scope fixes
2019-06-11 09:46:51 +08:00
yunion-ci-robot
8f2949409d Merge pull request #1112 from swordqiu/automated-cherry-pick-of-#1111-upstream-release-2.10.0
Automated cherry pick of #1111: fix: image-show missing can-delete/can-update fields
2019-06-11 09:45:51 +08:00
Qiu Jian
f7453b3796 fix: image header encode extra property string 2019-06-11 09:42:49 +08:00
Qiu Jian
cf467e85f9 fix: image-show missing can-delete/can-update fields 2019-06-11 09:42:49 +08:00
yunion-ci-robot
e4d658ef84 Merge pull request #1126 from ioito/automated-cherry-pick-of-#1121-upstream-release-2.10.0
Automated cherry pick of #1121: 添加brand字段限制
2019-06-11 08:52:50 +08:00
Yousong Zhou
6b35141381 ansibleserver: as a separate service 2019-06-11 00:29:55 +00:00
Yousong Zhou
8949895cda climc: add ansibleplaybook-xxx commands 2019-06-11 00:29:55 +00:00
Yousong Zhou
0d9f757bf7 region: add ansibleplaybooks 2019-06-11 00:29:55 +00:00
Yousong Zhou
24b3bcce21 pkg: ansible: add inventory, module, playbook 2019-06-11 00:29:55 +00:00
Yousong Zhou
30dbfad3f2 vendor: update github.com/pkg/errors
Add WithMessagef()
2019-06-11 00:29:55 +00:00
Yousong Zhou
3eaae176a4 climc: ansible-hosts: print newline at the end 2019-06-11 00:29:55 +00:00
Yousong Zhou
a8bb6e741f validators: add SetParent() 2019-06-11 00:29:55 +00:00
Yousong Zhou
3d49777d0f guests: add guest.GetPrivateIPs() 2019-06-11 00:29:55 +00:00
Qiu Jian
dd158aa439 fix: 1. zone/region capability containts by domain 2. yunionconf query scope fixes 2019-06-11 01:33:06 +08:00
Zexi Li
c179a91f35 Merge pull request #1128 from Zexi/automated-cherry-pick-of-#1127-upstream-release-2.10.0
Automated cherry pick of #1127: scheduler: add domain filter
2019-06-10 19:47:36 +08:00
Zexi
725c82152e scheduler: add domain filter 2019-06-10 19:44:43 +08:00
ioito
f68d13db7c 添加brand字段限制 2019-06-10 19:16:03 +08:00
yunion-ci-robot
30d71a95b4 Merge pull request #1115 from Zexi/automated-cherry-pick-of-#1114-upstream-release-2.10.0
Automated cherry pick of #1114: scheduler: host filter by cloudprovider domain id
2019-06-10 19:09:50 +08:00
yunion-ci-robot
0b6bef9328 Merge pull request #1061 from Zexi/automated-cherry-pick-of-#1054-upstream-release-2.10.0
Automated cherry pick of #1054: fix: baremetal raid logical volume and block device map
2019-06-10 19:06:52 +08:00
Zexi
89bb4413dd fix: baremetal find incorrect root disk 2019-06-10 18:01:05 +08:00
Zexi Li
91a691ea61 Merge pull request #1123 from Zexi/automated-cherry-pick-of-#1122-upstream-release-2.10.0
Automated cherry pick of #1122: scheduler: recover panic when stop timer
2019-06-10 17:14:24 +08:00
Zexi
d3c9ab3730 scheduler: recover panic when stop timer 2019-06-10 17:12:45 +08:00
ioito
cd05218a64 fix qcloud disk create name error 2019-06-10 16:04:26 +08:00
Zexi
a9b90d80ef scheduler: host filter by cloudprovider domain id 2019-06-10 12:20:24 +08:00
yunion-ci-robot
a627fdc3ba Merge pull request #1108 from wanyaoqi/automated-cherry-pick-of-#1099-upstream-release-2.10.0
Automated cherry pick of #1099: fix reserved memory
2019-06-09 23:01:51 +08:00
wanyaoqi
e134b16302 fix disk delete 2019-06-09 22:58:03 +08:00
wanyaoqi
f61cbb91d0 fix reserved memory 2019-06-09 22:58:03 +08:00
yunion-ci-robot
9430c20cb9 Merge pull request #1107 from Zexi/automated-cherry-pick-of-#1104-upstream-release-2.10.0
Automated cherry pick of #1104: fix: disk input erase storage_id by backend
2019-06-09 11:18:51 +08:00
Zexi
ad7bd4b7a5 fix: disk input erase storage_id by backend 2019-06-09 11:03:47 +08:00
yunion-ci-robot
02c103cffc Merge pull request #1101 from wanyaoqi/automated-cherry-pick-of-#1100-upstream-release-2.10.0
Automated cherry pick of #1100: gpfs
2019-06-09 00:59:53 +08:00
Jian Qiu
c927afceda Automated cherry pick of #1097: fix: 1. 403 on zone/capabilities, parameters (#1098)
* fix: 1. 403 on zone/capabilities, parameters

* fix keystone authenticate error

* fix: endpoint add type console
2019-06-09 00:54:46 +08:00
yunion-ci-robot
3660355deb Merge pull request #1093 from ioito/automated-cherry-pick-of-#1092-upstream-release-2.10.0
Automated cherry pick of #1092: 修复参数赋值问题
2019-06-06 23:24:52 +08:00
wanyaoqi
7a6d766bde gpfs 2019-06-06 23:17:35 +08:00
yunion-ci-robot
f3b6eef9b3 Merge pull request #1051 from tb365/automated-cherry-pick-of-#1050-upstream-release-2.10.0
Automated cherry pick of #1050: ucloud image upload bugfix & storage type fix
2019-06-06 20:09:50 +08:00
TangBin
9a8d88abe6 fmt import 2019-06-06 20:03:26 +08:00
TangBin
db5954365f ucloud image upload bugfix & storage type fix 2019-06-06 20:03:26 +08:00
yunion-ci-robot
7e082a750a Merge pull request #1096 from yousong/automated-cherry-pick-of-#1091-upstream-release-2.10.0
Automated cherry pick of #1091: README.md: 适应travis迁移至travis-ci.com
2019-06-06 19:53:51 +08:00
Yousong Zhou
5eeb1f1f1b README.md: 添加文档链接 2019-06-06 11:40:01 +00:00
Yousong Zhou
01bf2e592d README.md: 适应travis迁移至travis-ci.com 2019-06-06 11:40:01 +00:00
ioito
7d80096243 修复参数赋值问题 2019-06-06 18:13:33 +08:00
yunion-ci-robot
fb6565af39 Merge pull request #1088 from swordqiu/automated-cherry-pick-of-#1087-upstream-release-2.10.0
Automated cherry pick of #1087: fix: numerous incorrect privilege issues
2019-06-06 10:24:50 +08:00
Qiu Jian
ca32292d42 fix: pending_delete/system list options no need admin params 2019-06-06 08:34:13 +08:00
Qiu Jian
ed49732027 fix: numerous incorrect privilege issues 2019-06-06 08:34:13 +08:00
yunion-ci-robot
7b65e12dee Merge pull request #1085 from wanyaoqi/automated-cherry-pick-of-#1084-upstream-release-2.10.0
Automated cherry pick of #1084: fix exsi encrypt base64
2019-06-05 22:08:51 +08:00
wanyaoqi
5ec94babd1 fix exsi encrypt base64 2019-06-05 22:02:37 +08:00
yunion-ci-robot
16a8070f54 Merge pull request #1077 from ioito/automated-cherry-pick-of-#1076-upstream-release-2.10.0
Automated cherry pick of #1076: 避免OpenStack为设置默认值,导致认证失败
2019-06-05 20:17:50 +08:00
yunion-ci-robot
2b38dc34cb Merge pull request #1079 from ioito/automated-cherry-pick-of-#1078-upstream-release-2.10.0
Automated cherry pick of #1078: 修复deleted disk无法删除问题
2019-06-05 20:16:49 +08:00
yunion-ci-robot
87007f0915 Merge pull request #1083 from ioito/automated-cherry-pick-of-#1082-upstream-release-2.10.0
Automated cherry pick of #1082: 适配最新版cloud-init
2019-06-05 20:12:50 +08:00
ioito
20143c0f59 适配最新版cloud-init 2019-06-05 20:08:10 +08:00
yunion-ci-robot
af2e09cc65 Merge pull request #1081 from tb365/automated-cherry-pick-of-#1080-upstream-release-2.10.0
Automated cherry pick of #1080: image upload remove os type
2019-06-05 17:51:50 +08:00
TangBin
fe2a389353 image upload remove os type 2019-06-05 17:46:21 +08:00
ioito
10caa5c6dc 补充删除镜像方法 2019-06-05 17:30:48 +08:00
ioito
7f3691786b 修复deleted disk无法删除问题 2019-06-05 17:30:48 +08:00
ioito
3630033470 避免OpenStack为设置默认值,导致认证失败 2019-06-05 16:57:23 +08:00
yunion-ci-robot
1de294b625 Merge pull request #1075 from ioito/automated-cherry-pick-of-#1074-upstream-release-2.10.0
Automated cherry pick of #1074: cachedimage-filter-by-region-or-zone
2019-06-05 15:51:52 +08:00
ioito
bf36c14c20 cachedimage-filter-by-region-or-zone 2019-06-05 15:49:12 +08:00
yunion-ci-robot
4c3d83ef95 Merge pull request #1070 from Zexi/automated-cherry-pick-of-#1068-upstream-release-2.10.0
Automated cherry pick of #1068: fix: baremetal MegaRaid mul adapter parse error
2019-06-05 10:35:50 +08:00
yunion-ci-robot
2e65f47030 Merge pull request #1072 from wanyaoqi/automated-cherry-pick-of-#1071-upstream-release-2.10.0
Automated cherry pick of #1071: add normal notofy
2019-06-05 10:32:51 +08:00
wanyaoqi
8652ce9b12 add normal notofy 2019-06-05 10:30:20 +08:00
Zexi
a3dbcf55f0 fix: baremetal MegaRaid mul adapter parse error 2019-06-05 10:29:28 +08:00
yunion-ci-robot
a8de9f5d88 Merge pull request #1065 from yousong/automated-cherry-pick-of-#1063-upstream-release-2.10.0
Automated cherry pick of #1063: cloudproviders: 调整lb资源清理顺序
2019-06-05 10:02:50 +08:00
Yousong Zhou
350c461239 cloudproviders: 调整lb资源清理顺序
lbbg可能被lblis引用,应先清理lblis,再清理lbbg
2019-06-04 17:06:19 +00:00
Yousong Zhou
c8d964295e Merge pull request #1060 from ioito/automated-cherry-pick-of-#1059-upstream-release-2.10.0
Automated cherry pick of #1059: 避免未设置hypervisor导致创建磁盘失败
2019-06-05 01:02:20 +08:00
Yousong Zhou
5d269c575d Merge pull request #1049 from swordqiu/automated-cherry-pick-of-#1048-upstream-release-2.10.0
Automated cherry pick of #1048: hotfix: support scope list filter, resolve filter conflict
2019-06-05 00:39:29 +08:00
yunion-ci-robot
8e5da1cef3 Merge pull request #1058 from ioito/automated-cherry-pick-of-#1057-upstream-release-2.10.0
Automated cherry pick of #1057: 修复zstack绑定多个storage时重复创建disk问题
2019-06-05 00:06:49 +08:00
yunion-ci-robot
e7a0596a81 Merge pull request #1056 from ioito/automated-cherry-pick-of-#1055-upstream-release-2.10.0
Automated cherry pick of #1055: support filter by OneCloud brand
2019-06-04 23:37:50 +08:00
Qiu Jian
6c31178c05 update vendor 2019-06-04 23:29:39 +08:00
Qiu Jian
b9989907d4 fix: bugs in scope support 2019-06-04 23:29:39 +08:00
Qiu Jian
e0c202e346 hotfix: support scope list filter, resolve filter conflict 2019-06-04 23:29:39 +08:00
ioito
62baf971c2 避免未设置hypervisor导致创建磁盘失败 2019-06-04 21:24:09 +08:00
ioito
d94b0e1751 修复zstack绑定多个storage时重复创建disk问题 2019-06-04 20:21:55 +08:00
ioito
79aa2a4446 support filter by OneCloud brand 2019-06-04 19:35:01 +08:00
yunion-ci-robot
dec14853cc Merge pull request #1053 from tb365/automated-cherry-pick-of-#1052-upstream-release-2.10.0
Automated cherry pick of #1052: httperror-set-header-fix
2019-06-04 11:17:57 +08:00
TangBin
c5d5bd5c76 httperror-set-header-fix 2019-06-04 11:11:28 +08:00
yunion-ci-robot
114534bf6d Merge pull request #1043 from ioito/automated-cherry-pick-of-#1042-upstream-release-2.10.0
Automated cherry pick of #1042: 避免级联镜像分类不一致
2019-06-04 09:08:56 +08:00
yunion-ci-robot
cf0130d191 Merge pull request #1047 from tb365/automated-cherry-pick-of-#1046-upstream-release-2.10.0
Automated cherry pick of #1046: parameter create fix
2019-06-03 19:10:56 +08:00
TangBin
6a5ec46031 parameter model GetOwnerId fix 2019-06-03 19:08:13 +08:00
TangBin
b495c14cfa parameter create fix && itsm add quick complete method 2019-06-03 19:08:13 +08:00
TangBin
73a13847b4 parameter create fix 2019-06-03 19:08:13 +08:00
yunion-ci-robot
cc3951bb57 Merge pull request #1028 from ioito/automated-cherry-pick-of-#1024-upstream-release-2.10.0
Automated cherry pick of #1024: 避免未使用最优storage
2019-06-03 18:20:56 +08:00
yunion-ci-robot
657a3048c3 Merge pull request #1039 from wanyaoqi/automated-cherry-pick-of-#1038-upstream-release-2.10.0
Automated cherry pick of #1038: fix imported bm server start
2019-06-03 18:07:55 +08:00
yunion-ci-robot
99fa676b17 Merge pull request #1045 from swordqiu/automated-cherry-pick-of-#1044-upstream-release-2.10.0
Automated cherry pick of #1044: fix: server-disk-list failed on wrong field name
2019-06-03 17:30:56 +08:00
Qiu Jian
3812bb43af fix: server-disk-list failed on wrong field name 2019-06-03 17:24:18 +08:00
ioito
0223a57197 避免级联镜像分类不一致 2019-06-03 17:05:09 +08:00
wanyaoqi
fd0bb33afb fix imported bm server start 2019-06-03 15:26:21 +08:00
Jian Qiu
c28d8d1830 3level priviliges bufixes 20190603 (#1037) 2019-06-03 12:31:13 +08:00
Jian Qiu
7e44f2a02e update vendor (#1035) 2019-06-03 12:23:24 +08:00
ioito
70e15e4895 避免未使用最优storage 2019-06-03 10:06:50 +08:00
Jian Qiu
c515082dd1 Automated cherry pick of #1026: fix: misc 3level priviliges bugfixes (#1027)
* fix: misc 3level priviliges bugfixes

* misc bugfixes

* misc bugfixes
2019-06-02 08:05:28 +08:00
Jian Qiu
155e0d7386 fix: keystone fernet setup bugs and other bugs (#1023) 2019-06-01 17:31:36 +08:00
yunion-ci-robot
4f5c6dea41 Merge pull request #1019 from yunion-ci-robot/cherry-pick-967-to-release/2.10.0
[release/2.10.0] 避免buf copy占用太多内存
2019-06-01 17:28:16 +08:00
yunion-ci-robot
977d9e6e66 Merge pull request #1021 from zhasm/automated-cherry-pick-of-#1018-upstream-release-2.10.0
Automated cherry pick of #1018: 新增 keystone vars 文件以便编译 rpm; wording
2019-06-01 15:48:06 +08:00
Zhang Dongliang
81b23eea46 新增 keystone vars 文件以便编译 rpm; wording 2019-06-01 15:32:17 +08:00
ioito
feac694f35 避免buf copy占用太多内存 2019-06-01 04:02:19 +00:00
yunion-ci-robot
6cbc1896a5 Merge pull request #1013 from swordqiu/automated-cherry-pick-of-#908-upstream-release-2.10.0
Automated cherry pick of #908: feature: keystone support phase 1
2019-05-31 14:30:19 +08:00
Qiu Jian
288bd3e1c3 fix: client auth needs project domain info 2019-05-31 14:24:34 +08:00
Qiu Jian
bce064dd15 update vendor 2019-05-31 14:24:33 +08:00
Qiu Jian
fe0839992e minor fixes 2019-05-31 14:24:33 +08:00
Qiu Jian
c8b133e272 allow login without specifying user's domain 2019-05-31 14:24:33 +08:00
Qiu Jian
0343e07217 feature: support identity provider and more... 2019-05-31 14:24:33 +08:00
Qiu Jian
afd1f0fe60 misc fixes 2019-05-31 14:21:53 +08:00
Qiu Jian
2e9c5005f1 bugfixes 2019-05-31 14:21:53 +08:00
Qiu Jian
e5343742ab feature: 3-level policies, system/domain/project 2019-05-31 14:21:53 +08:00
Qiu Jian
c0673c6ecb fix: add keystone initialization procedures 2019-05-31 14:21:53 +08:00
Qiu Jian
0cde6fd34a feature: keystone support phase 1 2019-05-31 14:21:52 +08:00
Qiu Jian
d124854e3b resolve merge conflict 2019-05-31 14:21:52 +08:00
Qiu Jian
f6e32772d7 misc fixes 2019-05-31 14:21:52 +08:00
Qiu Jian
f8ee96ff9a bugfixes 2019-05-31 14:21:52 +08:00
Qiu Jian
97010fae73 update vendor 2019-05-31 14:21:52 +08:00
Qiu Jian
c005db28b9 feature: 3-level policies, system/domain/project 2019-05-31 14:21:52 +08:00
Qiu Jian
12d9d63628 fix: add keystone initialization procedures 2019-05-31 14:19:05 +08:00
Qiu Jian
20a6927e63 feature: keystone support phase 1 2019-05-31 14:19:05 +08:00
yunion-ci-robot
24ce4395e1 Merge pull request #984 from swordqiu/automated-cherry-pick-of-#983-upstream-release-2.10.0
Automated cherry pick of #983: fix: esxi vm may fail on start or delete in batch
2019-05-31 13:51:22 +08:00
yunion-ci-robot
585874edee Merge pull request #1012 from yunion-ci-robot/cherry-pick-1009-to-release/2.10.0
[release/2.10.0] fix on guest migrate fail
2019-05-31 13:18:20 +08:00
wanyaoqi
3584748d5b fix on guest migrate fail 2019-05-31 05:16:22 +00:00
yunion-ci-robot
a7188477b7 Merge pull request #1008 from yunion-ci-robot/cherry-pick-1004-to-release/2.10.0
[release/2.10.0] lb: 添加PROXY协议支持
2019-05-31 12:34:19 +08:00
Yousong Zhou
c0c51730d7 lb: 添加PROXY协议支持
默认关闭(off),支持v1, v2, v2-ssl, v2-ssl-cn

可分别在listener, backend上控制

 - 若listener.send_proxy不为off,以listener.backend_proxy为准
 - 若listener.send_proxy为off,以backend.send_proxy为准
2019-05-31 04:31:38 +00:00
yunion-ci-robot
5a5de52d08 Merge pull request #1006 from ioito/automated-cherry-pick-of-#1005-upstream-release-2.10.0
Automated cherry pick of #1005: 避免出现err==nil&&n==0的情况
2019-05-31 12:22:21 +08:00
ioito
9c44e831e8 避免出现err==nil&&n==0的情况 2019-05-31 12:13:59 +08:00
yunion-ci-robot
5302a9f227 Merge pull request #1002 from yunion-ci-robot/cherry-pick-991-to-release/2.10.0
[release/2.10.0] scheduler: remove gorm code
2019-05-30 23:46:21 +08:00
yunion-ci-robot
da87e4d3ef Merge pull request #1001 from yunion-ci-robot/cherry-pick-992-to-release/2.10.0
[release/2.10.0] 避免同步云路由器镜像
2019-05-30 22:45:19 +08:00
Zexi
4619115df9 scheduler: remove gorm code 2019-05-30 14:43:58 +00:00
ioito
eff3babfde 避免同步云路由器镜像 2019-05-30 14:05:53 +00:00
yunion-ci-robot
42bbe3e3ed Merge pull request #1000 from yunion-ci-robot/cherry-pick-977-to-release/2.10.0
[release/2.10.0] Bugfix/wyq/fix glance notify
2019-05-30 19:13:19 +08:00
wanyaoqi
e19bca42b1 glance detect disable lvm 2019-05-30 11:11:30 +00:00
wanyaoqi
0bed2eb65f - fix image status on upload failed - fix init nbd 2019-05-30 11:11:30 +00:00
wanyaoqi
711bf829cd fix glance notify 2019-05-30 11:11:30 +00:00
yunion-ci-robot
3f3f68cba0 Merge pull request #990 from yunion-ci-robot/cherry-pick-898-to-release/2.10.0
[release/2.10.0] 简化provider-factory代码
2019-05-30 19:10:21 +08:00
yunion-ci-robot
f6ef955c3a Merge pull request #999 from yunion-ci-robot/cherry-pick-968-to-release/2.10.0
[release/2.10.0] 避免oUserData为nil时野指针访问
2019-05-30 17:49:22 +08:00
ioito
886d2ca7d1 避免oUserData为nil时野指针访问 2019-05-30 09:37:57 +00:00
yunion-ci-robot
6daf825ecf Merge pull request #994 from yunion-ci-robot/cherry-pick-993-to-release/2.10.0
[release/2.10.0] fix guest display metadata
2019-05-30 16:56:25 +08:00
wanyaoqi
0fe63fa7ef fix guest display metadata 2019-05-30 08:48:31 +00:00
ioito
0d9f32152f 简化代码 2019-05-30 08:13:37 +00:00
yunion-ci-robot
2db94a99e5 Merge pull request #987 from yunion-ci-robot/cherry-pick-955-to-release/2.10.0
[release/2.10.0] 避免webconsole频繁连接server,导致IP被封禁
2019-05-30 15:10:18 +08:00
ioito
1b336fcff7 避免频繁连接server 2019-05-30 07:03:43 +00:00
Qiu Jian
a92b5ac9f8 fix: esxi vm may fail on start or delete in batch 2019-05-30 14:43:10 +08:00
yunion-ci-robot
2a95df157a Merge pull request #982 from Zexi/automated-cherry-pick-of-#978-upstream-release-2.10.0
Automated cherry pick of #978: scheduler: add pending usage process
2019-05-29 20:40:20 +08:00
yunion-ci-robot
5a7dd2dfa9 Merge pull request #980 from yunion-ci-robot/cherry-pick-976-to-release/2.10.0
[release/2.10.0] docs: 添加认证描述
2019-05-29 19:59:18 +08:00
Zexi
b9d8a95dbc scheduler: add pending usage process 2019-05-29 19:58:59 +08:00
Yousong Zhou
19af85ad6d docs: 添加swagger标准文档链接 2019-05-29 11:56:32 +00:00
Yousong Zhou
540b68c4f7 docs: 添加认证描述 2019-05-29 11:56:32 +00:00
yunion-ci-robot
10280ab7fb Merge pull request #975 from yunion-ci-robot/cherry-pick-974-to-release/2.10.0
[release/2.10.0] docs: 添加swagger.yaml
2019-05-29 17:09:21 +08:00
Yousong Zhou
5592297f51 docs: 添加swagger.yaml 2019-05-29 09:07:30 +00:00
yunion-ci-robot
811eb35fee Merge pull request #970 from yunion-ci-robot/cherry-pick-969-to-release/2.10.0
[release/2.10.0] yunionconf parameter serivce bugfix
2019-05-29 16:41:18 +08:00
yunion-ci-robot
267b5fcfa4 Merge pull request #972 from yunion-ci-robot/cherry-pick-971-to-release/2.10.0
[release/2.10.0] scheduler: fix nets result not select
2019-05-29 16:25:20 +08:00
Zexi
0a974548c0 scheduler: fix nets result not select 2019-05-29 08:19:29 +00:00
TangBin
5afc497fdd yunionconf parameter serivce bugfix 2019-05-29 07:50:40 +00:00
yunion-ci-robot
608cf8bab1 Merge pull request #964 from yunion-ci-robot/cherry-pick-956-to-release/2.10.0
[release/2.10.0] lb: 支持直接指定ip作为后端
2019-05-29 11:44:20 +08:00
Yousong Zhou
07b1107449 mcclient: options: use --loadbalancer for consistency
Fixes 2df78f
2019-05-29 01:51:32 +00:00
Yousong Zhou
a2386a270c loadbalancerbackends: 支持直接指定IP地址 2019-05-29 01:51:32 +00:00
yunion-ci-robot
8deed2a9a1 Merge pull request #962 from Zexi/automated-cherry-pick-of-#961-upstream-release-2.10.0
Automated cherry pick of #961: fix: schedule fatal error concurrent map writes
2019-05-29 09:50:18 +08:00
Zexi
f05c98692a fix: schedule fatal error concurrent map writes 2019-05-29 09:46:16 +08:00
yunion-ci-robot
3fb001f1ee Merge pull request #952 from ioito/automated-cherry-pick-of-#943-upstream-release-2.10.0
Automated cherry pick of #943: 避免转换成shell格式后导致合并失败
2019-05-28 22:03:21 +08:00
yunion-ci-robot
a2fce9b1d9 Merge pull request #958 from yunion-ci-robot/cherry-pick-957-to-release/2.10.0
[release/2.10.0] fix go fmt
2019-05-28 20:20:18 +08:00
ioito
3cf5c9c4f0 fix go fmt 2019-05-28 12:13:34 +00:00
ioito
06130b623d 避免转换成shell格式后导致合并失败 2019-05-28 16:59:49 +08:00
yunion-ci-robot
85f8fd9eec Merge pull request #948 from yunion-ci-robot/cherry-pick-947-to-release/2.10.0
[release/2.10.0] host: support pid file
2019-05-28 16:05:18 +08:00
wanyaoqi
584e2d3c7a support add pid file 2019-05-28 07:51:44 +00:00
yunion-ci-robot
adb5ef59ba Merge pull request #940 from yunion-ci-robot/cherry-pick-933-to-release/2.10.0
[release/2.10.0] routetables: 改正同步
2019-05-28 13:40:19 +08:00
yunion-ci-robot
d4f2fdf1a8 Merge pull request #944 from yunion-ci-robot/cherry-pick-934-to-release/2.10.0
[release/2.10.0] 一些bug修复
2019-05-28 12:10:19 +08:00
wanyaoqi
77b85a0885 bugfix:
- fix import from libvirt
- fix server deploy
- fix guest migrate
- golang host bugfix
2019-05-28 04:00:32 +00:00
Yousong Zhou
610b853062 routetables: default to name rtbl-<vpc.name> 2019-05-27 12:55:28 +00:00
Yousong Zhou
e4d363704e routetables: sync: add vpc-awareness 2019-05-27 12:55:28 +00:00
yunion-ci-robot
f057df16f6 Merge pull request #935 from yunion-ci-robot/cherry-pick-932-to-release/2.10.0
[release/2.10.0] 补充缺失的task stage
2019-05-27 20:55:18 +08:00
ioito
bcf536ca15 补充缺失的task stage 2019-05-27 12:51:36 +00:00
2371 changed files with 237187 additions and 281294 deletions

View File

@@ -13,9 +13,9 @@ RUN true \
WORKDIR /opt
RUN true \
&& wget https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz \
&& tar xzf go1.12.1.linux-amd64.tar.gz \
&& rm -vf go1.12.1.linux-amd64.tar.gz \
&& wget https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz \
&& tar xzf go1.13.3.linux-amd64.tar.gz \
&& rm -vf go1.13.3.linux-amd64.tar.gz \
&& true
ENV GOROOT="/opt/go"
ENV PATH="/opt/go/bin:${PATH}"
@@ -24,6 +24,16 @@ RUN useradd -c "OneCloud Builder" --create-home --home-dir /home/build --shell /
USER build
ENV HOME /home/build
WORKDIR /home/build
USER build
ENV GOPATH="/home/build/go"
ENV PATH="${GOPATH}/bin:${PATH}"
RUN true \
&& mkdir -p "$GOPATH" \
&& d="$GOPATH/src/golang.org/x/tools" \
&& mkdir -p "$d" \
&& git clone --branch yun --depth 8 https://github.com/yousong/tools "$d" \
&& cd "$d" \
&& go install ./cmd/goimports \
&& true

View File

@@ -3,9 +3,24 @@
# Check https://circleci.com/docs/2.0/language-go/ for more details
version: 2
jobs:
build:
check:
docker:
- image: yunionio/onecloud-ci:20190328
- image: yunionio/onecloud-ci:v1.0.3
environment:
ONECLOUD_CI_BUILD: "1"
working_directory: /home/build/go/src/yunion.io/x/onecloud
steps:
- checkout
- run:
command: |
make check
build:
requires:
- check
docker:
- image: yunionio/onecloud-ci:v1.0.2
environment:
ONECLOUD_CI_BUILD: "1"
#### TEMPLATE_NOTE: go expects specific checkout path representing url
#### expecting it in the form of
@@ -15,29 +30,54 @@ jobs:
parallelism: 4
steps:
- checkout
- restore_cache:
key: onecloud-build-cache-{{ checksum "go.mod" }}-{{ checksum "Makefile" }}
paths:
- /home/build/.cache/go-build
- run:
command: |
targets="$(circleci tests glob "cmd/*" | grep -v cmd/host-image | circleci tests split)"
echo $targets | tr ' ' '\n'
make $targets
ls -lh _output/bin/
- save_cache:
key: onecloud-build-cache-{{ checksum "go.mod" }}-{{ checksum "Makefile" }}
paths:
- /home/build/.cache/go-build
- store_artifacts:
path: _output/
test:
requires:
- check
docker:
- image: yunionio/onecloud-ci:20190328
- image: yunionio/onecloud-ci:v1.0.2
environment:
GO111MODULE: "on"
working_directory: /home/build/go/src/yunion.io/x/onecloud
steps:
- checkout
- restore_cache:
key: onecloud-test-cache-{{ checksum "go.mod" }}-{{ checksum "Makefile" }}
paths:
- /home/build/.cache/go-build
- run:
name: unit_test
command: make test
- run:
name: generate_code_coverage
command: ./scripts/coverage.sh --codecov
command: |
./scripts/coverage.sh --codecov
- save_cache:
key: onecloud-test-cache-{{ checksum "go.mod" }}-{{ checksum "Makefile" }}
paths:
- /home/build/.cache/go-build
workflows:
version: 2
build_and_test:
jobs:
- build
- test
- check
- build:
requires:
- check
- test:
requires:
- check

View File

@@ -1,22 +1,29 @@
# This is how to tell Travis to use the fast container-based test
# runner instead of the slow VM-based one.
sudo: false
dist: xenial
dist: bionic
services:
- docker
addons:
apt:
sources:
- sourceline: "deb https://download.ceph.com/debian-luminous/ bionic main"
key_url: "https://download.ceph.com/keys/release.asc"
packages:
- build-essential
- libcephfs-dev
- librbd-dev
- librados-dev
language: go
go_import_path: yunion.io/x/onecloud
go:
- "1.12.x"
- 1.12.x
go_import_path: yunion.io/x/onecloud
cache:
directories:
- $HOME/.cache/go-build
# Only clone the most recent commit.
git:
depth: 1
depth: 8
script:
- make docker_build
- make -j$(nproc) ONECLOUD_CI_BUILD=1
- ls -lh _output/bin

1976
Gopkg.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,221 +0,0 @@
# Gopkg.toml example
#
# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
# for detailed Gopkg.toml documentation.
#
# required = ["github.com/user/thing/cmd/thing"]
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
#
# [[constraint]]
# name = "github.com/user/project"
# version = "1.0.0"
#
# [[constraint]]
# name = "github.com/user/project2"
# branch = "dev"
# source = "github.com/myfork/project2"
#
# [[override]]
# name = "github.com/x/y"
# version = "2.4.0"
#
# [prune]
# non-go = false
# go-tests = true
# unused-packages = true
[[constraint]]
name = "github.com/pierrec/lz4"
version = "2.0.7"
[[constraint]]
name = "github.com/360EntSecGroup-Skylar/excelize"
version = "1.4.0"
[[constraint]]
name = "github.com/Azure/azure-sdk-for-go"
version = "=19.1.0"
[[constraint]]
branch = "master"
name = "github.com/Microsoft/azure-vhd-utils"
[[constraint]]
name = "github.com/aliyun/alibaba-cloud-sdk-go"
version = "0.7.4"
[[constraint]]
name = "github.com/aliyun/aliyun-oss-go-sdk"
version = "1.9.1"
[[constraint]]
name = "github.com/aokoli/goutils"
version = "1.0.1"
[[constraint]]
name = "github.com/aws/aws-sdk-go"
version = "=1.15.73"
[[constraint]]
name = "github.com/bitly/go-simplejson"
version = "0.5.0"
[[constraint]]
name = "github.com/c-bata/go-prompt"
version = "=0.2.1"
[[constraint]]
name = "github.com/coredns/coredns"
version = "v1.2.0"
[[constraint]]
name = "github.com/fatih/color"
version = "1.7.0"
[[constraint]]
name = "github.com/go-sql-driver/mysql"
version = "1.4.0"
[[constraint]]
name = "github.com/golang-plus/uuid"
version = "1.0.0"
[[constraint]]
branch = "master"
name = "github.com/googollee/go-socket.io"
[[constraint]]
name = "github.com/gorilla/mux"
version = "1.6.2"
[[constraint]]
name = "github.com/gorilla/websocket"
version = "1.4.0"
[[constraint]]
name = "github.com/koding/websocketproxy"
branch = "master"
[[constraint]]
branch = "master"
name = "github.com/gosuri/uitable"
[[constraint]]
name = "github.com/hako/durafmt"
version = "1.0.0"
[[constraint]]
name = "github.com/jinzhu/gorm"
version = "1.9.1"
[[constraint]]
name = "github.com/kr/pty"
version = "1.1.3"
[[constraint]]
name = "github.com/mholt/caddy"
version = "0.10.11"
[[constraint]]
name = "github.com/miekg/dns"
version = "1.0.15"
[[constraint]]
branch = "master"
name = "github.com/moul/http2curl"
[[constraint]]
name = "github.com/nelsonken/cos-go-sdk-v5"
version = "1.21.0"
[[constraint]]
branch = "master"
name = "github.com/serialx/hashring"
[[constraint]]
name = "github.com/stretchr/testify"
version = "1.3.0"
[[constraint]]
name = "github.com/tencentcloud/tencentcloud-sdk-go"
version = "=3.0.30"
[[constraint]]
branch = "master"
name = "github.com/tredoe/osutil"
[[constraint]]
name = "github.com/vmware/govmomi"
version = "0.19.0"
[[constraint]]
branch = "master"
name = "golang.org/x/crypto"
[[constraint]]
name = "gopkg.in/gin-gonic/gin.v1"
version = "1.2.0"
[[constraint]]
name = "k8s.io/api"
version = "kubernetes-1.12.0"
[[constraint]]
branch = "master"
name = "k8s.io/apimachinery"
[[constraint]]
name = "k8s.io/client-go"
version = "9.0.0"
[[constraint]]
branch = "master"
name = "github.com/anacrolix/torrent"
[[constraint]]
branch = "master"
name = "yunion.io/x/jsonutils"
[[constraint]]
branch = "master"
name = "yunion.io/x/log"
[[constraint]]
branch = "master"
name = "yunion.io/x/pkg"
[[constraint]]
branch = "master"
name = "yunion.io/x/sqlchemy"
[[constraint]]
branch = "master"
name = "yunion.io/x/structarg"
[[override]]
name = "github.com/apache/thrift"
revision = "e59b73d3c2bf1c328ccb78e683c0462fa1a473c7"
[prune]
go-tests = true
unused-packages = true
[[constraint]]
name = "github.com/shirou/gopsutil"
version = "2.18.10"
[[constraint]]
name="github.com/ceph/go-ceph"
branch = "master"
[[constraint]]
branch = "master"
name = "github.com/libvirt/libvirt-go-xml"
[[constraint]]
version = "v3.0.3"
name = "gopkg.in/ldap.v3"
[[constraint]]
branch = "master"
name = "github.com/fernet/fernet-go"

186
Makefile
View File

@@ -1,18 +1,25 @@
#####################################################
REPO_PREFIX := yunion.io/x/onecloud
VENDOR_PATH := $(REPO_PREFIX)/vendor
VERSION_PKG := $(VENDOR_PATH)/yunion.io/x/pkg/util/version
VERSION_PKG := yunion.io/x/pkg/util/version
ROOT_DIR := $(CURDIR)
BUILD_DIR := $(ROOT_DIR)/_output
BIN_DIR := $(BUILD_DIR)/bin
BUILD_SCRIPT := $(ROOT_DIR)/build/build.sh
GIT_COMMIT := $(shell git rev-parse --short HEAD)
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
GIT_VERSION := $(shell git describe --tags --abbrev=14 $(GIT_COMMIT)^{commit})
GIT_TREE_STATE := $(shell s=`git status --porcelain 2>/dev/null`; if [ -z "$$s" ]; then echo "clean"; else echo "dirty"; fi)
BUILD_DATE := $(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
ifeq ($(ONECLOUD_CI_BUILD),)
GIT_COMMIT := $(shell git rev-parse --short HEAD)
GIT_BRANCH := $(shell git name-rev --name-only HEAD)
GIT_VERSION := $(shell git describe --tags --abbrev=14 $(GIT_COMMIT)^{commit})
GIT_TREE_STATE := $(shell s=`git status --porcelain 2>/dev/null`; if [ -z "$$s" ]; then echo "clean"; else echo "dirty"; fi)
BUILD_DATE := $(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
else
GIT_COMMIT:=x
GIT_BRANCH:=x
GIT_VERSION:=x
BUILD_TREE_STATE:=clean
BUILD_DATE=2099-07-01T07:11:09Z
endif
LDFLAGS := "-w \
-X $(VERSION_PKG).gitVersion=$(GIT_VERSION) \
@@ -26,7 +33,8 @@ LDFLAGS := "-w \
#####################################################
GO_BUILD := go build -ldflags $(LDFLAGS)
GO_BUILD_FLAGS:=-mod vendor -ldflags $(LDFLAGS)
GO_BUILD := go build $(GO_BUILD_FLAGS)
GO_INSTALL := go install -ldflags $(LDFLAGS)
GO_TEST := go test
@@ -36,13 +44,17 @@ CGO_CFLAGS_ENV = $(shell go env CGO_CFLAGS)
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_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
endif
export GO111MODULE:=on
export CGO_CFLAGS = ${X_CGO_CFLAGS}
export CGO_LDFLAGS = ${X_CGO_LDFLAGS}
cmdTargets:=$(filter-out cmd/host-image,$(wildcard cmd/*))
rpmTargets:=$(foreach b,$(patsubst cmd/%,%,$(cmdTargets)),$(if $(shell [ -f "$(CURDIR)/build/$(b)/vars" ] && echo 1),rpm/$(b)))
all: build
@@ -53,33 +65,29 @@ install: prepare_dir
done
build: gendoc
$(MAKE) $(filter-out cmd/host-image, $(wildcard cmd/*))
gendoc:
@sh build/gendoc.sh
gencopyright:
@sh scripts/gencopyright.sh pkg cmd
test:
@go test $(shell go list ./... | egrep -v 'host-image|hostimage')
@go test $(GO_BUILD_FLAGS) $(shell go list ./... | egrep -v 'host-image|hostimage')
vet:
go vet ./...
cmd/%: prepare_dir fmt
cmd/%: prepare_dir
$(GO_BUILD) -o $(BIN_DIR)/$(shell basename $@) $(REPO_PREFIX)/$@
rpm/%: cmd/%
$(BUILD_SCRIPT) $*
pkg/%: prepare_dir fmt
pkg/%: prepare_dir
$(GO_INSTALL) $(REPO_PREFIX)/$@
build:
$(MAKE) $(cmdTargets)
# a hack
rpm:
$(MAKE) $(patsubst %,cmd/%,$(filter-out $@,$(MAKECMDGOALS)))
$(foreach cmd,$(filter-out $@,$(MAKECMDGOALS)),$(BUILD_SCRIPT) $(cmd);)
$(MAKE) $(rpmTargets)
rpmclean:
rm -fr $(BUILD_DIR)/rpms
@@ -94,14 +102,8 @@ bin_dir: output_dir
output_dir:
@mkdir -p $(BUILD_DIR)
dep_clean:
rm -fr $(GOPATH)/pkg/dep/sources/*
dep_install:
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
.PHONY: all build prepare_dir clean fmt rpm
.PHONY: all build prepare_dir clean rpm
clean:
@@ -109,22 +111,118 @@ clean:
fmt:
@find . -type f -name "*.go" -not -path "./_output/*" \
-not -path "./vendor/*" | xargs gofmt -s -w
@git ls-files --exclude '*' '*.go' \
| grep -v '^vendor/' \
| xargs $(XARGS_FLAGS) gofmt -w
fmt-check: fmt
@if git status --short | grep -E '^.M .*/[^.]+.go'; then \
git diff | cat; \
echo "$@: working tree modified (possibly by gofmt)" >&2 ; \
false ; \
fi
.PHONY: fmt fmt-check
gendocgo:
@sh build/gendoc.sh
adddocgo:
@git ls-files --others '*/doc.go' | xargs $(XARGS_FLAGS) -- git add
gendocgo-check: gendocgo
@n="$$(git ls-files --others '*/doc.go' | wc -l)"; \
if test "$$n" -gt 0; then \
git ls-files --others '*/doc.go' | sed -e 's/^/ /'; \
echo "$@: untracked doc.go file(s) exist in working directory" >&2 ; \
false ; \
fi
.PHONY: gendocgo adddocgo gendocgo-check
goimports-check:
@goimports -w -local "yunion.io/x/:yunion.io/x/onecloud" pkg cmd; \
if git status --short | grep -E '^.M .*/[^.]+.go'; then \
git diff | cat; \
echo "$@: working tree modified (possibly by goimports)" >&2 ; \
echo "$@: " >&2 ; \
echo "$@: import spec should be grouped in order: std, 3rd-party, yunion.io/x, yunion.io/x/onecloud" >&2 ; \
echo "$@: see \"yun\" branch at https://github.com/yousong/tools" >&2 ; \
false ; \
fi
.PHONY: goimports-check
check: fmt-check
check: gendocgo-check
check: goimports-check
.PHONY: check
define depDeprecated
OneCloud now requires using go-mod for dependency management. dep target,
vendor files will be removed in future versions
Follow the following link to find out more about go-mod
- https://blog.golang.org/using-go-modules
- https://github.com/golang/go/wiki/Modules
Switching to "make mod"...
endef
dep: export depDeprecated:=$(depDeprecated)
dep:
cd $(ROOT_DIR) && dep ensure -v -update $(shell for p in $$(ls vendor/yunion.io/x/); do echo "yunion.io/x/$$p"; done | xargs)
@echo "$$depDeprecated"
@$(MAKE) mod
%:
@:
mod:
go get $(patsubst %,%@master,$(shell GO111MODULE=on go mod edit -print | sed -n -e 's|.*\(yunion.io/x/[a-z][a-z]*\) v.*|\1|p'))
go mod tidy
go mod vendor -v
# Use docker build binaries
# Args:
# WHAT: Directory names to build
#
#
# Example:
# make docker_build
# make docker_build WHAT='cmd/climc cmd/region'
docker_build:
$(ROOT_DIR)/build/docker_build.sh $(WHAT)
DOCKER_BUILD_IMAGE_VERSION?=latest
define dockerBuildCmd
set -o errexit
set -o pipefail
cd /home/build/onecloud
export GOFLAGS=-mod=vendor
make $(1)
endef
docker-build: export dockerBuildCmd:=$(call dockerBuildCmd,$(F))
docker-build:
echo "$$dockerBuildCmd"
docker rm --force onecloud-ci-build &>/dev/null || true
docker run \
--name onecloud-ci-build \
--rm \
--volume $(CURDIR):/home/build/onecloud \
yunionio/onecloud-ci:$(DOCKER_BUILD_IMAGE_VERSION) \
/bin/bash -c "$$dockerBuildCmd"
chown -R $$(id -u):$$(id -g) _output
ls -lh _output/bin
# NOTE we need a way to stop and remove the container started by docker-build.
# No --tty, --stop-signal won't work
docker-build-stop:
docker stop --time 0 onecloud-ci-build || true
.PHONY: docker-build
.PHONY: docker-build-stop
define helpText
Build with docker
make docker-build F='-j4'
make docker-build F='-j4 cmd/region cmd/climc'
make docker-build-stop
Tidy up go modules and vendor directory
make mod
endef
help: export helpText:=$(helpText)
help:
@echo "$$helpText"

View File

@@ -1,4 +1,10 @@
# Yunion OneCloud
[![CircleCI](https://circleci.com/gh/yunionio/onecloud.svg?style=svg)](https://circleci.com/gh/yunionio/onecloud) [![Build Status](https://travis-ci.org/yunionio/onecloud.svg?branch=master)](https://travis-ci.org/yunionio/onecloud)
[![Go Report Card](https://goreportcard.com/badge/github.com/yunionio/onecloud)](https://goreportcard.com/report/github.com/yunionio/onecloud)
[![CircleCI](https://circleci.com/gh/yunionio/onecloud.svg?style=svg)](https://circleci.com/gh/yunionio/onecloud)
[![Build Status](https://travis-ci.com/yunionio/onecloud.svg?branch=master)](https://travis-ci.org/yunionio/onecloud)
[![Go Report Card](https://goreportcard.com/badge/github.com/yunionio/onecloud)](https://goreportcard.com/report/github.com/yunionio/onecloud)
# 文档
- 文档中心https://docs.yunion.cn/
- API文档https://docs.yunion.cn/api/

View File

@@ -0,0 +1,10 @@
region = 'Yunion'
address = '10.168.222.136'
port = 8890
auth_uri = 'http://10.168.222.136:35357/v3'
admin_user = 'yunionansible'
admin_password = 'xxxxxxxxxxxxxxxx'
admin_tenant_name = 'system'
sql_connection = 'mysql+pymysql://yunionansible:9YuQL9KEZn1mppaK@localhost:3306/yunionansible?charset=utf8'
auto_sync_table = True

5
build/ansibleserver/vars Normal file
View File

@@ -0,0 +1,5 @@
DESCRIPTION="Yunion Ansible Controller"
REQUIRES=(
"ansible"
)

View File

@@ -134,7 +134,11 @@ fi
rpmbuild --define "_topdir $BUILDROOT" -bb $SPEC_FILE
mkdir -p $OUTPUT_DIR
cp -fr $RPM_DIR/* $OUTPUT_DIR/
find $RPM_DIR -type f | while read f; do
d="$(dirname "$f")"
d="$OUTPUT_DIR/${d#$RPM_DIR}"
mkdir -p "$d"
cp $f $d
done
rm -fr $BUILDROOT

View File

@@ -1,19 +0,0 @@
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
SRC_ROOT=$(realpath $(dirname "${BASH_SOURCE[0]}")/..)
BIN_DIR=$SRC_ROOT/_output/bin
WORK_DIR="/go/src/yunion.io/x/onecloud"
CMDS=$@
docker run --rm -it \
-w $WORK_DIR \
-v $SRC_ROOT:$WORK_DIR \
d3lx/golang:yunion \
make $CMDS
echo "Build finish"
ls -alh $BIN_DIR

View File

@@ -0,0 +1,19 @@
[Unit]
Description=Yunion Host Deploy Agent
Documentation=https://docs.yunion.cn
After=network.target httpd.service
[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/yunion/bin/host-deployer --conf /etc/yunion/host.conf
WorkingDirectory=/opt/yunion/bin
KillMode=process
Restart=always
RestartSec=30
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target

2
build/host-deployer/vars Normal file
View File

@@ -0,0 +1,2 @@
DESCRIPTION="Yunion Host Deploy Agent"
SERVICE="yes"

View File

@@ -0,0 +1,21 @@
[Unit]
Description=Yunion Cloud Host Agent server
Documentation=https://docs.yunion.cn
After=network-online.target
Wants=network-online.target
After=network.target yunion-host-deployer.service
[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/yunion/bin/host --config /etc/yunion/host.conf
WorkingDirectory=/opt/yunion/bin
KillMode=process
Restart=always
RestartSec=30
LimitNOFILE=500000
LimitNPROC=500000
[Install]
WantedBy=multi-user.target

View File

@@ -1 +1,2 @@
DESCRIPTION="Yunion Host Command Line Utility"
DESCRIPTION="Yunion Host Command Line Utility"
SERVICE="yes"

1
build/keystone/vars Normal file
View File

@@ -0,0 +1 @@
DESCRIPTION="Yunion Cloud Keystone Identity server"

1
build/ldapcli/vars Normal file
View File

@@ -0,0 +1 @@
DESCRIPTION="LDAP Command Line Utility"

View File

@@ -1 +1 @@
您的{{ .hypervisor }}主机{{ .name }}的套餐类型已经更改为 CPU:{{ index .flavor_info "cpu" }}核,内存:{{ index .flavor_info "memory" }}M数据盘:{{ index .flavor_info "datadisk" }}G带宽: {{ index .flavor_info "ebw" }}M。
您的{{ .brand }}主机{{ .name }}的套餐类型已经更改为 CPU:{{ index .flavor_info "cpu" }}核,内存:{{ index .flavor_info "memory" }}M数据盘:{{ index .flavor_info "datadisk" }}G带宽: {{ index .flavor_info "ebw" }}M。

View File

@@ -1 +1 @@
您的{{ .hypervisor }}主机{{ .name }}已经创建成功服务器IP地址为{{ .ips }}{{ if .account }}初始帐号为{{ .account }}{{ end }}{{ if .keypair }}访问ssh密钥为{{ .keypair }}{{ end }}{{ if .password }}初始密码为{{ .password }}{{ end }}请使用{{ if .windows }}远程桌面连接器(RDC){{ else }}SSH{{ end }}或控制面板控制台访问云主机。
您的{{ .brand }}主机{{ .name }}已经创建成功服务器IP地址为{{ .ips }}{{ if .account }}初始帐号为{{ .account }}{{ end }}{{ if .keypair }}访问ssh密钥为{{ .keypair }}{{ end }}{{ if .password }}初始密码为{{ .password }}{{ end }}请使用{{ if .windows }}远程桌面连接器(RDC){{ else }}SSH{{ end }}或控制面板控制台访问云主机。

View File

@@ -1 +1 @@
项目{{ .tenant }}的{{ .hypervisor }}主机{{ .name }}已经创建成功。
项目{{ .tenant }}的{{ .brand }}主机{{ .name }}已经创建成功。

View File

@@ -1 +1 @@
您的{{ .hypervisor }}主机{{ .name }}已经删除。
您的{{ .brand }}主机{{ .name }}已经删除。

View File

@@ -1 +1 @@
项目{{ .tenant }}的{{ .hypervisor }}主机{{ .name }}已经删除。
项目{{ .tenant }}的{{ .brand }}主机{{ .name }}已经删除。

View File

@@ -0,0 +1 @@
您的{{ .brand }}主机{{ .name }}系统崩溃了: {{ .reason }}

View File

@@ -1 +1 @@
您的{{ .hypervisor }}主机{{ .name }}重装系统成功,{{ if .account }}初始帐号为{{ .account }}{{ end }}{{ if .keypair }}访问密钥为{{ .keypair }}{{ end }}{{ if .password }}初始密码为{{ .password }}{{ end }}请使用{{ if .windows }}远程桌面连接器(RDC){{ else }}SSH{{ end }}或控制面板控制台访问云主机。
您的{{ .brand }}主机{{ .name }}重装系统成功,{{ if .account }}初始帐号为{{ .account }}{{ end }}{{ if .keypair }}访问密钥为{{ .keypair }}{{ end }}{{ if .password }}初始密码为{{ .password }}{{ end }}请使用{{ if .windows }}远程桌面连接器(RDC){{ else }}SSH{{ end }}或控制面板控制台访问云主机。

View File

@@ -1 +1 @@
您的{{ .hypervisor }}主机{{ .name }}的套餐类型已经更改为 CPU:{{ index .flavor_info "cpu" }}核,内存:{{ index .flavor_info "memory" }}M数据盘:{{ index .flavor_info "datadisk" }}G带宽: {{ index .flavor_info "ebw" }}M。
您的{{ .brand }}主机{{ .name }}的套餐类型已经更改为 CPU:{{ index .flavor_info "cpu" }}核,内存:{{ index .flavor_info "memory" }}M数据盘:{{ index .flavor_info "datadisk" }}G带宽: {{ index .flavor_info "ebw" }}M。

View File

@@ -1 +1 @@
{{ .hypervisor }}主机{{ .Name }}创建成功
{{ .brand }}主机{{ .Name }}创建成功

View File

@@ -1 +1 @@
项目{{ .tenant }}的{{ .hypervisor }}主机{{ .name }}已经创建成功
项目{{ .tenant }}的{{ .brand }}主机{{ .name }}已经创建成功

View File

@@ -1 +1 @@
{{ .hypervisor }}主机{{ .name }}删除通知
{{ .brand }}主机{{ .name }}删除通知

View File

@@ -1 +1 @@
项目{{ .tenant }}的{{ .hypervisor }}主机{{ .name }}已经删除
项目{{ .tenant }}的{{ .brand }}主机{{ .name }}已经删除

View File

@@ -0,0 +1 @@
您的{{ .brand }}主机{{ .name }}系统崩溃了

View File

@@ -1 +1 @@
{{ .hypervisor }}主机{{ .name }}重装系统成功
{{ .brand }}主机{{ .name }}重装系统成功

1
build/zstackcli/vars Normal file
View File

@@ -0,0 +1 @@
DESCRIPTION="Zstack Command Line Utility"

View File

@@ -12,9 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package models
package main
type GroupJointModel struct {
JointBaseModel
GroupID string `json:"group_id" gorm:"not null"`
import (
"yunion.io/x/onecloud/pkg/ansibleserver/service"
)
func main() {
service.StartService()
}

View File

@@ -100,9 +100,11 @@ func newClient(options *BaseOptions) (*azure.SRegion, error) {
return nil, fmt.Errorf("Missing Cloud Environment")
}
account := fmt.Sprintf("%s/%s", options.DirectoryID, options.SubscriptionID)
secret := fmt.Sprintf("%s/%s", options.ApplicationID, options.ApplicationKey)
cli, err := azure.NewAzureClient("", "", account, secret, options.CloudEnv, options.Debug)
cli, err := azure.NewAzureClient("", "", options.CloudEnv,
options.DirectoryID,
options.ApplicationID, options.ApplicationKey,
options.SubscriptionID,
options.Debug)
if err != nil {
return nil, err
}

View File

@@ -24,7 +24,7 @@ import (
"strings"
"time"
prompt "github.com/c-bata/go-prompt"
"github.com/c-bata/go-prompt"
"yunion.io/x/log"
"yunion.io/x/pkg/util/version"
@@ -52,13 +52,16 @@ type BaseOptions struct {
OsUsername string `default:"$OS_USERNAME" help:"Username, defaults to env[OS_USERNAME]"`
OsPassword string `default:"$OS_PASSWORD" help:"Password, defaults to env[OS_PASSWORD]"`
// OsProjectId string `default:"$OS_PROJECT_ID" help:"Proejct ID, defaults to env[OS_PROJECT_ID]"`
OsProjectName string `default:"$OS_PROJECT_NAME" help:"Project name, defaults to env[OS_PROJECT_NAME]"`
OsProjectName string `default:"$OS_PROJECT_NAME" help:"Project name, defaults to env[OS_PROJECT_NAME]"`
OsProjectDomain string `default:"$OS_PROJECT_DOMAIN" help:"Domain name of project, defaults to env[OS_PROJECT_DOMAIN]"`
OsDomainName string `default:"$OS_DOMAIN_NAME" help:"Domain name, defaults to env[OS_DOMAIN_NAME]"`
OsAuthURL string `default:"$OS_AUTH_URL" help:"Defaults to env[OS_AUTH_URL]"`
OsRegionName string `default:"$OS_REGION_NAME" help:"Defaults to env[OS_REGION_NAME]"`
OsZoneName string `default:"$OS_ZONE_NAME" help:"Defaults to env[OS_ZONE_NAME]"`
OsEndpointType string `default:"$OS_ENDPOINT_TYPE|internalURL" help:"Defaults to env[OS_ENDPOINT_TYPE] or internalURL" choices:"publicURL|internalURL|adminURL"`
ApiVersion string `default:"$API_VERSION" help:"override default modules service api version"`
OutputFormat string `default:"$CLIMC_OUTPUT_FORMAT|table" choices:"table|kv|json|flatten-table|flatten-kv" help:"output format"`
SUBCOMMAND string `help:"climc subcommand" subcommand:"true"`
}
@@ -131,9 +134,9 @@ func newClientSession(options *BaseOptions) (*mcclient.ClientSession, error) {
}
// if len(options.OsProjectId) == 0 && len(options.OsProjectName) == 0 {
// showErrorAndExit(fmt.Errorf("Missing OS_PROEJCT_ID or OS_PROJECT_NAME"))
if len(options.OsProjectName) == 0 {
return nil, fmt.Errorf("Missing OS_PROJECT_NAME")
}
// if len(options.OsProjectName) == 0 {
// return nil, fmt.Errorf("Missing OS_PROJECT_NAME")
// }
logLevel := "info"
if options.Debug {
@@ -174,10 +177,12 @@ func newClientSession(options *BaseOptions) (*mcclient.ClientSession, error) {
}
if cacheToken == nil {
token, err := client.Authenticate(options.OsUsername,
token, err := client.AuthenticateWithSource(options.OsUsername,
options.OsPassword,
options.OsDomainName,
options.OsProjectName)
options.OsProjectName,
options.OsProjectDomain,
mcclient.AuthSourceCli)
if err != nil {
return nil, err
}
@@ -269,6 +274,7 @@ func main() {
return
}
shell.OutputFormat(options.OutputFormat)
ensureSessionFactory := func() *mcclient.ClientSession {
session, err := newClientSession(options)
if err != nil {

View File

@@ -24,6 +24,7 @@ import (
)
type BaseActionListOptions struct {
Scope string `help:"scope" choices:"project|domain|system"`
Since string `help:"Show logs since specific date" metavar:"DATETIME"`
Until string `help:"Show logs until specific date" metavar:"DATETIME"`
Limit int64 `help:"Limit number of logs" default:"20"`
@@ -35,6 +36,11 @@ type BaseActionListOptions struct {
Admin bool `help:"admin mode"`
Succ bool `help:"Show success action log only"`
Fail bool `help:"Show failed action log only"`
User []string `help:"filter by operator user"`
Project []string `help:"filter by owner project"`
PagingMarker string `help:"marker for pagination"`
}
type ActionListOptions struct {
@@ -59,6 +65,18 @@ func doActionList(s *mcclient.ClientSession, args *ActionListOptions) error {
if len(args.Search) > 0 {
params.Add(jsonutils.NewString(args.Search), "search")
}
if len(args.User) > 0 {
params.Add(jsonutils.NewStringArray(args.User), "user")
}
if len(args.Project) > 0 {
params.Add(jsonutils.NewStringArray(args.Project), "project")
}
if len(args.Scope) > 0 {
params.Add(jsonutils.NewString(args.Scope), "scope")
}
if len(args.PagingMarker) > 0 {
params.Add(jsonutils.NewString(args.PagingMarker), "paging_marker")
}
if len(args.Since) > 0 {
params.Add(jsonutils.NewString(args.Since), "since")
}

View File

@@ -94,7 +94,7 @@ func doList(s *mcclient.ClientSession, args *AnsibleHostsOptions) error {
output.Add(children, "all", "children")
output.Add(hosts, "ungrouped", "hosts")
fmt.Printf("%s", output.PrettyString())
fmt.Printf("%s\n", output.PrettyString())
return nil
}
@@ -123,7 +123,7 @@ func doHost(s *mcclient.ClientSession, host string, args *AnsibleHostsOptions) e
hostVar.Add(jsonutils.NewString(args.UserBecome), "ansible_become_user")
}
fmt.Printf("%s", hostVar.PrettyString())
fmt.Printf("%s\n", hostVar.PrettyString())
return nil
}

View File

@@ -0,0 +1,108 @@
// 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 (
//"fmt"
//"strings"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
printAnsiblePlaybookObject := func(obj jsonutils.JSONObject) {
dict := obj.(*jsonutils.JSONDict)
pbJson, err := dict.Get("playbook")
if err != nil {
printObject(obj)
return
}
pbStr := pbJson.YAMLString()
dict.Set("playbook", jsonutils.NewString(pbStr))
printObject(obj)
}
R(&options.AnsiblePlaybookCreateOptions{}, "ansibleplaybook-create", "Create ansible playbook", func(s *mcclient.ClientSession, opts *options.AnsiblePlaybookCreateOptions) error {
params, err := opts.Params()
if err != nil {
return err
}
apb, err := modules.AnsiblePlaybooks.Create(s, params)
if err != nil {
return err
}
printAnsiblePlaybookObject(apb)
return nil
})
R(&options.AnsiblePlaybookIdOptions{}, "ansibleplaybook-show", "Show ansible playbook", func(s *mcclient.ClientSession, opts *options.AnsiblePlaybookIdOptions) error {
apb, err := modules.AnsiblePlaybooks.Get(s, opts.ID, nil)
if err != nil {
return err
}
printAnsiblePlaybookObject(apb)
return nil
})
R(&options.AnsiblePlaybookListOptions{}, "ansibleplaybook-list", "List ansible playbooks", func(s *mcclient.ClientSession, opts *options.AnsiblePlaybookListOptions) error {
params, err := opts.Params()
if err != nil {
return err
}
apbs, err := modules.AnsiblePlaybooks.List(s, params)
if err != nil {
return err
}
printList(apbs, modules.AnsiblePlaybooks.GetColumns(s))
return nil
})
R(&options.AnsiblePlaybookIdOptions{}, "ansibleplaybook-delete", "Delete ansible playbook", func(s *mcclient.ClientSession, opts *options.AnsiblePlaybookIdOptions) error {
apb, err := modules.AnsiblePlaybooks.Delete(s, opts.ID, nil)
if err != nil {
return err
}
printAnsiblePlaybookObject(apb)
return nil
})
R(&options.AnsiblePlaybookUpdateOptions{}, "ansibleplaybook-update", "Update ansible playbook", func(s *mcclient.ClientSession, opts *options.AnsiblePlaybookUpdateOptions) error {
params, err := opts.Params()
if err != nil {
return err
}
apb, err := modules.AnsiblePlaybooks.Update(s, opts.ID, params)
if err != nil {
return err
}
printAnsiblePlaybookObject(apb)
return nil
})
R(&options.AnsiblePlaybookIdOptions{}, "ansibleplaybook-run", "Run ansible playbook", func(s *mcclient.ClientSession, opts *options.AnsiblePlaybookIdOptions) error {
apb, err := modules.AnsiblePlaybooks.PerformAction(s, opts.ID, "run", nil)
if err != nil {
return err
}
printAnsiblePlaybookObject(apb)
return nil
})
R(&options.AnsiblePlaybookIdOptions{}, "ansibleplaybook-stop", "Stop ansible playbook", func(s *mcclient.ClientSession, opts *options.AnsiblePlaybookIdOptions) error {
apb, err := modules.AnsiblePlaybooks.PerformAction(s, opts.ID, "stop", nil)
if err != nil {
return err
}
printAnsiblePlaybookObject(apb)
return nil
})
}

View File

@@ -17,13 +17,20 @@ package shell
import (
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type CapabilitiesOptions struct {
Domain string `help:"ID or name of domain"`
Scope string `help:"query scope" choices:"system|domain|project"`
}
R(&CapabilitiesOptions{}, "capabilities", "Show backend capabilities", func(s *mcclient.ClientSession, args *CapabilitiesOptions) error {
result, err := modules.Capabilities.List(s, nil)
query, err := options.StructToParams(args)
if err != nil {
return err
}
result, err := modules.Capabilities.List(s, query)
if err != nil {
return err
}

View File

@@ -544,4 +544,24 @@ func init() {
printObject(result)
return nil
})
type CloudaccountPublicOptions struct {
ID string `help:"ID or name of cloud account"`
}
R(&CloudaccountPublicOptions{}, "cloud-account-public", "Mark this cloud account public ", func(s *mcclient.ClientSession, args *CloudaccountPublicOptions) error {
result, err := modules.Cloudaccounts.PerformAction(s, args.ID, "public", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
R(&CloudaccountPublicOptions{}, "cloud-account-private", "Mark this cloud account private", func(s *mcclient.ClientSession, args *CloudaccountPublicOptions) error {
result, err := modules.Cloudaccounts.PerformAction(s, args.ID, "private", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -15,6 +15,8 @@
package shell
import (
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
@@ -26,6 +28,7 @@ func init() {
type CloudproviderListOptions struct {
options.BaseListOptions
Usable bool `help:"Vpc & Network usable"`
}
R(&CloudproviderListOptions{}, "cloud-provider-list", "List cloud providers", func(s *mcclient.ClientSession, args *CloudproviderListOptions) error {
var params *jsonutils.JSONDict
@@ -35,6 +38,10 @@ func init() {
if err != nil {
return err
}
if args.Usable {
params.Add(jsonutils.NewBool(true), "usable")
}
}
result, err := modules.Cloudproviders.List(s, params)
if err != nil {
@@ -187,4 +194,23 @@ func init() {
printObject(result)
return nil
})
type CloudproviderClientRCOptions struct {
ID string `help:"ID or name of cloud provider"`
}
R(&CloudproviderClientRCOptions{}, "cloud-provider-clirc", "Get client RC file of the cloud provider", func(s *mcclient.ClientSession, args *CloudproviderClientRCOptions) error {
result, err := modules.Cloudproviders.GetSpecific(s, args.ID, "clirc", nil)
if err != nil {
return err
}
rc := make(map[string]string)
err = result.Unmarshal(&rc)
if err != nil {
return err
}
for k, v := range rc {
fmt.Printf("export %s='%s'\n", k, v)
}
return nil
})
}

View File

@@ -55,6 +55,9 @@ func init() {
Usable *bool `help:"List regions where networks are usable"`
UsableVpc *bool `help:"List regions where VPC are usable"`
Scope string `help:"query scope" choices:"system|domain"`
ProjectDomain string `help:"query domain"`
}
R(&CloudregionCityListOptions{}, "cloud-region-cities", "List cities where cloud region resides", func(s *mcclient.ClientSession, args *CloudregionCityListOptions) error {
params, err := options.StructToParams(args)
@@ -173,8 +176,15 @@ func init() {
return nil
})
R(&CloudregionShowOptions{}, "cloud-region-capability", "Show region's capacibilities", func(s *mcclient.ClientSession, args *CloudregionShowOptions) error {
result, err := modules.Cloudregions.GetSpecific(s, args.ID, "capability", nil)
type CloudregionCapabiltyOptions struct {
ID string `help:"ID or name of cloud region to check" json:"-"`
Domain string `help:"cloud region domain"`
ShowEmulated bool `help:"show emulated cloud region"`
}
R(&CloudregionCapabiltyOptions{}, "cloud-region-capability", "Show region's capacibilities", func(s *mcclient.ClientSession, args *CloudregionCapabiltyOptions) error {
query, err := options.StructToParams(args)
result, err := modules.Cloudregions.GetSpecific(s, args.ID, "capability", query)
if err != nil {
return err
}

View File

@@ -29,7 +29,7 @@ func init() {
*/
type ContactsUpdateOptions struct {
UID string `help:"The user you wanna add contact to (Keystone User ID)"`
CONTACTTYPE string `help:"The contact type email|mobile" choices:"email|mobile"`
CONTACTTYPE string `help:"The contact type" choices:"email|mobile"`
CONTACT string `help:"The contacts details mobile number or email address, if set it the empty str means delete"`
Status string `help:"Enabled or disabled contact status" choices:"enable|disable"`
}
@@ -63,7 +63,7 @@ func init() {
type ContactsDeleteOptions struct {
UID string `help:"The user you wanna add contact to (Keystone User ID)"`
CONTACTTYPE string `help:"The contact type email|mobile" choices:"email|mobile"`
CONTACTTYPE string `help:"The contact type" choices:"email|mobile"`
}
R(&ContactsDeleteOptions{}, "contact-delete", "Delete contact for user", func(s *mcclient.ClientSession, args *ContactsDeleteOptions) error {
arr := jsonutils.NewArray()

View File

@@ -16,6 +16,7 @@ package shell
import (
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
@@ -24,8 +25,9 @@ import (
func init() {
type CopyrightUpdateOptions struct {
Copyright string `help:"The copyright"`
Email string `help:"The Email"`
Copyright string `help:"The copyright"`
Email string `help:"The Email"`
Docs *string `help:"the Docs website address"`
}
R(&CopyrightUpdateOptions{}, "copyright-update", "update copyright", func(s *mcclient.ClientSession, args *CopyrightUpdateOptions) error {
@@ -34,6 +36,10 @@ func init() {
}
params := jsonutils.NewDict()
if args.Docs != nil {
params.Add(jsonutils.NewString(*args.Docs), "docs")
}
if len(args.Copyright) > 0 {
params.Add(jsonutils.NewString(args.Copyright), "copyright")
}
@@ -42,17 +48,12 @@ func init() {
params.Add(jsonutils.NewString(args.Email), "email")
}
r, err := modules.Copyright.Create(s, params)
r, err := modules.Copyright.Update(s, "copyright", params)
if err != nil {
return err
}
pretty := jsonutils.NewDict()
cp, _ := r.GetString("copyright")
email, _ := r.GetString("email")
pretty.Set("copyright", jsonutils.NewString(cp))
pretty.Set("email", jsonutils.NewString(email))
printObject(pretty)
printObject(r)
return nil
})
}

View File

@@ -78,7 +78,7 @@ func init() {
type DiskDeleteOptions struct {
ID []string `help:"ID of disks to delete" metavar:"DISK"`
OverridePendingDelete bool `help:"Delete disk directly instead of pending delete"`
OverridePendingDelete bool `help:"Delete disk directly instead of pending delete" short-token:"f"`
}
R(&DiskDeleteOptions{}, "disk-delete", "Delete a disk", func(s *mcclient.ClientSession, args *DiskDeleteOptions) error {
@@ -222,20 +222,6 @@ func init() {
printObject(disk)
return nil
})
type DiskCreateSnapshotOptions struct {
DISK string `help:"ID or name of disk"`
SNAPSHOT_NAME string `help:"Snapshot name"`
}
R(&DiskCreateSnapshotOptions{}, "disk-create-snapshot", "Disk create snapshot", func(s *mcclient.ClientSession, args *DiskCreateSnapshotOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.SNAPSHOT_NAME), "name")
disk, err := modules.Disks.PerformAction(s, args.DISK, "create-snapshot", params)
if err != nil {
return err
}
printObject(disk)
return nil
})
type DiskSaveOptions struct {
ID string `help:"ID or name of the disk" json:"-"`
@@ -300,4 +286,21 @@ func init() {
printObject(disk)
return nil
})
type DiskChangeOwnerOptions struct {
ID string `help:"Disk to change owner" json:"-"`
PROJECT string `help:"Project ID or change" json:"tenant"`
}
R(&DiskChangeOwnerOptions{}, "disk-change-owner", "Change owner porject of a disk", func(s *mcclient.ClientSession, opts *DiskChangeOwnerOptions) error {
params, err := options.StructToParams(opts)
if err != nil {
return err
}
srv, err := modules.Disks.PerformAction(s, opts.ID, "change-owner", params)
if err != nil {
return err
}
printObject(srv)
return nil
})
}

View File

@@ -15,31 +15,21 @@
package shell
import (
"fmt"
"yunion.io/x/jsonutils"
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type DomainListOptions struct {
Search string `help:"search domain name"`
Limit int64 `help:"Items per page" default:"20"`
Offset int64 `help:"Offset"`
options.BaseListOptions
}
R(&DomainListOptions{}, "domain-list", "List domains", func(s *mcclient.ClientSession, args *DomainListOptions) error {
params := jsonutils.NewDict()
if len(args.Search) > 0 {
params.Add(jsonutils.NewString(args.Search), "name__icontains")
}
if args.Limit > 0 {
params.Add(jsonutils.NewInt(args.Limit), "limit")
}
if args.Offset > 0 {
params.Add(jsonutils.NewInt(args.Offset), "offset")
params, err := options.ListStructToParams(args)
if err != nil {
return err
}
result, err := modules.Domains.List(s, params)
if err != nil {
@@ -72,30 +62,7 @@ func init() {
printObject(result)
return nil
})
R(&DomainDetailOptions{}, "domain-config-show", "Show detail of a domain config", func(s *mcclient.ClientSession, args *DomainDetailOptions) error {
objId, err := modules.Domains.GetId(s, args.ID, nil)
if err != nil {
return err
}
config, err := modules.Domains.GetConfig(s, objId)
if err != nil {
return err
}
fmt.Println(config.PrettyString())
return nil
})
R(&DomainDetailOptions{}, "domain-config-delete", "Delete a domain config", func(s *mcclient.ClientSession, args *DomainDetailOptions) error {
objId, err := modules.Domains.GetId(s, args.ID, nil)
if err != nil {
return err
}
config, err := modules.Domains.DeleteConfig(s, objId)
if err != nil {
return err
}
printObject(config)
return nil
})
/* R(&DomainDetailOptions{}, "domain-config-sql", "Config a domain with SQL driver", func(s *mcclient.ClientSession, args *DomainDetailOptions) error {
config := jsonutils.NewDict()
config.Add(jsonutils.NewString("sql"), "config", "identity", "driver")
@@ -111,26 +78,6 @@ func init() {
return nil
}) */
type DomainConfigLDAPOptions struct {
ID string `help:"ID of domain to config" json:"-"`
api.SDomainLDAPConfigOptions
}
R(&DomainConfigLDAPOptions{}, "domain-config-ldap", "Config a domain with LDAP driver", func(s *mcclient.ClientSession, args *DomainConfigLDAPOptions) error {
config := jsonutils.NewDict()
config.Add(jsonutils.NewString("ldap"), "config", "identity", "driver")
config.Add(jsonutils.Marshal(args), "config", "ldap")
objId, err := modules.Domains.GetId(s, args.ID, nil)
if err != nil {
return err
}
nconf, err := modules.Domains.UpdateConfig(s, objId, config)
if err != nil {
return err
}
fmt.Println(nconf.PrettyString())
return nil
})
type DomainCreateOptions struct {
NAME string `help:"Name of domain"`
Desc string `help:"Description"`

View File

@@ -24,9 +24,11 @@ import (
func init() {
type ElasticipListOptions struct {
Region string `help:"Show servers in cloudregion"`
Region string `help:"List eips in cloudregion"`
Usable *bool `help:"List all zones that is usable"`
Usable *bool `help:"List all zones that is usable"`
UsableEipForAssociateType string `help:"With associate id filter which eip can associate"`
UsableEipForAssociateId string `help:"With associate type filter which eip can associate"`
options.BaseListOptions
}
@@ -50,7 +52,7 @@ func init() {
Bandwidth int `help:"Bandwidth in Mbps"`
Ip string `help:"IP address of the EIP"`
Network string `help:"Network of the EIP"`
ChargeType string `help:"bandwidth charge type, either traffic or bandwidth" choices:"traffic|bandwidth"`
ChargeType string `help:"bandwidth charge type" choices:"traffic|bandwidth"`
}
R(&EipCreateOptions{}, "eip-create", "Create an EIP", func(s *mcclient.ClientSession, args *EipCreateOptions) error {
params := jsonutils.NewDict()
@@ -171,7 +173,7 @@ func init() {
type ServerCreateEipOptions struct {
ID string `help:"server ID or name"`
BW int `help:"EIP bandwidth in Mbps"`
ChargeType string `help:"bandwidth charge type, either traffic or bandwidth" choices:"traffic|bandwidth"`
ChargeType string `help:"bandwidth charge type" choices:"traffic|bandwidth"`
}
R(&ServerCreateEipOptions{}, "server-create-eip", "allocate an EIP and associate EIP to server", func(s *mcclient.ClientSession, args *ServerCreateEipOptions) error {
params := jsonutils.NewDict()

View File

@@ -19,36 +19,20 @@ import (
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type EndpointListOptions struct {
Limit int64 `help:"Limit, default 0, i.e. no limit" default:"20"`
Offset int64 `help:"Offset, default 0, i.e. no offset"`
options.BaseListOptions
Region string `help:"Search by region"`
Service string `help:"Search by service id or name"`
Interface string `help:"Search by interface"`
}
R(&EndpointListOptions{}, "endpoint-list", "List service endpoints", func(s *mcclient.ClientSession, args *EndpointListOptions) error {
query := jsonutils.NewDict()
if args.Limit > 0 {
query.Add(jsonutils.NewInt(args.Limit), "limit")
}
if args.Offset > 0 {
query.Add(jsonutils.NewInt(args.Offset), "offset")
}
if len(args.Region) > 0 {
query.Add(jsonutils.NewString(args.Region), "region_id")
}
if len(args.Service) > 0 {
srvId, err := modules.ServicesV3.GetId(s, args.Service, nil)
if err != nil {
return err
}
query.Add(jsonutils.NewString(srvId), "service_id")
}
if len(args.Interface) > 0 {
query.Add(jsonutils.NewString(args.Interface), "interface")
query, err := options.ListStructToParams(args)
if err != nil {
return err
}
result, err := modules.EndpointsV3.List(s, query)
if err != nil {
@@ -82,7 +66,7 @@ func init() {
type EndpointCreateOptions struct {
SERVICE string `help:"Service ID or Name"`
REGION string `help:"Region"`
INTERFACE string `help:"Interface types" choices:"internal|public|admin"`
INTERFACE string `help:"Interface types" choices:"internal|public|admin|console"`
URL string `help:"URL"`
Zone string `help:"Zone"`
Name string `help:"Name"`

View File

@@ -23,6 +23,7 @@ import (
)
type BaseEventListOptions struct {
Scope string `help:"scope" choices:"project|domain|system"`
Since string `help:"Show logs since specific date" metavar:"DATETIME"`
Until string `help:"Show logs until specific date" metavar:"DATETIME"`
Limit int64 `help:"Limit number of logs" default:"20"`
@@ -31,6 +32,11 @@ type BaseEventListOptions struct {
Descending bool `help:"Descending order"`
OrderBy string `help:"order by specific field"`
Action []string `help:"Log action"`
User []string `help:"filter by operator user"`
Project []string `help:"filter by owner project"`
PagingMarker string `help:"marker for pagination"`
}
type EventListOptions struct {
@@ -91,6 +97,18 @@ func doEventList(man modules.ResourceManager, s *mcclient.ClientSession, args *E
if len(args.Action) > 0 {
params.Add(jsonutils.NewStringArray(args.Action), "action")
}
if len(args.User) > 0 {
params.Add(jsonutils.NewStringArray(args.User), "user")
}
if len(args.Project) > 0 {
params.Add(jsonutils.NewStringArray(args.Project), "project")
}
if len(args.Scope) > 0 {
params.Add(jsonutils.NewString(args.Scope), "scope")
}
if len(args.PagingMarker) > 0 {
params.Add(jsonutils.NewString(args.PagingMarker), "paging_marker")
}
logs, err := man.List(s, params)
if err != nil {
return err

View File

@@ -57,10 +57,10 @@ func init() {
PROJECT string `help:"Local project ID or Name"`
}
R(&ExternalProjectUpdateOptions{}, "external-project-update", "Update external project point to local project", func(s *mcclient.ClientSession, args *ExternalProjectUpdateOptions) error {
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.Update(s, args.ID, params)
result, err := modules.ExternalProjects.PerformAction(s, args.ID, "change-project", params)
if err != nil {
return err
}

View File

@@ -17,43 +17,22 @@ package shell
import (
"yunion.io/x/jsonutils"
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type GroupListOptions struct {
Admin bool `help:"admin mode"`
Name string `help:"Name of the groups to filter"`
Domain string `help:"Domain to filter"`
Limit int64 `help:"Items per page" default:"20"`
Offset int64 `help:"Offset"`
Search string `help:"search text"`
options.BaseListOptions
Name string `help:"Filter by name"`
OrderByDomain string `help:"order by domain name" choices:"asc|desc"`
}
R(&GroupListOptions{}, "group-list", "List groups", func(s *mcclient.ClientSession, args *GroupListOptions) error {
params := jsonutils.NewDict()
if len(args.Name) > 0 {
params.Add(jsonutils.NewString(args.Name), "name")
}
if len(args.Domain) > 0 {
domainId, e := modules.Domains.GetId(s, args.Domain, nil)
if e != nil {
return e
}
params.Add(jsonutils.NewString(domainId), "domain_id")
params.Add(jsonutils.JSONTrue, "admin")
}
if args.Admin {
params.Add(jsonutils.JSONTrue, "admin")
}
if args.Limit > 0 {
params.Add(jsonutils.NewInt(args.Limit), "limit")
}
if args.Offset > 0 {
params.Add(jsonutils.NewInt(args.Offset), "offset")
}
if len(args.Search) > 0 {
params.Add(jsonutils.NewString(args.Search), "name__icontains")
params, err := options.ListStructToParams(args)
if err != nil {
return err
}
result, err := modules.Groups.List(s, params)
if err != nil {
@@ -155,4 +134,61 @@ func init() {
return nil
})
R(&GroupShowOptions{}, "group-project-list", "List projects of group", func(s *mcclient.ClientSession, args *GroupShowOptions) error {
query := jsonutils.NewDict()
if len(args.Domain) > 0 {
domainId, err := modules.Domains.GetId(s, args.Domain, nil)
if err != nil {
return err
}
query.Add(jsonutils.NewString(domainId), "domain_id")
}
uid, err := modules.Groups.GetId(s, args.ID, query)
if err != nil {
return err
}
projects, e := modules.Groups.GetProjects(s, uid)
if e != nil {
return e
}
printList(projects, modules.Projects.GetColumns(s))
return nil
})
type GroupJoinProjectOptions struct {
Group string `help:"Group Id or name" optional:"false" positional:"true"`
Project []string `help:"Projects to join" nargs:"+"`
Role []string `help:"User join project with roles" nargs:"+"`
}
R(&GroupJoinProjectOptions{}, "group-join-project", "Group join projects with roles", func(s *mcclient.ClientSession, args *GroupJoinProjectOptions) error {
input := api.SJoinProjectsInput{}
input.Projects = args.Project
input.Roles = args.Role
result, err := modules.Groups.PerformAction(s, args.Group, "join", jsonutils.Marshal(input))
if err != nil {
return err
}
printObject(result)
return nil
})
type GroupLeaveProjectsOptions struct {
Group string `help:"group id or name" optional:"false" positional:"true"`
Project string `help:"project id or name" optional:"false" positional:"true"`
Role []string `help:"roles to remove" nargs:"+"`
}
R(&GroupLeaveProjectsOptions{}, "group-leave-project", "Leave a group from projects", func(s *mcclient.ClientSession, args *GroupLeaveProjectsOptions) error {
input := api.SLeaveProjectsInput{}
input.ProjectRoles = make([]api.SProjectRole, len(args.Role))
for i := range args.Role {
input.ProjectRoles[i].Project = args.Project
input.ProjectRoles[i].Role = args.Role[i]
}
result, err := modules.Groups.PerformAction(s, args.Group, "leave", jsonutils.Marshal(input))
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -48,6 +48,8 @@ func init() {
Hypervisor string `help:"filter hosts by hypervisor"`
StorageNotAttached bool `help:"List hosts not attach specified storage"`
options.BaseListOptions
}
R(&HostListOptions{}, "host-list", "List hosts", func(s *mcclient.ClientSession, opts *HostListOptions) error {
@@ -125,6 +127,12 @@ func init() {
return nil
})
R(&HostOpsOptions{}, "host-sync-config", "Synchronize config of a host", func(s *mcclient.ClientSession, args *HostOpsOptions) error {
results := modules.Hosts.BatchPerformAction(s, args.ID, "sync-config", nil)
printBatchResults(results, modules.Hosts.GetColumns(s))
return nil
})
R(&HostOpsOptions{}, "host-prepare", "Prepare a host for installation", func(s *mcclient.ClientSession, args *HostOpsOptions) error {
results := modules.Hosts.BatchPerformAction(s, args.ID, "prepare", nil)
printBatchResults(results, modules.Hosts.GetColumns(s))
@@ -184,6 +192,10 @@ func init() {
CpuReserved int64 `help:"CPU reserved"`
HostType string `help:"Change host type, CAUTION!!!!" choices:"hypervisor|kubelet|esxi|baremetal"`
AccessIp string `help:"Change access ip, CAUTION!!!!"`
IpmiUsername string `help:"IPMI user"`
IpmiPassword string `help:"IPMI password"`
IpmiIpAddr string `help:"IPMI ip_addr"`
}
R(&HostUpdateOptions{}, "host-update", "Update information of a host", func(s *mcclient.ClientSession, args *HostUpdateOptions) error {
params := jsonutils.NewDict()
@@ -211,6 +223,15 @@ func init() {
if len(args.AccessIp) > 0 {
params.Add(jsonutils.NewString(args.AccessIp), "access_ip")
}
if len(args.IpmiUsername) > 0 {
params.Add(jsonutils.NewString(args.IpmiUsername), "ipmi_username")
}
if len(args.IpmiPassword) > 0 {
params.Add(jsonutils.NewString(args.IpmiPassword), "ipmi_password")
}
if len(args.IpmiIpAddr) > 0 {
params.Add(jsonutils.NewString(args.IpmiIpAddr), "ipmi_ip_addr")
}
if params.Size() == 0 {
return fmt.Errorf("Not data to update")
}
@@ -333,6 +354,7 @@ func init() {
ID string `help:"ID or Name of host"`
WIRE string `help:"ID or Name of wire to attach"`
MAC string `help:"Mac address of NIC"`
INDEX int64 `help:"nic index"`
Type string `help:"Nic type" choices:"admin|ipmi"`
IpAddr string `help:"IP address"`
}
@@ -341,6 +363,7 @@ func init() {
params.Add(jsonutils.NewString(args.WIRE), "wire")
params.Add(jsonutils.NewString(args.MAC), "mac")
params.Add(jsonutils.JSONTrue, "link_up")
params.Add(jsonutils.NewInt(args.INDEX), "index")
if len(args.Type) > 0 {
params.Add(jsonutils.NewString(args.Type), "nic_type")
}

View File

@@ -70,15 +70,15 @@ func init() {
type HostWireUpdateOptions struct {
HOST string `help:"ID or Name of Host"`
WIRE string `help:"ID or Name of Wire"`
Mac string `help:"Mac address"`
MacAddr string `help:"Mac address"`
Interface string `help:"Interface"`
Bridge string `help:"Bridge"`
IsMaster string `help:"Master interface" choices:"true|false"`
}
R(&HostWireUpdateOptions{}, "host-wire-update", "Update host wire information", func(s *mcclient.ClientSession, args *HostWireUpdateOptions) error {
params := jsonutils.NewDict()
if len(args.Mac) > 0 {
params.Add(jsonutils.NewString(args.Mac), "mac_addr")
if len(args.MacAddr) > 0 {
params.Add(jsonutils.NewString(args.MacAddr), "mac_addr")
}
if len(args.Interface) > 0 {
params.Add(jsonutils.NewString(args.Interface), "interface")

View File

@@ -0,0 +1,248 @@
// 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 (
"fmt"
"yunion.io/x/jsonutils"
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type IdentityProviderListOptions struct {
options.BaseListOptions
}
R(&IdentityProviderListOptions{}, "idp-list", "List all identity provider", func(s *mcclient.ClientSession, args *IdentityProviderListOptions) error {
params, err := options.ListStructToParams(args)
if err != nil {
return err
}
results, err := modules.IdentityProviders.List(s, params)
if err != nil {
return err
}
printList(results, modules.IdentityProviders.GetColumns(s))
return nil
})
type IdentityProviderDetailOptions struct {
ID string `help:"Id or name of identity provider to show"`
}
R(&IdentityProviderDetailOptions{}, "idp-show", "Show details of idp", func(s *mcclient.ClientSession, args *IdentityProviderDetailOptions) error {
detail, err := modules.IdentityProviders.Get(s, args.ID, nil)
if err != nil {
return err
}
printObject(detail)
return nil
})
R(&IdentityProviderDetailOptions{}, "idp-config-show", "Show detail of a domain config", func(s *mcclient.ClientSession, args *IdentityProviderDetailOptions) error {
conf, err := modules.IdentityProviders.GetSpecific(s, args.ID, "config", nil)
if err != nil {
return err
}
fmt.Println(conf.PrettyString())
return nil
})
R(&IdentityProviderDetailOptions{}, "idp-enable", "Enable an identity provider", func(s *mcclient.ClientSession, args *IdentityProviderDetailOptions) error {
idp, err := modules.IdentityProviders.PerformAction(s, args.ID, "enable", nil)
if err != nil {
return err
}
printObject(idp)
return nil
})
R(&IdentityProviderDetailOptions{}, "idp-disable", "Disable an identity provider", func(s *mcclient.ClientSession, args *IdentityProviderDetailOptions) error {
idp, err := modules.IdentityProviders.PerformAction(s, args.ID, "disable", nil)
if err != nil {
return err
}
printObject(idp)
return nil
})
R(&IdentityProviderDetailOptions{}, "idp-delete", "Delete an identity provider", func(s *mcclient.ClientSession, args *IdentityProviderDetailOptions) error {
idp, err := modules.IdentityProviders.Delete(s, args.ID, nil)
if err != nil {
return err
}
printObject(idp)
return nil
})
R(&IdentityProviderDetailOptions{}, "idp-sync", "Sync an identity provider", func(s *mcclient.ClientSession, args *IdentityProviderDetailOptions) error {
idp, err := modules.IdentityProviders.PerformAction(s, args.ID, "sync", nil)
if err != nil {
return err
}
printObject(idp)
return nil
})
type IdentityProviderConfigLDAPOptions struct {
ID string `help:"ID of idp to config" json:"-"`
api.SLDAPIdpConfigOptions
}
R(&IdentityProviderConfigLDAPOptions{}, "idp-config-ldap", "Config an Identity provider with LDAP driver", func(s *mcclient.ClientSession, args *IdentityProviderConfigLDAPOptions) error {
config := jsonutils.NewDict()
config.Add(jsonutils.Marshal(args), "config", "ldap")
nconf, err := modules.IdentityProviders.PerformAction(s, args.ID, "config", config)
if err != nil {
return err
}
fmt.Println(nconf.PrettyString())
return nil
})
type IdentityProviderCreateOptions struct {
NAME string `help:"name of identity provider" json:"-"`
AutoCreateProject bool `help:"automatically create a default project when importing domain" json:"-"`
NoAutoCreateProject bool `help:"do not create default project when importing domain" json:"-"`
TargetDomain string `help:"target domain without creating new domain"`
api.SLDAPIdpConfigOptions
}
R(&IdentityProviderCreateOptions{}, "idp-create-ldap", "Create an identity provider with LDAP driver", func(s *mcclient.ClientSession, args *IdentityProviderCreateOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.NAME), "name")
if len(args.TargetDomain) > 0 {
params.Add(jsonutils.NewString(args.TargetDomain), "target_domain")
}
if args.AutoCreateProject {
params.Add(jsonutils.JSONTrue, "auto_create_project")
} else if args.NoAutoCreateProject {
params.Add(jsonutils.JSONFalse, "auto_create_project")
}
params.Add(jsonutils.NewString("ldap"), "driver")
params.Add(jsonutils.Marshal(args), "config", "ldap")
idp, err := modules.IdentityProviders.Create(s, params)
if err != nil {
return err
}
printObject(idp)
return nil
})
type IdentityProviderConfigLDAPSingleDomainOptions struct {
ID string `help:"ID of idp to config" json:"-"`
api.SLDAPIdpConfigSingleDomainOptions
}
R(&IdentityProviderConfigLDAPSingleDomainOptions{}, "idp-config-ldap-single-domain", "Config an Identity provider with LDAP driver/single domain template", func(s *mcclient.ClientSession, args *IdentityProviderConfigLDAPSingleDomainOptions) error {
config := jsonutils.NewDict()
config.Add(jsonutils.Marshal(args), "config", "ldap")
nconf, err := modules.IdentityProviders.PerformAction(s, args.ID, "config", config)
if err != nil {
return err
}
fmt.Println(nconf.PrettyString())
return nil
})
type IdentityProviderCreateLDAPSingleDomainOptions struct {
NAME string `help:"name of identity provider" json:"-"`
TEMPLATE string `help:"configuration template name" choices:"msad_one_domain|openldap_one_domain" json:"-"`
AutoCreateProject bool `help:"automatically create a default project when importing domain" json:"-"`
NoAutoCreateProject bool `help:"do not create default project when importing domain" json:"-"`
TargetDomain string `help:"target domain without creating new domain"`
api.SLDAPIdpConfigSingleDomainOptions
}
R(&IdentityProviderCreateLDAPSingleDomainOptions{}, "idp-create-ldap-single-domain", "Create an identity provider with LDAP driver/single domain template", func(s *mcclient.ClientSession, args *IdentityProviderCreateLDAPSingleDomainOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.NAME), "name")
params.Add(jsonutils.NewString("ldap"), "driver")
params.Add(jsonutils.NewString(args.TEMPLATE), "template")
if len(args.TargetDomain) > 0 {
params.Add(jsonutils.NewString(args.TargetDomain), "target_domain")
}
if args.AutoCreateProject {
params.Add(jsonutils.JSONTrue, "auto_create_project")
} else if args.NoAutoCreateProject {
params.Add(jsonutils.JSONFalse, "auto_create_project")
}
params.Add(jsonutils.Marshal(args), "config", "ldap")
idp, err := modules.IdentityProviders.Create(s, params)
if err != nil {
return err
}
printObject(idp)
return nil
})
type IdentityProviderConfigLDAPMultiDomainOptions struct {
ID string `help:"ID of idp to config" json:"-"`
api.SLDAPIdpConfigMultiDomainOptions
}
R(&IdentityProviderConfigLDAPMultiDomainOptions{}, "idp-config-ldap-multi-domain", "Config an Identity provider with LDAP driver/multi domain template", func(s *mcclient.ClientSession, args *IdentityProviderConfigLDAPMultiDomainOptions) error {
config := jsonutils.NewDict()
config.Add(jsonutils.Marshal(args), "config", "ldap")
nconf, err := modules.IdentityProviders.PerformAction(s, args.ID, "config", config)
if err != nil {
return err
}
fmt.Println(nconf.PrettyString())
return nil
})
type IdentityProviderCreateLDAPMultiDomainOptions struct {
NAME string `help:"name of identity provider" json:"-"`
TEMPLATE string `help:"configuration template name" choices:"msad_multi_domain" json:"-"`
AutoCreateProject bool `help:"automatically create a default project when importing domain" json:"-"`
NoAutoCreateProject bool `help:"do not create default project when importing domain" json:"-"`
api.SLDAPIdpConfigMultiDomainOptions
}
R(&IdentityProviderCreateLDAPMultiDomainOptions{}, "idp-create-ldap-multi-domain", "Create an identity provider with LDAP driver/single domain template", func(s *mcclient.ClientSession, args *IdentityProviderCreateLDAPMultiDomainOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.NAME), "name")
params.Add(jsonutils.NewString("ldap"), "driver")
params.Add(jsonutils.NewString(args.TEMPLATE), "template")
if args.AutoCreateProject {
params.Add(jsonutils.JSONTrue, "auto_create_project")
} else if args.NoAutoCreateProject {
params.Add(jsonutils.JSONFalse, "auto_create_project")
}
params.Add(jsonutils.Marshal(args), "config", "ldap")
idp, err := modules.IdentityProviders.Create(s, params)
if err != nil {
return err
}
printObject(idp)
return nil
})
}

View File

@@ -28,11 +28,11 @@ import (
)
type ImageOptionalOptions struct {
Public bool `help:"Make image public"`
Private bool `help:"Make image private"`
Format string `help:"Image format" choices:"raw|qcow2|iso|vmdk|docker|vhd"`
Protected bool `help:"Prevent image from being deleted"`
Unprotected bool `help:"Allow image to be deleted"`
Standard bool `help:"Mark image as a standard image"`
Nonstandard bool `help:"Mark image as a non-standard image"`
MinDisk int64 `help:"Disk size after expanded, in MB" metavar:"MIN_DISK_SIZE_MB"`
MinRam int64 `help:"Minimal memory size required" metavar:"MIN_RAM_MB"`
VirtualSize int64 `help:"Disk size after expanded, in MB"`
@@ -55,11 +55,6 @@ type ImageOptionalOptions struct {
}
func addImageOptionalOptions(s *mcclient.ClientSession, params *jsonutils.JSONDict, args ImageOptionalOptions) error {
if args.Public && !args.Private {
params.Add(jsonutils.NewString("true"), "is-public")
} else if !args.Public && args.Private {
params.Add(jsonutils.NewString("false"), "is-public")
}
if len(args.Format) > 0 {
params.Add(jsonutils.NewString("bare"), "container-format")
params.Add(jsonutils.NewString(args.Format), "disk-format")
@@ -69,6 +64,11 @@ func addImageOptionalOptions(s *mcclient.ClientSession, params *jsonutils.JSONDi
} else if !args.Protected && args.Unprotected {
params.Add(jsonutils.NewString("false"), "protected")
}
if args.Standard && !args.Nonstandard {
params.Add(jsonutils.JSONTrue, "is_standard")
} else if !args.Standard && args.Nonstandard {
params.Add(jsonutils.JSONFalse, "is_standard")
}
if args.MinDisk > 0 {
params.Add(jsonutils.NewString(fmt.Sprintf("%d", args.MinDisk)), "min_disk")
}
@@ -134,9 +134,11 @@ func init() {
type ImageListOptions struct {
options.BaseListOptions
IsPublic string `help:"filter images public or not(True, False or None)" choices:"true|false|none"`
Format []string `help:"Disk formats"`
Name string `help:"Name filter"`
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"`
Format []string `help:"Disk formats"`
Name string `help:"Name filter"`
}
R(&ImageListOptions{}, "image-list", "List images", func(s *mcclient.ClientSession, args *ImageListOptions) error {
params, err := args.Params()
@@ -146,6 +148,12 @@ func init() {
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 len(args.Tenant) > 0 {
tid, e := modules.Projects.GetId(s, args.Tenant, nil)
if e != nil {
@@ -215,19 +223,7 @@ func init() {
}
R(&ImageUpdateOptions{}, "image-update", "Update images meta infomation", func(s *mcclient.ClientSession, args *ImageUpdateOptions) error {
/* img, e := modules.Images.Get(s, args.ID, nil)
if e != nil {
return e
}
idstr, e := img.GetString("id")
if e != nil {
return e
}*/
params := jsonutils.NewDict()
/* properties, _ := img.Get("properties")
if properties != nil {
params.Add(properties, "properties")
}*/
if len(args.Name) > 0 {
params.Add(jsonutils.NewString(args.Name), "name")
}
@@ -268,7 +264,7 @@ func init() {
type ImageDeleteOptions struct {
ID []string `help:"Image ID or name"`
OverridePendingDelete *bool `help:"Delete image directly instead of pending delete"`
OverridePendingDelete *bool `help:"Delete image directly instead of pending delete" short-token:"f"`
}
R(&ImageDeleteOptions{}, "image-delete", "Delete a image", func(s *mcclient.ClientSession, args *ImageDeleteOptions) error {
params, err := options.StructToParams(args)
@@ -316,9 +312,6 @@ func init() {
// if len(args.Format) == 0 {
// return fmt.Errorf("Please specify image format")
//}
if len(args.OsType) == 0 {
return fmt.Errorf("Please specify OS type")
}
err := addImageOptionalOptions(s, params, args.ImageOptionalOptions)
if err != nil {
return err
@@ -418,17 +411,26 @@ func init() {
return nil
})
R(&ImageOperationOptions{}, "image-public", "Make a image public", func(s *mcclient.ClientSession, args *ImageOperationOptions) error {
type ImagePublicOptions struct {
ID []string `help:"ID or name of image" json:"-"`
Scope string `help:"sharing scope" choices:"system|domain"`
ShareToProject []string `help:"Share to prject"`
}
R(&ImagePublicOptions{}, "image-public", "Make a image public", func(s *mcclient.ClientSession, args *ImagePublicOptions) error {
params, err := options.StructToParams(args)
if err != nil {
return err
}
if len(args.ID) == 0 {
return fmt.Errorf("No image ID provided")
} else if len(args.ID) == 1 {
result, err := modules.Images.PerformAction(s, args.ID[0], "public", nil)
result, err := modules.Images.PerformAction(s, args.ID[0], "public", params)
if err != nil {
return err
}
printObject(result)
} else {
results := modules.Images.BatchPerformAction(s, args.ID, "public", nil)
results := modules.Images.BatchPerformAction(s, args.ID, "public", params)
printBatchResults(results, modules.Images.GetColumns(s))
}
return nil
@@ -450,18 +452,16 @@ func init() {
R(&ImageOperationOptions{}, "image-mark-standard", "Mark image standard", func(s *mcclient.ClientSession, args *ImageOperationOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.JSONTrue, "is-public")
params.Add(jsonutils.JSONTrue, "protected")
results := modules.Images.BatchPerformAction(s, args.ID, "mark-public-protected", params)
params.Add(jsonutils.JSONTrue, "is_standard")
results := modules.Images.BatchPerformAction(s, args.ID, "mark-standard", params)
printBatchResults(results, modules.Images.GetColumns(s))
return nil
})
R(&ImageOperationOptions{}, "image-mark-unstandard", "Mark image not standard", func(s *mcclient.ClientSession, args *ImageOperationOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.JSONFalse, "is-public")
params.Add(jsonutils.JSONFalse, "protected")
results := modules.Images.BatchPerformAction(s, args.ID, "mark-public-protected", params)
params.Add(jsonutils.JSONFalse, "is_standard")
results := modules.Images.BatchPerformAction(s, args.ID, "mark-standard", params)
printBatchResults(results, modules.Images.GetColumns(s))
return nil
})

View File

@@ -28,7 +28,7 @@ func init() {
*/
type TaskOperOperateOptions struct {
ID string `help:"ID of task"`
APPROVAL_DECISION bool `help:"Approval decision" choices:"true|false"`
APPROVAL_DECISION bool `help:"Approval decision"`
ApprovalProposal string `help:"Approval proposal"`
}
R(&TaskOperOperateOptions{}, "process-task-operate", "Operate task", func(s *mcclient.ClientSession, args *TaskOperOperateOptions) error {

View File

@@ -20,6 +20,8 @@ import (
"os"
"os/exec"
"github.com/ghodss/yaml"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
@@ -74,7 +76,11 @@ func initRaw() {
if err != nil {
return err
}
body, err := jsonutils.Parse(content)
jsonBytes, err := yaml.YAMLToJSON(content)
if err != nil {
return err
}
body, err := jsonutils.Parse(jsonBytes)
if err != nil {
return err
}
@@ -90,16 +96,16 @@ func initRaw() {
})
R(&RawOpt{}, "k8s-edit", "Edit k8s resource instance", func(s *mcclient.ClientSession, args *RawOpt) error {
obj, err := k8s.RawResource.Get(s, args.KIND, args.Namespace, args.NAME, args.Cluster)
yamlBytes, err := k8s.RawResource.GetYAML(s, args.KIND, args.Namespace, args.NAME, args.Cluster)
if err != nil {
return err
}
tempfile, err := ioutil.TempFile("", fmt.Sprintf("k8s-%s-%s.json", args.KIND, args.NAME))
tempfile, err := ioutil.TempFile("", fmt.Sprintf("k8s-%s-%s.yaml", args.KIND, args.NAME))
if err != nil {
return err
}
defer os.Remove(tempfile.Name())
if _, err := tempfile.Write([]byte(obj.PrettyString())); err != nil {
if _, err := tempfile.Write(yamlBytes); err != nil {
return err
}
if err := tempfile.Close(); err != nil {

View File

@@ -52,7 +52,7 @@ func init() {
type KeypairCreate struct {
NAME string `help:"Name of keypair to be created"`
Scheme string `help:"Scheme of keypair, RSA or DSA, default is RSA" choices:"RSA|DSA" default:"RSA"`
Scheme string `help:"Scheme of keypair, default is RSA" choices:"RSA|DSA" default:"RSA"`
Desc string `help:"Short description of keypair"`
}

View File

@@ -119,4 +119,24 @@ func init() {
printLbagent(lbagent)
return nil
})
R(&options.LoadbalancerAgentActionDeployOptions{}, "lbagent-deploy", "Deploy lbagent", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentActionDeployOptions) error {
params, err := opts.Params()
if err != nil {
return err
}
lbagent, err := modules.LoadbalancerAgents.PerformAction(s, opts.ID, "deploy", params)
if err != nil {
return err
}
printLbagent(lbagent)
return nil
})
R(&options.LoadbalancerAgentActionUndeployOptions{}, "lbagent-undeploy", "Undeploy lbagent", func(s *mcclient.ClientSession, opts *options.LoadbalancerAgentActionUndeployOptions) error {
lbagent, err := modules.LoadbalancerAgents.PerformAction(s, opts.ID, "undeploy", nil)
if err != nil {
return err
}
printLbagent(lbagent)
return nil
})
}

View File

@@ -0,0 +1,76 @@
// 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/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
R(&options.LoadbalancerClusterCreateOptions{}, "lbcluster-create", "Create lbcluster", func(s *mcclient.ClientSession, opts *options.LoadbalancerClusterCreateOptions) error {
params, err := options.StructToParams(opts)
if err != nil {
return err
}
lbcluster, err := modules.LoadbalancerClusters.Create(s, params)
if err != nil {
return err
}
printObject(lbcluster)
return nil
})
R(&options.LoadbalancerClusterUpdateOptions{}, "lbcluster-update", "Update lbcluster", func(s *mcclient.ClientSession, opts *options.LoadbalancerClusterUpdateOptions) error {
params, err := options.StructToParams(opts)
if err != nil {
return err
}
lbcluster, err := modules.LoadbalancerClusters.Update(s, opts.ID, params)
if err != nil {
return err
}
printObject(lbcluster)
return nil
})
R(&options.LoadbalancerClusterGetOptions{}, "lbcluster-show", "Show lbcluster", func(s *mcclient.ClientSession, opts *options.LoadbalancerClusterGetOptions) error {
lbcluster, err := modules.LoadbalancerClusters.Get(s, opts.ID, nil)
if err != nil {
return err
}
printObject(lbcluster)
return nil
})
R(&options.LoadbalancerClusterListOptions{}, "lbcluster-list", "List lbclusters", func(s *mcclient.ClientSession, opts *options.LoadbalancerClusterListOptions) error {
params, err := options.ListStructToParams(opts)
if err != nil {
return err
}
result, err := modules.LoadbalancerClusters.List(s, params)
if err != nil {
return err
}
printList(result, modules.LoadbalancerClusters.GetColumns(s))
return nil
})
R(&options.LoadbalancerClusterDeleteOptions{}, "lbcluster-delete", "Show lbcluster", func(s *mcclient.ClientSession, opts *options.LoadbalancerClusterDeleteOptions) error {
lbagent, err := modules.LoadbalancerClusters.Delete(s, opts.ID, nil)
if err != nil {
return err
}
printObject(lbagent)
return nil
})
}

View File

@@ -89,4 +89,11 @@ func init() {
printObject(lblistenerrule)
return nil
})
R(&options.LoadbalancerListenerRuleGetBackendStatusOptions{}, "lblistenerrule-backend-status", "Get lblistenerrule backend status", func(s *mcclient.ClientSession, opts *options.LoadbalancerListenerRuleGetBackendStatusOptions) error {
backendStatus, err := modules.LoadbalancerListenerRules.GetSpecific(s, opts.ID, "backend-status", nil)
if err != nil {
return err
}
return printLbBackendStatus(backendStatus)
})
}

View File

@@ -15,6 +15,8 @@
package shell
import (
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
@@ -22,6 +24,34 @@ import (
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func printLbBackendStatus(backendStatus jsonutils.JSONObject) error {
arr, ok := backendStatus.(*jsonutils.JSONArray)
if !ok {
return fmt.Errorf("want json array, got %s", backendStatus.String())
}
objList, err := arr.GetArray()
if err != nil {
return err
}
listResult := &modules.ListResult{
Data: objList,
}
columns := []string{
"id",
"name",
"backend_type",
"backend_id",
"address",
"port",
"weight",
"check_time",
"check_status",
"check_code",
}
printList(listResult, columns)
return nil
}
func init() {
R(&options.LoadbalancerListenerCreateOptions{}, "lblistener-create", "Create lblistener", func(s *mcclient.ClientSession, opts *options.LoadbalancerListenerCreateOptions) error {
@@ -99,4 +129,11 @@ func init() {
printObject(lblistener)
return nil
})
R(&options.LoadbalancerListenerGetBackendStatusOptions{}, "lblistener-backend-status", "Get lblistene backend status", func(s *mcclient.ClientSession, opts *options.LoadbalancerListenerGetBackendStatusOptions) error {
backendStatus, err := modules.LoadbalancerListeners.GetSpecific(s, opts.ID, "backend-status", nil)
if err != nil {
return err
}
return printLbBackendStatus(backendStatus)
})
}

View File

@@ -12,27 +12,28 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package algorithm
package shell
import (
"fmt"
"yunion.io/x/onecloud/pkg/scheduler/cache/candidate"
"yunion.io/x/onecloud/pkg/scheduler/core"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
)
func ToHostCandidate(c core.Candidater) (*candidate.HostDesc, error) {
d, ok := c.(*candidate.HostDesc)
if !ok {
return nil, fmt.Errorf("Can't convert %#v to '*candidate.HostDesc'", c)
func init() {
type ModuleListOptions struct {
}
return d, nil
}
func ToBaremetalCandidate(c core.Candidater) (*candidate.BaremetalDesc, error) {
d, ok := c.(*candidate.BaremetalDesc)
if !ok {
return nil, fmt.Errorf("Can't convert %#v to '*candidate.BaremetalDesc'", c)
}
return d, nil
R(&ModuleListOptions{}, "module-list", "List all modules", func(s *mcclient.ClientSession, args *ModuleListOptions) error {
modules, jointModules := modules.GetRegisterdModules()
json := jsonutils.Marshal(modules)
fmt.Println("Modules")
fmt.Println(json.PrettyString())
json2 := jsonutils.Marshal(jointModules)
fmt.Println("Joint modules")
fmt.Println(json2.PrettyString())
return nil
})
}

View File

@@ -35,6 +35,7 @@ func init() {
Vpc string `help:"search networks belongs to a VPC"`
Region string `help:"search networks belongs to a CloudRegion" json:"cloudregion"`
City string `help:"search networks belongs to a city"`
Usable *bool `help:"search usable networks"`
ServerType string `help:"search networks belongs to a ServerType" choices:"guest|baremetal|container|pxe|ipmi"`
}
R(&NetworkListOptions{}, "network-list", "List networks", func(s *mcclient.ClientSession, opts *NetworkListOptions) error {
@@ -165,8 +166,17 @@ func init() {
return nil
})
R(&NetworkShowOptions{}, "network-public", "Make a network public", func(s *mcclient.ClientSession, args *NetworkShowOptions) error {
result, err := modules.Networks.PerformAction(s, args.ID, "public", nil)
type NetworkShareOptions struct {
NetworkShowOptions
Scope string `help:"sharing scope" choices:"system|domain"`
ShareToProject []string `help:"Share to prject"`
}
R(&NetworkShareOptions{}, "network-public", "Make a network public", func(s *mcclient.ClientSession, args *NetworkShareOptions) error {
params, err := options.StructToParams(args)
if err != nil {
return err
}
result, err := modules.Networks.PerformAction(s, args.ID, "public", params)
if err != nil {
return err
}
@@ -200,6 +210,7 @@ func init() {
NETMASK int64 `help:"Length of network mask"`
Gateway string `help:"Default gateway"`
VlanId int64 `help:"Vlan ID" default:"1"`
IfnameHint string `help:"Hint for ifname generation"`
AllocPolicy string `help:"Address allocation policy" choices:"none|stepdown|stepup|random"`
ServerType string `help:"Server type" choices:"baremetal|guest|container|pxe|ipmi"`
Desc string `help:"Description" metavar:"DESCRIPTION"`
@@ -219,6 +230,9 @@ func init() {
if len(args.ServerType) > 0 {
params.Add(jsonutils.NewString(args.ServerType), "server_type")
}
if len(args.IfnameHint) > 0 {
params.Add(jsonutils.NewString(args.IfnameHint), "ifname_hint")
}
if len(args.AllocPolicy) > 0 {
params.Add(jsonutils.NewString(args.AllocPolicy), "alloc_policy")
}

View File

@@ -30,9 +30,9 @@ func init() {
type NotificationCreateOptions struct {
UID string `help:"The user you wanna sent to (Keystone User ID)"`
CONTACTTYPE string `help:"User's contacts type, cloud be email|mobile|dingtalk|webconsole" choices:"email|mobile|dingtalk|webconsole"`
CONTACTTYPE string `help:"User's contacts type" choices:"email|mobile|dingtalk|webconsole"`
TOPIC string `help:"Title or topic of the notification"`
PRIORITY string `help:"Priority of the notification maybe normal|important|fatal" choices:"normal|important|fatal"`
PRIORITY string `help:"Priority of the notification" choices:"normal|important|fatal"`
MSG string `help:"The content of the notification"`
Remark string `help:"Remark or description of the notification"`
Group bool `help:"Send to group"`
@@ -57,7 +57,34 @@ func init() {
}
return nil
})
/**
* 发送全局通知
*/
type NotificationBroadcastOptions struct {
// CONTACTTYPE string `help:"User's contacts type, cloud be email|mobile|dingtalk|/webconsole" choices:"email|mobile|dingtalk|webconsole"`
Topic string `required:"true" help:"Title or topic of the notification"`
Priority string `help:"Priority of the notification" choices:"normal|important|fatal" default:"normal"`
Msg string `help:"The content of the notification"`
Remark string `help:"Remark or description of the notification"`
// Group bool `help:"Send to group"`
}
R(&NotificationBroadcastOptions{}, "notify-broadcast", "Send a notification to all online users", func(s *mcclient.ClientSession, args *NotificationBroadcastOptions) error {
msg := notify.SNotifyMessage{}
msg.Broadcast = true
msg.ContactType = notify.TNotifyChannel("webconsole")
msg.Topic = args.Topic
msg.Priority = notify.TNotifyPriority(args.Priority)
msg.Msg = args.Msg
msg.Remark = args.Remark
err := notify.Notifications.Send(s, msg)
if err != nil {
return err
}
return nil
})
/**
* 修改通知发送任务的状态
*/

View File

@@ -24,6 +24,7 @@ import (
func init() {
type ParametersListOptions struct {
Name string `help:"List parameter of specificated name"`
NamespaceId string `help:"List parameter of specificated namespace id, ADMIN only"`
User string `help:"List parameter of specificated user id, ADMIN only" token:"user-id"`
Service string `help:"List parameter of specificated service id, ADMIN only"`
@@ -36,13 +37,20 @@ func init() {
return err
}
if len(args.Name) > 0 {
params.Add(jsonutils.NewString(args.Name), "name")
}
var result *modules.ListResult
if len(args.NamespaceId) > 0 {
params.Add(jsonutils.NewString(args.NamespaceId), "namespace_id")
params.Add(jsonutils.NewString("system"), "scope")
result, err = modules.Parameters.List(s, params)
} else if len(args.User) > 0 {
params.Add(jsonutils.NewString("system"), "scope")
result, err = modules.Parameters.ListInContext(s, params, &modules.UsersV3, args.User)
} else if len(args.Service) > 0 {
params.Add(jsonutils.NewString("system"), "scope")
result, err = modules.Parameters.ListInContext(s, params, &modules.ServicesV3, args.Service)
} else {
result, err = modules.Parameters.List(s, params)
@@ -64,19 +72,22 @@ func init() {
R(&ParametersShowOptions{}, "parameter-show", "show a parameter", func(s *mcclient.ClientSession, args *ParametersShowOptions) error {
params := jsonutils.NewDict()
if len(args.NamespaceId) > 0 {
/*if len(args.NamespaceId) > 0 {
params.Add(jsonutils.JSONTrue, "admin")
params.Add(jsonutils.NewString(args.NamespaceId), "namespace_id")
}
}*/
var parameter jsonutils.JSONObject
var err error
if len(args.NamespaceId) > 0 {
params.Add(jsonutils.NewString("system"), "scope")
params.Add(jsonutils.NewString(args.NamespaceId), "namespace_id")
parameter, err = modules.Parameters.Get(s, args.NAME, params)
} else if len(args.User) > 0 {
params.Add(jsonutils.NewString("system"), "scope")
parameter, err = modules.Parameters.GetInContext(s, args.NAME, params, &modules.UsersV3, args.User)
} else if len(args.Service) > 0 {
params.Add(jsonutils.NewString("system"), "scope")
parameter, err = modules.Parameters.GetInContext(s, args.NAME, params, &modules.ServicesV3, args.Service)
} else {
parameter, err = modules.Parameters.Get(s, args.NAME, params)
@@ -97,9 +108,14 @@ func init() {
}
R(&ParametersCreateOptions{}, "parameter-create", "create a parameter", func(s *mcclient.ClientSession, args *ParametersCreateOptions) error {
value, err := jsonutils.ParseString(args.VALUE)
if err != nil {
return err
}
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.NAME), "name")
params.Add(jsonutils.NewString(args.VALUE), "value")
params.Add(value, "value")
if len(args.User) > 0 {
params.Add(jsonutils.NewString(args.User), "user_id")
@@ -123,13 +139,18 @@ func init() {
}
R(&ParametersUpdateOptions{}, "parameter-update", "update parameter", func(s *mcclient.ClientSession, args *ParametersUpdateOptions) error {
params := jsonutils.NewDict()
if len(args.VALUE) > 0 {
params.Add(jsonutils.NewString(args.VALUE), "value")
}
var parameter jsonutils.JSONObject
var err error
value, err := jsonutils.ParseString(args.VALUE)
if err != nil {
return err
}
params := jsonutils.NewDict()
if len(args.VALUE) > 0 {
params.Add(value, "value")
}
if len(args.User) > 0 {
parameter, err = modules.Parameters.PutInContext(s, args.NAME, params, &modules.UsersV3, args.User)
} else if len(args.Service) > 0 {

View File

@@ -23,35 +23,28 @@ import (
"time"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/cloudcommon/consts"
"yunion.io/x/onecloud/pkg/cloudcommon/policy"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/auth"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
"yunion.io/x/onecloud/pkg/util/rbacutils"
)
func init() {
type PolicyListOptions struct {
Limit int64 `help:"Limit, default 0, i.e. no limit"`
Offset int64 `help:"Offset, default 0, i.e. no offset"`
Search string `help:"Search by name"`
Type string `help:"filter by type"`
Format string `help:"policy format, default to yaml" default:"yaml" choices:"yaml|json"`
options.BaseListOptions
Type string `help:"filter by type"`
Format string `help:"policy format, default to yaml" default:"yaml" choices:"yaml|json"`
OrderByDomain string `help:"order by domain name" choices:"asc|desc"`
}
R(&PolicyListOptions{}, "policy-list", "List all policies", func(s *mcclient.ClientSession, args *PolicyListOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.Format), "format")
if len(args.Search) > 0 {
params.Add(jsonutils.NewString(args.Search), "type__icontains")
}
if args.Limit > 0 {
params.Add(jsonutils.NewInt(args.Limit), "limit")
}
if args.Offset > 0 {
params.Add(jsonutils.NewInt(args.Offset), "offset")
}
if len(args.Type) > 0 {
params.Add(jsonutils.NewString(args.Type), "type")
params, err := options.ListStructToParams(args)
if err != nil {
return err
}
result, err := modules.Policies.List(s, params)
if err != nil {
@@ -62,6 +55,7 @@ func init() {
})
type PolicyCreateOptions struct {
Domain string `help:"domain of the policy"`
TYPE string `help:"type of the policy"`
FILE string `help:"path to policy file"`
Enabled bool `help:"create policy enabled"`
@@ -76,6 +70,9 @@ func init() {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.TYPE), "type")
params.Add(jsonutils.NewString(string(policyBytes)), "policy")
if len(args.Domain) > 0 {
params.Add(jsonutils.NewString(args.Domain), "domain")
}
if args.Enabled {
params.Add(jsonutils.JSONTrue, "enabled")
} else if args.Disabled {
@@ -99,7 +96,7 @@ func init() {
Enabled bool `help:"update policy enabled"`
Disabled bool `help:"update policy disabled"`
}
R(&PolicyPatchOptions{}, "policy-patch", "Patch policy", func(s *mcclient.ClientSession, args *PolicyPatchOptions) error {
updateFunc := func(s *mcclient.ClientSession, args *PolicyPatchOptions) error {
policyId, err := modules.Policies.GetId(s, args.ID, nil)
if err != nil {
return err
@@ -127,6 +124,29 @@ func init() {
printObject(result)
return nil
}
R(&PolicyPatchOptions{}, "policy-patch", "Patch policy", updateFunc)
R(&PolicyPatchOptions{}, "policy-update", "Patch policy", updateFunc)
type PolicyPerformOptions struct {
ID string `help:"ID of policy to update"`
}
R(&PolicyPerformOptions{}, "policy-public", "Mark a policy public", func(s *mcclient.ClientSession, args *PolicyPerformOptions) error {
result, err := modules.Policies.PerformAction(s, args.ID, "public", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
R(&PolicyPerformOptions{}, "policy-private", "Mark a policy private", func(s *mcclient.ClientSession, args *PolicyPerformOptions) error {
result, err := modules.Policies.PerformAction(s, args.ID, "private", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
@@ -222,10 +242,11 @@ func init() {
})
type PolicyAdminCapableOptions struct {
User string `help:"For user"`
UserDomain string `help:"Domain for user"`
Project string `help:"Role assignments for project"`
Role []string `help:"Roles"`
User string `help:"For user"`
UserDomain string `help:"Domain for user"`
Project string `help:"Role assignments for project"`
ProjectDomain string `help:"Domain for project"`
Role []string `help:"Roles"`
}
R(&PolicyAdminCapableOptions{}, "policy-admin-capable", "Check admin capable", func(s *mcclient.ClientSession, args *PolicyAdminCapableOptions) error {
auth.InitFromClientSession(s)
@@ -234,49 +255,64 @@ func init() {
var token mcclient.TokenCredential
if len(args.User) > 0 {
token = &mcclient.SSimpleToken{
Domain: args.UserDomain,
User: args.User,
Project: args.Project,
Roles: strings.Join(args.Role, ","),
Domain: args.UserDomain,
User: args.User,
Project: args.Project,
ProjectDomain: args.ProjectDomain,
Roles: strings.Join(args.Role, ","),
}
} else {
token = s.GetToken()
}
capable := policy.PolicyManager.IsAdminCapable(token)
fmt.Printf("%v\n", capable)
fmt.Println("Token", token)
for _, scope := range []rbacutils.TRbacScope{
rbacutils.ScopeSystem,
rbacutils.ScopeDomain,
rbacutils.ScopeProject,
rbacutils.ScopeUser,
rbacutils.ScopeNone,
} {
fmt.Printf("%s: ", scope)
capable := policy.PolicyManager.IsScopeCapable(token, scope)
fmt.Println(capable)
}
return nil
})
type PolicyExplainOptions struct {
User string `help:"For user"`
UserDomain string `help:"Domain for user"`
Project string `help:"Role assignments for project"`
Role []string `help:"Roles"`
Request []string `help:"explain request, in format of key:is_admin:service:resource:action:extra"`
Name string `help:"policy name"`
User string `help:"For user"`
UserDomain string `help:"Domain for user"`
Project string `help:"Role assignments for project"`
Role []string `help:"Roles"`
Request []string `help:"explain request, in format of key:scope:service:resource:action:extra"`
Name string `help:"policy name"`
Debug bool `help:"enable RBAC debug"`
ProjectDomain string `help:"Domain name"`
Ip string `help:"login IP"`
}
R(&PolicyExplainOptions{}, "policy-explain", "Explain policy result", func(s *mcclient.ClientSession, args *PolicyExplainOptions) error {
err := log.SetLogLevelByString(log.Logger(), "debug")
if err != nil {
log.Fatalf("Set log level %q: %v", "debug", err)
}
auth.InitFromClientSession(s)
policy.EnableGlobalRbac(15*time.Second, 15*time.Second, false)
if args.Debug {
consts.EnableRbacDebug()
}
req := jsonutils.NewDict()
for i := 0; i < len(args.Request); i += 1 {
parts := strings.Split(args.Request[i], ":")
if len(parts) < 3 {
return fmt.Errorf("invalid request, should be in the form of key:is_admin:service[:resource:action:extra]")
return fmt.Errorf("invalid request, should be in the form of key:[system|domain|project]:service[:resource:action:extra]")
}
key := parts[0]
data := make([]jsonutils.JSONObject, 1)
if parts[1] == "true" {
data[0] = jsonutils.JSONTrue
} else if parts[1] == "false" {
data[0] = jsonutils.JSONFalse
} else {
return fmt.Errorf("invalid request, is_admin should be true|false")
}
for i := 2; i < len(parts); i += 1 {
data := make([]jsonutils.JSONObject, 0)
for i := 1; i < len(parts); i += 1 {
data = append(data, jsonutils.NewString(parts[i]))
}
req.Add(jsonutils.NewArray(data...), key)
@@ -285,11 +321,54 @@ func init() {
var token mcclient.TokenCredential
if len(args.User) > 0 {
usrParams := jsonutils.NewDict()
if len(args.UserDomain) > 0 {
usrDom, err := modules.Domains.Get(s, args.UserDomain, nil)
if err != nil {
return fmt.Errorf("search user domain %s fail %s", args.UserDomain, err)
}
usrDomId, _ := usrDom.Get("id")
usrParams.Add(usrDomId, "domain_id")
}
usr, err := modules.UsersV3.Get(s, args.User, usrParams)
if err != nil {
return fmt.Errorf("search user %s fail %s", args.User, err)
}
usrId, _ := usr.GetString("id")
usrName, _ := usr.GetString("name")
usrDomId, _ := usr.GetString("domain_id")
usrDom, _ := usr.GetString("domain")
projParams := jsonutils.NewDict()
if len(args.ProjectDomain) > 0 {
projDom, err := modules.Domains.Get(s, args.ProjectDomain, nil)
if err != nil {
return fmt.Errorf("search project domain %s fail %s", args.ProjectDomain, err)
}
projDomId, _ := projDom.Get("id")
projParams.Add(projDomId, "domain_id")
}
proj, err := modules.Projects.Get(s, args.Project, projParams)
if err != nil {
return fmt.Errorf("search project %s fail %s", args.Project, err)
}
projId, _ := proj.GetString("id")
projName, _ := proj.GetString("name")
projDom, _ := proj.GetString("domain")
projDomId, _ := proj.GetString("domain_id")
token = &mcclient.SSimpleToken{
Domain: args.UserDomain,
User: args.User,
Project: args.Project,
Roles: strings.Join(args.Role, ","),
Domain: usrDom,
DomainId: usrDomId,
User: usrName,
UserId: usrId,
Project: projName,
ProjectId: projId,
ProjectDomain: projDom,
ProjectDomainId: projDomId,
Roles: strings.Join(args.Role, ","),
Context: mcclient.SAuthContext{
Ip: args.Ip,
},
}
} else {
token = s.GetToken()
@@ -302,10 +381,18 @@ func init() {
printObject(result)
fmt.Println("userCred:", token)
m := policy.PolicyManager.MatchedPolicies(false, token)
fmt.Println("matched policies:", m)
m = policy.PolicyManager.MatchedPolicies(true, token)
fmt.Println("matched admin policies:", m)
for _, scope := range []rbacutils.TRbacScope{
rbacutils.ScopeSystem,
rbacutils.ScopeDomain,
rbacutils.ScopeProject,
rbacutils.ScopeUser,
rbacutils.ScopeNone,
} {
m := policy.PolicyManager.MatchedPolicies(scope, token)
fmt.Println("matched", scope, "policies:", m)
}
fmt.Println("all_policies", policy.PolicyManager.AllPolicies())
return nil
})
}

View File

@@ -0,0 +1,36 @@
// 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 (
"fmt"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
)
func init() {
type ProjectResourceOptions struct {
SERVICE string `help:"Service type"`
}
R(&ProjectResourceOptions{}, "project-resource-show", "query backend service for its project resource count", func(s *mcclient.ClientSession, args *ProjectResourceOptions) error {
body, err := modules.GetProjectResources(s, args.SERVICE)
if err != nil {
return err
}
fmt.Println(body.PrettyString())
return nil
})
}

View File

@@ -17,34 +17,21 @@ package shell
import (
"yunion.io/x/jsonutils"
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type ProjectListOptions struct {
Domain string `help:"Domain ID or Name"`
Search string `help:"Search project name"`
Limit int64 `help:"Items per page" default:"20"`
Offset int64 `help:"Offset"`
options.BaseListOptions
OrderByDomain string `help:"order by domain name" choices:"asc|desc"`
}
R(&ProjectListOptions{}, "project-list", "List projects", func(s *mcclient.ClientSession, args *ProjectListOptions) error {
params := jsonutils.NewDict()
if len(args.Domain) > 0 {
domainId, err := modules.Domains.GetId(s, args.Domain, nil)
if err != nil {
return err
}
params.Add(jsonutils.NewString(domainId), "domain_id")
}
if len(args.Search) > 0 {
params.Add(jsonutils.NewString(args.Search), "name__icontains")
}
if args.Limit > 0 {
params.Add(jsonutils.NewInt(args.Limit), "limit")
}
if args.Offset > 0 {
params.Add(jsonutils.NewInt(args.Offset), "offset")
params, err := options.ListStructToParams(args)
if err != nil {
return err
}
result, err := modules.Projects.List(s, params)
if err != nil {
@@ -345,7 +332,7 @@ func init() {
return nil
})
R(&ProjectShowOptions{}, "project-shared-images", "Show shared images of a project", func(s *mcclient.ClientSession, args *ProjectShowOptions) error {
/*R(&ProjectShowOptions{}, "project-shared-images", "Show shared images of a project", func(s *mcclient.ClientSession, args *ProjectShowOptions) error {
query := jsonutils.NewDict()
if len(args.Domain) > 0 {
domainId, err := modules.Domains.GetId(s, args.Domain, nil)
@@ -376,5 +363,72 @@ func init() {
return err
}
return nil
})*/
// Deprecated
type ProjectBatchJoinOptions struct {
Ids []string `help:"user ids or group ids"`
Resource string `help:"resource type" choices:"users|groups"`
Rid string `help:"role id"`
Pid string `help:"project id"`
}
R(&ProjectBatchJoinOptions{}, "project-batch-join", "Batch join users or groups into project with role", func(s *mcclient.ClientSession, args *ProjectBatchJoinOptions) error {
params := jsonutils.Marshal(args)
_, err := modules.Projects.DoProjectBatchJoin(s, params)
if err != nil {
return err
}
return nil
})
type ProjectAddUserGroupOptions struct {
Project string `help:"ID or name of project to add users/groups" positional:"true" optional:"false"`
User []string `help:"ID of user to add"`
Group []string `help:"ID of group to add"`
Role []string `help:"ID of role to add"`
}
R(&ProjectAddUserGroupOptions{}, "project-add-user-group", "Batch add users/groups to project", func(s *mcclient.ClientSession, args *ProjectAddUserGroupOptions) error {
input := api.SProjectAddUserGroupInput{}
input.Users = args.User
input.Groups = args.Group
input.Roles = args.Role
err := input.Validate()
if err != nil {
return err
}
result, err := modules.Projects.PerformAction(s, args.Project, "join", jsonutils.Marshal(input))
if err != nil {
return err
}
printObject(result)
return nil
})
type ProjectRemoveUserGroup struct {
Project string `help:"ID or name of project to remove user/group" optional:"false" positional:"true"`
User string `help:"user to remove"`
Group string `help:"group to remove"`
Role []string `help:"roles to remove"`
}
R(&ProjectRemoveUserGroup{}, "project-remove-user-group", "Remove users/groups from project", func(s *mcclient.ClientSession, args *ProjectRemoveUserGroup) error {
input := api.SProjectRemoveUserGroupInput{}
input.UserRoles = make([]api.SUserRole, len(args.Role))
input.GroupRoles = make([]api.SGroupRole, len(args.Role))
for i := range args.Role {
input.UserRoles[i].User = args.User
input.UserRoles[i].Role = args.Role[i]
input.GroupRoles[i].Group = args.Group
input.GroupRoles[i].Role = args.Role[i]
}
err := input.Validate()
if err != nil {
return err
}
result, err := modules.Projects.PerformAction(s, args.Project, "leave", jsonutils.Marshal(input))
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -33,11 +33,13 @@ type QuotaBaseOptions struct {
IsolatedDevice int64 `help:"Isolated device count" json:"isolated_device,omitzero"`
Snapshot int64 `help:"Snapshot count" json:"snapshot,omitzero"`
Image int64 `help:"Template count" json:"image,omitzero"`
Secgroup int64 `help:"Secgroup count" json:"secgroup,omitzero"`
}
func init() {
type QuotaOptions struct {
Tenant string `help:"Tenant name of ID"`
Tenant string `help:"Tenant name or ID"`
ProjectDomain string `help:"Domain name or ID"`
}
R(&QuotaOptions{}, "quota", "Show quota for current user or tenant", func(s *mcclient.ClientSession, args *QuotaOptions) error {
params := jsonutils.Marshal(args)
@@ -59,7 +61,10 @@ func init() {
})
type QuotaSetOptions struct {
Tenant string `help:"Tenant name or ID to set quota" json:"tenant,omitempty"`
Tenant string `help:"Tenant name or ID to set quota" json:"tenant,omitempty"`
ProjectDomain string `help:"Domain name or ID to set quota" json:",omitempty"`
Action string `help:"quota set action" choices:"add|reset|replace"`
Cascade bool `help:"cascade set quota so that auto increment domain quota if total project quota exceeds parent domain quota"`
QuotaBaseOptions
}
R(&QuotaSetOptions{}, "quota-set", "Set quota for tenant", func(s *mcclient.ClientSession, args *QuotaSetOptions) error {
@@ -72,7 +77,20 @@ func init() {
return nil
})
type QuotaCheckOptions struct {
type QuotaListOptions struct {
ProjectDomain string `help:"domain name or ID to query project quotas"`
}
R(&QuotaListOptions{}, "quota-list", "List quota of domains or projects of a domain", func(s *mcclient.ClientSession, args *QuotaListOptions) error {
params := jsonutils.Marshal(args)
result, e := modules.Quotas.GetQuotaList(s, params)
if e != nil {
return e
}
printList(modules.JSON2ListResult(result), nil)
return nil
})
/*type QuotaCheckOptions struct {
TENANT string `help:"Tenant name or ID to check quota" json:"tenant,omitempty"`
QuotaBaseOptions
}
@@ -84,6 +102,6 @@ func init() {
}
printObject(result)
return nil
})
})*/
}

View File

@@ -80,4 +80,18 @@ func init() {
return nil
})
type ReservedIpUpdateOptions struct {
ID string `help:"ID of reserved ip" json:"-"`
Notes string `help:"notes"`
}
R(&ReservedIpUpdateOptions{}, "reserved-ip-update", "update reserved ip notes", func(s *mcclient.ClientSession, args *ReservedIpUpdateOptions) error {
params := jsonutils.Marshal(args)
result, err := modules.ReservedIPs.Update(s, args.ID, params)
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -24,6 +24,8 @@ import (
func init() {
type RoleAssignmentsOptions struct {
Effective bool `help:"Include role assignment of group members"`
System bool `help:"Include system user account"`
Policy bool `help:"Show matched policies"`
Domain string `help:"Role assignments for domain"`
User string `help:"For user"`
UserDomain string `help:"Domain for user"`
@@ -33,6 +35,8 @@ func init() {
ProjectDomain string `help:"Domain for project"`
Role string `help:"Role assignments for role"`
RoleDomain string `help:"Domain for role"`
Limit int64 `help:"maximal returned number of rows"`
Offset int64 `help:"offset index of returned results"`
}
R(&RoleAssignmentsOptions{}, "role-assignments", "List all role assignments", func(s *mcclient.ClientSession, args *RoleAssignmentsOptions) error {
query := jsonutils.NewDict()
@@ -40,6 +44,12 @@ func init() {
if args.Effective {
query.Add(jsonutils.JSONNull, "effective")
}
if args.System {
query.Add(jsonutils.JSONNull, "include_system")
}
if args.Policy {
query.Add(jsonutils.JSONNull, "include_policies")
}
if len(args.Domain) > 0 {
domainId, err := modules.Domains.GetId(s, args.Domain, nil)
if err != nil {
@@ -75,6 +85,12 @@ func init() {
}
query.Add(jsonutils.NewString(rid), "role", "id")
}
if args.Limit > 0 {
query.Add(jsonutils.NewInt(args.Limit), "limit")
}
if args.Offset > 0 {
query.Add(jsonutils.NewInt(args.Offset), "offset")
}
result, err := modules.RoleAssignments.List(s, query)
if err != nil {
return err

View File

@@ -19,38 +19,20 @@ import (
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type RoleListOptions struct {
Name string `help:"Name filter"`
Domain string `help:"Domain filter"`
Limit int64 `help:"Items per page" default:"20"`
Offset int64 `help:"Offset"`
Search string `help:"search text"`
options.BaseListOptions
OrderByDomain string `help:"order by domain name" choices:"asc|desc"`
}
R(&RoleListOptions{}, "role-list", "List keystone Roles", func(s *mcclient.ClientSession, args *RoleListOptions) error {
query := jsonutils.NewDict()
if len(args.Name) > 0 {
query.Add(jsonutils.NewString(args.Name), "name")
params, err := options.ListStructToParams(args)
if err != nil {
return err
}
if len(args.Domain) > 0 {
domainId, err := modules.Domains.GetId(s, args.Domain, nil)
if err != nil {
return err
}
query.Add(jsonutils.NewString(domainId), "domain_id")
}
if args.Limit > 0 {
query.Add(jsonutils.NewInt(args.Limit), "limit")
}
if args.Offset > 0 {
query.Add(jsonutils.NewInt(args.Offset), "offset")
}
if len(args.Search) > 0 {
query.Add(jsonutils.NewString(args.Search), "name__icontains")
}
result, err := modules.RolesV3.List(s, query)
result, err := modules.RolesV3.List(s, params)
if err != nil {
return err
}
@@ -158,4 +140,25 @@ func init() {
printObject(role)
return nil
})
type RolePerformOptions struct {
ID string `help:"ID of role to update"`
}
R(&RolePerformOptions{}, "role-public", "Mark a role public", func(s *mcclient.ClientSession, args *RolePerformOptions) error {
result, err := modules.RolesV3.PerformAction(s, args.ID, "public", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
R(&RolePerformOptions{}, "role-private", "Mark a role private", func(s *mcclient.ClientSession, args *RolePerformOptions) error {
result, err := modules.RolesV3.PerformAction(s, args.ID, "private", nil)
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -107,6 +107,19 @@ func init() {
return nil
})
type SchedulerCleanCacheOptions struct {
HostId string `help:"ID of host" short-token:"h"`
SessionId string `help:"Session id" short-token:"s"`
}
R(&SchedulerCleanCacheOptions{}, "scheduler-clean-cache", "Clean scheduler hosts cache",
func(s *mcclient.ClientSession, args *SchedulerCleanCacheOptions) error {
err := modules.SchedManager.CleanCache(s, args.HostId, args.SessionId)
if err != nil {
return err
}
return nil
})
type SchedulerHistoryListOptions struct {
Limit int `default:"50" help:"Page limit"`
Offset int `default:"0" help:"Page offset"`

View File

@@ -21,6 +21,7 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/util/regutils"
"yunion.io/x/onecloud/pkg/cloudcommon/cmdline"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
@@ -220,7 +221,11 @@ func init() {
} else {
return fmt.Errorf("Please specify Ip or Mac")
}
params.Add(jsonutils.NewString(args.NETDESC), "net_desc")
conf, err := cmdline.ParseNetworkConfig(args.NETDESC, 0)
if err != nil {
return err
}
params.Add(conf.JSON(conf), "net_desc")
srv, err := modules.Servers.PerformAction(s, args.SERVER, "change-ipaddr", params)
if err != nil {
return err

View File

@@ -18,9 +18,12 @@ import (
"encoding/json"
"fmt"
"io/ioutil"
"net"
"os"
"path/filepath"
yaml "gopkg.in/yaml.v2"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
@@ -533,21 +536,13 @@ func init() {
})
type ServerChangeOwnerOptions struct {
ID string `help:"Server to change owner"`
PROJECT string `help:"Project ID or change"`
RawId bool `help:"User raw ID, instead of name"`
ID string `help:"Server to change owner" json:"-"`
PROJECT string `help:"Project ID or change" json:"tenant"`
}
R(&ServerChangeOwnerOptions{}, "server-change-owner", "Change owner porject of a server", func(s *mcclient.ClientSession, opts *ServerChangeOwnerOptions) error {
params := jsonutils.NewDict()
if opts.RawId {
projid, err := modules.Projects.GetId(s, opts.PROJECT, nil)
if err != nil {
return err
}
params.Add(jsonutils.NewString(projid), "tenant")
params.Add(jsonutils.JSONTrue, "raw_id")
} else {
params.Add(jsonutils.NewString(opts.PROJECT), "tenant")
params, err := options.StructToParams(opts)
if err != nil {
return err
}
srv, err := modules.Servers.PerformAction(s, opts.ID, "change-owner", params)
if err != nil {
@@ -844,34 +839,101 @@ func init() {
})
type ServersImportFromLibvirtOptions struct {
CONFIG_FILE string `help:"JSON file describing servers from libvirt, e.g.
{'hosts':
[
{
'servers': [
{
'mac_ip': {'mac1': 'ip1', ...}
},
],
'xml_file_path': '/etc/libvirt/qemu',
'host_ip': '192.168.1.100',
},
],
}
"`
CONFIG_FILE string `help:"File Path describing servers from libvirt"`
}
type Servers struct {
Mac string `yaml:"mac"`
Ip string `yaml:"ip"`
}
type Hosts struct {
HostIp string `yaml:"host_ip"`
XmlFilePath string `yaml:"xml_file_path"`
MonitorPath string `yaml:"monitor_path"`
Servers []Servers `yaml:"servers"`
}
type LibvirtImportOptions struct {
Hosts []Hosts `yaml:"hosts"`
}
R(&ServersImportFromLibvirtOptions{}, "servers-import-from-libvirt", "Import servers from libvrt", func(s *mcclient.ClientSession, args *ServersImportFromLibvirtOptions) error {
rawConfig, err := ioutil.ReadFile(args.CONFIG_FILE)
var (
rawConfig []byte
err error
)
rawConfig, err = ioutil.ReadFile(args.CONFIG_FILE)
if err != nil {
return fmt.Errorf("Read file error: %s", err)
return fmt.Errorf("Read config file %s error: %s", args.CONFIG_FILE, err)
}
config := &compute.SLibvirtImportConfig{}
err = json.Unmarshal(rawConfig, config)
if err != nil {
return fmt.Errorf("Parse config error %s", err)
var (
params []jsonutils.JSONObject
config = &compute.SLibvirtImportConfig{}
)
// Try parse as json first
{
err = json.Unmarshal(rawConfig, config)
if err != nil {
goto YAML
}
for i := 0; i < len(config.Hosts); i++ {
if nIp := net.ParseIP(config.Hosts[i].HostIp); nIp == nil {
return fmt.Errorf("Parse host ip %s failed", config.Hosts[i].HostIp)
}
for _, server := range config.Hosts[i].Servers {
for mac, ip := range server.MacIp {
if _, err := net.ParseMAC(mac); err != nil {
return fmt.Errorf("Parse mac %s error %s", mac, err)
}
if nIp := net.ParseIP(ip); nIp == nil {
return fmt.Errorf("Parse ip %s failed", ip)
}
}
}
}
goto REQUEST
}
params, err := jsonutils.Marshal(config.Hosts).GetArray()
YAML: // Try Parse as yaml
{
yamlConfig := &LibvirtImportOptions{}
err = yaml.Unmarshal(rawConfig, yamlConfig)
if err != nil {
return err
}
config.Hosts = make([]compute.SLibvirtHostConfig, len(yamlConfig.Hosts))
for i := 0; i < len(yamlConfig.Hosts); i++ {
if nIp := net.ParseIP(yamlConfig.Hosts[i].HostIp); nIp == nil {
return fmt.Errorf("Parse host ip %s failed", yamlConfig.Hosts[i].HostIp)
}
config.Hosts[i].HostIp = yamlConfig.Hosts[i].HostIp
config.Hosts[i].XmlFilePath = yamlConfig.Hosts[i].XmlFilePath
config.Hosts[i].Servers = make([]compute.SLibvirtServerConfig, len(yamlConfig.Hosts[i].Servers))
for j := 0; j < len(yamlConfig.Hosts[i].Servers); j++ {
config.Hosts[i].Servers[j].MacIp = make(map[string]string)
mac := yamlConfig.Hosts[i].Servers[j].Mac
_, err := net.ParseMAC(mac)
if err != nil {
return fmt.Errorf("Parse mac address %s error %s", mac, err)
}
ip := yamlConfig.Hosts[i].Servers[j].Ip
nIp := net.ParseIP(ip)
if len(nIp) == 0 {
return fmt.Errorf("Parse ip address %s failed", ip)
}
config.Hosts[i].Servers[j].MacIp[mac] = ip
}
}
}
REQUEST:
params, err = jsonutils.Marshal(config.Hosts).GetArray()
if err != nil {
return err
}
@@ -915,4 +977,44 @@ func init() {
printObject(result)
return nil
})
R(&options.ServerIdOptions{}, "server-remote-nics", "Show remote nics of a server", func(s *mcclient.ClientSession, opts *options.ServerIdOptions) error {
result, err := modules.Servers.GetSpecific(s, opts.ID, "remote-nics", nil)
if err != nil {
return err
}
listResult := modules.ListResult{}
listResult.Data, _ = result.GetArray()
printList(&listResult, nil)
return nil
})
type ServerSyncFixNicsOptions struct {
ID string `help:"ID or name of VM" json:"-"`
IP []string `help:"IP address of each NIC" json:"ip"`
}
R(&ServerSyncFixNicsOptions{}, "server-sync-fix-nics", "Fix missing IP for each nics after syncing VNICS", func(s *mcclient.ClientSession, opts *ServerSyncFixNicsOptions) error {
params := jsonutils.Marshal(opts)
result, err := modules.Servers.PerformAction(s, opts.ID, "sync-fix-nics", params)
if err != nil {
return err
}
printObject(result)
return nil
})
type ServerResizeDiskOptions struct {
Server string `help:"ID or name of VM" json:"-" optional:"false" positional:"true"`
Disk string `help:"ID or name of disk to resize" json:"disk" optional:"false" positional:"true"`
Size string `help:"new size of disk in MB" json:"size" optional:"false" positional:"true"`
}
R(&ServerResizeDiskOptions{}, "server-resize-disk", "Resize attached disk of a server", func(s *mcclient.ClientSession, args *ServerResizeDiskOptions) error {
params := jsonutils.Marshal(args)
result, err := modules.Servers.PerformAction(s, args.Server, "resize-disk", params)
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -1,7 +1,22 @@
// 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/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"

View File

@@ -46,14 +46,11 @@ func init() {
})
type SnapshotDeleteOptions struct {
ID string `help:"Delete snapshot id"`
ID []string `help:"Delete snapshot id"`
}
R(&SnapshotDeleteOptions{}, "snapshot-delete", "Delete snapshots", func(s *mcclient.ClientSession, args *SnapshotDeleteOptions) error {
result, err := modules.Snapshots.Delete(s, args.ID, nil)
if err != nil {
return err
}
printObject(result)
ret := modules.Snapshots.BatchDelete(s, args.ID, nil)
printBatchResults(ret, modules.Snapshots.GetColumns(s))
return nil
})
type DiskDeleteSnapshotsOptions struct {

View File

@@ -53,34 +53,23 @@ func init() {
})
type StorageUpdateOptions struct {
ID string `help:"ID or Name of storage to update"`
Name string `help:"New Name of storage"`
Desc string `help:"Description" metavar:"<DESCRIPTION>"`
CommitBound float64 `help:"Upper bound of storage overcommit rate"`
StorageType string `help:"Storage type" choices:"local|nas|vsan|rbd|baremetal"`
MediumType string `help:"Medium type, either ssd or rotate" choices:"ssd|rotate"`
Reserved string `help:"Reserved storage space"`
ID string `help:"ID or Name of storage to update"`
Name string `help:"New Name of storage"`
Desc string `help:"Description"`
CommitBound float64 `help:"Upper bound of storage overcommit rate"`
MediumType string `help:"Medium type" choices:"ssd|rotate"`
RbdRadosMonOpTimeout int64 `help:"ceph rados_mon_op_timeout"`
RbdRadosOsdOpTimeout int64 `help:"ceph rados_osd_op_timeout"`
RbdClientMountTimeout int64 `help:"ceph client_mount_timeout"`
RbdKey string `help:"ceph rbd key"`
Reserved string `help:"Reserved storage space"`
}
R(&StorageUpdateOptions{}, "storage-update", "Update a storage", func(s *mcclient.ClientSession, args *StorageUpdateOptions) error {
params := jsonutils.NewDict()
if len(args.Name) > 0 {
params.Add(jsonutils.NewString(args.Name), "name")
}
if len(args.Desc) > 0 {
params.Add(jsonutils.NewString(args.Desc), "description")
}
if args.CommitBound > 0 {
params.Add(jsonutils.NewFloat(args.CommitBound), "cmtbound")
}
if len(args.StorageType) > 0 {
params.Add(jsonutils.NewString(args.StorageType), "storage_type")
}
if len(args.MediumType) > 0 {
params.Add(jsonutils.NewString(args.MediumType), "medium_type")
}
if len(args.Reserved) > 0 {
params.Add(jsonutils.NewString(args.Reserved), "reserved")
params, err := options.StructToParams(args)
if err != nil {
return err
}
result, err := modules.Storages.Update(s, args.ID, params)
if err != nil {
return err
@@ -90,37 +79,34 @@ func init() {
})
type StorageCreateOptions struct {
NAME string `help:"Name of the Storage"`
ZONE string `help:"Zone id of storage"`
Capacity int64 `help:"Capacity of the Storage"`
MediumType string `help:"Medium type, either ssd or rotate" choices:"ssd|rotate"`
StorageType string `help:"Storage type" choices:"local|nas|vsan|rbd|nfs|baremetal"`
MonHost string `help:"Ceph mon_host config"`
Key string `help:"Ceph key config"`
Pool string `help:"Ceph Poll Name"`
NfsHost string `help:"NFS host"`
NfsSharedDir string `help:"NFS shared dir"`
NAME string `help:"Name of the Storage"`
ZONE string `help:"Zone id of storage"`
Capacity int64 `help:"Capacity of the Storage"`
MediumType string `help:"Medium type" choices:"ssd|rotate"`
StorageType string `help:"Storage type" choices:"local|nas|vsan|rbd|nfs|gpfs|baremetal"`
RbdMonHost string `help:"Ceph mon_host config"`
RbdRadosMonOpTimeout int64 `help:"ceph rados_mon_op_timeout"`
RbdRadosOsdOpTimeout int64 `help:"ceph rados_osd_op_timeout"`
RbdClientMountTimeout int64 `help:"ceph client_mount_timeout"`
RbdKey string `help:"Ceph key config"`
RbdPool string `help:"Ceph Pool Name"`
NfsHost string `help:"NFS host"`
NfsSharedDir string `help:"NFS shared dir"`
}
R(&StorageCreateOptions{}, "storage-create", "Create a Storage", func(s *mcclient.ClientSession, args *StorageCreateOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.NAME), "name")
params.Add(jsonutils.NewString(args.ZONE), "zone")
params.Add(jsonutils.NewInt(args.Capacity), "capacity")
params.Add(jsonutils.NewString(args.StorageType), "storage_type")
params.Add(jsonutils.NewString(args.MediumType), "medium_type")
params, err := options.StructToParams(args)
if err != nil {
return err
}
if args.StorageType == "rbd" {
if args.MonHost == "" || args.Key == "" || args.Pool == "" {
if args.RbdMonHost == "" || args.RbdKey == "" || args.RbdPool == "" {
return fmt.Errorf("Not enough arguments, missing mon_host、key or pool")
}
params.Add(jsonutils.NewString(args.MonHost), "rbd_mon_host")
params.Add(jsonutils.NewString(args.Key), "rbd_key")
params.Add(jsonutils.NewString(args.Pool), "rbd_pool")
} else if args.StorageType == "nfs" {
if len(args.NfsHost) == 0 || len(args.NfsSharedDir) == 0 {
return fmt.Errorf("Storage type nfs missing conf host or shared dir")
}
params.Add(jsonutils.NewString(args.NfsHost), "nfs_host")
params.Add(jsonutils.NewString(args.NfsSharedDir), "nfs_shared_dir")
}
storage, err := modules.Storages.Create(s, params)
if err != nil {

View File

@@ -23,8 +23,14 @@ import (
type GeneralUsageOptions struct {
HostType []string `help:"Host types" choices:"hypervisor|baremetal|esxi|xen|kubelet|hyperv|aliyun|azure|aws|huawei|qcloud|openstack|ucloud|zstack"`
Provider []string `help:"Provider" choices:"VMware|Aliyun|Azure|Aws|Qcloud|Huawei|OpenStack|Ucloud|ZStack"`
Project string
Provider []string `help:"Provider" choices:"OneCloud|VMware|Aliyun|Azure|Aws|Qcloud|Huawei|OpenStack|Ucloud|ZStack"`
Brand []string `help:"Brands" choices:"OneCloud|VMware|Aliyun|Azure|Aws|Qcloud|Huawei|OpenStack|Ucloud|ZStack|DStack"`
Project string `help:"show usage of specified project"`
ProjectDomain string `help:"show usage of specified domain"`
CloudEnv string `help:"show usage of specified cloudenv" choices:"public|private|onpremise"`
Scope string `help:"show usage of specified privilege scope" choices:"system|domain|project"`
}
func fetchHostTypeOptions(args *GeneralUsageOptions) *jsonutils.JSONDict {
@@ -35,6 +41,12 @@ func fetchHostTypeOptions(args *GeneralUsageOptions) *jsonutils.JSONDict {
if len(args.Provider) > 0 {
params.Add(jsonutils.NewStringArray(args.Provider), "provider")
}
if len(args.Brand) > 0 {
params.Add(jsonutils.NewStringArray(args.Brand), "brand")
}
if len(args.CloudEnv) > 0 {
params.Add(jsonutils.NewString(args.CloudEnv), "cloud_env")
}
return params
}
@@ -43,6 +55,11 @@ func init() {
params := fetchHostTypeOptions(args)
if args.Project != "" {
params.Add(jsonutils.NewString(args.Project), "project")
} else if args.ProjectDomain != "" {
params.Add(jsonutils.NewString(args.ProjectDomain), "project_domain")
}
if len(args.Scope) > 0 {
params.Add(jsonutils.NewString(args.Scope), "scope")
}
result, err := modules.Usages.GetGeneralUsage(s, params)
if err != nil {
@@ -130,11 +147,18 @@ func init() {
type ImageUsageOptions struct {
Project string `help:"check image usage of a project"`
Domain string `help:"check image usage of a domain"`
Scope string `help:"query scope" choices:"project|domain|system"`
}
R(&ImageUsageOptions{}, "image-usage", "Show general usage of images", func(s *mcclient.ClientSession, args *ImageUsageOptions) error {
params := jsonutils.NewDict()
if args.Project != "" {
params.Add(jsonutils.NewString(args.Project), "project")
} else if args.Domain != "" {
params.Add(jsonutils.NewString(args.Domain), "domain")
}
if args.Scope != "" {
params.Add(jsonutils.NewString(args.Scope), "scope")
}
result, err := modules.Images.GetUsage(s, params)
if err != nil {

View File

@@ -17,54 +17,23 @@ package shell
import (
"yunion.io/x/jsonutils"
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
)
func init() {
type UserListOptions struct {
Admin bool `help:"admin mode"`
Domain string `help:"Filter by domain"`
Name string `help:"Filter by name"`
Limit int64 `help:"Limit, default 0, i.e. no limit"`
Offset int64 `help:"Offset, default 0, i.e. no offset"`
Search string `help:"Search by name"`
DefaultProject string `help:"Filter by default_project_id"`
NoDefaultProject bool `help:"Filter users without valid default_project_id"`
options.BaseListOptions
Name string `help:"Filter by name"`
OrderByDomain string `help:"order by domain name" choices:"asc|desc"`
Role string `help:"Filter by role"`
}
R(&UserListOptions{}, "user-list", "List users", func(s *mcclient.ClientSession, args *UserListOptions) error {
params := jsonutils.NewDict()
if len(args.Domain) > 0 {
domainId, err := modules.Domains.GetId(s, args.Domain, nil)
if err != nil {
return err
}
params.Add(jsonutils.NewString(domainId), "domain_id")
params.Add(jsonutils.JSONTrue, "admin")
}
if args.Admin {
params.Add(jsonutils.JSONTrue, "admin")
}
if len(args.Name) > 0 {
params.Add(jsonutils.NewString(args.Name), "name")
}
if len(args.Search) > 0 {
params.Add(jsonutils.NewString(args.Search), "name__icontains")
}
if args.Limit > 0 {
params.Add(jsonutils.NewInt(args.Limit), "limit")
}
if args.Offset > 0 {
params.Add(jsonutils.NewInt(args.Offset), "offset")
}
if len(args.DefaultProject) > 0 {
projId, err := modules.Projects.GetId(s, args.DefaultProject, nil)
if err != nil {
return err
}
params.Add(jsonutils.NewString(projId), "default_project_id")
} else if args.NoDefaultProject {
params.Add(jsonutils.NewString(""), "default_project_id__iempty")
params, err := options.ListStructToParams(args)
if err != nil {
return err
}
result, err := modules.UsersV3.List(s, params)
if err != nil {
@@ -77,6 +46,7 @@ func init() {
type UserDetailOptions struct {
ID string `help:"ID of user"`
Domain string `help:"Domain"`
System bool `help:"show system user"`
}
R(&UserDetailOptions{}, "user-show", "Show details of user", func(s *mcclient.ClientSession, args *UserDetailOptions) error {
query := jsonutils.NewDict()
@@ -87,6 +57,9 @@ func init() {
}
query.Add(jsonutils.NewString(domainId), "domain_id")
}
if args.System {
query.Add(jsonutils.JSONTrue, "system")
}
user, e := modules.UsersV3.Get(s, args.ID, query)
if e != nil {
return e
@@ -185,7 +158,10 @@ func init() {
Enabled bool `help:"Enabled"`
Disabled bool `help:"Disabled"`
DefaultProject string `help:"Default project"`
// DefaultProject string `help:"Default project"`
SystemAccount bool `help:"is a system account?"`
NoWebConsole bool `help:"allow web console access"`
EnableMfa bool `help:"enable TOTP mfa"`
}
R(&UserCreateOptions{}, "user-create", "Create a user", func(s *mcclient.ClientSession, args *UserCreateOptions) error {
params := jsonutils.NewDict()
@@ -218,13 +194,23 @@ func init() {
params.Add(jsonutils.JSONFalse, "enabled")
}
if len(args.DefaultProject) > 0 {
if args.SystemAccount {
params.Add(jsonutils.JSONTrue, "is_system_account")
}
if args.NoWebConsole {
params.Add(jsonutils.JSONFalse, "allow_web_console")
}
if args.EnableMfa {
params.Add(jsonutils.JSONTrue, "enable_mfa")
}
/*if len(args.DefaultProject) > 0 {
projId, err := modules.Projects.GetId(s, args.DefaultProject, nil)
if err != nil {
return err
}
params.Add(jsonutils.NewString(projId), "default_project_id")
}
}*/
user, err := modules.UsersV3.Create(s, params)
if err != nil {
@@ -246,7 +232,16 @@ func init() {
Enabled bool `help:"Enabled"`
Disabled bool `help:"Disabled"`
DefaultProject string `help:"Default project"`
SystemAccount bool `help:"Turn on is_system_account"`
NotSystemAccount bool `help:"Turn off is_system_account"`
AllowWebConsole bool `help:"Turn on allow_web_console"`
DisallowWebConsole bool `help:"Turn off allow_web_console"`
EnableMfa bool `help:"turn on enable_mfa"`
DisableMfa bool `help:"turn off enable_mfa"`
// DefaultProject string `help:"Default project"`
// Option []string `help:"User options"`
}
R(&UserUpdateOptions{}, "user-update", "Update a user", func(s *mcclient.ClientSession, args *UserUpdateOptions) error {
@@ -286,25 +281,40 @@ func init() {
} else if !args.Enabled && args.Disabled {
params.Add(jsonutils.JSONFalse, "enabled")
}
if len(args.DefaultProject) > 0 {
projId, err := modules.Projects.GetId(s, args.DefaultProject, nil)
if err != nil {
return err
}
params.Add(jsonutils.NewString(projId), "default_project_id")
if args.SystemAccount {
params.Add(jsonutils.JSONTrue, "is_system_account")
} else if args.NotSystemAccount {
params.Add(jsonutils.JSONFalse, "is_system_account")
}
/*
if len(args.Option) > 0 {
uoptions := jsonutils.NewDict()
for _, opt := range args.Option {
pos := strings.IndexByte(opt, ':')
key := opt[:pos]
val := opt[pos+1:]
uoptions.Add(jsonutils.NewString(val), key)
}
params.Add(uoptions, "_resource_options")
}
*/
if args.AllowWebConsole {
params.Add(jsonutils.JSONTrue, "allow_web_console")
} else if args.DisallowWebConsole {
params.Add(jsonutils.JSONFalse, "allow_web_console")
}
if args.EnableMfa {
params.Add(jsonutils.JSONTrue, "enable_mfa")
} else if args.DisableMfa {
params.Add(jsonutils.JSONFalse, "enable_mfa")
}
// if len(args.DefaultProject) > 0 {
// projId, err := modules.Projects.GetId(s, args.DefaultProject, nil)
// if err != nil {
// return err
// }
// params.Add(jsonutils.NewString(projId), "default_project_id")
// }
//
// if len(args.Option) > 0 {
// uoptions := jsonutils.NewDict()
// for _, opt := range args.Option {
// pos := strings.IndexByte(opt, ':')
// key := opt[:pos]
// val := opt[pos+1:]
// uoptions.Add(jsonutils.NewString(val), key)
// }
// params.Add(uoptions, "_resource_options")
// }
//
user, err := modules.UsersV3.Patch(s, uid, params)
if err != nil {
return err
@@ -352,4 +362,41 @@ func init() {
return nil
})
type UserJoinProjectOptions struct {
User string `help:"User Id or name" optional:"false" positional:"true"`
Project []string `help:"Projects to join" nargs:"+"`
Role []string `help:"User join project with roles" nargs:"+"`
}
R(&UserJoinProjectOptions{}, "user-join-project", "User join projects with roles", func(s *mcclient.ClientSession, args *UserJoinProjectOptions) error {
input := api.SJoinProjectsInput{}
input.Projects = args.Project
input.Roles = args.Role
result, err := modules.UsersV3.PerformAction(s, args.User, "join", jsonutils.Marshal(input))
if err != nil {
return err
}
printObject(result)
return nil
})
type UserLeaveProjectsOptions struct {
User string `help:"user id or name" optional:"false" positional:"true"`
Project string `help:"project id or name" optional:"false" positional:"true"`
Role []string `help:"roles to remove" nargs:"+"`
}
R(&UserLeaveProjectsOptions{}, "user-leave-project", "Leave a user from projects", func(s *mcclient.ClientSession, args *UserLeaveProjectsOptions) error {
input := api.SLeaveProjectsInput{}
input.ProjectRoles = make([]api.SProjectRole, len(args.Role))
for i := range args.Role {
input.ProjectRoles[i].Project = args.Project
input.ProjectRoles[i].Role = args.Role[i]
}
result, err := modules.UsersV3.PerformAction(s, args.User, "leave", jsonutils.Marshal(input))
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -15,6 +15,9 @@
package shell
import (
"fmt"
"os"
"sort"
"strings"
"yunion.io/x/jsonutils"
@@ -24,12 +27,64 @@ import (
"yunion.io/x/onecloud/pkg/util/printutils"
)
const (
OUTPUT_FORMAT_TABLE = "table" // pretty table
OUTPUT_FORMAT_FLATTEN_TABLE = "flatten-table" // pretty table with flattened keys
OUTPUT_FORMAT_JSON = "json" // json string
OUTPUT_FORMAT_KV = "kv" // "key: value" as separate line
OUTPUT_FORMAT_FLATTEN_KV = "flatten-kv" // kv with flattened keys
)
var outputFormat = OUTPUT_FORMAT_TABLE
func OutputFormat(s string) {
outputFormat = s
}
func printList(list *modules.ListResult, columns []string) {
printutils.PrintJSONList(list, columns)
}
func printObject(obj jsonutils.JSONObject) {
printutils.PrintJSONObject(obj)
switch outputFormat {
case OUTPUT_FORMAT_TABLE:
printutils.PrintJSONObject(obj)
case OUTPUT_FORMAT_KV:
printObjectFmtKv(obj)
case OUTPUT_FORMAT_JSON:
fmt.Print(obj.String())
fmt.Print("\n")
case OUTPUT_FORMAT_FLATTEN_TABLE:
printObjectRecursive(obj)
case OUTPUT_FORMAT_FLATTEN_KV:
printObjectRecursiveEx(obj, printObjectFmtKv)
default:
fmt.Fprintf(os.Stderr, "unknown output format: %q\n", outputFormat)
}
}
func printObjectFmtKv(obj jsonutils.JSONObject) {
m, _ := obj.GetMap()
maxWidth := 0
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
if maxWidth < len(k) {
maxWidth = len(k)
}
}
sort.Strings(keys)
for _, k := range keys {
var s string
objV := m[k]
if objS, ok := objV.(*jsonutils.JSONString); ok {
s, _ = objS.GetString()
s = strings.TrimRight(s, "\n")
} else {
s = objV.String()
}
fmt.Printf("%*s: %s\n", maxWidth, k, s)
}
}
func printObjectRecursive(obj jsonutils.JSONObject) {

View File

@@ -101,8 +101,16 @@ func init() {
return nil
})
R(&ZoneShowOptions{}, "zone-capability", "Show zone's capacibilities", func(s *mcclient.ClientSession, args *ZoneShowOptions) error {
result, err := modules.Zones.GetSpecific(s, args.ID, "capability", nil)
type ZoneCapabilityOptions struct {
ID string `help:"Zone ID or Name" json:"-"`
Domain string `help:"domain Id or name"`
}
R(&ZoneCapabilityOptions{}, "zone-capability", "Show zone's capacibilities", func(s *mcclient.ClientSession, args *ZoneCapabilityOptions) error {
query, err := options.StructToParams(args)
if err != nil {
return err
}
result, err := modules.Zones.GetSpecific(s, args.ID, "capability", query)
if err != nil {
return err
}

View File

@@ -21,9 +21,8 @@ import (
"yunion.io/x/log"
"yunion.io/x/structarg"
"yunion.io/x/onecloud/pkg/util/shellutils"
_ "yunion.io/x/onecloud/cmd/cryptool/shell"
"yunion.io/x/onecloud/pkg/util/shellutils"
)
type BaseOptions struct {

22
cmd/host-deployer/main.go Normal file
View File

@@ -0,0 +1,22 @@
// 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 "yunion.io/x/onecloud/pkg/hostman/hostdeployer/deployserver"
func main() {
deployer := deployserver.NewDeployService()
deployer.StartService()
}

View File

@@ -15,6 +15,7 @@
package main
import (
"yunion.io/x/onecloud/pkg/cloudcommon/service"
"yunion.io/x/onecloud/pkg/hostman"
"yunion.io/x/onecloud/pkg/util/atexit"
)
@@ -22,6 +23,9 @@ import (
func main() {
defer atexit.Handle()
var srv = hostman.SHostService{}
var srv = &hostman.SHostService{}
srv.SServiceBase = &service.SServiceBase{
Service: srv,
}
srv.StartService()
}

View File

@@ -86,14 +86,9 @@ func newClient(options *BaseOptions) (*huawei.SRegion, error) {
return nil, fmt.Errorf("Missing secret")
}
account := ""
if len(options.ProjectId) > 0 {
account = options.AccessKey + "/" + options.ProjectId
} else {
account = options.AccessKey
}
cli, err := huawei.NewHuaweiClient("", "", options.CloudEnv, account, options.Secret, options.Debug)
cli, err := huawei.NewHuaweiClient("", "", options.CloudEnv,
options.AccessKey, options.Secret, options.ProjectId,
options.Debug)
if err != nil {
return nil, err
}

View File

@@ -17,16 +17,29 @@ package shell
import (
"fmt"
"strings"
"gopkg.in/ldap.v3"
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/util/ldaputils"
"yunion.io/x/onecloud/pkg/util/shellutils"
)
func queryScope(scope string) int {
if scope == api.QueryScopeOne {
return ldap.ScopeSingleLevel
} else {
return ldap.ScopeWholeSubtree
}
}
func init() {
type LdapSearchOptions struct {
Base string `help:"base DN, e.g. OU=tech,DC=example,DC=com"`
Objectclass string `help:"objectclass, e.g. organizationalPerson"`
Search []string `help:"search conditions, in format of field:value"`
Field []string `help:"retrieve field info"`
Scope string `help:"query scope" choices:"one|sub" default:"sub"`
}
shellutils.R(&LdapSearchOptions{}, "search", "search ldap", func(cli *ldaputils.SLDAPClient, args *LdapSearchOptions) error {
search := make(map[string]string)
@@ -37,7 +50,7 @@ func init() {
}
search[s[:colonPos]] = s[(colonPos + 1):]
}
entries, err := cli.Search(args.Base, args.Objectclass, search, args.Field)
entries, err := cli.Search(args.Base, args.Objectclass, search, "", args.Field, queryScope(args.Scope))
if err != nil {
return err
}
@@ -54,9 +67,10 @@ func init() {
ACCOUNT string `help:"account name to auth"`
PASSWORD string `help:"Password to auth"`
Field []string `help:"retrieve field info"`
Scope string `help:"query scope" choices:"one|sub" default:"sub"`
}
shellutils.R(&LdapAuthOptions{}, "auth", "authenticate against ldap", func(cli *ldaputils.SLDAPClient, args *LdapAuthOptions) error {
entry, err := cli.Authenticate(args.Base, args.Objectclass, args.ATTR, args.ACCOUNT, args.PASSWORD, args.Field)
entry, err := cli.Authenticate(args.Base, args.Objectclass, args.ATTR, args.ACCOUNT, args.PASSWORD, "", args.Field, queryScope(args.Scope))
if err != nil {
return err
}

View File

@@ -27,16 +27,17 @@ import (
)
type BaseOptions struct {
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AuthURL string `help:"Auth URL" default:"$OPENSTACK_AUTH_URL"`
Username string `help:"Username" default:"$OPENSTACK_USERNAME"`
Password string `help:"Password" default:"$OPENSTACK_PASSWORD"`
Project string `help:"Project" default:"$OPENSTACK_PROJECT"`
EndpointType string `help:"Project" default:"$OPENSTACK_ENDPOINT_TYPE|internal"`
DomainName string `help:"DomainName" default:"$OPENSTACK_DOMAIN_NAME"`
RegionID string `help:"RegionId" default:"$OPENSTACK_REGION_ID"`
SUBCOMMAND string `help:"openstackcli subcommand" subcommand:"true"`
Debug bool `help:"debug mode"`
Help bool `help:"Show help"`
AuthURL string `help:"Auth URL" default:"$OPENSTACK_AUTH_URL"`
Username string `help:"Username" default:"$OPENSTACK_USERNAME"`
Password string `help:"Password" default:"$OPENSTACK_PASSWORD"`
Project string `help:"Project" default:"$OPENSTACK_PROJECT"`
EndpointType string `help:"Project" default:"$OPENSTACK_ENDPOINT_TYPE|internal"`
DomainName string `help:"Domain of user" default:"$OPENSTACK_DOMAIN_NAME|Default"`
ProjectDomain string `help:"Domain of project" default:"$OPENSTACK_PROJECT_DOMAIN|Default"`
RegionID string `help:"RegionId" default:"$OPENSTACK_REGION_ID"`
SUBCOMMAND string `help:"openstackcli subcommand" subcommand:"true"`
}
func getSubcommandParser() (*structarg.ArgumentParser, error) {
@@ -92,7 +93,7 @@ func newClient(options *BaseOptions) (*openstack.SRegion, error) {
return nil, fmt.Errorf("Missing Password")
}
cli, err := openstack.NewOpenStackClient("", "", options.AuthURL, options.Username, options.Password, options.Project, options.EndpointType, options.DomainName, options.Debug)
cli, err := openstack.NewOpenStackClient("", "", options.AuthURL, options.Username, options.Password, options.Project, options.EndpointType, options.DomainName, options.ProjectDomain, options.Debug)
if err != nil {
return nil, err
}

View File

@@ -85,12 +85,11 @@ func newClient(options *BaseOptions) (*qcloud.SRegion, error) {
return nil, fmt.Errorf("Missing SecretID")
}
account := options.SecretID
if len(options.AppID) > 0 {
account = fmt.Sprintf("%s/%s", account, options.AppID)
}
if cli, err := qcloud.NewQcloudClient("", "", account, options.SecretKey, options.Debug); err != nil {
if cli, err := qcloud.NewQcloudClient("", "",
options.SecretID,
options.SecretKey,
options.AppID,
options.Debug); err != nil {
return nil, err
} else if region := cli.GetRegion(options.RegionId); region == nil {
return nil, fmt.Errorf("No such region %s", options.RegionId)

View File

@@ -17,12 +17,12 @@ package main
import (
"fmt"
"os"
"yunion.io/x/onecloud/pkg/util/ucloud"
"yunion.io/x/log"
"yunion.io/x/structarg"
"yunion.io/x/onecloud/pkg/util/shellutils"
"yunion.io/x/onecloud/pkg/util/ucloud"
_ "yunion.io/x/onecloud/pkg/util/ucloud/shell"
)
@@ -86,14 +86,11 @@ func newClient(options *BaseOptions) (*ucloud.SRegion, error) {
return nil, fmt.Errorf("Missing secret")
}
account := ""
if len(options.ProjectId) > 0 {
account = options.AccessKey + "::" + options.ProjectId
} else {
account = options.AccessKey
}
cli, err := ucloud.NewUcloudClient("", "", account, options.Secret, options.Debug)
cli, err := ucloud.NewUcloudClient("", "",
options.AccessKey,
options.Secret,
options.ProjectId,
options.Debug)
if err != nil {
return nil, err
}

140
go.mod Normal file
View File

@@ -0,0 +1,140 @@
module yunion.io/x/onecloud
go 1.12
require (
github.com/360EntSecGroup-Skylar/excelize v1.4.0
github.com/Azure/azure-sdk-for-go v19.1.0+incompatible
github.com/Azure/go-autorest v10.15.5+incompatible
github.com/DataDog/dd-trace-go v0.6.1 // indirect
github.com/DataDog/zstd v1.3.4 // indirect
github.com/Microsoft/azure-vhd-utils v0.0.0-20181115010904-44cbada2ece3
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 v0.0.0-20180112035716-b5829a0278c8
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20181116160301-c6838fdc33ed
github.com/anacrolix/dht v0.0.0-20181129074040-b09db78595aa // indirect
github.com/anacrolix/go-libutp v0.0.0-20180808010927-aebbeb60ea05 // indirect
github.com/anacrolix/log v0.0.0-20180808012509-286fcf906b48 // indirect
github.com/anacrolix/mmsg v0.0.0-20180808012353-5adb2c1127c0 // indirect
github.com/anacrolix/torrent v0.0.0-20181129073333-cc531b8c4a80
github.com/aokoli/goutils v1.0.1
github.com/apache/thrift v0.0.0-20180514124809-e59b73d3c2bf // indirect
github.com/aws/aws-sdk-go v1.15.73
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
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/ceph/go-ceph v0.0.0-20181217221554-e32f9f0f2e94
github.com/coredns/coredns v1.3.0
github.com/coreos/go-semver v0.3.0 // indirect
github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a // indirect
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect
github.com/dimchansky/utfbom v1.1.0 // indirect
github.com/dnaeon/go-vcr v1.0.1 // indirect
github.com/dnstap/golang-dnstap v0.0.0-20170829151710-2cf77a2b5e11 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/eapache/go-resiliency v1.1.0 // indirect
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect
github.com/eapache/queue v1.1.0 // indirect
github.com/edsrzf/mmap-go v1.0.0 // indirect
github.com/farsightsec/golang-framestream v0.0.0-20181102145529-8a0cb8ba8710 // indirect
github.com/fatih/color v1.7.0
github.com/fernet/fernet-go v0.0.0-20180830025343-9eac43b88a5e
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 // indirect
github.com/fsnotify/fsnotify v1.4.7
github.com/ghodss/yaml v1.0.0
github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7 // indirect
github.com/gin-gonic/gin v1.3.0
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.4.1
github.com/gofrs/uuid v3.2.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/groupcache v0.0.0-20190129154638-5b532d6fd5ef // indirect
github.com/golang/protobuf v1.3.2
github.com/google/gopacket v1.1.17
github.com/google/uuid v1.1.0 // indirect
github.com/googleapis/gnostic v0.2.0 // indirect
github.com/googollee/go-engine.io v0.0.0-20180829091931-e2f255711dcb // indirect
github.com/googollee/go-socket.io v0.0.0-20181214084611-0ad7206c347a
github.com/gorilla/context v1.1.1 // indirect
github.com/gorilla/mux v1.6.2
github.com/gorilla/websocket v1.4.0
github.com/gosuri/uitable v0.0.0-20160404203958-36ee7e946282
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f // indirect
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/imdario/mergo v0.3.6 // indirect
github.com/koding/websocketproxy v0.0.0-20181220232114-7ed82d81a28c
github.com/kr/pty v1.1.3
github.com/libvirt/libvirt-go-xml v5.2.0+incompatible
github.com/marstr/guid v1.1.0 // indirect
github.com/mattn/go-runewidth v0.0.4 // indirect
github.com/mattn/go-sqlite3 v1.10.0 // indirect
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
github.com/mdlayher/raw v0.0.0-20190606144222-a54781e5f38f
github.com/mholt/caddy v0.10.11
github.com/miekg/dns v1.1.1
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/nelsonken/cos-go-sdk-v5 v0.0.0-20180622024522-5247afdb7a80
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/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pierrec/lz4 v0.0.0-20181005164709-635575b42742
github.com/pkg/errors v0.8.1
github.com/pkg/term v0.0.0-20181116001808-27bbf2edb814 // indirect
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a // indirect
github.com/satori/go.uuid v1.2.0 // indirect
github.com/serialx/hashring v0.0.0-20180504054112-49a4782e9908
github.com/shirou/gopsutil v2.18.10+incompatible
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 // indirect
github.com/spf13/pflag v1.0.3 // indirect
github.com/stretchr/testify v1.3.0
github.com/tencentcloud/tencentcloud-sdk-go v0.0.0-20181108132626-805d01dd0e2e
github.com/tinylib/msgp v1.1.0 // indirect
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect
github.com/tredoe/osutil v0.0.0-20161130133508-7d3ee1afa71c
github.com/ugorji/go v0.0.0-20161130061742-9c7f9b7a2bc3 // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible
github.com/vmware/govmomi v0.19.0
go.etcd.io/etcd v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738
go.uber.org/atomic v1.4.0 // indirect
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 // indirect
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c // indirect
google.golang.org/appengine v1.3.0 // indirect
google.golang.org/genproto v0.0.0-20181218023534-67d6565462c5 // indirect
google.golang.org/grpc v1.23.1
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/go-playground/validator.v8 v8.18.2 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ldap.v3 v3.0.3
gopkg.in/yaml.v2 v2.2.2
k8s.io/api v0.0.0-20181004124137-fd83cbc87e76
k8s.io/apimachinery v0.0.0-20181215012845-4d029f033399
k8s.io/client-go v9.0.0+incompatible
k8s.io/klog v0.1.0 // indirect
k8s.io/kubernetes v1.12.3
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051
yunion.io/x/log v0.0.0-20190629062853-9f6483a7103d
yunion.io/x/pkg v0.0.0-20191111031517-2206ee61d93e
yunion.io/x/sqlchemy v0.0.0-20191119025555-5948646b39e6
yunion.io/x/structarg v0.0.0-20190809075558-115bed041de3
)
replace github.com/ceph/go-ceph v0.0.0-20181217221554-e32f9f0f2e94 => github.com/yunionio/go-ceph v0.0.0-20190912101231-6f05a06b3859

549
go.sum Normal file
View File

@@ -0,0 +1,549 @@
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=
github.com/360EntSecGroup-Skylar/excelize v1.4.0 h1:43rak9uafmwSJpXfFO1heKQph8tP3nlfWJWFQQtW1R0=
github.com/360EntSecGroup-Skylar/excelize v1.4.0/go.mod h1:R8KYLmGns0vDPe6/HyphW0mzW+MFexlGDafU0ykVEnU=
github.com/Azure/azure-sdk-for-go v5.0.0-beta.0.20161118192335-3b1282355199+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v19.1.0+incompatible h1:ysqLW+tqZjJWOTE74heH/pDRbr4vlN3yV+dqQYgpyxw=
github.com/Azure/azure-sdk-for-go v19.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-autorest v10.15.5+incompatible h1:vdxx6wM1rVkKt/3niByPVjguoLWkWImOcJNvEykgBzY=
github.com/Azure/go-autorest v10.15.5+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
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/Microsoft/azure-vhd-utils v0.0.0-20181115010904-44cbada2ece3 h1:gImoAO1xAcC1oDlYmD/X7dggsodGf2DFJOVE5m0ssms=
github.com/Microsoft/azure-vhd-utils v0.0.0-20181115010904-44cbada2ece3/go.mod h1:u0H9gMieFLxkUy8RS0X8VbFWyPs2815qQAaitRbj6x0=
github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w=
github.com/RoaringBitmap/roaring v0.4.16 h1:NholfewybRLOwACgfqfzn/N5xa6keKNs4fP00t0cwLo=
github.com/RoaringBitmap/roaring v0.4.16/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w=
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/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20180112035716-b5829a0278c8 h1:mb7rn6WX8viizO36Nv6VVCBrgwaq01HPrZv1qq07/Yg=
github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20180112035716-b5829a0278c8/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA=
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20181116160301-c6838fdc33ed h1:8Nj1ihALo/UVM2EnOVQ1EY/kwNKRwLx1GW/z3Y65czY=
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20181116160301-c6838fdc33ed/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
github.com/anacrolix/dht v0.0.0-20180412060941-24cbf25b72a4/go.mod h1:hQfX2BrtuQsLQMYQwsypFAab/GvHg8qxwVi4OJdR1WI=
github.com/anacrolix/dht v0.0.0-20181127122252-acaa69c368bb/go.mod h1:Z/mP+H70xwnUv957UXVkTrzYRhKs0mGjS0lyqS331g4=
github.com/anacrolix/dht v0.0.0-20181129074040-b09db78595aa h1:5RyX9Tvqa9oewlJhFihkxe8biS0ojTlrNU3ryqm5g2s=
github.com/anacrolix/dht v0.0.0-20181129074040-b09db78595aa/go.mod h1:Ayu4t+5TsHQ07/P8XzRJqVofv7lU4R1ZTT7KW5+SPFA=
github.com/anacrolix/envpprof v0.0.0-20180404065416-323002cec2fa h1:xCaATLKmn39QqLs3tUZYr6eKvezJV+FYvVOLTklxK6U=
github.com/anacrolix/envpprof v0.0.0-20180404065416-323002cec2fa/go.mod h1:KgHhUaQMc8cC0+cEflSgCFNFbKwi5h54gqtVn8yhP7c=
github.com/anacrolix/go-libutp v0.0.0-20180522111405-6baeb806518d/go.mod h1:beQSaSxwH2d9Eeu5ijrEnHei5Qhk+J6cDm1QkWFru4E=
github.com/anacrolix/go-libutp v0.0.0-20180725071407-34b43d880940/go.mod h1:szRMvnqPPC0VKbIRVoImO5gjJj8OZCYdixSrDEo1TzM=
github.com/anacrolix/go-libutp v0.0.0-20180808010927-aebbeb60ea05 h1:Zoniih3jyqtr3I0xFoMvw1USWpg+CbI/zOrcLudr0lc=
github.com/anacrolix/go-libutp v0.0.0-20180808010927-aebbeb60ea05/go.mod h1:POY/GPlrFKRxnOKH1sGAB+NBWMoP+sI+hHJxgcgWbWw=
github.com/anacrolix/log v0.0.0-20180412014343-2323884b361d/go.mod h1:sf/7c2aTldL6sRQj/4UKyjgVZBu2+M2z9wf7MmwPiew=
github.com/anacrolix/log v0.0.0-20180808012509-286fcf906b48 h1:aHwCj9Q6sjQOq5sC8Bzylt7GCAvt+D5MPEpkD6TeXxU=
github.com/anacrolix/log v0.0.0-20180808012509-286fcf906b48/go.mod h1:sf/7c2aTldL6sRQj/4UKyjgVZBu2+M2z9wf7MmwPiew=
github.com/anacrolix/missinggo v0.0.0-20180522035225-b4a5853e62ff/go.mod h1:b0p+7cn+rWMIphK1gDH2hrDuwGOcbB6V4VXeSsEfHVk=
github.com/anacrolix/missinggo v0.0.0-20180621131740-7fc7cfea16ea/go.mod h1:kwGiTUTZ0+p4vAz3VbAI5a30t2YbvemcmspjKwrAz5s=
github.com/anacrolix/missinggo v0.0.0-20180725070939-60ef2fbf63df/go.mod h1:kwGiTUTZ0+p4vAz3VbAI5a30t2YbvemcmspjKwrAz5s=
github.com/anacrolix/missinggo v0.0.0-20181127231911-72d14a94053a/go.mod h1:IN+9GUe7OxKMIs/XeXEbT/rMUolmJzmlZiXHS7FwD/Y=
github.com/anacrolix/missinggo v0.0.0-20181129073415-3237bf955fed h1:pMzstxgUXooGmNxZnjFSsnjtFd7s81sNI7L2pzEuWWs=
github.com/anacrolix/missinggo v0.0.0-20181129073415-3237bf955fed/go.mod h1:IN+9GUe7OxKMIs/XeXEbT/rMUolmJzmlZiXHS7FwD/Y=
github.com/anacrolix/mmsg v0.0.0-20180515031531-a4a3ba1fc8bb/go.mod h1:x2/ErsYUmT77kezS63+wzZp8E3byYB0gzirM/WMBLfw=
github.com/anacrolix/mmsg v0.0.0-20180808012353-5adb2c1127c0 h1:Fa1XqqLW62lQzEDlNA+QcdJbkfJcxQN0YC8983kj5tU=
github.com/anacrolix/mmsg v0.0.0-20180808012353-5adb2c1127c0/go.mod h1:x8kRaJY/dCrY9Al0PEcj1mb/uFHwP6GCJ9fLl4thEPc=
github.com/anacrolix/sync v0.0.0-20171108081538-eee974e4f8c1/go.mod h1:+u91KiUuf0lyILI6x3n/XrW7iFROCZCG+TjgK8nW52w=
github.com/anacrolix/sync v0.0.0-20180611022320-3c4cb11f5a01/go.mod h1:+u91KiUuf0lyILI6x3n/XrW7iFROCZCG+TjgK8nW52w=
github.com/anacrolix/sync v0.0.0-20180725074606-fda11526ff08/go.mod h1:+u91KiUuf0lyILI6x3n/XrW7iFROCZCG+TjgK8nW52w=
github.com/anacrolix/sync v0.0.0-20180808010631-44578de4e778 h1:XpCDEixzXOB8yaTW/4YBzKrJdMcFI0DzpPTYNv75wzk=
github.com/anacrolix/sync v0.0.0-20180808010631-44578de4e778/go.mod h1:s735Etp3joe/voe2sdaXLcqDdJSay1O0OPnM0ystjqk=
github.com/anacrolix/tagflag v0.0.0-20180109131632-2146c8d41bf0/go.mod h1:1m2U/K6ZT+JZG0+bdMK6qauP49QT4wE5pmhJXOKKCHw=
github.com/anacrolix/tagflag v0.0.0-20180605133421-f477c8c2f14c/go.mod h1:1m2U/K6ZT+JZG0+bdMK6qauP49QT4wE5pmhJXOKKCHw=
github.com/anacrolix/torrent v0.0.0-20180622074351-fefeef4ee9eb/go.mod h1:3vcFVxgOASslNXHdivT8spyMRBanMCenHRpe0u5vpBs=
github.com/anacrolix/torrent v0.0.0-20181129073333-cc531b8c4a80 h1:LnqSEnVSkn8Z4Flz/s2AR78OcLQCqz356xmTMxJgPws=
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/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.0.0-20180514124809-e59b73d3c2bf h1:AmV4ypk1GFDRKjzX6eO47pRAoSO5FTjyVqRYhZmHhms=
github.com/apache/thrift v0.0.0-20180514124809-e59b73d3c2bf/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/aws/aws-sdk-go v1.15.73 h1:Xzo/nSFgDfRNHRkXc03nT9389YFFaxqsy9clPwAoff0=
github.com/aws/aws-sdk-go v1.15.73/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
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/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
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/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/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
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/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
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/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
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 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/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4=
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
github.com/dnaeon/go-vcr v1.0.1 h1:r8L/HqC0Hje5AXMu1ooW8oyQyOFv4GxqpL0nRP7SLLY=
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
github.com/dnstap/golang-dnstap v0.0.0-20170829151710-2cf77a2b5e11 h1:m8nX8hsUghn853BJ5qB0lX+VvS6LTJPksWyILFZRYN4=
github.com/dnstap/golang-dnstap v0.0.0-20170829151710-2cf77a2b5e11/go.mod h1:s1PfVYYVmTMgCSPtho4LKBDecEHJWtiVDPNv78Z985U=
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=
github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU=
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw=
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
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/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 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fernet/fernet-go v0.0.0-20180830025343-9eac43b88a5e h1:P10tZmVD2XclAaT9l7OduMH1OLFzTa1wUuUqHZnEdI0=
github.com/fernet/fernet-go v0.0.0-20180830025343-9eac43b88a5e/go.mod h1:2H9hjfbpSMHwY503FclkV/lZTBh2YlOmLLSda12uL8c=
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
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.0.0-20170109093832-22d885f9ecc7 h1:AzN37oI0cOS+cougNAV9szl6CVoj2RYwzS3DpUQNtlY=
github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s=
github.com/gin-gonic/gin v1.3.0 h1:kCmZyPklC0gVdL728E6Aj20uYBJV93nj/TkwBTKhFbs=
github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y=
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=
github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493 h1:OTanQnFt0bi5iLFSdbEVA/idR6Q2WhCm+deb7ir2CcM=
github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
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-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-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
github.com/gofrs/uuid v3.2.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 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE=
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
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=
github.com/golang-plus/testing v1.0.0 h1:azmFWFV44LHK/j/jAkNTbzB2G2b6HdmqF358r73m8kg=
github.com/golang-plus/testing v1.0.0/go.mod h1:psANDlKPZ0ycedUzCS0Trf8h98sFyOyB51FlqyU+Ltc=
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 h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
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-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
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=
github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gopacket v1.1.17 h1:rMrlX2ZY2UbvT+sdz3+6J+pp2z+msCq9MxTU6ymxbBY=
github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.0 h1:Jf4mxPC/ziBnoPIdpQdPJ9OeiomAUHLvxmPRSPH9m4s=
github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g=
github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
github.com/googollee/go-engine.io v0.0.0-20180829091931-e2f255711dcb h1:n22Aukg/TjoypWc37dbKIpCsz0VMFPD36HQk1WKvg3A=
github.com/googollee/go-engine.io v0.0.0-20180829091931-e2f255711dcb/go.mod h1:MBpz1MS3P4HtRcBpQU4HcjvWXZ9q+JWacMEh2/BFYbg=
github.com/googollee/go-socket.io v0.0.0-20181214084611-0ad7206c347a h1:NMY2a78Z98wdhMHJTJxTc9BFfnGGc5ZWfgY9a23zeck=
github.com/googollee/go-socket.io v0.0.0-20181214084611-0ad7206c347a/go.mod h1:ftBGBMhSYToR5oV4ImIPKvAIsNaTkLC+tTvoNafqxlQ=
github.com/gopherjs/gopherjs v0.0.0-20180628210949-0892b62f0d9f h1:FDM3EtwZLyhW48YRiyqjivNlNZjAObv4xt4NnJaU+NQ=
github.com/gopherjs/gopherjs v0.0.0-20180628210949-0892b62f0d9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/mux v1.6.2 h1:Pgr17XVTNXAk3q/r4CpKzC5xBM/qW1uVLV+IhRZpIIk=
github.com/gorilla/mux v1.6.2/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.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gosuri/uilive v0.0.0-20170323041506-ac356e6e42cd/go.mod h1:qkLSc0A5EXSP6B04TrN4oQoxqFI7A8XvoXSlJi8cwk8=
github.com/gosuri/uiprogress v0.0.0-20170224063937-d0567a9d84a1/go.mod h1:C1RTYn4Sc7iEyf6j8ft5dyoZ4212h8G1ol9QQluh5+0=
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-20181110185634-c63ab54fda8f h1:ShTPMJQes6tubcjzGMODIVG5hlrCeImaBnZzKF2N8SM=
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f/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-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=
github.com/hako/durafmt v0.0.0-20180520121703-7b7ae1e72ead/go.mod h1:5Scbynm8dF1XAPwIwkGPqzkM/shndPm79Jd1003hTjE=
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/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 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 h1:12VvqtR6Aowv3l/EQUlocDHW2Cp4G9WJVH7uyH8QFJE=
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
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/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo=
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE=
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
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/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.3 h1:/Um6a/ZmD5tF7peoOJ5oN5KMQ0DrGVQSXLNwyckutPk=
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/libvirt/libvirt-go-xml v5.2.0+incompatible h1:ALyVpa0/lFfFaUpb5l0fNBohufmQG6jsOGRCl/nKEi8=
github.com/libvirt/libvirt-go-xml v5.2.0+incompatible/go.mod h1:oBlgD3xOA01ihiK5stbhFzvieyW+jVS6kbbsMVF623A=
github.com/marstr/guid v1.1.0 h1:/M4H/1G4avsieL6BbUwCOBzulmoeKVP5ux/3mQNnbyI=
github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
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 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-sqlite3 v1.7.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o=
github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
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=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mdlayher/arp v0.0.0-20190313224443-98a83c8a2717 h1:lAsTIRVOYxE/LwrMmSAVfV/HDndBEvHaAEkjbwhqsJ4=
github.com/mdlayher/arp v0.0.0-20190313224443-98a83c8a2717/go.mod h1:eOj1DDj3NAZ6yv+WafaKzY37MFZ58TdfIhQ+8nQbiis=
github.com/mdlayher/ethernet v0.0.0-20190313224307-5b5fc417d966/go.mod h1:5s5p/sMJ6sNsFl6uCh85lkFGV8kLuIYJCRJLavVJwvg=
github.com/mdlayher/ethernet v0.0.0-20190606142754-0394541c37b7 h1:lez6TS6aAau+8wXUP3G9I3TGlmPFEq2CTxBaRqY6AGE=
github.com/mdlayher/ethernet v0.0.0-20190606142754-0394541c37b7/go.mod h1:U6ZQobyTjI/tJyq2HG+i/dfSoFUt8/aZCM+GKtmFk/Y=
github.com/mdlayher/raw v0.0.0-20190313224157-43dbcdd7739d/go.mod h1:r1fbeITl2xL/zLbVnNHFyOzQJTgr/3fpf1lJX/cjzR8=
github.com/mdlayher/raw v0.0.0-20190606142536-fef19f00fc18/go.mod h1:7EpbotpCmVZcu+KCX4g9WaRNuu11uyhiW7+Le1dKawg=
github.com/mdlayher/raw v0.0.0-20190606144222-a54781e5f38f h1:Xjvm7UTnKTwrlhbs+8qA6I0v1iX77rY3QxftSgvOVRk=
github.com/mdlayher/raw v0.0.0-20190606144222-a54781e5f38f/go.mod h1:7EpbotpCmVZcu+KCX4g9WaRNuu11uyhiW7+Le1dKawg=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/mholt/caddy v0.10.11 h1:s8X+R8DuBbrrMuUTcWSxlDe567B0s5EDmiDBKSYsioY=
github.com/mholt/caddy v0.10.11/go.mod h1:Wb1PlT4DAYSqOEd03MsqkdkXnTxA8v9pKjdpxbqM1kY=
github.com/miekg/dns v1.1.1 h1:DVkblRdiScEnEr0LR9nTnEQqHYycjkXW9bOjd+2EL2o=
github.com/miekg/dns v1.1.1/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
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 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg=
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/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-pinyin v0.15.0 h1:sSwlnsogK/WMzcf0HnjgxyAI4GU6LFqwXnhr77q1Z80=
github.com/mozillazg/go-pinyin v0.15.0/go.mod h1:bO+dztNW6O2lSJdYLha7LO3bujXzjjU3UvKb2IGANfg=
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae h1:VeRdUYdCw49yizlSbMEn2SZ+gT+3IUKx8BqxyQdz+BY=
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nelsonken/cos-go-sdk-v5 v0.0.0-20180622024522-5247afdb7a80 h1:1tGm26e9ktdEIa7LHD7xf7oMUCE0V2wP4URkUAvEttA=
github.com/nelsonken/cos-go-sdk-v5 v0.0.0-20180622024522-5247afdb7a80/go.mod h1:UZaoQ2hntRH4P8MwrKOxcVXvNgg1N4atxfa7NP+1wWg=
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88=
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU=
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
github.com/opentracing/opentracing-go v1.0.2 h1:3jA2P6O1F9UOrWVpwrIo17pu01KWvNWg4X946/Y5Zwg=
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/openzipkin/zipkin-go-opentracing v0.3.4 h1:x/pBv/5VJNWkcHF1G9xqhug8Iw7X1y1zOMzDmyuvP2g=
github.com/openzipkin/zipkin-go-opentracing v0.3.4/go.mod h1:js2AbwmHW0YD9DwIw2JhQWmbfFi/UnWyYwdVhqbCDOE=
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ=
github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
github.com/pierrec/lz4 v0.0.0-20181005164709-635575b42742 h1:wKfigKMTgvSzBLIVvB5QaBBQI0odU6n45/UKSphjLus=
github.com/pierrec/lz4 v0.0.0-20181005164709-635575b42742/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
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_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
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/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/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
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/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/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/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/smartystreets/assertions v0.0.0-20180607162144-eb5b59917fa2 h1:hjkfjJKpNSPqJZJKSrHbQgBz+eEui8ivYlorRc9DR64=
github.com/smartystreets/assertions v0.0.0-20180607162144-eb5b59917fa2/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a h1:JSvGDIbmil4Ui/dDdFBExb7/cmkNjyX5F97oglmvCDo=
github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
github.com/smartystreets/gunit v0.0.0-20180314194857-6f0d6275bdcd h1:p5kvxG4NHogJX1brTLtvUSGdW0/aBvIyqDSW7tmnsmQ=
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 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/syncthing/syncthing v0.14.48-rc.4/go.mod h1:nw3siZwHPA6M8iSfjDCWQ402eqvEIasMQOE8nFOxy7M=
github.com/tencentcloud/tencentcloud-sdk-go v0.0.0-20181108132626-805d01dd0e2e h1:CtKVGXKh2bfmepZ/YogAjvL/CrSy9NGZET500K7arf4=
github.com/tencentcloud/tencentcloud-sdk-go v0.0.0-20181108132626-805d01dd0e2e/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e h1:T5PdfK/M1xyrHwynxMIVMWLS7f/qHwfslZphxtGnw7s=
github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g=
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/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 v0.0.0-20161130061742-9c7f9b7a2bc3 h1:KfqgRfYvGRyKOQUx8GphSC8D6vVoBndzco3rESP8I4k=
github.com/ugorji/go v0.0.0-20161130061742-9c7f9b7a2bc3/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmware/govmomi v0.19.0 h1:CR6tEByWCPOnRoRyhLzuHaU+6o2ybF3qufNRWS/MGrY=
github.com/vmware/govmomi v0.19.0/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
github.com/willf/bitset v1.1.9 h1:GBtFynGY9ZWZmEC9sWuu41/7VBXPFCOAbCbqTflOg9c=
github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
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/yunionio/go-ceph v0.0.0-20190912101231-6f05a06b3859 h1:wu596gn6sV3j5wy+GDfiG8nwtzIDpalJihfmC/TjoYc=
github.com/yunionio/go-ceph v0.0.0-20190912101231-6f05a06b3859/go.mod h1:8XuBae5AzsgotLArJSewMruYVaQs8AlfsK5jBCG8T9Y=
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.20191023171146-3cf2f69b5738 h1:lWF4f9Nypl1ZqSb4gLeh/DGvBYVaUYHuiB93teOmwgc=
go.etcd.io/etcd v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
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=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4 h1:ydJNl0ENAG67pFbB+9tfhiL2pYqLhfoaZFw/cjLhY4A=
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
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-20181106065722-10aee1819953/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-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190419010253-1f3472d942ba/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65 h1:+rhAzEzT3f4JtomfC371qB+0Ola2caSKcY69NUBZrRQ=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 h1:fHDIZ2oxGnUZRN6WgWFCbYBjH9uqVPRCUVUDhs0wnbA=
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 h1:uESlIz09WIHT2I+pasSXcpLYqYK8wHcdCetU3VuMBJE=
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
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-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/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-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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190418153312-f0ce4c0180be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606122018-79a91cf218c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg=
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/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-20180828015842-6cd1fcedba52/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20181218023534-67d6565462c5 h1:ZcmLUbATcwP+ZlsJ5pn5qeF9O3pC7U7mYpSnHH7RFFs=
google.golang.org/genproto v0.0.0-20181218023534-67d6565462c5/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.1 h1:q4XQuHFC6I28BKZpo6IYyb3mNO+l7lSOxRuYTCiDfXk=
google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
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=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ=
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
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/urfave/cli.v1 v1.19.1/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
k8s.io/api v0.0.0-20181004124137-fd83cbc87e76 h1:cGc6jt7tNK7a2WfgNKjxjoU/UXXr9Q7JTqvCupZ+6+Y=
k8s.io/api v0.0.0-20181004124137-fd83cbc87e76/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA=
k8s.io/apimachinery v0.0.0-20181215012845-4d029f033399 h1:xdXaRQ7uNX4x6NpvxXASvlVXtKa8+WbCXK7Hjr6XZ6c=
k8s.io/apimachinery v0.0.0-20181215012845-4d029f033399/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0=
k8s.io/client-go v9.0.0+incompatible h1:2kqW3X2xQ9SbFvWZjGEHBLlWc1LG9JIJNXWkuqwdZ3A=
k8s.io/client-go v9.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s=
k8s.io/klog v0.1.0 h1:I5HMfc/DtuVaGR1KPwUrTc476K8NCqNBldC7H4dYEzk=
k8s.io/klog v0.1.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
k8s.io/kubernetes v1.12.3 h1:5GPfYyyBylqcZUqL+ApYpYTm2IYjH56JUewYC0GbetU=
k8s.io/kubernetes v1.12.3/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051 h1:vtZw2iwGrsARNSwRTREGjmr2BWPdxbmXVkb3kI1qu28=
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
yunion.io/x/log v0.0.0-20190514041436-04ce53b17c6b h1:Z9z+7iegu0HXuL+S8taVWRd1P4b9JJOgPXIeoqYrj7c=
yunion.io/x/log v0.0.0-20190514041436-04ce53b17c6b/go.mod h1:+gauLs73omeJAPlsXcevLsJLKixV+sR/E7WSYTSx1fE=
yunion.io/x/log v0.0.0-20190629062853-9f6483a7103d h1:59zrDL7Ft+hDukguJRmLr/Gdu/9V75x+yX99ovZwfaA=
yunion.io/x/log v0.0.0-20190629062853-9f6483a7103d/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U=
yunion.io/x/pkg v0.0.0-20190620104149-945c25821dbf h1:OsKC+2ghZHwp+Ztm/MwKlLKKRiE7QcPG8eTp0GmsHbg=
yunion.io/x/pkg v0.0.0-20190620104149-945c25821dbf/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v0.0.0-20191111031517-2206ee61d93e h1:Wa66RRG3+ZPxaWmIZD053S4iBpy0cPrq3imUkKVECR0=
yunion.io/x/pkg v0.0.0-20191111031517-2206ee61d93e/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/sqlchemy v0.0.0-20191119025555-5948646b39e6 h1:vgltfojqVRXxWiBt+8bgrSmO7F0cSNAbG6Ktn1SLIq8=
yunion.io/x/sqlchemy v0.0.0-20191119025555-5948646b39e6/go.mod h1:FTdwPdGhMgh4E+UFXc9klI1Ok34fMuybTT+jLhOaIjI=
yunion.io/x/structarg v0.0.0-20190809075558-115bed041de3 h1:bfC8EhXYvyGYldRWlzxiCM39Zfj3s3+zham9mW2h2LE=
yunion.io/x/structarg v0.0.0-20190809075558-115bed041de3/go.mod h1:EP6NSv2C0zzqBDTKumv8hPWLb3XvgMZDHQRfyuOrQng=

View File

@@ -0,0 +1,311 @@
// 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 models
import (
"context"
"fmt"
"sync"
"time"
"github.com/pkg/errors"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/sqlchemy"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/auth"
mcclient_models "yunion.io/x/onecloud/pkg/mcclient/models"
mcclient_modules "yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/util/ansible"
)
const (
AnsiblePlaybookStatusInit = "init"
AnsiblePlaybookStatusRunning = "running"
AnsiblePlaybookStatusSucceeded = "succeeded"
AnsiblePlaybookStatusFailed = "failed"
AnsiblePlaybookStatusCanceled = "canceled"
AnsiblePlaybookStatusUnknown = "unknown"
)
// low priority
//
// - retry times and interval
// - timeout,
// - copied playbook has no added value
type SAnsiblePlaybook struct {
db.SVirtualResourceBase
Playbook *ansible.Playbook `length:"text" nullable:"false" create:"required" get:"user" update:"user"`
Output string `length:"medium" get:"user"`
StartTime time.Time `list:"user"`
EndTime time.Time `list:"user"`
}
const (
OutputMaxBytes = 64*1024*1024 - 1
PlaybookMaxBytes = 64*1024 - 1
)
type SAnsiblePlaybookManager struct {
db.SVirtualResourceBaseManager
sessions ansible.SessionManager
sessionsMux *sync.Mutex
}
var AnsiblePlaybookManager *SAnsiblePlaybookManager
func init() {
AnsiblePlaybookManager = &SAnsiblePlaybookManager{
SVirtualResourceBaseManager: db.NewVirtualResourceBaseManager(
SAnsiblePlaybook{},
"ansibleplaybooks_tbl",
"ansibleplaybook",
"ansibleplaybooks",
),
sessions: ansible.SessionManager{},
sessionsMux: &sync.Mutex{},
}
AnsiblePlaybookManager.SetVirtualObject(AnsiblePlaybookManager)
}
func (man *SAnsiblePlaybookManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
pbV := NewAnsiblePlaybookValidator("playbook", userCred)
if err := pbV.Validate(data); err != nil {
return nil, err
}
data.Set("status", jsonutils.NewString(AnsiblePlaybookStatusInit))
return man.SVirtualResourceBaseManager.ValidateCreateData(ctx, userCred, ownerId, query, data)
}
func (apb *SAnsiblePlaybook) PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) {
apb.SVirtualResourceBase.PostCreate(ctx, userCred, ownerId, query, data)
err := apb.runPlaybook(ctx, userCred)
if err != nil {
log.Errorf("postCreate: runPlaybook: %v", err)
}
}
func (man *SAnsiblePlaybookManager) InitializeData() error {
pbs := []SAnsiblePlaybook{}
q := AnsiblePlaybookManager.Query()
q = q.Filter(sqlchemy.Equals(q.Field("status"), AnsiblePlaybookStatusRunning))
if err := db.FetchModelObjects(AnsiblePlaybookManager, q, &pbs); err != nil {
return errors.WithMessage(err, "fetch running playbooks")
}
for i := 0; i < len(pbs); i++ {
pb := &pbs[i]
_, err := db.Update(pb, func() error {
pb.Status = AnsiblePlaybookStatusUnknown
return nil
})
if err != nil {
log.Errorf("set playbook %s(%s) to unknown state: %v", pb.Name, pb.Id, err)
}
}
return nil
}
func (apb *SAnsiblePlaybook) ValidateDeleteCondition(ctx context.Context) error {
if apb.Status == AnsiblePlaybookStatusRunning {
return httperrors.NewConflictError("playbook is in running state")
}
return nil
}
func (apb *SAnsiblePlaybook) ValidateUpdateCondition(ctx context.Context) error {
if apb.Status == AnsiblePlaybookStatusRunning {
return httperrors.NewConflictError("playbook is in running state")
}
return nil
}
func (apb *SAnsiblePlaybook) ValidateUpdateData(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
pbV := NewAnsiblePlaybookValidator("playbook", userCred)
if err := pbV.Validate(data); err != nil {
return nil, err
}
apb.Playbook = pbV.Playbook // Update as a whole
data.Set("status", jsonutils.NewString(AnsiblePlaybookStatusInit))
return data, nil
}
func (apb *SAnsiblePlaybook) PostUpdate(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) {
apb.SVirtualResourceBase.PostUpdate(ctx, userCred, query, data)
err := apb.runPlaybook(ctx, userCred)
if err != nil {
log.Errorf("postUpdate: runPlaybook: %v", err)
}
}
func (apb *SAnsiblePlaybook) AllowPerformRun(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool {
return apb.IsOwner(userCred) || db.IsAdminAllowPerform(userCred, apb, "run")
}
func (apb *SAnsiblePlaybook) PerformRun(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
err := apb.runPlaybook(ctx, userCred)
if err != nil {
return nil, httperrors.NewConflictError("%s", err.Error())
}
return nil, nil
}
func (apb *SAnsiblePlaybook) AllowPerformStop(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool {
return apb.IsOwner(userCred) || db.IsAdminAllowPerform(userCred, apb, "stop")
}
func (apb *SAnsiblePlaybook) PerformStop(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
err := apb.stopPlaybook(ctx, userCred)
if err != nil {
return nil, httperrors.NewConflictError("%s", err.Error())
}
return nil, nil
}
func (apb *SAnsiblePlaybook) fetchPrivateKey(ctx context.Context, userCred mcclient.TokenCredential) (string, error) {
s := auth.GetSession(ctx, userCred, "", "")
jd := jsonutils.NewDict()
var jr jsonutils.JSONObject
if userCred.HasSystemAdminPrivilege() {
jd.Set("admin", jsonutils.JSONTrue)
r, err := mcclient_modules.Sshkeypairs.List(s, jd)
if err != nil {
return "", errors.WithMessage(err, "get admin ssh key")
}
jr = r.Data[0]
} else {
r, err := mcclient_modules.Sshkeypairs.GetById(s, userCred.GetProjectId(), jd)
if err != nil {
return "", errors.WithMessage(err, "get project ssh key")
}
jr = r
}
kp := &mcclient_models.SshKeypair{}
if err := jr.Unmarshal(kp); err != nil {
return "", errors.WithMessage(err, "unmarshal ssh key")
}
if kp.PrivateKey == "" {
return "", errors.New("empty ssh key")
}
return kp.PrivateKey, nil
}
func (apb *SAnsiblePlaybook) runPlaybook(ctx context.Context, userCred mcclient.TokenCredential) error {
man := AnsiblePlaybookManager
man.sessionsMux.Lock()
defer man.sessionsMux.Unlock()
if man.sessions.Has(apb.Id) {
return fmt.Errorf("playbook is already running")
}
// init private key
pb := apb.Playbook.Copy()
if k, err := apb.fetchPrivateKey(ctx, userCred); err != nil {
return err
} else {
pb.PrivateKey = []byte(k)
}
pb.OutputWriter(&ansiblePlaybookOutputRecorder{apb})
_, err := db.Update(apb, func() error {
apb.StartTime = time.Now()
apb.EndTime = time.Time{}
apb.Output = ""
apb.Status = AnsiblePlaybookStatusRunning
return nil
})
if err != nil {
log.Errorf("run playbook: update db failed before run: %v", err)
}
man.sessions.Add(apb.Id, pb)
go func() {
defer func() {
man.sessionsMux.Lock()
defer man.sessionsMux.Unlock()
man.sessions.Remove(apb.Id)
}()
runErr := man.sessions.Run(apb.Id)
_, err := db.Update(apb, func() error {
err := man.sessions.Err(apb.Id)
if err != nil {
apb.Status = AnsiblePlaybookStatusCanceled
} else if runErr != nil {
log.Warningf("playbook %s(%s) failed: %v", apb.Name, apb.Id, runErr)
apb.Status = AnsiblePlaybookStatusFailed
} else {
apb.Status = AnsiblePlaybookStatusSucceeded
}
apb.EndTime = time.Now()
return nil
})
if err != nil {
log.Errorf("updating ansible playbook failed: %v", err)
}
}()
return nil
}
func (apb *SAnsiblePlaybook) stopPlaybook(ctx context.Context, userCred mcclient.TokenCredential) error {
man := AnsiblePlaybookManager
man.sessionsMux.Lock()
defer man.sessionsMux.Unlock()
if !man.sessions.Has(apb.Id) {
if apb.Status == AnsiblePlaybookStatusRunning {
_, err := db.Update(apb, func() error {
apb.Status = AnsiblePlaybookStatusUnknown
return nil
})
if err != nil {
log.Errorf("updating ansible playbook status to unknown failed: %v", err)
}
}
return fmt.Errorf("playbook is not running")
}
// the playbook will be removed from session map in runPlaybook() on return from run
man.sessions.Stop(apb.Id)
return nil
}
type ansiblePlaybookOutputRecorder struct {
apb *SAnsiblePlaybook
}
func (w *ansiblePlaybookOutputRecorder) Write(p []byte) (n int, err error) {
apb := w.apb
_, err = db.Update(apb, func() error {
cur := apb.Output
i := len(p) + len(cur) - OutputMaxBytes
if i > 0 {
// truncate to preserve the tail
apb.Output = cur[i:] + string(p)
} else {
apb.Output += string(p)
}
return nil
})
if err != nil {
log.Errorf("ansibleplaybook %s(%s): record output: %v", apb.Name, apb.Id, err)
return 0, err
}
return len(p), nil
}

View File

@@ -0,0 +1,136 @@
// 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 models
import (
"context"
"strings"
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/util/regutils"
"yunion.io/x/onecloud/pkg/cloudcommon/validators"
"yunion.io/x/onecloud/pkg/httperrors"
mcclient "yunion.io/x/onecloud/pkg/mcclient"
mcclient_auth "yunion.io/x/onecloud/pkg/mcclient/auth"
mcclient_models "yunion.io/x/onecloud/pkg/mcclient/models"
mcclient_modules "yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/util/ansible"
)
type ValidatorAnsiblePlaybook struct {
validators.Validator
Playbook *ansible.Playbook
userCred mcclient.TokenCredential
}
func NewAnsiblePlaybookValidator(key string, userCred mcclient.TokenCredential) *ValidatorAnsiblePlaybook {
v := &ValidatorAnsiblePlaybook{
Validator: validators.Validator{Key: key},
userCred: userCred,
}
v.SetParent(v)
return v
}
func (v *ValidatorAnsiblePlaybook) Validate(data *jsonutils.JSONDict) error {
pb := ansible.NewPlaybook()
err := data.Unmarshal(pb, "playbook")
if err != nil {
return httperrors.NewBadRequestError("unmarshaling json: %v", err)
}
hosts := pb.Inventory.Hosts
for i := range hosts {
name := strings.TrimSpace(hosts[i].Name)
if len(name) == 0 {
return httperrors.NewBadRequestError("empty host name")
}
defaultUsername := ansible.PUBLIC_CLOUD_ANSIBLE_USER
switch {
case regutils.MatchIP4Addr(name):
case strings.HasPrefix(name, "host:"):
var err error
name = strings.TrimSpace(name[len("host:"):])
name, err = v.getHostAccessIp(name)
if err != nil {
return err
}
defaultUsername = "root"
case strings.HasPrefix(name, "server:"):
name = name[len("server:"):]
fallthrough
default:
var err error
name = strings.TrimSpace(name)
name, err = v.getServerIp(name)
if err != nil {
return err
}
}
hosts[i].Name = name
if username, _ := hosts[i].GetVar("ansible_user"); username == "" {
if defaultUsername != "" {
hosts[i].SetVar("ansible_user", defaultUsername)
}
}
}
pbJson := jsonutils.Marshal(pb)
if serialized := pbJson.String(); len(serialized) > PlaybookMaxBytes {
return httperrors.NewBadRequestError("playbook too big, got %d bytes, exceeding %d",
len(serialized), PlaybookMaxBytes)
}
v.Playbook = pb
data.Set("playbook", pbJson)
return nil
}
func (v *ValidatorAnsiblePlaybook) getHostAccessIp(name string) (string, error) {
sess := mcclient_auth.GetSession(context.Background(), v.userCred, "", "")
hostJson, err := mcclient_modules.Hosts.Get(sess, name, nil)
if err != nil {
return "", httperrors.NewBadRequestError("cannot find host %s", name)
}
host := &mcclient_models.Host{}
if err := hostJson.Unmarshal(host); err != nil {
return "", httperrors.NewBadRequestError("unmarshal host %s: %v", name, err)
}
if host.AccessIp == "" {
return "", httperrors.NewBadRequestError("host %s has no access ip", name)
}
return host.AccessIp, nil
}
func (v *ValidatorAnsiblePlaybook) getServerIp(name string) (string, error) {
sess := mcclient_auth.GetSession(context.Background(), v.userCred, "", "")
serverJson, err := mcclient_modules.Servers.Get(sess, name, nil)
if err != nil {
return "", httperrors.NewBadRequestError("find server %s: %v", name, err)
}
server := &mcclient_models.Server{}
if err := serverJson.Unmarshal(server); err != nil {
return "", httperrors.NewBadRequestError("unmarshal server %s: %v", name, err)
}
serverNetworks, err := mcclient_models.ParseServerNetworkDetailedString(server.Networks)
if err != nil {
return "", httperrors.NewConflictError("parse networks of %s: %v", name, err)
}
ips := serverNetworks.GetPrivateIPs()
if len(ips) == 0 {
return "", httperrors.NewBadRequestError("server %s has no private ips", name)
}
name = ips[0].String()
return name, nil
}

View File

@@ -12,4 +12,4 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package sshkeys // import "yunion.io/x/onecloud/pkg/cloudcommon/sshkeys"
package models // import "yunion.io/x/onecloud/pkg/ansibleserver/models"

View File

@@ -0,0 +1,38 @@
// 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 models
import (
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
)
func InitDB() error {
for _, manager := range []db.IModelManager{
/*
* Important!!!
* initialization order matters, do not change the order
*/
AnsiblePlaybookManager,
} {
err := manager.InitializeData()
if err != nil {
log.Errorf("Manager %s initializeData fail %s", manager.Keyword(), err)
// return err skip error table
}
}
return nil
}

View File

@@ -0,0 +1,15 @@
// 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 options // import "yunion.io/x/onecloud/pkg/ansibleserver/options"

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