| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 |
- // 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 apis
- import (
- "time"
- "yunion.io/x/onecloud/pkg/util/tagutils"
- )
- type ScopedResourceInput struct {
- // 指定查询的权限范围,可能值为project, domain or system
- Scope string `json:"scope"`
- }
- type DomainizedResourceListInput struct {
- ScopedResourceInput
- DomainizedResourceInput
- // 对具有域属性的资源,严格匹配域ID
- ProjectDomainIds []string `json:"project_domain_ids"`
- // Deprecated
- // swagger:ignore
- ProjectDomains []string `json:"project_domains" yunion-deprecated-by:"project_domain_ids"`
- // 按domain名称排序,可能值为asc|desc
- // pattern: asc|desc
- OrderByDomain string `json:"order_by_domain"`
- // filter by domain tags
- DomainTags tagutils.TTagSetList `json:"domain_tags"`
- // filter by domain tags
- NoDomainTags tagutils.TTagSetList `json:"no_domain_tags"`
- // ignore
- // domain tags filters imposed by policy
- // PolicyDomainTags tagutils.TTagSetList `json:"policy_domain_tags"`
- }
- type ProjectizedResourceListInput struct {
- DomainizedResourceListInput
- ProjectizedResourceInput
- // 对具有项目属性的资源,严格匹配项目ID
- ProjectIds []string `json:"project_ids"`
- // Deprecated
- // swagger:ignore
- Projects []string `json:"projects" yunion-deprecated-by:"project_ids"`
- // 按project名称排序,可能值为asc|desc
- // pattern: asc|desc
- OrderByProject string `json:"order_by_project"`
- // swagger:ignore
- // Deprecated
- OrderByTenant string `json:"order_by_tenant" yunion-deprecated-by:"order_by_project"`
- // filter by project tags
- ProjectTags tagutils.TTagSetList `json:"project_tags"`
- // filter by no project tags
- NoProjectTags tagutils.TTagSetList `json:"no_project_tags"`
- // filter by project organizations
- ProjectOrganizations []string `json:"project_organizations"`
- // ignore
- // project tag fitlers imposed by policy
- PolicyProjectTags tagutils.TTagSetList `json:"policy_project_tags"`
- }
- type StatusDomainLevelUserResourceListInput struct {
- StatusDomainLevelResourceListInput
- // 查询指定的用户(ID或名称)拥有的资源
- UserId string `json:"user_id"`
- // swagger:ignore
- // Deprecated
- // Filter by userId
- User string `json:"user" yunion-deprecated-by:"user_id"`
- }
- type UserResourceListInput struct {
- StandaloneResourceListInput
- ScopedResourceInput
- // swagger:ignore
- // Is an admin call? equivalent to scope=system
- // Deprecated
- Admin *bool `json:"admin"`
- // 查询指定的用户(ID或名称)拥有的资源
- UserId string `json:"user_id"`
- // swagger:ignore
- // Deprecated
- // Filter by userId
- User string `json:"user" yunion-deprecated-by:"user_id"`
- }
- type ModelBaseListInput struct {
- Meta
- // 查询限制量
- // default: 20
- Limit *int `json:"limit" default:"20" help:"max items per page"`
- // 查询偏移量
- // default: 0
- Offset *int `json:"offset"`
- // 列表排序时,用于排序的字段的名称,该字段不提供时,则按默认字段排序。一般时按照资源的新建时间逆序排序。
- OrderBy []string `json:"order_by"`
- // 列表排序时的顺序,desc为从高到低,asc为从低到高。默认是按照资源的创建时间desc排序。
- // example: desc|asc
- Order string `json:"order"`
- // 列表返回资源的更多详细信息。默认只显示基本字段,该字段为true则返回扩展字段信息。
- Details *bool `json:"details"`
- // 模糊搜索所有字段
- Search string `json:"search"`
- // 指定过滤条件,允许指定多个,每个条件的格式为"字段名称.操作符(匹配信息)",例如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 | > 0 | name.like('%test%') | sql字符串匹配任意一个字符串 |
- // | contains | > 0 | name.contains('test') | 包含任意一个给定字符串 |
- // | startswith | > 0 | name.startswith('test') | 以任意一个给定字符串开头 |
- // | endswith | > 0 | name.endswith('test') | 以任意一个给定字符串结尾 |
- // | equals | > 0 | 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"`
- // 指定关联过滤条件,允许指定多个,后端将根据关联过滤条件和其他表关联查询,支持的查询语法和filter相同,
- // 和其他表关联的语法如下:
- // joint_resources.related_key(origin_key).filter_col.filter_ops(values)
- // 其中,joint_resources为要关联的资源名称,related_key为关联表column,origin_key为当前表column, filter_col为
- // 关联表用于查询匹配的field名称,field_ops为filter支持的操作,values为匹配的值
- // 举例:
- // guestnetworks.guest_id(id).ip_addr.equals('10.168.21.222')
- JointFilter []string `json:"joint_filter"`
- // 如果filter_any为true,则查询所有filter的并集,否则为交集
- FilterAny *bool `json:"filter_any"`
- // 返回结果只包含指定的字段
- Field []string `json:"field"`
- // 用于数据导出,指定导出的数据字段
- ExportKeys string `json:"export_keys" help:"Export field keys"`
- // 返回结果携带delete_fail_reason和update_fail_reason字段
- ShowFailReason *bool `json:"show_fail_reason"`
- // 是否返回状态统计信息,默认为False
- SummaryStats *bool `json:"summary_stats"`
- }
- func (o ModelBaseListInput) GetExportKeys() string {
- return o.ExportKeys
- }
- type IncrementalListInput struct {
- // 用于指定增量加载的标记
- PagingMarker string `json:"paging_marker"`
- }
- type VirtualResourceListInput struct {
- StatusStandaloneResourceListInput
- ProjectizedResourceListInput
- // 列表中包含标记为"系统资源"的资源
- System *bool `json:"system"`
- // 是否显示回收站内的资源,默认不显示(对实现了回收站的资源有效,例如主机,磁盘,镜像)
- PendingDelete *bool `json:"pending_delete"`
- // 是否显示所有资源,包括回收站和不再回收站的资源
- // TODO: fix this???
- PendingDeleteAll *bool `json:"-"`
- }
- type ResourceBaseListInput struct {
- ModelBaseListInput
- }
- type SharableVirtualResourceListInput struct {
- VirtualResourceListInput
- SharableResourceBaseListInput
- // 根据资源的共享范围过滤列表,可能值为:system, domain, project
- PublicScope string `json:"public_scope"`
- }
- type AdminSharableVirtualResourceListInput struct {
- SharableVirtualResourceListInput
- }
- type MetadataResourceListInput struct {
- // 通过标签过滤(包含这些标签)
- Tags tagutils.TTagSet `json:"tags"`
- // 通过一组标签过滤(还包含这些标签,OR的关系)
- ObjTags tagutils.TTagSetList `json:"obj_tags"`
- // 通过标签过滤(不包含这些标签)
- NoTags tagutils.TTagSet `json:"no_tags"`
- // 通过一组标签过滤(还不包含这些标签,AND的关系)
- NoObjTags tagutils.TTagSetList `json:"no_obj_tags"`
- // ignore
- // 策略规定的标签过滤器
- // PolicyObjectTags tagutils.TTagSetList `json:"policy_object_tags"`
- // 通过标签排序
- OrderByTag string `json:"order_by_tag"`
- // deprecated
- // 返回资源的标签不包含用户标签
- WithoutUserMeta *bool `json:"without_user_meta"`
- // 返回包含用户标签的资源
- WithUserMeta *bool `json:"with_user_meta"`
- // 返回包含外部标签的资源
- WithCloudMeta *bool `json:"with_cloud_meta"`
- // 返回包含任意标签的资源
- WithAnyMeta *bool `json:"with_any_meta"`
- // 返回列表数据中包含资源的标签数据(Metadata)
- WithMeta *bool `json:"with_meta"`
- }
- type StandaloneAnonResourceListInput struct {
- ResourceBaseListInput
- MetadataResourceListInput
- // 显示所有的资源,包括模拟的资源
- ShowEmulated *bool `json:"show_emulated" help:"show emulated resources" negative:"do not show emulated resources"`
- // 以资源ID过滤列表
- Ids []string `json:"id" help:"filter by ids"`
- }
- type StandaloneResourceListInput struct {
- StandaloneAnonResourceListInput
- // 以资源名称过滤列表
- Names []string `json:"name" help:"filter by names"`
- }
- type StatusResourceBaseListInput struct {
- // 以资源的状态过滤列表
- Status []string `json:"status"`
- }
- type EnabledResourceBaseListInput struct {
- // 以资源是否启用/禁用过滤列表
- Enabled *bool `json:"enabled"`
- }
- type SharableResourceBaseListInput struct {
- // 以资源是否共享过滤列表
- IsPublic *bool `json:"is_public"`
- // 根据资源的共享范围过滤列表,可能值为:system, domain, project
- PublicScope string `json:"public_scope"`
- }
- type DomainLevelResourceListInput struct {
- StandaloneResourceListInput
- DomainizedResourceListInput
- }
- type StatusStandaloneResourceListInput struct {
- StandaloneResourceListInput
- StatusResourceBaseListInput
- }
- type EnabledStatusStandaloneResourceListInput struct {
- StatusStandaloneResourceListInput
- EnabledResourceBaseListInput
- }
- type StatusDomainLevelResourceListInput struct {
- DomainLevelResourceListInput
- StatusResourceBaseListInput
- }
- type EnabledStatusDomainLevelResourceListInput struct {
- StatusDomainLevelResourceListInput
- EnabledResourceBaseListInput
- }
- type JointResourceBaseListInput struct {
- ResourceBaseListInput
- }
- type VirtualJointResourceBaseListInput struct {
- JointResourceBaseListInput
- }
- type ExternalizedResourceBaseListInput struct {
- // 以资源外部ID过滤
- ExternalId string `json:"external_id"`
- }
- type DeletePreventableResourceBaseListInput struct {
- // 是否禁止删除
- DisableDelete *bool `json:"disable_delete"`
- }
- type ScopedResourceBaseListInput struct {
- ProjectizedResourceListInput
- // 指定匹配的范围,可能值为project, domain or system
- BelongScope string `json:"belong_scope"`
- }
- type InfrasResourceBaseListInput struct {
- DomainLevelResourceListInput
- SharableResourceBaseListInput
- }
- type StatusInfrasResourceBaseListInput struct {
- InfrasResourceBaseListInput
- StatusResourceBaseListInput
- }
- type EnabledStatusInfrasResourceBaseListInput struct {
- StatusInfrasResourceBaseListInput
- EnabledResourceBaseListInput
- }
- type MultiArchResourceBaseListInput struct {
- // 通过操作系统架构过滤
- // x86会过滤出os_arch为空或os_arch=i386或以x86开头的资源
- // arm会过滤出os_arch=aarch64或os_arch=aarch32或者以arm开头的资源
- // 其他的输入会过滤出以输入字符开头的资源
- // enmu: x86, arm
- OsArch []string `json:"os_arch"`
- }
- type AutoDeleteResourceBaseListInput struct {
- AutoDelete *bool
- }
- type OpsLogListInput struct {
- OwnerProjectIds []string `json:"owner_project_ids"`
- OwnerDomainIds []string `json:"owner_domain_ids"`
- // filter by obj type
- ObjTypes []string `json:"obj_type"`
- // filter by obj name or obj id
- Objs []string `json:"obj"`
- // filter by obj ids
- ObjIds []string `json:"obj_id"`
- // filter by obj name
- ObjNames []string `json:"obj_name"`
- // filter by action
- Actions []string `json:"action"`
- Since time.Time `json:"since"`
- Until time.Time `json:"until"`
- }
- type HostDmesgLogListInput struct {
- OpsLogListInput
- LogLevels []string `json:"log_levels"`
- ShowDmesgLog bool `json:"show_dmesg_log"`
- }
- type IdNameDetails struct {
- Id string `json:"id"`
- Name string `json:"name"`
- }
- type TotalCountBase struct {
- Count int `json:"count"`
- }
- type LogBaseListInput struct {
- ModelBaseListInput
- Id []string `json:"id"`
- }
|