use deprecated-by tag to describe deprecated fields

This commit is contained in:
Qiu Jian
2020-01-13 13:19:47 +08:00
parent 29c9d05b5f
commit b9be567ebf
48 changed files with 336 additions and 506 deletions
+29 -56
View File
@@ -44,43 +44,52 @@ type CloudproviderDetails struct {
}
type ManagedResourceListInput struct {
// List objects belonging to the cloud provider
// 列出关联指定云订阅(ID或Name)的资源
Cloudprovider string `json:"cloudprovider"`
// List objects belonging to the cloud provider
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
Manager string `json:"manager"`
Manager string `json:"manager" deprecated-by:"cloudprovider"`
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
ManagerId string `json:"manager_id"`
ManagerId string `json:"manager_id" deprecated-by:"cloudprovider"`
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
CloudproviderId string `json:"cloudprovider_id"`
CloudproviderId string `json:"cloudprovider_id" deprecated-by:"cloudprovider"`
// List objects belonging to the cloud account
// 列出关联指定云账号(ID或Name)的资源
Cloudaccount string `json:"cloudaccount"`
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
CloudaccountId string `json:"cloudaccount_id"`
CloudaccountId string `json:"cloudaccount_id" deprecated-by:"cloudaccount"`
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
Account string `json:"account"`
Account string `json:"account" deprecated-by:"cloudaccount"`
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
AccountId string `json:"account_id"`
AccountId string `json:"account_id" deprecated-by:"cloudaccount"`
// List objects from the providers, choices:"OneCloud|VMware|Aliyun|Qcloud|Azure|Aws|Huawei|OpenStack|Ucloud|ZStack|Google"
// 列出指定云平台的资源,支持的云平台如下
// enum: OneCloud,VMware,Aliyun,Qcloud,Azure,Aws,Huawei,OpenStack,Ucloud,ZStack,Google,Ctyun,S3,Ceph,Xsky"
Providers []string `json:"provider"`
// List objects belonging to brands
// 列出指定云平台品牌的资源
Brands []string `json:"brand"`
// 列出指定云环境的资源,支持云环境如下:
//
// | CloudEnv | 说明 |
// |-----------|--------|
// | public | 公有云 |
// | private | 私有云 |
// | onpremise | 本地IDC |
//
// enum: public,private,onpremise
CloudEnv string `json:"cloud_env"`
@@ -107,61 +116,26 @@ type ManagedResourceListInput struct {
// description: this param will be deprecate at 3.0
IsOnPremise bool `json:"is_on_premise"`
// List objects managed by external providers
// 过滤资源,是否为非OneCloud内置私有云管理的资源
// default: false
IsManaged bool `json:"is_managed"`
}
func (input ManagedResourceListInput) CloudaccountStr() string {
if len(input.Cloudaccount) > 0 {
return input.Cloudaccount
}
if len(input.CloudaccountId) > 0 {
return input.CloudaccountId
}
if len(input.Account) > 0 {
return input.Account
}
if len(input.AccountId) > 0 {
return input.AccountId
}
return ""
}
func (input ManagedResourceListInput) CloudproviderStr() string {
if len(input.Cloudprovider) > 0 {
return input.Cloudprovider
}
if len(input.CloudproviderId) > 0 {
return input.CloudproviderId
}
if len(input.Manager) > 0 {
return input.Manager
}
if len(input.ManagerId) > 0 {
return input.ManagerId
}
return ""
}
func (input ManagedResourceListInput) CloudEnvStr() string {
func (input *ManagedResourceListInput) AfterUnmarshal() {
if len(input.CloudEnv) > 0 {
return input.CloudEnv
return
}
if input.PublicCloud || input.IsPublic {
return CLOUD_ENV_PUBLIC_CLOUD
input.CloudEnv = CLOUD_ENV_PUBLIC_CLOUD
} else if input.PrivateCloud || input.IsPrivate {
input.CloudEnv = CLOUD_ENV_PRIVATE_CLOUD
} else if input.IsOnPremise {
input.CloudEnv = CLOUD_ENV_ON_PREMISE
}
if input.PrivateCloud || input.IsPrivate {
return CLOUD_ENV_PRIVATE_CLOUD
}
if input.IsOnPremise {
return CLOUD_ENV_ON_PREMISE
}
return ""
}
type CapabilityListInput struct {
// filter by cloudprovider capability
// 根据该云平台的功能对云账号或云订阅进行过滤
Capability []string `json:"capability"`
// swagger:ignore
// Deprecated
@@ -179,9 +153,8 @@ type CloudproviderListInput struct {
CapabilityListInput
}
func (input CapabilityListInput) CapabilityList() []string {
func (input *CapabilityListInput) AfterUnmarshal() {
if input.HasObjectStorage != nil && *input.HasObjectStorage && !utils.IsInStringArray(cloudprovider.CLOUD_CAPABILITY_OBJECTSTORE, input.Capability) {
input.Capability = append(input.Capability, cloudprovider.CLOUD_CAPABILITY_OBJECTSTORE)
}
return input.Capability
}
+2 -12
View File
@@ -159,7 +159,7 @@ type SDBInstanceRecoveryConfigInput struct {
DBInstancebackup string
DBInstancebackupId string `json:"dbinstancebackup_id"`
Databases map[string]string `json:"allowempty"`
Databases map[string]string `json:"databases,allowempty"`
}
type DBInstanceListInput struct {
@@ -212,15 +212,5 @@ type DbinstanceFilterListInput struct {
// swagger:ignore
// Deprecated
// filter by dbinstance_id
DbinstanceId string `json:"dbinstance_id"`
}
func (input DbinstanceFilterListInput) DbinstanceStr() string {
if len(input.Dbinstance) > 0 {
return input.Dbinstance
}
if len(input.DbinstanceId) > 0 {
return input.DbinstanceId
}
return ""
DbinstanceId string `json:"dbinstance_id" deprecated-by:"dbinstance"`
}
+13 -35
View File
@@ -87,17 +87,7 @@ type SnapshotPolicyFilterListInput struct {
// swagger:ignore
// Deprecated
// filter disk by snapshotpolicy_id
SnapshotpolicyId string `json:"snapshotpolicy_id"`
}
func (input SnapshotPolicyFilterListInput) SnapshotpolicyStr() string {
if len(input.Snapshotpolicy) > 0 {
return input.Snapshotpolicy
}
if len(input.SnapshotpolicyId) > 0 {
return input.SnapshotpolicyId
}
return ""
SnapshotpolicyId string `json:"snapshotpolicy_id" deprecated-by:"snapshotpolicy"`
}
type DiskListInput struct {
@@ -117,36 +107,24 @@ type DiskListInput struct {
// swagger:ignore
// Deprecated
// filter by disk type
Type string `json:"type"`
// filter by disk type
Type string `json:"type" deprecated-by:"disk_type"`
// 过滤指定disk_type的磁盘列表,可能的值为:sys, data, swap. volume
//
// | disk_type值 | 说明 |
// |-------------|----------|
// | sys | 虚拟机系统盘 |
// | data | 虚拟机数据盘 |
// | swap | 虚拟机内存交换盘 |
// | volume | 容器volumn盘 |
//
DiskType string `json:"disk_type"`
}
func (input DiskListInput) DiskTypeStr() string {
if len(input.DiskType) > 0 {
return input.DiskType
}
if len(input.Type) > 0 {
return input.Type
}
return ""
}
type DiskFilterListInput struct {
// filter by disk, id or name
// 以指定虚拟磁盘(ID或Name)过滤列表结果
Disk string `json:"disk"`
// swagger:ignore
// Deprecated
// filter by disk_id
DiskId string `json:"disk_id"`
}
func (input DiskFilterListInput) DiskStr() string {
if len(input.Disk) > 0 {
return input.Disk
}
if len(input.DiskId) > 0 {
return input.DiskId
}
return ""
DiskId string `json:"disk_id" deprecated-by:"disk"`
}
+14 -50
View File
@@ -19,66 +19,40 @@ import (
)
type RegionalFilterListInput struct {
// filter by city
// 过滤位于指定城市区域的资源
City string `json:"city"`
// filter by cloudregion
// 过滤处于指定区域内的资源
Cloudregion string `json:"cloudregion"`
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
CloudregionId string `json:"cloudregion_id"`
CloudregionId string `json:"cloudregion_id" deprecated-by:"cloudregion"`
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
Region string `json:"region"`
Region string `json:"region" deprecated-by:"cloudregion"`
// swagger:ignore
// Deprecated
// description: this param will be deprecate at 3.0
RegionId string `json:"region_id"`
}
func (input RegionalFilterListInput) CloudregionStr() string {
if len(input.Cloudregion) > 0 {
return input.Cloudregion
}
if len(input.CloudregionId) > 0 {
return input.CloudregionId
}
if len(input.Region) > 0 {
return input.Region
}
if len(input.RegionId) > 0 {
return input.RegionId
}
return ""
RegionId string `json:"region_id" deprecated-by:"cloudregion"`
}
type ZonalFilterListInput struct {
RegionalFilterListInput
// filter by zone
// 过滤处于指定可用区内的资源
Zone string `json:"zone"`
// swagger:ignore
// Deprecated
// filter by zone_id
ZoneId string `json:"zone_id"`
// filter by an array of zone
ZoneId string `json:"zone_id" deprecated-by:"zone"`
// 过滤处于多个指定可用区内的资源
Zones []string `json:"zones"`
}
func (input ZonalFilterListInput) ZoneStr() string {
if len(input.Zone) > 0 {
return input.Zone
}
if len(input.ZoneId) > 0 {
return input.ZoneId
}
return ""
}
func (input ZonalFilterListInput) ZoneList() []string {
zoneStr := input.ZoneStr()
zoneStr := input.Zone
if len(zoneStr) > 0 {
input.Zones = append(input.Zones, zoneStr)
}
@@ -88,22 +62,12 @@ func (input ZonalFilterListInput) ZoneList() []string {
type HostFilterListInput struct {
ZonalFilterListInput
// filter by host
// 过滤关联指定宿主机(ID或Name)的列表结果
Host string `json:"host"`
// swagger:ignore
// Deprecated
// filter by host_id
HostId string `json:"host_id"`
}
func (input HostFilterListInput) HostStr() string {
if len(input.Host) > 0 {
return input.Host
}
if len(input.HostId) > 0 {
return input.HostId
}
return ""
HostId string `json:"host_id" deprecated-by:"host"`
}
type CloudregionListInput struct {
@@ -114,9 +78,9 @@ type CloudregionListInput struct {
UsableResourceListInput
UsableVpcResourceListInput
// filter by city
// 过滤位于指定城市的区域
City string `json:"city"`
// filter by service???
// 过滤提供特定服务的区域
Service string `json:"service"`
}
@@ -131,6 +95,6 @@ type ZoneListInput struct {
UsableResourceListInput
UsableVpcResourceListInput
// filter by service
// 过滤提供特定服务的可用区
Service string `json:"service"`
}
+5 -26
View File
@@ -24,31 +24,15 @@ type ServerFilterListInput struct {
// swagger:ignore
// Deprecated
// Filter by guest Id
ServerId string `json:"server_id"`
ServerId string `json:"server_id" deprecated-by:"server"`
// swagger:ignore
// Deprecated
// Filter by guest Id
Guest string `json:"guest"`
Guest string `json:"guest" deprecated-by:"server"`
// swagger:ignore
// Deprecated
// Filter by guest Id
GuestId string `json:"guest_id"`
}
func (input ServerFilterListInput) ServerStr() string {
if len(input.Server) > 0 {
return input.Server
}
if len(input.ServerId) > 0 {
return input.ServerId
}
if len(input.Guest) > 0 {
return input.Guest
}
if len(input.GuestId) > 0 {
return input.GuestId
}
return ""
GuestId string `json:"guest_id" deprecated-by:"server"`
}
type ServerListInput struct {
@@ -91,15 +75,10 @@ type ServerListInput struct {
GetBackupGuestsOnHost *bool `json:"get_backup_guests_on_host"`
}
func (input ServerListInput) HypervisorList() []string {
ret := make([]string, 0)
func (input *ServerListInput) AfterUnmarshal() {
if input.Baremetal != nil && *input.Baremetal {
ret = append(ret, HYPERVISOR_BAREMETAL)
input.Hypervisor = append(input.Hypervisor, HYPERVISOR_BAREMETAL)
}
if len(input.Hypervisor) > 0 {
ret = append(ret, input.Hypervisor...)
}
return ret
}
type ServerRebuildRootInput struct {
+4 -14
View File
@@ -21,9 +21,9 @@ type InstanceGroupListInput struct {
ZonalFilterListInput
ServerFilterListInput
// Filter by service type
// service_type过滤列表结果
ServiceType string `json:"service_type"`
// Filter by parent id
// parent_id过滤列表结果
ParentId string `json:"parent_id"`
}
@@ -34,20 +34,10 @@ type InstanceGroupDetail struct {
}
type GroupFilterListInput struct {
// Instance Group ID or Name
// 以指定实例组(ID或Name)过滤列表结果
Group string `json:"group"`
// swagger:ignore
// deprecated: true
// Filter by instance group Id
GroupId string `json:"group_id"`
}
func (input GroupFilterListInput) GroupStr() string {
if len(input.Group) > 0 {
return input.Group
}
if len(input.GroupId) > 0 {
return input.GroupId
}
return ""
GroupId string `json:"group_id" deprecated-by:"group"`
}
+7 -39
View File
@@ -19,66 +19,34 @@ import (
)
type VpcFilterListInput struct {
// filter by vpc
// 过滤关联此Vpc的资源
// 过滤关联此VPC(ID或Name)的资源
Vpc string `json:"vpc"`
// swagger:ignore
// Deprecated
// filter by vpc Id
VpcId string `json:"vpc_id"`
}
func (input VpcFilterListInput) VpcStr() string {
if len(input.Vpc) > 0 {
return input.Vpc
}
if len(input.VpcId) > 0 {
return input.VpcId
}
return ""
VpcId string `json:"vpc_id" deprecated-by:"vpc"`
}
type WireFilterListInput struct {
VpcFilterListInput
// filter by wire
// 过滤连接此二层网络的资源
// 过滤连接此二层网络(ID或Name)的资源
Wire string `json:"wire"`
// swagger:ignore
// Deprecated
// fitler by wire id
WireId string `json:"wire_id"`
}
func (input WireFilterListInput) WireStr() string {
if len(input.Wire) > 0 {
return input.Wire
}
if len(input.WireId) > 0 {
return input.WireId
}
return ""
WireId string `json:"wire_id" deprecated-by:"wire"`
}
type NetworkFilterListInput struct {
WireFilterListInput
// filter by network
// 过滤关联此网络的资源
// 过滤关联此网络(ID或Name)的资源
Network string `json:"network"`
// swagger:ignore
// Deprecated
// filter by networkId
NetworkId string `json:"network"`
}
func (input NetworkFilterListInput) NetworkStr() string {
if len(input.Network) > 0 {
return input.Network
}
if len(input.NetworkId) > 0 {
return input.NetworkId
}
return ""
NetworkId string `json:"network_id" deprecated-by:"network"`
}
type NetworkListInput struct {
+3 -23
View File
@@ -40,22 +40,12 @@ type SchedtagCreateInput struct {
}
type SchedtagFilterListInput struct {
// filter by schedtag
// 以关联的调度标签(ID或Name)过滤列表
Schedtag string `json:"schedtag"`
// swagger:ignore
// Deprecated
// filter by schedtag_id
SchedtagId string `json:"schedtag_id"`
}
func (input SchedtagFilterListInput) SchedtagStr() string {
if len(input.Schedtag) > 0 {
return input.Schedtag
}
if len(input.SchedtagId) > 0 {
return input.SchedtagId
}
return ""
SchedtagId string `json:"schedtag_id" deprecated-by:"schedtag"`
}
type SchedtagListInput struct {
@@ -66,15 +56,5 @@ type SchedtagListInput struct {
// swagger:ignore
// Deprecated
// filter by type, alias for resource_type
Type string `json:"type"`
}
func (input SchedtagListInput) ResourceTypeStr() string {
if len(input.ResourceType) > 0 {
return input.ResourceType
}
if len(input.Type) > 0 {
return input.Type
}
return ""
Type string `json:"type" deprecated-by:"resource_type"`
}
+5 -15
View File
@@ -148,29 +148,19 @@ type SecurityGroupRuleListInput struct {
apis.ResourceBaseListInput
SecgroupFilterListInput
// filter by direction
// 以direction字段过滤安全组规则
Direction string `json:"direction"`
// filter by action
// 以action字段过滤安全组规则
Action string `json:"action"`
// filter by protocol
// 以protocol字段过滤安全组规则
Protocol string `json:"protocol"`
}
type SecgroupFilterListInput struct {
// filter by Security group
// 过滤关联指定安全组(ID或Name)的列表结果
Secgroup string `json:"secgroup"`
// swagger:ignore
// Deprecated
// filter by secgroup_id
SecgroupId string `json:"secgroup_id"`
}
func (input SecgroupFilterListInput) SecgroupStr() string {
if len(input.Secgroup) > 0 {
return input.Secgroup
}
if len(input.SecgroupId) > 0 {
return input.SecgroupId
}
return ""
SecgroupId string `json:"secgroup_id" deprecated-by:"secgroup"`
}
+2 -12
View File
@@ -139,22 +139,12 @@ var (
)
type StorageFilterListInput struct {
// filter by storage
// 过滤关联此存储(ID或Name)的列表结果
Storage string `json:"storage"`
// swagger:ignore
// Deprecated
// filter by storage_id
StorageId string `json:"storage_id"`
}
func (input StorageFilterListInput) StorageStr() string {
if len(input.Storage) > 0 {
return input.Storage
}
if len(input.StorageId) > 0 {
return input.StorageId
}
return ""
StorageId string `json:"storage_id" deprecated-by:"storage"`
}
type StorageShareFilterListInput struct {
+29 -64
View File
@@ -43,36 +43,20 @@ type EnabledIdentityBaseResourceListInput struct {
}
type ProjectFilterListInput struct {
// filter by project
// 以项目(ID或Name)过滤列表结果
Project string `json:"project"`
// swagger:ignore
// Deprecated
// filter by project_id
ProjectId string `json:"project_id"`
ProjectId string `json:"project_id" deprecated-by:"project"`
// swagger:ignore
// Deprecated
// filter by tenant
Tenant string `json:"tenant"`
Tenant string `json:"tenant" deprecated-by:"project"`
// swagger:ignore
// Deprecated
// filter by tenant_id
TenantId string `json:"tenant_id"`
}
func (input ProjectFilterListInput) ProjectStr() string {
if len(input.Project) > 0 {
return input.Project
}
if len(input.ProjectId) > 0 {
return input.ProjectId
}
if len(input.Tenant) > 0 {
return input.Tenant
}
if len(input.TenantId) > 0 {
return input.TenantId
}
return ""
TenantId string `json:"tenant_id" deprecated-by:"project"`
}
type UserFilterListInput struct {
@@ -81,17 +65,7 @@ type UserFilterListInput struct {
// swagger:ignore
// Deprecated
// filter by user_id
UserId string `json:"user_id"`
}
func (input UserFilterListInput) UserStr() string {
if len(input.User) > 0 {
return input.User
}
if len(input.UserId) > 0 {
return input.UserId
}
return ""
UserId string `json:"user_id" deprecated-by:"user"`
}
type GroupFilterListInput struct {
@@ -100,17 +74,7 @@ type GroupFilterListInput struct {
// swagger:ignore
// Deprecated
// filter by group_id
GroupId string `json:"group_id"`
}
func (input GroupFilterListInput) GroupStr() string {
if len(input.Group) > 0 {
return input.Group
}
if len(input.GroupId) > 0 {
return input.GroupId
}
return ""
GroupId string `json:"group_id" deprecated-by:"group"`
}
type RoleFilterListInput struct {
@@ -119,17 +83,7 @@ type RoleFilterListInput struct {
// swagger:ignore
// Deprecated
// filter by role_id
RoleId string `json:"role_id"`
}
func (input RoleFilterListInput) RoleStr() string {
if len(input.Role) > 0 {
return input.Role
}
if len(input.RoleId) > 0 {
return input.RoleId
}
return ""
RoleId string `json:"role_id" deprecated-by:"role"`
}
type ServiceFilterListInput struct {
@@ -138,17 +92,7 @@ type ServiceFilterListInput struct {
// swagger:ignore
// Deprecated
// filter by service_id
ServiceId string `json:"service_id"`
}
func (input ServiceFilterListInput) ServiceStr() string {
if len(input.Service) > 0 {
return input.Service
}
if len(input.ServiceId) > 0 {
return input.ServiceId
}
return ""
ServiceId string `json:"service_id" deprecated-by:"service"`
}
type RoleListInput struct {
@@ -281,3 +225,24 @@ func (input SProjectRemoveUserGroupInput) Validate() error {
}
return nil
}
type IdentityProviderListInput struct {
apis.EnabledStatusStandaloneResourceListInput
}
type CredentialListInput struct {
apis.StandaloneResourceListInput
}
type PolicyListInput struct {
EnabledIdentityBaseResourceListInput
apis.SharableResourceListInput
}
type RegionListInput struct {
apis.StandaloneResourceListInput
}
type ServiceListInput struct {
apis.StandaloneResourceListInput
}
+6 -2
View File
@@ -21,8 +21,12 @@ import (
type ImageListInput struct {
apis.SharableVirtualResourceListInput
// filter by disk_formats
// 以镜像的格式过滤,可能值为:qcow2, iso, vmdk, vhd, raw等
DiskFormats []string `json:"disk_formats"`
// filter by uefi
// 列出是否支持UEFI启动的镜像
Uefi *bool `json:"uefi"`
}
type GuestImageListInput struct {
apis.SharableVirtualResourceListInput
}
+9 -40
View File
@@ -20,34 +20,19 @@ type DomainizedResourceListInput struct {
// Deprecated
Admin *bool `json:"admin"`
// Specify query scope, either project, domain or system
// 指定查询的权限范围,可能值为project, domain or system
Scope string `json:"scope"`
// Project domain filter, either by Id or Name
// 指定查询的项目,ID or Name
// 查询指定的域(ID或名称)拥有的资源
ProjectDomain string `json:"project_domain"`
// swagger:ignore
// Deprecated
// Project domain Id filter, alias for project_domain
ProjectDomainId string `json:"project_domain_id"`
ProjectDomainId string `json:"project_domain_id" deprecated-by:"project_domain"`
// swagger:ignore
// Deprecated
// Domain Id filter, alias for project_domain
DomainId string `json:"domain_id"`
}
func (input DomainizedResourceListInput) DomainStr() string {
if len(input.ProjectDomain) > 0 {
return input.ProjectDomain
}
if len(input.ProjectDomainId) > 0 {
return input.ProjectDomainId
}
if len(input.DomainId) > 0 {
return input.DomainId
}
return ""
DomainId string `json:"domain_id" deprecated-by:"project_domain"`
}
type DomainizedResourceCreateInput struct {
@@ -63,36 +48,20 @@ type DomainizedResourceCreateInput struct {
type ProjectizedResourceListInput struct {
DomainizedResourceListInput
// Filter by project, either ID or Name
// 查询指定的项目(ID或名称)拥有的资源
Project string `json:"project"`
// swagger:ignore
// Deprecated
// Filter by project_id, alias for project
ProjectId string `json:"project_id"`
ProjectId string `json:"project_id" deprecated-by:"project"`
// swagger:ignore
// Deprecated
// Filter by tenant ID or Name, alias for project
Tenant string `json:"tenant"`
Tenant string `json:"tenant" deprecated-by:"project"`
// swagger:ignore
// Deprecated
// Filter by tenant_id, alias for project
TenantId string `json:"tenant_id"`
}
func (input ProjectizedResourceListInput) ProjectStr() string {
if len(input.Project) > 0 {
return input.Project
}
if len(input.ProjectId) > 0 {
return input.ProjectId
}
if len(input.Tenant) > 0 {
return input.Tenant
}
if len(input.TenantId) > 0 {
return input.TenantId
}
return ""
TenantId string `json:"tenant_id" deprecated-by:"project"`
}
type ProjectizedResourceCreateInput struct {
@@ -108,12 +77,12 @@ type ProjectizedResourceCreateInput struct {
}
type UserResourceListInput struct {
// User ID or Name
// 查询指定的用户(ID或名称)拥有的资源
User string `json:"user"`
// swagger:ignore
// Deprecated
// Filter by userId
UserId string `json:"user_id"`
UserId string `json:"user_id" deprecated-by:"user"`
}
func (input UserResourceListInput) UserStr() string {
+39 -11
View File
@@ -34,29 +34,57 @@ type ModelBaseListInput struct {
// 查询偏移量
// default: 0
Offset *int `json:"offset"`
// Name of the field to be ordered by
// 列表排序时,用于排序的字段的名称,该字段不提供时,则按默认字段排序。一般时按照资源的新建时间逆序排序。
OrderBy []string `json:"order_by"`
// List Order
// 列表排序时的顺序,desc为从高到低,asc为从低到高。默认是按照资源的创建时间desc排序。
// example: desc|asc
Order string `json:"order"`
// Show more details
// 列表返回资源的更多详细信息。默认只显示基本字段,该字段为true则返回扩展字段信息。
Details *bool `json:"details"`
// Filter results by a simple keyword search
// 模糊搜索所有字段
Search string `json:"search"`
// Filters
// 指定过滤条件,允许指定多个,每个条件的格式为"字段名称.操作符(匹配信息)",例如name字段等于test的过滤器为:name.equals('test')
// 支持的操作符如下:
//
// | 操作符 | 参数个数 | 举例 | 说明 |
// |---------------|---------|------------------------------------------------|-----------------------|
// | in | > 0 | name.in("test", "good") | 在给定数组中 |
// | notin | > 0 | name.notin('test') | 不在给定数组中 |
// | between | 2 | created_at.between('2019-12-10', '2020-01-02') | 在两个值之间 |
// | ge | 1 | created_at.ge('2020-01-01') | 大于或等于给定值 |
// | gt | 1 | created_at.gt('2020-01-01') | 严格大于给定值 |
// | le | 1 | created_at.le('2020-01-01') | 小于或等于给定值 |
// | lt | 1 | sync_seconds.lt(900) | 严格大于给定值 |
// | like | 1 | name.like('%test%') | sql字符串匹配 |
// | contains | 1 | name.contains('test') | 包含给定字符串 |
// | startswith | 1 | name.startswith('test') | 以给定字符串开头 |
// | endswith | 1 | name.endswith('test') | 以给定字符串结尾 |
// | equals | 1 | name.equals('test') | 等于给定值 |
// | notequals | 1 | name.notequals('test') | 不等于给定值 |
// | isnull | 0 | name.isnull() | 值为SQL的NULL |
// | isnotnull | 0 | name.isnotnull() | 值不为SQL的NULL |
// | isempty | 0 | name.isempty('test') | 值为空字符串 |
// | isnotempty | 0 | name.isnotempty('test') | 值不是空字符串 |
// | isnullorempty | 0 | name.isnullorempty('test') | 值为SQL的NULL或者空字符串 |
//
Filter []string `json:"filter"`
// Filters with joint table col; joint_tbl.related_key(origin_key).filter_col.filter_cond(filters)
// 指定关联过滤条件,允许指定多个,后端将根据关联过滤条件和其他表关联查询,支持的查询语法和filter相同,
// 和其他表关联的语法如下:
// joint_tbl.related_key(origin_key).filter_col.filter_ops(values)
// 其中,joint_tbl为要关联的表,related_key为关联表columnorigin_key为当前表column, filter_col为
// 关联表用于查询匹配的field名称,field_ops为filter支持的操作,values为匹配的值
// 举例:
// guestnetworks_tbl.guest_id(id).ip_addr.equals('10.168.21.222')
JointFilter []string `json:"joint_filter"`
// If true, match if any of the filters matches; otherwise, match if all of the filters match
// 如果filter_any为true,则查询所有filter的并集,否则为交集
FilterAny *bool `json:"filter_any"`
// Show only specified fields
// 返回结果只包含指定的字段
Field []string `json:"field"`
// Export field keys
// 用于数据导出,指定导出的数据字段
ExportKeys string `json:"export_keys"`
}
type IncrementalListInput struct {
// 增量加载的标记
// Marker for streamed pagination
// 用于指定增量加载的标记
PagingMarker string `json:"paging_marker"`
}
+6 -4
View File
@@ -24,13 +24,15 @@ type SharableVirtualResourceDetails struct {
VirtualResourceDetails
}
type SharableResourceListInput struct {
// 根据资源是否共享过滤列表
IsPublic *bool `json:"is_public"`
}
type SharableVirtualResourceListInput struct {
VirtualResourceListInput
// filter by is_public status
IsPublic *bool `json:"is_public"`
// filter by public_scope
// possible value is system, domain, project
// 根据资源的共享范围过滤列表,可能值为:system, domain, project
PublicScope string `json:"public_scope"`
}
+11 -9
View File
@@ -22,38 +22,40 @@ type StandaloneResourceShortDescDetail struct {
}
type STag struct {
Key string
// 标签key
Key string
// 标签Value
Value string
}
type StandaloneResourceListInput struct {
ResourceBaseListInput
// filter by tags
// 通过标签过滤
Tags []STag `json:"tags"`
// Piggyback user metadata information
// 返回资源的标签不包含特定的用户标签
WithoutUserMeta bool `json:"without_user_meta"`
// Piggyback metadata information
// 返回列表数据中包含资源的标签数据(Metadata)
WithMeta *bool `json:"with_meta"`
// Show all resources including the emulated resources
// 显示所有的资源,包括模拟的资源
ShowEmulated *bool `json:"show_emulated"`
// filter by resource name
// 以资源名称过滤列表
Names []string `json:"name"`
// filter by resource ID
// 以资源ID过滤列表
Ids []string `json:"id"`
}
type StatusStandaloneResourceListInput struct {
StandaloneResourceListInput
// filter by resource status
// 以资源的状态过滤列表
Status []string `json:"status"`
}
type EnabledStatusStandaloneResourceListInput struct {
StatusStandaloneResourceListInput
// filter by enable/disabled status
// 以资源是否启用/禁用过滤列表
Enabled *bool `json:"enabled"`
}
+3 -3
View File
@@ -23,11 +23,11 @@ type VirtualResourceListInput struct {
ProjectizedResourceListInput
// Show system resource
// 列表中包含标记为"系统资源"的资源
System *bool `json:"system"`
// Show only pending deleted resource
// 是否显示回收站内的资源,默认不显示(对实现了回收站的资源有效,例如主机,磁盘,镜像)
PendingDelete *bool `json:"pending_delete"`
// Show all resources including pending deleted
// 是否显示所有资源,包括回收站和不再回收站的资源
// TODO: fix this???
PendingDeleteAll *bool `json:"-"`
}
+4 -4
View File
@@ -1140,7 +1140,7 @@ func (self *SCloudaccount) PerformChangeProject(ctx context.Context, userCred mc
}
func (manager *SCloudaccountManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.CloudaccountListInput) (*sqlchemy.SQuery, error) {
accountStr := query.CloudaccountStr()
accountStr := query.Cloudaccount
if len(accountStr) > 0 {
accountObj, err := manager.FetchByIdOrName(userCred, accountStr)
if err != nil {
@@ -1157,7 +1157,7 @@ func (manager *SCloudaccountManager) ListItemFilter(ctx context.Context, q *sqlc
if err != nil {
return nil, errors.Wrap(err, "SEnabledStatusStandaloneResourceBaseManager")
}
managerStr := query.CloudproviderStr()
managerStr := query.Cloudprovider
if len(managerStr) > 0 {
providerObj, err := CloudproviderManager.FetchByIdOrName(userCred, managerStr)
if err != nil {
@@ -1171,7 +1171,7 @@ func (manager *SCloudaccountManager) ListItemFilter(ctx context.Context, q *sqlc
q = q.Equals("id", provider.CloudaccountId)
}
cloudEnvStr := query.CloudEnvStr()
cloudEnvStr := query.CloudEnv
if cloudEnvStr == api.CLOUD_ENV_PUBLIC_CLOUD {
q = q.IsTrue("is_public_cloud").IsFalse("is_on_premise")
}
@@ -1184,7 +1184,7 @@ func (manager *SCloudaccountManager) ListItemFilter(ctx context.Context, q *sqlc
q = q.IsTrue("is_on_premise").IsFalse("is_public_cloud")
}
capabilities := query.CapabilityList()
capabilities := query.Capability
if len(capabilities) > 0 {
cloudproviders := CloudproviderManager.Query().SubQuery()
cloudprovidercapabilities := CloudproviderCapabilityManager.Query().SubQuery()
+4 -4
View File
@@ -972,7 +972,7 @@ func (manager *SCloudproviderManager) migrateVCenterInfo(vc *SVCenter) error {
}
func (manager *SCloudproviderManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.CloudproviderListInput) (*sqlchemy.SQuery, error) {
accountStr := query.CloudaccountStr()
accountStr := query.Cloudaccount
if len(accountStr) > 0 {
accountObj, err := CloudaccountManager.FetchByIdOrName(userCred, accountStr)
if err != nil {
@@ -1019,7 +1019,7 @@ func (manager *SCloudproviderManager) ListItemFilter(ctx context.Context, q *sql
if err != nil {
return nil, err
}
managerStr := query.CloudproviderStr()
managerStr := query.Cloudprovider
if len(managerStr) > 0 {
providerObj, err := manager.FetchByIdOrName(userCred, managerStr)
if err != nil {
@@ -1032,7 +1032,7 @@ func (manager *SCloudproviderManager) ListItemFilter(ctx context.Context, q *sql
q = q.Equals("id", providerObj.GetId())
}
cloudEnvStr := query.CloudEnvStr()
cloudEnvStr := query.CloudEnv
if cloudEnvStr == api.CLOUD_ENV_PUBLIC_CLOUD {
cloudaccounts := CloudaccountManager.Query().SubQuery()
q = q.Join(cloudaccounts, sqlchemy.Equals(cloudaccounts.Field("id"), q.Field("cloudaccount_id")))
@@ -1054,7 +1054,7 @@ func (manager *SCloudproviderManager) ListItemFilter(ctx context.Context, q *sql
q = q.Filter(sqlchemy.IsTrue(cloudaccounts.Field("is_on_premise")))
}
capabilities := query.CapabilityList()
capabilities := query.Capability
if len(capabilities) > 0 {
subq := CloudproviderCapabilityManager.Query("cloudprovider_id").In("capability", capabilities).Distinct().SubQuery()
q = q.In("id", subq)
+3 -3
View File
@@ -597,7 +597,7 @@ func (manager *SCloudregionManager) ListItemFilter(ctx context.Context, q *sqlch
return nil, errors.Wrap(err, "SEnabledStatusStandaloneResourceBaseManager.ListItemFilter")
}
cloudEnvStr := query.CloudEnvStr()
cloudEnvStr := query.CloudEnv
if cloudEnvStr == api.CLOUD_ENV_PUBLIC_CLOUD {
q = q.In("provider", cloudprovider.GetPublicProviders())
}
@@ -625,12 +625,12 @@ func (manager *SCloudregionManager) ListItemFilter(ctx context.Context, q *sqlch
q = q.IsNotEmpty("external_id")
}
managerStr := query.CloudproviderStr()
managerStr := query.Cloudprovider
if len(managerStr) > 0 {
subq := CloudproviderRegionManager.QueryRelatedRegionIds("", managerStr)
q = q.In("id", subq)
}
accountStr := query.CloudaccountStr()
accountStr := query.Cloudaccount
if len(accountStr) > 0 {
subq := CloudproviderRegionManager.QueryRelatedRegionIds(accountStr)
q = q.In("id", subq)
+4 -4
View File
@@ -162,7 +162,7 @@ func (manager *SDiskManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
q = q.Filter(sqlchemy.In(q.Field("storage_id"), sq))
}
guestId := query.ServerStr()
guestId := query.Server
if len(guestId) > 0 {
iGuest, err := GuestManager.FetchByIdOrName(userCred, guestId)
if err == sql.ErrNoRows {
@@ -178,7 +178,7 @@ func (manager *SDiskManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
))
}
storageStr := query.StorageStr()
storageStr := query.Storage
if len(storageStr) > 0 {
storageObj, err := StorageManager.FetchByIdOrName(userCred, storageStr)
if err != nil {
@@ -187,12 +187,12 @@ func (manager *SDiskManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
q = q.Filter(sqlchemy.Equals(q.Field("storage_id"), storageObj.GetId()))
}
if diskType := query.DiskTypeStr(); diskType != "" {
if diskType := query.DiskType; diskType != "" {
q = q.Filter(sqlchemy.Equals(q.Field("disk_type"), diskType))
}
// for snapshotpolicy_id
snapshotpolicyStr := query.SnapshotpolicyStr()
snapshotpolicyStr := query.Snapshotpolicy
if len(snapshotpolicyStr) > 0 {
snapshotpolicyObj, err := SnapshotPolicyManager.FetchByIdOrName(userCred, snapshotpolicyStr)
if err != nil {
+1 -1
View File
@@ -75,7 +75,7 @@ type SGroup struct {
func (sm *SGroupManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential,
input api.InstanceGroupListInput) (*sqlchemy.SQuery, error) {
guestFilter := input.ServerStr()
guestFilter := input.Server
if len(guestFilter) != 0 {
guestObj, err := GuestManager.FetchByIdOrName(userCred, guestFilter)
if err != nil {
+24 -35
View File
@@ -160,7 +160,8 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
if err != nil {
return nil, errors.Wrap(err, "SVirtualResourceBaseManager.ListItemFilter")
}
hypervisorList := query.HypervisorList()
hypervisorList := query.Hypervisor
if len(hypervisorList) > 0 {
q = q.In("hypervisor", hypervisorList)
}
@@ -184,7 +185,7 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
q = q.In("host_id", subq.SubQuery())
}
hostFilter := query.HostStr()
hostFilter := query.Host
if len(hostFilter) > 0 {
host, _ := HostManager.FetchByIdOrName(nil, hostFilter)
if host == nil {
@@ -198,7 +199,7 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
}
}
secgrpFilter := query.SecgroupStr()
secgrpFilter := query.Secgroup
if len(secgrpFilter) > 0 {
var notIn = false
// HACK FOR NOT IN SECGROUP
@@ -284,20 +285,26 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
}
}
zoneFilter := query.ZoneStr()
if len(zoneFilter) > 0 {
zone, _ := ZoneManager.FetchByIdOrName(nil, zoneFilter)
if zone == nil {
return nil, httperrors.NewResourceNotFoundError("zone %s not found", zoneFilter)
}
q, err = managedResourceFilterByRegion(q, query.RegionalFilterListInput, "host_id", func() *sqlchemy.SQuery {
hostTable := HostManager.Query().SubQuery()
zoneTable := ZoneManager.Query().SubQuery()
sq := hostTable.Query(hostTable.Field("id")).Join(zoneTable,
sqlchemy.Equals(zoneTable.Field("id"), hostTable.Field("zone_id"))).Filter(sqlchemy.Equals(zoneTable.Field("id"), zone.GetId())).SubQuery()
q = q.In("host_id", sq)
sq := hostTable.Query(hostTable.Field("id"))
sq = sq.Join(zoneTable, sqlchemy.Equals(zoneTable.Field("id"), hostTable.Field("zone_id")))
return sq
})
if err != nil {
return nil, errors.Wrap(err, "managedResourceFilterByRegion")
}
wireFilter := query.WireStr()
q, err = managedResourceFilterByZone(q, query.ZonalFilterListInput, "host_id", func() *sqlchemy.SQuery {
hostTable := HostManager.Query().SubQuery()
return hostTable.Query(hostTable.Field("id"))
})
if err != nil {
return nil, errors.Wrap(err, "managedResourceFilterByZone")
}
wireFilter := query.Wire
if len(wireFilter) > 0 {
wire, _ := WireManager.FetchByIdOrName(nil, wireFilter)
if wire == nil {
@@ -309,7 +316,7 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
q = q.In("host_id", sq)
}
networkFilter := query.NetworkStr()
networkFilter := query.Network
if len(networkFilter) > 0 {
netI, _ := NetworkManager.FetchByIdOrName(userCred, networkFilter)
if netI == nil {
@@ -323,7 +330,7 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
q = q.In("host_id", sq)
}
vpcFilter := query.VpcStr()
vpcFilter := query.Vpc
if len(vpcFilter) > 0 {
IVpc, err := VpcManager.FetchByIdOrName(userCred, vpcFilter)
if err != nil {
@@ -340,7 +347,7 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
q = q.In("id", sq)
}
diskFilter := query.DiskStr()
diskFilter := query.Disk
if len(diskFilter) > 0 {
diskI, _ := DiskManager.FetchByIdOrName(userCred, diskFilter)
if diskI == nil {
@@ -367,24 +374,6 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
}
}
regionFilter := query.CloudregionStr()
if len(regionFilter) > 0 {
regionObj, err := CloudregionManager.FetchByIdOrName(userCred, regionFilter)
if err != nil {
if err == sql.ErrNoRows {
return nil, httperrors.NewResourceNotFoundError("cloud region %s not found", regionFilter)
} else {
return nil, httperrors.NewGeneralError(err)
}
}
hosts := HostManager.Query().SubQuery()
zones := ZoneManager.Query().SubQuery()
sq := hosts.Query(hosts.Field("id"))
sq = sq.Join(zones, sqlchemy.Equals(hosts.Field("zone_id"), zones.Field("id")))
sq = sq.Filter(sqlchemy.Equals(zones.Field("cloudregion_id"), regionObj.GetId()))
q = q.In("host_id", sq)
}
withEip := (query.WithEip != nil && *query.WithEip)
withoutEip := (query.WithoutEip != nil && *query.WithoutEip)
if withEip || withoutEip {
@@ -412,7 +401,7 @@ func (manager *SGuestManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
q = q.Filter(cond(q.Field("id"), sgq))
}
groupFilter := query.GroupStr()
groupFilter := query.Group
if len(groupFilter) != 0 {
groupObj, err := GroupManager.FetchByIdOrName(userCred, groupFilter)
if err != nil {
+3 -3
View File
@@ -217,7 +217,7 @@ func (manager *SHostManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
}
// var scopeQuery *sqlchemy.SSubQuery
schedTagStr := query.SchedtagStr()
schedTagStr := query.Schedtag
if len(schedTagStr) > 0 {
schedTag, _ := SchedtagManager.FetchByIdOrName(nil, schedTagStr)
if schedTag == nil {
@@ -228,7 +228,7 @@ func (manager *SHostManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
q = q.In("id", scopeQuery)
}
wireStr := query.WireStr()
wireStr := query.Wire
if len(wireStr) > 0 {
wire, _ := WireManager.FetchByIdOrName(nil, wireStr)
if wire == nil {
@@ -239,7 +239,7 @@ func (manager *SHostManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
q = q.In("id", scopeQuery)
}
storageStr := query.StorageStr()
storageStr := query.Storage
if len(storageStr) > 0 {
storage, _ := StorageManager.FetchByIdOrName(nil, storageStr)
if storage == nil {
+1 -1
View File
@@ -77,7 +77,7 @@ func (manager *SInstanceSnapshotManager) ListItemFilter(ctx context.Context, q *
return nil, errors.Wrap(err, "SVirtualResourceBaseManager.ListItemFilter")
}
guestStr := query.ServerStr()
guestStr := query.Server
if len(guestStr) > 0 {
guestObj, err := GuestManager.FetchByIdOrName(userCred, guestStr)
if err != nil {
+1 -1
View File
@@ -155,7 +155,7 @@ func (manager *SIsolatedDeviceManager) ListItemFilter(ctx context.Context, q *sq
if query.Usb != nil && *query.Usb {
q = q.Equals("dev_type", "USB")
}
hostStr := query.HostStr()
hostStr := query.Host
var sq *sqlchemy.SSubQuery
if len(hostStr) > 0 {
hosts := HostManager.Query().SubQuery()
@@ -227,8 +227,8 @@ func (man *SLoadbalancerCertificateManager) ListItemFilter(ctx context.Context,
}
if query.Usable != nil && *query.Usable {
region := query.CloudregionStr()
manager := query.CloudproviderStr()
region := query.Cloudregion
manager := query.Cloudprovider
// 证书可用包含两类:1.本地证书内容不为空 2.公有云中已经存在,但是证书内容不完整的证书
if len(region) > 0 || len(manager) > 0 {
+7 -7
View File
@@ -147,7 +147,7 @@ func (self *SManagedResourceBase) IsManaged() bool {
}
func managedResourceFilterByDomain(q *sqlchemy.SQuery, query apis.DomainizedResourceListInput, filterField string, subqFunc func() *sqlchemy.SQuery) (*sqlchemy.SQuery, error) {
domainStr := query.DomainStr()
domainStr := query.ProjectDomain
if len(domainStr) > 0 {
domain, err := db.TenantCacheManager.FetchDomainByIdOrName(context.Background(), domainStr)
if err != nil {
@@ -232,8 +232,8 @@ func filterByProviderStrs(q *sqlchemy.SQuery, filterField string, subqFunc func(
}
func managedResourceFilterByAccount(q *sqlchemy.SQuery, input api.ManagedResourceListInput, filterField string, subqFunc func() *sqlchemy.SQuery) (*sqlchemy.SQuery, error) {
cloudproviderStr := input.CloudproviderStr()
if len(input.CloudproviderStr()) > 0 {
cloudproviderStr := input.Cloudprovider
if len(cloudproviderStr) > 0 {
provider, err := CloudproviderManager.FetchByIdOrName(nil, cloudproviderStr)
if err != nil {
if err == sql.ErrNoRows {
@@ -250,7 +250,7 @@ func managedResourceFilterByAccount(q *sqlchemy.SQuery, input api.ManagedResourc
}
}
cloudaccountStr := input.CloudaccountStr()
cloudaccountStr := input.Cloudaccount
if len(cloudaccountStr) > 0 {
account, err := CloudaccountManager.FetchByIdOrName(nil, cloudaccountStr)
if err != nil {
@@ -283,7 +283,7 @@ func managedResourceFilterByAccount(q *sqlchemy.SQuery, input api.ManagedResourc
}
func managedResourceFilterByZone(q *sqlchemy.SQuery, query api.ZonalFilterListInput, filterField string, subqFunc func() *sqlchemy.SQuery) (*sqlchemy.SQuery, error) {
zoneStr := query.ZoneStr()
zoneStr := query.Zone
if len(zoneStr) > 0 {
zoneObj, err := ZoneManager.FetchByIdOrName(nil, zoneStr)
if err != nil {
@@ -306,7 +306,7 @@ func managedResourceFilterByZone(q *sqlchemy.SQuery, query api.ZonalFilterListIn
}
func managedResourceFilterByRegion(q *sqlchemy.SQuery, query api.RegionalFilterListInput, filterField string, subqFunc func() *sqlchemy.SQuery) (*sqlchemy.SQuery, error) {
regionStr := query.CloudregionStr()
regionStr := query.Cloudregion
if len(regionStr) > 0 {
regionObj, err := CloudregionManager.FetchByIdOrName(nil, regionStr)
if err != nil {
@@ -338,7 +338,7 @@ func managedResourceFilterByRegion(q *sqlchemy.SQuery, query api.RegionalFilterL
}
func filterByCloudType(q *sqlchemy.SQuery, input api.ManagedResourceListInput, filterField string, subqFunc func() *sqlchemy.SQuery) *sqlchemy.SQuery {
cloudEnvStr := input.CloudEnvStr()
cloudEnvStr := input.CloudEnv
switch cloudEnvStr {
case api.CLOUD_ENV_PUBLIC_CLOUD:
+2 -2
View File
@@ -1800,7 +1800,7 @@ func (manager *SNetworkManager) ListItemFilter(ctx context.Context, q *sqlchemy.
q = q.In("wire_id", sq.SubQuery())
}
vpcStr := input.VpcStr()
vpcStr := input.Vpc
if len(vpcStr) > 0 {
vpcObj, err := VpcManager.FetchByIdOrName(userCred, vpcStr)
if err != nil {
@@ -1848,7 +1848,7 @@ func (manager *SNetworkManager) ListItemFilter(ctx context.Context, q *sqlchemy.
q = q.In("wire_id", sq.SubQuery()).Equals("status", api.NETWORK_STATUS_AVAILABLE)
}
hostStr := input.HostStr()
hostStr := input.Host
if len(hostStr) > 0 {
hostObj, err := HostManager.FetchByIdOrName(userCred, hostStr)
if err != nil {
+1 -1
View File
@@ -191,7 +191,7 @@ func (manager *SReservedipManager) ListItemFilter(ctx context.Context, q *sqlche
sqlchemy.GT(q.Field("expired_at"), time.Now().UTC()),
))
}
network := query.NetworkStr()
network := query.Network
if len(network) > 0 {
netObj, _ := NetworkManager.FetchByIdOrName(userCred, network)
if netObj == nil {
+1 -1
View File
@@ -133,7 +133,7 @@ func (manager *SSchedtagManager) AllowListItems(ctx context.Context, userCred mc
}
func (manager *SSchedtagManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.SchedtagListInput) (*sqlchemy.SQuery, error) {
if resType := query.ResourceTypeStr(); resType != "" {
if resType := query.ResourceType; resType != "" {
q = q.Equals("resource_type", resType)
}
return manager.SStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query.StandaloneResourceListInput)
+1 -1
View File
@@ -79,7 +79,7 @@ func (manager *SSecurityGroupCacheManager) ListItemFilter(ctx context.Context, q
if err != nil {
return nil, errors.Wrap(err, "SStatusStandaloneResourceBaseManager.ListItemFilter")
}
if defsecgroup := query.SecgroupStr(); len(defsecgroup) > 0 {
if defsecgroup := query.Secgroup; len(defsecgroup) > 0 {
secgroup, err := SecurityGroupManager.FetchByIdOrName(userCred, defsecgroup)
if err != nil {
if err == sql.ErrNoRows {
+1 -1
View File
@@ -162,7 +162,7 @@ func (manager *SSecurityGroupRuleManager) ListItemFilter(ctx context.Context, q
if err != nil {
return nil, errors.Wrap(err, "SResourceBaseManager.ListItemFilter")
}
if defsecgroup := query.SecgroupStr(); len(defsecgroup) > 0 {
if defsecgroup := query.Secgroup; len(defsecgroup) > 0 {
if secgroup, _ := SecurityGroupManager.FetchByIdOrName(userCred, defsecgroup); secgroup != nil {
sql = sql.Equals("secgroup_id", secgroup.GetId())
} else {
+1 -1
View File
@@ -103,7 +103,7 @@ func (manager *SSecurityGroupManager) ListItemFilter(ctx context.Context, q *sql
}
q = q.In("id", secgroupIds)
}
serverStr := input.ServerStr()
serverStr := input.Server
if len(serverStr) > 0 {
guest, err := GuestManager.FetchByIdOrName(userCred, serverStr)
if err != nil {
+3 -3
View File
@@ -720,7 +720,7 @@ func listItemDomainFilter(q *sqlchemy.SQuery, data *jsonutils.JSONDict) *sqlchem
func (manager *SServerSkuManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.ServerSkuListInput) (*sqlchemy.SQuery, error) {
publicCloud := false
cloudEnvStr := query.CloudEnvStr()
cloudEnvStr := query.CloudEnv
if cloudEnvStr == api.CLOUD_ENV_PUBLIC_CLOUD {
publicCloud = true
q = q.Filter(sqlchemy.In(q.Field("provider"), CloudproviderManager.GetPublicProviderProvidersQuery()))
@@ -771,8 +771,8 @@ func (manager *SServerSkuManager) ListItemFilter(ctx context.Context, q *sqlchem
q = q.IsTrue("enabled")
}
zoneStr := query.ZoneStr()
regionStr := query.CloudregionStr()
zoneStr := query.Zone
regionStr := query.Cloudregion
if len(zoneStr) > 0 {
_zone, err := ZoneManager.FetchByIdOrName(userCred, zoneStr)
if err != nil {
+2 -2
View File
@@ -852,7 +852,7 @@ func (manager *SWireManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
return nil, errors.Wrap(err, "SStandaloneResourceBaseManager.ListItemFilter")
}
vpcStr := query.VpcStr()
vpcStr := query.Vpc
if len(vpcStr) > 0 {
vpc, err := VpcManager.FetchByIdOrName(userCred, vpcStr)
if err != nil {
@@ -877,7 +877,7 @@ func (manager *SWireManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
return nil, errors.Wrap(err, "managedResourceFilterByZone")
}
hostStr := query.HostStr()
hostStr := query.Host
if len(hostStr) > 0 {
hostObj, err := HostManager.FetchByIdOrName(userCred, hostStr)
if err != nil {
+3 -3
View File
@@ -529,7 +529,7 @@ func (manager *SZoneManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
return nil, errors.Wrap(err, "SStatusStandaloneResourceBaseManager.ListItemFilter")
}
cloudEnvStr := query.CloudEnvStr()
cloudEnvStr := query.CloudEnv
if cloudEnvStr == api.CLOUD_ENV_PRIVATE_CLOUD {
regions := CloudregionManager.Query().SubQuery()
subq := regions.Query(regions.Field("id"))
@@ -590,12 +590,12 @@ func (manager *SZoneManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
}
}
managerStr := query.CloudproviderStr()
managerStr := query.Cloudprovider
if len(managerStr) > 0 {
subq := CloudproviderRegionManager.QueryRelatedRegionIds("", managerStr)
q = q.In("cloudregion_id", subq)
}
accountStr := query.CloudaccountStr()
accountStr := query.Cloudaccount
if len(accountStr) > 0 {
subq := CloudproviderRegionManager.QueryRelatedRegionIds(accountStr)
q = q.In("cloudregion_id", subq)
+8
View File
@@ -539,3 +539,11 @@ func (self *SGuestImage) PerformPrivate(ctx context.Context, userCred mcclient.T
}
return self.SSharableVirtualResourceBase.PerformPrivate(ctx, userCred, query, data)
}
func (manager *SGuestImageManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.GuestImageListInput) (*sqlchemy.SQuery, error) {
q, err := manager.SSharableVirtualResourceBaseManager.ListItemFilter(ctx, q, userCred, query.SharableVirtualResourceListInput)
if err != nil {
return nil, errors.Wrap(err, "SSharableVirtualResourceBaseManager.ListItemFilter")
}
return q, nil
}
+4
View File
@@ -260,3 +260,7 @@ func (manager *SCredentialManager) FetchOwnerId(ctx context.Context, data jsonut
}
return nil, nil
}
func (manager *SCredentialManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.CredentialListInput) (*sqlchemy.SQuery, error) {
return manager.SStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query.StandaloneResourceListInput)
}
+1 -1
View File
@@ -341,7 +341,7 @@ func (manager *SEndpointManager) ListItemFilter(ctx context.Context, q *sqlchemy
if err != nil {
return nil, errors.Wrap(err, "SStandaloneResourceBaseManager.ListItemFilter")
}
svcStr := query.ServiceStr()
svcStr := query.Service
if len(svcStr) > 0 {
svcObj, err := ServiceManager.FetchByIdOrName(userCred, svcStr)
if err != nil {
+2 -2
View File
@@ -81,7 +81,7 @@ func (manager *SGroupManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
return nil, err
}
userIdStr := query.UserStr()
userIdStr := query.User
if len(userIdStr) > 0 {
user, err := UserManager.FetchById(userIdStr)
if err != nil {
@@ -95,7 +95,7 @@ func (manager *SGroupManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
q = q.In("id", subq.SubQuery())
}
projIdStr := query.ProjectStr()
projIdStr := query.Project
if len(projIdStr) > 0 {
proj, err := ProjectManager.FetchProjectById(projIdStr)
if err != nil {
+4
View File
@@ -807,3 +807,7 @@ func (manager *SIdentityProviderManager) FetchPasswordProtectedIdpIdsQuery() *sq
q := manager.Query("id").In("driver", api.PASSWORD_PROTECTED_IDPS)
return q.SubQuery()
}
func (manager *SIdentityProviderManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.IdentityProviderListInput) (*sqlchemy.SQuery, error) {
return manager.SEnabledStatusStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query.EnabledStatusStandaloneResourceListInput)
}
+34
View File
@@ -19,6 +19,8 @@ import (
"database/sql"
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/errors"
"yunion.io/x/sqlchemy"
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
@@ -203,3 +205,35 @@ func (policy *SPolicy) ValidateDeleteCondition(ctx context.Context) error {
}
return policy.SEnabledIdentityBaseResource.ValidateDeleteCondition(ctx)
}
func (manager *SPolicyManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.PolicyListInput) (*sqlchemy.SQuery, error) {
q, err := manager.SEnabledIdentityBaseResourceManager.ListItemFilter(ctx, q, userCred, query.EnabledIdentityBaseResourceListInput)
if err != nil {
return nil, errors.Wrap(err, "SEnabledIdentityBaseResourceManager.ListItemFilter")
}
if query.IsPublic != nil {
if *query.IsPublic {
q = q.IsTrue("is_public")
} else {
q = q.IsFalse("is_public")
}
}
return q, nil
}
func (policy *SPolicy) GetCustomizeColumns(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) *jsonutils.JSONDict {
extra := policy.SEnabledIdentityBaseResource.GetCustomizeColumns(ctx, userCred, query)
return policyExtra(policy, extra)
}
func (policy *SPolicy) GetExtraDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (*jsonutils.JSONDict, error) {
extra, err := policy.SEnabledIdentityBaseResource.GetExtraDetails(ctx, userCred, query)
if err != nil {
return nil, err
}
return policyExtra(policy, extra), nil
}
func policyExtra(policy *SPolicy, extra *jsonutils.JSONDict) *jsonutils.JSONDict {
return extra
}
+2 -2
View File
@@ -209,7 +209,7 @@ func (manager *SProjectManager) ListItemFilter(ctx context.Context, q *sqlchemy.
return nil, err
}
userStr := query.UserStr()
userStr := query.User
if len(userStr) > 0 {
userObj, err := UserManager.FetchById(userStr)
if err != nil {
@@ -223,7 +223,7 @@ func (manager *SProjectManager) ListItemFilter(ctx context.Context, q *sqlchemy.
q = q.In("id", subq.SubQuery())
}
groupStr := query.GroupStr()
groupStr := query.Group
if len(groupStr) > 0 {
groupObj, err := GroupManager.FetchById(groupStr)
if err != nil {
+11
View File
@@ -18,11 +18,14 @@ import (
"context"
"yunion.io/x/jsonutils"
"yunion.io/x/sqlchemy"
"yunion.io/x/onecloud/pkg/apis"
api "yunion.io/x/onecloud/pkg/apis/identity"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/pkg/errors"
)
type SRegionManager struct {
@@ -146,3 +149,11 @@ func (region *SRegion) CustomizeCreate(ctx context.Context, userCred mcclient.To
region.Id = idStr
return nil
}
func (manager *SRegionManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.RegionListInput) (*sqlchemy.SQuery, error) {
q, err := manager.SStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query.StandaloneResourceListInput)
if err != nil {
return nil, errors.Wrap(err, "SStandaloneResourceBaseManager.ListItemFilter")
}
return q, nil
}
+3 -3
View File
@@ -229,7 +229,7 @@ func (manager *SRoleManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
}
var projectId string
projectStr := query.ProjectStr()
projectStr := query.Project
if len(projectStr) > 0 {
project, err := ProjectManager.FetchProjectById(projectStr)
if err != nil {
@@ -242,7 +242,7 @@ func (manager *SRoleManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
projectId = project.Id
}
userStr := query.UserStr()
userStr := query.User
if len(projectId) > 0 && len(userStr) > 0 {
userObj, err := UserManager.FetchById(userStr)
if err != nil {
@@ -256,7 +256,7 @@ func (manager *SRoleManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
q = q.In("id", subq.SubQuery())
}
groupStr := query.GroupStr()
groupStr := query.Group
if len(projectId) > 0 && len(groupStr) > 0 {
groupObj, err := GroupManager.FetchById(groupStr)
if err != nil {
+8
View File
@@ -207,3 +207,11 @@ func (manager *SServiceManager) fetchServiceByType(typeStr string) (*SService, e
}
return srvObj.(*SService), nil
}
func (manager *SServiceManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.RegionListInput) (*sqlchemy.SQuery, error) {
q, err := manager.SStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query.StandaloneResourceListInput)
if err != nil {
return nil, errors.Wrap(err, "SStandaloneResourceBaseManager.ListItemFilter")
}
return q, nil
}
+3 -3
View File
@@ -318,7 +318,7 @@ func (manager *SUserManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
return nil, err
}
groupStr := query.GroupStr()
groupStr := query.Group
if len(groupStr) > 0 {
groupObj, err := GroupManager.FetchByIdOrName(userCred, groupStr)
if err != nil {
@@ -332,7 +332,7 @@ func (manager *SUserManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
q = q.In("id", subq.SubQuery())
}
projectStr := query.ProjectStr()
projectStr := query.Project
if len(projectStr) > 0 {
project, err := ProjectManager.FetchByIdOrName(userCred, projectStr)
if err != nil {
@@ -346,7 +346,7 @@ func (manager *SUserManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu
q = q.In("id", subq.SubQuery())
}
roleStr := query.RoleStr()
roleStr := query.Role
if len(roleStr) > 0 {
role, err := RoleManager.FetchByIdOrName(userCred, roleStr)
if err != nil {