3 Star 0 Fork 0

Aberic / swarm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
compose.pb.go 43.29 KB
一键复制 编辑 原始数据 按行查看 历史
Aberic 提交于 2020-07-07 21:13 . project enhance
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto/compose.proto
// protoc --go_out=plugins=grpc:. swarm/proto/*.proto
package proto
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// 服务部署模式
type Mode int32
const (
// 全局(每个群集节点只有一个容器)
Mode_global Mode = 0
// 副本(指定容器的数量)
Mode_replicated Mode = 1
)
var Mode_name = map[int32]string{
0: "global",
1: "replicated",
}
var Mode_value = map[string]int32{
"global": 0,
"replicated": 1,
}
func (x Mode) String() string {
return proto.EnumName(Mode_name, int32(x))
}
func (Mode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{0}
}
// 服务发现的模式
type EndpointMode int32
const (
// Docker为swarm集群服务分配一个虚拟IP
EndpointMode_vip EndpointMode = 0
// DNS轮询(DNSRR)服务发现不使用单个虚拟IP
EndpointMode_dnsrr EndpointMode = 1
)
var EndpointMode_name = map[int32]string{
0: "vip",
1: "dnsrr",
}
var EndpointMode_value = map[string]int32{
"vip": 0,
"dnsrr": 1,
}
func (x EndpointMode) String() string {
return proto.EnumName(EndpointMode_name, int32(x))
}
func (EndpointMode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{1}
}
// 重启判定条件
type Condition int32
const (
// 默认的重新启动策略,它在任何情况下都不会重新启动容器
Condition_none Condition = 0
// 如果退出码指示出现on-failure错误,on-failure策略将重新启动容器
Condition_onFailure Condition = 1
// 容器总是会重新启动
Condition_any Condition = 2
)
var Condition_name = map[int32]string{
0: "none",
1: "onFailure",
2: "any",
}
var Condition_value = map[string]int32{
"none": 0,
"onFailure": 1,
"any": 2,
}
func (x Condition) String() string {
return proto.EnumName(Condition_name, int32(x))
}
func (Condition) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{2}
}
// 升级/回滚失败后的动作
type Action int32
const (
// 升级/回滚失败后继续操作
Action_continue Action = 0
// 升级失败后回滚当前操作
Action_rollback Action = 1
// 升级/回滚失败后暂停操作
Action_pause Action = 2
)
var Action_name = map[int32]string{
0: "continue",
1: "rollback",
2: "pause",
}
var Action_value = map[string]int32{
"continue": 0,
"rollback": 1,
"pause": 2,
}
func (x Action) String() string {
return proto.EnumName(Action_name, int32(x))
}
func (Action) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{3}
}
// 更新期间的操作顺序
type Order int32
const (
// 旧任务在开始新任务之前停止
Order_stopFirst Order = 0
// 首先启动新任务,并且正在运行的任务短暂重叠
Order_startFirst Order = 1
)
var Order_name = map[int32]string{
0: "stopFirst",
1: "startFirst",
}
var Order_value = map[string]int32{
"stopFirst": 0,
"startFirst": 1,
}
func (x Order) String() string {
return proto.EnumName(Order_name, int32(x))
}
func (Order) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{4}
}
// 网络驱动类型
type Driver int32
const (
Driver_host Driver = 0
Driver_bridge Driver = 1
Driver_overlay Driver = 2
)
var Driver_name = map[int32]string{
0: "host",
1: "bridge",
2: "overlay",
}
var Driver_value = map[string]int32{
"host": 0,
"bridge": 1,
"overlay": 2,
}
func (x Driver) String() string {
return proto.EnumName(Driver_name, int32(x))
}
func (Driver) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{5}
}
type ReqCompose struct {
StackName string `protobuf:"bytes,1,opt,name=stackName,proto3" json:"stackName,omitempty"`
Compose *Compose `protobuf:"bytes,2,opt,name=compose,proto3" json:"compose,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ReqCompose) Reset() { *m = ReqCompose{} }
func (m *ReqCompose) String() string { return proto.CompactTextString(m) }
func (*ReqCompose) ProtoMessage() {}
func (*ReqCompose) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{0}
}
func (m *ReqCompose) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReqCompose.Unmarshal(m, b)
}
func (m *ReqCompose) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReqCompose.Marshal(b, m, deterministic)
}
func (m *ReqCompose) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReqCompose.Merge(m, src)
}
func (m *ReqCompose) XXX_Size() int {
return xxx_messageInfo_ReqCompose.Size(m)
}
func (m *ReqCompose) XXX_DiscardUnknown() {
xxx_messageInfo_ReqCompose.DiscardUnknown(m)
}
var xxx_messageInfo_ReqCompose proto.InternalMessageInfo
func (m *ReqCompose) GetStackName() string {
if m != nil {
return m.StackName
}
return ""
}
func (m *ReqCompose) GetCompose() *Compose {
if m != nil {
return m.Compose
}
return nil
}
// compose stack启动配置文件信息
type Compose struct {
// 启动期望服务集合
Services map[string]*Task `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// 启动所需网络集合
Networks map[string]*ComposeNetwork `protobuf:"bytes,2,rep,name=networks,proto3" json:"networks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Compose) Reset() { *m = Compose{} }
func (m *Compose) String() string { return proto.CompactTextString(m) }
func (*Compose) ProtoMessage() {}
func (*Compose) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{1}
}
func (m *Compose) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Compose.Unmarshal(m, b)
}
func (m *Compose) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Compose.Marshal(b, m, deterministic)
}
func (m *Compose) XXX_Merge(src proto.Message) {
xxx_messageInfo_Compose.Merge(m, src)
}
func (m *Compose) XXX_Size() int {
return xxx_messageInfo_Compose.Size(m)
}
func (m *Compose) XXX_DiscardUnknown() {
xxx_messageInfo_Compose.DiscardUnknown(m)
}
var xxx_messageInfo_Compose proto.InternalMessageInfo
func (m *Compose) GetServices() map[string]*Task {
if m != nil {
return m.Services
}
return nil
}
func (m *Compose) GetNetworks() map[string]*ComposeNetwork {
if m != nil {
return m.Networks
}
return nil
}
// 容器服务
type Task struct {
// 镜像服务
Image *Image `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
// 端口映射策略集合
Ports []*Port `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports,omitempty"`
// 环境变量
Environments []*Environment `protobuf:"bytes,3,rep,name=environments,proto3" json:"environments,omitempty"`
// 启动容器后执行的默认命令
Command []string `protobuf:"bytes,4,rep,name=command,proto3" json:"command,omitempty"`
// 启动容器后执行的默认命令参数
Args []string `protobuf:"bytes,5,rep,name=args,proto3" json:"args,omitempty"`
// 容器内部服务工作目录
WorkingDir string `protobuf:"bytes,6,opt,name=workingDir,proto3" json:"workingDir,omitempty"`
// 挂载服务集合
Volumes []*ComposeVolume `protobuf:"bytes,7,rep,name=volumes,proto3" json:"volumes,omitempty"`
// 工作网络集合
Networks []string `protobuf:"bytes,8,rep,name=networks,proto3" json:"networks,omitempty"`
// 通常,当前台进程在docker容器内完成时,它会假设作业已经完成并清理容器实例。
// 但是数据库引擎和web服务器等需要继续运行。
// 通过创建一个伪终端,容器保持活动状态。
// 可以通过运行docker logs <<container name>>命令(带tty和不带tty)来查看这个工作流
TTY bool `protobuf:"varint,9,opt,name=TTY,proto3" json:"TTY,omitempty"`
// dns服务集合
ExtraHosts []*ExtraHost `protobuf:"bytes,10,rep,name=extraHosts,proto3" json:"extraHosts,omitempty"`
// 依赖关系服务
DependsOn []string `protobuf:"bytes,11,rep,name=dependsOn,proto3" json:"dependsOn,omitempty"`
// 指定swarm服务部署和运行时的相关配置
Deploy *Deploy `protobuf:"bytes,12,opt,name=deploy,proto3" json:"deploy,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Task) Reset() { *m = Task{} }
func (m *Task) String() string { return proto.CompactTextString(m) }
func (*Task) ProtoMessage() {}
func (*Task) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{2}
}
func (m *Task) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Task.Unmarshal(m, b)
}
func (m *Task) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Task.Marshal(b, m, deterministic)
}
func (m *Task) XXX_Merge(src proto.Message) {
xxx_messageInfo_Task.Merge(m, src)
}
func (m *Task) XXX_Size() int {
return xxx_messageInfo_Task.Size(m)
}
func (m *Task) XXX_DiscardUnknown() {
xxx_messageInfo_Task.DiscardUnknown(m)
}
var xxx_messageInfo_Task proto.InternalMessageInfo
func (m *Task) GetImage() *Image {
if m != nil {
return m.Image
}
return nil
}
func (m *Task) GetPorts() []*Port {
if m != nil {
return m.Ports
}
return nil
}
func (m *Task) GetEnvironments() []*Environment {
if m != nil {
return m.Environments
}
return nil
}
func (m *Task) GetCommand() []string {
if m != nil {
return m.Command
}
return nil
}
func (m *Task) GetArgs() []string {
if m != nil {
return m.Args
}
return nil
}
func (m *Task) GetWorkingDir() string {
if m != nil {
return m.WorkingDir
}
return ""
}
func (m *Task) GetVolumes() []*ComposeVolume {
if m != nil {
return m.Volumes
}
return nil
}
func (m *Task) GetNetworks() []string {
if m != nil {
return m.Networks
}
return nil
}
func (m *Task) GetTTY() bool {
if m != nil {
return m.TTY
}
return false
}
func (m *Task) GetExtraHosts() []*ExtraHost {
if m != nil {
return m.ExtraHosts
}
return nil
}
func (m *Task) GetDependsOn() []string {
if m != nil {
return m.DependsOn
}
return nil
}
func (m *Task) GetDeploy() *Deploy {
if m != nil {
return m.Deploy
}
return nil
}
// 镜像服务
type Image struct {
// 镜像名称
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// 镜像版本号
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Image) Reset() { *m = Image{} }
func (m *Image) String() string { return proto.CompactTextString(m) }
func (*Image) ProtoMessage() {}
func (*Image) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{3}
}
func (m *Image) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Image.Unmarshal(m, b)
}
func (m *Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Image.Marshal(b, m, deterministic)
}
func (m *Image) XXX_Merge(src proto.Message) {
xxx_messageInfo_Image.Merge(m, src)
}
func (m *Image) XXX_Size() int {
return xxx_messageInfo_Image.Size(m)
}
func (m *Image) XXX_DiscardUnknown() {
xxx_messageInfo_Image.DiscardUnknown(m)
}
var xxx_messageInfo_Image proto.InternalMessageInfo
func (m *Image) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *Image) GetVersion() string {
if m != nil {
return m.Version
}
return ""
}
// port 端口映射策略
//
// "3000"
//
// "3000-3005"
//
// "8000:8000"
//
// "9090-9091:8080-8081"
//
// "49100:22"
//
// "127.0.0.1:8001:8001"
//
// "127.0.0.1:5000-5010:5000-5010"
//
// "6060:6060/udp"
//
// "12400-12500:1240"
type Port struct {
// 公开映射端口号
Publish string `protobuf:"bytes,1,opt,name=publish,proto3" json:"publish,omitempty"`
// 容器内部端口号
Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Port) Reset() { *m = Port{} }
func (m *Port) String() string { return proto.CompactTextString(m) }
func (*Port) ProtoMessage() {}
func (*Port) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{4}
}
func (m *Port) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Port.Unmarshal(m, b)
}
func (m *Port) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Port.Marshal(b, m, deterministic)
}
func (m *Port) XXX_Merge(src proto.Message) {
xxx_messageInfo_Port.Merge(m, src)
}
func (m *Port) XXX_Size() int {
return xxx_messageInfo_Port.Size(m)
}
func (m *Port) XXX_DiscardUnknown() {
xxx_messageInfo_Port.DiscardUnknown(m)
}
var xxx_messageInfo_Port proto.InternalMessageInfo
func (m *Port) GetPublish() string {
if m != nil {
return m.Publish
}
return ""
}
func (m *Port) GetTarget() string {
if m != nil {
return m.Target
}
return ""
}
// 环境变量
type Environment struct {
// 环境变量key
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
// 环境变量value
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Environment) Reset() { *m = Environment{} }
func (m *Environment) String() string { return proto.CompactTextString(m) }
func (*Environment) ProtoMessage() {}
func (*Environment) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{5}
}
func (m *Environment) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Environment.Unmarshal(m, b)
}
func (m *Environment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Environment.Marshal(b, m, deterministic)
}
func (m *Environment) XXX_Merge(src proto.Message) {
xxx_messageInfo_Environment.Merge(m, src)
}
func (m *Environment) XXX_Size() int {
return xxx_messageInfo_Environment.Size(m)
}
func (m *Environment) XXX_DiscardUnknown() {
xxx_messageInfo_Environment.DiscardUnknown(m)
}
var xxx_messageInfo_Environment proto.InternalMessageInfo
func (m *Environment) GetKey() string {
if m != nil {
return m.Key
}
return ""
}
func (m *Environment) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
// 挂载服务
type ComposeVolume struct {
// bind / volume
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
// 本地服务器目录或文件地址,待挂载使用
Local string `protobuf:"bytes,2,opt,name=local,proto3" json:"local,omitempty"`
// 容器内目录,挂载到local
Mount string `protobuf:"bytes,3,opt,name=mount,proto3" json:"mount,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ComposeVolume) Reset() { *m = ComposeVolume{} }
func (m *ComposeVolume) String() string { return proto.CompactTextString(m) }
func (*ComposeVolume) ProtoMessage() {}
func (*ComposeVolume) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{6}
}
func (m *ComposeVolume) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ComposeVolume.Unmarshal(m, b)
}
func (m *ComposeVolume) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ComposeVolume.Marshal(b, m, deterministic)
}
func (m *ComposeVolume) XXX_Merge(src proto.Message) {
xxx_messageInfo_ComposeVolume.Merge(m, src)
}
func (m *ComposeVolume) XXX_Size() int {
return xxx_messageInfo_ComposeVolume.Size(m)
}
func (m *ComposeVolume) XXX_DiscardUnknown() {
xxx_messageInfo_ComposeVolume.DiscardUnknown(m)
}
var xxx_messageInfo_ComposeVolume proto.InternalMessageInfo
func (m *ComposeVolume) GetType() string {
if m != nil {
return m.Type
}
return ""
}
func (m *ComposeVolume) GetLocal() string {
if m != nil {
return m.Local
}
return ""
}
func (m *ComposeVolume) GetMount() string {
if m != nil {
return m.Mount
}
return ""
}
// dns服务
type ExtraHost struct {
// 期望访问的地址,一般即代码中约定的访问地址
Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
// 映射的真实地址
HostMap string `protobuf:"bytes,2,opt,name=hostMap,proto3" json:"hostMap,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ExtraHost) Reset() { *m = ExtraHost{} }
func (m *ExtraHost) String() string { return proto.CompactTextString(m) }
func (*ExtraHost) ProtoMessage() {}
func (*ExtraHost) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{7}
}
func (m *ExtraHost) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExtraHost.Unmarshal(m, b)
}
func (m *ExtraHost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ExtraHost.Marshal(b, m, deterministic)
}
func (m *ExtraHost) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExtraHost.Merge(m, src)
}
func (m *ExtraHost) XXX_Size() int {
return xxx_messageInfo_ExtraHost.Size(m)
}
func (m *ExtraHost) XXX_DiscardUnknown() {
xxx_messageInfo_ExtraHost.DiscardUnknown(m)
}
var xxx_messageInfo_ExtraHost proto.InternalMessageInfo
func (m *ExtraHost) GetHost() string {
if m != nil {
return m.Host
}
return ""
}
func (m *ExtraHost) GetHostMap() string {
if m != nil {
return m.HostMap
}
return ""
}
// 指定swarm服务部署和运行时的相关配置
type Deploy struct {
// 服务部署模式
Mode Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=proto.Mode" json:"mode,omitempty"`
// 如果服务是副本模式(默认模式),可以指定该服务运行的容器数量
Replicas uint64 `protobuf:"varint,2,opt,name=replicas,proto3" json:"replicas,omitempty"`
// 指定swarm服务发现的模式
//
// endpoint_mode: vip - Docker为swarm集群服务分配一个虚拟IP(VIP),作为客户端到达集群服务的“前端”。
// Docker 在客户端和可用工作节点之间对服务的请求进行路由。而客户端不用知道有多少节点参与服务或者是这些节点的IP/端口。(这是默认模式)
//
// endpoint_mode: dnsrr - DNS轮询(DNSRR)服务发现不使用单个虚拟IP。
// Docker为服务设置DNS条目,使得服务名称的DNS查询返回一个IP地址列表,并且客户端直接连接到其中的一个。
// 如果想使用自己的负载平衡器,或者混合Windows和Linux应用程序,则DNS轮询功能非常有用。
EndpointMode EndpointMode `protobuf:"varint,3,opt,name=endpointMode,proto3,enum=proto.EndpointMode" json:"endpointMode,omitempty"`
// 资源配置策略
Resources *Resources `protobuf:"bytes,4,opt,name=resources,proto3" json:"resources,omitempty"`
// 指定服务的标签。这些标签仅在服务上设置,而不在服务的任何容器上设置
Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// 指定约束和偏好设置
Placement *Placement `protobuf:"bytes,6,opt,name=placement,proto3" json:"placement,omitempty"`
// 配置在容器退出时是否并如何重启容器。取代restart指令
RestartPolicy *RestartPolicy `protobuf:"bytes,7,opt,name=restartPolicy,proto3" json:"restartPolicy,omitempty"`
// 配置服务如何升级
UpdateConfig *UpdateConfig `protobuf:"bytes,8,opt,name=updateConfig,proto3" json:"updateConfig,omitempty"`
// 配置在更新失败的情况下应如何回滚服务
RollbackConfig *UpdateConfig `protobuf:"bytes,9,opt,name=rollbackConfig,proto3" json:"rollbackConfig,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Deploy) Reset() { *m = Deploy{} }
func (m *Deploy) String() string { return proto.CompactTextString(m) }
func (*Deploy) ProtoMessage() {}
func (*Deploy) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{8}
}
func (m *Deploy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Deploy.Unmarshal(m, b)
}
func (m *Deploy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Deploy.Marshal(b, m, deterministic)
}
func (m *Deploy) XXX_Merge(src proto.Message) {
xxx_messageInfo_Deploy.Merge(m, src)
}
func (m *Deploy) XXX_Size() int {
return xxx_messageInfo_Deploy.Size(m)
}
func (m *Deploy) XXX_DiscardUnknown() {
xxx_messageInfo_Deploy.DiscardUnknown(m)
}
var xxx_messageInfo_Deploy proto.InternalMessageInfo
func (m *Deploy) GetMode() Mode {
if m != nil {
return m.Mode
}
return Mode_global
}
func (m *Deploy) GetReplicas() uint64 {
if m != nil {
return m.Replicas
}
return 0
}
func (m *Deploy) GetEndpointMode() EndpointMode {
if m != nil {
return m.EndpointMode
}
return EndpointMode_vip
}
func (m *Deploy) GetResources() *Resources {
if m != nil {
return m.Resources
}
return nil
}
func (m *Deploy) GetLabels() map[string]string {
if m != nil {
return m.Labels
}
return nil
}
func (m *Deploy) GetPlacement() *Placement {
if m != nil {
return m.Placement
}
return nil
}
func (m *Deploy) GetRestartPolicy() *RestartPolicy {
if m != nil {
return m.RestartPolicy
}
return nil
}
func (m *Deploy) GetUpdateConfig() *UpdateConfig {
if m != nil {
return m.UpdateConfig
}
return nil
}
func (m *Deploy) GetRollbackConfig() *UpdateConfig {
if m != nil {
return m.RollbackConfig
}
return nil
}
// 资源配置策略
type Resources struct {
// 限制使用不超过资源
Limits *Resource `protobuf:"bytes,1,opt,name=limits,proto3" json:"limits,omitempty"`
// 总是可用资源
Reservations *Resource `protobuf:"bytes,2,opt,name=reservations,proto3" json:"reservations,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Resources) Reset() { *m = Resources{} }
func (m *Resources) String() string { return proto.CompactTextString(m) }
func (*Resources) ProtoMessage() {}
func (*Resources) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{9}
}
func (m *Resources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Resources.Unmarshal(m, b)
}
func (m *Resources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Resources.Marshal(b, m, deterministic)
}
func (m *Resources) XXX_Merge(src proto.Message) {
xxx_messageInfo_Resources.Merge(m, src)
}
func (m *Resources) XXX_Size() int {
return xxx_messageInfo_Resources.Size(m)
}
func (m *Resources) XXX_DiscardUnknown() {
xxx_messageInfo_Resources.DiscardUnknown(m)
}
var xxx_messageInfo_Resources proto.InternalMessageInfo
func (m *Resources) GetLimits() *Resource {
if m != nil {
return m.Limits
}
return nil
}
func (m *Resources) GetReservations() *Resource {
if m != nil {
return m.Reservations
}
return nil
}
// 资源配置内容
type Resource struct {
// cpu比例,如0.5表示50%
Cpus string `protobuf:"bytes,1,opt,name=cpus,proto3" json:"cpus,omitempty"`
// 内存值,如50M
Memory string `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Resource) Reset() { *m = Resource{} }
func (m *Resource) String() string { return proto.CompactTextString(m) }
func (*Resource) ProtoMessage() {}
func (*Resource) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{10}
}
func (m *Resource) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Resource.Unmarshal(m, b)
}
func (m *Resource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Resource.Marshal(b, m, deterministic)
}
func (m *Resource) XXX_Merge(src proto.Message) {
xxx_messageInfo_Resource.Merge(m, src)
}
func (m *Resource) XXX_Size() int {
return xxx_messageInfo_Resource.Size(m)
}
func (m *Resource) XXX_DiscardUnknown() {
xxx_messageInfo_Resource.DiscardUnknown(m)
}
var xxx_messageInfo_Resource proto.InternalMessageInfo
func (m *Resource) GetCpus() string {
if m != nil {
return m.Cpus
}
return ""
}
func (m *Resource) GetMemory() string {
if m != nil {
return m.Memory
}
return ""
}
// 指定约束和偏好设置
type Placement struct {
// 约定服务运行位置
//
// node.role==manager
//
// node.hostname == test1.spuddy.org
//
// node.labels.Tomcat == true
//
// engine.labels.operatingsystem==ubuntu 18.04
Constraints []string `protobuf:"bytes,1,rep,name=constraints,proto3" json:"constraints,omitempty"`
// 可以通过设置服务将任务均匀地划分到不同类别的节点上
//
// 如在一组数据中心或可用性区域上平衡任务
//
// spread=node.labels.datacenter
Preferences []*Preference `protobuf:"bytes,2,rep,name=preferences,proto3" json:"preferences,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Placement) Reset() { *m = Placement{} }
func (m *Placement) String() string { return proto.CompactTextString(m) }
func (*Placement) ProtoMessage() {}
func (*Placement) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{11}
}
func (m *Placement) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Placement.Unmarshal(m, b)
}
func (m *Placement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Placement.Marshal(b, m, deterministic)
}
func (m *Placement) XXX_Merge(src proto.Message) {
xxx_messageInfo_Placement.Merge(m, src)
}
func (m *Placement) XXX_Size() int {
return xxx_messageInfo_Placement.Size(m)
}
func (m *Placement) XXX_DiscardUnknown() {
xxx_messageInfo_Placement.DiscardUnknown(m)
}
var xxx_messageInfo_Placement proto.InternalMessageInfo
func (m *Placement) GetConstraints() []string {
if m != nil {
return m.Constraints
}
return nil
}
func (m *Placement) GetPreferences() []*Preference {
if m != nil {
return m.Preferences
}
return nil
}
// 可以通过设置服务将任务均匀地划分到不同类别的节点上
type Preference struct {
// 均匀传播的对象属性
Spread string `protobuf:"bytes,1,opt,name=spread,proto3" json:"spread,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Preference) Reset() { *m = Preference{} }
func (m *Preference) String() string { return proto.CompactTextString(m) }
func (*Preference) ProtoMessage() {}
func (*Preference) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{12}
}
func (m *Preference) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Preference.Unmarshal(m, b)
}
func (m *Preference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Preference.Marshal(b, m, deterministic)
}
func (m *Preference) XXX_Merge(src proto.Message) {
xxx_messageInfo_Preference.Merge(m, src)
}
func (m *Preference) XXX_Size() int {
return xxx_messageInfo_Preference.Size(m)
}
func (m *Preference) XXX_DiscardUnknown() {
xxx_messageInfo_Preference.DiscardUnknown(m)
}
var xxx_messageInfo_Preference proto.InternalMessageInfo
func (m *Preference) GetSpread() string {
if m != nil {
return m.Spread
}
return ""
}
// 配置在容器退出时是否并如何重启容器。取代restart指令
type RestartPolicy struct {
// 重启判定条件,none、on-failure和any(默认any)
Condition Condition `protobuf:"varint,1,opt,name=condition,proto3,enum=proto.Condition" json:"condition,omitempty"`
// 在重启尝试之间等待多久(默认0)
Delay string `protobuf:"bytes,2,opt,name=delay,proto3" json:"delay,omitempty"`
// 尝试重启的次数(默认一直重启,直到成功)
MaxAttempts uint64 `protobuf:"varint,3,opt,name=maxAttempts,proto3" json:"maxAttempts,omitempty"`
// 在确实一个重启是否成功前需要等待的窗口时间
Window string `protobuf:"bytes,4,opt,name=window,proto3" json:"window,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RestartPolicy) Reset() { *m = RestartPolicy{} }
func (m *RestartPolicy) String() string { return proto.CompactTextString(m) }
func (*RestartPolicy) ProtoMessage() {}
func (*RestartPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{13}
}
func (m *RestartPolicy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RestartPolicy.Unmarshal(m, b)
}
func (m *RestartPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RestartPolicy.Marshal(b, m, deterministic)
}
func (m *RestartPolicy) XXX_Merge(src proto.Message) {
xxx_messageInfo_RestartPolicy.Merge(m, src)
}
func (m *RestartPolicy) XXX_Size() int {
return xxx_messageInfo_RestartPolicy.Size(m)
}
func (m *RestartPolicy) XXX_DiscardUnknown() {
xxx_messageInfo_RestartPolicy.DiscardUnknown(m)
}
var xxx_messageInfo_RestartPolicy proto.InternalMessageInfo
func (m *RestartPolicy) GetCondition() Condition {
if m != nil {
return m.Condition
}
return Condition_none
}
func (m *RestartPolicy) GetDelay() string {
if m != nil {
return m.Delay
}
return ""
}
func (m *RestartPolicy) GetMaxAttempts() uint64 {
if m != nil {
return m.MaxAttempts
}
return 0
}
func (m *RestartPolicy) GetWindow() string {
if m != nil {
return m.Window
}
return ""
}
// 配置服务如何升级
type UpdateConfig struct {
// 同一时间升级的容器数量
Parallelism uint64 `protobuf:"varint,1,opt,name=parallelism,proto3" json:"parallelism,omitempty"`
// 容器升级间隔时间
Delay string `protobuf:"bytes,2,opt,name=delay,proto3" json:"delay,omitempty"`
// 升级失败后的动作(continue、rollback和pause。默认pause)
FailureAction Action `protobuf:"varint,3,opt,name=failureAction,proto3,enum=proto.Action" json:"failureAction,omitempty"`
// 更新完成后确实成功的时间(ns|us|ms|s|m|h)。(默认0s)
Monitor string `protobuf:"bytes,4,opt,name=monitor,proto3" json:"monitor,omitempty"`
// 更新期间允许的失败率
MaxFailureRatio float32 `protobuf:"fixed32,5,opt,name=maxFailureRatio,proto3" json:"maxFailureRatio,omitempty"`
// 更新期间的操作顺序。停止优先(旧任务在开始新任务之前停止)或者先启动(首先启动新任务,并且正在运行的任务短暂重叠)
//
// stop-first/start-first
//
//(默认停止优先)注意:只支持v3.4及更高版本
Order Order `protobuf:"varint,6,opt,name=order,proto3,enum=proto.Order" json:"order,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UpdateConfig) Reset() { *m = UpdateConfig{} }
func (m *UpdateConfig) String() string { return proto.CompactTextString(m) }
func (*UpdateConfig) ProtoMessage() {}
func (*UpdateConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{14}
}
func (m *UpdateConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateConfig.Unmarshal(m, b)
}
func (m *UpdateConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UpdateConfig.Marshal(b, m, deterministic)
}
func (m *UpdateConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_UpdateConfig.Merge(m, src)
}
func (m *UpdateConfig) XXX_Size() int {
return xxx_messageInfo_UpdateConfig.Size(m)
}
func (m *UpdateConfig) XXX_DiscardUnknown() {
xxx_messageInfo_UpdateConfig.DiscardUnknown(m)
}
var xxx_messageInfo_UpdateConfig proto.InternalMessageInfo
func (m *UpdateConfig) GetParallelism() uint64 {
if m != nil {
return m.Parallelism
}
return 0
}
func (m *UpdateConfig) GetDelay() string {
if m != nil {
return m.Delay
}
return ""
}
func (m *UpdateConfig) GetFailureAction() Action {
if m != nil {
return m.FailureAction
}
return Action_continue
}
func (m *UpdateConfig) GetMonitor() string {
if m != nil {
return m.Monitor
}
return ""
}
func (m *UpdateConfig) GetMaxFailureRatio() float32 {
if m != nil {
return m.MaxFailureRatio
}
return 0
}
func (m *UpdateConfig) GetOrder() Order {
if m != nil {
return m.Order
}
return Order_stopFirst
}
// swarm独立网络
type ComposeNetwork struct {
// 网络驱动类型:host、bridge、overlay
Driver Driver `protobuf:"varint,1,opt,name=driver,proto3,enum=proto.Driver" json:"driver,omitempty"`
Attachable bool `protobuf:"varint,2,opt,name=attachable,proto3" json:"attachable,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ComposeNetwork) Reset() { *m = ComposeNetwork{} }
func (m *ComposeNetwork) String() string { return proto.CompactTextString(m) }
func (*ComposeNetwork) ProtoMessage() {}
func (*ComposeNetwork) Descriptor() ([]byte, []int) {
return fileDescriptor_4fe01249d6d2300a, []int{15}
}
func (m *ComposeNetwork) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ComposeNetwork.Unmarshal(m, b)
}
func (m *ComposeNetwork) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ComposeNetwork.Marshal(b, m, deterministic)
}
func (m *ComposeNetwork) XXX_Merge(src proto.Message) {
xxx_messageInfo_ComposeNetwork.Merge(m, src)
}
func (m *ComposeNetwork) XXX_Size() int {
return xxx_messageInfo_ComposeNetwork.Size(m)
}
func (m *ComposeNetwork) XXX_DiscardUnknown() {
xxx_messageInfo_ComposeNetwork.DiscardUnknown(m)
}
var xxx_messageInfo_ComposeNetwork proto.InternalMessageInfo
func (m *ComposeNetwork) GetDriver() Driver {
if m != nil {
return m.Driver
}
return Driver_host
}
func (m *ComposeNetwork) GetAttachable() bool {
if m != nil {
return m.Attachable
}
return false
}
func init() {
proto.RegisterEnum("proto.Mode", Mode_name, Mode_value)
proto.RegisterEnum("proto.EndpointMode", EndpointMode_name, EndpointMode_value)
proto.RegisterEnum("proto.Condition", Condition_name, Condition_value)
proto.RegisterEnum("proto.Action", Action_name, Action_value)
proto.RegisterEnum("proto.Order", Order_name, Order_value)
proto.RegisterEnum("proto.Driver", Driver_name, Driver_value)
proto.RegisterType((*ReqCompose)(nil), "proto.reqCompose")
proto.RegisterType((*Compose)(nil), "proto.compose")
proto.RegisterMapType((map[string]*ComposeNetwork)(nil), "proto.compose.NetworksEntry")
proto.RegisterMapType((map[string]*Task)(nil), "proto.compose.ServicesEntry")
proto.RegisterType((*Task)(nil), "proto.task")
proto.RegisterType((*Image)(nil), "proto.image")
proto.RegisterType((*Port)(nil), "proto.port")
proto.RegisterType((*Environment)(nil), "proto.environment")
proto.RegisterType((*ComposeVolume)(nil), "proto.composeVolume")
proto.RegisterType((*ExtraHost)(nil), "proto.extraHost")
proto.RegisterType((*Deploy)(nil), "proto.deploy")
proto.RegisterMapType((map[string]string)(nil), "proto.deploy.LabelsEntry")
proto.RegisterType((*Resources)(nil), "proto.resources")
proto.RegisterType((*Resource)(nil), "proto.resource")
proto.RegisterType((*Placement)(nil), "proto.placement")
proto.RegisterType((*Preference)(nil), "proto.preference")
proto.RegisterType((*RestartPolicy)(nil), "proto.restartPolicy")
proto.RegisterType((*UpdateConfig)(nil), "proto.updateConfig")
proto.RegisterType((*ComposeNetwork)(nil), "proto.composeNetwork")
}
func init() {
proto.RegisterFile("proto/compose.proto", fileDescriptor_4fe01249d6d2300a)
}
var fileDescriptor_4fe01249d6d2300a = []byte{
// 1174 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x6d, 0x8f, 0x1b, 0xb5,
0x13, 0xbf, 0x4d, 0x72, 0x49, 0x76, 0x72, 0xb9, 0xee, 0xdf, 0xed, 0x1f, 0x2d, 0xa7, 0x0a, 0xc2,
0x8a, 0x87, 0xe8, 0x2a, 0xae, 0x70, 0xa7, 0x96, 0xb6, 0xbc, 0x2a, 0x85, 0xaa, 0x2f, 0x68, 0x8b,
0x4c, 0x05, 0x82, 0x77, 0xce, 0xae, 0x9b, 0x5a, 0xb7, 0x6b, 0x2f, 0xb6, 0x93, 0x36, 0x9f, 0x82,
0x0f, 0xc0, 0x17, 0xe0, 0x7b, 0xf1, 0x3d, 0x10, 0x1a, 0xdb, 0xbb, 0xd9, 0x3d, 0x5a, 0x89, 0x57,
0xd9, 0x99, 0xf9, 0xcd, 0x78, 0x1e, 0x7e, 0x1e, 0x07, 0xae, 0xd7, 0x5a, 0x59, 0x75, 0x3b, 0x57,
0x55, 0xad, 0x0c, 0x3f, 0x73, 0x12, 0x39, 0x74, 0x3f, 0xd9, 0x0b, 0x00, 0xcd, 0x7f, 0x7b, 0xe4,
0x4d, 0xe4, 0x26, 0xc4, 0xc6, 0xb2, 0xfc, 0xf2, 0x19, 0xab, 0x78, 0x1a, 0x2d, 0xa2, 0x65, 0x4c,
0xf7, 0x0a, 0xb2, 0x84, 0x49, 0x88, 0x91, 0x0e, 0x16, 0xd1, 0x72, 0x76, 0x7e, 0xec, 0x63, 0x9d,
0x05, 0x2d, 0x6d, 0xcc, 0xd9, 0x1f, 0x83, 0x16, 0x4a, 0xee, 0xc1, 0xd4, 0x70, 0xbd, 0x15, 0x39,
0x37, 0x69, 0xb4, 0x18, 0x2e, 0x67, 0xe7, 0x37, 0xfb, 0x6e, 0x67, 0x3f, 0x06, 0xf3, 0x77, 0xd2,
0xea, 0x1d, 0x6d, 0xd1, 0xe8, 0x29, 0xb9, 0x7d, 0xad, 0xf4, 0xa5, 0x49, 0x07, 0x6f, 0xf5, 0x7c,
0x16, 0xcc, 0xc1, 0xb3, 0x41, 0x9f, 0x3c, 0x81, 0x79, 0x2f, 0x28, 0x49, 0x60, 0x78, 0xc9, 0x77,
0xa1, 0x24, 0xfc, 0x24, 0x1f, 0xc1, 0xe1, 0x96, 0x95, 0x9b, 0xa6, 0x94, 0x59, 0x88, 0x6c, 0x99,
0xb9, 0xa4, 0xde, 0xf2, 0x60, 0x70, 0x2f, 0x3a, 0xa1, 0x30, 0xef, 0x1d, 0xf2, 0x96, 0x48, 0xb7,
0xfa, 0x91, 0xfe, 0xdf, 0xcf, 0x31, 0x78, 0x77, 0x62, 0x66, 0x7f, 0x0e, 0x61, 0x84, 0xe7, 0x90,
0x0c, 0x0e, 0x45, 0xc5, 0xd6, 0xbe, 0xd5, 0xb3, 0xf3, 0xa3, 0xe0, 0xe9, 0x74, 0xd4, 0x9b, 0x30,
0xcf, 0x5a, 0x69, 0xdb, 0x74, 0xa0, 0xc9, 0x13, 0x75, 0xd4, 0x5b, 0xc8, 0x5d, 0x38, 0xe2, 0x72,
0x2b, 0xb4, 0x92, 0x15, 0x97, 0xd6, 0xa4, 0x43, 0x87, 0x24, 0x01, 0xd9, 0x31, 0xd1, 0x1e, 0x8e,
0xa4, 0x6e, 0x48, 0x15, 0x93, 0x45, 0x3a, 0x5a, 0x0c, 0x97, 0x31, 0x6d, 0x44, 0x42, 0x60, 0xc4,
0xf4, 0xda, 0xa4, 0x87, 0x4e, 0xed, 0xbe, 0xc9, 0x07, 0x00, 0x58, 0x88, 0x90, 0xeb, 0x6f, 0x85,
0x4e, 0xc7, 0xae, 0xfe, 0x8e, 0x86, 0x9c, 0xc1, 0x64, 0xab, 0xca, 0x4d, 0xc5, 0x4d, 0x3a, 0x71,
0x09, 0xdc, 0xe8, 0x37, 0xe2, 0x27, 0x67, 0xa4, 0x0d, 0x88, 0x9c, 0x74, 0xa6, 0x3b, 0x75, 0xe7,
0xb4, 0x32, 0x36, 0xf9, 0xc5, 0x8b, 0x5f, 0xd2, 0x78, 0x11, 0x2d, 0xa7, 0x14, 0x3f, 0xc9, 0x17,
0x00, 0xfc, 0x8d, 0xd5, 0xec, 0x89, 0x32, 0xd6, 0xa4, 0xe0, 0x0e, 0x48, 0x9a, 0x0a, 0x1b, 0x03,
0xed, 0x60, 0x90, 0xcb, 0x05, 0xaf, 0xb9, 0x2c, 0xcc, 0x73, 0x99, 0xce, 0xdc, 0x01, 0x7b, 0x05,
0xf9, 0x04, 0xc6, 0x05, 0xaf, 0x4b, 0xb5, 0x4b, 0x8f, 0x5c, 0xef, 0xe7, 0x21, 0x96, 0x57, 0xd2,
0x60, 0xcc, 0xee, 0x84, 0x09, 0x61, 0x47, 0xe4, 0xfe, 0x52, 0xb8, 0x6f, 0xec, 0xdf, 0x96, 0x6b,
0x23, 0x94, 0x74, 0xa3, 0x8f, 0x69, 0x23, 0x66, 0xf7, 0x60, 0x84, 0xa3, 0x41, 0x44, 0xbd, 0x59,
0x95, 0xc2, 0xbc, 0x0a, 0x8e, 0x8d, 0x48, 0xde, 0x83, 0xb1, 0x65, 0x7a, 0xcd, 0x6d, 0x70, 0x0d,
0x52, 0x76, 0x07, 0x66, 0x9d, 0x19, 0xbd, 0x85, 0x6d, 0x37, 0xba, 0x6c, 0x8b, 0x03, 0xad, 0xb2,
0xe7, 0x30, 0xef, 0xb5, 0x19, 0xf3, 0xb5, 0xbb, 0xba, 0xcd, 0x17, 0xbf, 0xd1, 0xb5, 0x54, 0x39,
0x2b, 0x1b, 0x57, 0x27, 0xa0, 0xb6, 0x52, 0x1b, 0x69, 0xd3, 0xa1, 0xd7, 0x3a, 0x21, 0xbb, 0x0f,
0x71, 0xdb, 0x4b, 0x0c, 0xf6, 0x4a, 0x19, 0xdb, 0x04, 0xc3, 0x6f, 0x2c, 0x0d, 0x7f, 0x9f, 0xb2,
0xba, 0x29, 0x3e, 0x88, 0xd9, 0xdf, 0xc3, 0xa6, 0xb7, 0xe4, 0x43, 0x18, 0x55, 0xaa, 0xf0, 0x59,
0x1c, 0xb7, 0xdc, 0x45, 0x15, 0x75, 0x06, 0x24, 0x81, 0xe6, 0x75, 0x29, 0x72, 0x66, 0x5c, 0x98,
0x11, 0x6d, 0x65, 0xf2, 0x15, 0xd2, 0xba, 0xa8, 0x95, 0x90, 0xf6, 0x29, 0x06, 0x19, 0xba, 0x20,
0xd7, 0x5b, 0x5a, 0xef, 0x4d, 0xb4, 0x07, 0x24, 0x67, 0x10, 0x6b, 0x6e, 0xd4, 0x46, 0xe3, 0xca,
0x19, 0xb9, 0xf1, 0x36, 0x54, 0x69, 0xf5, 0x74, 0x0f, 0x21, 0x5f, 0xc2, 0xb8, 0x64, 0x2b, 0x5e,
0x7a, 0xbe, 0xcf, 0xce, 0xdf, 0xef, 0x71, 0xe1, 0xec, 0x7b, 0x67, 0xf3, 0x2b, 0x26, 0x00, 0xf1,
0x88, 0xba, 0x64, 0x39, 0xc7, 0x21, 0xb9, 0xbb, 0xb0, 0x3f, 0xa2, 0xd5, 0xd3, 0x3d, 0x84, 0x3c,
0x80, 0xb9, 0xe6, 0xc6, 0x32, 0x6d, 0x7f, 0x50, 0xa5, 0xc8, 0x77, 0xe9, 0xc4, 0xf9, 0xdc, 0xd8,
0xa7, 0xb5, 0xb7, 0xd1, 0x3e, 0x14, 0xfb, 0xb0, 0xa9, 0x0b, 0x66, 0xf9, 0x23, 0x25, 0x5f, 0x8a,
0x75, 0x3a, 0x75, 0xae, 0x4d, 0x1f, 0xba, 0x26, 0xda, 0x03, 0x92, 0xaf, 0xe1, 0x58, 0xab, 0xb2,
0x5c, 0xb1, 0xfc, 0x32, 0xb8, 0xc6, 0xef, 0x76, 0xbd, 0x02, 0x3d, 0xb9, 0x0f, 0xb3, 0x4e, 0xe1,
0xff, 0x95, 0x88, 0x6e, 0xbf, 0x89, 0x4e, 0xff, 0xc9, 0x67, 0x30, 0x2e, 0x45, 0x25, 0xac, 0x09,
0x4b, 0xee, 0xda, 0x95, 0x49, 0xd0, 0x60, 0x26, 0x17, 0x70, 0xa4, 0x39, 0xee, 0x7e, 0x66, 0x85,
0x92, 0x26, 0x6c, 0xd3, 0x7f, 0xc1, 0x7b, 0xa0, 0xec, 0x2e, 0xf2, 0xc7, 0x5b, 0x90, 0xa5, 0x79,
0xbd, 0x31, 0x0d, 0x4b, 0xf1, 0x1b, 0xaf, 0x59, 0xc5, 0x2b, 0xa5, 0x77, 0xcd, 0x35, 0xf3, 0x52,
0xb6, 0xea, 0xcc, 0x8f, 0x2c, 0x60, 0x96, 0x2b, 0x69, 0xac, 0x66, 0x42, 0x5a, 0xff, 0x48, 0xc5,
0xb4, 0xab, 0x22, 0x17, 0x30, 0xab, 0x35, 0x7f, 0xc9, 0x35, 0x97, 0xc8, 0x29, 0xbf, 0x8a, 0xff,
0xd7, 0x0c, 0xbc, 0xb5, 0xd0, 0x2e, 0x2a, 0xfb, 0x18, 0x60, 0x2f, 0x62, 0x26, 0xa6, 0xd6, 0x9c,
0x15, 0x21, 0xbf, 0x20, 0x65, 0xbf, 0x47, 0x57, 0xa8, 0x81, 0xdc, 0xca, 0x95, 0x2c, 0x04, 0x56,
0x18, 0x6e, 0x4e, 0xd2, 0xae, 0xd2, 0xa0, 0xa7, 0x7b, 0x08, 0x0e, 0xa2, 0xe0, 0x25, 0x6b, 0x4a,
0xf4, 0x02, 0x16, 0x55, 0xb1, 0x37, 0x0f, 0xad, 0xe5, 0x55, 0xed, 0xde, 0x04, 0xbc, 0x5c, 0x5d,
0x15, 0x66, 0xf4, 0x5a, 0xc8, 0x42, 0xbd, 0x76, 0x77, 0x24, 0xa6, 0x41, 0xca, 0xfe, 0x8a, 0xfa,
0x84, 0xc3, 0x50, 0x35, 0xd3, 0xac, 0x2c, 0x79, 0x29, 0x4c, 0xe5, 0x52, 0x1a, 0xd1, 0xae, 0xea,
0x1d, 0x29, 0x5c, 0xc0, 0xfc, 0x25, 0x13, 0xe5, 0x46, 0xf3, 0x87, 0xb9, 0x2b, 0xc6, 0xdf, 0xe0,
0x66, 0xd5, 0x32, 0xa7, 0xa4, 0x7d, 0x0c, 0xee, 0x95, 0x4a, 0x49, 0x61, 0x95, 0x0e, 0x69, 0x35,
0x22, 0x59, 0xc2, 0xb5, 0x8a, 0xbd, 0x79, 0xec, 0xd1, 0x14, 0x09, 0x90, 0x1e, 0x2e, 0xa2, 0xe5,
0x80, 0x5e, 0x55, 0xe3, 0xbb, 0xaa, 0x74, 0xc1, 0xfd, 0x2b, 0x75, 0xdc, 0xbe, 0xab, 0x4e, 0x47,
0xbd, 0x29, 0xfb, 0x19, 0x8e, 0xfb, 0x2f, 0xb4, 0x7b, 0x12, 0xb4, 0xd8, 0x72, 0x1d, 0x9a, 0xde,
0x3e, 0x09, 0x4e, 0x49, 0x83, 0x11, 0xdf, 0x41, 0x66, 0x2d, 0xcb, 0x5f, 0xb1, 0x55, 0xe9, 0xc9,
0x3f, 0xa5, 0x1d, 0xcd, 0x69, 0xe6, 0x77, 0x1e, 0x01, 0x18, 0xaf, 0x4b, 0xb5, 0x62, 0x65, 0x72,
0x40, 0x8e, 0xf1, 0x5f, 0x96, 0x5b, 0x6b, 0x96, 0x17, 0x49, 0x74, 0x9a, 0xf5, 0x57, 0x1b, 0x99,
0xc0, 0x70, 0x2b, 0xea, 0xe4, 0x80, 0xc4, 0x70, 0x58, 0x48, 0xa3, 0x75, 0x12, 0x9d, 0x7e, 0xde,
0xa1, 0x01, 0x99, 0xc2, 0x48, 0x2a, 0xc9, 0x93, 0x03, 0x32, 0x87, 0x58, 0xc9, 0x50, 0x6d, 0x12,
0xa1, 0x27, 0x93, 0xbb, 0x64, 0x70, 0x7a, 0x1b, 0xc6, 0xbe, 0xa1, 0xe4, 0x08, 0xa6, 0xb9, 0x92,
0x56, 0xc8, 0x0d, 0xe2, 0x8f, 0x60, 0xda, 0xdc, 0xec, 0x24, 0xc2, 0xf8, 0x35, 0xdb, 0x18, 0x9e,
0x0c, 0x4e, 0x3f, 0x0d, 0x4d, 0xc2, 0x88, 0xc6, 0xaa, 0xfa, 0xb1, 0xd0, 0xc6, 0xfa, 0x5c, 0x1d,
0x1b, 0xbd, 0x1c, 0x9d, 0xde, 0x6a, 0xda, 0x82, 0x49, 0xe0, 0x8e, 0x4f, 0x0e, 0xb0, 0xb6, 0x95,
0x16, 0xc5, 0x1a, 0x33, 0x98, 0xc1, 0x44, 0x6d, 0xb9, 0x2e, 0xd9, 0x2e, 0x19, 0x7c, 0x33, 0xf9,
0xd5, 0xff, 0xaf, 0x5c, 0x8d, 0xdd, 0xcf, 0xc5, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xbd,
0xd9, 0x06, 0x7c, 0x0a, 0x00, 0x00,
}
Go
1
https://gitee.com/aberic/swarm.git
git@gitee.com:aberic/swarm.git
aberic
swarm
swarm
502bd87b5165

搜索帮助