From 7450dd2496a4b59cb31d7d82b35a5a2a85b60dab Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Fri, 14 Jun 2019 11:41:20 +0800 Subject: [PATCH] fix: sync network publicScope --- pkg/cloudcommon/db/sharablevirtual.go | 2 +- pkg/cloudprovider/resources.go | 2 ++ pkg/compute/models/networks.go | 2 ++ pkg/mcclient/modules/mod_networks.go | 2 +- pkg/util/aliyun/vswitch.go | 5 +++++ pkg/util/aws/network.go | 5 +++++ pkg/util/azure/classic_network.go | 5 +++++ pkg/util/azure/network.go | 5 +++++ pkg/util/huawei/network.go | 5 +++++ pkg/util/openstack/network.go | 5 +++++ pkg/util/qcloud/network.go | 5 +++++ pkg/util/ucloud/network.go | 5 +++++ pkg/util/zstack/network.go | 5 +++++ 13 files changed, 51 insertions(+), 2 deletions(-) diff --git a/pkg/cloudcommon/db/sharablevirtual.go b/pkg/cloudcommon/db/sharablevirtual.go index 2158afc1ed..02a678ab12 100644 --- a/pkg/cloudcommon/db/sharablevirtual.go +++ b/pkg/cloudcommon/db/sharablevirtual.go @@ -104,7 +104,7 @@ func (model *SSharableVirtualResourceBase) AllowPerformPublic(ctx context.Contex func (model *SSharableVirtualResourceBase) PerformPublic(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { if !model.IsPublic { - targetScopeStr, _ := query.GetString("scope") + targetScopeStr, _ := data.GetString("scope") targetScope := rbacutils.String2ScopeDefault(targetScopeStr, rbacutils.ScopeSystem) allowScope := policy.PolicyManager.AllowScope(userCred, consts.GetServiceType(), model.GetModelManager().KeywordPlural(), policy.PolicyActionPerform, "public") if targetScope.HigherThan(allowScope) { diff --git a/pkg/cloudprovider/resources.go b/pkg/cloudprovider/resources.go index 4f4ae9ecc2..0cbd4612a7 100644 --- a/pkg/cloudprovider/resources.go +++ b/pkg/cloudprovider/resources.go @@ -24,6 +24,7 @@ import ( "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/util/billing" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) type ICloudResource interface { @@ -420,6 +421,7 @@ type ICloudNetwork interface { GetGateway() string GetServerType() string GetIsPublic() bool + GetPublicScope() rbacutils.TRbacScope Delete() error diff --git a/pkg/compute/models/networks.go b/pkg/compute/models/networks.go index 2c5491bc2b..29721e3ebc 100644 --- a/pkg/compute/models/networks.go +++ b/pkg/compute/models/networks.go @@ -572,6 +572,7 @@ func (self *SNetwork) SyncWithCloudNetwork(ctx context.Context, userCred mcclien self.GuestGateway = extNet.GetGateway() self.ServerType = extNet.GetServerType() self.IsPublic = extNet.GetIsPublic() + self.PublicScope = string(extNet.GetPublicScope()) self.AllocTimoutSeconds = extNet.GetAllocTimeoutSeconds() @@ -606,6 +607,7 @@ func (manager *SNetworkManager) newFromCloudNetwork(ctx context.Context, userCre net.GuestGateway = extNet.GetGateway() net.ServerType = extNet.GetServerType() net.IsPublic = extNet.GetIsPublic() + net.PublicScope = string(extNet.GetPublicScope()) net.AllocTimoutSeconds = extNet.GetAllocTimeoutSeconds() diff --git a/pkg/mcclient/modules/mod_networks.go b/pkg/mcclient/modules/mod_networks.go index 654fa784c9..e5bf851290 100644 --- a/pkg/mcclient/modules/mod_networks.go +++ b/pkg/mcclient/modules/mod_networks.go @@ -22,7 +22,7 @@ func init() { Networks = NewComputeManager("network", "networks", []string{"ID", "Name", "Guest_ip_start", "zone", "zone_id", "Guest_ip_end", "Guest_ip_mask", - "wire_id", "wire", "is_public", "exit", "Ports", + "wire_id", "wire", "is_public", "public_scope", "exit", "Ports", "vnics", "guest_gateway", "group_vnics", "bm_vnics", "reserve_vnics", "lb_vnics", "server_type", "Status"}, diff --git a/pkg/util/aliyun/vswitch.go b/pkg/util/aliyun/vswitch.go index d0934b31ca..82733f5582 100644 --- a/pkg/util/aliyun/vswitch.go +++ b/pkg/util/aliyun/vswitch.go @@ -26,6 +26,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) // {"AvailableIpAddressCount":4091,"CidrBlock":"172.31.32.0/20","CreationTime":"2017-03-19T13:37:44Z","Description":"System created default virtual switch.","IsDefault":true,"Status":"Available","VSwitchId":"vsw-j6c3gig5ub4fmi2veyrus","VSwitchName":"","VpcId":"vpc-j6c86z3sh8ufhgsxwme0q","ZoneId":"cn-hongkong-b"} @@ -137,6 +138,10 @@ func (self *SVSwitch) GetIsPublic() bool { return true } +func (self *SVSwitch) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (self *SRegion) createVSwitch(zoneId string, vpcId string, name string, cidr string, desc string) (string, error) { params := make(map[string]string) params["ZoneId"] = zoneId diff --git a/pkg/util/aws/network.go b/pkg/util/aws/network.go index 6b409b86c7..4c060ee94f 100644 --- a/pkg/util/aws/network.go +++ b/pkg/util/aws/network.go @@ -27,6 +27,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) type SNetwork struct { @@ -123,6 +124,10 @@ func (self *SNetwork) GetIsPublic() bool { return true } +func (self *SNetwork) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (self *SNetwork) Delete() error { return self.wire.zone.region.deleteNetwork(self.NetworkId) } diff --git a/pkg/util/azure/classic_network.go b/pkg/util/azure/classic_network.go index 8236d19f65..fee46764c5 100644 --- a/pkg/util/azure/classic_network.go +++ b/pkg/util/azure/classic_network.go @@ -22,6 +22,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) type SClassicNetwork struct { @@ -105,6 +106,10 @@ func (self *SClassicNetwork) GetIsPublic() bool { return true } +func (self *SClassicNetwork) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (self *SClassicNetwork) GetServerType() string { return api.NETWORK_TYPE_GUEST } diff --git a/pkg/util/azure/network.go b/pkg/util/azure/network.go index 676f93b694..2e80007e5c 100644 --- a/pkg/util/azure/network.go +++ b/pkg/util/azure/network.go @@ -22,6 +22,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) type SNetwork struct { @@ -111,6 +112,10 @@ func (self *SNetwork) GetIsPublic() bool { return true } +func (self *SNetwork) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (self *SNetwork) GetServerType() string { return api.NETWORK_TYPE_GUEST } diff --git a/pkg/util/huawei/network.go b/pkg/util/huawei/network.go index 71bce941f8..c5dca81147 100644 --- a/pkg/util/huawei/network.go +++ b/pkg/util/huawei/network.go @@ -22,6 +22,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/util/huawei/client/modules" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) /* @@ -134,6 +135,10 @@ func (self *SNetwork) GetIsPublic() bool { return true } +func (self *SNetwork) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (self *SNetwork) Delete() error { return self.wire.region.deleteNetwork(self.VpcID, self.GetId()) } diff --git a/pkg/util/openstack/network.go b/pkg/util/openstack/network.go index 8c530cf263..fd096121ed 100644 --- a/pkg/util/openstack/network.go +++ b/pkg/util/openstack/network.go @@ -23,6 +23,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) type AllocationPool struct { @@ -142,6 +143,10 @@ func (network *SNetwork) GetIsPublic() bool { return true } +func (network *SNetwork) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (network *SNetwork) GetServerType() string { return api.NETWORK_TYPE_GUEST } diff --git a/pkg/util/qcloud/network.go b/pkg/util/qcloud/network.go index f6cd076491..1ec0a1ba16 100644 --- a/pkg/util/qcloud/network.go +++ b/pkg/util/qcloud/network.go @@ -24,6 +24,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) type SNetwork struct { @@ -143,6 +144,10 @@ func (self *SNetwork) GetIsPublic() bool { return true } +func (self *SNetwork) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (self *SNetwork) GetServerType() string { return api.NETWORK_TYPE_GUEST } diff --git a/pkg/util/ucloud/network.go b/pkg/util/ucloud/network.go index 41f8714d48..54f25d9354 100644 --- a/pkg/util/ucloud/network.go +++ b/pkg/util/ucloud/network.go @@ -22,6 +22,7 @@ import ( api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudprovider" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) // https://docs.ucloud.cn/api/vpc2.0-api/describe_subnet @@ -123,6 +124,10 @@ func (self *SNetwork) GetIsPublic() bool { return true } +func (self *SNetwork) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (self *SNetwork) Delete() error { return self.wire.region.DeleteNetwork(self.GetId()) } diff --git a/pkg/util/zstack/network.go b/pkg/util/zstack/network.go index 79dd6be7d3..d6a218cdd2 100644 --- a/pkg/util/zstack/network.go +++ b/pkg/util/zstack/network.go @@ -22,6 +22,7 @@ import ( "yunion.io/x/pkg/util/netutils" api "yunion.io/x/onecloud/pkg/apis/compute" + "yunion.io/x/onecloud/pkg/util/rbacutils" ) type SNetwork struct { @@ -192,6 +193,10 @@ func (network *SNetwork) GetIsPublic() bool { return true } +func (self *SNetwork) GetPublicScope() rbacutils.TRbacScope { + return rbacutils.ScopeDomain +} + func (network *SNetwork) GetServerType() string { return api.NETWORK_TYPE_GUEST }