Documentation ¶
Index ¶
- Constants
- Variables
- func DoRequest(baseAPI, query, queryType, method string, body []byte) ([]byte, int, error)
- type APIHostNode
- type AllocatedResources
- type Body
- type CDS
- type CircuitBreakers
- type ClusterNode
- type ClusterResource
- type ConditionStatus
- type Config
- type ConfigUnit
- type DependStrategy
- type ExecedTask
- type Expr
- type FirstConfig
- type GlobalConfig
- type HTTPSingleFileter
- type HostNode
- func (h *HostNode) Del() (*client.DeleteResponse, error)
- func (h *HostNode) DeleteNode() (*client.DeleteResponse, error)
- func (h *HostNode) Down()
- func (h *HostNode) Put(opts ...client.OpOption) (*client.PutResponse, error)
- func (h *HostNode) String() string
- func (h *HostNode) UpdataCondition(conditions ...NodeCondition)
- func (h *HostNode) UpdataK8sCondition(conditions []v1.NodeCondition)
- func (h *HostNode) Update() (*client.PutResponse, error)
- type HostRule
- type InitStatus
- type InstallStatus
- type LDS
- type LDSFilters
- type LDSHTTPConfig
- type LDSTCPConfig
- type LDSTCPRoutes
- type Login
- type LoginResult
- type MaxConnections
- type NodeCondition
- type NodeConditionType
- type NodeDetails
- type NodeList
- type NodePodResource
- type PieceCDS
- type PieceHTTPRoutes
- type PieceHTTPVirtualHost
- type PieceHeader
- type PieceLDS
- type PieceSDS
- type PieceTCPRoute
- type Pods
- type Prome
- type PromeData
- type PromeResultCore
- type PrometheusAPI
- type PrometheusInterface
- type Resource
- type ResponseBody
- type RouteConfig
- type SDS
- type Scheduler
- type SchedulerStatus
- type Shell
- type Task
- type TaskGroup
- type TaskGroupStatus
- type TaskOutPut
- type TaskOutPutStatus
- type TaskResult
- type TaskStatus
- type TaskTemp
Constants ¶
const ( //PREFIX PREFIX PREFIX string = "PREFIX" //HEADERS HEADERS HEADERS string = "HEADERS" //DOMAINS DOMAINS DOMAINS string = "DOMAINS" //LIMITS LIMITS LIMITS string = "LIMITS" //MaxPendingRequests MaxPendingRequests MaxPendingRequests string = "MaxPendingRequests" //MaxRequests MaxRequests MaxRequests string = "MaxRequests" //MaxRetries MaxRetries MaxRetries string = "MaxRetries" //UPSTREAM upStream UPSTREAM string = "upStream" //DOWNSTREAM downStream DOWNSTREAM string = "downStream" )
Variables ¶
var AtLeastOnceStrategy = "AtLeastOnce"
AtLeastOnceStrategy 至少已执行一次
var ComputeNode = "compute"
ComputeNode 计算节点
var LBNode = "lb"
LBNode 边缘负载均衡节点
var ManageNode = "manage"
ManageNode 管理节点
var SameNodeStrategy = "SameNode"
SameNodeStrategy 相同节点已执行
var StorageNode = "storage"
StorageNode 存储节点
Functions ¶
Types ¶
type APIHostNode ¶
type APIHostNode struct { ID string `json:"uuid" validate:"uuid"` HostName string `json:"host_name" validate:"host_name"` InternalIP string `json:"internal_ip" validate:"internal_ip|ip"` ExternalIP string `json:"external_ip" validate:"external_ip|ip"` RootPass string `json:"root_pass,omitempty"` Role []string `json:"role" validate:"role|required"` Labels map[string]string `json:"labels"` }
APIHostNode api host node
type AllocatedResources ¶
type Body ¶
type Body struct { List interface{} `json:"list"` Bean interface{} `json:"bean,omitempty"` }
type CircuitBreakers ¶
type CircuitBreakers struct {
Default *MaxConnections `json:"default"`
}
CircuitBreakers circuit
type ClusterNode ¶
type ClusterNode struct { PID string `json:"pid"` // 进程 pid Version string `json:"version"` UpTime time.Time `json:"up"` // 启动时间 DownTime time.Time `json:"down"` // 上次关闭时间 Alived bool `json:"alived"` // 是否可用 Connected bool `json:"connected"` // 当 Alived 为 true 时有效,表示心跳是否正常 Conditions []NodeCondition `json:"conditions"` }
ClusterNode 集群节点实体
type ClusterResource ¶
type ClusterResource struct { Node int `json:"node"` Tenant int `json:"tenant"` CapCpu int `json:"cap_cpu"` CapMem int `json:"cap_mem"` ReqCpu float32 `json:"req_cpu"` ReqMem int `json:"req_mem"` }
Resource 资源
type ConditionStatus ¶
type ConditionStatus string
ConditionStatus ConditionStatus
const ( ConditionTrue ConditionStatus = "True" ConditionFalse ConditionStatus = "False" ConditionUnknown ConditionStatus = "Unknown" )
These are valid condition statuses. "ConditionTrue" means a resource is in the condition. "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes can't decide if a resource is in the condition or not. In the future, we could add other intermediate conditions, e.g. ConditionDegraded.
type ConfigUnit ¶
type ConfigUnit struct { //配置名称 例如:network Name string `json:"name" validate:"name|required"` CNName string `json:"cn_name" validate:"cn_name"` //类型 例如:midonet Value interface{} `json:"value" validate:"value|required"` ValueType string `json:"value_type"` //可选类型 类型名称和需要的配置项 OptionalValue []string `json:"optional_value,omitempty"` DependConfig map[string][]ConfigUnit `json:"depend_config,omitempty"` //是否用户可配置 IsConfigurable bool `json:"is_configurable"` }
ConfigUnit 一个配置单元
func (ConfigUnit) String ¶
func (c ConfigUnit) String() string
type DependStrategy ¶
type DependStrategy struct { DependTaskID string `json:"depend_task_id"` DetermineStrategy string `json:"strategy"` }
DependStrategy 依赖策略
type ExecedTask ¶
type Expr ¶
type Expr struct { Body struct { // expr // in: body // required: true Expr string `json:"expr" validate:"expr|required"` } }
type FirstConfig ¶
type FirstConfig struct { StorageMode string `json:"storage_mode"` StorageHost string `json:"storage_host,omitempty"` StorageEndPoint string `json:"storage_endpoint,omitempty"` NetworkMode string `json:"network_mode"` ZKHosts string `json:"zk_host,omitempty"` CassandraIP string `json:"cassandra_ip,omitempty"` K8SAPIAddr string `json:"k8s_apiserver,omitempty"` MasterIP string `json:"master_ip,omitempty"` DNS string `json:"dns,omitempty"` ZMQSub string `json:"zmq_sub,omitempty"` ZMQTo string `json:"zmq_to,omitempty"` EtcdIP string `json:"etcd_ip,omitempty"` }
type GlobalConfig ¶
type GlobalConfig struct {
Configs map[string]*ConfigUnit `json:"configs"`
}
GlobalConfig 全局配置
func CreateDefaultGlobalConfig ¶
func CreateDefaultGlobalConfig() *GlobalConfig
CreateDefaultGlobalConfig 生成默认配置
func CreateGlobalConfig ¶
func CreateGlobalConfig(kvs []*mvccpb.KeyValue) (*GlobalConfig, error)
CreateGlobalConfig 生成配置
type HTTPSingleFileter ¶
type HTTPSingleFileter struct { Type string `json:"type"` Name string `json:"name"` Config map[string]string `json:"config"` }
HTTPSingleFileter HttpSingleFileter
type HostNode ¶
type HostNode struct { ID string `json:"uuid"` HostName string `json:"host_name"` CreateTime time.Time `json:"create_time"` InternalIP string `json:"internal_ip"` ExternalIP string `json:"external_ip"` RootPass string `json:"root_pass,omitempty"` KeyPath string `json:"key_path,omitempty"` //管理节点key文件路径 AvailableMemory int64 `json:"available_memory"` AvailableCPU int64 `json:"available_cpu"` Mode string `json:"mode"` Role HostRule `json:"role"` //节点属性 compute manage storage Status string `json:"status"` //节点状态 create,init,running,stop,delete Labels map[string]string `json:"labels"` //节点标签 内置标签+用户自定义标签 Unschedulable bool `json:"unschedulable"` //不可调度 NodeStatus *v1.NodeStatus `json:"node_status,omitempty"` ClusterNode }
HostNode 集群节点实体
func (*HostNode) DeleteNode ¶
func (h *HostNode) DeleteNode() (*client.DeleteResponse, error)
DeleteNode 删除节点
func (*HostNode) UpdataCondition ¶
func (h *HostNode) UpdataCondition(conditions ...NodeCondition)
UpdataCondition 更新状态
func (*HostNode) UpdataK8sCondition ¶
func (h *HostNode) UpdataK8sCondition(conditions []v1.NodeCondition)
UpdataK8sCondition 更新k8s节点的状态到rainbond节点
type InitStatus ¶
type InstallStatus ¶
type InstallStatus struct { Status int `json:"status"` StatusCN string `json:"cn"` Tasks []*ExecedTask `json:"tasks"` }
type LDSFilters ¶
type LDSFilters struct { Name string `json:"name"` Config interface{} `json:"config"` }
LDSFilters LDSFilters
type LDSHTTPConfig ¶
type LDSHTTPConfig struct { CodecType string `json:"codec_type"` StatPrefix string `json:"stat_prefix"` RouteConfig *RouteConfig `json:"route_config"` Filters []*HTTPSingleFileter `json:"filters"` }
LDSHTTPConfig LDSHTTPConfig
type LDSTCPConfig ¶
type LDSTCPConfig struct { StatPrefix string `json:"stat_prefix"` RouteConfig *LDSTCPRoutes `json:"route_config"` }
LDSTCPConfig LDSTCPConfig
type LDSTCPRoutes ¶
type LDSTCPRoutes struct {
Routes []*PieceTCPRoute `json:"routes"`
}
LDSTCPRoutes LDSTCPRoutes
type LoginResult ¶
type MaxConnections ¶
type MaxConnections struct { MaxConnections int `json:"max_connections"` MaxPendingRequests int `json:"max_pending_requests"` MaxRequests int `json:"max_requests"` MaxRetries int `json:"max_retries"` }
MaxConnections circuit
type NodeCondition ¶
type NodeCondition struct { // Type of node condition. Type NodeConditionType `json:"type" ` // Status of the condition, one of True, False, Unknown. Status ConditionStatus `json:"status" ` // Last time we got an update on a given condition. // +optional LastHeartbeatTime time.Time `json:"lastHeartbeatTime,omitempty" ` // Last time the condition transit from one status to another. // +optional LastTransitionTime time.Time `json:"lastTransitionTime,omitempty" ` // (brief) reason for the condition's last transition. // +optional Reason string `json:"reason,omitempty"` // Human readable message indicating details about last transition. // +optional Message string `json:"message,omitempty"` }
NodeCondition contains condition information for a node.
type NodeConditionType ¶
type NodeConditionType string
NodeConditionType NodeConditionType
const ( // NodeReady means this node is working NodeReady NodeConditionType = "Ready" // InstallNotReady means the installation task was not completed in this node. InstallNotReady NodeConditionType = "InstallNotReady" // NodeInit means node already install rainbond node and regist NodeInit NodeConditionType = "NodeInit" )
These are valid conditions of node.
func (NodeConditionType) Compare ¶
func (nt NodeConditionType) Compare(ent NodeConditionType) bool
Compare 比较
type NodeDetails ¶
type NodeDetails struct { Name string `json:"name"` Role []string `json:"role"` Status string `json:"status"` Labels map[string]string `json:"labels"` Annotations map[string]string `json:"annotations"` CreationTimestamp string `json:"creationtimestamp"` Conditions []v1.NodeCondition `json:"conditions"` Addresses map[string]string `json:"addresses"` Capacity map[string]string `json:"capacity"` Allocatable map[string]string `json:"allocatable"` SystemInfo v1.NodeSystemInfo `json:"systeminfo"` ExternalID string `json:"externalid"` NonterminatedPods []*Pods `json:"nonterminatedpods"` AllocatedResources map[string]string `json:"allocatedresources"` Events map[string][]string `json:"events"` }
NodeDetails NodeDetails
type NodePodResource ¶
type NodePodResource struct { AllocatedResources `json:"allocatedresources"` Resource `json:"allocatable"` }
type PieceCDS ¶
type PieceCDS struct { Name string `json:"name"` Type string `json:"type"` ConnectTimeoutMS int `json:"connect_timeout_ms"` LBType string `json:"lb_type"` ServiceName string `json:"service_name"` CircuitBreakers *CircuitBreakers `json:"circuit_breakers"` }
PieceCDS struct
type PieceHTTPRoutes ¶
type PieceHTTPRoutes struct { TimeoutMS int `json:"timeout_ms"` Prefix string `json:"prefix"` Cluster string `json:"cluster"` }
PieceHTTPRoutes PieceHTTPRoutes
type PieceHTTPVirtualHost ¶
type PieceHTTPVirtualHost struct { Name string `json:"name"` Domains []string `json:"domains"` Routes []*PieceHTTPRoutes `json:"routes"` }
PieceHTTPVirtualHost PieceHTTPVirtualHost
type PieceHeader ¶
PieceHeader PieceHeader
type PieceLDS ¶
type PieceLDS struct { Name string `json:"name"` Address string `json:"address"` Filters []*LDSFilters `json:"filters"` }
PieceLDS struct
type PieceTCPRoute ¶
type PieceTCPRoute struct {
Cluster string `json:"cluster"`
}
PieceTCPRoute PieceTCPRoute
type Pods ¶
type Pods struct { Namespace string `json:"namespace"` Id string `json:"id"` Name string `json:"name"` TenantName string `json:"tenant_name"` CPURequests string `json:"cpurequest"` CPURequestsR string `json:"cpurequestr"` CPULimits string `json:"cpulimits"` CPULimitsR string `json:"cpulimitsr"` MemoryRequests string `json:"memoryrequests"` MemoryRequestsR string `json:"memoryrequestsr"` MemoryLimits string `json:"memorylimits"` MemoryLimitsR string `json:"memorylimitsr"` }
type PromeData ¶
type PromeData struct { ResultType string `json:"resultType"` Result []*PromeResultCore `json:"result"` }
type PromeResultCore ¶
type PrometheusAPI ¶
type PrometheusAPI struct {
API string
}
func (*PrometheusAPI) Query ¶
func (s *PrometheusAPI) Query(query string) (*Prome, *utils.APIHandleError)
Get Get
func (*PrometheusAPI) QueryRange ¶
func (s *PrometheusAPI) QueryRange(query string, start, end, step string) (*Prome, *utils.APIHandleError)
Get Get
type PrometheusInterface ¶
type ResponseBody ¶
type RouteConfig ¶
type RouteConfig struct {
VirtualHosts []*PieceHTTPVirtualHost `json:"virtual_hosts"`
}
RouteConfig RouteConfig
type Scheduler ¶
type Scheduler struct { Mode string `json:"mode"` //立即调度(Intime),触发调度(Passive) Status map[string]SchedulerStatus `json:"status"` }
Scheduler 调度状态
type SchedulerStatus ¶
type SchedulerStatus struct { Status string `json:"status"` Message string `json:"message"` SchedulerTime time.Time `json:"scheduler_time"` //调度时间 SchedulerMaster string `json:"scheduler_master"` //调度的管理节点 }
SchedulerStatus 调度状态
type Task ¶
type Task struct { Name string `json:"name" validate:"name|required"` ID string `json:"id" validate:"id|uuid"` TempID string `json:"temp_id,omitempty" validate:"temp_id|uuid"` Temp *TaskTemp `json:"temp,omitempty"` GroupID string `json:"group_id,omitempty"` //执行的节点 Nodes []string `json:"nodes"` //执行时间定义 //例如每30分钟执行一次:@every 30m Timer string `json:"timer"` TimeOut int64 `json:"time_out"` // 执行任务失败重试次数 // 默认为 0,不重试 Retry int `json:"retry"` // 执行任务失败重试时间间隔 // 单位秒,如果不大于 0 则马上重试 Interval int `json:"interval"` //ExecCount 执行次数 ExecCount int `json:"exec_count"` //每个执行节点执行状态 Status map[string]TaskStatus `json:"status,omitempty"` Scheduler Scheduler `json:"scheduler"` CreateTime time.Time `json:"create_time"` StartTime time.Time `json:"start_time"` CompleteTime time.Time `json:"complete_time"` ResultPath string `json:"result_path"` EventID string `json:"event_id"` RunMode string `json:"run_mode"` OutPut []*TaskOutPut `json:"out_put"` }
Task 任务
type TaskGroup ¶
type TaskGroup struct { Name string `json:"name" validate:"name|required"` ID string `json:"id" validate:"id|uuid"` Tasks []*Task `json:"tasks"` CreateTime time.Time `json:"create_time"` Status *TaskGroupStatus `json:"status"` }
TaskGroup 任务组
type TaskGroupStatus ¶
type TaskGroupStatus struct { TaskStatus map[string]TaskStatus `json:"task_status"` InitTime time.Time `json:"init_time"` StartTime time.Time `json:"start_time"` EndTime time.Time `json:"end_time"` Status string `json:"status"` //create init exec complete timeout }
TaskGroupStatus 任务组状态
type TaskOutPut ¶
type TaskOutPut struct { NodeID string `json:"node_id"` JobID string `json:"job_id"` Global map[string]string `json:"global"` Inner map[string]string `json:"inner"` //返回数据类型,检测结果类(check) 执行安装类 (install) 普通类 (common) Type string `json:"type"` Status []TaskOutPutStatus `json:"status"` ExecStatus string `json:"exec_status"` Body string `json:"body"` }
TaskOutPut 任务输出
func ParseTaskOutPut ¶
func ParseTaskOutPut(body string) (t TaskOutPut, err error)
ParseTaskOutPut json parse
type TaskOutPutStatus ¶
type TaskOutPutStatus struct { Name string `json:"name"` //节点属性 ConditionType string `json:"condition_type"` //节点属性值 ConditionStatus string `json:"condition_status"` NextTask []string `json:"next_tasks,omitempty"` NextGroups []string `json:"next_groups,omitempty"` }
TaskOutPutStatus 输出数据
type TaskResult ¶
type TaskResult []*ExecedTask
func (TaskResult) Len ¶
func (c TaskResult) Len() int
func (TaskResult) Less ¶
func (c TaskResult) Less(i, j int) bool
func (TaskResult) Swap ¶
func (c TaskResult) Swap(i, j int)
type TaskStatus ¶
type TaskStatus struct { JobID string `json:"job_id"` Status string `json:"status"` //执行状态,create init exec complete timeout StartTime time.Time `json:"start_time"` EndTime time.Time `json:"end_time"` TakeTime int `json:"take_time"` CompleStatus string `json:"comple_status"` //脚本退出码 ShellCode int `json:"shell_code"` Message string `json:"message,omitempty"` }
TaskStatus 任务状态
type TaskTemp ¶
type TaskTemp struct { Name string `json:"name" validate:"name|required"` ID string `json:"id" validate:"id|uuid"` Shell Shell `json:"shell"` Envs map[string]string `json:"envs,omitempty"` Input string `json:"input,omitempty"` Args []string `json:"args,omitempty"` Depends []DependStrategy `json:"depends,omitempty"` Timeout int `json:"timeout" validate:"timeout|required|numeric"` CreateTime time.Time `json:"create_time"` Labels map[string]string `json:"labels,omitempty"` }
TaskTemp 任务模版