Files
cloudpods/pkg/apis/compute/elasticcache.go

272 lines
6.5 KiB
Go

// 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 (
"time"
"yunion.io/x/onecloud/pkg/apis"
)
type ElasticcacheDetails struct {
apis.VirtualResourceDetails
VpcResourceInfo
ZoneResourceInfoBase
SElasticcache
// IP子网名称
Network string `json:"network"`
// 关联安全组列表
Secgroups []apis.StandaloneShortDesc `json:"secgroups"`
// 备可用区列表
SlaveZoneInfos []apis.StandaloneShortDesc `json:"slave_zone_infos"`
}
func (self ElasticcacheDetails) GetMetricTags() map[string]string {
ret := map[string]string{
"id": self.Id,
"redis_id": self.Id,
"redis_ip": self.PrivateIpAddr,
"redis_name": self.Name,
"zone": self.Zone,
"zone_id": self.ZoneId,
"zone_ext_id": self.ZoneExtId,
"status": self.Status,
"cloudregion": self.Cloudregion,
"cloudregion_id": self.CloudregionId,
"region_ext_id": self.RegionExtId,
"tenant": self.Project,
"tenant_id": self.ProjectId,
"brand": self.Brand,
"domain_id": self.DomainId,
"project_domain": self.ProjectDomain,
"external_id": self.ExternalId,
}
return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo)
}
func (self ElasticcacheDetails) GetMetricPairs() map[string]string {
ret := map[string]string{}
return ret
}
type ElasticcacheResourceInfo struct {
// 弹性缓存实例名称
Elasticcache string `json:"elasticcache"`
// 引擎
Engine string `json:"engine"`
// 引擎版本
EngineVersion string `json:"engine_version"`
// 归属VPC ID
VpcId string `json:"vpc_id"`
VpcResourceInfo
// 归属Zone ID
ZoneId string `json:"zone_id"`
ZoneResourceInfoBase
}
type ELasticcacheResourceInput struct {
// 弹性缓存实例(ID or Name)
ElasticcacheId string `json:"elasticcache_id"`
// swagger:ignore
// Deprecated
Elasticcache string `json:"elasticcache" yunion-deprecated-by:"elasticcache_id"`
}
type ElasticcacheFilterListInput struct {
ELasticcacheResourceInput
// 以弹性缓存实例名称排序
OrderByElasticcache string `json:"order_by_elasticcache"`
VpcFilterListInput
ZonalFilterListBase
}
type ElasticcacheAccountDetails struct {
apis.StatusStandaloneResourceDetails
apis.ProjectizedResourceInfo
ElasticcacheResourceInfo
SElasticcacheAccount
ProjectId string `json:"tenant_id"`
}
type ElasticcacheAclDetails struct {
apis.StandaloneResourceDetails
apis.ProjectizedResourceInfo
ElasticcacheResourceInfo
SElasticcacheAcl
ProjectId string `json:"tenant_id"`
}
type ElasticcacheParameterDetails struct {
apis.StandaloneResourceDetails
ElasticcacheResourceInfo
SElasticcacheParameter
}
type ElasticcacheSyncstatusInput struct {
}
type ElasticcacheRemoteUpdateInput struct {
// 是否覆盖替换所有标签
ReplaceTags *bool `json:"replace_tags" help:"replace all remote tags"`
}
type ElasticcacheJointResourceDetails struct {
apis.VirtualJointResourceBaseDetails
// 弹性缓存实例名称
Elasticcache string `json:"elasticcache"`
// 弹性缓存实例ID
ElasticcacheId string `json:"elasticcache_id"`
}
type ElasticcacheJointsListInput struct {
apis.VirtualJointResourceBaseListInput
ElasticcacheFilterListInput
}
type ElasticcacheJointBaseUpdateInput struct {
apis.VirtualJointResourceBaseUpdateInput
}
type ElasticcacheSecgroupsInput struct {
// 安全组Id列表
// 实例必须处于运行状态
//
//
// | 平台 | 最多绑定安全组数量 |
// |-------------|------------------- |
// | 腾讯云 | 10 |
// | 华为云 | 不支持安全组 |
// | 阿里云 | 不支持安全组 |
SecgroupIds []string `json:"secgroup_ids"`
}
type ElasticcacheCreateInput struct {
apis.VirtualResourceCreateInput
// 安全组列表
// 腾讯云需要传此参数
// required: false
ElasticcacheSecgroupsInput
// 主可用区名称或Id
ZoneId string `json:"zone_id"`
// swagger: ignore
Zone string `json:"zone" yunion-deprecated-by:"zone_id"`
// 备可用区名称或Id列表, split by: ,
// 默认副本与主可用区一致
// 支持此参数的云厂商: 腾讯云
// required: false
SlaveZones string `json:"slave_zones"`
// Ip子网名称或Id,建议使用Id
// required: true
NetworkId string `json:"network_id"`
// swagger: ignore
Network string `json:"network" yunion-deprecated-by:"network_id"`
// 网络类型
// enum: vpc, cLassic
// required: true
NetworkType string `json:"network_type"`
// 弹性缓存Engine
// enum: redis, memcached
// required: true
Engine string `json:"engine"`
// 弹性缓存Engine版本
// required: false
EngineVersion string `json:"engine_version"`
// 实例规格
// required: false
InstanceType string `json:"instance_type"`
NodeType string `json:"node_type"`
// swagger: ignore
MemorySizeMb int `json:"memory_size_mb" yunion-deprecated-by:"capacity_mb"`
// 初始密码
// required: false
Password string `json:"password"`
ResetPassword bool `json:"reset_password"`
// 安全组名称或Id
// default: default
SecgroupIds []string `json:"secgroup_ids"`
// 内网IP
// 阿里云、华为云此参数可选,其它公有云该参数无效
// required: false
PrivateIp string `json:"private_ip"`
// swagger:ignore
VpcId string
// swagger:ignore
ManagerId string
// 包年包月时间周期
Duration string `json:"duration"`
// 是否自动续费(仅包年包月时生效)
// default: false
AutoRenew bool `json:"auto_renew"`
// swagger:ignore
ExpiredAt time.Time `json:"expired_at"`
// 计费方式
// enum: postpaid, prepaid
BillingType string
// swagger:ignore
BillingCycle string
// 弹性缓存维护时间段
// 华为云此参数可选,其它云该参数无效
// enum: 22:00:00, 02:00:00, 06:00:00, 10:00:00, 14:00:00, 18:00:00
// required: false
MaintainStartTime string `json:"maintain_start_time"`
LocalCategory string `json:"local_category"`
CapacityMb int `json:"capacity_mb"`
CloudregionId string `json:"cloudregion_id"`
}