Compare commits

...

477 Commits

Author SHA1 Message Date
Zexi Li
affd6fb567 Merge pull request #5795 from rainzm/automated-cherry-pick-of-#5794-upstream-release-3.1
Automated cherry pick of #5794: fix(region): Fix the snapshotpolicy info in DiskDetails
2020-04-14 22:41:43 +08:00
Zexi Li
4a3ae9da7f Merge pull request #5796 from swordqiu/feature/qj-cas-user-join-project-3.1
feature: cas user auto join designated project
2020-04-14 16:28:40 +08:00
Rain
d8d04512ba fix(region): Fix the snapshotpolicy info in DiskDetails 2020-04-14 15:41:17 +08:00
Qiu Jian
eac60b484b feature: cas user auto join designated project 2020-04-14 15:40:01 +08:00
Zexi Li
3e170f8a9b Merge pull request #5790 from yousong/automated-cherry-pick-of-#5789-upstream-release-3.1
Automated cherry pick of #5789: proxysetting: fix validating delete condition
2020-04-14 10:45:49 +08:00
Zexi Li
14f66686d9 Merge pull request #5786 from ioito/automated-cherry-pick-of-#5785-upstream-release-3.1
Automated cherry pick of #5785: fix: 避免aliyun access key不可用时返回NotFoundError错误
2020-04-14 10:44:58 +08:00
Yousong Zhou
a3b0b2193c proxysetting: fix validating delete condition 2020-04-13 20:12:53 +08:00
Qu Xuan
af24cbfaa3 fix: 避免aliyun access key不可用时返回NotFoundError错误 2020-04-13 18:49:04 +08:00
Zexi Li
8ef6b60a42 Merge pull request #5779 from swordqiu/automated-cherry-pick-of-#5756-upstream-release-3.1
Automated cherry pick of #5756: fix: 1. allow share proxysetting 2. claim proxsetting as domain resources
2020-04-13 15:45:16 +08:00
Qiu Jian
df00cdbd04 update vendor 2020-04-13 15:27:11 +08:00
Zexi Li
df37a12fc2 Merge pull request #5770 from wanyaoqi/automated-cherry-pick-of-#5769-upstream-release-3.1
Automated cherry pick of #5769: fix host init generate network config
2020-04-13 12:08:44 +08:00
Zexi Li
afc653bb48 Merge pull request #5763 from tb365/automated-cherry-pick-of-#5759-upstream-release-3.1
Automated cherry pick of #5759: aws elb bugfix
2020-04-13 11:27:46 +08:00
Qiu Jian
cae9564f29 update vendor 2020-04-13 11:00:58 +08:00
Qiu Jian
2b45e26243 fix: 1. allow share proxysetting 2. claim proxsetting as domain resources 2020-04-13 11:00:58 +08:00
tangbin
89f6f9985c aws elb bugfix 2020-04-13 10:29:17 +08:00
Zexi Li
daeb7bb144 Merge pull request #5783 from swordqiu/automated-cherry-pick-of-#5780-upstream-release-3.1
Automated cherry pick of #5780: fix: host jnlp request fail for idrac9
2020-04-13 09:49:21 +08:00
Qiu Jian
4fc343f577 fix: host jnlp request fail for idrac9 2020-04-13 00:13:20 +08:00
yunion-ci-robot
35e6f3992a Merge pull request #5775 from ioito/automated-cherry-pick-of-#5774-upstream-release-3.1
Automated cherry pick of #5774: fix: azure重装系统删除不必要的参数
2020-04-12 00:37:53 +08:00
Qu Xuan
b1f320bdd5 fix: azure重装系统删除不必要的参数 2020-04-11 15:10:58 +08:00
Zexi Li
e843eecbd1 Merge pull request #5753 from swordqiu/automated-cherry-pick-of-#5745-upstream-release-3.1
Automated cherry pick of #5745: feature: redfish support IDRAC9 baremetal
2020-04-11 13:12:18 +08:00
Zexi Li
597a9d38ca Merge pull request #5747 from yousong/automated-cherry-pick-of-#5746-upstream-release-3.1
Automated cherry pick of #5746: proxysetting: add class level test action
2020-04-11 13:07:19 +08:00
Zexi Li
03b1a0c0a1 Merge pull request #5766 from yousong/automated-cherry-pick-of-#5765-upstream-release-3.1
Automated cherry pick of #5765: region: lbagent: vrrp.advert_int must be the same inside cluster
2020-04-11 13:05:16 +08:00
Yousong Zhou
168248ef97 region: lbagent: vrrp.advert_int must be the same inside cluster 2020-04-10 15:55:15 +08:00
wanyaoqi
a965ecf107 fix host init generate network config 2020-04-10 15:49:39 +08:00
yunion-ci-robot
e46f6dc0e1 Merge pull request #5741 from yousong/automated-cherry-pick-of-#5740-upstream-release-3.1
Automated cherry pick of #5740: region: lbagents: fix returning error when glob has no match
2020-04-10 09:53:42 +08:00
Qiu Jian
0659981e24 feature: redfish support IDRAC9 baremetal 2020-04-09 22:51:09 +08:00
Yousong Zhou
58db9ddf0f proxysetting: add class level test action 2020-04-09 17:38:47 +08:00
Yousong Zhou
7e2a369fae region: lbagents: fix returning error when glob has no match 2020-04-09 11:08:03 +08:00
Zexi Li
d07d8f9652 Merge pull request #5730 from tb365/automated-cherry-pick-of-#5726-upstream-release-3.1
Automated cherry pick of #5726: huawei&qcloud&huawei elb bugfix
2020-04-08 21:54:00 +08:00
Zexi Li
367e92858f Merge pull request #5736 from swordqiu/automated-cherry-pick-of-#5733-upstream-release-3.1
Automated cherry pick of #5733: fix: idp log connected/disconnected event
2020-04-08 21:51:48 +08:00
Qiu Jian
251639353d fix: idp log connected/disconnected event 2020-04-08 21:27:04 +08:00
tangbin
e8ef3ab74e huawei&qcloud&huawei elb bugfix 2020-04-08 20:12:28 +08:00
Zexi Li
6e8a97b995 Merge pull request #5725 from yousong/automated-cherry-pick-of-#5724-upstream-release-3.1
Automated cherry pick of #5724: lbagents: deploy: deploy public type auth_url
2020-04-08 19:45:34 +08:00
Yousong Zhou
721b80e2fe climc: networks: remove stale dns related commands 2020-04-08 18:09:49 +08:00
Yousong Zhou
3d705eee3f climc: fix router-route-xx command description 2020-04-08 18:09:49 +08:00
Yousong Zhou
799b7eacb7 climc: add command proxysetting-test 2020-04-08 18:09:49 +08:00
Yousong Zhou
7f9bb72ce3 proxysetting: add test api 2020-04-08 18:09:48 +08:00
Yousong Zhou
860030929d apis: proxy: fix sanitizing empty proxy string 2020-04-08 18:09:48 +08:00
Yousong Zhou
1914e2b054 climc: proxysetting-update: fix update option 2020-04-08 18:09:48 +08:00
Yousong Zhou
fdfe3bb374 db_dispatcher: default action log for create & update 2020-04-08 18:09:48 +08:00
Yousong Zhou
b1c84895e5 lbagents: deploy: deploy public type auth_url 2020-04-08 18:09:48 +08:00
Zexi Li
e8ce6da148 Merge pull request #5717 from swordqiu/automated-cherry-pick-of-#5714-upstream-release-3.1
Automated cherry pick of #5714: fix: decouple getUserInfo at apigateway from capabilities call
2020-04-08 02:26:23 +08:00
Qiu Jian
b29d752647 fix: decouple getUserInfo at apigateway from capabilities call 2020-04-08 00:06:00 +08:00
Zexi Li
ddda51d272 Merge pull request #5699 from swordqiu/automated-cherry-pick-of-#5698-upstream-release-3.1
Automated cherry pick of #5698: fix: service config changes not effective
2020-04-07 10:38:30 +08:00
Zexi Li
1574970148 Merge pull request #5705 from wanyaoqi/automated-cherry-pick-of-#5704-upstream-release-3.1
Automated cherry pick of #5704: fix migrate cache cdrom
2020-04-07 10:37:20 +08:00
wanyaoqi
f96e632384 fix migrate cache cdrom 2020-04-06 23:17:15 +08:00
Qiu Jian
41bf5a1c17 fix: service config changes not effective 2020-04-06 16:09:00 +08:00
Zexi Li
1f645f550a Merge pull request #5693 from rainzm/automated-cherry-pick-of-#5691-upstream-release-3.1
Automated cherry pick of #5691: fix(esxi): Fix some question of CheckAndSetCacheImage.
2020-04-05 13:53:32 +08:00
Zexi Li
72bf32b8db Merge pull request #5697 from swordqiu/automated-cherry-pick-of-#5694-upstream-release-3.1
Automated cherry pick of #5694: fix: misc bugs in usage data
2020-04-05 13:52:32 +08:00
Qiu Jian
93e7780d1d fix: misc bugs in usage data 2020-04-05 08:06:42 +08:00
Rain
3ad7ac7e18 fix(esxi): Fix some question of CheckAndSetCacheImage.
1. If there is storagecachedimage in this host's storagecache, use is
instead of another host's one.
2. SrcStorage should be found from srcHost instead host.
2020-04-04 21:54:14 +08:00
Zexi Li
888c527fa9 Merge pull request #5687 from ioito/automated-cherry-pick-of-#5686-upstream-release-3.1
Automated cherry pick of #5686: fix: 修复重装系统时未能更换指定image问题
2020-04-03 19:43:23 +08:00
Zexi Li
f577998f60 Merge pull request #5672 from ioito/automated-cherry-pick-of-#5671-upstream-release-3.1
Automated cherry pick of #5671: fix: 华为云rds使用自身的存储类型
2020-04-03 19:41:39 +08:00
Zexi Li
57fe0a05af Merge pull request #5683 from ioito/automated-cherry-pick-of-#5682-upstream-release-3.1
Automated cherry pick of #5682: fix: typo
2020-04-03 11:35:53 +08:00
Qu Xuan
dcfe21a5ee fix: 修复重装系统时未能更换指定image问题 2020-04-03 11:35:29 +08:00
Qu Xuan
0c3fe7e440 fix: typo 2020-04-02 20:23:15 +08:00
yunion-ci-robot
1452c4d817 Merge pull request #5681 from yousong/bugfix/yousong-cloudaccount-ps-3.1
[3.1] cloudaccounts: update: make proxy_setting optional
2020-04-02 19:25:49 +08:00
Zexi Li
d9c7f08c74 Merge pull request #5677 from wanyaoqi/automated-cherry-pick-of-#5676-upstream-release-3.1
Automated cherry pick of #5676: host do not set hostname
2020-04-02 19:07:21 +08:00
yunion-ci-robot
f33b779c24 Merge pull request #5680 from ioito/automated-cherry-pick-of-#5679-upstream-release-3.1
Automated cherry pick of #5679: fix: typo
2020-04-02 18:54:51 +08:00
yunion-ci-robot
05405def86 Merge pull request #5668 from ioito/automated-cherry-pick-of-#5667-upstream-release-3.1
Automated cherry pick of #5667: fix: 修复更新qcloud sdk引出的不兼容问题
2020-04-02 18:51:50 +08:00
Yousong Zhou
644d1a0056 cloudaccounts: update: make proxy_setting optional 2020-04-02 18:41:10 +08:00
Qu Xuan
5b50b77c13 fix: typo 2020-04-02 18:26:40 +08:00
wanyaoqi
9a836d37b5 host do not set hostname 2020-04-02 18:11:40 +08:00
yunion-ci-robot
cc8ca3656d Merge pull request #5670 from zexi/automated-cherry-pick-of-#5669-upstream-release-3.1
Automated cherry pick of #5669: climc: k8s remove registrysecret create command
2020-04-02 18:09:49 +08:00
Qu Xuan
6a7e1ccaf4 fix: 华为云rds使用自身的存储类型 2020-04-02 17:29:42 +08:00
Zexi Li
2423107c23 climc: k8s remove registrysecret create command 2020-04-02 16:31:18 +08:00
Qu Xuan
f80a0c2a2e fix: 修复更新qcloud sdk引出的不兼容问题 2020-04-02 15:56:51 +08:00
Zexi Li
5c38e6935e Merge pull request #5639 from tb365/automated-cherry-pick-of-#5631-upstream-release-3.1
Automated cherry pick of #5631: elb bugfix
2020-04-02 12:47:42 +08:00
Zexi Li
908c7c2d81 Merge pull request #5664 from swordqiu/automated-cherry-pick-of-#5662-upstream-release-3.1
Automated cherry pick of #5662: fix: disk/nics usage should exclude those pending_deleted
2020-04-02 12:45:43 +08:00
Zexi Li
fd8ee54deb Merge pull request #5657 from yousong/automated-cherry-pick-of-#5652-upstream-release-3.1
Automated cherry pick of #5652: proxysetting: forbid deletion of DIRECT setting
2020-04-02 12:44:05 +08:00
Zexi Li
1b98d99905 Merge pull request #5660 from wanyaoqi/automated-cherry-pick-of-#5659-upstream-release-3.1
Automated cherry pick of #5659: host session use internal endpoint
2020-04-02 12:43:16 +08:00
Qiu Jian
f423eb9011 fix: disk/nics usage should exclude those pending_deleted 2020-04-02 01:53:14 +08:00
tangbin
0ee58ec243 elb bugfix 2020-04-01 20:30:48 +08:00
wanyaoqi
a3318a87c0 host session use internal endpoint 2020-04-01 20:00:59 +08:00
Zexi Li
40bc2e3ae1 Merge pull request #5656 from swordqiu/automated-cherry-pick-of-#5653-upstream-release-3.1
Automated cherry pick of #5653: fix: allow list cloudprovider by default
2020-04-01 18:14:00 +08:00
Yousong Zhou
ef7674af30 proxysetting: validate create/update data 2020-04-01 18:13:00 +08:00
Yousong Zhou
fa8e8e555e apis: proxy: add input validation 2020-04-01 18:13:00 +08:00
Zexi Li
2e167d8599 Merge pull request #5649 from swordqiu/automated-cherry-pick-of-#5648-upstream-release-3.1
Automated cherry pick of #5648: fix: cancel pending usage might not need to update usage
2020-04-01 18:11:08 +08:00
Yousong Zhou
19f4328ed1 cloudaccount: provide proxysetting details 2020-04-01 18:07:48 +08:00
Qiu Jian
62d009f2f8 fix: allow list cloudprovider by default 2020-04-01 17:48:12 +08:00
Yousong Zhou
2718d7bf4e proxysetting: forbid deletion of DIRECT setting 2020-04-01 17:16:13 +08:00
Qiu Jian
007566c4b5 fix: cancel pending usage might not need to update usage 2020-04-01 16:43:49 +08:00
Zexi Li
5bcc2a4298 Merge pull request #5647 from ioito/automated-cherry-pick-of-#5646-upstream-release-3.1
Automated cherry pick of #5646: 修复: 默认存在的bucket状态为ready
2020-04-01 16:41:30 +08:00
Qu Xuan
3913a71f5c 修复: 默认存在的bucket状态为ready 2020-04-01 15:18:58 +08:00
Zexi Li
f4fb2b55a2 Merge pull request #5645 from zexi/automated-cherry-pick-of-#5644-upstream-release-3.1
Automated cherry pick of #5644: monitor: add paused api
2020-04-01 13:45:43 +08:00
Zexi Li
071f919d1e monitor: add paused api 2020-04-01 13:42:59 +08:00
Zexi Li
59309efd8c Merge pull request #5638 from yousong/feature/yousong-multicloud-proxyfunc-3.1
Feature/yousong multicloud proxyfunc 3.1
2020-04-01 10:24:35 +08:00
Zexi Li
7a64637e14 Merge pull request #5641 from swordqiu/automated-cherry-pick-of-#5640-upstream-release-3.1
Automated cherry pick of #5640: fix: changes to request_work_count cause apigateway restart
2020-04-01 10:23:25 +08:00
Qiu Jian
f4baf1761a fix: changes to request_work_count cause apigateway restart 2020-04-01 10:19:33 +08:00
Yousong Zhou
f8dc741763 cloudcommon: proxysetting: make it domainized 2020-03-31 18:59:27 +08:00
Zexi Li
1739d4f805 Merge pull request #5633 from zexi/automated-cherry-pick-of-#5632-upstream-release-3.1
Automated cherry pick of #5632: monitor: support support extra params in alertnotification joint object
2020-03-31 18:36:10 +08:00
Zexi Li
c681805629 monitor: support support extra params in alertnotification joint object 2020-03-31 17:58:13 +08:00
Zexi Li
2f4e7d585e Merge pull request #5630 from zexi/automated-cherry-pick-of-#5629-upstream-release-3.1
Automated cherry pick of #5629: monitor: add alert config helper
2020-03-31 16:45:32 +08:00
Zexi Li
d3c3a201b8 monitor: add alert config helper 2020-03-31 16:43:04 +08:00
Zexi Li
9933db70a3 Merge pull request #5625 from wanyaoqi/automated-cherry-pick-of-#5624-upstream-release-3.1
Automated cherry pick of #5624: - add check disk is enable delete - vm enable detach network on running state - add menu on boot from iso - misc fix
2020-03-31 16:24:51 +08:00
yunion-ci-robot
624acc21f9 Merge pull request #5626 from swordqiu/automated-cherry-pick-of-#5623-upstream-release-3.1
Automated cherry pick of #5623: fix: worker may block by worker_chan
2020-03-31 10:03:44 +08:00
Qiu Jian
f361618f06 fix: worker may block by worker_chan 2020-03-31 09:51:33 +08:00
wanyaoqi
790f9fc1a3 vm online detach network 2020-03-30 21:30:44 +08:00
wanyaoqi
e86909c43a - add check disk is enable delete - vm enable detach network on running state - add menu on boot from iso - misc fix 2020-03-30 21:30:44 +08:00
Zexi Li
9085ee9775 Merge pull request #5620 from swordqiu/automated-cherry-pick-of-#5616-upstream-release-3.1
Automated cherry pick of #5616: fix: increase apigateway default worker count to 32
2020-03-30 19:22:44 +08:00
Qiu Jian
34c7a31106 fix: increase apigateway default worker count to 32 2020-03-30 19:08:11 +08:00
yunion-ci-robot
52bbe4d74e Merge pull request #5618 from zexi/automated-cherry-pick-of-#5617-upstream-release-3.1
Automated cherry pick of #5617: action: add region dns image
2020-03-30 15:10:44 +08:00
Zexi Li
2190de3e77 action: add region dns image 2020-03-30 15:05:55 +08:00
Zexi Li
d58e8f3b67 Merge pull request #5607 from yousong/automated-cherry-pick-of-#5606-upstream-release-3.1
Automated cherry pick of #5606: region: lbagent: move systemd service unit file to system dir
2020-03-28 10:29:33 +08:00
yunion-ci-robot
a431d7ca20 Merge pull request #5612 from swordqiu/automated-cherry-pick-of-#5608-upstream-release-3.1
Automated cherry pick of #5608: fix: allow list loadbalancer cluster by default
2020-03-28 09:47:41 +08:00
Qiu Jian
8fed2fc64b fix: allow list loadbalancer cluster by default 2020-03-28 09:05:28 +08:00
Yousong Zhou
68900b3fab region: lbagent: move systemd service unit file to system dir 2020-03-27 15:32:11 +08:00
Zexi Li
4ddb4e14a5 Merge pull request #5602 from ioito/automated-cherry-pick-of-#5601-upstream-release-3.1
Automated cherry pick of #5601: fix: 修正gcp不支持预付费资源
2020-03-26 20:33:08 +08:00
Qu Xuan
1c9a926247 fix: 修正gcp不支持预付费资源 2020-03-26 20:01:37 +08:00
Zexi Li
0ac45d9ff7 Merge pull request #5591 from yousong/feature/yousong-backport-proxyfunc
Feature/yousong backport proxyfunc
2020-03-26 10:41:11 +08:00
Yousong Zhou
45a4848808 climc: add cloud-account-update-google 2020-03-25 17:34:16 +08:00
Yousong Zhou
0fb6de4d80 cloudaccounts: fix checking update data 2020-03-25 17:34:16 +08:00
Yousong Zhou
1bcd3dcab6 mcclient: cloudaccounts: allow updating proxysetting 2020-03-25 17:34:16 +08:00
Yousong Zhou
291230694d mcclient: add proxysettings manager 2020-03-25 17:33:24 +08:00
Yousong Zhou
140ac46e67 cloudevent: use cloudprovider proxysetting 2020-03-25 17:33:24 +08:00
Yousong Zhou
0e5f5221f0 region: refer to proxySetting 2020-03-25 17:33:24 +08:00
Yousong Zhou
5813d64a7d cloudcommon: proxysetting: referrerMen 2020-03-25 17:33:24 +08:00
Yousong Zhou
6444825331 cloudevent: add proxy.ProxySettingManager 2020-03-25 17:33:24 +08:00
Yousong Zhou
adfad567f6 s3gateway: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
cf7c63be3f region: add cloudaccount.ProxySettingId 2020-03-25 17:33:24 +08:00
Yousong Zhou
1d78192a36 cloudprovider: add TestProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
462b832e1a objectstore: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
06fad05278 objectstore: use ObjectStoreClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
1695947221 esxi: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
4c40e3bf40 esxi: use ESXiClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
4f270a3ff0 openstack: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
6a7382f5be mcclient: add SetHttpTransportProxyFunc() 2020-03-25 17:33:24 +08:00
Yousong Zhou
a7cff31e3c openstack: use OpenstackClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
874699a1d7 zstack: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
c3c5b0b156 zstack: use ZstackClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
22bc479420 zstack: remove sessionID field 2020-03-25 17:33:24 +08:00
Yousong Zhou
64387f83d8 ucloud: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
b4438122f9 ucloud: use UcloudClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
11ee270911 qcloud: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
70b78835d3 qcloud: use QcloudClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
0faa2bfb9c vendor: update github.com/tencentcloud/tencentcloud-sdk-go 2020-03-25 17:33:24 +08:00
Yousong Zhou
991b3bb5cf huawei: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
608a18eed4 huawei: client: add SBaseManager.SetHttpClient() 2020-03-25 17:33:24 +08:00
Yousong Zhou
292ca54153 huawei: use HuaweiClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
a157596973 azure: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
23bc582407 azure: use AzureClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
cfe5b990f9 aws: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
58f6f37891 aws: use AwsClientConfig 2020-03-25 17:33:24 +08:00
Yousong Zhou
5ab5fbdf92 ctyun: use cpcfg.ProxyFunc 2020-03-25 17:33:24 +08:00
Yousong Zhou
374d15b701 ctyun: use CtyunClientConfig 2020-03-25 17:33:23 +08:00
Yousong Zhou
e57dcee3e4 google: use cpcfg.ProxyFunc 2020-03-25 17:33:23 +08:00
Yousong Zhou
01ca954399 google: use GoogleClientConfig 2020-03-25 17:33:23 +08:00
Yousong Zhou
7da2fa556c aliyun: use cpcfg.ProxyFunc 2020-03-25 17:17:29 +08:00
Yousong Zhou
4c50f40771 aliyun clientcfg 2020-03-25 17:17:29 +08:00
Yousong Zhou
85a9d51e58 httputils: add SetClientProxyFunc(client, proxyFunc) 2020-03-25 17:17:29 +08:00
Yousong Zhou
8009857c8a cloudprovider: use ProviderConfig 2020-03-25 17:16:35 +08:00
Yousong Zhou
e2826b1338 cloudcommon: add ProxySetting 2020-03-25 17:15:47 +08:00
Zexi Li
7e88a79a8d Merge pull request #5582 from yousong/automated-cherry-pick-of-#5581-upstream-release-3.1
Automated cherry pick of #5581: webconsole: typo fix accessable -> accessible
2020-03-23 21:14:18 +08:00
Yousong Zhou
51f0ff4d9c httperrors: fix passing "params" argument 2020-03-23 16:41:13 +08:00
Yousong Zhou
bd922dfe14 webconsole: typo fix accessable -> accessible 2020-03-23 16:41:13 +08:00
Zexi Li
096ce97503 Merge pull request #5578 from zexi/automated-cherry-pick-of-#5577-upstream-release-3.1
Automated cherry pick of #5577: climc: k8s storageclass support
2020-03-23 10:53:03 +08:00
Zexi Li
336b8fa6f9 Merge pull request #5570 from yousong/automated-cherry-pick-of-#5569-upstream-release-3.1
Automated cherry pick of #5569: build: cache-aware docker-xxx-build
2020-03-23 10:52:32 +08:00
Zexi Li
499be25fc0 climc: k8s storageclass support 2020-03-23 10:52:07 +08:00
Zexi Li
4ec48d5a66 Merge pull request #5568 from tb365/automated-cherry-pick-of-#5567-upstream-release-3.1
Automated cherry pick of #5567: ctyun bugfix
2020-03-20 19:39:58 +08:00
Zexi Li
b7861f5341 Merge pull request #5572 from wanyaoqi/automated-cherry-pick-of-#5571-upstream-release-3.1
Automated cherry pick of #5571: guest add metadata cpu mode
2020-03-20 19:39:27 +08:00
wanyaoqi
c2a82bd9cd guest add metadata cpu mode
- live migrate if guest cpu mode is qemu, do not check host cpu mode
- disk name generation replace '_' to '-'
2020-03-20 15:10:47 +08:00
Yousong Zhou
ee8b23bdc7 scripts: remove host_find_libraries.sh
Not needed after we switch to using native alpine image
2020-03-20 14:44:51 +08:00
Yousong Zhou
1b3979fb97 build: cache-aware docker-xxx-build 2020-03-20 14:44:51 +08:00
tangbin
26ac56c1a6 ctyun bugfix 2020-03-20 10:30:48 +08:00
Zexi Li
1833456c45 Merge pull request #5556 from rainzm/automated-cherry-pick-of-#5555-upstream-release-3.1
Automated cherry pick of #5555: feat(notify): Compatibility and repair
2020-03-19 10:05:59 +08:00
yunion-ci-robot
50dc428692 Merge pull request #5491 from ioito/automated-cherry-pick-of-#5490-upstream-release-3.1
Automated cherry pick of #5490: fix: class action 统一使用keywords包裹
2020-03-19 08:48:20 +08:00
Rain
d403d6d62f feat(notify): Compatibility and repair 2020-03-18 20:54:18 +08:00
Zexi Li
8fca2c7c8f Merge pull request #5546 from swordqiu/automated-cherry-pick-of-#5545-upstream-release-3.1
Automated cherry pick of #5545: fix: policy fetcher not retry after initial failure
2020-03-18 10:53:12 +08:00
Qu Xuan
5dac5a465b fix: class action 统一使用keywords包裹 2020-03-17 18:44:10 +08:00
Qiu Jian
f3c9ad15da fix: policy fetcher not retry after initial failure 2020-03-17 18:30:29 +08:00
Zexi Li
12040bd5aa Merge pull request #5544 from ioito/automated-cherry-pick-of-#5543-upstream-release-3.1
Automated cherry pick of #5543: fix: 避免dbinstance_sku.get 异常
2020-03-17 17:20:08 +08:00
Qu Xuan
6367d20757 fix: 避免dbinstance_sku.get 异常 2020-03-17 17:04:13 +08:00
Zexi Li
4dbbb2b1b5 Merge pull request #5542 from zexi/automated-cherry-pick-of-#5541-upstream-release-3.1
Automated cherry pick of #5541: monitor: fix meteralert update status
2020-03-17 14:59:32 +08:00
Zexi Li
7a756c5766 monitor: fix meteralert update status 2020-03-17 15:00:45 +08:00
Zexi Li
ce7212a798 Merge pull request #5507 from swordqiu/automated-cherry-pick-of-#5506-upstream-release-3.1
Automated cherry pick of #5506: fix: recode cloudprovider usable filter
2020-03-17 11:39:47 +08:00
yunion-ci-robot
e0c6ea920d Merge pull request #5530 from ioito/automated-cherry-pick-of-#5529-upstream-release-3.1
Automated cherry pick of #5529: fix: 避免重装系统失败后imageId依然发生改变
2020-03-17 08:22:14 +08:00
yunion-ci-robot
892b769d3a Merge pull request #5537 from ioito/automated-cherry-pick-of-#5536-upstream-release-3.1
Automated cherry pick of #5536: fix: 修复谷歌云 cloud-provider-clirc 显示错误问题
2020-03-17 08:13:14 +08:00
Qu Xuan
0f31a7d479 fix: 修复谷歌云 cloud-provider-clirc 显示错误问题 2020-03-16 20:09:43 +08:00
yunion-ci-robot
cafc8dedc7 Merge pull request #5524 from ioito/automated-cherry-pick-of-#5452-upstream-release-3.1
Automated cherry pick of #5452: fix: 优化rds sku同步逻辑
2020-03-16 15:25:14 +08:00
Zexi Li
5f168a76af Merge pull request #5518 from swordqiu/automated-cherry-pick-of-#5517-upstream-release-3.1
Automated cherry pick of #5517: fix: storage details missing capacity fields since 3.1
2020-03-16 13:00:59 +08:00
Zexi Li
985b56353b Merge pull request #5500 from zhaoxiangchun/automated-cherry-pick-of-#5496-upstream-release-3.1
Automated cherry pick of #5496: vmware 宿主机监控信息获取
2020-03-16 12:57:33 +08:00
Qu Xuan
0570476c5c fix: 避免重装系统失败后imageId依然发生改变 2020-03-16 11:29:44 +08:00
Qu Xuan
2d641b4e30 fix: 优化rds sku同步逻辑 2020-03-16 10:33:38 +08:00
yunion-ci-robot
3bc58d2c8e Merge pull request #5520 from ioito/automated-cherry-pick-of-#5519-upstream-release-3.1
Automated cherry pick of #5519: fix: 避免未传递prority参数导致校验未通过
2020-03-16 09:09:13 +08:00
Qu Xuan
4b472cfd30 fix: 避免未传递prority参数导致校验未通过 2020-03-15 13:12:44 +08:00
Qiu Jian
04e79b5140 fix: storage details missing capacity fields since 3.1 2020-03-14 22:02:29 +08:00
yunion-ci-robot
7435c8bc29 Merge pull request #5515 from zexi/automated-cherry-pick-of-#5511-upstream-release-3.1
Automated cherry pick of #5511: scheduler: fix disk allocated not balanced
2020-03-14 17:50:05 +08:00
Zexi Li
8031105ea2 scheduler: fix disk allocated not balanced 2020-03-14 16:51:45 +08:00
Qiu Jian
d7fd2b7d8c fix: recode cloudprovider usable filter 2020-03-14 09:04:32 +08:00
Zexi Li
2f50aae082 Merge pull request #5502 from zexi/automated-cherry-pick-of-#5501-upstream-release-3.1
Automated cherry pick of #5501: auth: check isAuthed if nil
2020-03-13 19:18:18 +08:00
Zexi Li
4ec8b1f523 auth: check isAuthed if nil 2020-03-13 19:19:11 +08:00
zhaoxiangchun
2c97fdaf46 vmware 宿主机监控信息获取 2020-03-13 17:23:35 +08:00
yunion-ci-robot
ed06f6ed84 Merge pull request #5475 from rainzm/automated-cherry-pick-of-#5454-upstream-release-3.1
Automated cherry pick of #5454: fix(glance): Structured subimage info and add 'created_at' field
2020-03-13 15:44:02 +08:00
yunion-ci-robot
6e29509da4 Merge pull request #5486 from wanyaoqi/automated-cherry-pick-of-#5484-upstream-release-3.1
Automated cherry pick of #5484: download handler set no timeout
2020-03-13 14:33:02 +08:00
wanyaoqi
9a3df26dc1 download handler set no timeout 2020-03-13 11:40:18 +08:00
Zexi Li
9b335e2afa Merge pull request #5485 from rainzm/automated-cherry-pick-of-#5479-upstream-release-3.1
Automated cherry pick of #5479: fix(scheduler): Candidater's CloudProvider maybe nil
2020-03-13 11:28:05 +08:00
Rain
8ebb409ef3 fix(scheduler): Candidater's CloudProvider maybe nil
Candidater(Host) in Provider Onecloud doesn't have CloudProvider.
2020-03-13 11:26:42 +08:00
Zexi Li
61757b8e8a Merge pull request #5481 from rainzm/automated-cherry-pick-of-#5480-upstream-release-3.1
Automated cherry pick of #5480: fix(esxi): VlanID '1' is default value
2020-03-13 11:11:18 +08:00
Zexi Li
67b8fa74f3 Merge pull request #5474 from zhaoxiangchun/automated-cherry-pick-of-#5472-upstream-release-3.1
Automated cherry pick of #5472: 修复meteralartbug
2020-03-13 00:44:21 +08:00
Rain
bc72a0c172 fix(esxi): VlanID '1' is default value 2020-03-12 20:58:36 +08:00
yunion-ci-robot
49d73df622 Merge pull request #5469 from zexi/automated-cherry-pick-of-#5458-upstream-release-3.1
Automated cherry pick of #5458: region: baremetal convert host join as k8s node
2020-03-12 20:51:15 +08:00
Rain
a9c1a9c5a4 fix(glance): Structured subimage info and add 'created_at' field 2020-03-12 19:27:10 +08:00
yunion-ci-robot
653eaf019e Merge pull request #5471 from wanyaoqi/automated-cherry-pick-of-#5470-upstream-release-3.1
Automated cherry pick of #5470: region misc fix
2020-03-12 17:34:15 +08:00
zhaoxiangchun
df443d9593 修复meteralartbug
1.设置消费日提醒时,提示名称重复。
2.查询信息时MeterAlertDetails的一些字段没有回显。
2020-03-12 17:29:27 +08:00
wanyaoqi
51216bdc80 region misc fix 2020-03-12 16:49:22 +08:00
Zexi Li
3c7917425b region: baremetal convert host join as k8s node 2020-03-12 16:32:20 +08:00
Zexi Li
0dd7604d6a Merge pull request #5462 from bistuzx/automated-cherry-pick-of-#5459-upstream-release-3.1
Automated cherry pick of #5459: add bucket connection test
2020-03-12 16:20:31 +08:00
张旭
eb72141e52 change climc bucket options import 2020-03-12 12:27:08 +08:00
张旭
235aba14f4 add bucket connection test 2020-03-12 12:27:08 +08:00
Zexi Li
e81dc6c36d Merge pull request #5466 from rainzm/feat/vendor_3.1
feat: Update Vendor for release/3.1
2020-03-12 12:07:26 +08:00
Rain
5edd07e805 feat: Update Vendor for release/3.1 2020-03-12 11:53:22 +08:00
yunion-ci-robot
7139672f63 Merge pull request #5446 from rainzm/automated-cherry-pick-of-#5444-upstream-release-3.1
Automated cherry pick of #5444: fix(esxi): UnitNumber 7 is unavailable for scsi controller
2020-03-12 02:51:02 +08:00
yunion-ci-robot
926cabd695 Merge pull request #5441 from rainzm/automated-cherry-pick-of-#5439-upstream-release-3.1
Automated cherry pick of #5439: fix(esxi): Fix bugs when using network with vlanID
2020-03-12 02:46:02 +08:00
yunion-ci-robot
e28cb2edcc Merge pull request #5456 from wanyaoqi/automated-cherry-pick-of-#5455-upstream-release-3.1
Automated cherry pick of #5455: fix structure host storage output: storagecache_id
2020-03-12 02:45:01 +08:00
wanyaoqi
bf9c9251f9 fix structure host storage output: storagecache_id 2020-03-11 18:09:02 +08:00
Zexi Li
4fc93016dd Merge pull request #5448 from zexi/automated-cherry-pick-of-#5447-upstream-release-3.1
Automated cherry pick of #5447: region: host update storage set enabled
2020-03-11 15:58:23 +08:00
Zexi Li
3b29ecb087 region: host update storage set enabled 2020-03-11 15:58:32 +08:00
Rain
6b6c965299 fix(esxi): UnitNumber 7 is unavailable for scsi controller
By default, the virtual SCSI controller is assigned to virtual device node (z:7),
so that device node is unavailable for hard disks or other devices.
https://docs.vmware.com/en/VMware-vSphere/6.7/com.vmware.vsphere.vm_admin.doc/GUID-5872D173-A076-42FE-8D0B-9DB0EB0E7362.html
2020-03-11 15:19:16 +08:00
Rain
bdb9929628 fix(esxi): Fix bugs when using network with vlanID 2020-03-11 11:03:15 +08:00
yunion-ci-robot
4a04405b5d Merge pull request #5438 from zexi/automated-cherry-pick-of-#5437-upstream-release-3.1
Automated cherry pick of #5437: climc: add server and host ssh terminal util
2020-03-10 18:50:58 +08:00
Zexi Li
ff27373bb2 climc: add server and host ssh terminal util 2020-03-10 18:24:37 +08:00
Zexi Li
9bad7f3485 Merge pull request #5420 from swordqiu/automated-cherry-pick-of-#5419-upstream-release-3.1
Automated cherry pick of #5419: fix: fail to find esxi admin vnic, use vnic with default IPv4 route
2020-03-10 14:45:05 +08:00
yunion-ci-robot
0eb4468c79 Merge pull request #5430 from ioito/automated-cherry-pick-of-#5429-upstream-release-3.1
Automated cherry pick of #5429: fix: typo for sku sync
2020-03-10 11:15:58 +08:00
yunion-ci-robot
d8b614bbdf Merge pull request #5428 from rainzm/automated-cherry-pick-of-#5424-upstream-release-3.1
Automated cherry pick of #5424: fix(esxi): Add two account with same account name
2020-03-10 11:01:59 +08:00
Qu Xuan
776438f682 fix: typo for sku sync 2020-03-09 19:58:42 +08:00
Rain
321e54def0 fix(esxi): Add two account with same account name 2020-03-09 17:59:25 +08:00
Qiu Jian
0f0bb35170 fix: fail to find esxi admin vnic, use vnic with default IPv4 route 2020-03-09 15:57:37 +08:00
Zexi Li
7b0ceddd6b Merge pull request #5415 from zexi/automated-cherry-pick-of-#5414-upstream-release-3.1
Automated cherry pick of #5414: opslog: notes use text column
2020-03-09 12:36:39 +08:00
Zexi Li
e2fafe2b46 Merge pull request #5399 from swordqiu/automated-cherry-pick-of-#5398-upstream-release-3.1
Automated cherry pick of #5398: fix: not check domain quota if non_default_domain_project is off
2020-03-09 12:31:49 +08:00
Zexi Li
f396592d2e opslog: notes use text column 2020-03-09 12:30:56 +08:00
Zexi Li
18fca8d90b Merge pull request #5404 from swordqiu/automated-cherry-pick-of-#5403-upstream-release-3.1
Automated cherry pick of #5403: fix: cloudprovider performEnable should also enable its cloudaccount
2020-03-09 12:30:27 +08:00
Zexi Li
7c85b20733 Merge pull request #5409 from swordqiu/automated-cherry-pick-of-#5408-upstream-release-3.1
Automated cherry pick of #5408: feature: climc docker image add vim
2020-03-09 09:27:53 +08:00
Qiu Jian
48c0c536fc feature: climc docker image add vim 2020-03-08 22:47:05 +08:00
Qiu Jian
188662cd51 fix: cloudprovider performEnable should also enable its cloudaccount 2020-03-08 16:06:26 +08:00
Qiu Jian
dd01e8cf49 fix: not check domain quota if non_default_domain_project is off 2020-03-07 18:16:47 +08:00
Zexi Li
ca7f5495fe Merge pull request #5393 from swordqiu/automated-cherry-pick-of-#5392-upstream-release-3.1
Automated cherry pick of #5392: fix: scoped resource should override FetchOwnerId
2020-03-07 15:51:52 +08:00
Qiu Jian
34b7d1e9c3 fix: scoped resource should override FetchOwnerId 2020-03-07 15:38:46 +08:00
Zexi Li
13a3e1c778 Merge pull request #5389 from swordqiu/automated-cherry-pick-of-#5388-upstream-release-3.1
Automated cherry pick of #5388: fix: keystone prefers internal endpoint type
2020-03-07 11:07:29 +08:00
Qiu Jian
603b3f8b8e fix: keystone prefers internal endpoint type 2020-03-06 21:45:21 +08:00
yunion-ci-robot
2c1e0a4fe2 Merge pull request #5383 from rainzm/automated-cherry-pick-of-#5378-upstream-release-3.1
Automated cherry pick of #5378: fix: Add 'scope=system' and 'system' for Caches when querying from Keystone.
2020-03-06 19:19:52 +08:00
Zexi Li
f9a9f92003 Merge pull request #5373 from swordqiu/automated-cherry-pick-of-#5372-upstream-release-3.1
Automated cherry pick of #5372: fix: no scope shcedtag should be visible to all
2020-03-06 18:32:28 +08:00
yunion-ci-robot
8d1c0ba9c9 Merge pull request #5382 from tb365/automated-cherry-pick-of-#5379-upstream-release-3.1
Automated cherry pick of #5379: huawei reset password bugfix
2020-03-06 18:10:50 +08:00
Rain
845ba285fc fix: Add 'scope=system' and 'system' for Caches when querying from Keystone.
1. Query 'scope=system' and 'system=true' is neccessary when fetching all users
   or groups from Keystone.
   Without these, users and groups in other domains (non-caller domains),
   as well as system-level users, cannot be detected.
2. Query 'scope=system' is neccessary when fetching all project from Keystone.
2020-03-06 17:15:23 +08:00
TangBin
72f1e58833 ctyun region name fix 2020-03-06 16:52:53 +08:00
TangBin
1cc1ff7213 huawei reset password bugfix 2020-03-06 16:52:53 +08:00
Qiu Jian
6c15c80abb fix: no scope shcedtag should be visible to all 2020-03-06 15:23:27 +08:00
Yousong Zhou
7869e3d134 Merge pull request #5371 from yousong/automated-cherry-pick-of-#5226-upstream-release-3.1
Automated cherry pick of #5226: lbbackend: fix nil ref when getting details
2020-03-06 13:38:43 +08:00
Yousong Zhou
2e0efc6c4a lbbackend: fix nil ref when getting details
Return arguments of lbbackend.getVpc() can be both nil

	[E 200224 10:13:18 httperrors.HTTPError(httperrors.go:53)] Send error {"fields":["runtime error: invalid memory address or nil pointer dereference"],"id":"Internal server error: {0}"}
	...
	panic(0x27da0c0, 0x57f4ff0)
		/usr/local/go/src/runtime/panic.go:522 +0x1b5
	yunion.io/x/onecloud/pkg/compute/models.(*SLoadbalancerBackend).GetExtraDetails(0xc0002af680, 0x33cde20, 0xc0010e61e0, 0x34246c0, 0xc008893de0, 0x341d940, 0xc012fe69d0, 0x1, 0x0, 0x0, ...)
		/data/git/yunion-build/work/go/src/yunion.io/x/onecloud/pkg/compute/models/loadbalancerbackends.go:314 +0x37c
	reflect.Value.call(0x2d87a00, 0xc0002af680, 0x8a13, 0x2db0aa8, 0x4, 0xc0044ad680, 0x4, 0x4, 0x2bd5d60, 0xc002a29cf0, ...)
		/usr/local/go/src/reflect/value.go:447 +0x461
	reflect.Value.Call(0x2d87a00, 0xc0002af680, 0x8a13, 0xc0044ad680, 0x4, 0x4, 0x2d87a00, 0xc0002af680, 0x16)
		/usr/local/go/src/reflect/value.go:308 +0xa4
	yunion.io/x/onecloud/pkg/cloudcommon/db.callFunc(0x2d87a00, 0xc0002af680, 0x8a13, 0xc000951688, 0x4, 0x4, 0xc0002af680, 0x8a13, 0x2dc0527, 0xb, ...)
		/data/git/yunion-build/work/go/src/yunion.io/x/onecloud/pkg/cloudcommon/db/caller.go:78 +0x397
	...
	[I 200224 10:13:18 appsrv.(*Application).ServeHTTP(appsrv.go:237)] MfQCvNyik-obRBzFjFZy5ARfXcE= 500 5c1d82 GET /loadbalancerbackends?backend_group=Yunion-Tools&details=true&limit=20&offset=0 (10.40.156.64:57606) 57.90ms

Fixes 76d974f6d ("feature: api -> response struct")
2020-03-06 13:36:06 +08:00
Zexi Li
1d440b57ce Merge pull request #5362 from swordqiu/automated-cherry-pick-of-#5361-upstream-release-3.1
Automated cherry pick of #5361: fix: allow project do user-list, group-list, returns current project user and group
2020-03-06 13:03:32 +08:00
Zexi Li
e3c564bd56 Merge pull request #5367 from rainzm/automated-cherry-pick-of-#5366-upstream-release-3.1
Automated cherry pick of #5366: fix/notify: Fix the resend mechanism
2020-03-06 12:46:02 +08:00
yunion-ci-robot
45e04c4d50 Merge pull request #5364 from wanyaoqi/automated-cherry-pick-of-#5363-upstream-release-3.1
Automated cherry pick of #5363: fix disk billing type on guest is postpaid
2020-03-06 12:29:50 +08:00
Rain
ee0f6de3b0 fix/notify: Fix the resend mechanism 2020-03-06 11:12:34 +08:00
wanyaoqi
608be69260 fix disk billing type on guest is postpaid 2020-03-05 20:33:19 +08:00
Qiu Jian
88fa459aac fix: allow project do user-list, group-list, returns current project user and group 2020-03-05 20:09:58 +08:00
yunion-ci-robot
b4bb5d902f Merge pull request #5360 from wanyaoqi/automated-cherry-pick-of-#5359-upstream-release-3.1
Automated cherry pick of #5359: enable network list filter by host show vpc networks
2020-03-05 20:00:49 +08:00
wanyaoqi
7f467ab3a7 enable network list filter by host show vpc networks 2020-03-05 19:33:17 +08:00
yunion-ci-robot
5c1714d11d Merge pull request #5357 from rainzm/automated-cherry-pick-of-#5353-upstream-release-3.1
Automated cherry pick of #5353: feature(notify): Add query and return value for contact UPDATE interface
2020-03-05 19:03:51 +08:00
Rain
5f36cbb31c feature(notify): Add query and return value for contact UPDATE interface
1. Add same return value with contact GET interface when updating
2. Add pull params for query to pull subcontact by mobile number.
   For example, pull user_id from dingtalk throught user's mobile
   number.
3. Add corresponding feature based on above for climc.
4. UserCache will try FetchByName if there is no id matched user when
   fetching users from KeyStone.
2020-03-05 17:10:04 +08:00
Zexi Li
850544ee4d Merge pull request #5352 from rainzm/automated-cherry-pick-of-#5330-upstream-release-3.1
Automated cherry pick of #5330: feat: Add useridByMobile and accessToken cache for feishu
2020-03-05 14:18:38 +08:00
Rain
7ff8935abc feat: Add useridByMobile and accessToken cache for feishu 2020-03-05 14:12:39 +08:00
Zexi Li
874cf21b00 Merge pull request #5346 from swordqiu/hotfix/qj-update-autogen-struct-json-fieldname-3.1
fix: update autogen struct json field name for release/3.1
2020-03-05 14:07:41 +08:00
yunion-ci-robot
231fefed1f Merge pull request #5350 from zexi/automated-cherry-pick-of-#5349-upstream-release-3.1
Automated cherry pick of #5349: monitor: fix alert update not work
2020-03-04 22:54:20 +08:00
Qiu Jian
5dd591f1bb update autogen struct with comment lines 2020-03-04 21:19:54 +08:00
Zexi Li
ab32057ab1 monitor: fix alert update not work 2020-03-04 21:17:27 +08:00
yunion-ci-robot
84fec885e8 Merge pull request #5334 from yousong/automated-cherry-pick-of-#5333-upstream-release-3.1
Automated cherry pick of #5333: hostman: default ovn options from environment
2020-03-04 20:57:11 +08:00
yunion-ci-robot
8057b95ac2 Merge pull request #5344 from ioito/automated-cherry-pick-of-#5343-upstream-release-3.1
Automated cherry pick of #5343: fix: 支持aws rds sync
2020-03-04 20:50:09 +08:00
Qiu Jian
9adac58590 fix: update autogen struct json field name for release/3.1 2020-03-04 20:43:26 +08:00
Qu Xuan
f409fca66b fix: 支持aws rds sync 2020-03-04 20:10:22 +08:00
yunion-ci-robot
edd7136d3e Merge pull request #5341 from zexi/automated-cherry-pick-of-#5340-upstream-release-3.1
Automated cherry pick of #5340: alert notification use joint model
2020-03-04 19:59:09 +08:00
Zexi Li
b1c80010cc Merge pull request #5332 from yousong/automated-cherry-pick-of-#5331-upstream-release-3.1
Automated cherry pick of #5331: build: docker-centos-build: run as root
2020-03-04 19:17:02 +08:00
Zexi Li
5ff255d622 alert notification use joint model 2020-03-04 19:17:00 +08:00
Zexi Li
fb531b4d68 Merge pull request #5338 from swordqiu/automated-cherry-pick-of-#5336-upstream-release-3.1
Automated cherry pick of #5336: fix: keystone user password history check should skip system account
2020-03-04 19:16:27 +08:00
Qiu Jian
03cd5dc63a fix: keystone user password history check should skip system account 2020-03-04 18:44:04 +08:00
Yousong Zhou
fa48381bd7 hostman: default ovn options from environment 2020-03-04 16:43:33 +08:00
Yousong Zhou
38a6decc25 build: docker-centos-build: run as root
so that output file ownership can be properly changed

The Dockerfile was moved to a separate repo for maintenance
2020-03-04 15:10:20 +08:00
Zexi Li
627495d200 Merge pull request #5329 from zexi/automated-cherry-pick-of-#5328-upstream-release-3.1
Automated cherry pick of #5328: fix: docker_push uncomment build bin
2020-03-03 16:18:09 +08:00
Zexi Li
37b823a43c fix: docker_push uncomment build bin 2020-03-03 16:19:29 +08:00
Zexi Li
112eb0d7ae Merge pull request #5325 from swordqiu/automated-cherry-pick-of-#5324-upstream-release-3.1
Automated cherry pick of #5324: fix: clean up pending usage no matter whether object upload is success
2020-03-03 13:14:18 +08:00
yunion-ci-robot
bee314a0e6 Merge pull request #5316 from ioito/automated-cherry-pick-of-#5315-upstream-release-3.1
Automated cherry pick of #5315: fix: 避免旧套餐下架zone信息未知,导致同步rds异常
2020-03-03 02:23:44 +08:00
Qiu Jian
60ef016f42 fix: clean up pending usage no matter whether object upload is success 2020-03-03 02:12:49 +08:00
yunion-ci-robot
da235de896 Merge pull request #5323 from zexi/automated-cherry-pick-of-#5322-upstream-release-3.1
Automated cherry pick of #5322: add monitor service
2020-03-02 20:51:43 +08:00
Zexi Li
68a425ebd5 add monitor service 2020-03-02 20:05:50 +08:00
yunion-ci-robot
15f6b94bec Merge pull request #5321 from yousong/automated-cherry-pick-of-#5320-upstream-release-3.1
Automated cherry pick of #5320: build: docker: chown _output dir to current user:group
2020-03-02 17:47:38 +08:00
Yousong Zhou
d8dd372cb0 build: docker: chown _output dir to current user:group 2020-03-02 17:36:26 +08:00
Qu Xuan
e14a596d9f fix: 避免旧套餐下架zone信息未知,导致同步rds异常 2020-03-02 17:09:13 +08:00
yunion-ci-robot
a0ab40dbb8 Merge pull request #5313 from wanyaoqi/automated-cherry-pick-of-#5312-upstream-release-3.1
Automated cherry pick of #5312: fix get remote address because of request is proxyed by k8s
2020-02-29 00:15:30 +08:00
wanyaoqi
75e49ac8c6 fix get remote address because of request is proxyed by k8s 2020-02-28 22:27:16 +08:00
yunion-ci-robot
590ec32860 Merge pull request #5273 from zhaoxiangchun/automated-cherry-pick-of-#5268-upstream-release-3.1
Automated cherry pick of #5268: 谷歌云multicloud监控
2020-02-28 22:24:29 +08:00
yunion-ci-robot
57fd313b43 Merge pull request #5308 from ioito/automated-cherry-pick-of-#5307-upstream-release-3.1
Automated cherry pick of #5307: 修复aliyun没有权限获取余额问题
2020-02-28 22:05:29 +08:00
yunion-ci-robot
86e4df54d9 Merge pull request #5287 from wanyaoqi/automated-cherry-pick-of-#5286-upstream-release-3.1
Automated cherry pick of #5286: host register use default vpc
2020-02-28 21:55:21 +08:00
yunion-ci-robot
a9f60a7b1a Merge pull request #5306 from yousong/automated-cherry-pick-of-#5305-upstream-release-3.1
Automated cherry pick of #5305: build: github: build vpcagent image
2020-02-28 21:51:28 +08:00
yunion-ci-robot
087de62171 Merge pull request #5278 from ioito/automated-cherry-pick-of-#5277-upstream-release-3.1
Automated cherry pick of #5277: fix: 新加gcp region 翻译
2020-02-28 20:51:21 +08:00
Qu Xuan
8577cb096e 修复aliyun没有权限获取余额问题 2020-02-28 19:55:33 +08:00
Yousong Zhou
2110057bac hostman: disable services on host system when running in container 2020-02-28 18:22:29 +08:00
Yousong Zhou
3c09ce17d0 build: github: build vpcagent image 2020-02-28 18:22:29 +08:00
Zexi Li
dc870afaed Merge pull request #5304 from yousong/automated-cherry-pick-of-#5303-upstream-release-3.1
Automated cherry pick of #5303: build: github: add back ceph devel deps for baremetal-agent
2020-02-28 16:13:30 +08:00
Yousong Zhou
fcb8bba00c build: github: add back ceph devel deps for baremetal-agent 2020-02-28 16:10:28 +08:00
yunion-ci-robot
7996a02a80 Merge pull request #5302 from yousong/automated-cherry-pick-of-#5301-upstream-release-3.1
Automated cherry pick of #5301: build: rename docker-build to docker-centos-build
2020-02-28 15:52:30 +08:00
Yousong Zhou
3349dc46c5 build: github: build host with docker-alpine-build 2020-02-28 15:28:04 +08:00
Yousong Zhou
a85fd307d3 build: add docker-alpine-build 2020-02-28 15:28:04 +08:00
Yousong Zhou
37f1906f72 build: rename docker-build to docker-centos-build 2020-02-28 15:28:04 +08:00
yunion-ci-robot
d5096ad4ee Merge pull request #5296 from tb365/automated-cherry-pick-of-#5295-upstream-release-3.1
Automated cherry pick of #5295: vpc list add param vpc_usable
2020-02-28 14:22:21 +08:00
yunion-ci-robot
24da237790 Merge pull request #5291 from ioito/automated-cherry-pick-of-#5290-upstream-release-3.1
Automated cherry pick of #5290: 添加azure region city信息
2020-02-28 13:17:19 +08:00
TangBin
d34b00ddc4 vpc list add param vpc_usable 2020-02-28 12:10:54 +08:00
Zexi Li
2f47d93215 Merge pull request #5267 from yousong/automated-cherry-pick-of-#5266-upstream-release-3.1
Automated cherry pick of #5266: vpcagent: resolve ovn db address at args validation time
2020-02-28 11:58:13 +08:00
Yousong Zhou
1bbf79528b build: host: adjust build method
- new host-base for native alpine utilities
 - build host with native alpine toolchain
2020-02-28 11:43:12 +08:00
Yousong Zhou
0c0c4fc94d build: build vpcagent container 2020-02-28 11:43:12 +08:00
Yousong Zhou
01de80ed09 hostman: use "uname -m" for for fetch processor type
"uname -p" command from native busybox, coreutils may return "unknown".
CentOS coreutils has a patch fallback to using uts.machine if sysinfo
syscall is not available

Use "uname -m" for maximum compatibility
2020-02-28 11:43:12 +08:00
Yousong Zhou
3861bb6bc1 hostman: work with ovn-controller already in container 2020-02-28 11:43:12 +08:00
Yousong Zhou
681fee1317 sysutils: use remote executor for hostnamectl as far as possible
So that hostnamectl can be omitted in host-base container image
2020-02-28 11:43:12 +08:00
Yousong Zhou
2496a12833 vpcagent: resolve ovn db address at args validation time
Until we find a reliable way to get k8s svc dns name
2020-02-28 11:43:12 +08:00
Yousong Zhou
c76062406d hostman: resolve ovn db address before setting it into ovsdb 2020-02-28 11:43:12 +08:00
Yousong Zhou
df94352e00 ovsutils: add NormalizeDbHost 2020-02-28 11:43:12 +08:00
Qu Xuan
5b9c7ba9f2 添加azure region city信息 2020-02-28 11:37:00 +08:00
yunion-ci-robot
e8dc05084a Merge pull request #5276 from ioito/automated-cherry-pick-of-#5275-upstream-release-3.1
Automated cherry pick of #5275: fix: 谷歌云建议关机下调整配置,部分linux开机也调整不了配置
2020-02-28 09:34:19 +08:00
wanyaoqi
0774a2ded0 host register use default vpc 2020-02-27 23:29:28 +08:00
yunion-ci-robot
50421b06b9 Merge pull request #5270 from tb365/automated-cherry-pick-of-#5269-upstream-release-3.1
Automated cherry pick of #5269: huawei secgroup default vpc id fix
2020-02-27 20:57:18 +08:00
TangBin
7e7825a681 huawei secgroup default vpc id fix 2020-02-27 19:32:10 +08:00
Qu Xuan
45b8a7afd9 fix: 新加gcp region 翻译 2020-02-27 18:54:47 +08:00
Qu Xuan
4ec1fc58d9 fix: 谷歌云建议关机下调整配置,部分linux开机也调整不了配置 2020-02-27 16:53:10 +08:00
zhaoxiangchun
69564365b9 谷歌云multicloud监控
monitor.go文件中GetMonitorData函数:
 1)首先组装参数信息
 2)通过external_id获取相关id信息,根据restAPI文档中的resource格式拼装完成monitoring相关的resource信息
 3)然后通过monitorList函数获取相关的监控信息

更新go.mod google.golang.org所依赖的google.golang.org/api版本
2020-02-27 15:48:52 +08:00
yunion-ci-robot
54caca2d04 Merge pull request #5262 from tb365/automated-cherry-pick-of-#5261-upstream-release-3.1
Automated cherry pick of #5261: ctyun get vm by id fix
2020-02-27 07:19:13 +08:00
yunion-ci-robot
ce3241d046 Merge pull request #5265 from rainzm/automated-cherry-pick-of-#5263-upstream-release-3.1
Automated cherry pick of #5263: fix(esxiagent): SSHKey was not unmarshalled correctly
2020-02-27 07:11:14 +08:00
yunion-ci-robot
40773180fa Merge pull request #5239 from wanyaoqi/automated-cherry-pick-of-#5238-upstream-release-3.1
Automated cherry pick of #5238: fix host init set reserve memory
2020-02-26 23:13:13 +08:00
yunion-ci-robot
32411bf2ec Merge pull request #5237 from tb365/automated-cherry-pick-of-#5236-upstream-release-3.1
Automated cherry pick of #5236: huawei & ctyun security group sync fix
2020-02-26 21:04:13 +08:00
wanyaoqi
c99265e743 makesure /etc/ceph created before connect 2020-02-26 20:44:31 +08:00
Rain
2d4cff4ef1 fix(esxiagent): SSHKey was not unmarshalled correctly 2020-02-26 20:12:47 +08:00
TangBin
bb90b5e8a1 ctyun vpc create fix 2020-02-26 17:40:56 +08:00
TangBin
b1c4bc276f ctyun eip charge type fix 2020-02-26 17:40:56 +08:00
TangBin
1923e36740 ctyun attach disk fix 2020-02-26 17:40:56 +08:00
TangBin
7bec5e6f7e ctyun get vm by id fix 2020-02-26 17:40:56 +08:00
yunion-ci-robot
b40be2608b Merge pull request #5232 from ioito/automated-cherry-pick-of-#5231-upstream-release-3.1
Automated cherry pick of #5231: fix: 添加磁盘回滚snapshot日志
2020-02-26 16:00:15 +08:00
Zexi Li
46d2f6efb7 Merge pull request #5254 from swordqiu/automated-cherry-pick-of-#5252-upstream-release-3.1
Automated cherry pick of #5252: fix: use globalEndpointType as default endpoint type
2020-02-26 10:37:37 +08:00
yunion-ci-robot
d55f1db7ff Merge pull request #5243 from ioito/automated-cherry-pick-of-#5242-upstream-release-3.1
Automated cherry pick of #5242: fix: 避免根磁盘小于镜像大小导致创建失败
2020-02-26 10:20:13 +08:00
yunion-ci-robot
0bcc19d7c1 Merge pull request #5248 from ioito/automated-cherry-pick-of-#5247-upstream-release-3.1
Automated cherry pick of #5247: fix: 返回azure api 错误信息
2020-02-25 21:07:14 +08:00
Qiu Jian
b395dc8cee fix: use globalEndpointType as default endpoint type 2020-02-25 20:47:15 +08:00
Qu Xuan
c908e0c19a fix: 返回azure api 错误信息 2020-02-25 19:31:07 +08:00
Qu Xuan
ce5a95607f fix: 避免根磁盘小于镜像大小导致创建失败 2020-02-25 15:38:19 +08:00
wanyaoqi
d4ba5ca52e fix host register get network filter: add server_type baremetal 2020-02-25 11:25:46 +08:00
wanyaoqi
92129824c0 fix guest network get desc 2020-02-25 11:25:46 +08:00
wanyaoqi
7326b1fb0d fix host init set reserve memory 2020-02-25 11:25:46 +08:00
yunion-ci-robot
1b5756fe1c Merge pull request #5227 from rainzm/automated-cherry-pick-of-#5186-upstream-release-3.1
Automated cherry pick of #5186: feature(notify): Validate config
2020-02-25 08:21:09 +08:00
TangBin
08f8ce1f7c huawei & ctyun security group sync fix 2020-02-24 20:15:48 +08:00
Qu Xuan
2c5234b97e fix: 添加磁盘回滚snapshot日志 2020-02-24 16:07:28 +08:00
Rain
37049bd5f3 feature(notify): Validate config 2020-02-24 14:10:41 +08:00
yunion-ci-robot
177ba6cf2c Merge pull request #5225 from tb365/automated-cherry-pick-of-#5224-upstream-release-3.1
Automated cherry pick of #5224: network query by ip fix
2020-02-23 18:52:06 +08:00
yunion-ci-robot
bf2bb9878f Merge pull request #5223 from wanyaoqi/automated-cherry-pick-of-#5222-upstream-release-3.1
Automated cherry pick of #5222: region misc fix:
2020-02-21 23:38:00 +08:00
TangBin
530b2a1422 network query by ip fix 2020-02-21 19:00:27 +08:00
wanyaoqi
1eba8b8a7e region misc fix:
- guest postpaid expire support set expire time
- list instance snapshot sub snapshot return size
2020-02-21 17:45:46 +08:00
Zexi Li
4829e0d285 Merge pull request #5212 from swordqiu/automated-cherry-pick-of-#5208-upstream-release-3.1
Automated cherry pick of #5208: fix: reset paging limit to 2048 from 20
2020-02-21 16:46:05 +08:00
Zexi Li
b29d6d4f4e Merge pull request #5218 from rainzm/automated-cherry-pick-of-#5217-upstream-release-3.1
Automated cherry pick of #5217: fix: Storage filter not work for Esxi
2020-02-21 16:44:38 +08:00
yunion-ci-robot
d41c3bfea7 Merge pull request #5207 from tb365/automated-cherry-pick-of-#5199-upstream-release-3.1
Automated cherry pick of #5199: cloud region city list add default limit 2048
2020-02-21 15:53:41 +08:00
yunion-ci-robot
907058464a Merge pull request #5197 from ioito/automated-cherry-pick-of-#5196-upstream-release-3.1
Automated cherry pick of #5196: fix: gcp win os not support change config when vm running
2020-02-21 15:44:33 +08:00
Rain
c727334bc4 fix: Storage filter not work for Esxi
1. SESXiGuestDriver.DoScheduleStorageFilter should return true.
2. ESXi's SHost.GetStorageSizeMB should return the capacity of all the
storage belonging to it.
2020-02-21 15:13:18 +08:00
yunion-ci-robot
b7e2c462cb Merge pull request #5214 from ioito/automated-cherry-pick-of-#5213-upstream-release-3.1
Automated cherry pick of #5213: fix: 添加gcp region中文翻译
2020-02-20 21:17:29 +08:00
yunion-ci-robot
1efc0fe07b Merge pull request #5200 from ioito/automated-cherry-pick-of-#5198-upstream-release-3.1
Automated cherry pick of #5198: fix: 修复azure坐标问题,添加新的azure region城市信息
2020-02-20 21:02:31 +08:00
yunion-ci-robot
9d1b407c40 Merge pull request #5192 from ioito/automated-cherry-pick-of-#5191-upstream-release-3.1
Automated cherry pick of #5191: fix: add aliyun new region info
2020-02-20 18:21:29 +08:00
Qu Xuan
67c2435f4f fix: 添加gcp region中文翻译 2020-02-20 17:38:25 +08:00
yunion-ci-robot
c11c79ef71 Merge pull request #5188 from ioito/automated-cherry-pick-of-#5187-upstream-release-3.1
Automated cherry pick of #5187: fix: 填充gcp disk_format字段
2020-02-20 15:30:30 +08:00
Qiu Jian
c245013e59 fix: reset paging limit to 2048 from 20 2020-02-20 15:22:07 +08:00
TangBin
83b4916646 huawei cloud create bugfix 2020-02-20 15:03:54 +08:00
TangBin
f6d1ea7b25 cloud region city list add default limit 2048 2020-02-20 15:03:54 +08:00
Qu Xuan
c988fd1b1f fix: 修复azure坐标问题,添加新的azure region城市信息 2020-02-20 14:55:16 +08:00
Qu Xuan
f6df6d34e0 fix: gcp win os not support change config when vm running 2020-02-20 12:00:06 +08:00
Qu Xuan
44183902f7 fix: add aliyun new region info 2020-02-20 11:07:17 +08:00
Qu Xuan
64fda24e76 fix: 填充gcp disk_format字段 2020-02-20 10:45:43 +08:00
yunion-ci-robot
0701512da9 Merge pull request #5185 from tb365/automated-cherry-pick-of-#5181-upstream-release-3.1
Automated cherry pick of #5181: aws listener sync fix
2020-02-19 19:18:28 +08:00
tangbin
71499e7e1b huawei http listener sync fix 2020-02-19 18:48:30 +08:00
tangbin
6f6cf7cd64 aws rebuild root fix 2020-02-19 18:48:30 +08:00
tangbin
8f175ec326 aws listener sync fix 2020-02-19 18:48:30 +08:00
yunion-ci-robot
c0c26c7c40 Merge pull request #5180 from rainzm/automated-cherry-pick-of-#5178-upstream-release-3.1
Automated cherry pick of #5178: fix(esxi): No distinction between ordinary scsi and pvscsi when creating disks
2020-02-19 17:51:29 +08:00
Rain
42cd5b1435 fix(esxi): No distinction between ordinary scsi and pvscsi when creating disks
parascsi 是 vmware 中一种高性能的 scsi 控制器。

在此之前,scsi 只包括 "lsilogic", "lsilogicsas", "buslogic"; 而别名为 pvscsi
的 parascsi 没有被包含进来;并且,一个 pci controller只能挂一个 scsi controller,
这会导致如果在一个拥有 pvscsi 的机器上添加普通scsi驱动类型的磁盘,就会替换驱动;
反之亦然。这会导致驱动的 key 不是我们指定的key,并且在添加磁盘的时候替换驱动的
类型有些随意。再者,我们的驱动类型的选择其实并没有暴露给前端。

所以,在寻找相应的controller时,将 parascsi 也纳入 scsi 类型。
尽量避免在创建磁盘的时候做硬件的改动,所以在创建磁盘的时候不区分 scsi
还是 pvscsi,如果两种 controller 均没有,就按照请求的类型创建一个。

此外,在 CloneVM 的时候,如果支持,优先使用 parascsi。
2020-02-19 16:59:57 +08:00
yunion-ci-robot
4fafb8ae75 Merge pull request #5150 from tb365/automated-cherry-pick-of-#5145-upstream-release-3.1
Automated cherry pick of #5145: qcloud elb sync
2020-02-19 16:08:28 +08:00
Yousong Zhou
8349dcbba3 Merge pull request #5177 from swordqiu/automated-cherry-pick-of-#5173-upstream-release-3.1
Automated cherry pick of #5173: fix: sync cloud provider should change its cloud account's sync_status
2020-02-19 16:02:46 +08:00
yunion-ci-robot
85a792d2b1 Merge pull request #5161 from rainzm/automated-cherry-pick-of-#5097-upstream-release-3.1
Automated cherry pick of #5097: feature: Specify cloud provider when creating vm
2020-02-19 14:50:28 +08:00
yunion-ci-robot
71fee70283 Merge pull request #5166 from tb365/automated-cherry-pick-of-#5162-upstream-release-3.1
Automated cherry pick of #5162: huawei elb backend vpc validate fix
2020-02-19 13:43:28 +08:00
yunion-ci-robot
456c5fb50e Merge pull request #5168 from ioito/automated-cherry-pick-of-#5167-upstream-release-3.1
Automated cherry pick of #5167: fix: 避免将虚拟机ip同步到弹性网卡
2020-02-19 12:37:28 +08:00
yunion-ci-robot
b706356ba9 Merge pull request #5160 from yousong/automated-cherry-pick-of-#5159-upstream-release-3.1
Automated cherry pick of #5159: region: lbagent: deploy: use 'public' endpoint type
2020-02-19 12:04:27 +08:00
Qiu Jian
ed2bba3dd5 fix: sync cloud provider should change its cloud account's sync_status 2020-02-19 12:02:42 +08:00
Zexi Li
b6e701a6b2 Merge pull request #5158 from swordqiu/automated-cherry-pick-of-#5156-upstream-release-3.1
Automated cherry pick of #5156: fix: add climc helper scripts into docker images
2020-02-19 02:32:58 +08:00
Zexi Li
c21636b521 Merge pull request #5155 from swordqiu/automated-cherry-pick-of-#5151-upstream-release-3.1
Automated cherry pick of #5151: fix: 1. adjust default response header timer to 30 seconds 2. set default paging limit to 20
2020-02-19 02:30:10 +08:00
Yousong Zhou
2e0f424c73 lbagent: fix config for sticky session cookie
- account for user specific cookie name for insert mode
 - dont tamper cache instructions from backend server for server mode
2020-02-18 20:55:10 +08:00
Yousong Zhou
a2f30806cf region: lbagent: deploy: use 'public' endpoint type 2020-02-18 20:55:10 +08:00
Qu Xuan
0c0b4b43aa fix: 避免将虚拟机ip同步到弹性网卡 2020-02-18 15:38:12 +08:00
yunion-ci-robot
209bee4181 Merge pull request #5139 from ioito/automated-cherry-pick-of-#5138-upstream-release-3.1
Automated cherry pick of #5138: fix: 避免未过滤掉同一个network底下的guest
2020-02-18 14:46:39 +08:00
tangbin
ba265a7b83 huawei elb backend vpc validate fix 2020-02-18 14:21:47 +08:00
yunion-ci-robot
1a8f8dcb93 Merge pull request #5135 from zhaoxiangchun/automated-cherry-pick-of-#5132-upstream-release-3.1
Automated cherry pick of #5132: zstack监控功能
2020-02-18 12:06:45 +08:00
Rain
2a01c86428 feature: Specify cloud provider when creating vm
Specifying the eip is equivalent to specifying the cloudprovider when
creating vm.
2020-02-18 11:44:27 +08:00
Qiu Jian
dc75d93414 fix: add climc helper scripts into docker images 2020-02-18 10:17:31 +08:00
yunion-ci-robot
fe44564bf7 Merge pull request #5137 from yousong/automated-cherry-pick-of-#5136-upstream-release-3.1
Automated cherry pick of #5136: regiondrivers: kvm: dummy impl for RequestDeleteVpc
2020-02-18 09:45:38 +08:00
yunion-ci-robot
8cd23304ae Merge pull request #5144 from wanyaoqi/automated-cherry-pick-of-#5143-upstream-release-3.1
Automated cherry pick of #5143: check scsi driver on add disk
2020-02-18 09:41:40 +08:00
Qiu Jian
4b8e13f171 fix: 1. adjust default response header timer to 30 seconds 2. set default paging limit to 20 2020-02-18 08:55:58 +08:00
yunion-ci-robot
b6739ba7e8 Merge pull request #5131 from tb365/automated-cherry-pick-of-#5130-upstream-release-3.1
Automated cherry pick of #5130: huawei sync fix
2020-02-18 08:15:41 +08:00
TangBin
3db7b0c962 qcloud elb sync 2020-02-17 22:33:23 +08:00
wanyaoqi
0d6480723d check scsi driver on add disk 2020-02-17 22:00:07 +08:00
yunion-ci-robot
9a91bf244c Merge pull request #5129 from tb365/automated-cherry-pick-of-#5128-upstream-release-3.1
Automated cherry pick of #5128: huawei userdata fix
2020-02-17 21:54:36 +08:00
Qu Xuan
b1a641ca4d fix: 避免未过滤掉同一个network底下的guest 2020-02-17 20:51:43 +08:00
Yousong Zhou
c65e1e0855 regiondrivers: kvm: dummy impl for RequestDeleteVpc
Regression since 4a6a4c594a ("feature:
google云操作支持")

	Feb 17 15:53:12 titan-10-168-222-196 region[20940]: [I 200217 15:53:12 appsrv.(*Application).ServeHTTP(appsrv.go:237)] Ao9tyX8XY4DXa3tBiUyXgPm_ipc= 200 f7a73c DELETE /vpcs/vpc1 (10.168.222.196:46354) 723.91ms
	Feb 17 15:53:13 titan-10-168-222-196 region[20940]: [E 200217 15:53:13 tasks.(*VpcDeleteTask).taskFailed(vpc_delete_task.go:41)] vpc delete task fail: RequestDeleteVpc: Not implement RequestDeleteVpc
	Feb 17 15:53:13 titan-10-168-222-196 region[20940]: [I 200217 15:53:13 taskman.(*STask).SetStageFailed(tasks.go:636)] XXX TASK VpcDeleteTask failed: RequestDeleteVpc: Not implement RequestDeleteVpc on stage OnDeleteVpcComplete
	Feb 17 15:53:13 titan-10-168-222-196 region[20940]: [I 200217 15:53:13 taskman.(*STask).NotifyParentTaskComplete(tasks.go:648)] notify_parent_task_complete: VpcDeleteTask params {"__failed_reason":"RequestDeleteVpc: Not implement RequestDeleteVpc","__request_context":{"request_id":"f7a73c","service_name":"compute_v2","trace":{"debug":true,"duration":0,"id":"0","kind":"SERVER","local_endpoint":{"port":0,"service_name":"compute_v2"},"name":"delete","remote_endpoint":{"addr":"10.168.222.196","port":46354,"service_name":"(unknown_service)"},"shared":false,"tags":{"resource":"vpcs"},"timestamp":"2020-02-17T07:53:12.052219Z","trace_id":"5cf3e014"}},"__stages":[{"complete_at":"2020-02-17T15:53:12Z","name":"on_init"},{"complete_at":"2020-02-17T15:53:13Z","name":"OnDeleteVpcComplete"}]}
2020-02-17 16:22:17 +08:00
zhaoxiangchun
d8fc57b217 zstack监控功能
monitor.go中GetMonitorData函数通过传入的参数拼装请求参数,然后调用zstack.go中的getMonitor(),通过GET请求,获取相应的指标监控数据
2020-02-17 12:03:17 +08:00
tangbin
f9a47d94c7 ctyun custom image create bugfix 2020-02-15 17:33:55 +08:00
tangbin
ac2c3697bf ctyun sync fix 2020-02-15 17:33:55 +08:00
tangbin
b1048baef3 huawei sync fix 2020-02-15 17:33:55 +08:00
tangbin
bfc1f0125f huawei userdata fix 2020-02-15 12:56:43 +08:00
yunion-ci-robot
4b6d0107b0 Merge pull request #5127 from ioito/automated-cherry-pick-of-#5126-upstream-release-3.1
Automated cherry pick of #5126: fix: 添加host标签返回值
2020-02-15 07:58:06 +08:00
yunion-ci-robot
1948c12012 Merge pull request #5116 from tb365/automated-cherry-pick-of-#5115-upstream-release-3.1
Automated cherry pick of #5115: aws userdata bugfix
2020-02-15 00:05:06 +08:00
Qu Xuan
6345086c5b fix: 添加host标签返回值 2020-02-14 20:46:55 +08:00
tangbin
08d412669d aws userdata bugfix 2020-02-14 19:36:13 +08:00
yunion-ci-robot
c85a8d354e Merge pull request #5125 from ioito/automated-cherry-pick-of-#5124-upstream-release-3.1
Automated cherry pick of #5124: fix: disks_info typo
2020-02-14 18:22:05 +08:00
Qu Xuan
03be58f39a fix: disks_info typo 2020-02-14 17:51:58 +08:00
yunion-ci-robot
60cb619043 Merge pull request #5123 from rainzm/automated-cherry-pick-of-#5121-upstream-release-3.1
Automated cherry pick of #5121: fix(esxiagent): Delete image backup file after saving to glance instead of before
2020-02-14 17:42:05 +08:00
Rain
91c39cf8cd fix(esxiagent): Delete image backup file after saving to glance instead of before 2020-02-14 17:17:06 +08:00
yunion-ci-robot
f73ac4844f Merge pull request #5118 from ioito/automated-cherry-pick-of-#5117-upstream-release-3.1
Automated cherry pick of #5117: fix: 谷歌新加region翻译
2020-02-14 16:12:05 +08:00
Qu Xuan
e681f66aad fix: 谷歌新加region翻译 2020-02-14 14:44:22 +08:00
yunion-ci-robot
d7bf41e173 Merge pull request #5110 from rainzm/automated-cherry-pick-of-#5106-upstream-release-3.1
Automated cherry pick of #5106: fix(notify): Set some default template
2020-02-14 12:20:06 +08:00
yunion-ci-robot
ea3247eaba Merge pull request #5112 from zexi/automated-cherry-pick-of-#5111-upstream-release-3.1
Automated cherry pick of #5111: region: server list by host sn
2020-02-14 12:09:04 +08:00
Zexi Li
d91dbf5f47 region: server list by host sn 2020-02-13 21:09:06 +08:00
Rain
52129c544b fix(notify): Set some default template 2020-02-13 16:54:28 +08:00
yunion-ci-robot
a3b3e9c627 Merge pull request #5089 from rainzm/automated-cherry-pick-of-#5087-upstream-release-3.1
Automated cherry pick of #5087: fix(esxi): Create one if no suitable driver exists when creating disk
2020-02-13 14:38:04 +08:00
yunion-ci-robot
04c73b189d Merge pull request #5084 from tb365/automated-cherry-pick-of-#5083-upstream-release-3.1
Automated cherry pick of #5083: fix ctyun os version
2020-02-13 12:16:03 +08:00
tangbin
f75dbefbfd ctyun vm create fix 2020-02-13 11:44:21 +08:00
tangbin
a2e4490613 add more log 2020-02-13 11:44:21 +08:00
tangbin
2c32832946 eip dissociate bugfixC 2020-02-13 11:44:21 +08:00
tangbin
18239e30cc fix create sys disk snapshot 2020-02-13 11:44:20 +08:00
tangbin
77d6e24ae7 fix ctyun os version 2020-02-13 11:44:20 +08:00
yunion-ci-robot
d5f6473d57 Merge pull request #5096 from bistuzx/automated-cherry-pick-of-#5092-upstream-release-3.1
Automated cherry pick of #5092: update account bucket options
2020-02-13 03:48:04 +08:00
yunion-ci-robot
f7d927cbdd Merge pull request #5086 from zexi/automated-cherry-pick-of-#5085-upstream-release-3.1
Automated cherry pick of #5085: webconsole: use base64 encode connect_params
2020-02-12 22:14:02 +08:00
张旭
56a3d9c05d update account bucket options 2020-02-12 18:29:40 +08:00
Rain
a4b76036c5 fix(esxi): Create one if no suitable driver when creating disk 2020-02-12 16:05:26 +08:00
yunion-ci-robot
9e20cce793 Merge pull request #5064 from zhaoxiangchun/automated-cherry-pick-of-#5061-upstream-release-3.1
Automated cherry pick of #5061: multicloud的vmware监控功能
2020-02-12 15:22:01 +08:00
Zexi Li
f7b3b0c1a0 webconsole: use base64 encode connect_params 2020-02-12 11:44:41 +08:00
yunion-ci-robot
6404e3c2a0 Merge pull request #5082 from rainzm/automated-cherry-pick-of-#5081-upstream-release-3.1
Automated cherry pick of #5081: fix: Fix the bug introduced by pr #4921
2020-02-11 19:16:00 +08:00
yunion-ci-robot
9a1b040933 Merge pull request #5078 from ioito/automated-cherry-pick-of-#5077-upstream-release-3.1
Automated cherry pick of #5077: fix: 修复gcp出方向规则同步问题
2020-02-11 17:42:00 +08:00
yunion-ci-robot
b5468ca840 Merge pull request #5073 from ioito/automated-cherry-pick-of-#5072-upstream-release-3.1
Automated cherry pick of #5072: fix: 忽略无权限的资源标签
2020-02-11 17:22:58 +08:00
Rain
77bbb2bda8 fix: Fix the bug introduced by pr #4921
1. The display problem of contact and notification in notify.
2. The display problem of snat's network info.
2020-02-11 16:51:09 +08:00
zhaoxiangchun
562498da68 multicloud的vmware监控功能
monitor.go中GetMonitorData()函数获取监控数据
2020-02-11 00:44:48 +08:00
Qu Xuan
b91c19bcb5 fix: 修复gcp出方向规则同步问题 2020-02-10 18:47:54 +08:00
Qu Xuan
e48c4d0bb2 fix: 忽略无权限的资源标签 2020-02-10 16:44:06 +08:00
Zexi Li
8c3872000a Merge pull request #5051 from ioito/automated-cherry-pick-of-#5050-upstream-release-3.1
Automated cherry pick of #5050: 统一 details -> isList
2020-02-10 11:12:37 +08:00
yunion-ci-robot
7fde85b83f Merge pull request #5053 from swordqiu/automated-cherry-pick-of-#5052-upstream-release-3.1
Automated cherry pick of #5052: fix: progressively update image size while uploading
2020-02-10 10:34:00 +08:00
yunion-ci-robot
262096d99d Merge pull request #5071 from swordqiu/automated-cherry-pick-of-#5065-upstream-release-3.1
Automated cherry pick of #5065: fix: allow empty domain for windows deployment
2020-02-10 10:32:57 +08:00
Qiu Jian
60ba83b40f fix: progressively update image size while uploading 2020-02-10 09:29:37 +08:00
Qiu Jian
5834ec297e fix: allow empty domain for windows deployment 2020-02-10 09:25:16 +08:00
yunion-ci-robot
8701c6172e Merge pull request #5055 from swordqiu/automated-cherry-pick-of-#5054-upstream-release-3.1
Automated cherry pick of #5054: fix: createdAt should not be synced when update
2020-02-09 22:08:59 +08:00
Qiu Jian
d912e29772 fix: createdAt should not be synced when update 2020-02-08 21:29:06 +08:00
Qu Xuan
bf0adeb0e2 统一 details -> isList 2020-02-07 18:03:18 +08:00
yunion-ci-robot
8857a6281e Merge pull request #5049 from ioito/automated-cherry-pick-of-#5048-upstream-release-3.1
Automated cherry pick of #5048: fix: google e2不支持本地盘
2020-02-07 16:42:54 +08:00
Qu Xuan
5537648dc7 fix: google e2不支持本地盘 2020-02-07 16:08:28 +08:00
yunion-ci-robot
158750373b Merge pull request #5045 from ioito/automated-cherry-pick-of-#5044-upstream-release-3.1
Automated cherry pick of #5044: fix: guest创建兼容keypair参数
2020-02-07 16:05:50 +08:00
Qu Xuan
8a719ffe1f fix: guest创建兼容keypair参数 2020-02-07 15:09:48 +08:00
Zexi Li
c1278bf088 Merge pull request #5043 from wanyaoqi/automated-cherry-pick-of-#5042-upstream-release-3.1
Automated cherry pick of #5042: bm register support update baremetal
2020-02-07 13:04:21 +08:00
Zexi Li
86d6a224cd Merge pull request #5030 from swordqiu/automated-cherry-pick-of-#5026-upstream-release-3.1
Automated cherry pick of #5026: fix: api gateway rpc handler redudant response
2020-02-07 13:03:37 +08:00
wanyaoqi
6b6a15e6b8 bm register support update baremetal 2020-02-07 09:27:02 +08:00
yunion-ci-robot
4a2b10e842 Merge pull request #5039 from ioito/automated-cherry-pick-of-#5038-upstream-release-3.1
Automated cherry pick of #5038: fix: 避免因tenantcache未缓存tenant导致创建云账号失败
2020-02-07 04:54:51 +08:00
yunion-ci-robot
38557f8bcd Merge pull request #5037 from tb365/automated-cherry-pick-of-#5032-upstream-release-3.1
Automated cherry pick of #5032: aws create with eip fix
2020-02-07 04:49:50 +08:00
Qu Xuan
8739393e52 fix: 避免因tenantcache未缓存tenant导致创建云账号失败 2020-02-06 18:29:15 +08:00
tangbin
fdad1303bc aws create with eip fix 2020-02-06 17:58:18 +08:00
yunion-ci-robot
bd2d11f964 Merge pull request #5031 from ioito/automated-cherry-pick-of-#5029-upstream-release-3.1
Automated cherry pick of #5029: fix: 修复gcp安全组同步问题
2020-02-06 17:51:52 +08:00
Qu Xuan
01c962f1c6 fix: 修复gcp安全组同步问题 2020-02-06 17:03:36 +08:00
Qiu Jian
d5ec862e26 fix: api gateway rpc handler redudant response 2020-02-06 17:03:13 +08:00
yunion-ci-robot
1e04ddfe5e Merge pull request #5022 from ioito/automated-cherry-pick-of-#5021-upstream-release-3.1
Automated cherry pick of #5021: fix: 避免因大小写导致linux未注入默认用户
2020-02-06 13:50:52 +08:00
Qu Xuan
67a6f9687d fix: 避免因大小写导致linux未注入默认用户 2020-02-06 12:02:12 +08:00
yunion-ci-robot
9bfb6c0c8e Merge pull request #5020 from swordqiu/automated-cherry-pick-of-#5014-upstream-release-3.1
Automated cherry pick of #5014: fix: support empty dns domain
2020-02-06 09:41:48 +08:00
yunion-ci-robot
b4fff49236 Merge pull request #5013 from swordqiu/automated-cherry-pick-of-#5012-upstream-release-3.1
Automated cherry pick of #5012: fix: network update error caused by vpc feature
2020-02-06 09:34:48 +08:00
Qiu Jian
8536166426 fix: support empty dns domain 2020-02-06 03:28:26 +08:00
Qiu Jian
4bd9051ae4 fix: network update error caused by vpc feature 2020-02-06 03:11:26 +08:00
yunion-ci-robot
74c272cfae Merge pull request #5011 from yousong/automated-cherry-pick-of-#5010-upstream-release-3.1
Automated cherry pick of #5010: vpcagent: ignore external stub guestnetworks
2020-02-06 01:50:48 +08:00
Yousong Zhou
38aed0ca4a vpcagent: ignore external stub guestnetworks 2020-02-05 11:38:57 +08:00
yunion-ci-robot
06eea75674 Merge pull request #5009 from yousong/automated-cherry-pick-of-#5008-upstream-release-3.1
Automated cherry pick of #5008: hostman: fix hostinfo init interrupted by ovn chassis setup
2020-02-05 10:22:47 +08:00
Yousong Zhou
ad73aa590a hostman: fix hostinfo init interrupted by ovn chassis setup
Causing sysinfo.SSystemInfo not initialized

[E 200205 09:45:49 timeutils2.AddTimeout.func1.1(timeutils.go:31)] runtime error: invalid memory address or nil pointer dereference
goroutine 405 [running]:
runtime/debug.Stack(0x551210, 0xc0000de1c0, 0x0)
        /opt/hostedtoolcache/go/1.12.16/x64/src/runtime/debug/stack.go:24 +0x9d
runtime/debug.PrintStack()
        /opt/hostedtoolcache/go/1.12.16/x64/src/runtime/debug/stack.go:16 +0x22
yunion.io/x/onecloud/pkg/util/timeutils2.AddTimeout.func1.1()
        /home/runner/work/onecloud/onecloud/pkg/util/timeutils2/timeutils.go:32 +0x96
panic(0x1b208e0, 0x3bd1880)
        /opt/hostedtoolcache/go/1.12.16/x64/src/runtime/panic.go:522 +0x1b5
yunion.io/x/onecloud/pkg/hostman/hostinfo.(*SHostInfo).updateHostRecord(0xc0009a8a80, 0xc000aff3b0, 0x24)
        /home/runner/work/onecloud/onecloud/pkg/hostman/hostinfo/hostinfo.go:866 +0xbba
yunion.io/x/onecloud/pkg/hostman/hostinfo.(*SHostInfo).getHostInfo(0xc0009a8a80, 0xc00099a510, 0x24)
        /home/runner/work/onecloud/onecloud/pkg/hostman/hostinfo/hostinfo.go:782 +0x37d
yunion.io/x/onecloud/pkg/hostman/hostinfo.(*SHostInfo).getZoneInfo(0xc0009a8a80, 0xc00099a4b0, 0x24, 0x0)
        /home/runner/work/onecloud/onecloud/pkg/hostman/hostinfo/hostinfo.go:760 +0x55c
yunion.io/x/onecloud/pkg/hostman/hostinfo.(*SHostInfo).onGetWireId(0xc0009a8a80, 0xc000aff2f0, 0x24)
        /home/runner/work/onecloud/onecloud/pkg/hostman/hostinfo/hostinfo.go:734 +0x16a
yunion.io/x/onecloud/pkg/hostman/hostinfo.(*SHostInfo).fetchAccessNetworkInfo(0xc0009a8a80)
        /home/runner/work/onecloud/onecloud/pkg/hostman/hostinfo/hostinfo.go:719 +0x3ee
yunion.io/x/onecloud/pkg/hostman/hostinfo.(*SHostInfo).register(...)
        /home/runner/work/onecloud/onecloud/pkg/hostman/hostinfo/hostinfo.go:662
yunion.io/x/onecloud/pkg/util/timeutils2.AddTimeout.func1(0x77359400, 0xc000925520)
        /home/runner/work/onecloud/onecloud/pkg/util/timeutils2/timeutils.go:37 +0x6b
created by yunion.io/x/onecloud/pkg/util/timeutils2.AddTimeout
        /home/runner/work/onecloud/onecloud/pkg/util/timeutils2/timeutils.go:28 +0x49
2020-02-05 10:08:32 +08:00
yunion-ci-robot
4322981be4 Merge pull request #5006 from yousong/automated-cherry-pick-of-#5005-upstream-release-3.1
Automated cherry pick of #5005: hostman: fix detection of ovn controller version
2020-02-05 02:17:48 +08:00
yunion-ci-robot
655d3632fa Merge pull request #5004 from zhaoxiangchun/automated-cherry-pick-of-#4996-upstream-release-3.1
Automated cherry pick of #4996: azure的主机监控信息的获取
2020-02-05 02:10:45 +08:00
Yousong Zhou
cd34e0db95 hostman: skip setting up ovn chassis when env support is not ready 2020-02-04 17:36:13 +08:00
Yousong Zhou
aae5d0dc33 hostman: fix detection of ovn controller version 2020-02-04 17:36:13 +08:00
Zexi Li
51b2f4d3af Merge pull request #5003 from ioito/automated-cherry-pick-of-#4921-upstream-release-3.1
Automated cherry pick of #4921: feature: api -> response struct
2020-02-04 15:55:51 +08:00
zhaoxiangchun
f7987dbf61 modify files by github comments 2020-02-04 10:26:10 +08:00
zhaoxiangchun
f1282345f1 azure的主机监控信息的获取
monitor.go中的GetMonitorData函数完成参数的组装,查询获取监控信息
2020-02-04 10:26:10 +08:00
Qu Xuan
9046117e00 feature: api -> response struct 2020-02-03 18:16:36 +08:00
2179 changed files with 307918 additions and 154265 deletions

View File

@@ -1,38 +0,0 @@
FROM centos:7
MAINTAINER Yousong Zhou <zhouyousong@yunion.cn>
RUN true \
&& yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
&& yum install -y git wget \
&& yum groupinstall -y "Development Tools" \
&& : ceph for cmd/host \
&& rpm --import 'https://download.ceph.com/keys/release.asc' \
&& yum install -y https://download.ceph.com/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm \
&& yum install -y libcephfs-devel librbd-devel librados-devel \
&& yum clean all
WORKDIR /opt
RUN true \
&& 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}"
RUN useradd -c "OneCloud Builder" --create-home --home-dir /home/build --shell /bin/bash 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

@@ -5,10 +5,10 @@ version: 2
jobs:
check:
docker:
- image: yunionio/onecloud-ci:v1.0.3
- image: yunionio/centos-build:1.0-1
environment:
ONECLOUD_CI_BUILD: "1"
working_directory: /home/build/go/src/yunion.io/x/onecloud
working_directory: /root/go/onecloud
steps:
- checkout
- run:
@@ -18,7 +18,7 @@ jobs:
requires:
- check
docker:
- image: yunionio/onecloud-ci:v1.0.2
- image: yunionio/centos-build:1.0-1
environment:
ONECLOUD_CI_BUILD: "1"
@@ -26,14 +26,14 @@ jobs:
#### expecting it in the form of
#### /go/src/github.com/circleci/go-tool
#### /go/src/bitbucket.org/circleci/go-tool
working_directory: /home/build/go/src/yunion.io/x/onecloud
working_directory: /root/go/onecloud
parallelism: 4
steps:
- checkout
- restore_cache:
key: onecloud-build-cache-{{ checksum "go.mod" }}-{{ checksum "Makefile" }}
paths:
- /home/build/.cache/go-build
- /root/.cache/go-build
- run:
command: |
targets="$(circleci tests glob "cmd/*" | grep -v cmd/host-image | circleci tests split)"
@@ -43,7 +43,7 @@ jobs:
- save_cache:
key: onecloud-build-cache-{{ checksum "go.mod" }}-{{ checksum "Makefile" }}
paths:
- /home/build/.cache/go-build
- /root/.cache/go-build
- store_artifacts:
path: _output/
@@ -51,16 +51,16 @@ jobs:
requires:
- check
docker:
- image: yunionio/onecloud-ci:v1.0.2
- image: yunionio/centos-build:1.0-1
environment:
GO111MODULE: "on"
working_directory: /home/build/go/src/yunion.io/x/onecloud
working_directory: /root/go/onecloud
steps:
- checkout
- restore_cache:
key: onecloud-test-cache-{{ checksum "go.mod" }}-{{ checksum "Makefile" }}
paths:
- /home/build/.cache/go-build
- /root/.cache/go-build
- run:
name: unit_test
command: |
@@ -68,7 +68,7 @@ jobs:
- save_cache:
key: onecloud-test-cache-{{ checksum "go.mod" }}-{{ checksum "Makefile" }}
paths:
- /home/build/.cache/go-build
- /root/.cache/go-build
workflows:
version: 2

View File

@@ -29,17 +29,17 @@ jobs:
- name: Build
run: |
sudo apt-get update
sudo apt-get install librados-dev librbd-dev
sudo apt-get install librados-dev librbd-dev # baremetal-agent needs this
make cmd/apigateway cmd/climc cmd/keystone
make cmd/logger cmd/region cmd/scheduler cmd/webconsole
make cmd/yunionconf cmd/glance cmd/torrent cmd/s3gateway
make cmd/ansibleserver cmd/cloudnet cmd/notify
make cmd/host && ./scripts/bundle_libraries.sh _output/bin/bundles/host _output/bin/host && ./scripts/host_find_libraries.sh _output/bin/bundles/host
make cmd/host-deployer && ./scripts/bundle_libraries.sh _output/bin/bundles/host-deployer _output/bin/host-deployer
make cmd/baremetal-agent && ./scripts/bundle_libraries.sh _output/bin/bundles/baremetal-agent _output/bin/baremetal-agent
make cmd/cloudevent cmd/devtool
make cmd/*cli
make cmd/esxi-agent
make docker-alpine-build F='-j4 cmd/host cmd/vpcagent cmd/region-dns'
- name: Image baremetal-agent
uses: elgohr/Publish-Docker-Github-Action@master
@@ -61,6 +61,16 @@ jobs:
snapshot: true
dockerfile: build/docker/Dockerfile.esxi-agent
- name: Image vpcagent
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: registry.cn-beijing.aliyuncs.com/yunionio/vpcagent
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
registry: registry.cn-beijing.aliyuncs.com
snapshot: true
dockerfile: build/docker/Dockerfile.vpcagent
- name: Image climc
uses: elgohr/Publish-Docker-Github-Action@master
with:
@@ -210,3 +220,13 @@ jobs:
registry: registry.cn-beijing.aliyuncs.com
snapshot: true
dockerfile: build/docker/Dockerfile.devtool
- name: Image region DNS
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: registry.cn-beijing.aliyuncs.com/yunionio/region-dns
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
registry: registry.cn-beijing.aliyuncs.com
snapshot: true
dockerfile: build/docker/Dockerfile.region-dns

View File

@@ -192,43 +192,77 @@ mod:
go mod vendor -v
DOCKER_BUILD_IMAGE_VERSION?=latest
DOCKER_BUILD_IMAGE_VERSION?=1.0-1
define dockerBuildCmd
define dockerCentOSBuildCmd
set -o xtrace
set -o errexit
set -o pipefail
cd /home/build/onecloud
cd /root/onecloud
export GOFLAGS=-mod=vendor
make $(1)
chown -R $(shell id -u):$(shell id -g) _output
endef
docker-build: export dockerBuildCmd:=$(call dockerBuildCmd,$(F))
docker-build:
echo "$$dockerBuildCmd"
docker-centos-build: export dockerCentOSBuildCmd:=$(call dockerCentOSBuildCmd,$(F))
docker-centos-build:
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"
--volume $(CURDIR):/root/onecloud \
--volume $(CURDIR)/_output/_cache:/root/.cache \
registry.cn-beijing.aliyuncs.com/yunionio/centos-build:$(DOCKER_BUILD_IMAGE_VERSION) \
/bin/bash -c "$$dockerCentOSBuildCmd"
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
docker-centos-build-stop:
docker-centos stop --time 0 onecloud-ci-build || true
.PHONY: docker-build
.PHONY: docker-build-stop
.PHONY: docker-centos-build
.PHONY: docker-centos-build-stop
define dockerAlpineBuildCmd
set -o xtrace
set -o errexit
set -o pipefail
cd /root/go/src/yunion.io/x/onecloud
export GOFLAGS=-mod=vendor
make $(1)
chown -R $(shell id -u):$(shell id -g) _output
endef
docker-alpine-build: export dockerAlpineBuildCmd:=$(call dockerAlpineBuildCmd,$(F))
docker-alpine-build:
docker rm --force onecloud-docker-alpine-build &>/dev/null || true
docker run --rm \
--name onecloud-docker-alpine-build \
-v $(CURDIR):/root/go/src/yunion.io/x/onecloud \
-v $(CURDIR)/_output/alpine-build:/root/go/src/yunion.io/x/onecloud/_output \
-v $(CURDIR)/_output/alpine-build/_cache:/root/.cache \
registry.cn-beijing.aliyuncs.com/yunionio/alpine-build:1.0-1 \
/bin/sh -c "$$dockerAlpineBuildCmd"
ls -lh _output/alpine-build/bin
docker-alpine-build-stop:
docker stop --time 0 onecloud-docker-alpine-build || true
.PHONY: docker-alpine-build
.PHONY: docker-alpine-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
make docker-centos-build F='-j4'
make docker-centos-build F='-j4 cmd/region cmd/climc'
make docker-centos-build-stop
make docker-alpine-build F='-j4'
make docker-alpine-build F='-j4 cmd/host cmd/host-deployer'
make docker-alpine-build-stop
Tidy up go modules and vendor directory

View File

@@ -0,0 +1,42 @@
#!/bin/bash
set -e
pushd $(dirname $BASH_SOURCE) > /dev/null
CUR_DIR=$(pwd -P)
popd > /dev/null
ACCOUNT=$1
if [ -z "$ACCOUNT" ]; then
echo "Usage: $0 <cloud-acount-id-or-name>"
exit 1
fi
ACCOUNT_ID=$(climc cloud-account-show $ACCOUNT | grep -w " id " | awk '{print $4}')
ACCOUNT_NAME=$(climc cloud-account-show $ACCOUNT | grep -w " name " | awk '{print $4}')
if [ -z "$ACCOUNT_ID" ]; then
echo "Cloud account $ACCOUNT not found"
exit 1
fi
echo "Ready to clean cloud account $ACCOUNT_NAME($ACCOUNT_ID)..."
echo "1. Disable cloud account $ACCOUNT_NAME($ACCOUNT_ID) ..."
climc cloud-account-disable $ACCOUNT_ID
echo "2. Clean all providers ..."
for provider_id in $(climc cloud-provider-list --account $ACCOUNT_ID --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
echo "### to clean cloud provider $provider_id ..."
$CUR_DIR/clean_provider.sh $provider_id
done
echo "3. Delete cloud account ..."
climc cloud-account-delete $ACCOUNT_ID

View File

@@ -0,0 +1,27 @@
#/bin/bash
set -e
EIP=$1
if [ -z "$EIP" ]; then
echo "Usage: $0 <eip_id_or_name>"
exit 1
fi
EIP_NAME=$(climc eip-show $EIP | grep -w " name " | awk '{print $4}')
EIP_ID=$(climc eip-show $EIP | grep -w " id " | awk '{print $4}')
if [ -z "$EIP_ID" ]; then
echo "Cannot find eip $EIP_ID"
exit 1
fi
echo "To clean eip $EIP_NAME($EIP_ID)..."
clean_eip() {
local EID=$1
climc eip-purge $EID
}
clean_eip $EIP_ID

View File

@@ -0,0 +1,80 @@
#!/bin/bash
set -e
HOST=$1
if [ -z "$HOST" ]; then
echo "Usage: $0 <host_id_or_name>"
exit 1
fi
error_exit() {
echo "Error: $1"
exit 1
}
HOSTID=$(climc host-show $HOST | grep -w " id " | awk '{print $4}')
HOSTNAME=$(climc host-show $HOST | grep -w " name " | awk '{print $4}')
if [ -z "$HOSTNAME" ]; then
error_exit "Cannot find host $HOST"
fi
if [ -z "$HOSTID" ]; then
error_exit "Cannot find host $HOST"
fi
echo "Ready to purge host $HOSTNAME($HOSTID)..."
echo "1. Disable $HOSTNAME($HOSTID)"
if ! climc host-disable $HOSTID > /dev/null; then
error_exit "Fail to disable $HOST"
fi
echo "2. Clean servers on $HOSTNAME($HOSTID)"
for i in $(climc server-list --host $HOSTID --admin --limit 2048 --system | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
climc server-update --delete enable $i > /dev/null
climc server-purge $i > /dev/null
done
for i in $(climc server-list --host $HOSTID --admin --limit 2048 --pending-delete --system | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
climc server-purge $i > /dev/null
done
echo "3. Clean disks on $HOSTNAME($HOSTID)"
for storageid in $(climc host-storage-list --host $HOSTID --show-emulated | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $4}')
do
STORAGENAME=$(climc storage-show $storageid | grep -w " name " | awk '{print $4}')
STORAGE_TYPE=$(climc storage-show $storageid | grep -w " storage_type " | awk '{print $4}')
if [ "$STORAGE_TYPE" == "local" ]; then
for diskid in $(climc disk-list --admin --system --details --search $storageid --limit 2048 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
climc disk-purge $diskid > /dev/null
done
for diskid in $(climc disk-list --admin --system --details --search $storageid --pending-delete --limit 2048 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
climc disk-purge $diskid > /dev/null
done
fi
done
echo "4. Remove host $HOSTNAME($HOSTID)"
BAREMETAL=$(climc host-show $HOSTID | grep -w " is_baremetal " | awk '{print $4}')
HOSTTYPE=$(climc host-show $HOSTID | grep -w " host_type " | awk '{print $4}')
if [ "$BAREMETAL" == "true" ] && [ "$HOSTTYPE" != "baremetal" ]; then
climc host-update --host-type baremetal $HOSTID > /dev/null
fi
climc host-delete $HOSTID > /dev/null
echo "DONE."

View File

@@ -0,0 +1,27 @@
#!/bin/bash
set -e
LB=$1
if [ -z "$LB" ]; then
echo "Usage: $0 <loadbalancer_id_or_name>"
exit 1
fi
LB_ID=$(climc lb-show $LB | grep -w " id " | awk '{print $4}')
LB_NAME=$(climc lb-show $LB | grep -w " name " | awk '{print $4}')
if [ -z "$LB_ID" ]; then
echo "Loadbalancer $LB not found"
exit 1
fi
echo "Ready to remove loadbalancer $LB_NAME($LB_ID) ..."
clean_loadbalancer() {
local LID=$1
climc lb-purge $LID
}
clean_loadbalancer $LB_ID

View File

@@ -0,0 +1,27 @@
#!/bin/bash
set -e
LB_ACL=$1
if [ -z "$LB_ACL" ]; then
echo "Usage: $0 <loadbalancer_id_or_name>"
exit 1
fi
LB_ACL_ID=$(climc lbacl-show $LB_ACL | grep -w " id " | awk '{print $4}')
LB_ACL_NAME=$(climc lbacl-show $LB_ACL | grep -w " name " | awk '{print $4}')
if [ -z "$LB_ACL_ID" ]; then
echo "Loadbalancer ACL $LB_ACL_ID not found"
exit 1
fi
echo "Ready to remove loadbalancer acl $LB_ACL_NAME($LB_ACL_ID) ..."
clean_loadbalancer_acl() {
local LID=$1
climc lbacl-purge $LID
}
clean_loadbalancer_acl $LB_ACL_ID

View File

@@ -0,0 +1,27 @@
#!/bin/bash
set -e
LB_CERT=$1
if [ -z "$LB_CERT" ]; then
echo "Usage: $0 <loadbalancer_id_or_name>"
exit 1
fi
LB_CERT_ID=$(climc lbcert-show $LB_CERT | grep -w " id " | awk '{print $4}')
LB_CERT_NAME=$(climc lbcert-show $LB_CERT | grep -w " name " | awk '{print $4}')
if [ -z "$LB_CERT_ID" ]; then
echo "Loadbalancer certificate $LB_CERT_ID not found"
exit 1
fi
echo "Ready to remove loadbalancer certificate $LB_CERT_NAME($LB_CERT_ID) ..."
clean_loadbalancer_cert() {
local LID=$1
climc lbcert-purge $LID
}
clean_loadbalancer_cert $LB_CERT_ID

View File

@@ -0,0 +1,96 @@
#!/bin/bash
set -e
pushd $(dirname $BASH_SOURCE) > /dev/null
CUR_DIR=$(pwd -P)
popd > /dev/null
PROVIDER=$1
if [ -z "$PROVIDER" ]; then
echo "Usage: $0 <cloud-provider-id-or-name>"
exit 1
fi
PROVIDER_ID=$(climc cloud-provider-show $PROVIDER | grep -w " id " | awk '{print $4}')
PROVIDER_NAME=$(climc cloud-provider-show $PROVIDER | grep -w " name " | awk '{print $4}')
if [ -z "$PROVIDER_ID" ]; then
echo "Cloud provider $PROVIDER not found"
exit 1
fi
echo "Ready to clean cloud provider $PROVIDER_NAME($PROVIDER_ID)..."
echo "1. Disable cloud provider $PROVIDER_NAME($PROVIDER_ID) ..."
climc cloud-provider-disable $PROVIDER_ID
echo "2. Clean all hosts ..."
for hostid in $(climc host-list --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
$CUR_DIR/clean_host.sh $hostid
done
echo "3. Clean all loadbalancer ..."
for lbid in $(climc lb-list --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
$CUR_DIR/clean_loadbalancer.sh $lbid
done
echo "4. Clean all loadbalancer acl ..."
for lbaclid in $(climc lbacl-list --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
$CUR_DIR/clean_loadbalancer_acl.sh $lbaclid
done
echo "5. Clean all loadbalancer certificate ..."
for lbcertid in $(climc lbcert-list --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
$CUR_DIR/clean_loadbalancer_certificate.sh $lbcertid
done
echo "6. Clean all vpc ..."
for vpcid in $(climc vpc-list --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
$CUR_DIR/clean_vpc.sh $vpcid
done
echo "7. Clean all eips ..."
for eipid in $(climc eip-list --admin --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
$CUR_DIR/clean_eip.sh $eipid
done
echo "8. Clean all snapshots ..."
for snapid in $(climc snapshot-list --admin --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
echo "to clean snapshot $snapid ..."
$CUR_DIR/clean_snapshot.sh $snapid
done
echo "9. Clean all storagecache ..."
for cacheid in $(climc storage-cache-list --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
$CUR_DIR/clean_storagecache.sh $cacheid
done
echo "10. Clean all storages ..."
for storeid in $(climc storage-list --manager $PROVIDER_ID --admin --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
$CUR_DIR/clean_storage.sh $storeid
done
echo "Delete cloud provider ..."
climc cloud-provider-delete $PROVIDER_ID

View File

@@ -0,0 +1,27 @@
#/bin/bash
set -e
SNAPSHOT=$1
if [ -z "$SNAPSHOT" ]; then
echo "Usage: $0 <snapshot_id_or_name>"
exit 1
fi
SNAPSHOT_NAME=$(climc snapshot-show $SNAPSHOT | grep -w " name " | awk '{print $4}')
SNAPSHOT_ID=$(climc snapshot-show $SNAPSHOT | grep -w " id " | awk '{print $4}')
if [ -z "$SNAPSHOT_ID" ]; then
echo "Cannot find snapshot $SNAPSHOT_ID"
exit 1
fi
echo "To clean snapshot $SNAPSHOT_NAME($SNAPSHOT_ID)..."
clean_snapshot() {
local SNAP_ID=$1
climc snapshot-purge $SNAP_ID > /dev/null
}
clean_snapshot $SNAPSHOT_ID

View File

@@ -0,0 +1,34 @@
#!/bin/bash
set -e
STORAGE=$1
if [ -z "$STORAGE" ]; then
echo "Usage: $0 <storage_id_or_name>"
exit 1
fi
STORAGE_ID=$(climc storage-show $STORAGE | grep -w " id " | awk '{print $4}')
STORAGE_NAME=$(climc storage-show $STORAGE | grep -w " name " | awk '{print $4}')
if [ -z "$STORAGE_ID" ]; then
echo "Storage $STORAGE not found"
exit 1
fi
echo "Clean disks on storage $STORAGE_NAME($STORAGE_ID) ..."
for disk_id in $(climc disk-list --admin --storage $STORAGE_ID --show-emulated --limit 2048 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
climc disk-purge $disk_id > /dev/null
done
for disk_id in $(climc disk-list --admin --storage $STORAGE_ID --show-emulated --pending-delete --limit 2048 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
climc disk-purge $disk_id > /dev/null
done
# CACHE_ID=$(climc storage-show $STORAGE_ID | grep -w " storagecache_id " | awk '{print $4}')
climc storage-delete $STORAGE_ID > /dev/null

View File

@@ -0,0 +1,28 @@
#!/bin/bash
set -e
CACHE=$1
if [ -z "$CACHE" ]; then
echo "Usage: $0 <storage_cache_id_or_name>"
exit 1
fi
CACHE_ID=$(climc storage-cache-show $CACHE | grep -w " id " | awk '{print $4}')
CACHE_NAME=$(climc storage-cache-show $CACHE | grep -w " name " | awk '{print $4}')
if [ -z "$CACHE_ID" ]; then
echo "Storage cache $CACHE not found"
exit 1
fi
echo "Ready to remove storagecache $CACHE_NAME($CACHE_ID) ..."
for imgid in $(climc storage-cached-image-list --storagecache $CACHE_ID --show-emulated --limit 0 | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $4}')
do
climc storagecache-uncache-image $CACHE_ID $imgid --force # > /dev/null
done
climc storage-cache-delete $CACHE_ID > /dev/null

View File

@@ -0,0 +1,55 @@
#/bin/bash
set -e
VPC=$1
if [ -z "$VPC" ]; then
echo "Usage: $0 <vpc_id_or_name>"
exit 1
fi
VPC_NAME=$(climc vpc-show $VPC | grep -w " name " | awk '{print $4}')
VPC_ID=$(climc vpc-show $VPC | grep -w " id " | awk '{print $4}')
if [ -z "$VPC_ID" ]; then
echo "Cannot find vpc $VPC"
exit 1
fi
echo "To clean vpc $VPC_NAME($VPC_ID)..."
clean_network() {
climc network-purge $1 > /dev/null
}
clean_wire() {
local WIRE_ID=$1
for net_id in $(climc network-list --admin --wire $WIRE_ID --show-emulated | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
clean_network $net_id
done
climc wire-delete $wire_id > /dev/null
}
clean_vpc() {
local VPC_ID=$1
climc vpc-purge $VPC_ID > /dev/null
}
echo "1. Clean wires ..."
for wire_id in $(climc wire-list --vpc $VPC_ID --show-emulated | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
clean_wire $wire_id
done
echo "2. Clean route tables ..."
for routetable_id in $(climc routetable-list --vpc $VPC_ID --show-emulated | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
do
climc routetable-purge $routetable_id >/dev/null
done
echo "3. clean vpc ..."
clean_vpc $VPC_ID

View File

@@ -1,3 +1,5 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/climc-base:latest
FROM registry.cn-beijing.aliyuncs.com/yunionio/climc-base:v20200308
ADD ./build/climc/root/opt /opt
ADD ./_output/bin/climc ./_output/bin/*cli /opt/yunion/bin/

View File

@@ -6,7 +6,7 @@ ENV TZ Asia/Shanghai
RUN mkdir -p /opt/yunion/bin
RUN apk add --no-cache bash bash-completion tzdata ca-certificates && \
RUN apk add --no-cache bash bash-completion tzdata ca-certificates vim && \
rm -rf /var/cache/apk/*
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

View File

@@ -1,11 +1,9 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/host-base:v0.0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/host-base:v0.1.0
MAINTAINER "Yaoqi Wan wanyaoqi@yunionyun.com"
ENV TZ Asia/Shanghai
RUN apk add librados librbd
RUN mkdir -p /opt/yunion/bin
ADD ./_output/bin/host /opt/yunion/bin/host
ADD ./_output/bin/.host.bin /opt/yunion/bin/.host.bin
ADD ./_output/bin/bundles/host /opt/yunion/bin/bundles/host
ADD ./_output/alpine-build/bin/host /opt/yunion/bin/host

View File

@@ -0,0 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:latest
ADD ./_output/bin/monitor /opt/yunion/bin/monitor

View File

@@ -1,3 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:latest
FROM alpine:3.11.3
ADD ./_output/bin/region-dns /opt/yunion/bin/region-dns
RUN mkdir -p /opt/yunion/bin
ADD ./_output/alpine-build/bin/region-dns /opt/yunion/bin/region-dns

View File

@@ -0,0 +1,6 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/openvswitch:2.9.6-1
MAINTAINER "Yousong Zhou <zhouyousong@yunion.cn>"
RUN mkdir -p /opt/yunion/bin
ADD ./_output/alpine-build/bin/vpcagent /opt/yunion/bin/vpcagent

View File

@@ -84,7 +84,11 @@ func newClient(options *BaseOptions) (*aliyun.SRegion, error) {
return nil, fmt.Errorf("Missing secret")
}
cli, err := aliyun.NewAliyunClient("", "", options.AccessKey, options.Secret, options.Debug)
cli, err := aliyun.NewAliyunClient(
aliyun.NewAliyunClientConfig(
options.AccessKey, options.Secret,
).Debug(options.Debug),
)
if err != nil {
return nil, err
}

View File

@@ -85,7 +85,13 @@ func newClient(options *BaseOptions) (*aws.SRegion, error) {
return nil, fmt.Errorf("Missing secret")
}
cli, err := aws.NewAwsClient("", "", options.AccessUrl, options.AccessKey, options.Secret, options.Debug)
cli, err := aws.NewAwsClient(
aws.NewAwsClientConfig(
options.AccessUrl,
options.AccessKey,
options.Secret,
).Debug(options.Debug),
)
if err != nil {
return nil, err
}

View File

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

View File

@@ -35,6 +35,7 @@ import (
_ "yunion.io/x/onecloud/cmd/climc/shell/cloudnet"
_ "yunion.io/x/onecloud/cmd/climc/shell/etcd"
_ "yunion.io/x/onecloud/cmd/climc/shell/k8s"
_ "yunion.io/x/onecloud/cmd/climc/shell/monitor"
"yunion.io/x/onecloud/pkg/mcclient"
)

View File

@@ -0,0 +1,46 @@
// 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"
)
func init() {
type BucketOptionsVerifyOptions struct {
options.BaseListOptions
CloudaccountId string `help:"cloudaccount Id" required:"true"`
BillingReportBucket string `help:"S3 bucket that stores account billing report"`
BillingFilePrefix string `help:"prefix of billing file name"`
BillingBucketAccount string `help:"Id of cloudaccount that can access billing bucket"`
UsageReportBucket string `help:"S3 bucket that stores account usage report"`
UsageFilePrefix string `help:"prefix of usage file name"`
UsageBucketAccount string `help:"Id of cloudaccount that can access usage bucket"`
}
R(&BucketOptionsVerifyOptions{}, "bucket-options-verify", "billing bucket connection test",
func(s *mcclient.ClientSession, args *BucketOptionsVerifyOptions) error {
params := jsonutils.Marshal(args)
result, err := modules.BucketOptions.PerformAction(s, args.CloudaccountId, "verify", params)
if err != nil {
return err
}
printObject(result)
return nil
})
}

View File

@@ -99,6 +99,9 @@ func init() {
if len(args.OptionsBillingBucketAccount) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingBucketAccount), "billing_bucket_account")
}
if len(args.OptionsBillingFilePrefix) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingFilePrefix), "billing_file_prefix")
}
if options.Size() > 0 {
params.(*jsonutils.JSONDict).Add(options, "options")
}
@@ -164,8 +167,8 @@ func init() {
if len(args.OptionsBillingBucketAccount) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingBucketAccount), "billing_bucket_account")
}
if len(args.OptionsBillingFileAccount) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingFileAccount), "billing_file_account")
if len(args.OptionsBillingFilePrefix) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingFilePrefix), "billing_file_prefix")
}
if options.Size() > 0 {
params.Add(options, "options")
@@ -308,6 +311,9 @@ func init() {
if len(args.OptionsBillingBucketAccount) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingBucketAccount), "billing_bucket_account")
}
if len(args.OptionsBillingFilePrefix) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingFilePrefix), "billing_file_prefix")
}
if options.Size() > 0 {
params.Add(options, "options")
}
@@ -318,6 +324,9 @@ func init() {
if args.RemoveOptionsBillingBucketAccount {
removeOptions = append(removeOptions, "billing_bucket_account")
}
if args.RemoveOptionsBillingFilePrefix {
removeOptions = append(removeOptions, "billing_file_prefix")
}
if len(removeOptions) > 0 {
params.Add(jsonutils.NewStringArray(removeOptions), "remove_options")
}
@@ -372,6 +381,19 @@ func init() {
return nil
})
R(&options.SGoogleCloudAccountUpdateOptions{}, "cloud-account-update-google", "update a google cloud account", func(s *mcclient.ClientSession, args *options.SGoogleCloudAccountUpdateOptions) error {
params := jsonutils.Marshal(args).(*jsonutils.JSONDict)
if params.Size() == 0 {
return InvalidUpdateError()
}
result, err := modules.Cloudaccounts.Update(s, args.ID, params)
if err != nil {
return err
}
printObject(result)
return nil
})
R(&options.SAWSCloudAccountUpdateOptions{}, "cloud-account-update-aws", "update an AWS cloud account", func(s *mcclient.ClientSession, args *options.SAWSCloudAccountUpdateOptions) error {
params := jsonutils.Marshal(args).(*jsonutils.JSONDict)
@@ -382,8 +404,8 @@ func init() {
if len(args.OptionsBillingBucketAccount) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingBucketAccount), "billing_bucket_account")
}
if len(args.OptionsBillingFileAccount) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingFileAccount), "billing_file_account")
if len(args.OptionsBillingFilePrefix) > 0 {
options.Add(jsonutils.NewString(args.OptionsBillingFilePrefix), "billing_file_prefix")
}
if options.Size() > 0 {
params.Add(options, "options")
@@ -395,8 +417,8 @@ func init() {
if args.RemoveOptionsBillingBucketAccount {
removeOptions = append(removeOptions, "billing_bucket_account")
}
if args.RemoveOptionsBillingFileAccount {
removeOptions = append(removeOptions, "billing_file_account")
if args.RemoveOptionsBillingFilePrefix {
removeOptions = append(removeOptions, "billing_file_prefix")
}
if len(removeOptions) > 0 {
params.Add(jsonutils.NewStringArray(removeOptions), "remove_options")
@@ -413,7 +435,7 @@ func init() {
return nil
})
R(&options.SOpenStackCloudAccountUpdateOptions{}, "cloud-account-update-openstack", "update an AWS cloud account", func(s *mcclient.ClientSession, args *options.SOpenStackCloudAccountUpdateOptions) error {
R(&options.SOpenStackCloudAccountUpdateOptions{}, "cloud-account-update-openstack", "update an OpenStack cloud account", func(s *mcclient.ClientSession, args *options.SOpenStackCloudAccountUpdateOptions) error {
params := jsonutils.Marshal(args).(*jsonutils.JSONDict)
if params.Size() == 0 {
return InvalidUpdateError()

View File

@@ -22,7 +22,7 @@ import (
)
func init() {
R(&options.RouteCreateOptions{}, "router-route-create", "Create router", func(s *mcclient.ClientSession, opts *options.RouteCreateOptions) error {
R(&options.RouteCreateOptions{}, "router-route-create", "Create router route", func(s *mcclient.ClientSession, opts *options.RouteCreateOptions) error {
params, err := base_options.StructToParams(opts)
if err != nil {
return err
@@ -34,7 +34,7 @@ func init() {
printObject(router)
return nil
})
R(&options.RouteGetOptions{}, "router-route-show", "Show router", func(s *mcclient.ClientSession, opts *options.RouteGetOptions) error {
R(&options.RouteGetOptions{}, "router-route-show", "Show router route", func(s *mcclient.ClientSession, opts *options.RouteGetOptions) error {
router, err := modules.Routes.Get(s, opts.ID, nil)
if err != nil {
return err
@@ -42,7 +42,7 @@ func init() {
printObject(router)
return nil
})
R(&options.RouteListOptions{}, "router-route-list", "List routers", func(s *mcclient.ClientSession, opts *options.RouteListOptions) error {
R(&options.RouteListOptions{}, "router-route-list", "List router routes", func(s *mcclient.ClientSession, opts *options.RouteListOptions) error {
params, err := base_options.ListStructToParams(opts)
if err != nil {
return err
@@ -54,7 +54,7 @@ func init() {
printList(result, modules.Routes.GetColumns(s))
return nil
})
R(&options.RouteUpdateOptions{}, "router-route-update", "Update router", func(s *mcclient.ClientSession, opts *options.RouteUpdateOptions) error {
R(&options.RouteUpdateOptions{}, "router-route-update", "Update router route", func(s *mcclient.ClientSession, opts *options.RouteUpdateOptions) error {
params, err := base_options.StructToParams(opts)
router, err := modules.Routes.Update(s, opts.ID, params)
if err != nil {
@@ -63,7 +63,7 @@ func init() {
printObject(router)
return nil
})
R(&options.RouteDeleteOptions{}, "router-route-delete", "Delete router", func(s *mcclient.ClientSession, opts *options.RouteDeleteOptions) error {
R(&options.RouteDeleteOptions{}, "router-route-delete", "Delete router route", func(s *mcclient.ClientSession, opts *options.RouteDeleteOptions) error {
router, err := modules.Routes.Delete(s, opts.ID, nil)
if err != nil {
return err

View File

@@ -29,11 +29,11 @@ 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|dingtalk"`
CONTACT string `help:"The contacts details mobile number or email address or dingtalk's userid, if set it the empty str means delete"`
Status string `help:"Enabled or disabled contact status" choices:"enable|disable"`
UpdateDingtalk bool `help:"if update dingtalk"`
UID string `help:"The user you wanna add contact to (Keystone User ID)"`
CONTACTTYPE string `help:"The contact type email|mobile" choices:"email|mobile|dingtalk"`
CONTACT string `help:"The contacts details mobile number or email address or dingtalk's userid, if set it the empty str means delete"`
Status string `help:"Enabled or disabled contact status" choices:"enable|disable"`
Pull []string `help:"pull some subcontacts(e.g., dingtalk, feishu, etc) related to mobile"`
}
R(&ContactsUpdateOptions{}, "contact-update", "Create, delete or update contact for user", func(s *mcclient.ClientSession, args *ContactsUpdateOptions) error {
arr := jsonutils.NewArray()
@@ -52,12 +52,14 @@ func init() {
params := jsonutils.NewDict()
params.Add(arr, "contacts")
if args.UpdateDingtalk {
params.Add(jsonutils.JSONTrue, "update_dingtalk")
pulls := jsonutils.NewArray()
for _, pull := range args.Pull {
pulls.Add(jsonutils.NewString(pull))
}
params.Add(pulls, "pull")
contact, err := modules.Contacts.CustomizedPerformAction(s, args.UID, "update-contact", params)
if err != nil {
return err
}
@@ -66,6 +68,22 @@ func init() {
return nil
})
type ContactsPullOptions struct {
UID string `help:"The user you wanna pull contact"`
CONTACTTYPE string `help:"The contact type"`
}
R(&ContactsPullOptions{}, "contact-pull", "Pull contact", func(s *mcclient.ClientSession, args *ContactsPullOptions) error {
params := jsonutils.NewDict()
params.Set("contacts", jsonutils.NewArray())
params.Set("pull", jsonutils.NewArray(jsonutils.NewString(args.CONTACTTYPE)))
contact, err := modules.Contacts.CustomizedPerformAction(s, args.UID, "update-contact", params)
if err != nil {
return err
}
printObject(contact)
return nil
})
type ContactsDeleteOptions struct {
UID string `help:"The user you wanna add contact to (Keystone User ID)"`
CONTACTTYPE string `help:"The contact type email|mobile|dingtalk" choices:"email|mobile|dingtalk"`

View File

@@ -79,7 +79,7 @@ func init() {
if err != nil {
return err
}
users, err := modules.Groups.GetUsers(s, grpId)
users, err := modules.Groups.GetUsers(s, grpId, nil)
if err != nil {
return err
}

View File

@@ -18,11 +18,13 @@ import (
"fmt"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
"yunion.io/x/onecloud/pkg/util/fileutils2"
"yunion.io/x/onecloud/pkg/util/ssh"
)
func init() {
@@ -55,6 +57,8 @@ func init() {
CdromBoot *bool `help:"filter hosts list by cdrom_boot=true|false"`
Sn string `help:"find host by sn"`
options.BaseListOptions
}
R(&HostListOptions{}, "host-list", "List hosts", func(s *mcclient.ClientSession, opts *HostListOptions) error {
@@ -76,6 +80,9 @@ func init() {
if len(opts.Uuid) > 0 {
params.Add(jsonutils.NewString(opts.Uuid), "uuid")
}
if len(opts.Sn) > 0 {
params.Add(jsonutils.NewString(opts.Sn), "sn")
}
result, err := modules.Hosts.List(s, params)
if err != nil {
return err
@@ -659,4 +666,44 @@ func init() {
printObject(result)
return nil
})
type HostSSHLoginOptions struct {
ID string `help:"ID or name of host"`
Port int `help:"SSH service port" default:"22"`
}
R(&HostSSHLoginOptions{}, "host-ssh", "SSH login of a host", func(s *mcclient.ClientSession, args *HostSSHLoginOptions) error {
srvid, e := modules.Hosts.GetId(s, args.ID, nil)
if e != nil {
return e
}
i, e := modules.Hosts.GetLoginInfo(s, srvid, nil)
if e != nil {
return e
}
host, err := i.GetString("ip")
if err != nil {
return err
}
user, err := i.GetString("username")
if err != nil {
return err
}
passwd, err := i.GetString("password")
if err != nil {
return err
}
port := 22
if args.Port != 22 {
port = args.Port
}
sshCli, err := ssh.NewClient(host, port, user, passwd, "")
if err != nil {
return err
}
log.Infof("ssh %s:%d", host, port)
if err := sshCli.RunTerminal(); err != nil {
return err
}
return nil
})
}

View File

@@ -205,4 +205,70 @@ func initKubeCluster() {
printObject(ret)
return nil
})
R(&o.IdentOptions{}, cmdN("components-status"), "Get cluster component status", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
ret, err := k8s.KubeClusters.GetSpecific(s, args.ID, "components-status", nil)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&o.ClusterComponentTypeOptions{}, cmdN("component-setting"), "Get cluster component setting", func(s *mcclient.ClientSession, args *o.ClusterComponentTypeOptions) error {
q := jsonutils.NewDict()
q.Add(jsonutils.NewString(args.TYPE), "type")
ret, err := k8s.KubeClusters.GetSpecific(s, args.ID, "component-setting", q)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&o.ClusterEnableComponentCephCSIOpt{}, cmdN("component-enable-ceph-csi"), "Enable cluster component", func(s *mcclient.ClientSession, args *o.ClusterEnableComponentCephCSIOpt) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "enable-component", params)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&o.ClusterDisableComponent{}, cmdN("component-disable"), "Enable cluster component", func(s *mcclient.ClientSession, args *o.ClusterDisableComponent) error {
params := args.Params()
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "disable-component", params)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&o.ClusterDisableComponent{}, cmdN("component-delete"), "Delete cluster component", func(s *mcclient.ClientSession, args *o.ClusterDisableComponent) error {
params := args.Params()
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "delete-component", params)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&o.ClusterUpdateComponentCephCSIOpt{}, cmdN("component-update-ceph-csi"), "Update cluster component", func(s *mcclient.ClientSession, args *o.ClusterUpdateComponentCephCSIOpt) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "update-component", params)
if err != nil {
return err
}
printObject(ret)
return nil
})
}

View File

@@ -40,22 +40,40 @@ func initSecret() {
})
secretCmd.AddR(listCmd)
registryCmd := initK8sNamespaceResource("registrysecret", k8s.RegistrySecrets)
createCmd := NewCommand(
registryCmd := NewCmdNameFactory("secret-registry")
registryCreateCmd := NewCommand(
&o.RegistrySecretCreateOptions{},
registryCmd.CommandNameFactory("create"),
"Create docker registry secret resource",
registryCmd.Do("create"),
"Create docker registry secret secret",
func(s *mcclient.ClientSession, args *o.RegistrySecretCreateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := k8s.RegistrySecrets.Create(s, params)
ret, err := k8s.Secrets.Create(s, params)
if err != nil {
return err
}
printObject(ret)
return nil
})
registryCmd.AddR(createCmd)
cephCSICmd := NewCmdNameFactory("secret-ceph-csi")
cephCSICreateCmd := NewCommand(
&o.CephCSISecretCreateOptions{},
cephCSICmd.Do("create"),
"Create ceph csi user secret",
func(s *mcclient.ClientSession, args *o.CephCSISecretCreateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := k8s.Secrets.Create(s, params)
if err != nil {
return err
}
printObject(ret)
return nil
})
secretCmd.AddR(cephCSICreateCmd, registryCreateCmd)
}

View File

@@ -15,9 +15,70 @@
package k8s
import (
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
)
func initStorageClass() {
initK8sClusterResource("storageclass", k8s.Storageclass)
cmdN := NewCmdNameFactory("storageclass")
scCmd := initK8sClusterResource("storageclass", k8s.Storageclass)
setDefaultCmd := NewCommand(
&o.ClusterResourceBaseOptions{},
cmdN.Do("set-default"),
"Set storageclass as default",
func(s *mcclient.ClientSession, args *o.ClusterResourceBaseOptions) error {
ret, err := k8s.Storageclass.PerformAction(s, args.NAME, "set-default", args.Params())
if err != nil {
return err
}
printObject(ret)
return nil
},
)
scCmd.AddR(setDefaultCmd)
addStorageClassCephCSI(scCmd)
}
func addStorageClassCephCSI(cmd *ShellCommands) {
rbdN := NewCmdNameFactory("storageclass-ceph-csi-rbd")
rbdCreateCmd := NewCommand(
&o.StorageClassCephCSIRBDCreateOptions{},
rbdN.Do("create"),
"Create ceph csi rbd",
func(s *mcclient.ClientSession, args *o.StorageClassCephCSIRBDCreateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := k8s.Storageclass.Create(s, params)
if err != nil {
return err
}
printObject(ret)
return nil
},
)
testConnCmd := NewCommand(
&o.StorageClassCephCSIRBDTestOptions{},
rbdN.Do("connection-test"),
"Test storageclass connection",
func(s *mcclient.ClientSession, args *o.StorageClassCephCSIRBDTestOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := k8s.Storageclass.PerformClassAction(s, "connection-test", params)
if err != nil {
return err
}
printObject(ret)
return nil
},
)
cmd.AddR(rbdCreateCmd, testConnCmd)
}

View File

@@ -0,0 +1,116 @@
// 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 monitor
import (
"fmt"
monitorapi "yunion.io/x/onecloud/pkg/apis/monitor"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules/monitor"
options "yunion.io/x/onecloud/pkg/mcclient/options/monitor"
)
func init() {
aN := cmdN("alert")
R(&options.AlertListOptions{}, aN("list"), "List all alerts",
func(s *mcclient.ClientSession, args *options.AlertListOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.Alerts.List(s, params)
if err != nil {
return err
}
printList(ret, monitor.Alerts.GetColumns(s))
return nil
})
R(&options.AlertCreateOptions{}, aN("create"), "Create alert rule",
func(s *mcclient.ClientSession, args *options.AlertCreateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.Alerts.DoCreate(s, params)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.AlertShowOptions{}, aN("show"), "Show details of a alert rule",
func(s *mcclient.ClientSession, args *options.AlertShowOptions) error {
ret, err := monitor.Alerts.Get(s, args.ID, nil)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.AlertUpdateOptions{}, aN("update"), "Update a alert rule",
func(s *mcclient.ClientSession, args *options.AlertUpdateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.Alerts.Update(s, args.ID, params.JSON(params))
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.AlertDeleteOptions{}, aN("delete"), "Delete alerts",
func(s *mcclient.ClientSession, args *options.AlertDeleteOptions) error {
ret := monitor.Alerts.BatchDelete(s, args.ID, nil)
printBatchResults(ret, monitor.Alerts.GetColumns(s))
return nil
})
R(&options.AlertTestRunOptions{}, aN("test-run"), "Test run alert",
func(s *mcclient.ClientSession, args *options.AlertTestRunOptions) error {
data := new(monitorapi.AlertTestRunInput)
if args.Debug {
data.IsDebug = true
}
ret, err := monitor.Alerts.DoTestRun(s, args.ID, data)
if err != nil {
return err
}
fmt.Println(ret.JSON(ret).YAMLString())
return nil
})
R(&options.AlertPauseOptions{}, aN("pause"), "Pause or unpause alert",
func(s *mcclient.ClientSession, args *options.AlertPauseOptions) error {
data := new(monitorapi.AlertPauseInput)
if args.UnPause {
data.Paused = false
} else {
data.Paused = true
}
ret, err := monitor.Alerts.PerformAction(s, args.ID, "pause", data.JSON(data))
if err != nil {
return err
}
printObject(ret)
return nil
})
}

View File

@@ -0,0 +1,60 @@
package monitor
import (
monitorapi "yunion.io/x/onecloud/pkg/apis/monitor"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
"yunion.io/x/onecloud/pkg/mcclient/modules/monitor"
options "yunion.io/x/onecloud/pkg/mcclient/options/monitor"
)
func init() {
initAlertNotification()
}
func initAlertNotification() {
aN := cmdN("alert-notification")
R(&options.AlertNotificationListOptions{}, aN("list"), "List alert notification pairs",
func(s *mcclient.ClientSession, args *options.AlertNotificationListOptions) error {
params, err := args.Params()
if err != nil {
return err
}
var result *modulebase.ListResult
if len(args.Alert) > 0 {
result, err = monitor.Alertnotification.ListDescendent(s, args.Alert, params)
} else if len(args.Notification) > 0 {
result, err = monitor.Alertnotification.ListDescendent2(s, args.Notification, params)
} else {
result, err = monitor.Alertnotification.List(s, params)
}
if err != nil {
return err
}
printList(result, monitor.Alertnotification.GetColumns(s))
return nil
})
R(&options.AlertNotificationAttachOptions{}, aN("attach"), "Attach a notification to a alert",
func(s *mcclient.ClientSession, args *options.AlertNotificationAttachOptions) error {
input := &monitorapi.AlertnotificationCreateInput{
UsedBy: args.UsedBy,
}
ret, err := monitor.Alertnotification.Attach(s, args.ALERT, args.NOTIFICATION, input.JSON(input))
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.AlertNotificationAttachOptions{}, aN("detach"), "Detach a notification to a alert",
func(s *mcclient.ClientSession, args *options.AlertNotificationAttachOptions) error {
ret, err := monitor.Alertnotification.Detach(s, args.ALERT, args.NOTIFICATION, nil)
if err != nil {
return err
}
printObject(ret)
return nil
})
}

View File

@@ -0,0 +1,27 @@
// 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 monitor
import (
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/util/printutils"
)
var (
R = shell.R
printList = printutils.PrintJSONList
printObject = printutils.PrintJSONObject
printBatchResults = printutils.PrintJSONBatchResults
)

View File

@@ -0,0 +1,56 @@
// 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 monitor
import (
"fmt"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules/monitor"
options "yunion.io/x/onecloud/pkg/mcclient/options/monitor"
)
func cmdN(suffix string) func(action string) string {
return func(action string) string {
return fmt.Sprintf("monitor-%s-%s", suffix, action)
}
}
func init() {
dsN := cmdN("datasource")
R(&options.DataSourceListOptions{}, dsN("list"), "List all monitor data source",
func(s *mcclient.ClientSession, args *options.DataSourceListOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.DataSources.List(s, params)
if err != nil {
return err
}
printList(ret, monitor.DataSources.GetColumns(s))
return nil
})
R(&options.DataSourceDeleteOptions{}, dsN("delete"), "Delete monitor data source",
func(s *mcclient.ClientSession, args *options.DataSourceDeleteOptions) error {
ret, err := monitor.DataSources.Delete(s, args.ID, nil)
if err != nil {
return err
}
printObject(ret)
return nil
})
}

View File

@@ -0,0 +1,99 @@
// 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 monitor
import (
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules/monitor"
options "yunion.io/x/onecloud/pkg/mcclient/options/monitor"
)
func init() {
nN := cmdN("notification")
R(&options.NotificationListOptions{}, nN("list"), "List all alert notification",
func(s *mcclient.ClientSession, args *options.NotificationListOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.Notifications.List(s, params)
if err != nil {
return err
}
printList(ret, monitor.Notifications.GetColumns(s))
return nil
})
R(&options.NotificationDingDingCreateOptions{}, nN("create-dingding"),
"Create dingding alert notification",
func(s *mcclient.ClientSession, args *options.NotificationDingDingCreateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.Notifications.Create(s, params.JSON(params))
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.NotificationFeishuCreateOptions{}, nN("create-feishu"),
"Create feishu alert notification",
func(s *mcclient.ClientSession, args *options.NotificationFeishuCreateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.Notifications.Create(s, params.JSON(params))
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.NotificationShowOptions{}, nN("show"), "Show alert notification",
func(s *mcclient.ClientSession, args *options.NotificationShowOptions) error {
ret, err := monitor.Notifications.Get(s, args.ID, nil)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.NotificationUpdateOptions{}, nN("update"), "Update alert notification",
func(s *mcclient.ClientSession, args *options.NotificationUpdateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.Notifications.Update(s, args.ID, params.JSON(params))
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.NotificationDeleteOptions{}, nN("delete"), "Show delete notification",
func(s *mcclient.ClientSession, args *options.NotificationDeleteOptions) error {
ret := monitor.Notifications.BatchDelete(s, args.ID, nil)
printBatchResults(ret, monitor.Notifications.GetColumns(s))
return nil
})
}

View File

@@ -346,77 +346,6 @@ func init() {
return nil
})
type NetworkAddDnsUpdateTargetOptions struct {
ID string `help:"Network ID or name"`
DNS string `help:"DNS server address" metavar:"DNS_SERVER"`
KEY string `help:"DNS update key name" metavar:"DNS_UPDATE_KEY"`
SECRET string `help:"DNS update key secret" metavar:"DNS_UPDATE_SECRET"`
}
R(&NetworkAddDnsUpdateTargetOptions{}, "network-add-dns-update-target", "Add a dns update target to a network", func(s *mcclient.ClientSession, args *NetworkAddDnsUpdateTargetOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.DNS), "server")
params.Add(jsonutils.NewString(args.KEY), "key")
params.Add(jsonutils.NewString(args.SECRET), "secret")
result, err := modules.Networks.PerformAction(s, args.ID, "add-dns-update-target", params)
if err != nil {
return err
}
printObject(result)
return nil
})
type NetworkRemoveDnsUpdateTargetOptions struct {
ID string `help:"Network ID or name"`
DNS string `help:"DNS server address" metavar:"DNS_SERVER"`
KEY string `help:"DNS update key name" metavar:"DNS_UPDATE_KEY"`
}
R(&NetworkRemoveDnsUpdateTargetOptions{}, "network-remove-dns-update-target", "Remove a dns update target from a network", func(s *mcclient.ClientSession, args *NetworkRemoveDnsUpdateTargetOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.DNS), "server")
params.Add(jsonutils.NewString(args.KEY), "key")
result, err := modules.Networks.PerformAction(s, args.ID, "remove-dns-update-target", params)
if err != nil {
return err
}
printObject(result)
return nil
})
type NetworkSetDnsUpdateKeyOptions struct {
ID string `help:"ID of virtual network to update"`
KEY string `help:"Key name of secret" metavar:"KEYNAME"`
SECRET string `help:"Key secret"`
SERVER string `help:"Alternate DNS update server"`
}
R(&NetworkSetDnsUpdateKeyOptions{}, "network-set-dns-update-key", "Set DNS update key info for a virtual network", func(s *mcclient.ClientSession, args *NetworkSetDnsUpdateKeyOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.NewString(args.KEY), "dns_update_key_name")
params.Add(jsonutils.NewString(args.SECRET), "dns_update_key_secret")
params.Add(jsonutils.NewString(args.SERVER), "dns_update_server")
result, err := modules.Networks.PerformAction(s, args.ID, "metadata", params)
if err != nil {
return err
}
printObject(result)
return nil
})
type NetworkRemoveDnsUpdateKeyOptions struct {
ID string `help:"ID of virtual network"`
}
R(&NetworkRemoveDnsUpdateKeyOptions{}, "network-remove-dns-update-key", "Set DNS update key info for a virtual network", func(s *mcclient.ClientSession, args *NetworkRemoveDnsUpdateKeyOptions) error {
params := jsonutils.NewDict()
params.Add(jsonutils.JSONNull, "dns_update_key_name")
params.Add(jsonutils.JSONNull, "dns_update_key_secret")
params.Add(jsonutils.JSONNull, "dns_update_server")
result, err := modules.Networks.PerformAction(s, args.ID, "metadata", params)
if err != nil {
return err
}
printObject(result)
return nil
})
type NetworkAddressOptions struct {
NETWORK string `help:"id or name of network to query"`
}

View File

@@ -59,18 +59,18 @@ func init() {
* 修改指定的报警规则
*/
type NodealertUpdateOptions struct {
ID string `help:"ID of the alert rule" required:"true" positional:"true"`
Type string `help:"Alert rule type" choices:"guest|host"`
Metric string `help:"Metric name, include measurement and field, such as vm_cpu.usage_active"`
NodeName string `help:"Name of the guest or host"`
NodeID string `help:"ID of the guest or host"`
Period string `help:"Specify the query time period for the data"`
Window string `help:"Specify the query interval for the data"`
Threshold float64 `help:"Threshold value of the metric"`
Comparator string `help:"Comparison operator for join expressions" choices:">|<|>=|<=|=|!="`
Recipients string `help:"Comma separated recipient ID"`
Level string `help:"Alert level" choices:"normal|important|fatal"`
Channel string `help:"Ways to send an alarm" choices:"email|mobile"`
ID string `help:"ID of the alert rule" required:"true" positional:"true"`
Type string `help:"Alert rule type" choices:"guest|host"`
Metric string `help:"Metric name, include measurement and field, such as vm_cpu.usage_active"`
NodeName string `help:"Name of the guest or host"`
NodeID string `help:"ID of the guest or host"`
Period string `help:"Specify the query time period for the data"`
Window string `help:"Specify the query interval for the data"`
Threshold *float64 `help:"Threshold value of the metric"`
Comparator string `help:"Comparison operator for join expressions" choices:">|<|>=|<=|=|!="`
Recipients string `help:"Comma separated recipient ID"`
Level string `help:"Alert level" choices:"normal|important|fatal"`
Channel string `help:"Ways to send an alarm" choices:"email|mobile"`
}
R(&NodealertUpdateOptions{}, "nodealert-update", "Update the node alert rule", func(s *mcclient.ClientSession, args *NodealertUpdateOptions) error {
params, err := options.StructToParams(args)
@@ -92,14 +92,11 @@ func init() {
* 删除指定ID的报警规则
*/
type NodealertDeleteOptions struct {
ID string `help:"ID of node alert" required:"true" positional:"true"`
ID []string `help:"ID of node alert" required:"true" positional:"true"`
}
R(&NodealertDeleteOptions{}, "nodealert-delete", "Delete a node alert", func(s *mcclient.ClientSession, args *NodealertDeleteOptions) error {
alarm, err := modules.NodeAlert.Delete(s, args.ID, nil)
if err != nil {
return err
}
printObject(alarm)
ret := modules.NodeAlert.BatchDelete(s, args.ID, nil)
printBatchResults(ret, modules.NodeAlert.GetColumns(s))
return nil
})

View File

@@ -29,7 +29,7 @@ func init() {
*/
type NotificationCreateOptions struct {
CONTACTTYPE string `help:"User's contacts type" choices:"email|mobile|dingtalk|webconsole"`
CONTACTTYPE string `help:"User's contacts type"`
TOPIC string `help:"Title or topic of the notification"`
PRIORITY string `help:"Priority of the notification" choices:"normal|important|fatal"`
MSG string `help:"The content of the notification"`
@@ -41,7 +41,7 @@ func init() {
NotificationCreateOptions
}
R(&NotificationCreateSingleOptions{}, "notify", "Send a notification to someones", func(s *mcclient.ClientSession,
R(&NotificationCreateSingleOptions{}, "notify", "Send a notification to someone", func(s *mcclient.ClientSession,
args *NotificationCreateSingleOptions) error {
msg := notify.SNotifyMessage{}

View File

@@ -34,7 +34,24 @@ func init() {
}
body := jsonutils.NewDict()
body.Add(tmp, args.CONTACTTYPE)
modules.Configs.Create(s, body)
ret, err := modules.Configs.Create(s, body)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&ConfigCreate2Options{}, "notify-config-validate", "config validate", func(s *mcclient.ClientSession,
args *ConfigCreate2Options) error {
tmp := jsonutils.NewDict()
for i := 0; i+1 < len(args.CONFIGS); i += 2 {
tmp.Add(jsonutils.NewString(args.CONFIGS[i+1]), args.CONFIGS[i])
}
ret, err := modules.Configs.PerformAction(s, args.CONTACTTYPE, "validate", tmp)
if err != nil {
return err
}
printObject(ret)
return nil
})

View File

@@ -134,7 +134,7 @@ func init() {
return nil
}
R(&PolicyPatchOptions{}, "policy-patch", "Patch policy", updateFunc)
R(&PolicyPatchOptions{}, "policy-update", "Patch policy", updateFunc)
R(&PolicyPatchOptions{}, "policy-update", "Update policy", updateFunc)
type PolicyPerformOptions struct {
ID string `help:"ID of policy to update"`

View File

@@ -0,0 +1,81 @@
// 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.ProxySettingCreateOptions{}, "proxysetting-create", "Create proxysetting", func(s *mcclient.ClientSession, opts *options.ProxySettingCreateOptions) error {
params, err := options.StructToParams(opts)
if err != nil {
return err
}
proxysetting, err := modules.ProxySettings.Create(s, params)
if err != nil {
return err
}
printObject(proxysetting)
return nil
})
R(&options.ProxySettingGetOptions{}, "proxysetting-show", "Show proxysetting", func(s *mcclient.ClientSession, opts *options.ProxySettingGetOptions) error {
proxysetting, err := modules.ProxySettings.Get(s, opts.ID, nil)
if err != nil {
return err
}
printObject(proxysetting)
return nil
})
R(&options.ProxySettingListOptions{}, "proxysetting-list", "List proxysettings", func(s *mcclient.ClientSession, opts *options.ProxySettingListOptions) error {
params, err := options.ListStructToParams(opts)
if err != nil {
return err
}
result, err := modules.ProxySettings.List(s, params)
if err != nil {
return err
}
printList(result, modules.ProxySettings.GetColumns(s))
return nil
})
R(&options.ProxySettingUpdateOptions{}, "proxysetting-update", "Update proxysetting", func(s *mcclient.ClientSession, opts *options.ProxySettingUpdateOptions) error {
params, err := options.StructToParams(opts)
proxysetting, err := modules.ProxySettings.Update(s, opts.ID, params)
if err != nil {
return err
}
printObject(proxysetting)
return nil
})
R(&options.ProxySettingDeleteOptions{}, "proxysetting-delete", "Delete proxysetting", func(s *mcclient.ClientSession, opts *options.ProxySettingDeleteOptions) error {
proxysetting, err := modules.ProxySettings.Delete(s, opts.ID, nil)
if err != nil {
return err
}
printObject(proxysetting)
return nil
})
R(&options.ProxySettingTestOptions{}, "proxysetting-test", "Test proxysetting", func(s *mcclient.ClientSession, opts *options.ProxySettingTestOptions) error {
proxysetting, err := modules.ProxySettings.PerformAction(s, opts.ID, "test", nil)
if err != nil {
return err
}
printObject(proxysetting)
return nil
})
}

View File

@@ -34,6 +34,7 @@ import (
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/mcclient/options"
"yunion.io/x/onecloud/pkg/util/fileutils2"
"yunion.io/x/onecloud/pkg/util/ssh"
)
func init() {
@@ -178,6 +179,19 @@ func init() {
},
)
R(&options.ServerCreateOptions{}, "server-check-create-data", "Check create server data", func(s *mcclient.ClientSession, opts *options.ServerCreateOptions) error {
params, err := opts.Params()
if err != nil {
return err
}
server, err := modules.Servers.PerformClassAction(s, "check-create-data", params.JSON(params))
if err != nil {
return err
}
printObject(server)
return nil
})
R(&options.ServerCreateOptions{}, "server-create", "Create a server", func(s *mcclient.ClientSession, opts *options.ServerCreateOptions) error {
params, err := opts.Params()
if err != nil {
@@ -1218,4 +1232,77 @@ func init() {
}
return nil
})
R(&options.ServerSSHLoginOptions{}, "server-ssh", "Use SSH login a server", func(s *mcclient.ClientSession, opts *options.ServerSSHLoginOptions) error {
srv, err := modules.Servers.Get(s, opts.ID, nil)
if err != nil {
return err
}
srvid, err := srv.GetString("id")
if err != nil {
return err
}
address := make([]string, 0)
nics, err := srv.GetArray("nics")
if err != nil {
return err
}
for _, nic := range nics {
if addr, err := nic.GetString("ip_addr"); err == nil {
address = append(address, addr)
}
}
if len(address) == 0 {
return fmt.Errorf("Not found ip address from server %s", opts.ID)
}
params := jsonutils.NewDict()
if len(opts.Key) > 0 {
privateKey, e := ioutil.ReadFile(opts.Key)
if e != nil {
return e
}
params.Add(jsonutils.NewString(string(privateKey)), "private_key")
}
i, e := modules.Servers.GetLoginInfo(s, srvid, params)
if e != nil {
return e
}
passwd, err := i.GetString("password")
if err != nil {
return err
}
if opts.Password != "" {
passwd = opts.Password
}
user, err := i.GetString("username")
if err != nil {
return err
}
if opts.User != "" {
user = opts.User
}
host := address[0]
if opts.Host != "" {
host = opts.Host
}
port := 22
if opts.Port != 22 {
port = opts.Port
}
sshCli, err := ssh.NewClient(host, port, user, passwd, "")
if err != nil {
return err
}
log.Infof("ssh %s:%d", host, port)
if err := sshCli.RunTerminal(); err != nil {
return err
}
return nil
})
}

View File

@@ -15,6 +15,7 @@
package shell
import (
"encoding/base64"
"fmt"
"net/url"
@@ -45,6 +46,9 @@ func init() {
if err != nil {
return err
}
if decodeStr, err := base64.StdEncoding.DecodeString(connParams); err == nil {
connParams = string(decodeStr)
}
var query url.Values
connUrl, err := url.ParseRequestURI(connParams)
if err == nil {
@@ -64,7 +68,9 @@ func init() {
return nil
}
u.RawQuery = connParams
newQuery := url.Values(make(map[string][]string))
newQuery.Set("data", base64.StdEncoding.EncodeToString([]byte(connParams)))
u.RawQuery = newQuery.Encode()
fmt.Println(u.String())
return nil
}

View File

@@ -84,8 +84,11 @@ func newClient(options *BaseOptions) (*ctyun.SRegion, error) {
return nil, fmt.Errorf("Missing secret")
}
cli, err := ctyun.NewSCtyunClient("", "", "",
options.AccessKey, options.Secret, options.Debug)
cli, err := ctyun.NewSCtyunClient(
ctyun.NewSCtyunClientConfig(
options.AccessKey, options.Secret,
).Debug(options.Debug),
)
if err != nil {
return nil, err
}

View File

@@ -88,7 +88,14 @@ func newClient(options *BaseOptions) (*esxi.SESXiClient, error) {
return nil, fmt.Errorf("Missing password")
}
return esxi.NewESXiClient2("", "", options.Host, options.Port, options.Account, options.Password, false)
return esxi.NewESXiClient2(
esxi.NewESXiClientConfig(
options.Host,
options.Port,
options.Account,
options.Password,
),
)
}
func main() {

View File

@@ -94,7 +94,14 @@ func newClient(options *BaseOptions) (*google.SRegion, error) {
return nil, fmt.Errorf("Missing ProjectID")
}
cli, err := google.NewGoogleClient("", "", options.ProjectID, options.ClientEmail, options.PrivateKeyID, options.PrivateKey, options.Debug)
cli, err := google.NewGoogleClient(
google.NewGoogleClientConfig(
options.ProjectID,
options.ClientEmail,
options.PrivateKeyID,
options.PrivateKey,
).Debug(options.Debug),
)
if err != nil {
return nil, err
}

View File

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

23
cmd/monitor/main.go Normal file
View File

@@ -0,0 +1,23 @@
// 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/monitor/service"
)
func main() {
service.StartService()
}

View File

@@ -93,7 +93,18 @@ 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.ProjectDomain, options.Debug)
cli, err := openstack.NewOpenStackClient(
openstack.NewOpenstackClientConfig(
options.AuthURL,
options.Username,
options.Password,
options.Project,
options.ProjectDomain,
).
EndpointType(options.EndpointType).
DomainName(options.DomainName).
Debug(options.Debug),
)
if err != nil {
return nil, err
}

View File

@@ -85,11 +85,12 @@ func newClient(options *BaseOptions) (*qcloud.SRegion, error) {
return nil, fmt.Errorf("Missing SecretID")
}
if cli, err := qcloud.NewQcloudClient("", "",
options.SecretID,
options.SecretKey,
options.AppID,
options.Debug); err != nil {
if cli, err := qcloud.NewQcloudClient(
qcloud.NewQcloudClientConfig(
options.SecretID,
options.SecretKey,
).AppId(options.AppID).Debug(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

@@ -94,11 +94,23 @@ func newClient(options *BaseOptions) (cloudprovider.ICloudRegion, error) {
}
if options.Backend == api.CLOUD_PROVIDER_CEPH {
return ceph.NewCephRados("", "", options.AccessUrl, options.AccessKey, options.Secret, options.Debug)
return ceph.NewCephRados(
objectstore.NewObjectStoreClientConfig(
options.AccessUrl, options.AccessKey, options.Secret,
).Debug(options.Debug),
)
} else if options.Backend == api.CLOUD_PROVIDER_XSKY {
return xsky.NewXskyClient("", "", options.AccessUrl, options.AccessKey, options.Secret, options.Debug)
return xsky.NewXskyClient(
objectstore.NewObjectStoreClientConfig(
options.AccessUrl, options.AccessKey, options.Secret,
).Debug(options.Debug),
)
}
return objectstore.NewObjectStoreClient("", "", options.AccessUrl, options.AccessKey, options.Secret, options.Debug)
return objectstore.NewObjectStoreClient(
objectstore.NewObjectStoreClientConfig(
options.AccessUrl, options.AccessKey, options.Secret,
).Debug(options.Debug),
)
}
func main() {

View File

@@ -86,11 +86,12 @@ func newClient(options *BaseOptions) (*ucloud.SRegion, error) {
return nil, fmt.Errorf("Missing secret")
}
cli, err := ucloud.NewUcloudClient("", "",
options.AccessKey,
options.Secret,
options.ProjectId,
options.Debug)
cli, err := ucloud.NewUcloudClient(
ucloud.NewUcloudClientConfig(
options.AccessKey,
options.Secret,
).ProjectId(options.ProjectId).Debug(options.Debug),
)
if err != nil {
return nil, err
}

View File

@@ -89,7 +89,13 @@ func newClient(options *BaseOptions) (*zstack.SRegion, error) {
return nil, fmt.Errorf("Missing Password")
}
cli, err := zstack.NewZStackClient("", "", options.AuthURL, options.Username, options.Password, options.Debug)
cli, err := zstack.NewZStackClient(
zstack.NewZstackClientConfig(
options.AuthURL,
options.Username,
options.Password,
).Debug(options.Debug),
)
if err != nil {
return nil, err
}

93
go.mod
View File

@@ -3,9 +3,11 @@ module yunion.io/x/onecloud
go 1.12
require (
cloud.google.com/go v0.38.0
github.com/360EntSecGroup-Skylar/excelize v1.4.0
github.com/Azure/azure-sdk-for-go v36.1.0+incompatible
github.com/Azure/go-autorest v10.15.5+incompatible
github.com/Azure/go-autorest/autorest v0.9.3
github.com/Azure/go-autorest/autorest/azure/auth v0.4.2
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
@@ -22,28 +24,24 @@ require (
github.com/aokoli/goutils v1.0.1
github.com/aws/aws-sdk-go v1.21.4
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
github.com/benbjohnson/clock v1.0.0
github.com/bitly/go-simplejson v0.5.0
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
github.com/c-bata/go-prompt v0.2.1
github.com/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/denisenkom/go-mssqldb v0.0.0-20190806190131-db2462fef53b // 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/edsrzf/mmap-go v1.0.0 // indirect
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 // 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/gin-gonic/gin v1.5.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
@@ -56,14 +54,12 @@ require (
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/mux v1.6.2
github.com/gorilla/mux v1.7.0
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
@@ -72,7 +68,7 @@ require (
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.0.1 // indirect
github.com/koding/websocketproxy v0.0.0-20181220232114-7ed82d81a28c
github.com/kr/pty v1.1.3
github.com/kr/pty v1.1.5
github.com/lib/pq v1.2.0 // indirect
github.com/libvirt/libvirt-go-xml v5.2.0+incompatible
github.com/mattn/go-runewidth v0.0.4 // indirect
@@ -82,7 +78,7 @@ require (
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/miekg/dns v1.1.4
github.com/minio/minio-go v6.0.14+incompatible
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/moul/http2curl v1.0.0
@@ -90,57 +86,82 @@ require (
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 v2.0.5+incompatible
github.com/pkg/errors v0.8.1
github.com/pkg/term v0.0.0-20181116001808-27bbf2edb814 // indirect
github.com/pquerna/otp v1.2.0
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/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9
github.com/smartystreets/goconvey v1.6.4
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/spf13/pflag v1.0.3 // indirect
github.com/stretchr/testify v1.4.0
github.com/tencentcloud/tencentcloud-sdk-go v0.0.0-20181108132626-805d01dd0e2e
github.com/tencentcloud/tencentcloud-sdk-go v3.0.135+incompatible
github.com/tencentyun/cos-go-sdk-v5 v0.0.0-20191108095731-8ca4b370cde4
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/vishvananda/netlink v1.0.0
github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible
github.com/vmware/govmomi v0.19.0
github.com/vmware/govmomi v0.20.1
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-20191002192127-34f69633bfdc
golang.org/x/net v0.0.0-20191007182048-72f939374954
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421
golang.org/x/sync v0.0.0-20190423024810-112230192c58
golang.org/x/sys v0.0.0-20191008105621-543471e840be
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20191008142428-8d021180e987
google.golang.org/api v0.13.0 // indirect
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873
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/ini.v1 v1.44.0 // 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
gopkg.in/yaml.v2 v2.2.8
k8s.io/api v0.17.3
k8s.io/apimachinery v0.17.3
k8s.io/client-go v9.0.0+incompatible
k8s.io/klog v0.1.0 // indirect
k8s.io/kubernetes v1.12.3
yunion.io/x/executor v0.0.0-20191202093616-92e2e6119257
yunion.io/x/jsonutils v0.0.0-20200113074440-9297fd00ba07
yunion.io/x/log v0.0.0-20190629062853-9f6483a7103d
yunion.io/x/pkg v0.0.0-20200103043034-27c6f82160fa
k8s.io/cluster-bootstrap v0.17.3
k8s.io/kubernetes v1.16.0
yunion.io/x/executor v0.0.0-20200227030256-a18417815e74
yunion.io/x/jsonutils v0.0.0-20200330063846-589d9924bb8b
yunion.io/x/log v0.0.0-20200313080802-57a4ce5966b3
yunion.io/x/pkg v0.0.0-20200403115157-880d716ed624
yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e
yunion.io/x/sqlchemy v0.0.0-20200119074814-09089d67c78d
yunion.io/x/sqlchemy v0.0.0-20200312002602-1177cd8fbc57
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
replace (
github.com/ceph/go-ceph v0.0.0-20181217221554-e32f9f0f2e94 => github.com/yunionio/go-ceph v0.0.0-20190912101231-6f05a06b3859
k8s.io/api => k8s.io/api v0.0.0-20190918155943-95b840bb6a1f
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655
k8s.io/apiserver => k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad
k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20190918162238-f783a3654da8
k8s.io/client-go => k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90
k8s.io/cloud-provider => k8s.io/cloud-provider v0.0.0-20190918163234-a9c1f33e9fb9
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.0.0-20190918163108-da9fdfce26bb
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20190912054826-cd179ad6a269
k8s.io/component-base => k8s.io/component-base v0.0.0-20190918160511-547f6c5d7090
k8s.io/cri-api => k8s.io/cri-api v0.0.0-20190828162817-608eb1dad4ac
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.0.0-20190918163402-db86a8c7bb21
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.0.0-20190918161219-8c8f079fddc3
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.0.0-20190918162944-7a93a0ddadd8
k8s.io/kube-proxy => k8s.io/kube-proxy v0.0.0-20190918162534-de037b596c1e
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.0.0-20190918162820-3b5c1246eb18
k8s.io/kubectl => k8s.io/kubectl v0.0.0-20190918164019-21692a0861df
k8s.io/kubelet => k8s.io/kubelet v0.0.0-20190918162654-250a1838aa2c
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.0.0-20190918163543-cfa506e53441
k8s.io/metrics => k8s.io/metrics v0.0.0-20190918162108-227c654b2546
k8s.io/node-api => k8s.io/node-api v0.0.0-20190918163711-2299658ad911
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.0.0-20190918161442-d4c9c65c82af
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.0.0-20190918162410-e45c26d066f2
k8s.io/sample-controller => k8s.io/sample-controller v0.0.0-20190918161628-92eb3cb7496c
)

526
go.sum

File diff suppressed because it is too large Load Diff

View File

@@ -29,6 +29,7 @@ import (
"yunion.io/x/onecloud/pkg/apigateway/constants"
"yunion.io/x/onecloud/pkg/apigateway/options"
policytool "yunion.io/x/onecloud/pkg/apigateway/policy"
"yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/appctx"
"yunion.io/x/onecloud/pkg/appsrv"
"yunion.io/x/onecloud/pkg/cloudcommon/policy"
@@ -646,8 +647,11 @@ func getUserAuthCookie(ctx context.Context, s *mcclient.ClientSession, token mcc
}
func getLBAgentInfo(s *mcclient.ClientSession, token mcclient.TokenCredential) (*jsonutils.JSONDict, error) {
lbagents, err := modules.LoadbalancerAgents.List(s, nil)
params := jsonutils.NewDict()
params.Add(jsonutils.NewString("hb_last_seen.isnotempty()"), "filter.0")
params.Add(jsonutils.NewInt(1), "limit")
params.Add(jsonutils.JSONFalse, "details")
lbagents, err := modules.LoadbalancerAgents.List(s, params)
if err != nil {
return nil, errors.Wrapf(err, "user %s get lbagent", token.GetUserName())
}
@@ -665,6 +669,7 @@ func getLBAgentInfo(s *mcclient.ClientSession, token mcclient.TokenCredential) (
}
func getUserInfo(ctx context.Context, s *mcclient.ClientSession, token mcclient.TokenCredential, req *http.Request) (*jsonutils.JSONDict, error) {
log.Infof("getUserInfo modules.UsersV3.Get")
usr, err := modules.UsersV3.Get(s, token.GetUserId(), nil)
if err != nil {
log.Errorf("modules.UsersV3.Get fail %s", err)
@@ -693,6 +698,7 @@ func getUserInfo(ctx context.Context, s *mcclient.ClientSession, token mcclient.
data.Add(jsonutils.NewString(token.GetProjectDomain()), "projectDomain")
data.Add(jsonutils.NewString(token.GetProjectDomainId()), "projectDomainId")
log.Infof("getUserInfo modules.RoleAssignments.List")
query := jsonutils.NewDict()
query.Add(jsonutils.JSONNull, "effective")
query.Add(jsonutils.JSONNull, "include_names")
@@ -772,6 +778,7 @@ func getUserInfo(ctx context.Context, s *mcclient.ClientSession, token mcclient.
log.Errorf("fail to find services????: %#v %s", adminToken, curReg)
}
log.Infof("getUserInfo getLBAgentInfo")
lb, err := getLBAgentInfo(s, adminToken)
if err != nil {
log.Errorf("getLBAgentInfo fail %s", err)
@@ -788,13 +795,23 @@ func getUserInfo(ctx context.Context, s *mcclient.ClientSession, token mcclient.
}
}
log.Infof("getUserInfo modules.Hosts.Get")
s2 := auth.GetSession(ctx, token, FetchRegion(req), "v2")
cap, err := modules.Capabilities.List(s2, nil)
params := jsonutils.NewDict()
params.Add(jsonutils.NewString("host_type"), "field")
params.Add(jsonutils.NewString("system"), "scope")
params.Add(jsonutils.JSONTrue, "usable")
params.Add(jsonutils.JSONTrue, "show_emulated")
cap, err := modules.Hosts.Get(s2, "distinct-field", params)
if err != nil {
log.Errorf("modules.Capabilities.List fail %s", err)
log.Errorf("modules.Servers.Get distinct-field fail %s", err)
} else {
hypervisors, _ := cap.Data[0].Get("hypervisors")
data.Add(hypervisors, "hypervisors")
hostTypes, _ := jsonutils.GetStringArray(cap, "host_type")
hypervisors := make([]string, len(hostTypes))
for i, hostType := range hostTypes {
hypervisors[i] = compute.HOSTTYPE_HYPERVISOR[hostType]
}
data.Add(jsonutils.NewStringArray(hypervisors), "hypervisors")
}
data.Add(menus, "menus")

View File

@@ -117,21 +117,24 @@ func rpcHandler(ctx context.Context, w http.ResponseWriter, req *http.Request) {
v, ok := retobj.Interface().(jsonutils.JSONObject)
if ok {
appsrv.SendJSON(w, v)
return
}
v2, ok := retobj.Interface().([]modulebase.SubmitResult)
if ok {
w.WriteHeader(207)
appsrv.SendJSON(w, modulebase.SubmitResults2JSON(v2))
} else {
httperrors.BadGatewayError(w, "recv invalid data")
return
}
httperrors.BadGatewayError(w, "recv invalid data")
} else {
v, ok := reterr.Interface().(*httputils.JSONClientError)
if ok {
httperrors.JsonClientError(w, v)
} else {
httperrors.BadGatewayError(w, fmt.Sprintf("%s", reterr.Interface()))
return
}
httperrors.BadGatewayError(w, fmt.Sprintf("%s", reterr.Interface()))
}
}

View File

@@ -29,7 +29,7 @@ type GatewayOptions struct {
SqlitePath string `help:"sqlite db path" default:"/etc/yunion/data/yunionapi.db"`
common_options.CommonOptions
common_options.CommonOptions `"request_worker_count->default":"32"`
}
var (
@@ -40,9 +40,10 @@ func OnOptionsChange(oldO, newO interface{}) bool {
oldOpts := oldO.(*GatewayOptions)
newOpts := newO.(*GatewayOptions)
changed := false
if common_options.OnCommonOptionsChange(&oldOpts.CommonOptions, &newOpts.CommonOptions) {
return true
changed = true
}
return false
return changed
}

View File

@@ -0,0 +1 @@
package proxy // import "yunion.io/x/onecloud/pkg/apis/cloudcommon/proxy"

View File

@@ -0,0 +1,51 @@
package proxy
import (
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/apis"
)
const (
ProxySettingId_DIRECT = "DIRECT"
)
type ProxySettingCreateInput struct {
apis.StandaloneResourceCreateInput
ProxySetting
}
type ProxySettingUpdateInput struct {
// 资源名称
Name string `json:"name"`
// 资源描述
Description string `json:"description"`
ProxySetting
}
// String implements ISerializable interface
func (ps *SProxySetting) String() string {
return jsonutils.Marshal(ps).String()
}
// IsZero implements ISerializable interface
func (ps *SProxySetting) IsZero() bool {
if ps.HTTPProxy == "" &&
ps.HTTPSProxy == "" &&
ps.NoProxy == "" {
return true
}
return false
}
type ProxySettingResourceInput struct {
// 代理配置
ProxySettingId string `json:"proxy_setting_id"`
}
type ProxySettingTestInput struct {
HttpProxy string
HttpsProxy string
}

View File

@@ -0,0 +1,111 @@
package proxy
import (
"fmt"
"net"
"net/url"
"strings"
"yunion.io/x/pkg/errors"
)
type ProxySetting struct {
HttpProxy string
HttpsProxy string
NoProxy string
}
func (v *ProxySetting) Sanitize() error {
v.HttpProxy = strings.TrimSpace(v.HttpProxy)
if u, err := parseProxy(v.HttpProxy); err != nil {
return errors.Wrap(err, "invalid https_proxy url")
} else if u != nil {
v.HttpProxy = u.String()
}
v.HttpsProxy = strings.TrimSpace(v.HttpsProxy)
if u, err := parseProxy(v.HttpsProxy); err != nil {
return errors.Wrap(err, "invalid http_proxy url")
} else if u != nil {
v.HttpsProxy = u.String()
}
if noProxy, err := parseNoProxy(v.NoProxy); err == nil {
v.NoProxy = strings.Join(noProxy, ",")
} else {
return errors.Wrap(err, "invalid no_proxy")
}
return nil
}
func parseProxy(proxy string) (*url.URL, error) {
if proxy == "" {
return nil, nil
}
proxyURL, err := url.Parse(proxy)
if err != nil ||
(proxyURL.Scheme != "http" &&
proxyURL.Scheme != "https" &&
proxyURL.Scheme != "socks5") {
// proxy was bogus. Try prepending "http://" to it and
// see if that parses correctly. If not, we fall
// through and complain about the original one.
if proxyURL, err := url.Parse("http://" + proxy); err == nil {
return proxyURL, nil
}
}
if err != nil {
return nil, errors.Wrapf(err, "invalid proxy address %q", proxy)
}
return proxyURL, nil
}
func parseNoProxy(noProxy string) ([]string, error) {
var r []string
for _, p := range strings.Split(noProxy, ",") {
p = strings.ToLower(strings.TrimSpace(p))
if len(p) == 0 {
continue
}
if p == "*" {
r = append(r, p)
// let it go
//return r, nil
}
// IPv4/CIDR, IPv6/CIDR
if _, _, err := net.ParseCIDR(p); err == nil {
r = append(r, p)
continue
}
// IPv4:port, [IPv6]:port
phost, _, err := net.SplitHostPort(p)
if err == nil {
if len(phost) == 0 {
// There is no host part, likely the entry is malformed; ignore.
return nil, fmt.Errorf("host part must not be empty: %s", p)
}
if phost[0] == '[' && phost[len(phost)-1] == ']' {
phost = phost[1 : len(phost)-1]
}
} else {
phost = p
}
// IPv4, IPv6
if pip := net.ParseIP(phost); pip != nil {
r = append(r, p)
continue
}
if len(phost) == 0 {
// There is no host part, likely the entry is malformed; ignore.
continue
}
r = append(r, p)
}
return r, nil
}

View File

@@ -0,0 +1,27 @@
// 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.
// Code generated by model-api-gen. DO NOT EDIT.
package proxy
import (
"yunion.io/x/onecloud/pkg/apis"
)
// SProxySetting is an autogenerated struct via yunion.io/x/onecloud/pkg/cloudcommon/db/proxy.SProxySetting.
type SProxySetting struct {
apis.SStandaloneResourceBase
HTTPProxy string `json:"http_proxy"`
HTTPSProxy string `json:"https_proxy"`
NoProxy string `json:"no_proxy"`
}

View File

@@ -16,8 +16,16 @@ package cloudprovider
// SGeographicInfo is an autogenerated struct via yunion.io/x/onecloud/pkg/cloudprovider.SGeographicInfo.
type SGeographicInfo struct {
Latitude float32 `json:"latitude"`
Longitude float32 `json:"longitude"`
City string `json:"city"`
CountryCode string `json:"country_code"`
// 纬度
// example: 26.647003
Latitude float32 `json:"latitude"`
// 经度
// example: 106.630211
Longitude float32 `json:"longitude"`
// 城市
// example: Guiyang
City string `json:"city"`
// 国家代码
// example: CN
CountryCode string `json:"country_code"`
}

View File

@@ -231,6 +231,9 @@ type BaremetalDiskConfig struct {
}
type ServerConfigs struct {
// 调度使用指定的云账号
PreferManager string `json:"prefer_manager_id"`
// 调度到指定区域,优先级低于prefer_zone_id
PreferRegion string `json:"prefer_region_id"`
@@ -354,6 +357,9 @@ type ServerCreateInput struct {
// required: false
UserData string `json:"user_data"`
// swagger:ignore
Keypair string `json:"keypair" deprecated-by:"keypair_id"`
// 秘钥对Id
// required: false
KeypairId string `json:"keypair_id"`

View File

@@ -0,0 +1,26 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type BaremetalagentDetails struct {
apis.StandaloneResourceDetails
SBaremetalagent
// 裸金属代理程序所在的可用区
// example: zone1
Zone string `json:"zone"`
}

View File

@@ -49,10 +49,13 @@ type BucketCreateInput struct {
StorageClass string `json:"storage_class"`
}
type BucketDetail struct {
apis.Meta
type BucketDetails struct {
apis.VirtualResourceDetails
SBucket
CloudproviderDetails
CloudproviderInfo
AccessUrls []cloudprovider.SBucketAccessUrl `json:"access_urls"`
}
type BucketObjectsActionInput struct {

View File

@@ -14,6 +14,8 @@
package compute
import "yunion.io/x/onecloud/pkg/apis"
type CachedImageUncacheImageInput struct {
// 存储缓存名Id
// required: true
@@ -23,3 +25,31 @@ type CachedImageUncacheImageInput struct {
// default: false
IsForce bool `json:"is_force"`
}
type CachedimageDetails struct {
apis.StandaloneResourceDetails
SCachedimage
// 镜像状态, 和info里面的status一致
// example: active
Status string `json:"status"`
// 操作系统类型
// example: FreeBSD
OsType string `json:"os_type"`
// 操作系统发行版
// example: FreeBSD
OsDistribution string `json:"os_distribution"`
// 操作系统版本
// example: 11
OsVersion string `json:"os_version"`
// 虚拟化类型
Hypervisor string `json:"hypervisor"`
// 此镜像被使用次数
// example: 0
CachedCount int `json:"cached_count"`
}

View File

@@ -0,0 +1,24 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type CachedLoadbalancerAclDetails struct {
apis.SharableVirtualResourceDetails
SCachedLoadbalancerAcl
CloudproviderInfo
}

View File

@@ -0,0 +1,24 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type CachedLoadbalancerCertificateDetails struct {
apis.VirtualResourceDetails
SCachedLoadbalancerCertificate
CloudproviderInfo
}

View File

@@ -19,6 +19,7 @@ import (
"yunion.io/x/pkg/utils"
"yunion.io/x/onecloud/pkg/apis"
proxyapi "yunion.io/x/onecloud/pkg/apis/cloudcommon/proxy"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/httperrors"
)
@@ -79,6 +80,8 @@ type CloudaccountCreateInput struct {
// 额外信息,例如账单的access key
Options *jsonutils.JSONObject `json:"options"`
proxyapi.ProxySettingResourceInput
cloudprovider.SCloudaccount
cloudprovider.SCloudaccountCredential
}
@@ -106,3 +109,77 @@ type CloudaccountListInput struct {
CapabilityListInput
}
type ProviderProject struct {
// 子订阅项目名称
// example: system
Tenant string `json:"tenant"`
// 子订阅项目Id
// 9a48383a-467a-4542-8b50-4e15b0a8715f
TenantId string `json:"tenant_id"`
}
type CloudaccountDetail struct {
apis.StandaloneResourceDetails
SCloudaccount
// 子订阅项目信息
Projects []ProviderProject `json:"projects"`
// 同步时间间隔
// example: 3600
SyncIntervalSeconds int `json:"sync_interval_seconds"`
// 同步状态
SyncStatus2 string `json:"sync_stauts2"`
// 云账号环境类型
// public: 公有云
// private: 私有云
// onpremise: 本地IDC
// example: public
CloudEnv string `json:"cloud_env"`
// 云账号项目名称
// example: system
Tenant string `json:"tenant"`
// 弹性公网Ip数量
// example: 2
EipCount int `json:"eip_count,allowempty"`
// 虚拟私有网络数量
// example: 4
VpcCount int `json:"vpc_count,allowempty"`
// 云盘数量
// example: 12
DiskCount int `json:"disk_count,allowempty"`
// 宿主机数量(不计算虚拟机宿主机数量)
// example: 0
HostCount int `json:"host_count,allowempty"`
// 云主机数量
// example: 4
GuestCount int `json:"guest_count,allowempty"`
// 块存储数量
// example: 12
StorageCount int `json:"storage_count,allowempty"`
// 子订阅数量
// example: 1
ProviderCount int `json:"provider_count,allowempty"`
// 路由表数量
// example: 0
RoutetableCount int `json:"routetable_count,allowempty"`
// 存储缓存数量
// example: 10
StoragecacheCount int `json:"storagecache_count,allowempty"`
ProxySetting proxyapi.SProxySetting `json:"proxy_setting"`
}

View File

@@ -18,29 +18,126 @@ import (
"yunion.io/x/pkg/utils"
"yunion.io/x/onecloud/pkg/apis"
proxyapi "yunion.io/x/onecloud/pkg/apis/cloudcommon/proxy"
"yunion.io/x/onecloud/pkg/cloudprovider"
)
type CloudproviderDetails struct {
Provider string `json:"provider,omitempty"`
Brand string `json:"brand,omitempty"`
Account string `json:"account,omitempty"`
AccountId string `json:"account_id,omitempty"`
Manager string `json:"manager,omitempty"`
ManagerId string `json:"manager_id,omitempty"`
ManagerProject string `json:"manager_project,omitempty"`
type CloudproviderInfo struct {
// 云平台
// example: Google
Provider string `json:"provider,omitempty"`
// 云平台品牌
// example: Google
Brand string `json:"brand,omitempty"`
// 云账号名称
// example: google-account
Account string `json:"account,omitempty"`
// 云账号Id
// example: 4d3c8979-9dd0-439b-8d78-36fe1ab1666c
AccountId string `json:"account_id,omitempty"`
// 子订阅名称
// example: google-account
Manager string `json:"manager,omitempty"`
// 子订阅Id
// example: fa4aaf88-aed8-422d-84e7-56dea533b364
ManagerId string `json:"manager_id,omitempty"`
// 子订阅所在项目名称
// example: system
ManagerProject string `json:"manager_project,omitempty"`
// 子订阅所在项目Id
// example: 4d3c8979-9dd0-439b-8d78-36fe1ab1666c
ManagerProjectId string `json:"manager_project_id,omitempty"`
ManagerDomain string `json:"manager_domain,omitempty"`
ManagerDomainId string `json:"manager_domain_id,omitempty"`
Region string `json:"region,omitempty"`
RegionId string `json:"region_id,omitempty"`
CloudregionId string `json:"cloudregion_id,omitempty"`
// 子订阅所在域名称
// example: Default
ManagerDomain string `json:"manager_domain,omitempty"`
// 子订阅所在域Id
// example: default
ManagerDomainId string `json:"manager_domain_id,omitempty"`
// 区域名称
// example: 腾讯云 华南地区(广州)
Region string `json:"region,omitempty"`
// 区域Id
// example: 6151c89b-77f2-4d43-8ef9-cd03d604a16b
RegionId string `json:"region_id,omitempty"`
// 区域Id
// example: 6151c89b-77f2-4d43-8ef9-cd03d604a16b
CloudregionId string `json:"cloudregion_id,omitempty"`
// 区域外部Id
// Qcloud/ap-guangzhou
RegionExternalId string `json:"region_external_id,omitempty"`
RegionExtId string `json:"region_ext_id,omitempty"`
Zone string `json:"zone,omitempty"`
ZoneId string `json:"zone_id,omitempty"`
ZoneExtId string `json:"zone_ext_id,omitempty"`
CloudEnv string `json:"cloud_env,omitempty"`
// 区域外部Id(不携带平台信息)
// example: ap-guangzhou
RegionExtId string `json:"region_ext_id,omitempty"`
// 可用区名称
// example: 腾讯云 广州四区
Zone string `json:"zone,omitempty"`
// 可用区Id
// example: 336ac6d2-b80d-43bb-86d5-1ebf474da8d4
ZoneId string `json:"zone_id,omitempty"`
// 可用区外部Id
// example: ap-guangzhou-4
ZoneExtId string `json:"zone_ext_id,omitempty"`
// 云环境
// example: public
CloudEnv string `json:"cloud_env,omitempty"`
}
type CloudproviderDetails struct {
apis.StandaloneResourceDetails
SCloudprovider
ProxySetting proxyapi.SProxySetting `json:"proxy_setting"`
// 云账号名称
// example: google-account
Cloudaccount string `json:"cloudaccount"`
// 子订阅同步状态
SyncStatus2 string `json:"sync_status2"`
// 支持服务列表
Capabilities []string `json:"capabilities"`
// 云主机数量
// example: 1
GuestCount int `json:"guest_count"`
// 宿主机数量
// example: 2
HostCount int `json:"host_count"`
// 虚拟私有网络数量
// example: 4
VpcCount int `json:"vpc_count"`
// 块存储梳理
// example: 4
StorageCount int `json:"storage_count"`
// 存储缓存数量
// example: 1
StorageCacheCount int `json:"storagecache_count"`
// 弹性公网IP数量
// example: 12
EipCount int `json:"eip_count"`
// 快照数量
// example: 0
SnapshotCount int `json:"snapshot_count"`
// 负载均衡器数量
// example: 2
LoadbalancerCount int `json:"loadbalancer_count"`
// 项目数量
ProjectCount int `json:"project_count"`
// 同步区域数量
SyncRegionCount int `json:"sync_region_count"`
// 子订阅品牌信息
Brand string `json:"brand"`
}
type ManagedResourceListInput struct {

View File

@@ -0,0 +1,41 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type CloudproviderregionDetails struct {
apis.JoinModelBaseDetails
Cloudprovider string
Cloudregion string
// 云账号Id
// example: fa4aaf88-aed8-422d-84e7-56dea533b364
CloudaccountId string `json:"cloudaccount_id"`
// 云账号名称
// example: googl-account
Cloudaccount string `json:"cloudaccount"`
// 云账号所在域Id
// example: 0df40413-eb69-49c7-895e-618ddeb80f55
CloudaccountDomainId string `json:"cloudaccount_domain_id"`
// 是否开启自动同步
// example: false
EnableAutoSync bool `json:"enable_auto_sync"`
// 自动同步周期
// example: 300
SyncIntervalSeconds int `json:"sync_interval_seconds"`
}

View File

@@ -0,0 +1,56 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type CloudregionDetails struct {
apis.StandaloneResourceDetails
SCloudregion
// 虚拟私有网络数量
// example: 2
VpcCount int `json:"vpc_count,allowempty"`
// 可用区数量
// example: 3
ZoneCount int `json:"zone_count,allowempty"`
// 云主机梳理
// example: 2
GuestCount int `json:"guest_count,allowempty"`
// IP子网数量
// example: 12
NetworkCount int `json:"network_count,allowempty"`
// 距离前天0点新增云主机数量
// example: 0
GuestIncrementCount int `json:"guest_increment_count,allowempty"`
}
type CloudregionInfo struct {
// 区域的名称
// example: Default
Region string `json:"region"`
// 区域的Id
// example: default
RegionId string `json:"region_id"`
// 纳管云区域的组合Id(平台+Id)
// example: ZStack/59e7bc87-a6b3-4c39-8f02-c68e8243d4e4
RegionExternalId string `json:"region_external_id"`
// 纳管云区域的Id
// example: 59e7bc87-a6b3-4c39-8f02-c68e8243d4e4
RegionExtId string `json:"region_ext_id"`
}

View File

@@ -36,6 +36,7 @@ const (
CITY_TAIPEI = "Taipei" //台北市
CITY_KAOHSIUNG = "Kaohsiung" //高雄市
CITY_CHENG_DU = "Chengdu" //成都
CITY_HE_YUAN = "HeYuan" //河源
CITY_CHONG_QING = "Chongqing" //重庆
CITY_LAN_ZHOU = "Lanzhou" //兰州
CITY_TAI_YUAN = "Taiyuan" //太原
@@ -76,6 +77,11 @@ const (
//瑞士
CITY_ZURICH = "Zurich" //苏黎世
CITY_GENEVA = "Geneva" //日内瓦
// 挪威
CITY_STAVANGER = "Stavanger" //斯塔万格
CITY_OSLO = "Oslo" // 奥斯陆
// 马来西亚
CITY_KUALA_LUMPUR = "Kuala Lumpur" //吉隆坡
@@ -104,6 +110,7 @@ const (
CITY_IOWA = "Iowa" //爱荷华
CITY_US_GOV_WEST = "us-gov-west" //???
CITY_SOUTH_CAROLINA = "South Carolina" //南卡罗来纳州
CITY_SALT_LAKE_CITY = "Salt Lake City" //盐湖城
// 英国
CITY_LONDON = "London" //伦敦
@@ -114,7 +121,8 @@ const (
CITY_DUBAI = "Dubai" //迪拜
// 德国
CITY_FRANKFURT = "Frankfurt" //法兰克福
CITY_FRANKFURT = "Frankfurt" // 法兰克福
CITY_DELMENHORST = "Delmenhorst" // 代尔门霍斯特
// 韩国
CITY_SEOUL = "Seoul" //首尔
@@ -185,4 +193,5 @@ const (
COUNTRY_CODE_NG = "NG" //尼日利亚
COUNTRY_CODE_VN = "VN" //越南
COUNTRY_CODE_CH = "CH" //瑞士
COUNTRY_CODE_NO = "NO" //挪威
)

View File

@@ -214,3 +214,24 @@ type DbinstanceFilterListInput struct {
// filter by dbinstance_id
DbinstanceId string `json:"dbinstance_id" deprecated-by:"dbinstance"`
}
type DBInstanceDetails struct {
apis.VirtualResourceDetails
SDBInstance
CloudproviderInfo
// 虚拟私有网络名称
// example: test-vpc
Vpc string `json:"vpc"`
// 安全组名称
// example: Default
Secgroup string `json:"secgroup"`
// iops
// example: 0
Iops int `json:"iops"`
// IP子网名称
// example: test-network
Network string `json:"network"`
// 标签信息
Metadata map[string]string `json:"metadata"`
}

View File

@@ -67,3 +67,22 @@ type DBInstanceAccountCreateInput struct {
type SDBInstanceSetPrivilegesInput struct {
Privileges []SDBInstanceAccountPrivilege `json:"privileges"`
}
type DBInstancePrivilege struct {
// 数据库名称
Database string
// 账号名称
Account string
// 数据库Id
DBInstancedatabaseId string
// 权限
Privileges string
}
type DBInstanceAccountDetails struct {
apis.StandaloneResourceDetails
SDBInstanceAccount
// 账号权限列表
DBInstanceprivileges []DBInstancePrivilege `json:"dbinstanceprivileges,allowempty"`
}

View File

@@ -42,3 +42,13 @@ type DBInstanceBackupCreateInput struct {
// swagger:ignore
ManagerId string
}
type DBInstanceBackupDetails struct {
apis.VirtualResourceDetails
SDBInstanceBackup
// RDS实例名称
DBInstance string `json:"dbinstance"`
CloudproviderInfo
}

View File

@@ -108,10 +108,10 @@ const (
ALIYUN_DBINSTANCE_STORAGE_TYPE_CLOUD_SSD = "cloud_ssd" //SSD云盘
//华为云存储类型
HUAWEI_DBINSTANCE_STORAGE_TYPE_SSD = "SSD" //超高IO云硬盘
HUAWEI_DBINSTANCE_STORAGE_TYPE_SAS = "SAS" //高IO云硬盘
HUAWEI_DBINSTANCE_STORAGE_TYPE_SATA = "SATA" //普通IO云硬盘
HUAWEI_DBINSTANCE_STORAGE_TYPE_ULTRAHIGH = "ULTRAHIGH" //超高IO云硬盘
HUAWEI_DBINSTANCE_STORAGE_TYPE_ULTRAHIGHPRO = "ULTRAHIGHPRO"
HUAWEI_DBINSTANCE_STORAGE_TYPE_COMMON = "COMMON"
HUAWEI_DBINSTANCE_STORAGE_TYPE_HIGH = "HIGH"
)
var (

View File

@@ -60,3 +60,11 @@ type DBInstanceDatabaseCreateInput struct {
// required: false
Accounts []SDBInstanceDatabasePrivilege `json:"accounts"`
}
type DBInstancedatabaseDetails struct {
apis.StandaloneResourceDetails
SDBInstanceDatabase
// 数据库权限
DBInstanceprivileges []DBInstancePrivilege `json:"dbinstanceprivileges"`
}

View File

@@ -0,0 +1,23 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type DBInstanceSkuDetails struct {
apis.StandaloneResourceDetails
CloudregionInfo
}

View File

@@ -15,6 +15,8 @@
package compute
import (
"time"
"yunion.io/x/onecloud/pkg/apis"
)
@@ -128,3 +130,53 @@ type DiskFilterListInput struct {
// filter by disk_id
DiskId string `json:"disk_id" deprecated-by:"disk"`
}
type SimpleGuest struct {
Name string `json:"name"`
Id string `json:"id"`
Status string `json:"status"`
}
type SimpleSnapshotPolicy struct {
Id string `json:"id"`
Name string `json:"name"`
RepeatWeekdays []int `json:"repeat_weekdays"`
TimePoints []int `json:"time_points"`
}
type DiskDetails struct {
apis.VirtualResourceDetails
SDisk
CloudproviderInfo
// 云平台
Provider string `json:"provider"`
// 存储名称
Storage string `json:"storage"`
// 存储类型
StorageType string `json:"storage_type"`
// 介质类型
MediumType string `json:"medium_type"`
// 所挂载的虚拟机
Guests []SimpleGuest `json:"guests"`
// 所挂载的虚拟机
Guest string `json:"guest"`
// 所挂载虚拟机的数量
GuestCount int `json:"guest_count"`
// 所挂载虚拟机状态
GuestStatus string `json:"guest_status"`
// 自动清理时间
AutoDeleteAt time.Time `json:"auto_delete_at"`
// 自动快照策略状态
SnapshotpolicyStatus string `json:"snapshotpolicy_status,allowempty"`
// 自动快照策略
Snapshotpolicies []SimpleSnapshotPolicy `json:"snapshotpolicies"`
// 手动快照数量
ManualSnapshotCount int `json:"manual_snapshot_count"`
// 最多可创建手动快照数量
MaxManualSnapshotCount int `json:"max_manual_snapshot_count"`
}

View File

@@ -0,0 +1,25 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type DynamicschedtagDetails struct {
apis.StandaloneResourceDetails
SDynamicschedtag
Schedtag string `json:"schedtag"`
ResourceType string `json:"resource_type"`
}

View File

@@ -0,0 +1,30 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type ElasticcacheDetails struct {
apis.VirtualResourceDetails
SElasticcache
CloudproviderInfo
// 虚拟私有网络名称
Vpc string `json:"vpc"`
// IP子网名称
Network string `json:"network"`
}

View File

@@ -0,0 +1,29 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type ElasticcacheBackupDetails struct {
apis.StandaloneResourceDetails
SElasticcacheBackup
CloudproviderInfo
// 引擎
Engine string `json:"engine"`
// 引擎版本
EngineVersion string `json:"engine_version"`
}

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 compute
import "yunion.io/x/onecloud/pkg/apis"
type ElasticcacheSkuDetails struct {
apis.StandaloneResourceDetails
SElasticcacheSku
}

View File

@@ -67,3 +67,13 @@ type SElasticipCreateInput struct {
// swagger:ignore
NetworkId string
}
type ElasticipDetails struct {
apis.VirtualResourceDetails
SElasticip
CloudproviderInfo
// 绑定资源名称
AssociateName string `json:"associate_name"`
}

View File

@@ -43,10 +43,6 @@ const (
EIP_CHARGE_TYPE_BY_TRAFFIC = "traffic"
EIP_CHARGE_TYPE_BY_BANDWIDTH = "bandwidth"
EIP_CHARGE_TYPE_DEFAULT = EIP_CHARGE_TYPE_BY_TRAFFIC
// EIP associate resource type
EIP_ASSOCIATE_TYPE_VM = "server"
EIP_ASSOCIATE_TYPE_ELB = "elb"
)
var (

View File

@@ -0,0 +1,26 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import "yunion.io/x/onecloud/pkg/apis"
type ExternalProjectDetails struct {
apis.StandaloneResourceDetails
SExternalProject
CloudproviderInfo
Tenant string `json:"tenant"`
}

View File

@@ -21,3 +21,8 @@ import (
type GlobalVpcCreateInput struct {
apis.EnabledStatusStandaloneResourceCreateInput
}
type GlobalVpcDetails struct {
apis.StandaloneResourceDetails
SGlobalVpc
}

View File

@@ -0,0 +1,29 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import (
"yunion.io/x/onecloud/pkg/apis"
)
type GroupguestDetails struct {
apis.JoinModelBaseDetails
Instancegroup string
Server string
Guest string
SGroupguest
}

View File

@@ -0,0 +1,29 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package compute
import (
"yunion.io/x/onecloud/pkg/apis"
)
type GroupnetworkDetails struct {
apis.JoinModelBaseDetails
SGroupnetwork
// 主机组名称
Instancegroup string
// IP子网名称
Network string
}

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