Added endpoint to list files.

This commit is contained in:
Andrey Melnikov
2020-02-27 14:44:50 -08:00
parent cc49bac23b
commit e65fe291c2
7 changed files with 637 additions and 86 deletions

View File

@@ -430,6 +430,42 @@
] ]
} }
}, },
"/apis/v1beta1/{namespace}/workflow_executions/{name}/files/{path}": {
"get": {
"operationId": "ListFiles",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/ListFilesResponse"
}
}
},
"parameters": [
{
"name": "namespace",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "name",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "path",
"in": "path",
"required": true,
"type": "string"
}
],
"tags": [
"WorkflowService"
]
}
},
"/apis/v1beta1/{namespace}/workflow_executions/{name}/pods/{podName}/containers/{containerName}/logs": { "/apis/v1beta1/{namespace}/workflow_executions/{name}/pods/{podName}/containers/{containerName}/logs": {
"get": { "get": {
"operationId": "GetWorkflowExecutionLogs", "operationId": "GetWorkflowExecutionLogs",
@@ -915,6 +951,31 @@
} }
} }
}, },
"File": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"name": {
"type": "string"
},
"size": {
"type": "string",
"format": "int64"
},
"contentType": {
"type": "string"
},
"lastModified": {
"type": "string"
},
"directory": {
"type": "boolean",
"format": "boolean"
}
}
},
"GetWorkflowExecutionMetricsResponse": { "GetWorkflowExecutionMetricsResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
@@ -926,6 +987,17 @@
} }
} }
}, },
"ListFilesResponse": {
"type": "object",
"properties": {
"files": {
"type": "array",
"items": {
"$ref": "#/definitions/File"
}
}
}
},
"ListNamespacesResponse": { "ListNamespacesResponse": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@@ -852,6 +852,179 @@ func (m *ArtifactResponse) GetData() []byte {
return nil return nil
} }
type File struct {
Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
ContentType string `protobuf:"bytes,4,opt,name=contentType,proto3" json:"contentType,omitempty"`
LastModified string `protobuf:"bytes,5,opt,name=lastModified,proto3" json:"lastModified,omitempty"`
Directory bool `protobuf:"varint,6,opt,name=directory,proto3" json:"directory,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *File) Reset() { *m = File{} }
func (m *File) String() string { return proto.CompactTextString(m) }
func (*File) ProtoMessage() {}
func (*File) Descriptor() ([]byte, []int) {
return fileDescriptor_892c7f566756b0be, []int{15}
}
func (m *File) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_File.Unmarshal(m, b)
}
func (m *File) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_File.Marshal(b, m, deterministic)
}
func (m *File) XXX_Merge(src proto.Message) {
xxx_messageInfo_File.Merge(m, src)
}
func (m *File) XXX_Size() int {
return xxx_messageInfo_File.Size(m)
}
func (m *File) XXX_DiscardUnknown() {
xxx_messageInfo_File.DiscardUnknown(m)
}
var xxx_messageInfo_File proto.InternalMessageInfo
func (m *File) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
func (m *File) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *File) GetSize() int64 {
if m != nil {
return m.Size
}
return 0
}
func (m *File) GetContentType() string {
if m != nil {
return m.ContentType
}
return ""
}
func (m *File) GetLastModified() string {
if m != nil {
return m.LastModified
}
return ""
}
func (m *File) GetDirectory() bool {
if m != nil {
return m.Directory
}
return false
}
type ListFilesRequest struct {
Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ListFilesRequest) Reset() { *m = ListFilesRequest{} }
func (m *ListFilesRequest) String() string { return proto.CompactTextString(m) }
func (*ListFilesRequest) ProtoMessage() {}
func (*ListFilesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_892c7f566756b0be, []int{16}
}
func (m *ListFilesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListFilesRequest.Unmarshal(m, b)
}
func (m *ListFilesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListFilesRequest.Marshal(b, m, deterministic)
}
func (m *ListFilesRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ListFilesRequest.Merge(m, src)
}
func (m *ListFilesRequest) XXX_Size() int {
return xxx_messageInfo_ListFilesRequest.Size(m)
}
func (m *ListFilesRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ListFilesRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ListFilesRequest proto.InternalMessageInfo
func (m *ListFilesRequest) GetNamespace() string {
if m != nil {
return m.Namespace
}
return ""
}
func (m *ListFilesRequest) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *ListFilesRequest) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
type ListFilesResponse struct {
Files []*File `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ListFilesResponse) Reset() { *m = ListFilesResponse{} }
func (m *ListFilesResponse) String() string { return proto.CompactTextString(m) }
func (*ListFilesResponse) ProtoMessage() {}
func (*ListFilesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_892c7f566756b0be, []int{17}
}
func (m *ListFilesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListFilesResponse.Unmarshal(m, b)
}
func (m *ListFilesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListFilesResponse.Marshal(b, m, deterministic)
}
func (m *ListFilesResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ListFilesResponse.Merge(m, src)
}
func (m *ListFilesResponse) XXX_Size() int {
return xxx_messageInfo_ListFilesResponse.Size(m)
}
func (m *ListFilesResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ListFilesResponse.DiscardUnknown(m)
}
var xxx_messageInfo_ListFilesResponse proto.InternalMessageInfo
func (m *ListFilesResponse) GetFiles() []*File {
if m != nil {
return m.Files
}
return nil
}
func init() { func init() {
proto.RegisterType((*CreateWorkflowExecutionRequest)(nil), "api.CreateWorkflowExecutionRequest") proto.RegisterType((*CreateWorkflowExecutionRequest)(nil), "api.CreateWorkflowExecutionRequest")
proto.RegisterType((*GetWorkflowExecutionRequest)(nil), "api.GetWorkflowExecutionRequest") proto.RegisterType((*GetWorkflowExecutionRequest)(nil), "api.GetWorkflowExecutionRequest")
@@ -868,98 +1041,111 @@ func init() {
proto.RegisterType((*WorkflowExecution)(nil), "api.WorkflowExecution") proto.RegisterType((*WorkflowExecution)(nil), "api.WorkflowExecution")
proto.RegisterType((*WorkflowExecutionParameter)(nil), "api.WorkflowExecutionParameter") proto.RegisterType((*WorkflowExecutionParameter)(nil), "api.WorkflowExecutionParameter")
proto.RegisterType((*ArtifactResponse)(nil), "api.ArtifactResponse") proto.RegisterType((*ArtifactResponse)(nil), "api.ArtifactResponse")
proto.RegisterType((*File)(nil), "api.File")
proto.RegisterType((*ListFilesRequest)(nil), "api.ListFilesRequest")
proto.RegisterType((*ListFilesResponse)(nil), "api.ListFilesResponse")
} }
func init() { proto.RegisterFile("workflow.proto", fileDescriptor_892c7f566756b0be) } func init() { proto.RegisterFile("workflow.proto", fileDescriptor_892c7f566756b0be) }
var fileDescriptor_892c7f566756b0be = []byte{ var fileDescriptor_892c7f566756b0be = []byte{
// 1375 bytes of a gzipped FileDescriptorProto // 1521 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcd, 0x6f, 0x1b, 0x45, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcd, 0x6f, 0x1b, 0x45,
0x14, 0x67, 0x9c, 0xa6, 0x4d, 0x5e, 0x5a, 0x48, 0x5f, 0xdb, 0xc4, 0x6c, 0x9b, 0xd6, 0xdd, 0x7e, 0x14, 0x67, 0xec, 0xa4, 0x4d, 0x5e, 0x52, 0x48, 0x5f, 0xdb, 0xc4, 0x6c, 0x9b, 0xc6, 0xdd, 0x7e,
0x90, 0x56, 0xad, 0xb7, 0x0d, 0x05, 0x55, 0xa1, 0x1f, 0x24, 0x25, 0x0d, 0x88, 0x94, 0x82, 0xdb, 0x90, 0x56, 0xad, 0xb7, 0x0d, 0x05, 0x55, 0xa1, 0x1f, 0x24, 0x6d, 0x12, 0x10, 0x09, 0x05, 0x37,
0x52, 0xe8, 0x05, 0xc6, 0xeb, 0xb1, 0xb3, 0xc4, 0xde, 0x5d, 0x76, 0xc6, 0x49, 0xd3, 0xc8, 0x12, 0xa5, 0xa5, 0x17, 0x98, 0xac, 0xc7, 0xce, 0x12, 0x7b, 0x77, 0xd9, 0x19, 0x27, 0x4d, 0x23, 0x1f,
0x5f, 0x67, 0x24, 0x28, 0x48, 0x08, 0x2e, 0x20, 0x71, 0xe0, 0x4f, 0xe0, 0xc4, 0x01, 0x09, 0x09, 0xf8, 0x38, 0x20, 0x21, 0x21, 0x41, 0x41, 0x42, 0x70, 0x01, 0x09, 0x21, 0xfe, 0x04, 0x4e, 0x1c,
0x89, 0x63, 0x4f, 0xdc, 0xe1, 0xff, 0x40, 0x33, 0x3b, 0xb3, 0x71, 0xec, 0x5d, 0x27, 0x71, 0xc3, 0x90, 0x90, 0x90, 0x38, 0xf6, 0xc4, 0x1d, 0xfe, 0x0f, 0x34, 0xb3, 0xb3, 0x1b, 0xc7, 0xde, 0x75,
0xc9, 0x33, 0xef, 0xbd, 0x79, 0xef, 0xf7, 0x3e, 0xe6, 0xbd, 0x59, 0xc3, 0xb3, 0x2b, 0x41, 0xb4, 0x12, 0x37, 0x9c, 0x3c, 0xf3, 0xde, 0x9b, 0x37, 0xbf, 0xf7, 0xde, 0xcc, 0x9b, 0xdf, 0x1a, 0x9e,
0x54, 0xad, 0x07, 0x2b, 0xc5, 0x30, 0x0a, 0x44, 0x80, 0x03, 0x34, 0xf4, 0xac, 0x23, 0xb5, 0x20, 0x5d, 0xf3, 0x82, 0x95, 0x72, 0xd5, 0x5b, 0x2b, 0xf8, 0x81, 0x27, 0x3c, 0xcc, 0x52, 0xdf, 0x31,
0xa8, 0xd5, 0x99, 0x43, 0x43, 0xcf, 0xa1, 0xbe, 0x1f, 0x08, 0x2a, 0xbc, 0xc0, 0xe7, 0xb1, 0x88, 0x8e, 0x55, 0x3c, 0xaf, 0x52, 0x65, 0x16, 0xf5, 0x1d, 0x8b, 0xba, 0xae, 0x27, 0xa8, 0x70, 0x3c,
0x75, 0x58, 0x73, 0xd5, 0xae, 0xdc, 0xac, 0x3a, 0xac, 0x11, 0x8a, 0x55, 0xcd, 0x3c, 0xa7, 0x7e, 0x97, 0x87, 0x26, 0xc6, 0x51, 0xad, 0x55, 0xb3, 0xa5, 0x7a, 0xd9, 0x62, 0x35, 0x5f, 0xac, 0x6b,
0xdc, 0xf3, 0x35, 0xe6, 0x9f, 0xe7, 0x2b, 0xb4, 0x56, 0x63, 0x91, 0x13, 0x84, 0xea, 0x78, 0x8a, 0xe5, 0x79, 0xf5, 0x63, 0x5f, 0xa8, 0x30, 0xf7, 0x02, 0x5f, 0xa3, 0x95, 0x0a, 0x0b, 0x2c, 0xcf,
0xaa, 0x71, 0x63, 0xfd, 0x03, 0xc1, 0x1a, 0x61, 0x9d, 0x0a, 0xa6, 0x19, 0x7b, 0x1b, 0x4c, 0x44, 0x57, 0xcb, 0x13, 0x5c, 0x8d, 0x44, 0xbb, 0xbf, 0x27, 0x58, 0xcd, 0xaf, 0x52, 0xc1, 0xb4, 0x62,
0x9e, 0x1b, 0xef, 0xec, 0x2f, 0x08, 0x1c, 0xbd, 0x11, 0x31, 0x2a, 0xd8, 0x7d, 0x2d, 0x3f, 0xf7, 0xb0, 0xc6, 0x44, 0xe0, 0xd8, 0xe1, 0xcc, 0xfc, 0x94, 0xc0, 0xf1, 0x9b, 0x01, 0xa3, 0x82, 0xdd,
0x90, 0xb9, 0x4d, 0xa9, 0xa9, 0xc4, 0x3e, 0x6e, 0x32, 0x2e, 0xf0, 0x08, 0x0c, 0xfb, 0xb4, 0xc1, 0xd3, 0xf6, 0x33, 0x0f, 0x99, 0x5d, 0x97, 0x9e, 0x8a, 0xec, 0xc3, 0x3a, 0xe3, 0x02, 0x8f, 0x41,
0x78, 0x48, 0x5d, 0x96, 0x27, 0x05, 0x32, 0x39, 0x5c, 0x5a, 0x27, 0xe0, 0x6b, 0xb0, 0x7f, 0xa5, 0xbf, 0x4b, 0x6b, 0x8c, 0xfb, 0xd4, 0x66, 0x39, 0x92, 0x27, 0xe3, 0xfd, 0xc5, 0x4d, 0x01, 0xde,
0xf3, 0x64, 0x3e, 0x57, 0x20, 0x93, 0x23, 0x53, 0x63, 0x45, 0x1a, 0x7a, 0xc5, 0x6e, 0xbd, 0xdd, 0x82, 0x83, 0x6b, 0xad, 0x2b, 0x73, 0x99, 0x3c, 0x19, 0x1f, 0x98, 0x18, 0x2e, 0x50, 0xdf, 0x29,
0x07, 0xec, 0xdb, 0x70, 0x78, 0x9e, 0x89, 0x3e, 0x21, 0x20, 0xec, 0x92, 0x1b, 0x65, 0x75, 0xb8, 0xb4, 0xfb, 0x6d, 0x5f, 0x60, 0xde, 0x86, 0xa3, 0x73, 0x4c, 0x74, 0x09, 0x01, 0xa1, 0x47, 0x4e,
0xa4, 0xd6, 0xf6, 0x7b, 0x80, 0xf3, 0x4c, 0xcc, 0x44, 0xc2, 0xab, 0x52, 0x57, 0xf4, 0xad, 0x07, 0xd4, 0xae, 0xfd, 0x45, 0x35, 0x36, 0xef, 0x03, 0xce, 0x31, 0x31, 0x15, 0x08, 0xa7, 0x4c, 0x6d,
0x47, 0x61, 0x60, 0x89, 0xad, 0xe6, 0x07, 0x14, 0x49, 0x2e, 0xed, 0x77, 0x60, 0xe2, 0x3e, 0x15, 0xd1, 0xb5, 0x1f, 0x1c, 0x82, 0xec, 0x0a, 0x5b, 0xcf, 0x65, 0x95, 0x48, 0x0e, 0xcd, 0xb7, 0x61,
0xee, 0xe2, 0x0e, 0x82, 0xbd, 0x0b, 0x85, 0x12, 0xe3, 0xcd, 0x72, 0xc3, 0xdb, 0xc9, 0x10, 0xdc, 0xf4, 0x1e, 0x15, 0xf6, 0xf2, 0x1e, 0x82, 0x5d, 0x84, 0x7c, 0x91, 0xf1, 0xfa, 0x52, 0xcd, 0xd9,
0x83, 0xe3, 0x77, 0x59, 0xd4, 0xf0, 0xfc, 0xfe, 0x93, 0x9b, 0xa6, 0xf6, 0x31, 0x81, 0x63, 0x69, 0xcb, 0x14, 0xdc, 0x85, 0x13, 0x8b, 0x2c, 0xa8, 0x39, 0x6e, 0xf7, 0xc5, 0x4d, 0x72, 0xfb, 0x98,
0xb9, 0x5a, 0x08, 0x6a, 0xbc, 0xff, 0x38, 0xe7, 0x61, 0x4f, 0x18, 0x54, 0xde, 0x92, 0xe4, 0x38, 0xc0, 0x58, 0x52, 0xad, 0xe6, 0xbd, 0x0a, 0xef, 0x3e, 0xcf, 0x39, 0xd8, 0xef, 0x7b, 0xa5, 0x37,
0xd6, 0x66, 0x8b, 0x27, 0x61, 0x9f, 0x1b, 0xf8, 0x82, 0x7a, 0x3e, 0x8b, 0x14, 0x7f, 0x97, 0xe2, 0xa5, 0x38, 0xcc, 0x75, 0x34, 0xc5, 0x53, 0x70, 0xc0, 0xf6, 0x5c, 0x41, 0x1d, 0x97, 0x05, 0x4a,
0x6f, 0x24, 0xda, 0x21, 0xd8, 0x69, 0xa0, 0x6e, 0xa9, 0x5a, 0xff, 0x3f, 0x70, 0xd9, 0x0b, 0x70, 0xdf, 0xa3, 0xf4, 0x5b, 0x85, 0xa6, 0x0f, 0x66, 0x12, 0xa8, 0x05, 0x75, 0xd6, 0xff, 0x0f, 0x5c,
0xa2, 0xa7, 0x45, 0x1e, 0x06, 0x3e, 0x67, 0x78, 0x0a, 0xf6, 0xc4, 0x17, 0x8e, 0xe7, 0x49, 0x61, 0xe6, 0x3c, 0x9c, 0xec, 0xb8, 0x23, 0xf7, 0x3d, 0x97, 0x33, 0x3c, 0x0d, 0xfb, 0xc3, 0x0b, 0xc7,
0x60, 0x72, 0x64, 0x6a, 0x44, 0xdd, 0x8a, 0x58, 0xac, 0x64, 0x78, 0xf6, 0xdf, 0x04, 0x26, 0x16, 0x73, 0x24, 0x9f, 0x1d, 0x1f, 0x98, 0x18, 0x50, 0xb7, 0x22, 0x34, 0x2b, 0x46, 0x3a, 0xf3, 0x6f,
0x3c, 0xde, 0xad, 0x6f, 0x8b, 0xd8, 0x2f, 0xc0, 0x01, 0x73, 0xab, 0xee, 0xea, 0xfb, 0x7e, 0xcf, 0x02, 0xa3, 0xf3, 0x0e, 0x6f, 0xf7, 0xb7, 0x43, 0xec, 0x17, 0xe1, 0x50, 0x74, 0xab, 0x16, 0xf5,
0xab, 0x68, 0x57, 0xd2, 0x58, 0x78, 0x19, 0xc6, 0x3b, 0xc9, 0xef, 0xb2, 0x88, 0xcb, 0xeb, 0x1b, 0x7d, 0xbf, 0xeb, 0x94, 0x74, 0x28, 0x49, 0x2a, 0xbc, 0x02, 0x23, 0xad, 0xe2, 0x77, 0x58, 0xc0,
0x7b, 0x9a, 0xc5, 0x46, 0x0b, 0x86, 0x42, 0x5a, 0x63, 0x77, 0xbc, 0x47, 0x71, 0x32, 0x06, 0x4b, 0xe5, 0xf5, 0x0d, 0x23, 0x4d, 0x53, 0xa3, 0x01, 0x7d, 0x3e, 0xad, 0xb0, 0x3b, 0xce, 0xa3, 0xb0,
0xc9, 0x5e, 0xc6, 0x50, 0xae, 0xf3, 0x83, 0x8a, 0xae, 0xd6, 0xf6, 0x9f, 0x04, 0x8e, 0x66, 0xf9, 0x18, 0xbd, 0xc5, 0x78, 0x2e, 0x73, 0x28, 0xc7, 0xb9, 0x5e, 0x25, 0x57, 0x63, 0xf3, 0x4f, 0x02,
0xa6, 0xa3, 0x74, 0x10, 0x06, 0xdd, 0xa0, 0xe9, 0x0b, 0xe5, 0xd8, 0x60, 0x29, 0xde, 0xe0, 0x4d, 0xc7, 0xd3, 0x62, 0xd3, 0x59, 0x3a, 0x0c, 0xbd, 0xb6, 0x57, 0x77, 0x85, 0x0a, 0xac, 0xb7, 0x18,
0xc0, 0xae, 0x56, 0xc1, 0xf3, 0x39, 0x15, 0xc6, 0xac, 0xe6, 0x92, 0x72, 0x22, 0x01, 0x35, 0xb0, 0x4e, 0x70, 0x16, 0xb0, 0xad, 0x55, 0xf0, 0x5c, 0x46, 0xa5, 0x31, 0xad, 0xb9, 0x24, 0xac, 0x88,
0x0e, 0x4a, 0x5a, 0x94, 0xbf, 0x5c, 0x7b, 0x10, 0x6f, 0xf0, 0x28, 0x80, 0x08, 0x04, 0xad, 0xdf, 0x41, 0x65, 0x37, 0x41, 0xc9, 0x1d, 0xe5, 0x2f, 0xd7, 0x11, 0x84, 0x13, 0x3c, 0x0e, 0x20, 0x3c,
0x50, 0x60, 0x62, 0x27, 0xda, 0x28, 0xf6, 0x2c, 0x0c, 0x2d, 0x04, 0xb5, 0x39, 0x5f, 0x44, 0xab, 0x41, 0xab, 0x37, 0x15, 0x98, 0x30, 0x88, 0x26, 0x89, 0x39, 0x0d, 0x7d, 0xf3, 0x5e, 0x65, 0xc6,
0x32, 0x21, 0xc2, 0x6b, 0x30, 0x2e, 0x68, 0x23, 0x34, 0x09, 0x49, 0x08, 0xb2, 0x70, 0x64, 0x85, 0x15, 0xc1, 0xba, 0x2c, 0x88, 0x70, 0x6a, 0x8c, 0x0b, 0x5a, 0xf3, 0xa3, 0x82, 0xc4, 0x02, 0x79,
0x32, 0x5f, 0xe8, 0x24, 0x98, 0xad, 0xfd, 0x57, 0x0e, 0xf6, 0x77, 0xe1, 0x96, 0xda, 0x5c, 0xd5, 0x70, 0xe4, 0x09, 0x65, 0xae, 0xd0, 0x45, 0x88, 0xa6, 0xe6, 0x5f, 0x19, 0x38, 0xd8, 0x86, 0x5b,
0x87, 0x2b, 0x33, 0xc2, 0x68, 0x4b, 0x08, 0xb2, 0x0d, 0x35, 0x93, 0x74, 0xca, 0x65, 0x52, 0xac, 0x7a, 0xb3, 0x55, 0x1f, 0x2e, 0x4d, 0x89, 0xc8, 0x5b, 0x2c, 0x90, 0x6d, 0xa8, 0x1e, 0x97, 0x53,
0x03, 0x6d, 0xc5, 0x2a, 0x7d, 0x5a, 0xa4, 0xdc, 0x5c, 0x91, 0x78, 0x23, 0x35, 0x73, 0x41, 0xa3, 0x0e, 0xe3, 0xc3, 0x9a, 0x6d, 0x3a, 0xac, 0x32, 0xa6, 0x65, 0xca, 0xa3, 0x2b, 0x12, 0x4e, 0xa4,
0x58, 0xf3, 0x60, 0xac, 0x39, 0x21, 0x48, 0x8f, 0xab, 0x9e, 0xef, 0xf1, 0x45, 0xc5, 0xde, 0xad, 0x67, 0x2e, 0x68, 0x10, 0x7a, 0xee, 0x0d, 0x3d, 0xc7, 0x02, 0x19, 0x71, 0xd9, 0x71, 0x1d, 0xbe,
0xd8, 0x6d, 0x14, 0x99, 0xec, 0x06, 0xf5, 0xbd, 0x2a, 0xe3, 0x22, 0xbf, 0x47, 0x71, 0x93, 0x3d, 0xac, 0xd4, 0xfb, 0x94, 0xba, 0x49, 0x22, 0x8b, 0x5d, 0xa3, 0xae, 0x53, 0x66, 0x5c, 0xe4, 0xf6,
0x5e, 0x07, 0x08, 0x69, 0x44, 0x1b, 0x4c, 0xb0, 0x88, 0xe7, 0x87, 0x54, 0x5e, 0x8e, 0xa5, 0xe7, 0x2b, 0x6d, 0x3c, 0xc7, 0x1b, 0x00, 0x3e, 0x0d, 0x68, 0x8d, 0x09, 0x16, 0xf0, 0x5c, 0x9f, 0xaa,
0xe5, 0x6d, 0x23, 0x57, 0x6a, 0x3b, 0x82, 0x33, 0x30, 0xda, 0x59, 0x64, 0xf9, 0x61, 0x35, 0x3b, 0xcb, 0x58, 0x72, 0x5d, 0xde, 0x8a, 0xec, 0x8a, 0x4d, 0x4b, 0x70, 0x0a, 0x86, 0x5a, 0x0f, 0x59,
0x0e, 0x6d, 0x50, 0x63, 0x98, 0xa5, 0x2e, 0x71, 0xfb, 0x26, 0x58, 0xd9, 0xc6, 0x92, 0x28, 0x91, 0xae, 0x5f, 0xbd, 0x1d, 0x47, 0xb6, 0xb8, 0x89, 0x94, 0xc5, 0x36, 0x73, 0x73, 0x16, 0x8c, 0xf4,
0x8d, 0x51, 0x5a, 0xa6, 0xf5, 0xa6, 0xb9, 0xe7, 0xf1, 0xc6, 0x3e, 0x0d, 0xa3, 0xeb, 0xd3, 0x42, 0xcd, 0xe2, 0x2c, 0x91, 0xad, 0x59, 0x5a, 0xa5, 0xd5, 0x7a, 0x74, 0xcf, 0xc3, 0x89, 0x79, 0x06,
0x57, 0x25, 0xc2, 0xae, 0x0a, 0x15, 0x54, 0x9d, 0xde, 0x5b, 0x52, 0xeb, 0xa9, 0x4f, 0xc6, 0xe0, 0x86, 0x36, 0x5f, 0x0b, 0x7d, 0x2a, 0x11, 0x7a, 0x4a, 0x54, 0x50, 0xb5, 0x7a, 0xb0, 0xa8, 0xc6,
0x39, 0x63, 0xf0, 0x0e, 0x8b, 0x96, 0x3d, 0x97, 0xe1, 0x8f, 0x04, 0xc6, 0x33, 0x86, 0x28, 0x9e, 0xe6, 0xcf, 0x04, 0x7a, 0x66, 0x9d, 0xaa, 0x3e, 0xe9, 0x62, 0x39, 0x72, 0x2d, 0xc7, 0x89, 0x1d,
0x50, 0x8e, 0xf4, 0x1e, 0xb1, 0x56, 0x46, 0x31, 0xdb, 0xaf, 0x7f, 0xf6, 0xe4, 0x9f, 0xc7, 0xb9, 0x04, 0xa1, 0x87, 0xcb, 0x9b, 0x22, 0x0b, 0x95, 0x2d, 0xaa, 0x31, 0xe6, 0x61, 0x40, 0x9f, 0x86,
0x59, 0xfb, 0xbc, 0x7c, 0x2f, 0x70, 0x67, 0xf9, 0x62, 0x99, 0x09, 0x7a, 0xd1, 0x59, 0x4b, 0xee, 0xc5, 0x75, 0x3f, 0x2a, 0x57, 0xb3, 0x08, 0x4d, 0x18, 0xac, 0x52, 0x2e, 0x16, 0xbc, 0x92, 0x53,
0x7d, 0xcb, 0x49, 0xc6, 0x3c, 0x4b, 0xea, 0x7d, 0xba, 0x7b, 0xc0, 0xe2, 0x97, 0x04, 0x0e, 0xa6, 0x76, 0x58, 0x49, 0xd7, 0x6d, 0x8b, 0x4c, 0x16, 0xb6, 0xe4, 0x04, 0xcc, 0x16, 0x5e, 0xb0, 0xae,
0xb5, 0x2b, 0x2c, 0x28, 0xd3, 0x3d, 0x86, 0x6f, 0x26, 0xb8, 0x2b, 0x0a, 0xdc, 0xcb, 0x78, 0x69, 0x2a, 0xd7, 0x57, 0xdc, 0x14, 0x98, 0xf7, 0x61, 0x48, 0x5e, 0x3a, 0x89, 0xf5, 0x29, 0xfa, 0x5f,
0x5b, 0xe0, 0x62, 0x7e, 0x0b, 0xbf, 0x23, 0x30, 0x96, 0xde, 0x14, 0xd0, 0x56, 0x06, 0x7b, 0x76, 0x14, 0x65, 0x76, 0x33, 0x4a, 0xf3, 0x32, 0x1c, 0x6c, 0xf2, 0xac, 0x73, 0x35, 0x06, 0xbd, 0x65,
0x43, 0xeb, 0x44, 0x4f, 0x99, 0x38, 0x7f, 0xf6, 0x4b, 0x0a, 0xa1, 0x83, 0xdb, 0x0b, 0x1f, 0x7e, 0x29, 0xd0, 0x5d, 0xae, 0x5f, 0xd5, 0x4f, 0x9a, 0x14, 0x43, 0xf9, 0xc4, 0xe7, 0x23, 0xf0, 0x5c,
0x4f, 0x60, 0x2c, 0x7d, 0xc4, 0x6b, 0x68, 0x3d, 0xe7, 0x7f, 0x66, 0xbc, 0x66, 0x15, 0x9a, 0x2b, 0x54, 0xa9, 0x3b, 0x2c, 0x58, 0x75, 0x6c, 0x86, 0x3f, 0x10, 0x18, 0x49, 0x61, 0x1f, 0x78, 0x52,
0x38, 0xdd, 0x4f, 0xbc, 0x9c, 0x15, 0x69, 0xf3, 0x02, 0xc1, 0xdf, 0x08, 0xe4, 0xb3, 0xc6, 0x2f, 0x79, 0xe8, 0xcc, 0x4d, 0x8c, 0x94, 0x2e, 0x60, 0xbe, 0xf6, 0xf1, 0x93, 0x7f, 0x1e, 0x67, 0xa6,
0x9e, 0xcc, 0x4c, 0x66, 0xdb, 0x74, 0xb6, 0xf6, 0xc5, 0xb1, 0xd3, 0x7d, 0xcc, 0x5e, 0x52, 0xb8, 0xcd, 0x0b, 0x92, 0x68, 0x71, 0x6b, 0xf5, 0xd2, 0x12, 0x13, 0xf4, 0x92, 0xb5, 0x11, 0x07, 0xdb,
0x18, 0xba, 0x7d, 0xe1, 0x0a, 0x83, 0x0a, 0x77, 0xd6, 0xf4, 0x50, 0x6c, 0x39, 0xc9, 0x54, 0xe6, 0xb0, 0x62, 0x7e, 0xc4, 0xe2, 0x46, 0x31, 0xd9, 0xce, 0x4c, 0xf0, 0x0b, 0x02, 0x87, 0x93, 0xfa,
0xce, 0xda, 0x86, 0x09, 0xdd, 0x72, 0xea, 0x41, 0x8d, 0x5f, 0x20, 0xf8, 0x07, 0x49, 0x7f, 0xeb, 0x3c, 0xe6, 0xd5, 0xd6, 0x1d, 0x58, 0x4b, 0x2a, 0xb8, 0xab, 0x0a, 0xdc, 0xcb, 0x78, 0x79, 0x57,
0xe9, 0xc1, 0x89, 0x2f, 0x64, 0xfa, 0xb0, 0x71, 0x98, 0x5b, 0x93, 0x9b, 0x0b, 0xea, 0x3a, 0xb8, 0xe0, 0x42, 0x7d, 0x03, 0xbf, 0x25, 0x30, 0x9c, 0xdc, 0x4d, 0xd1, 0x54, 0x1b, 0x76, 0x7c, 0x46,
0xa3, 0x3c, 0xbc, 0x85, 0x6f, 0xee, 0x84, 0x87, 0x7a, 0x62, 0xe3, 0x4f, 0x04, 0x9e, 0xcf, 0x7c, 0x8c, 0x93, 0x1d, 0x6d, 0xc2, 0x62, 0x9a, 0x2f, 0x29, 0x84, 0x16, 0xee, 0x2e, 0x7d, 0xf8, 0x1d,
0xb5, 0xe1, 0x29, 0x05, 0x6e, 0xb3, 0x57, 0x5d, 0x66, 0xad, 0xcc, 0x29, 0xc4, 0xd7, 0xad, 0xab, 0x81, 0xe1, 0x64, 0x6e, 0xa4, 0xa1, 0x75, 0x24, 0x4e, 0xa9, 0xf9, 0x9a, 0x56, 0x68, 0xae, 0xe2,
0x7d, 0x21, 0x8e, 0xb4, 0x59, 0xfc, 0x99, 0x80, 0x95, 0xfd, 0x06, 0xc4, 0xd3, 0xca, 0xfa, 0xa6, 0x64, 0x37, 0xf9, 0xb2, 0xd6, 0xe4, 0x9e, 0x17, 0x09, 0xfe, 0x46, 0x20, 0x97, 0xc6, 0x5b, 0xf0,
0x8f, 0x44, 0x6b, 0xac, 0x18, 0x7f, 0x97, 0x14, 0xcd, 0x77, 0x49, 0x71, 0x4e, 0x7e, 0x97, 0xd8, 0x54, 0x6a, 0x31, 0x9b, 0x68, 0x8d, 0x71, 0x20, 0xcc, 0x9d, 0x7e, 0x00, 0xcc, 0x15, 0x85, 0x8b,
0x37, 0x15, 0xca, 0x57, 0xad, 0x6b, 0x7d, 0xa1, 0x14, 0xc6, 0x2e, 0xfe, 0x40, 0x60, 0x6c, 0x63, 0xa1, 0xdd, 0x15, 0x2e, 0xdf, 0x2b, 0x71, 0x6b, 0x43, 0xb3, 0x89, 0x86, 0x15, 0xd3, 0x19, 0x6e,
0x87, 0x34, 0xed, 0x5d, 0x5f, 0xb8, 0x74, 0xa6, 0x81, 0x97, 0x3e, 0x2b, 0x0c, 0x3a, 0xfb, 0xdc, 0x6d, 0x6c, 0xa1, 0x36, 0x0d, 0xab, 0xea, 0x55, 0xf8, 0x45, 0x82, 0x7f, 0x90, 0x64, 0x92, 0xac,
0x16, 0xd0, 0x99, 0x6f, 0x24, 0x3e, 0xdd, 0x35, 0x61, 0xf0, 0x5f, 0x02, 0x13, 0xf7, 0xc2, 0x4a, 0x19, 0x07, 0xbe, 0x90, 0x1a, 0xc3, 0x56, 0x16, 0x64, 0x8c, 0x6f, 0x6f, 0xa8, 0xcf, 0xc1, 0x1d,
0x0a, 0x00, 0xf3, 0x20, 0x3a, 0xa3, 0x00, 0xf4, 0x94, 0xd9, 0x04, 0xeb, 0xa7, 0x44, 0x81, 0x5d, 0x15, 0xe1, 0x02, 0xbe, 0xb1, 0x17, 0x11, 0x6a, 0xaa, 0x83, 0x3f, 0x12, 0x78, 0x3e, 0x95, 0xee,
0xb3, 0x6a, 0xdb, 0x01, 0xeb, 0xac, 0x75, 0x82, 0x2d, 0x36, 0xbd, 0x4a, 0xcb, 0x59, 0x8e, 0x6d, 0xe2, 0x69, 0x05, 0x6e, 0x3b, 0x3a, 0x9c, 0x7a, 0x56, 0x66, 0x14, 0xe2, 0x1b, 0xc6, 0xb5, 0xae,
0xa6, 0xf1, 0x35, 0xab, 0x95, 0xe2, 0xe7, 0xef, 0x04, 0x26, 0xd2, 0x03, 0x6d, 0xfc, 0x7c, 0x8a, 0x10, 0x07, 0x7a, 0x5b, 0xfc, 0x89, 0x80, 0x91, 0x4e, 0x9e, 0xf1, 0x8c, 0xda, 0x7d, 0x5b, 0x76,
0x64, 0x54, 0x95, 0x7f, 0x1f, 0xda, 0x0b, 0x3b, 0xe9, 0x5f, 0x8a, 0x13, 0x4f, 0x08, 0x1c, 0x68, 0x6d, 0x0c, 0x17, 0xc2, 0x0f, 0xba, 0x42, 0xf4, 0x41, 0x57, 0x98, 0x91, 0x1f, 0x74, 0xe6, 0xac,
0x6b, 0x09, 0x09, 0xfd, 0x58, 0x67, 0xb3, 0xd8, 0x22, 0xee, 0xcf, 0xe3, 0xc4, 0xb4, 0x70, 0x6a, 0x42, 0xf9, 0xaa, 0x71, 0xbd, 0x2b, 0x94, 0x22, 0xda, 0x17, 0xbf, 0x27, 0x30, 0xbc, 0xb5, 0x43,
0x7b, 0xc0, 0x25, 0xce, 0x07, 0xf3, 0x38, 0xb7, 0xfd, 0x53, 0x6d, 0xd9, 0x33, 0xc9, 0xc2, 0x5f, 0x46, 0xef, 0xa2, 0xbe, 0x70, 0xc9, 0xca, 0x08, 0x5e, 0xf2, 0x23, 0x1b, 0xa1, 0x33, 0xcf, 0xef,
0x09, 0x1c, 0x69, 0x9f, 0x75, 0x1d, 0x89, 0xe1, 0x38, 0xd9, 0x35, 0x0e, 0x3b, 0x45, 0x8c, 0x9f, 0x00, 0x5d, 0xf4, 0x71, 0xc9, 0x27, 0xdb, 0x9e, 0x66, 0xfc, 0x97, 0xc0, 0xe8, 0x5d, 0xbf, 0x94,
0x67, 0xb6, 0x20, 0xa9, 0xdb, 0xe6, 0x0d, 0xe5, 0xfa, 0x55, 0x7c, 0xe5, 0x29, 0x9c, 0xc0, 0x6f, 0x00, 0x20, 0x62, 0x92, 0x67, 0x15, 0x80, 0x8e, 0x36, 0xdb, 0x60, 0xfd, 0x88, 0x28, 0xb0, 0x1b,
0x08, 0x1c, 0x4a, 0xb3, 0xc6, 0xf1, 0x78, 0x26, 0x92, 0x04, 0xac, 0xdd, 0x4b, 0x44, 0xa3, 0xbc, 0x46, 0x65, 0x37, 0x60, 0xad, 0x8d, 0x56, 0xb0, 0x85, 0xba, 0x53, 0x6a, 0x58, 0xab, 0xe1, 0x9e,
0xa4, 0x50, 0x16, 0x71, 0x5b, 0xd7, 0x1c, 0x7f, 0x21, 0x30, 0x3e, 0x13, 0xb9, 0x8b, 0xde, 0x72, 0x49, 0x7a, 0xad, 0x6a, 0x24, 0xc4, 0xf9, 0x3b, 0x81, 0xd1, 0xe4, 0x44, 0x47, 0x71, 0x3e, 0x45,
0x77, 0xcf, 0x89, 0xdf, 0x16, 0x19, 0x5c, 0x03, 0xed, 0x64, 0x6f, 0x21, 0x0d, 0x4e, 0xcf, 0x7c, 0x31, 0xca, 0x2a, 0xbe, 0xf7, 0xcd, 0xf9, 0xbd, 0x8c, 0x2f, 0x21, 0x88, 0x27, 0x04, 0x0e, 0x35,
0x6b, 0xba, 0x8f, 0x10, 0xd2, 0x58, 0xb7, 0x7c, 0xba, 0x8d, 0xb4, 0xfd, 0x97, 0x81, 0xe3, 0xa6, 0xb5, 0x84, 0x58, 0x3e, 0xd6, 0xda, 0x2c, 0x76, 0x88, 0xfb, 0x93, 0xb0, 0x30, 0x0d, 0x9c, 0xd8,
0x94, 0x3b, 0xfe, 0xdd, 0xd0, 0x25, 0xdc, 0xf9, 0x8a, 0xb5, 0x6f, 0x2b, 0x0c, 0x6f, 0xe0, 0x7c, 0x1d, 0x70, 0x89, 0xf3, 0xc1, 0x1c, 0xce, 0xec, 0x7e, 0x55, 0x53, 0xf5, 0xa2, 0x62, 0xe1, 0xaf,
0x5f, 0x5d, 0x9a, 0x6a, 0x75, 0xdc, 0x59, 0x5b, 0x62, 0xab, 0x57, 0xcf, 0x9e, 0x6d, 0xcd, 0x7e, 0x04, 0x8e, 0x35, 0xbf, 0x75, 0x2d, 0x85, 0xe1, 0x38, 0xde, 0xf6, 0x1c, 0xb6, 0x9a, 0x44, 0x71,
0x4b, 0xbe, 0x9e, 0xf9, 0x8a, 0x9c, 0xcd, 0x91, 0xdc, 0xd4, 0x28, 0x0d, 0xc3, 0xba, 0xe7, 0xaa, 0x9e, 0xdd, 0x81, 0xa5, 0x6e, 0x9b, 0x37, 0x55, 0xe8, 0xd7, 0xf0, 0x95, 0xa7, 0x08, 0x02, 0xbf,
0x7f, 0x9e, 0x9c, 0x8f, 0x78, 0xe0, 0x4f, 0x77, 0x51, 0x1e, 0xbc, 0x0f, 0xf7, 0x61, 0x77, 0x99, 0x26, 0x70, 0x24, 0x69, 0x37, 0x8e, 0x27, 0x52, 0x91, 0xc4, 0x60, 0xcd, 0x4e, 0x26, 0x1a, 0xe5,
0xd1, 0x88, 0x45, 0x78, 0x6b, 0x28, 0x87, 0x97, 0x67, 0x9a, 0x62, 0x91, 0xf9, 0x42, 0x0b, 0x15, 0x65, 0x85, 0xb2, 0x80, 0xbb, 0xba, 0xe6, 0xf8, 0x0b, 0x81, 0x91, 0xa9, 0xc0, 0x5e, 0x76, 0x56,
0x44, 0xb0, 0xc4, 0xfc, 0x73, 0x85, 0x30, 0x62, 0x55, 0xef, 0x21, 0xab, 0x14, 0xca, 0xab, 0x85, 0xdb, 0x7b, 0x4e, 0xc8, 0x2d, 0x52, 0xb4, 0x11, 0xb4, 0x53, 0x9d, 0x8d, 0x34, 0x38, 0xfd, 0xe6,
0x59, 0x25, 0x3d, 0xad, 0x7f, 0x0b, 0x57, 0x94, 0xc8, 0x35, 0x6b, 0x1f, 0x6d, 0x8a, 0xc5, 0x20, 0x1b, 0x93, 0x5d, 0xa4, 0x90, 0x86, 0xbe, 0x25, 0x75, 0x1b, 0x68, 0xfa, 0x13, 0x08, 0x47, 0xa2,
0xf2, 0x1e, 0xc5, 0x07, 0x73, 0xe5, 0xbd, 0x00, 0x89, 0xea, 0x67, 0xca, 0xbb, 0xd5, 0x78, 0x7a, 0xa3, 0xdc, 0xf2, 0xb7, 0x90, 0x3e, 0xc2, 0xad, 0xf4, 0xdf, 0xbc, 0xad, 0x30, 0xbc, 0x8e, 0x73,
0xf1, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5f, 0x17, 0xdb, 0x7a, 0x79, 0x13, 0x00, 0x00, 0x5d, 0x75, 0x69, 0xaa, 0xdd, 0x71, 0x6b, 0x63, 0x85, 0xad, 0x5f, 0x3b, 0x77, 0xae, 0x81, 0x9f,
0x11, 0xe8, 0x8f, 0x99, 0x33, 0x1e, 0x89, 0x6b, 0xd4, 0xcc, 0xd1, 0xf5, 0xcb, 0xd6, 0x46, 0xb0,
0xcd, 0x79, 0x85, 0x66, 0x16, 0x6f, 0x75, 0x85, 0x46, 0x71, 0x70, 0x6b, 0x43, 0xf2, 0x77, 0x09,
0x65, 0xfa, 0x1b, 0xf2, 0xd5, 0xd4, 0x97, 0xe4, 0x5c, 0x86, 0x64, 0x26, 0x86, 0xa8, 0xef, 0x57,
0x1d, 0x5b, 0xfd, 0x7b, 0x68, 0x7d, 0xc0, 0x3d, 0x77, 0xb2, 0x4d, 0xf2, 0xe0, 0x5d, 0xb8, 0x07,
0xfb, 0x96, 0x18, 0x0d, 0x58, 0x80, 0x0b, 0x7d, 0x19, 0xbc, 0x32, 0x55, 0x17, 0xcb, 0xcc, 0x15,
0xda, 0x28, 0x2f, 0xbc, 0x15, 0xe6, 0x9e, 0xcf, 0xfb, 0x01, 0x2b, 0x3b, 0x0f, 0x59, 0x29, 0xbf,
0xb4, 0x9e, 0x9f, 0x56, 0xd6, 0x93, 0xfa, 0x37, 0x7f, 0x55, 0x99, 0x5c, 0x37, 0x0e, 0xd0, 0xba,
0x58, 0xf6, 0x02, 0xe7, 0x51, 0xb8, 0x30, 0xb3, 0x34, 0x08, 0x10, 0xbb, 0x7e, 0x66, 0x69, 0x9f,
0x7a, 0x29, 0x5f, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x71, 0x45, 0x2d, 0x3d, 0x15, 0x00,
0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@@ -991,6 +1177,7 @@ type WorkflowServiceClient interface {
ListWorkflowTemplates(ctx context.Context, in *ListWorkflowTemplatesRequest, opts ...grpc.CallOption) (*ListWorkflowTemplatesResponse, error) ListWorkflowTemplates(ctx context.Context, in *ListWorkflowTemplatesRequest, opts ...grpc.CallOption) (*ListWorkflowTemplatesResponse, error)
ArchiveWorkflowTemplate(ctx context.Context, in *ArchiveWorkflowTemplateRequest, opts ...grpc.CallOption) (*ArchiveWorkflowTemplateResponse, error) ArchiveWorkflowTemplate(ctx context.Context, in *ArchiveWorkflowTemplateRequest, opts ...grpc.CallOption) (*ArchiveWorkflowTemplateResponse, error)
GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (*ArtifactResponse, error) GetArtifact(ctx context.Context, in *GetArtifactRequest, opts ...grpc.CallOption) (*ArtifactResponse, error)
ListFiles(ctx context.Context, in *ListFilesRequest, opts ...grpc.CallOption) (*ListFilesResponse, error)
} }
type workflowServiceClient struct { type workflowServiceClient struct {
@@ -1191,6 +1378,15 @@ func (c *workflowServiceClient) GetArtifact(ctx context.Context, in *GetArtifact
return out, nil return out, nil
} }
func (c *workflowServiceClient) ListFiles(ctx context.Context, in *ListFilesRequest, opts ...grpc.CallOption) (*ListFilesResponse, error) {
out := new(ListFilesResponse)
err := c.cc.Invoke(ctx, "/api.WorkflowService/ListFiles", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// WorkflowServiceServer is the server API for WorkflowService service. // WorkflowServiceServer is the server API for WorkflowService service.
type WorkflowServiceServer interface { type WorkflowServiceServer interface {
// Creates a Workflow // Creates a Workflow
@@ -1210,6 +1406,7 @@ type WorkflowServiceServer interface {
ListWorkflowTemplates(context.Context, *ListWorkflowTemplatesRequest) (*ListWorkflowTemplatesResponse, error) ListWorkflowTemplates(context.Context, *ListWorkflowTemplatesRequest) (*ListWorkflowTemplatesResponse, error)
ArchiveWorkflowTemplate(context.Context, *ArchiveWorkflowTemplateRequest) (*ArchiveWorkflowTemplateResponse, error) ArchiveWorkflowTemplate(context.Context, *ArchiveWorkflowTemplateRequest) (*ArchiveWorkflowTemplateResponse, error)
GetArtifact(context.Context, *GetArtifactRequest) (*ArtifactResponse, error) GetArtifact(context.Context, *GetArtifactRequest) (*ArtifactResponse, error)
ListFiles(context.Context, *ListFilesRequest) (*ListFilesResponse, error)
} }
// UnimplementedWorkflowServiceServer can be embedded to have forward compatible implementations. // UnimplementedWorkflowServiceServer can be embedded to have forward compatible implementations.
@@ -1264,6 +1461,9 @@ func (*UnimplementedWorkflowServiceServer) ArchiveWorkflowTemplate(ctx context.C
func (*UnimplementedWorkflowServiceServer) GetArtifact(ctx context.Context, req *GetArtifactRequest) (*ArtifactResponse, error) { func (*UnimplementedWorkflowServiceServer) GetArtifact(ctx context.Context, req *GetArtifactRequest) (*ArtifactResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetArtifact not implemented") return nil, status.Errorf(codes.Unimplemented, "method GetArtifact not implemented")
} }
func (*UnimplementedWorkflowServiceServer) ListFiles(ctx context.Context, req *ListFilesRequest) (*ListFilesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListFiles not implemented")
}
func RegisterWorkflowServiceServer(s *grpc.Server, srv WorkflowServiceServer) { func RegisterWorkflowServiceServer(s *grpc.Server, srv WorkflowServiceServer) {
s.RegisterService(&_WorkflowService_serviceDesc, srv) s.RegisterService(&_WorkflowService_serviceDesc, srv)
@@ -1563,6 +1763,24 @@ func _WorkflowService_GetArtifact_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _WorkflowService_ListFiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListFilesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WorkflowServiceServer).ListFiles(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/api.WorkflowService/ListFiles",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WorkflowServiceServer).ListFiles(ctx, req.(*ListFilesRequest))
}
return interceptor(ctx, in, info, handler)
}
var _WorkflowService_serviceDesc = grpc.ServiceDesc{ var _WorkflowService_serviceDesc = grpc.ServiceDesc{
ServiceName: "api.WorkflowService", ServiceName: "api.WorkflowService",
HandlerType: (*WorkflowServiceServer)(nil), HandlerType: (*WorkflowServiceServer)(nil),
@@ -1623,6 +1841,10 @@ var _WorkflowService_serviceDesc = grpc.ServiceDesc{
MethodName: "GetArtifact", MethodName: "GetArtifact",
Handler: _WorkflowService_GetArtifact_Handler, Handler: _WorkflowService_GetArtifact_Handler,
}, },
{
MethodName: "ListFiles",
Handler: _WorkflowService_ListFiles_Handler,
},
}, },
Streams: []grpc.StreamDesc{ Streams: []grpc.StreamDesc{
{ {

View File

@@ -1379,6 +1379,104 @@ func local_request_WorkflowService_GetArtifact_0(ctx context.Context, marshaler
} }
func request_WorkflowService_ListFiles_0(ctx context.Context, marshaler runtime.Marshaler, client WorkflowServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq ListFilesRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["namespace"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "namespace")
}
protoReq.Namespace, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "namespace", err)
}
val, ok = pathParams["name"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
}
protoReq.Name, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
}
val, ok = pathParams["path"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path")
}
protoReq.Path, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err)
}
msg, err := client.ListFiles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_WorkflowService_ListFiles_0(ctx context.Context, marshaler runtime.Marshaler, server WorkflowServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq ListFilesRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["namespace"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "namespace")
}
protoReq.Namespace, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "namespace", err)
}
val, ok = pathParams["name"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
}
protoReq.Name, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
}
val, ok = pathParams["path"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "path")
}
protoReq.Path, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "path", err)
}
msg, err := server.ListFiles(ctx, &protoReq)
return msg, metadata, err
}
// RegisterWorkflowServiceHandlerServer registers the http handlers for service WorkflowService to "mux". // RegisterWorkflowServiceHandlerServer registers the http handlers for service WorkflowService to "mux".
// UnaryRPC :call WorkflowServiceServer directly. // UnaryRPC :call WorkflowServiceServer directly.
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
@@ -1698,6 +1796,26 @@ func RegisterWorkflowServiceHandlerServer(ctx context.Context, mux *runtime.Serv
}) })
mux.Handle("GET", pattern_WorkflowService_ListFiles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_WorkflowService_ListFiles_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WorkflowService_ListFiles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil return nil
} }
@@ -2079,6 +2197,26 @@ func RegisterWorkflowServiceHandlerClient(ctx context.Context, mux *runtime.Serv
}) })
mux.Handle("GET", pattern_WorkflowService_ListFiles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WorkflowService_ListFiles_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WorkflowService_ListFiles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil return nil
} }
@@ -2116,6 +2254,8 @@ var (
pattern_WorkflowService_ArchiveWorkflowTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"apis", "v1beta1", "namespace", "workflow_templates", "uid", "archive"}, "", runtime.AssumeColonVerbOpt(true))) pattern_WorkflowService_ArchiveWorkflowTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"apis", "v1beta1", "namespace", "workflow_templates", "uid", "archive"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_WorkflowService_GetArtifact_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 3, 0, 4, 1, 5, 6}, []string{"apis", "v1beta1", "namespace", "workflow_executions", "name", "artifacts", "key"}, "", runtime.AssumeColonVerbOpt(true))) pattern_WorkflowService_GetArtifact_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 3, 0, 4, 1, 5, 6}, []string{"apis", "v1beta1", "namespace", "workflow_executions", "name", "artifacts", "key"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_WorkflowService_ListFiles_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 3, 0, 4, 1, 5, 6}, []string{"apis", "v1beta1", "namespace", "workflow_executions", "name", "files", "path"}, "", runtime.AssumeColonVerbOpt(true)))
) )
var ( var (
@@ -2152,4 +2292,6 @@ var (
forward_WorkflowService_ArchiveWorkflowTemplate_0 = runtime.ForwardResponseMessage forward_WorkflowService_ArchiveWorkflowTemplate_0 = runtime.ForwardResponseMessage
forward_WorkflowService_GetArtifact_0 = runtime.ForwardResponseMessage forward_WorkflowService_GetArtifact_0 = runtime.ForwardResponseMessage
forward_WorkflowService_ListFiles_0 = runtime.ForwardResponseMessage
) )

View File

@@ -137,6 +137,12 @@ service WorkflowService {
get: "/apis/v1beta1/{namespace}/workflow_executions/{name}/artifacts/{key=**}" get: "/apis/v1beta1/{namespace}/workflow_executions/{name}/artifacts/{key=**}"
}; };
} }
rpc ListFiles (ListFilesRequest) returns (ListFilesResponse) {
option (google.api.http) = {
get: "/apis/v1beta1/{namespace}/workflow_executions/{name}/files/{path=**}"
};
}
} }
message CreateWorkflowExecutionRequest { message CreateWorkflowExecutionRequest {
@@ -230,3 +236,22 @@ message WorkflowExecutionParameter {
message ArtifactResponse { message ArtifactResponse {
bytes data = 1; bytes data = 1;
} }
message File {
string path = 1;
string name = 2;
int64 size = 3;
string contentType = 4;
string lastModified = 5;
bool directory = 6;
}
message ListFilesRequest {
string namespace = 1;
string name = 2;
string path = 3;
}
message ListFilesResponse {
repeated File files = 1;
}

View File

@@ -1,6 +1,7 @@
package v1 package v1
import ( import (
"strings"
"time" "time"
wfv1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1" wfv1 "github.com/argoproj/argo/pkg/apis/workflow/v1alpha1"
@@ -103,3 +104,25 @@ type WorkflowExecutionOptions struct {
ListOptions *ListOptions ListOptions *ListOptions
PodGCStrategy *PodGCStrategy PodGCStrategy *PodGCStrategy
} }
type File struct {
Path string
Name string
Size int64
ContentType string
LastModified time.Time
Directory bool
}
func FilePathToName(path string) string {
if strings.HasSuffix(path, "/") {
path = path[:len(path)-1]
}
lastSlashIndex := strings.LastIndex(path, "/")
if lastSlashIndex < 0 {
return path
}
return path[lastSlashIndex+1:]
}

View File

@@ -722,3 +722,42 @@ func (c *Client) GetArtifact(namespace, name, key string) (data []byte, err erro
return return
} }
func (c *Client) ListFiles(namespace, name, key string) (files []*File, err error) {
// @todo the key should be relative to the namespace/name combo
// @todo pagination, limit, etc.
config, err := c.GetNamespaceConfig(namespace)
if err != nil {
return
}
s3Client, err := c.GetS3Client(namespace, config)
if err != nil {
return
}
files = make([]*File, 0)
if len(key) > 0 {
if string(key[len(key)-1]) != "/" {
key += "/"
}
}
doneCh := make(chan struct{})
defer close(doneCh)
for objInfo := range s3Client.ListObjectsV2(config[artifactRepositoryBucketKey], key, false, doneCh) {
newFile := &File{
Path: objInfo.Key,
Name: FilePathToName(objInfo.Key),
Size: objInfo.Size,
LastModified: objInfo.LastModified,
ContentType: objInfo.ContentType,
Directory: objInfo.ETag == "" && objInfo.Size == 0,
}
files = append(files, newFile)
}
return
}

View File

@@ -430,3 +430,31 @@ func (s *WorkflowServer) GetArtifact(ctx context.Context, req *api.GetArtifactRe
Data: data, Data: data,
}, nil }, nil
} }
func (s *WorkflowServer) ListFiles(ctx context.Context, req *api.ListFilesRequest) (*api.ListFilesResponse, error) {
client := ctx.Value("kubeClient").(*v1.Client)
allowed, err := auth.IsAuthorized(client, req.Namespace, "get", "argoproj.io", "workflows", req.Name)
if err != nil || !allowed {
return nil, err
}
files, err := client.ListFiles(req.Namespace, req.Name, req.Path)
if err != nil {
return nil, err
}
apiFiles := make([]*api.File, len(files))
for i, file := range files {
apiFiles[i] = &api.File{
Path: file.Path,
Name: file.Name,
Size: file.Size,
ContentType: file.ContentType,
LastModified: file.LastModified.UTC().Format(time.RFC3339),
}
}
return &api.ListFilesResponse{
Files: apiFiles,
}, nil
}