From a8907932436070a36ded70e3760f7ef2d1d41a36 Mon Sep 17 00:00:00 2001 From: KrKOo Date: Tue, 5 Dec 2023 16:38:10 +0100 Subject: [PATCH 1/5] Upgrade kubernetes client library version to v0.28.4 --- compute/kubernetes/backend.go | 6 +- go.mod | 11 +- go.sum | 219 +++++++++++++++++++++------------- 3 files changed, 146 insertions(+), 90 deletions(-) diff --git a/compute/kubernetes/backend.go b/compute/kubernetes/backend.go index 0b5326a45..8ec259d30 100644 --- a/compute/kubernetes/backend.go +++ b/compute/kubernetes/backend.go @@ -152,7 +152,7 @@ func (b *Backend) Submit(task *tes.Task) error { if err != nil { return fmt.Errorf("creating job spec: %v", err) } - _, err = b.client.Create(job) + _, err = b.client.Create(context.TODO(), job, metav1.CreateOptions{}) if err != nil { return fmt.Errorf("creating job: %v", err) } @@ -163,7 +163,7 @@ func (b *Backend) Submit(task *tes.Task) error { func (b *Backend) deleteJob(taskID string) error { var gracePeriod int64 = 0 var prop metav1.DeletionPropagation = metav1.DeletePropagationForeground - err := b.client.Delete(taskID, &metav1.DeleteOptions{ + err := b.client.Delete(context.TODO(), taskID, metav1.DeleteOptions{ GracePeriodSeconds: &gracePeriod, PropagationPolicy: &prop, }) @@ -215,7 +215,7 @@ ReconcileLoop: case <-ctx.Done(): return case <-ticker.C: - jobs, err := b.client.List(metav1.ListOptions{}) + jobs, err := b.client.List(context.TODO() ,metav1.ListOptions{}) if err != nil { b.log.Error("reconcile: listing jobs", err) continue ReconcileLoop diff --git a/go.mod b/go.mod index e00c05fe1..c89a61c21 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/jlaffaye/ftp v0.0.0-20191218041957-e1b8fdd0dcc3 github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 - github.com/kr/pretty v0.3.0 + github.com/kr/pretty v0.3.1 github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381 github.com/maruel/panicparse v1.3.0 // indirect github.com/mattn/go-runewidth v0.0.8 // indirect @@ -62,7 +62,7 @@ require ( github.com/stretchr/testify v1.8.3 golang.org/x/crypto v0.14.0 golang.org/x/net v0.17.0 - golang.org/x/oauth2 v0.7.0 + golang.org/x/oauth2 v0.8.0 golang.org/x/time v0.3.0 google.golang.org/api v0.114.0 google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 @@ -70,8 +70,7 @@ require ( gopkg.in/ini.v1 v1.51.0 // indirect gopkg.in/olivere/elastic.v5 v5.0.84 gotest.tools/v3 v3.5.1 // indirect - k8s.io/api v0.17.3 - k8s.io/apimachinery v0.17.3 - k8s.io/client-go v0.17.0 - k8s.io/utils v0.0.0-20200124190032-861946025e34 // indirect + k8s.io/api v0.28.4 + k8s.io/apimachinery v0.28.4 + k8s.io/client-go v0.28.4 ) diff --git a/go.sum b/go.sum index 5692774c2..3df6eb5d3 100644 --- a/go.sum +++ b/go.sum @@ -606,13 +606,6 @@ gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zum git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM= @@ -623,8 +616,6 @@ github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jB github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.26.1 h1:3jnfWKD7gVwbB1KSy/lE0szA9duPuSFLViK0o/d3DgA= github.com/Shopify/sarama v1.26.1/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU= github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= @@ -651,6 +642,8 @@ github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2 github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2 h1:7Ip0wMmLHLRJdrloDxZfhMm0xrLXZS8+COSu2bXmEQs= github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.13.54 h1:myPvM7uaugP6Lh/goyJ1RbJumcz0IgVdIOpMIznOtyI= github.com/aws/aws-sdk-go v1.13.54/go.mod h1:ZRmQr0FajVIyZ4ZzBYKG5P3ZqPz9IHG41ZoMu1ADI3k= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -697,7 +690,6 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -705,7 +697,6 @@ github.com/dgraph-io/badger/v2 v2.0.1 h1:+D6dhIqC6jIeCclnxMHqk4HPuXgrRN5UfBsLR4d github.com/dgraph-io/badger/v2 v2.0.1/go.mod h1:YoRSIp1LmAJ7zH7tZwRvjNMUYLxB4wl3ebYkaIruZ04= github.com/dgraph-io/ristretto v0.0.0-20191025175511-c1f00be0418e h1:aeUNgwup7PnDOBAD1BOKAqzb/W/NksOj6r3dwKKuqfg= github.com/dgraph-io/ristretto v0.0.0-20191025175511-c1f00be0418e/go.mod h1:edzKIzGvqUCMzhTVWbiTSe75zD9Xxq0GtSBtFmaUTZs= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= @@ -717,7 +708,6 @@ github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKoh github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -729,8 +719,9 @@ github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= +github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -746,7 +737,7 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -755,6 +746,7 @@ github.com/frankban/quicktest v1.7.2 h1:2QxQoC1TS09S7fhCPsrvqYdvP1H5M1P1ih5ABm3B github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gammazero/deque v0.0.0-20190521012701-46e4ffb7a622 h1:lxbhOGZ9pU3Kf8P6lFluUcE82yVZn2EqEf4+mWRNPV0= github.com/gammazero/deque v0.0.0-20190521012701-46e4ffb7a622/go.mod h1:D90+MBHVc9Sk1lJAbEVgws0eYEurY4mv2TDso3Nxh3w= github.com/gammazero/workerpool v0.0.0-20200206003619-019d125201ab h1:BLCWHqLiTSzLZriw46b3HJLswyqY0E6B9y9tk4+7eFI= @@ -762,7 +754,6 @@ github.com/gammazero/workerpool v0.0.0-20200206003619-019d125201ab/go.mod h1:ZOb github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/getlantern/deepcopy v0.0.0-20160317154340-7f45deb8130a h1:yU/FENpkHYISWsQrbr3pcZOBj0EuRjPzNc1+dTCLu44= github.com/getlantern/deepcopy v0.0.0-20160317154340-7f45deb8130a/go.mod h1:AEugkNu3BjBxyz958nJ5holD9PRjta6iprcoUauDbU4= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui v2.3.0+incompatible h1:S8wJoNumYfc/rR5UezUM4HsPEo3RJh0LKdiuDWQpjqw= @@ -786,34 +777,45 @@ github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpx github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-test/deep v1.0.5 h1:AKODKU3pDH1RzZzm6YZu77YWtEAq6uh1rLIAQlay2qc= github.com/go-test/deep v1.0.5/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/gddo v0.0.0-20200219175727-df439dd5819e h1:NsQfXZpFhWx7D7/Wo3dSB3/o3vGVhAB4dJmR3eXXpmM= github.com/golang/gddo v0.0.0-20200219175727-df439dd5819e/go.mod h1:sam69Hju0uq+5uvLJUMDlsKlQ21Vrs1Kd/1YFPNYdOU= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -824,7 +826,6 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -851,7 +852,10 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -869,9 +873,10 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -889,11 +894,12 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -917,13 +923,11 @@ github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMd github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= github.com/googleapis/gax-go/v2 v2.7.1 h1:gF4c0zjUP2H/s/hEGyLA3I0fA2ZWjzYiONAD6cvPr8A= github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 h1:0IKlLyQ3Hs9nDaiK5cSHAGmcQEIC8l2Ts1u6x5Dfrqg= @@ -942,7 +946,7 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= @@ -954,11 +958,12 @@ github.com/jlaffaye/ftp v0.0.0-20191218041957-e1b8fdd0dcc3 h1:QyB6CQGLB65Al72mAI github.com/jlaffaye/ftp v0.0.0-20191218041957-e1b8fdd0dcc3/go.mod h1:PwUeyujmhaGohgOf0kJKxPfk3HcRv8QD/wAUN44go4k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -969,7 +974,7 @@ github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= @@ -983,8 +988,9 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -996,9 +1002,9 @@ github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuz github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5 h1:0x4qcEHDpruK6ML/m/YSlFUUu0UpRD3I2PHsNCuGnyA= github.com/mailru/easyjson v0.0.0-20180730094502-03f2033d19d5/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/maruel/panicparse v1.3.0 h1:1Ep/RaYoSL1r5rTILHQQbyzHG8T4UP5ZbQTYTo4bdDc= github.com/maruel/panicparse v1.3.0/go.mod h1:vszMjr5QQ4F5FSRfraldcIA/BCw5xrdLL+zEcU2nRBs= github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -1024,18 +1030,21 @@ github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9 github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/ncw/swift v1.0.50 h1:E01b5bVIssNhx2KnzAjMWEXkKrb8ytTqCDWY7lqmWjA= @@ -1044,11 +1053,40 @@ github.com/nsf/termbox-go v0.0.0-20200204031403-4d2b513ad8be h1:yzmWtPyxEUIKdZg4 github.com/nsf/termbox-go v0.0.0-20200204031403-4d2b513ad8be/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= +github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= +github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= +github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= +github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= +github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= +github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= +github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= +github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= @@ -1070,7 +1108,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -1096,8 +1133,9 @@ github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qq github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= @@ -1133,7 +1171,6 @@ github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -1145,7 +1182,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1155,6 +1191,7 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= @@ -1187,7 +1224,6 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1254,12 +1290,14 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1275,7 +1313,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1286,6 +1323,7 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -1299,6 +1337,7 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1316,6 +1355,7 @@ golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= @@ -1354,8 +1394,9 @@ golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= -golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1374,13 +1415,11 @@ golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1392,8 +1431,10 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1415,6 +1456,7 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1443,8 +1485,10 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1477,7 +1521,6 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1507,8 +1550,6 @@ golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1545,9 +1586,11 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -1556,7 +1599,9 @@ golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -1565,11 +1610,15 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1848,8 +1897,9 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1880,9 +1930,12 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= @@ -1895,23 +1948,23 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/api v0.17.3 h1:XAm3PZp3wnEdzekNkcmj/9Y1zdmQYJ1I4GKSBBZ8aG0= -k8s.io/api v0.17.3/go.mod h1:YZ0OTkuw7ipbe305fMpIdf3GLXZKRigjtZaV5gzC2J0= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.17.3 h1:f+uZV6rm4/tHE7xXgLyToprg6xWairaClGVkm2t8omg= -k8s.io/apimachinery v0.17.3/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g= -k8s.io/client-go v0.17.0 h1:8QOGvUGdqDMFrm9sD6IUFl256BcffynGoe80sxgTEDg= -k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200124190032-861946025e34 h1:HjlUD6M0K3P8nRXmr2B9o4F9dUy9TCj/aEpReeyi6+k= -k8s.io/utils v0.0.0-20200124190032-861946025e34/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY= +k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0= +k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= +k8s.io/apimachinery v0.28.4/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg= +k8s.io/client-go v0.28.4 h1:Np5ocjlZcTrkyRJ3+T3PkXDpe4UpatQxj85+xjaD2wY= +k8s.io/client-go v0.28.4/go.mod h1:0VDZFpgoZfelyP5Wqu0/r/TRYcLYuJ2U1KEeoaPa1N4= +k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= +k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= +k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk= +k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= @@ -1950,6 +2003,10 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From c011144b6e1de3b8f55542910d3dc5a4457ee3c1 Mon Sep 17 00:00:00 2001 From: KrKOo Date: Tue, 5 Dec 2023 16:39:01 +0100 Subject: [PATCH 2/5] Upgrade golang version in Dockerfiles to 1.21.4 --- Dockerfile | 2 +- Dockerfile.dind | 2 +- Dockerfile.dind-rootless | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index ae99a4d06..ba00943a6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # build stage -FROM golang:1.13.8-alpine AS build-env +FROM golang:1.21.4-alpine AS build-env RUN apk add make git bash build-base ENV GOPATH=/go ENV PATH="/go/bin:${PATH}" diff --git a/Dockerfile.dind b/Dockerfile.dind index c5cc84cd7..a38544b9a 100644 --- a/Dockerfile.dind +++ b/Dockerfile.dind @@ -1,5 +1,5 @@ # build stage -FROM golang:1.13.8-alpine AS build-env +FROM golang:1.21.4-alpine AS build-env RUN apk add make git bash build-base ENV GOPATH=/go ENV PATH="/go/bin:${PATH}" diff --git a/Dockerfile.dind-rootless b/Dockerfile.dind-rootless index bd7def3eb..87edf79db 100644 --- a/Dockerfile.dind-rootless +++ b/Dockerfile.dind-rootless @@ -1,5 +1,5 @@ # build stage -FROM golang:1.13.8-alpine AS build-env +FROM golang:1.21.4-alpine AS build-env RUN apk add make git bash build-base ENV GOPATH=/go ENV PATH="/go/bin:${PATH}" From 2a104c8e25c542403ac740778cc8050790c5b26d Mon Sep 17 00:00:00 2001 From: KrKOo Date: Tue, 12 Dec 2023 00:35:00 +0100 Subject: [PATCH 3/5] Add build and dependency caching to Dockerfiles --- Dockerfile | 8 ++++++-- Dockerfile.dind | 8 ++++++-- Dockerfile.dind-rootless | 8 ++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index ba00943a6..734a11db0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,8 +3,12 @@ FROM golang:1.21.4-alpine AS build-env RUN apk add make git bash build-base ENV GOPATH=/go ENV PATH="/go/bin:${PATH}" -ADD ./ /go/src/github.com/ohsu-comp-bio/funnel -RUN cd /go/src/github.com/ohsu-comp-bio/funnel && make build + +WORKDIR /go/src/github.com/ohsu-comp-bio/funnel +COPY go.* . +RUN go mod download +COPY . . +RUN --mount=type=cache,target=/root/.cache/go-build make build # final stage FROM alpine diff --git a/Dockerfile.dind b/Dockerfile.dind index a38544b9a..586bc060c 100644 --- a/Dockerfile.dind +++ b/Dockerfile.dind @@ -3,8 +3,12 @@ FROM golang:1.21.4-alpine AS build-env RUN apk add make git bash build-base ENV GOPATH=/go ENV PATH="/go/bin:${PATH}" -ADD ./ /go/src/github.com/ohsu-comp-bio/funnel -RUN cd /go/src/github.com/ohsu-comp-bio/funnel && make build + +WORKDIR /go/src/github.com/ohsu-comp-bio/funnel +COPY go.* . +RUN go mod download +COPY . . +RUN --mount=type=cache,target=/root/.cache/go-build make build # final stage FROM docker:stable-dind diff --git a/Dockerfile.dind-rootless b/Dockerfile.dind-rootless index 87edf79db..9d4562bdf 100644 --- a/Dockerfile.dind-rootless +++ b/Dockerfile.dind-rootless @@ -3,8 +3,12 @@ FROM golang:1.21.4-alpine AS build-env RUN apk add make git bash build-base ENV GOPATH=/go ENV PATH="/go/bin:${PATH}" -ADD ./ /go/src/github.com/ohsu-comp-bio/funnel -RUN cd /go/src/github.com/ohsu-comp-bio/funnel && make build + +WORKDIR /go/src/github.com/ohsu-comp-bio/funnel +COPY go.* . +RUN go mod download +COPY . . +RUN --mount=type=cache,target=/root/.cache/go-build make build # final stage FROM docker:stable-dind-rootless From f675f0b7729b8e052d8b1525fcbf6f1d59d7477b Mon Sep 17 00:00:00 2001 From: KrKOo Date: Tue, 12 Dec 2023 00:48:26 +0100 Subject: [PATCH 4/5] Add native kubernetes task execution support --- cmd/util/flags.go | 2 + cmd/worker/run.go | 29 ++- config/config.go | 6 + config/default-config.yaml | 23 ++- config/default.go | 5 + config/internal/bundle.go | 135 ++++++++------ config/kubernetes-executor-template.yaml | 38 ++++ config/kubernetes-template.yaml | 20 +- deployments/kubernetes/funnel-config.yaml | 130 +++++++++++++ deployments/kubernetes/funnel-deployment.yml | 24 +-- .../kubernetes/funnel-server-config.yml | 61 ------ .../kubernetes/funnel-worker-config.yml | 18 -- deployments/kubernetes/pvc.yaml | 12 ++ deployments/kubernetes/role.yml | 19 +- deployments/kubernetes/role_binding.yml | 10 +- deployments/kubernetes/svc.yaml | 14 ++ worker/command.go | 40 ++++ worker/docker.go | 15 +- worker/interfaces.go | 12 ++ worker/kubernetes.go | 175 ++++++++++++++++++ worker/step.go | 16 +- worker/worker.go | 75 ++++++-- 22 files changed, 658 insertions(+), 221 deletions(-) create mode 100644 config/kubernetes-executor-template.yaml create mode 100644 deployments/kubernetes/funnel-config.yaml delete mode 100644 deployments/kubernetes/funnel-server-config.yml delete mode 100644 deployments/kubernetes/funnel-worker-config.yml create mode 100644 deployments/kubernetes/pvc.yaml create mode 100644 deployments/kubernetes/svc.yaml create mode 100644 worker/command.go create mode 100644 worker/kubernetes.go diff --git a/cmd/util/flags.go b/cmd/util/flags.go index 635216cda..b97febbaa 100644 --- a/cmd/util/flags.go +++ b/cmd/util/flags.go @@ -225,6 +225,8 @@ func computeFlags(flagConf *config.Config) *pflag.FlagSet { f.Var(&flagConf.Scheduler.NodeDeadTimeout, "Scheduler.NodeDeadTimeout", "How long to wait before deleting a dead node from the DB") // Kubernetes + f.StringVar(&flagConf.Kubernetes.Executor, "Kubernetes.Executor", flagConf.Kubernetes.Executor, "Executor to use for executing tasks (docker or kubernetes)") + f.StringVar(&flagConf.Kubernetes.ExecutorTemplateFile, "Kubernetes.ExecutorTemplateFile", flagConf.Kubernetes.ExecutorTemplateFile, "Path to executor job template file") f.StringVar(&flagConf.Kubernetes.TemplateFile, "Kubernetes.TemplateFile", flagConf.Kubernetes.TemplateFile, "Path to job template file") f.StringVar(&flagConf.Kubernetes.Namespace, "Kubernetes.Namespace", flagConf.Kubernetes.Namespace, "Namespace to spawn jobs within") f.StringVar(&flagConf.Kubernetes.ConfigFile, "Kubernetes.ConfigFile", flagConf.Kubernetes.ConfigFile, "Path to kubernetes config file") diff --git a/cmd/worker/run.go b/cmd/worker/run.go index d956e030c..960066bb3 100644 --- a/cmd/worker/run.go +++ b/cmd/worker/run.go @@ -3,6 +3,7 @@ package worker import ( "context" "fmt" + "io/ioutil" "strings" "github.com/ohsu-comp-bio/funnel/config" @@ -70,11 +71,31 @@ func NewWorker(ctx context.Context, conf config.Config, log *logger.Logger, opts } store.AttachLogger(log) + if conf.Kubernetes.ExecutorTemplateFile != "" { + content, err := ioutil.ReadFile(conf.Kubernetes.ExecutorTemplateFile) + if err != nil { + return nil, fmt.Errorf("reading template: %v", err) + } + conf.Kubernetes.ExecutorTemplate = string(content) + } + + // The executor always defaults to docker, unless explicitly set to kubernetes. + var executor = worker.Executor{ + Backend: "docker", + } + + if conf.Kubernetes.Executor == "kubernetes" { + executor.Backend = "kubernetes" + executor.Template = conf.Kubernetes.ExecutorTemplate + executor.Namespace = conf.Kubernetes.Namespace + } + return &worker.DefaultWorker{ - Conf: conf.Worker, - Store: store, - TaskReader: reader, - EventWriter: writer, + Executor: executor, + Conf: conf.Worker, + Store: store, + TaskReader: reader, + EventWriter: writer, }, nil } diff --git a/config/config.go b/config/config.go index ecd387b0d..440aee887 100644 --- a/config/config.go +++ b/config/config.go @@ -382,6 +382,8 @@ func (h FTPStorage) Valid() bool { // Kubernetes describes the configuration for the Kubernetes compute backend. type Kubernetes struct { + // The executor used to execute tasks. Available executors: docker, kubernetes + Executor string // Turn off task state reconciler. When enabled, Funnel communicates with Kuberenetes // to find tasks that are stuck in a queued state or errored and updates the task state // accordingly. @@ -395,6 +397,10 @@ type Kubernetes struct { Template string // TemplateFile is the path to the job template. TemplateFile string + // Job template used for executing the tasks. + ExecutorTemplate string + // ExecutorTemplateFile is the path to the executor template. + ExecutorTemplateFile string // Path to the Kubernetes configuration file, otherwise assumes the Funnel server is running in a pod and // attempts to use https://godoc.org/k8s.io/client-go/rest#InClusterConfig to infer configuration. ConfigFile string diff --git a/config/default-config.yaml b/config/default-config.yaml index cafe5e51c..51de72b0a 100644 --- a/config/default-config.yaml +++ b/config/default-config.yaml @@ -8,7 +8,7 @@ Compute: local # The name of the active event writer backend(s). # Available backends: log, boltdb, badger, datastore, dynamodb, elastic, mongodb, kafka -EventWriters: +EventWriters: - boltdb - log @@ -42,7 +42,7 @@ Server: DisableHTTPCache: true RPCClient: - # RPC server address + # RPC server address ServerAddress: localhost:9090 # Credentials for Basic authentication for the server APIs using a password. @@ -59,7 +59,7 @@ RPCClient: # up to 1 minute MaxRetries: 10 -# The scheduler is used for the Manual compute backend. +# The scheduler is used for the Manual compute backend. Scheduler: # How often to run a scheduler iteration. ScheduleRate: 1s @@ -78,7 +78,7 @@ Node: # -1 means there is no timeout. 0 means timeout immediately after the first task. Timeout: -1s - # A Node will automatically try to detect what resources are available to it. + # A Node will automatically try to detect what resources are available to it. # Defining Resources in the Node configuration overrides this behavior. Resources: # CPUs available. @@ -149,7 +149,7 @@ Datastore: # Optional. If possible, credentials will be automatically discovered # from the environment. CredentialsFile: "" - + MongoDB: # Addrs holds the addresses for the seed servers. Addrs: @@ -298,6 +298,8 @@ AWSBatch: # Kubernetes describes the configuration for the Kubernetes compute backend. Kubernetes: + # The executor used to execute tasks. Available executors: docker, kubernetes + Executor: "docker" # Turn off task state reconciler. When enabled, Funnel communicates with Kubernetes # to find tasks that are stuck in a queued state or errored and # updates the task state accordingly. @@ -307,11 +309,18 @@ Kubernetes: ReconcileRate: 10m # Kubernetes Namespace to spawn jobs within Namespace: "" - # Batch job template. See: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#job-v1-batch + # Master batch job template. See: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#job-v1-batch Template: "" - # TemplateFile is the path to the job template. + # TemplateFile is the path to the master job template. TemplateFile: "" + # Configuration of the Kubernetes executor. + + # Job template used for executing the tasks. + ExecutorTemplate: "" + # ExecutorTemplateFile is the path to the executor template. + ExecutorTemplateFile: "" + #------------------------------------------------------------------------------- # Storage #------------------------------------------------------------------------------- diff --git a/config/default.go b/config/default.go index fb406cc62..cb2fbc09f 100644 --- a/config/default.go +++ b/config/default.go @@ -134,6 +134,11 @@ func DefaultConfig() Config { c.AWSBatch.ReconcileRate = reconcile c.AWSBatch.DisableReconciler = true + kubernetesTemplate := intern.MustAsset("config/kubernetes-template.yaml") + executorTemplate := intern.MustAsset("config/kubernetes-executor-template.yaml") + c.Kubernetes.Executor = "docker" + c.Kubernetes.Template = string(kubernetesTemplate) + c.Kubernetes.ExecutorTemplate = string(executorTemplate) c.Kubernetes.ReconcileRate = reconcile return c diff --git a/config/internal/bundle.go b/config/internal/bundle.go index f218eb8d4..48cdd437f 100644 --- a/config/internal/bundle.go +++ b/config/internal/bundle.go @@ -1,11 +1,12 @@ -// Package config Code generated by go-bindata. (@generated) DO NOT EDIT. +// Code generated for package main by go-bindata DO NOT EDIT. (@generated) // sources: -// config/gridengine-template.txt -// config/pbs-template.txt -// config/slurm-template.txt // config/default-config.yaml +// config/gridengine-template.txt // config/htcondor-template.txt +// config/kubernetes-executor-template.yaml // config/kubernetes-template.yaml +// config/pbs-template.txt +// config/slurm-template.txt package config import ( @@ -23,7 +24,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("Read %q: %v", name, err) } var buf bytes.Buffer @@ -31,7 +32,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %v", name, err) + return nil, fmt.Errorf("Read %q: %v", name, err) } if clErr != nil { return nil, err @@ -67,7 +68,7 @@ func (fi bindataFileInfo) Mode() os.FileMode { return fi.mode } -// ModTime return file modify time +// Mode return file modify time func (fi bindataFileInfo) ModTime() time.Time { return fi.modTime } @@ -82,6 +83,26 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } +var _configDefaultConfigYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3a\x5d\x73\x1b\x39\x72\xef\xf3\x2b\x3a\xe2\x5e\xc5\x5b\xc5\x2f\xed\xd6\x5e\x72\xac\xd2\x83\xbe\xd6\x56\x2c\x7b\x19\x91\x8e\x93\x27\x17\x66\xd0\xc3\xc1\x72\x06\x98\x05\x30\xa4\x69\xc7\xff\x3d\xd5\x0d\xcc\x07\x25\x79\xed\xbb\x93\xab\x36\x75\xa7\x17\x71\x80\x46\xa3\xd1\xdf\xdd\xc0\x08\xd6\x05\x82\x16\x15\x82\xc9\xc1\x17\x08\x22\xf3\x6a\x87\xe0\xd0\xee\xd0\x82\x14\x5e\xa4\xc2\x21\xa4\x22\xdb\xa2\x96\xc9\x08\xce\x77\x42\x95\x22\x2d\xbb\x31\xb7\x80\xd4\x94\x5e\xa6\x63\x48\x85\xdc\xa0\x1d\xf3\x32\xe7\x8d\xc5\x31\xc8\x83\x16\x95\xa1\x49\x2c\x85\xf3\x2a\x1b\x43\x65\xf4\xc6\xc8\x34\xb9\x8a\xc8\xdb\xf5\x49\xf2\x59\x72\x32\x53\xd5\x8d\xff\x12\x19\xa5\xc9\x44\x39\x86\xc2\x67\x46\x4b\x63\xc7\xe0\xca\xc6\x56\x63\xa8\x53\x37\x86\x8d\x55\x12\xf5\x46\x69\x1c\x43\x25\x74\x43\x90\x62\xef\x26\xa9\xf0\x59\x91\x5c\x86\x0d\x22\x8e\xdf\xa1\x04\x77\xa8\x3d\xec\xad\xf2\x68\xdb\xad\x9f\xb9\xef\xa7\x9f\x25\x69\x33\xfe\xdb\xd8\x33\x86\xad\xc8\xb7\x22\xb9\xa6\x0d\xdf\xf2\x7e\x6e\x91\x00\x4c\x5a\x6e\xd1\xcf\xd2\x6c\x92\xe4\xd6\x6c\x36\x68\x69\x6e\x04\xf4\x5b\xe9\x0d\x94\xb8\xc3\xd2\x2d\x40\x62\xda\x6c\xc6\xa0\x74\x6e\xc6\x80\xd6\x1a\x9b\x00\xdc\xd2\xe4\x82\x07\x79\x11\x63\x27\x5c\x0e\xbc\x01\x5f\x28\x07\xb5\xf0\xc5\x14\x6e\x72\xc0\xaa\xf6\x87\x71\x98\x14\x16\xf9\xe4\x1e\x35\x01\x3a\x2f\xd1\xda\x69\x02\xf0\x4b\xe3\xeb\xc6\xff\xac\x4a\x5c\xc0\xc9\x49\x92\xac\x58\x7b\x02\x45\x2f\x8c\xf3\x43\x3e\xfe\xdc\x68\x8d\x65\x54\x30\x5a\x4c\x00\xaf\x45\xd5\xf2\xbe\x30\xce\x27\xbc\x72\x69\xac\x87\xc6\xa1\x84\xdc\x58\x78\xb1\x5e\x2f\x49\x0f\xaa\x46\xab\x4c\x78\x65\x34\x08\x2d\x19\xe5\x1e\x53\x90\xc2\x15\xa9\x11\x56\x32\xca\xf5\x7a\x49\xab\x17\xf0\xef\xf3\xf9\xfc\x31\x6c\x77\xcb\xcb\x63\x64\xb4\xec\x6e\x79\x19\x56\xfd\x65\xfe\x97\xb8\xea\x0e\x7f\x6b\x94\x25\x89\x3a\x95\x81\x68\x7c\x81\xda\xb7\xfb\x13\x22\xda\x3f\x1a\xcb\xf9\xf2\xc6\x41\xe3\x88\xfd\x02\x6a\xe1\xdc\xde\x04\x72\x46\xc4\x48\xda\x9a\x34\x6f\x8b\xe0\x1a\x8b\xc4\xc0\xda\x9a\x1a\x6d\x79\x00\x8b\xce\x5b\x95\x79\x10\x59\x86\x2e\x4a\x81\xb4\x5e\xe7\x6a\x03\xb9\x2a\x91\xb1\x3c\xc3\xe9\x66\x0a\x59\x51\x19\x09\x7f\x9e\xcf\x21\x67\x56\x4e\x03\xd8\xf4\x50\x95\xdf\x33\xd8\x05\xd1\x7a\xde\xf8\x22\x08\x80\xf4\xe4\x8d\x43\xbb\x20\x12\xec\x69\x1c\x03\x58\x46\x0a\x17\x20\xd2\xec\xf4\x87\x1f\x1f\x01\xfe\xe1\x11\xe0\xdc\x98\x54\xd8\xc0\x9d\x1b\x9d\x95\x8d\x44\x10\x70\x72\x29\xb2\x02\x27\x97\x46\x7b\x6b\xca\x05\x68\x33\x61\x0d\x3f\x09\x72\x2b\x50\x48\xb4\xa0\x34\x3c\x47\x3f\xbb\x55\xce\xd3\x99\x6b\xa3\x1d\x3a\xc6\xc4\xdc\x08\xb6\x95\x89\xac\x20\x1e\xa6\x07\x50\xda\xa3\xad\x50\x2a\x61\x0f\xcc\x65\x95\xa1\x23\x8e\x5e\x29\x47\x86\x46\xb8\x79\xe3\x05\x78\xdb\x60\x92\xdc\x2d\x2f\x2f\x4b\x85\xda\x87\xa3\x93\x94\xa3\x70\x84\x94\x16\x1d\x6d\x16\x94\xf3\x3c\x7c\x0f\x94\x6e\xd1\x4b\xfd\xd2\xa2\x24\x39\x8b\xd2\xb1\x90\x2f\xfe\x1f\x49\x3f\x48\x2f\x4c\x06\xc5\xbf\x2f\x67\x1e\xcd\x8c\xd6\x98\xf1\x41\xbc\xaa\xd0\x34\x9e\x68\x5d\x87\x9f\x0b\xf8\xf3\xdc\x05\x38\x72\x83\x95\x78\xaf\xaa\xa6\x02\xdd\x54\x29\x5a\x36\x64\x55\xa1\x03\x5f\x08\x0f\x02\x2c\xfe\xd6\xa0\xf3\xb0\x57\x65\x09\x29\x82\x45\x6f\x55\xb4\xb3\x5c\xa8\xb2\xb1\x41\x68\x23\x46\x0f\x29\xfa\x3d\xa2\x8e\x60\xc4\xe0\xb2\x34\x7b\x07\x42\x03\xbe\xaf\x8d\x0e\x8c\x67\x1f\x6a\xf2\x1c\x9c\x17\xd6\x33\x57\x3d\xfc\x04\x0e\xc9\xb7\x07\x9d\x69\x6a\x62\xd5\x29\x54\x4a\x37\x9e\x78\xf4\x4a\xbc\xbf\x0b\x48\x17\x70\x3a\x6f\x9d\xb8\xcb\x0a\x94\x4d\x49\xea\xe7\x7a\x07\x40\x1c\x7e\xc5\x61\xe0\x7e\x70\x99\x26\xab\x76\x45\xeb\xc1\xf6\x60\xf2\xe8\xf4\x6c\xa3\x41\x0c\x71\x7a\xb4\x9d\x03\x69\x17\xde\x09\x0a\x25\xa7\xae\x5b\x5e\x09\x7d\x00\x2f\xdc\x96\xa5\xdb\xae\x26\x7b\x30\x1a\x1f\xc7\x71\x59\x34\x7a\xcb\xe7\x68\x91\x94\x46\x6f\x68\xf9\x5e\x28\xdf\x71\xb1\xa9\xa5\xf0\xe8\x20\xc5\xdc\x58\x12\x95\xdd\x06\x15\xd4\x46\x22\x48\x14\xac\x83\xaf\x8d\xc4\xa5\xd2\x9b\x4e\xbe\xa7\xd5\xe3\x68\x89\x35\x71\x2d\x7b\x78\x61\xfd\xf8\x3e\x6e\x62\xdd\x03\xec\x37\x5a\xf9\x0e\xfb\x4f\x55\x92\xd0\xe0\xa2\x55\xff\x18\x45\x22\xe6\x9b\xab\x4e\x57\x44\xe3\x4d\x25\xc8\xa6\xca\xf2\x00\x1b\xd4\xc4\x09\x64\xac\x37\x57\x21\x98\x44\x14\xdd\xae\x85\xa0\xd3\xa2\x06\x25\x4b\x64\x82\xe9\x04\x48\x22\x15\x9a\xc1\xa2\x42\x8f\x41\x45\xa5\x74\x45\xe3\x41\x9a\xbd\x0e\x6a\x38\x39\x85\x0a\x85\x26\x05\x46\x8b\xa4\x16\xda\x74\x56\x00\xf3\x76\x32\x0c\x80\xaa\xd8\x03\x79\x2c\x0f\x20\x72\x8f\x41\x77\x72\x65\x9d\x67\x91\x1e\xd9\xcd\xe4\x34\xda\xcd\x39\x73\x25\x6c\x7f\x7c\x48\x6f\x0f\xc4\x5b\x89\x1e\x33\x0f\x7b\xb2\x21\x8b\xce\x34\x36\xc3\x10\x62\x45\x97\x47\x78\x03\xca\x07\x9a\xaf\x30\x57\x9a\xb8\x7f\xd7\xc1\xaa\x70\x5a\xde\x27\x78\x81\x26\xa8\x11\x98\x1d\x5a\x4a\x77\x5c\x08\xe6\x29\x16\x62\xa7\x0c\x47\xdb\x6e\x39\xc9\x86\x7d\xdd\xf2\x8d\xeb\xb7\x9c\xb6\xa3\x75\xe3\x16\xc0\xee\x90\x1d\xe9\xf9\xab\x1e\x66\xcc\x7e\xfc\xa2\x05\xbd\x13\xd5\xf3\x74\x01\xf3\x69\x07\x7d\xa5\xdc\x16\x5c\x2d\x32\xfc\xec\x22\x02\x19\xac\x1a\xc1\xcf\x2c\xc7\xfd\x84\x13\x17\xf0\x0d\x9d\x75\xfa\xd0\xfc\xdc\x41\x67\xb0\x57\xbe\x78\x3c\x97\x78\xc3\xd6\x10\xcc\xef\x27\x97\x24\x6f\x8d\xdd\xb6\x66\x4c\xe9\x89\x83\xcc\x22\x29\x18\xc8\xc6\x12\x37\x6b\x6b\xc8\xe7\xd2\xcf\x56\x25\xdb\x0c\x87\xd9\xab\x1c\x48\x65\x31\xf3\xc6\x1e\x68\x03\x42\x78\xa5\xec\x02\xa6\xb3\xe0\x62\x27\x7b\x63\xb7\x13\xa9\xec\x5f\x75\x8c\xda\x94\x25\xab\x6e\x26\x74\x46\x27\x50\x1b\x2d\x4a\xf2\x17\x4b\x53\x96\x4a\x6f\xfa\x23\xfc\x35\xcc\x41\x2d\x29\x2b\x33\x8d\x9f\xa1\xb5\xac\x9d\x94\xb9\x75\x4e\x22\x46\x96\x07\x6c\x1b\xc1\x0a\xbd\x0f\xb6\xad\x18\x6c\x1e\xd8\x61\xd1\x35\xa5\x8f\x9a\xe6\x48\xeb\xb1\x94\xa4\x50\x04\x1b\xb0\x4a\x72\x87\x4a\x6f\xca\x60\x77\x8c\xad\x37\x13\x7c\x8f\x59\xe3\x8d\x05\x7c\xaf\x3c\x47\x81\x5b\xb3\xb9\x2f\x25\x5a\xf2\x4a\xbc\x87\xf4\x10\x89\xe4\xd4\x81\xf9\x33\x38\x4d\x54\xf7\xf6\x50\x11\xd7\x5a\xa8\x72\xa5\x3e\x90\xbb\x9d\xcf\xe7\x73\x18\xc1\xe9\x1c\x5e\x5e\x04\xa4\xaf\x8d\xad\x82\xcd\x51\x96\xc8\xba\x00\x12\x4b\xa4\x6d\x94\x77\x3c\x44\x27\xe9\x44\x1c\x29\x0f\x54\x77\x4c\x5e\x13\x53\x4c\xcd\xa6\x25\x43\xe6\x11\x83\xdf\xd0\xb2\x6e\x51\xec\xb0\xd3\x8f\x5c\x94\x0e\x03\x15\xb7\xaa\x52\x3e\xf8\xaf\x2e\x80\x66\x46\x67\x8d\xb5\x94\xef\x90\x5f\x2a\x8d\x90\x6e\xd6\xd4\xfc\x3f\x44\xb2\xa5\xb0\xa2\x2c\xb1\x5c\x5b\xa1\x5d\x4e\xc9\x7f\x88\x69\x93\xa7\xfd\x4b\x46\xd0\xd6\x61\x14\x82\xe5\xcc\x58\xe0\x92\x03\x62\xcd\x31\x7b\x21\xb4\x2c\xd1\xba\xa7\xdf\x3a\xb9\x30\xa5\xbf\xba\x58\xc4\x34\x85\x8c\x3a\x28\x68\x57\x76\xc6\xe4\x87\xe6\x1e\x31\xb9\xf8\x3d\xa5\xd2\xf1\x8a\x0b\xa9\x16\xd9\x85\x70\xc8\x45\x87\x37\x14\xf2\x59\x95\xda\x52\x0b\x3c\x0b\x90\xbc\x36\xfd\x68\x41\x8f\x72\xa6\xf3\xb7\x2b\xb0\xb8\x51\x46\xb3\xcb\xa4\x1f\x1c\x8c\xda\xb9\xf3\x90\xa9\x6d\xf1\x00\x37\x57\x09\xc0\x4b\x3c\x1c\xcd\xaf\x30\xb3\xe8\x5b\xb0\x97\x78\xe0\xbc\x93\xc6\x42\x4c\xbb\x0e\xc5\x5e\x3c\xb9\xc5\x5c\xbd\x1f\x92\xaa\xb4\xc4\xf7\xe8\xe0\x19\x29\xfb\x38\xd4\x9c\x6e\xcc\xe1\xcf\x51\x96\x77\x43\xf3\x61\xd9\x11\xd9\x6f\xee\x6e\xdb\x32\x2b\x96\x93\x0e\x85\xcd\x8a\xa1\x87\xbc\xbb\x5d\x40\xe1\x7d\xbd\x98\xcd\x06\xa9\xef\x0f\x73\xce\x97\x9e\x1b\x43\x86\x7c\x59\x9a\x46\xb2\x5e\x04\x4b\x64\x9b\x6b\x85\x32\x4d\xba\x09\xa2\x7f\x69\xcd\xaf\x98\xf9\xee\xf8\xad\x1c\x45\x96\x99\x86\xd2\xf9\x61\x2e\xad\x42\x84\x19\xc1\x2f\x6c\x4d\xa2\xe4\x1a\xb3\x36\xce\x29\x8e\x11\x43\xe0\xc7\x53\x04\xa9\x5c\x46\xe1\x0d\x25\xe3\xc9\xad\xa9\xc2\x79\xf5\x4e\x59\xa3\x2b\xd4\x1c\x30\x07\x19\x7c\x5f\x96\xbe\xa2\xca\xba\x55\x11\x2a\x00\x1c\x14\x86\xfc\x19\xd7\xf7\xa1\x20\x40\x37\x48\xec\x51\x46\xce\xb1\xe7\xe2\x15\x21\x6c\x4e\x06\xb5\x2a\x87\xb3\x56\x61\x95\x3b\x56\x60\x56\x42\x4e\x3a\x29\x68\x29\x0d\x91\x86\x81\x97\x0b\xce\x98\x56\x70\x65\xd3\x35\x45\x06\x72\x5d\xb7\xa9\x48\x24\xb5\x62\xce\xc6\x3c\xfc\x5e\xee\x16\xcb\x11\x4a\x55\xb9\xc2\x92\xb0\x2f\x50\x07\x66\x71\xce\xd2\x66\xfe\x94\x25\x6a\x09\x5c\xc9\x50\x06\x4e\xf9\x34\x55\x24\x9c\x42\x74\xd9\x85\xa3\xe8\x68\x34\xc9\x29\x14\x6a\x3d\x29\x1f\xd0\x9a\x71\x28\x55\x44\x59\x42\x25\x0e\x90\x96\x26\xdb\x12\x21\x48\x34\x10\x55\xb4\x4d\x20\xac\xaf\x38\xda\x8a\x2f\x45\x40\x47\xd6\xa8\x5c\x11\x72\xbe\x61\x06\xd9\x16\x33\xcc\x42\xa2\xb4\x2d\x64\xb8\x71\x61\x83\xd8\xb3\x7b\x95\x1a\x8d\x29\xad\xb8\x82\x38\xae\xd7\x18\x9f\xa4\x74\xdb\xe8\x63\x19\x49\x4a\xad\x50\x52\xc1\x49\xe3\x57\xbd\xf3\xc1\x92\xa9\x6a\xa9\x88\x3a\xde\x17\x54\xa4\x54\x2f\x45\xbe\x15\x8b\xae\xae\xec\x14\x84\x41\xd7\xa6\x56\x59\x27\xca\x6f\xe1\xbc\x63\xe3\x0a\x2e\x62\xcb\xe9\x1b\x78\xe9\x17\xeb\x4b\xee\xa7\x05\xbb\x59\x37\x56\x03\x15\x66\xec\x14\x9c\x17\x9e\x2a\x3e\x8a\x67\xaa\x44\x3b\x85\xb7\x05\x6a\x40\x4d\xae\x55\x8e\xdb\x54\xa3\x6f\xb5\xa0\xeb\xd3\xb7\x17\xcb\x4b\x46\xd9\x57\x53\xde\x40\xae\xb4\x6c\x4b\x25\xae\x2f\x2d\x82\xf3\x4d\xb6\x25\x8d\x14\xf0\x5b\x83\x0d\x99\x25\xef\x4b\x79\x85\xb5\xc6\x52\x12\xa2\x65\x2c\x0a\x63\xaa\xd3\xa6\x0a\x01\x92\xbc\x91\x95\x94\xa6\x1c\x06\xfd\x83\xbb\x8e\xee\xd8\x40\x08\x2d\x9f\x38\x48\x09\x0a\xe9\x79\xd1\xe7\x58\xc5\x83\x56\x24\x7f\x0b\x8b\x2e\x6c\xc4\x76\x13\x0e\xfd\xaf\xae\x6b\x57\x46\x7d\xf7\x85\x71\xc4\xac\xda\x58\xdf\xeb\x5b\x0f\x74\xb4\x33\x85\x7b\x32\x82\x35\x56\x75\x29\x3c\x76\x6e\xac\x1f\x5a\xc0\xff\xb2\xb2\x35\x5a\x91\xe6\x21\x9c\xc1\x4e\x68\x55\x96\x82\x87\x37\xe8\x51\xef\xe0\x0c\xd6\xe1\x68\x10\xf3\x1a\x2e\x2d\xce\xe0\xe3\xc7\xe9\x75\xf7\xfd\xe9\x13\x03\x08\xbb\x69\xc8\x85\x3a\x38\x6b\xf3\x25\x2a\x78\x27\x93\xd8\x8c\xf8\xf8\x71\x7a\xc9\xbf\x3e\x7d\x82\xc9\x84\xf8\x3b\x51\x92\x46\xd7\xc2\x6d\x6f\x64\xc4\x42\x29\x27\xe3\x8f\xd9\xd0\xa7\x4f\xb3\xd0\x91\x9d\x70\x24\x9b\x94\x66\x13\xc8\x21\xd9\xdd\x87\x8c\x31\x3e\x34\x17\x19\xcc\x70\x77\xf1\xf3\x70\xa6\xf1\x0c\xe7\x0a\xd3\x94\xf2\x9d\x8f\x09\xd3\xbb\x9c\x13\xfe\x33\xf8\x9f\xeb\x15\xcf\x93\x1f\x7c\xe7\x4d\x0f\xd0\x21\xfe\xe5\xf5\xbb\xeb\xff\xbe\x59\xbf\xfb\xe5\xee\xdd\xf5\x7f\xdd\x5c\xae\x19\xfc\xe3\x47\x95\x83\x46\x98\x52\x2d\x04\x73\x98\xc4\xd3\x7d\xfc\x58\x5b\xa5\x7d\x0e\x27\xb1\xf1\xf1\x2e\x23\x80\x33\xf8\x93\x3c\x09\xc0\x1d\xe0\x04\x50\xcb\xee\x2b\xa2\xe3\x7a\x89\x0a\x9f\xdf\xc1\x58\x61\x45\xd9\xe8\x19\xfc\x69\x3a\xcf\xe1\xf9\xc5\x49\x5c\xf6\xfb\x98\x43\x51\xf5\x05\xd4\x92\x8a\xb3\x21\xe2\xb0\xea\x01\x66\xfe\x64\x6b\x4b\x92\xe5\xc5\xea\x9f\xc6\xff\x07\x35\xfe\xd1\xbf\xa4\x4a\xcf\x52\xe1\x8a\xf0\xb9\xbc\x58\xc1\xe4\xf5\x03\x9b\x0c\xe3\xe6\x4b\x36\x14\xc0\xf0\x4b\x26\xf9\x65\xdb\x08\x88\xca\x90\xb3\x9e\x9d\x2e\xea\x5a\x9f\x3d\x81\x81\xb4\x68\x2b\xac\xce\x48\x85\x37\xe9\x13\x98\x46\x8b\x94\x1c\x46\x8f\xf5\xf7\xec\xe2\x9e\xef\xfc\x4a\x5f\x79\x73\x75\x24\x96\xe4\xb9\x55\xf2\x9a\xaf\xa4\x16\x7f\x9b\xac\xbf\x7b\x54\xd2\xdf\x7d\x8d\x9c\xbf\xfb\x0a\x29\x13\x50\x27\xc1\xaf\x95\xfb\x77\x30\xa9\x11\xaa\x5a\x3d\x85\x3f\x0c\x14\x14\xef\x76\xad\xbc\x9f\x3f\x85\xb8\x23\xd2\xdc\xa9\x0f\xd8\x61\xfd\xf6\xe2\x5e\x95\x8d\xad\xfe\xe9\x47\xff\xb0\x7e\x74\x76\x6c\x5c\xab\x8b\xf3\xf5\xe5\x0b\x98\x4c\x7e\x35\xe9\x84\x8b\x90\x07\x96\xd6\x81\xe8\xc0\xeb\xd3\x7b\xc3\x21\xc1\xf9\x92\x95\x75\xe0\x31\x1f\xf9\x82\xe9\x7e\x85\x0d\x76\x18\x29\x33\x99\xd4\x68\x59\x1f\x9f\xc4\x20\x3b\xd4\x15\x56\x9c\x44\x3c\x49\x72\xd2\xa3\xf5\x55\xdd\xa3\xfd\xf6\x36\xc9\xed\x9a\x0b\xe1\xb3\x02\x24\xba\xcc\xaa\x34\xaa\xfd\x71\x43\xbd\x2d\x2d\xcf\xdf\xae\x20\x40\x3f\xb8\x34\x6a\xf1\x3c\xa9\x81\x77\xfb\xb5\xda\x7f\xdf\xb0\x35\x17\xda\x7c\x4f\x13\xec\xb7\xb7\xdd\x3f\xbc\xdd\x0e\x0f\xf7\xa8\xd5\x8e\xe0\x3f\x4c\x1a\x2e\x3e\x58\x0a\x99\xd0\xdc\x33\x50\xbe\x40\xbe\xa6\xe2\x67\x05\x51\x32\x95\xf8\x60\x74\x77\xbd\x01\xaf\x69\xee\xd9\xf9\xdd\xeb\xef\xe9\xc8\x47\x78\x16\x70\x12\xad\x8a\x2c\x5b\x62\x7e\xd2\xee\xf5\x9f\xe4\x17\xff\xbe\x6d\x18\xc5\xf1\x0e\xec\x6d\x4f\xee\xf5\x15\xdb\x3e\x9d\xab\x31\x53\xb9\x42\x09\xbf\x9a\x34\x38\xe6\xf0\xae\xc1\xc4\xab\x0a\x86\xa2\x39\xd9\x33\x42\x3d\x68\x4b\xf6\x0d\xc8\x61\x9b\x71\x04\x2f\x9b\x14\xad\xe6\x86\xf7\xd7\xe8\xf7\x00\xfc\x81\x82\xf7\x73\x8b\xee\x66\xb8\x6b\xef\x73\x8b\xcb\x9b\x38\x10\xa2\x86\x9b\x0e\x9e\xc4\xb4\x90\x6e\x01\xd2\x64\x5b\xb4\x63\xd8\x76\x08\x13\x80\xeb\x38\xbf\x80\x93\x30\x7f\x02\x4f\x69\x48\x2f\x87\x7b\x3d\x6a\x49\xff\xe8\x21\xf2\x48\x57\x48\xad\xc3\x05\x9e\x37\xe0\x6a\xb1\xd7\xa4\x82\x2e\x36\x31\x13\xe8\x01\xba\xbe\xef\x2b\xe1\xc2\x93\x28\xf2\x8e\xa4\xaf\x3e\x06\xd8\x29\xac\x10\x43\xcf\xd9\x2d\x66\xb3\x5e\xea\x53\x65\x66\xd2\x64\x6e\x66\x31\x47\x8b\x3a\xc3\x59\x77\x01\x3c\x00\x9b\x88\x5a\xcd\x76\xa7\xd3\xd3\x7f\x9b\x8d\xc8\x9c\x76\xa7\xf1\xcd\xd6\x30\x86\x47\x22\x86\x71\xbe\xed\x96\xd6\x83\x8b\x85\x2a\x10\x79\x44\xde\x63\xe9\x41\x78\x05\x72\x7c\xa7\x9a\xdf\xb7\x90\x56\xa5\xa7\x49\xeb\x3f\x3a\xa4\xfd\x3b\x83\xee\x2a\xa9\xd3\x14\xee\x25\xb7\xea\xfe\xe0\x04\xf7\x27\x3e\x77\x92\xce\xf2\x86\xe7\x78\x6c\x71\xf4\x04\x4f\xdd\x15\x1c\xc1\xca\x1b\x2b\x36\xf8\x0d\x1a\x8e\xa3\xbf\xe3\x52\xe0\x73\x57\x02\xc9\x08\x6e\x4d\x26\x42\x91\x07\xee\xe0\x3c\x56\xd3\x84\x87\xe2\x41\x82\x57\x7b\x5b\x28\x8f\xa5\x72\xdc\x5e\xe7\x26\xff\xe0\x76\x90\x04\xe0\x60\x5f\xa8\xac\x68\x5d\x8d\x72\x20\xca\xd2\xec\x83\xfb\x0b\x2f\x78\xf8\xb2\x20\x0c\x5e\xa9\xbe\x23\x3c\x9d\x11\x15\x2f\xd6\xeb\x65\xdc\xb1\x7b\x90\xe2\x4d\x77\x0b\x08\x75\x93\x96\x2a\x83\xd0\xbc\x8a\xad\xea\x3d\xa6\xb0\x53\x02\x04\x3c\xbf\x5e\xb7\xef\x6d\xa6\xc9\x00\xd5\xe2\xe8\x9e\x80\x14\x8f\xec\xed\x99\xfb\x7e\xb8\xc2\x1d\xb5\xd8\x7f\x9c\xbb\x24\x09\xf1\x6c\xf5\xe3\xa2\x77\x56\xb2\xbd\xbc\x7c\xe2\xe7\x3f\xf7\x5e\xe7\x3c\xd5\x55\x5a\x6f\xa7\xc8\x37\x2a\xc4\xd7\xf6\xfd\x25\xd3\xb0\xfa\x11\x6a\x6b\x76\x4a\xa2\x75\xe0\x9a\xac\x00\xe1\xe0\x95\xd2\xca\xb4\xf7\x9d\x97\x58\x17\xc9\x08\x9e\x93\xf3\x51\x19\x31\x23\x3c\x84\xeb\x19\xc2\x4e\x3b\xbc\x84\xbb\xd6\xb2\x36\x4a\x87\xdd\xc3\x50\x4b\x72\xf8\x1a\x12\x17\xee\xd3\x06\x32\x7a\x8c\xc7\x7f\xe0\x1b\xb3\xd5\x5e\xe5\xfe\x71\xba\xdf\x38\xb4\xaf\x3f\x73\x29\x02\x70\xde\xf8\x82\xaf\x1a\x63\xad\xa5\x85\xf6\x03\xe8\x30\x10\x5f\xf8\xb4\xa9\xcc\x60\x7e\x04\x3f\xcd\xe7\xf0\xea\x82\xe8\x2a\x1a\xbd\x5d\xa9\x0f\x78\x71\xa0\xd4\x83\x26\xc2\x5f\x92\xfc\x7c\xa4\xfe\x0f\x49\xec\x5f\x3b\xcd\x5d\xa4\x78\x01\x27\x42\x1b\x7d\xa8\x4c\xe3\xee\x91\x3d\x18\xff\xbf\x00\x00\x00\xff\xff\xb2\x17\xf6\x13\x17\x2d\x00\x00") + +func configDefaultConfigYamlBytes() ([]byte, error) { + return bindataRead( + _configDefaultConfigYaml, + "config/default-config.yaml", + ) +} + +func configDefaultConfigYaml() (*asset, error) { + bytes, err := configDefaultConfigYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "config/default-config.yaml", size: 11543, mode: os.FileMode(436), modTime: time.Unix(1702316879, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var _configGridengineTemplateTxt = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x90\xcd\x4a\xc4\x30\x14\x85\xf7\x79\x8a\x6b\xc7\x59\x26\xed\x0b\xb8\xb2\x30\xb8\x71\x21\x82\x4b\x69\xc9\x0d\x13\x32\xf9\xe1\x26\x51\x30\xe4\xdd\xa5\x69\x11\x0a\x75\x76\x97\xc3\x77\x3e\xb8\xe7\xf4\xd0\xcf\xda\xf5\xf3\x14\xaf\xec\xf4\x08\xfc\x15\x4a\x11\xef\x53\x34\x2f\xb2\xd6\x96\xf8\x25\xf9\xf0\x64\x46\x4d\xb5\xf6\x2a\x3b\x87\x37\x1e\x93\xf4\x39\x35\x00\xff\x03\x90\x88\x95\xa2\x15\x38\x04\xf1\x1c\x72\x84\x01\x78\xad\xac\x94\x40\xda\x25\x05\xdd\x52\x0f\x08\x36\x68\x38\xcb\x6e\x85\x1a\xc0\x01\x9d\x6c\xd7\x56\x7f\x9b\xec\x65\x86\x41\x1c\x19\x6e\x70\xfd\xfc\xb2\x68\x9f\xce\x62\x50\x97\x6e\x83\x8f\x3d\xa3\x8e\xe6\xae\x48\x45\xfd\x83\x7f\xa6\x15\xdf\xa9\xd8\xfa\x20\x7c\x7b\x32\x48\x40\xd9\x01\xe7\x69\x59\x6c\xdc\x6d\xf7\x1b\x00\x00\xff\xff\xcf\x92\x30\x7f\x5a\x01\x00\x00") func configGridengineTemplateTxtBytes() ([]byte, error) { @@ -97,107 +118,107 @@ func configGridengineTemplateTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/gridengine-template.txt", size: 346, mode: os.FileMode(420), modTime: time.Unix(1548721562, 0)} + info := bindataFileInfo{name: "config/gridengine-template.txt", size: 346, mode: os.FileMode(436), modTime: time.Unix(1701431150, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _configPbsTemplateTxt = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\xd0\xc1\x4a\xc4\x30\x10\xc6\xf1\x7b\x9f\x62\xec\xb2\xc7\xb4\xf5\x2a\xf4\xa2\x05\xf1\x22\xa2\x82\xe7\x86\x4c\x34\xa4\x9d\x84\x49\x82\x87\x90\x77\x97\xdd\x04\x64\xc1\xf5\x16\x86\x3f\x3f\xc8\x77\xb8\x19\xa5\xa1\x51\xae\xe1\xab\x3b\xbc\xdc\xbf\x81\x78\x86\x9c\x87\xf7\x35\xd8\x27\x55\x4a\xbb\xb9\xd3\xed\xc3\xb1\x5d\x0c\x97\x32\xea\x44\x84\x9b\x08\x51\xb9\x14\x5b\x82\xd7\x12\x64\xee\x72\x36\x1a\x08\x61\x78\xf0\x29\xc0\x04\xa2\x94\x2e\x67\xcf\x86\xa2\x86\xbe\x02\x1b\x90\x53\x18\xe6\xdb\x3b\xef\x69\x3e\xaa\xbe\xd6\xe7\x52\x00\x92\x3a\xbf\x9a\xf3\xba\xee\x8f\x12\xa6\xe1\x1a\xb5\xe3\x3e\x1f\x87\x49\x7f\xca\xbe\xc5\x7f\x3b\x8b\x09\xf6\x5f\x48\x9b\x0d\x7f\xa5\x9a\x5f\x50\x5d\xfd\x29\x7c\x3b\xb6\xc8\xc0\x89\x40\x88\x78\x9a\x6f\xb9\x18\xf2\x27\x00\x00\xff\xff\x94\x91\x42\x0b\x69\x01\x00\x00") +var _configHtcondorTemplateTxt = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x8e\xcd\x6e\xea\x30\x10\x85\xf7\x7e\x8a\x11\xd2\x5d\x26\x97\x17\xc8\xa6\x80\x10\x9b\x22\xd1\xa8\x3f\x2b\xcb\xe0\x49\xb0\xe2\x8c\x61\xec\x09\xad\xa2\xbc\x7b\x15\x40\xad\xa8\x4a\x77\x47\x3e\xdf\xf9\x3c\x42\xae\x43\x8e\x08\x05\x74\x86\x9c\xf7\x46\xd5\x98\x90\x3a\x28\xa0\x64\x41\x85\xef\xb8\x93\x64\xb6\x7e\x44\x2a\x21\x42\xaf\x0c\xd7\xd2\x22\xa5\x08\x05\x9c\x02\x37\xc8\xc0\x42\x90\x65\xc9\xc4\x66\x35\x87\xbe\xcf\xcb\x31\xd9\x61\x50\x3e\xd4\x50\x8c\x2f\x2f\x81\x9b\xb9\xe3\x61\xf8\xbf\x0b\x64\x03\x67\xd8\x21\xa5\xcc\x87\x5a\x21\x73\xe0\x9f\xd4\xe5\xaf\x2c\x26\x8b\xcc\x2a\x48\x3a\x48\xba\xcf\x04\x49\x2a\xee\x83\x78\xab\x13\x1b\x8a\x15\xb2\xae\x9c\xc7\xf1\xc4\xb7\xc5\x93\x3a\xed\x91\x74\x0a\xdf\xe5\x97\x70\xfd\xa8\x17\xaf\xab\x52\xaf\x37\x7a\xf1\xbc\x9a\x95\xaa\xef\x5d\x05\x84\x90\xcf\x0e\x12\x61\x0a\xd9\x30\xa8\xbe\x3f\xb0\xa3\x54\xc1\x84\xf1\x28\x18\x93\xde\x8d\x65\x01\xff\xec\xe4\x02\x9e\xa1\x0c\x90\xec\x39\x5d\x15\x1b\xd3\x2e\xb7\x30\xcd\xef\x59\x5a\x6c\x03\x7f\x8c\x9e\x7c\x5a\xc1\xf2\x61\x72\x9d\xfc\x6e\x9b\xbb\xd8\xfc\xa9\xb3\x2e\x36\x37\xb2\xcb\xe2\xc6\xa6\x8e\x82\x82\xea\x33\x00\x00\xff\xff\x61\xe0\x01\xde\xf9\x01\x00\x00") -func configPbsTemplateTxtBytes() ([]byte, error) { +func configHtcondorTemplateTxtBytes() ([]byte, error) { return bindataRead( - _configPbsTemplateTxt, - "config/pbs-template.txt", + _configHtcondorTemplateTxt, + "config/htcondor-template.txt", ) } -func configPbsTemplateTxt() (*asset, error) { - bytes, err := configPbsTemplateTxtBytes() +func configHtcondorTemplateTxt() (*asset, error) { + bytes, err := configHtcondorTemplateTxtBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "config/pbs-template.txt", size: 361, mode: os.FileMode(420), modTime: time.Unix(1548721562, 0)} + info := bindataFileInfo{name: "config/htcondor-template.txt", size: 505, mode: os.FileMode(436), modTime: time.Unix(1701431150, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _configSlurmTemplateTxt = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x90\xc1\x6a\xc3\x30\x0c\x86\xef\x79\x0a\x2d\xa5\x47\x27\xd9\x23\xac\x0d\x74\xbb\x6e\x85\x9d\x9d\x45\x61\x9e\x67\xd9\x48\x36\x3b\x18\xbf\xfb\x48\x53\x68\x0a\x0b\xbb\x19\xeb\xfb\x3f\xa4\x7f\xf7\xd0\x0e\x86\xda\x41\xcb\x67\xb5\x7b\x3b\x3c\x9d\x8f\xcf\xa0\xd4\x97\x1f\x14\x69\x87\x90\x73\x73\xd6\x62\x5f\xc6\x52\x56\x63\x8a\x5a\xac\xc0\xe3\xea\x0b\x99\x3d\xcf\xf8\xbb\x67\xdb\x1b\x2e\xa5\x9d\x12\x11\x7e\x2b\x89\x23\x32\xaf\x50\x9f\x62\x48\x71\x8b\xf5\x29\x56\x39\x9b\x09\x08\xa1\x39\x86\x24\xd0\x81\x2a\xa5\xca\x39\xb0\xa1\x38\x41\x7d\x33\x7d\x84\x24\x2a\x20\xab\x79\x1f\xd8\x8f\xf5\x92\xb8\xd0\x0a\x90\xc6\xcb\xeb\xea\x7a\xd5\xee\x34\x40\xd7\x6c\xeb\x1c\x3a\xd8\x37\xdd\x74\x3a\xd4\x57\xfc\x6f\x53\x6f\xc4\xfe\xa3\x8a\x2e\xdc\x54\x0b\x7f\xe7\xaa\x96\x83\xe1\xc7\xb3\x45\x06\x4e\x34\x87\xe6\xa6\xfb\xbb\xce\x7f\x03\x00\x00\xff\xff\x71\x9e\x5b\xbd\x9f\x01\x00\x00") +var _configKubernetesExecutorTemplateYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x54\x4d\x6f\xda\x40\x10\xbd\xfb\x57\x8c\x4c\x7a\x8b\x8d\xb9\xf4\x60\xa9\x87\x08\x2a\x42\xd4\x10\xd4\xa2\xf4\x50\xf5\xb0\x5e\xc6\xb0\xf5\x7e\x75\x67\x4d\x8a\x2c\xfe\x7b\xb5\xb6\xb1\x4c\xaa\x26\x7b\x1a\xcf\x9b\x79\x6f\xde\x68\x64\x66\xc5\x33\x3a\x12\x46\xe7\x50\x30\xcf\x0f\xd3\xe3\x2c\xaa\x84\xde\xe5\xf0\x60\x8a\x48\xa1\x67\x3b\xe6\x59\x1e\x01\x68\xa6\x30\x87\xa6\x49\xb7\x8c\xaa\xd5\xee\x7c\x4e\x9a\x26\x7d\x30\x45\x08\x7b\x98\x2c\xe3\x5d\xcd\xfa\xf2\xd5\x62\x92\x15\x28\x29\x90\x00\xfc\x32\x45\xf2\x26\x15\x59\xe4\x39\x44\x00\x05\xe3\x95\x29\xcb\x2f\x42\x09\x9f\x43\x16\x01\x70\xa3\xac\x44\x2f\x8c\xa6\x1c\x66\x11\x80\x47\x65\x25\xf3\xd8\x51\xb7\x9d\x6d\x04\xe0\x90\x3c\x73\x7e\x63\xa4\xe0\xa7\x1c\xd6\x78\x44\xd7\x43\xdc\x68\xcf\x84\x46\x47\xad\x4c\x78\x49\xef\xae\xac\xb5\x46\x99\xbc\x18\x57\xa1\x4b\x46\x03\xf6\x75\x00\x42\xb1\x7d\x37\xfb\x2a\x44\xaf\x91\x4d\x2d\xe5\x45\xf3\x4e\xbe\xb0\x13\x0d\x38\x37\x4a\xb1\xb0\xd8\x1f\xf1\xb4\x10\x7a\x4a\x87\xf8\x16\xe2\x84\xc7\x3f\x87\x12\xe6\xf6\xd4\x72\xcf\xbb\xda\x11\x7b\x18\x49\xe8\xfd\x42\xb8\xb6\xe0\xbb\x71\xd5\x4e\xb8\x51\x81\x43\x32\xb5\xe3\x48\xf9\x90\x0a\xc9\xdf\x35\x92\xbf\xca\x01\x70\x5b\x07\x12\x51\x82\x46\x48\xe7\xb6\x26\xc8\x20\x39\x9f\x83\xb0\xad\x29\x04\x80\x92\x10\x42\x14\xcf\xb2\x4c\xc5\x21\xc2\xab\x81\xc2\x53\xa8\x8c\x3b\x8d\xb8\xbe\x32\xb5\x2c\x20\x4b\x7b\x3a\xeb\x84\xf6\x25\xc4\x1f\xd2\xac\x5c\xc6\x3d\xdc\x52\x49\xc2\x8e\xfc\xe3\xe3\x7f\xb8\xd1\x1e\x50\xa1\x63\x32\x21\x6f\x5c\xbf\xf4\x5e\x66\x21\xa8\x7a\x4b\xa7\xc3\xaf\x85\xb2\x6c\xac\x34\x48\x1d\x8d\xac\x15\x3e\x9a\x5a\x8f\xb7\x34\x99\x4c\x60\xf1\x04\xeb\xa7\x2d\xcc\xef\xef\xd6\xcb\xcf\xb0\xbd\x5f\x7d\x1b\xe0\xa6\x71\x4c\xef\x11\x6e\xc4\xee\xcf\x2d\xdc\x08\x8f\x0a\xf2\x4f\x90\x3e\xb7\x64\x34\x72\x72\x39\xac\xde\x03\x8c\x2c\xaa\xa0\xb9\x61\xfe\x10\x8c\xb5\x1c\xe9\xfc\x72\x99\x21\x7d\xb5\x0f\xaa\x8b\xa1\x74\x38\xca\xf7\xda\x5e\x99\xed\xac\xfe\x7b\xf4\xfd\x6c\x43\x9b\x0d\x3f\x04\xf2\xa8\x7d\xe7\x67\x2e\x99\x50\xe3\x0b\xe2\x21\xb1\x1e\xf7\x26\xf6\xc8\xe1\x6f\x00\x00\x00\xff\xff\x1a\xb2\xe9\x0d\x4c\x04\x00\x00") -func configSlurmTemplateTxtBytes() ([]byte, error) { +func configKubernetesExecutorTemplateYamlBytes() ([]byte, error) { return bindataRead( - _configSlurmTemplateTxt, - "config/slurm-template.txt", + _configKubernetesExecutorTemplateYaml, + "config/kubernetes-executor-template.yaml", ) } -func configSlurmTemplateTxt() (*asset, error) { - bytes, err := configSlurmTemplateTxtBytes() +func configKubernetesExecutorTemplateYaml() (*asset, error) { + bytes, err := configKubernetesExecutorTemplateYamlBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "config/slurm-template.txt", size: 415, mode: os.FileMode(420), modTime: time.Unix(1548721562, 0)} + info := bindataFileInfo{name: "config/kubernetes-executor-template.yaml", size: 1100, mode: os.FileMode(436), modTime: time.Unix(1702337819, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _configDefaultConfigYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\xdb\x38\x92\x7f\xe7\xa7\xe8\xb3\x66\xeb\x32\x55\xfa\xe7\x99\x9a\xbd\x5b\x55\xf9\xc1\x96\x3d\x89\x2f\x4e\x46\x67\x29\x97\xbb\xa7\x14\x48\xb4\x44\x8c\x40\x80\x03\x80\x56\x94\x5c\xbe\xfb\x55\x37\x40\x8a\xb2\x9d\x49\x76\xd7\xa9\x9a\xab\xdd\xbc\xc4\x02\x1b\x8d\x46\xff\xfd\x75\x93\x03\x58\x95\x08\x46\x54\x08\x76\x0d\xa1\x44\x10\x45\x50\x77\x08\x1e\xdd\x1d\x3a\x90\x22\x88\x5c\x78\x84\x5c\x14\x5b\x34\x32\x1b\xc0\xf9\x9d\x50\x5a\xe4\xba\x5b\xf3\x33\xc8\xad\x0e\x32\x1f\x42\x2e\xe4\x06\xdd\x90\xb7\xf9\x60\x1d\x0e\x41\xee\x8d\xa8\x2c\x3d\x44\x2d\x7c\x50\xc5\x10\x2a\x6b\x36\x56\xe6\xd9\x65\x62\xde\xee\xcf\xb2\xcf\x8a\x53\xd8\xaa\x6e\xc2\x97\xc4\xd0\xb6\x10\x7a\x08\x65\x28\xac\x91\xd6\x0d\xc1\xeb\xc6\x55\x43\xa8\x73\x3f\x84\x8d\x53\x12\xcd\x46\x19\x1c\x42\x25\x4c\x43\x94\x62\xe7\x47\xb9\x08\x45\x99\xcd\xe3\x01\x89\xc7\xef\x48\x82\x77\x68\x02\xec\x9c\x0a\xe8\xda\xa3\x9f\xf9\xef\xc7\x9f\x15\x69\x33\xfc\xdb\xd4\x33\x84\xad\x58\x6f\x45\x76\x45\x07\xbe\xe5\xf3\xfc\x0c\x32\x80\x51\xab\x2e\xfa\x53\xdb\x4d\x96\xdd\xd8\xcd\x06\xdd\x2c\x03\x18\x00\xfd\xad\xcc\x06\x34\xde\xa1\xf6\x33\x90\x98\x37\x9b\x21\x28\xb3\xb6\x43\x40\xe7\xac\xcb\x00\x6e\xe8\xe1\x8c\x17\x79\x13\xb3\x27\x5e\x1e\x82\x85\x50\x2a\x0f\xb5\x08\xe5\x18\xae\xd7\x80\x55\x1d\xf6\xc3\xf8\x50\x38\xe4\xab\x07\x34\x44\xe8\x83\x44\xe7\xc6\x19\xc0\x2f\x4d\xa8\x9b\xf0\xb3\xd2\x38\x83\x93\x93\x2c\x5b\xb2\xfb\x44\x89\x5e\x58\x1f\xfa\x8a\xfc\xb9\x31\x06\x75\xf2\x30\xda\x4c\x04\xaf\x45\xd5\x2a\xbf\xb4\x3e\x64\xbc\x73\x61\x5d\x80\xc6\xa3\x84\xb5\x75\xf0\x62\xb5\x5a\x90\x23\x54\x8d\x51\x85\x08\xca\x1a\x10\x46\x32\xcb\x1d\xe6\x20\x85\x2f\x73\x2b\x9c\x64\x96\xab\xd5\x82\x76\xcf\xe0\xdf\xa7\xd3\xe9\x63\xdc\x6e\x17\xf3\x63\x66\xb4\xed\x76\x31\x8f\xbb\xfe\x32\xfd\x4b\xda\x75\x8b\xbf\x35\xca\x91\x49\xbd\x2a\x40\x34\xa1\x44\x13\xda\xf3\x89\x11\x9d\x9f\xa2\xe5\x7c\x71\xed\xa1\xf1\xa4\x7e\x01\xb5\xf0\x7e\x67\xa3\x38\x03\x52\x24\x1d\x4d\xae\xb7\x45\xf0\x8d\x43\x52\x60\xed\x6c\x8d\x4e\xef\xc1\xa1\x0f\x4e\x15\x01\x44\x51\xa0\x4f\x56\x20\xb7\x37\x6b\xb5\x81\xb5\xd2\xc8\x5c\x9e\xe1\x78\x33\x86\xa2\xac\xac\x84\x3f\x4f\xa7\xb0\x66\x55\x8e\x23\xd9\x78\x5f\xe9\xef\x99\xec\x82\x64\x3d\x6f\x42\x19\x0d\x40\x7e\xf2\xc6\xa3\x9b\x91\x08\xee\x34\xad\x01\x2c\x92\x84\x33\x10\x79\x71\xfa\xc3\x8f\x8f\x10\xff\xf0\x08\xf1\xda\xda\x5c\xb8\xa8\x9d\x6b\x53\xe8\x46\x22\x08\x38\x99\x8b\xa2\xc4\xd1\xdc\x9a\xe0\xac\x9e\x81\xb1\x23\x76\xf1\x93\x68\xb7\x12\x85\x44\x07\xca\xc0\x73\x0c\x93\x1b\xe5\x03\xdd\xb9\xb6\xc6\xa3\x67\x4e\xac\x8d\x18\x5c\x85\x28\x4a\xd2\x61\xbe\x07\x65\x02\xba\x0a\xa5\x12\x6e\xcf\x5a\x56\x05\x7a\xd2\xe8\xa5\xf2\x14\x69\xc4\x9b\x0f\x9e\x41\x70\x0d\x66\xd9\xed\x62\x3e\xd7\x0a\x4d\x88\x57\x27\x2b\x27\xe3\x08\x29\x1d\xa9\x36\x03\x88\xde\x79\x1e\x17\x7a\x5e\x37\x3b\x98\x7d\xee\x50\x92\xa1\x85\xf6\x6c\xe5\x8b\xff\x47\xe6\x8f\xe6\x8b\x0f\xa3\xe7\xdf\x37\x34\xaf\x16\xd6\x18\x2c\xf8\x22\x41\x55\x68\x9b\x40\xb2\xae\xe2\x9f\x33\xf8\xf3\xd4\x47\x3a\x4a\x84\x95\x78\xaf\xaa\xa6\x02\xd3\x54\x39\x3a\x8e\x64\x55\xa1\x87\x50\x8a\x00\x02\x1c\xfe\xd6\xa0\x0f\xb0\x53\x5a\x43\x8e\xe0\x30\x38\x95\x02\x6d\x2d\x94\x6e\x5c\xb4\xda\x80\xd9\x43\x8e\x61\x87\x68\x12\x19\x29\x58\x6b\xbb\xf3\x20\x0c\xe0\xfb\xda\x9a\xa8\x78\xce\xa2\x76\xbd\x06\x1f\x84\x0b\xac\xd5\x00\x3f\x81\x47\xca\xee\xd1\x69\x9a\x9a\x54\x75\x0a\x95\x32\x4d\x20\x1d\xbd\x12\xef\x6f\x23\xd3\x19\x9c\x4e\xdb\x34\xee\x8b\x12\x65\xa3\xc9\xff\xfc\x21\x03\x90\x86\x5f\x71\x21\xb8\x5f\x5e\xc6\x90\x2d\xdb\x2d\x6d\x0e\xdb\x81\x5d\xa7\xb4\xe7\x1a\x03\xa2\xcf\x34\xa0\xeb\x52\x48\xbb\xf1\x56\x50\x35\x39\xf5\xdd\xf6\x4a\x98\x3d\x04\xe1\xb7\x6c\xde\x76\x37\x45\x84\x35\xf8\x38\x8f\x79\xd9\x98\x2d\x5f\xa4\x65\xa2\xad\xd9\xd0\xf6\x9d\x50\xa1\x53\x63\x53\x4b\x11\xd0\x43\x8e\x6b\xeb\xc8\x56\x6e\x1b\x7d\xd0\x58\x89\x20\x51\xb0\x13\xbe\xb6\x12\x17\xca\x6c\x3a\x03\x9f\x56\x8f\xb3\x25\xdd\xa4\xbd\x9c\xe3\x85\x0b\xc3\xfb\xbc\x49\x77\x0f\xb8\x5f\x1b\x15\x3a\xee\x3f\x55\x59\x46\x8b\xb3\xd6\xff\x53\x1d\x49\x9c\xaf\x2f\x3b\x67\x11\x4d\xb0\x95\xa0\xa0\xd2\x7a\x0f\x1b\x34\xa4\x09\x64\xae\xd7\x97\xb1\x9c\x24\x16\xdd\xa9\xa5\xa0\xdb\xa2\x01\x25\x35\xb2\xc0\x74\x03\x24\x9b\x0a\xc3\x64\xc9\xa3\x87\xa0\x92\x57\xfa\xb2\x09\x20\xed\xce\x44\x3f\x1c\x9d\x42\x85\xc2\x90\x07\xa3\x43\xf2\x0b\x63\xbb\x30\x80\x69\xfb\x30\x2e\x80\xaa\x38\x07\x05\xd4\x7b\x10\xeb\x80\xd1\x79\xd6\xca\xf9\xc0\x26\x3d\x0a\x9c\xd1\x69\x0a\x9c\x73\xd6\x4a\x3c\xfe\xf8\x92\xc1\xed\x49\xb7\x12\x03\x16\x01\x76\x14\x44\x0e\xbd\x6d\x5c\x81\xb1\xc8\x8a\x0e\x4a\x04\x0b\x2a\x8c\x81\x19\x5e\xe2\x5a\x19\x52\xff\x6d\x47\xac\xe2\x75\xf9\xa0\x98\x07\x9a\xe8\x47\x60\xef\xd0\x11\xe4\xf1\xb1\x9e\xe7\x58\x8a\x3b\x65\xb9\xe0\x76\xdb\xc9\x38\x9c\xed\x16\x6f\xfc\xe1\xcc\x71\xbb\x5a\x37\x7e\x06\x9c\x10\x39\x97\x9e\xbf\x3a\xd0\x0c\x39\x95\x5f\xb4\xa4\xb7\xa2\x7a\x9e\xcf\x60\x3a\xee\xa8\x2f\x95\xdf\x82\xaf\x45\x81\x9f\xdd\x44\x24\xbd\x5d\x03\xf8\x99\x0d\xb9\x1b\x31\x76\x81\xd0\xd0\x5d\xc7\x0f\xe3\xcf\xef\x4d\x01\x3b\x15\xca\xc7\xe1\xc4\x1b\x0e\x87\x18\x7f\x3f\xf9\x2c\x7b\x6b\xdd\xb6\x8d\x63\x42\x28\x1e\x0a\x87\xe4\x61\x20\x1b\x47\xda\xac\x9d\xa5\xac\x4b\x7f\xb6\x3e\xd9\x82\x1c\x56\xaf\xf2\x20\x95\xc3\x22\x58\xb7\xa7\x03\x88\xe1\xa5\x72\x33\x18\x4f\x62\x92\x1d\xed\xac\xdb\x8e\xa4\x72\x7f\xd5\x35\x6a\xab\x35\xfb\x6e\x21\x4c\x41\x37\x50\x1b\x23\x34\x25\x8c\x85\xd5\x5a\x99\xcd\xe1\x0a\x7f\x8d\x72\xd0\x48\x02\x66\xb6\x09\x13\x74\x8e\xdd\x93\xc0\x5b\x97\x25\x52\x6d\x79\xa0\xb6\x01\x2c\x31\x84\x18\xdc\x8a\xc9\xa6\x51\x1d\x0e\x7d\xa3\x43\xf2\x34\x4f\x6e\x8f\x5a\x92\x43\x11\x6d\xe4\x2a\x29\x1f\x2a\xb3\xd1\x31\xf0\x98\xdb\x21\x4e\xf0\x3d\x16\x4d\xb0\x0e\xf0\xbd\x0a\x5c\x07\x6e\xec\xe6\xbe\x95\x68\xcb\x2b\xf1\x1e\xf2\x7d\x12\x92\xd1\x03\xeb\xa7\x77\x9b\xe4\xee\xed\xa5\x12\xaf\x95\x50\x7a\xa9\x3e\x50\xbe\x9d\x4e\xa7\x53\x18\xc0\xe9\x14\x5e\x5e\x44\xa6\xaf\xad\xab\x62\xd0\x11\x50\x64\x5f\x00\x89\x1a\xe9\x18\x15\x3c\x2f\xd1\x4d\x3a\x13\x27\xc9\xa3\xd4\x9d\x92\x57\xa4\x14\x5b\x73\x68\xc9\x08\x3e\x52\xf9\xeb\x47\xd6\x0d\x8a\x3b\xec\xfc\x63\x2d\xb4\xc7\x28\xc5\x8d\xaa\x54\x88\x09\xac\x2b\xa1\x85\x35\x45\xe3\x1c\x41\x1e\x4a\x4c\xda\x0a\xe9\x27\x4d\xcd\xff\xc7\x5a\xb6\x10\x4e\x68\x8d\x7a\xe5\x84\xf1\x6b\x6e\x00\xb8\xaa\x8d\x9e\xf6\x5f\x36\x80\xb6\x17\xa3\x22\x2c\x27\xd6\x01\xb7\x1d\x90\xfa\x8e\xc9\x0b\x61\xa4\x46\xe7\x9f\xfe\xe8\xec\xc2\xea\x70\x79\x31\x4b\x40\x85\x82\x3a\x3a\x68\xd7\x7a\x26\xf8\x43\xcf\x1e\x09\xb9\xf4\x7b\x4c\xed\xe3\x25\x37\x53\x2d\xb3\x0b\xe1\x91\xfb\x8e\x60\xa9\xe8\xb3\x2b\xb5\xed\x16\x04\x36\x20\xa5\x6d\xfa\xa3\x25\x3d\x42\x4d\xe7\x6f\x97\xe0\x70\xa3\xac\xe1\x94\x49\x7f\x70\x35\x6a\x9f\x9d\x47\xac\xb6\xc5\x3d\x5c\x5f\x66\x00\x2f\x71\x7f\xf4\x7c\x89\x85\xc3\xd0\x92\xbd\xc4\x3d\x23\x4f\x5a\x8b\x45\xed\x2a\x36\x7c\xe9\xe6\x0e\xd7\xea\x7d\x5f\x54\x65\x24\xbe\x47\x0f\xcf\xc8\xd9\x87\xb1\xef\xf4\x43\xae\x7f\x9e\x70\xde\x35\x3d\x8f\xdb\x8e\xc4\x7e\x73\x7b\xd3\x76\x5a\xa9\xa5\xf4\x28\x5c\x51\xf6\x33\xe4\xed\xcd\x0c\xca\x10\xea\xd9\x64\xd2\x03\xbf\x3f\x4c\x19\x31\x3d\xb7\x96\x02\x79\xae\x6d\x23\xd9\x2f\x62\x24\x72\xcc\xb5\x46\x19\x67\xdd\x03\x92\x7f\xe1\xec\xaf\x58\x84\xee\xfa\xad\x1d\x45\x51\xd8\x86\x10\x7d\x1f\x4d\xab\x58\x61\x06\xf0\x0b\x47\x93\xd0\xdc\x66\xd6\xd6\x7b\xc5\x35\xa2\x4f\xfc\x38\x46\x90\xca\x17\x54\xde\x50\x32\x9f\xb5\xb3\x55\xbc\xaf\xb9\x53\xce\x9a\x0a\x0d\x43\xd9\x1e\x86\xef\x3a\x53\x80\xec\x15\xf5\xd7\xad\x93\x50\x13\xe0\xa1\xb4\x94\xd1\xb8\xcb\x8f\x4d\x01\xfa\x1e\xb8\x47\x99\x74\xc7\xb9\x8b\x77\xc4\xc2\x39\xea\x35\xac\x5c\xd0\x5a\x97\x55\xfe\xd8\x85\xd9\x0d\x19\x78\x52\xd9\x52\x06\x92\x0c\xbd\x3c\x17\xd3\x31\xed\xe0\xf6\xa6\x1b\x8d\xf4\x2c\xbb\x6a\xd1\x48\x12\xb5\x62\xdd\x26\x2c\x7e\x0f\xbe\xa5\x96\x84\xd0\x2a\xb7\x59\x12\x76\x25\x9a\xa8\x2e\x86\x2d\x2d\xfa\x27\xa0\x68\x24\x70\x37\x43\x28\x9c\x30\x35\x75\x25\x0c\x22\x3a\x7c\xe1\xa9\x3e\x5a\x43\x96\x8a\xdd\xda\x41\x94\x0f\xe8\xec\x30\xb6\x2b\x42\x6b\xa8\xc4\x1e\x72\x6d\x8b\x2d\x09\x82\x24\x03\x49\x45\xc7\x44\xc1\x0e\x5d\x47\xdb\xf6\xe5\x08\xe8\x29\x1e\x95\x2f\x23\xec\xeb\x83\xc8\xb6\xa1\x61\x15\x92\xa4\x6d\x33\xc3\xd3\x0b\x17\x0d\x5f\xdc\xeb\xd6\x68\x4d\x19\xc5\x5d\xc4\x71\xcf\xc6\xfc\x24\x21\x6e\x6b\x8e\x6d\x24\x09\x5c\xa1\xa4\xae\x93\xd6\x2f\x0f\xe9\x07\x35\x4b\xd5\x4a\x91\xfc\xe8\xd0\x54\x51\x30\xbf\x14\xeb\xad\x98\x75\xbd\x65\xe7\x20\x4c\xba\xb2\xb5\x2a\x3a\x53\x7e\x8b\xf4\x9d\xc6\x57\x70\x91\x06\x4f\xdf\x20\x4f\xbf\x58\xcd\x79\xaa\x16\xe3\x66\xd5\x38\x03\xd4\x9c\x71\x5a\xf0\x41\x04\xea\xfa\xa8\xa2\x29\x8d\x6e\x0c\x6f\x4b\x34\x80\x86\x92\xab\x1c\xb6\x60\xe3\x30\x6f\x41\x7f\x00\x70\x2f\x16\x73\x66\x79\x68\xa8\x82\x85\xb5\x32\xb2\xed\x96\xb8\xc7\x74\x08\x3e\x34\xc5\x96\x3c\x52\xc0\x6f\x0d\x36\x14\x96\x7c\x2e\x21\x0b\xe7\xac\x23\x18\x62\x64\x6a\x0c\x13\xd8\x69\xc1\x42\xa4\xa4\x7c\xe4\x24\x01\x95\x7d\x6f\x88\x70\xdb\xc9\x9d\xa6\x08\x71\xee\x93\x16\x09\xa2\x90\x9f\x97\x07\x94\x55\x3e\x18\x48\xf2\x6f\xe1\xd0\xc7\x83\x38\x6e\xe2\xa5\xff\xd5\x77\x43\xcb\xe4\xef\xa1\xb4\x9e\x94\x55\x5b\x17\x0e\xfe\x76\x20\x3a\x3a\x99\x0a\x3e\x05\xc1\x0a\xab\x5a\x8b\x80\xbd\x44\xd6\x2e\xcd\xe0\x7f\xd9\xd9\x1a\xa3\xc8\xf3\x10\xce\xe0\x4e\x18\xa5\xb5\xe0\xe5\x0d\x06\x34\x77\x70\x06\xab\x78\x35\x48\xc8\x86\xbb\x8b\x33\xf8\xf8\x71\x7c\xd5\xfd\xfe\xf4\x89\x09\x84\xdb\x34\x94\x44\x3d\x9c\xb5\x88\x89\x7a\xde\xd1\x28\x0d\x24\x3e\x7e\x1c\xcf\xf9\xaf\x4f\x9f\x60\x34\x22\xfd\x8e\x94\xa4\xd5\x95\xf0\xdb\x6b\x99\xb8\x10\xe8\x64\xfe\x09\x0f\x7d\xfa\x34\x89\x73\xd9\x11\xd7\xb2\x91\xb6\x9b\x28\x0e\xd9\xee\x3e\x65\xaa\xf2\x71\xc2\xc8\x64\x96\x47\x8c\x9f\xa7\xb3\x4d\x60\x3a\x5f\xda\x46\xcb\x77\x21\x41\xa6\x77\x6b\x86\xfc\x67\xf0\x3f\x57\x4b\x7e\x4e\x79\xf0\x5d\xb0\x07\x82\x8e\xf1\x2f\xaf\xdf\x5d\xfd\xf7\xf5\xea\xdd\x2f\xb7\xef\xae\xfe\xeb\x7a\xbe\x62\xf2\x8f\x1f\xd5\x1a\x0c\xc2\x98\xba\x21\x98\xc2\x28\xdd\xee\xe3\xc7\xda\x29\x13\xd6\x70\x92\x86\x1f\xef\x0a\x22\x38\x83\x3f\xc9\x93\x48\xdc\x11\x8e\x00\x8d\xec\x7e\x25\x76\xdc\x31\x51\xeb\xf3\x3b\x1c\x2b\xac\x08\x8f\x9e\xc1\x9f\xc6\xd3\x35\x3c\xbf\x38\x49\xdb\x7e\x9f\x73\x6c\xab\xbe\xc0\x5a\x52\x7b\xd6\x67\x1c\x77\x3d\xe0\xcc\x3f\x39\xda\xb2\x6c\x71\xb1\xfc\x67\xf0\xff\x41\x83\x7f\xf0\x2f\xb9\x32\x93\x5c\xf8\x32\xfe\x5c\x5c\x2c\x61\xf4\xfa\x41\x4c\xc6\x75\xfb\xa5\x18\x8a\x64\xf8\xa5\x90\xfc\x72\x6c\x44\x46\x3a\xa2\xd6\xb3\xd3\x59\x5d\x9b\xb3\x27\x08\x90\x96\x6d\x85\xd5\x19\xb9\xf0\x26\x7f\x82\xd0\x68\x99\x52\xc2\x38\x70\xfd\xbd\xb8\xb8\x97\x3b\xbf\x32\x57\x5e\x5f\x1e\x99\x25\x7b\xee\x94\xbc\xe2\x17\x53\xb3\xbf\xcd\xd6\xdf\x3d\x6a\xe9\xef\xbe\xc6\xce\xdf\x7d\x85\x95\x89\xa8\xb3\xe0\xd7\xda\xfd\x3b\x18\xd5\x08\x55\xad\x9e\x22\x1f\x46\x09\xca\x77\x77\xad\xbd\x9f\x3f\x85\xb9\x13\xd3\xb5\x57\x1f\xb0\xe3\xfa\xed\xcd\xbd\xd4\x8d\xab\xfe\x99\x47\xff\xb0\x79\x74\x72\x1c\x5c\xcb\x8b\xf3\xd5\xfc\x05\x8c\x46\xbf\xda\x7c\xc4\x4d\xc8\x83\x48\xeb\x48\x4c\xd4\xf5\xe9\xbd\xe5\x08\x70\xbe\x14\x65\x1d\x79\xc2\x23\x5f\x08\xdd\xaf\x88\xc1\x8e\x23\x21\x93\x51\x8d\x8e\xfd\xf1\x49\x02\xb2\x63\x5d\x61\xc5\x20\xe2\x49\xc0\xc9\x81\x6d\xa8\xea\x03\xdb\x6f\x1f\x93\x3c\xb0\xb9\x10\xa1\x28\x41\xa2\x2f\x9c\xca\x93\xdb\x1f\x8f\xd4\xdb\xd6\xf2\xfc\xed\x12\x22\xf5\xfd\x17\x47\x59\xcb\xe7\x49\x03\xbc\x3b\xaf\xf5\xfe\xfb\x81\x6d\xb8\xd1\xe6\x57\x35\x31\x7e\x0f\xb1\xfb\x87\x8f\xdb\xfe\xe5\x1e\x8d\xda\x01\xfc\x87\xcd\xe3\xab\x0f\xb6\x42\x21\x0c\xcf\x0c\x54\x28\x91\xdf\x54\xf1\xb7\x05\xc9\x32\x95\xf8\x60\x4d\xf7\x82\x03\x5e\xd3\xb3\x67\xe7\xb7\xaf\xbf\xa7\x2b\x1f\xf1\x99\xc1\x49\x8a\x2a\x8a\x6c\x89\xeb\x93\xf6\xac\xff\xa4\xbc\xf8\xf7\x1d\xc3\x2c\x8e\x4f\xe0\x6c\x7b\x72\x6f\xb2\xd8\x4e\xea\x7c\x8d\x85\x5a\x2b\x94\xf0\xab\xcd\x63\x62\x8e\x1f\x37\xd8\xf4\xb2\x82\xa9\xe8\x99\x3c\x28\x42\x3d\x18\x4c\x1e\x46\x90\xfd\x41\xe3\x00\x5e\x36\x39\x3a\xc3\x23\xef\xaf\xf1\xef\x1e\xf9\x03\x07\x3f\x3c\x7b\x52\x17\x3f\xb0\xfd\x9c\x8f\xff\xa3\x17\xaf\x23\x2b\x92\xc3\xc5\x97\x6b\xc1\x82\xaf\xc5\xce\x90\x73\xf8\x34\x5e\xcc\xe0\x40\xd0\xcd\x64\x63\xc2\x22\x17\x0a\xa9\xe6\x8d\x61\x89\x18\x07\xc1\x7e\x36\x99\x6c\x3b\xf6\x63\x65\x27\xd2\x16\x7e\xe2\x70\x8d\x0e\x4d\x81\x93\xee\xb5\x6c\x8f\x6c\x24\x6a\x35\xb9\x3b\x1d\x9f\xfe\xdb\x64\x40\x1e\x7e\x77\x9a\x3e\xa6\xea\x97\xd5\x74\x7a\xbf\xf4\xb6\x03\xcc\xba\x37\xed\x3f\x92\xeb\xb1\x52\xfd\x2d\xa6\x66\xcb\x60\x9d\xd8\xe0\x37\x18\x96\x0d\xfe\x8e\x91\xf6\xe7\x06\xda\xd9\x00\x6e\x6c\x21\x62\x83\x02\x7e\xef\x03\x56\xe3\x8c\x97\xd2\x45\x62\x44\xbe\x2d\x55\x40\xad\x3c\x8f\x86\x79\x40\xdd\x7b\xb7\x45\x3a\xf7\xb0\x2b\x55\x51\xb6\xc1\xa8\x3c\x08\xad\xed\x0e\x65\x1a\xd9\xa3\x8f\x83\xee\xb8\x78\xa9\x0e\xd3\xcc\xf1\x84\xa4\x78\xb1\x5a\x2d\xd2\x89\xdd\x07\x15\xc1\x76\xef\xb0\xa0\x6e\x72\xad\x0a\x88\x83\x97\x34\x66\xdd\x61\x0e\x77\x4a\x80\x80\xe7\x57\xab\xf6\x7b\x91\x71\xd6\x63\x35\x3b\x9a\x71\x53\x2a\x22\xc7\x7c\xe6\xbf\xef\xef\xf0\x47\xe3\xe1\x1f\xa7\x3e\xcb\x62\x2e\x5e\xfe\x38\x3b\x84\xb3\x6c\x5f\xbd\x3d\xf1\xe7\x2b\xf7\xbe\x2e\x79\xaa\x17\x41\x03\x98\xa7\x34\x8c\xfc\x36\x80\xf4\xda\x7e\x41\xc8\x32\x2c\x7f\x84\xda\xd9\x3b\x25\xd1\x79\xf0\x4d\x51\x82\xf0\xf0\x4a\x19\x65\xdb\xb7\x75\x73\xac\xcb\x6c\x00\xcf\x29\x4a\x55\x41\xca\x88\x5f\x72\x1d\x14\xc2\x69\x2d\x7e\xca\x75\x65\x64\x6d\x95\x89\xa7\xc7\xa5\x56\xe4\xf8\xab\x2f\x5c\x7c\x1b\xd4\xb3\xd1\x63\x3a\xfe\xe3\xbe\xef\xc9\x96\x3b\xb5\x0e\x8f\xcb\xfd\xc6\xa3\x7b\xfd\x99\x81\x3e\xc0\x79\x13\x4a\x7e\x51\x96\xfa\x04\x23\x4c\xe8\x51\xc7\x85\xf4\x81\x4a\x5b\x86\x7b\xcf\x07\xf0\xd3\x74\x0a\xaf\x2e\x48\xae\xb2\x31\xdb\xa5\xfa\x80\x17\x7b\x2a\x9b\xf4\x20\xfe\xcb\xb2\x9f\x8f\xdc\xff\xa1\x88\x87\x8f\x75\xa6\x3e\x49\x3c\x83\x13\x61\xac\xd9\x57\xb6\xf1\xf7\xc4\xee\xad\xff\x5f\x00\x00\x00\xff\xff\xbe\x37\x36\x6d\xd9\x2b\x00\x00") +var _configKubernetesTemplateYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x54\xcb\x6e\xdb\x30\x10\xbc\xeb\x2b\x16\x0a\x7a\x94\xa5\x5c\x7a\xe0\xcd\x48\x82\xb4\x45\xad\x04\x45\x90\x3b\x45\xad\x62\xc2\x7c\x95\x4b\x39\x30\x0c\xfd\x7b\x41\x51\x6e\x2d\xbf\x0e\xe5\x89\xdc\x21\x67\x66\xd7\x63\x71\x27\xdf\xd1\x93\xb4\x86\x41\xc3\x83\x58\x97\xdb\xfb\x6c\x23\x4d\xcb\xe0\x87\x6d\x32\x8d\x81\xb7\x3c\x70\x96\x01\xdc\xdd\xc1\xe3\x0b\xd4\x2f\x6f\xf0\xf0\x6d\x59\x3f\x3f\x41\xbd\x5c\x3d\x65\x00\x86\x6b\x64\xb0\xdf\x2f\xde\x38\x6d\xbe\xb7\xc3\x30\xd5\xc8\x71\x91\x80\xfa\x70\x1a\x86\x8c\x1c\x0a\x06\x19\x40\xc3\xc5\xc6\x76\xdd\x4f\xa9\x65\x60\x50\x65\x00\xc2\x6a\xa7\x30\x48\x6b\x88\xc1\x7d\x06\x10\x50\x3b\xc5\x03\x46\x75\x80\xf1\xe5\xb8\x03\x20\xf4\x5b\x29\x70\x29\x84\xed\x4d\xa8\x47\x07\x5d\x6f\x0c\xaa\x82\xf8\x74\xc7\x23\x05\xee\xc3\xab\x55\x52\xec\x18\xd4\xb8\x45\x3f\x41\xc2\x9a\xc0\xa5\x41\x4f\xa3\x95\xb4\x8a\xa9\x93\x89\xe7\xd3\xfa\x0d\xfa\x62\xde\xd7\x61\x49\xcd\x3f\x90\x81\x5d\x53\x1f\x5d\x37\xd2\x96\xd3\xb3\x56\x9a\xb6\xf0\xd6\x06\x85\x44\x2c\xba\xa7\x70\xfa\xf0\xb5\x57\xea\x60\x6b\xa9\x3e\xf9\x8e\x8e\x6e\x70\xff\x41\xec\xe8\x1c\x8d\xe5\xc9\x4c\x7e\x5a\xf6\xbd\x39\xab\x15\x85\xb0\xa6\x93\x1f\x67\x40\x89\x41\x94\x09\x2b\xe7\x3d\xa6\xe2\x62\xa7\xd5\x05\xb6\x10\xbb\x7f\x3c\x05\x2e\x8f\xc5\x23\xd9\xde\x0b\x3c\x69\x20\x02\xbf\x7b\xa4\x70\x56\x07\x10\xae\x8f\x19\x91\x1d\x18\x84\xc5\x83\xeb\x09\x2a\x28\x86\x61\xbf\x1f\x0f\x71\x03\xa8\x08\x21\xee\xf2\xfb\xaa\xd2\x79\xdc\xa1\x99\x2b\xa7\xa5\x51\x5b\xbf\x3b\xe2\xfb\xc5\xf5\x73\x03\xd5\x62\xa2\x74\x5e\x9a\xd0\x41\xfe\x65\x51\x75\xcf\xf9\x04\x8f\x74\x8a\x30\x09\x7c\x5d\xdd\xe0\x47\xb7\x46\x8d\x9e\xab\x82\x82\xf5\x63\x04\xfe\x4a\x3d\x4a\xda\xdc\xd2\x4a\xf8\x5c\xac\xaa\x2e\xab\x6d\xad\xea\x35\xae\x62\xb6\xcf\xb2\x30\x0b\xe9\x64\xe3\x4a\x4a\xc7\x91\x44\x92\x57\x1e\xd6\x0c\x4a\xeb\xc2\xf4\xcb\x1f\x07\xa0\x68\xa5\x2f\xaf\x13\x50\xdf\xa4\xe7\xd7\xae\x1c\x2c\xa5\x14\x15\xc9\xfb\x0d\x17\xff\x62\x98\x65\xc7\xed\x5e\xfa\x2f\x5e\xe3\x4c\xf5\x15\x77\xf3\xe9\xcc\x66\x33\x69\xfc\xd7\xe4\x5c\xfc\x26\x52\x40\x13\xde\x47\xe9\x07\xc5\xa5\x9e\x6b\x89\x58\x4a\x5f\x9e\x03\x97\xdb\x0a\xf8\x13\x00\x00\xff\xff\x57\x40\xab\x27\x51\x05\x00\x00") -func configDefaultConfigYamlBytes() ([]byte, error) { +func configKubernetesTemplateYamlBytes() ([]byte, error) { return bindataRead( - _configDefaultConfigYaml, - "config/default-config.yaml", + _configKubernetesTemplateYaml, + "config/kubernetes-template.yaml", ) } -func configDefaultConfigYaml() (*asset, error) { - bytes, err := configDefaultConfigYamlBytes() +func configKubernetesTemplateYaml() (*asset, error) { + bytes, err := configKubernetesTemplateYamlBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "config/default-config.yaml", size: 11225, mode: os.FileMode(420), modTime: time.Unix(1582241932, 0)} + info := bindataFileInfo{name: "config/kubernetes-template.yaml", size: 1361, mode: os.FileMode(436), modTime: time.Unix(1702337830, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _configHtcondorTemplateTxt = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x8e\xcd\x6e\xea\x30\x10\x85\xf7\x7e\x8a\x11\xd2\x5d\x26\x97\x17\xc8\xa6\x80\x10\x9b\x22\xd1\xa8\x3f\x2b\xcb\xe0\x49\xb0\xe2\x8c\x61\xec\x09\xad\xa2\xbc\x7b\x15\x40\xad\xa8\x4a\x77\x47\x3e\xdf\xf9\x3c\x42\xae\x43\x8e\x08\x05\x74\x86\x9c\xf7\x46\xd5\x98\x90\x3a\x28\xa0\x64\x41\x85\xef\xb8\x93\x64\xb6\x7e\x44\x2a\x21\x42\xaf\x0c\xd7\xd2\x22\xa5\x08\x05\x9c\x02\x37\xc8\xc0\x42\x90\x65\xc9\xc4\x66\x35\x87\xbe\xcf\xcb\x31\xd9\x61\x50\x3e\xd4\x50\x8c\x2f\x2f\x81\x9b\xb9\xe3\x61\xf8\xbf\x0b\x64\x03\x67\xd8\x21\xa5\xcc\x87\x5a\x21\x73\xe0\x9f\xd4\xe5\xaf\x2c\x26\x8b\xcc\x2a\x48\x3a\x48\xba\xcf\x04\x49\x2a\xee\x83\x78\xab\x13\x1b\x8a\x15\xb2\xae\x9c\xc7\xf1\xc4\xb7\xc5\x93\x3a\xed\x91\x74\x0a\xdf\xe5\x97\x70\xfd\xa8\x17\xaf\xab\x52\xaf\x37\x7a\xf1\xbc\x9a\x95\xaa\xef\x5d\x05\x84\x90\xcf\x0e\x12\x61\x0a\xd9\x30\xa8\xbe\x3f\xb0\xa3\x54\xc1\x84\xf1\x28\x18\x93\xde\x8d\x65\x01\xff\xec\xe4\x02\x9e\xa1\x0c\x90\xec\x39\x5d\x15\x1b\xd3\x2e\xb7\x30\xcd\xef\x59\x5a\x6c\x03\x7f\x8c\x9e\x7c\x5a\xc1\xf2\x61\x72\x9d\xfc\x6e\x9b\xbb\xd8\xfc\xa9\xb3\x2e\x36\x37\xb2\xcb\xe2\xc6\xa6\x8e\x82\x82\xea\x33\x00\x00\xff\xff\x61\xe0\x01\xde\xf9\x01\x00\x00") +var _configPbsTemplateTxt = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\xd0\xc1\x4a\xc4\x30\x10\xc6\xf1\x7b\x9f\x62\xec\xb2\xc7\xb4\xf5\x2a\xf4\xa2\x05\xf1\x22\xa2\x82\xe7\x86\x4c\x34\xa4\x9d\x84\x49\x82\x87\x90\x77\x97\xdd\x04\x64\xc1\xf5\x16\x86\x3f\x3f\xc8\x77\xb8\x19\xa5\xa1\x51\xae\xe1\xab\x3b\xbc\xdc\xbf\x81\x78\x86\x9c\x87\xf7\x35\xd8\x27\x55\x4a\xbb\xb9\xd3\xed\xc3\xb1\x5d\x0c\x97\x32\xea\x44\x84\x9b\x08\x51\xb9\x14\x5b\x82\xd7\x12\x64\xee\x72\x36\x1a\x08\x61\x78\xf0\x29\xc0\x04\xa2\x94\x2e\x67\xcf\x86\xa2\x86\xbe\x02\x1b\x90\x53\x18\xe6\xdb\x3b\xef\x69\x3e\xaa\xbe\xd6\xe7\x52\x00\x92\x3a\xbf\x9a\xf3\xba\xee\x8f\x12\xa6\xe1\x1a\xb5\xe3\x3e\x1f\x87\x49\x7f\xca\xbe\xc5\x7f\x3b\x8b\x09\xf6\x5f\x48\x9b\x0d\x7f\xa5\x9a\x5f\x50\x5d\xfd\x29\x7c\x3b\xb6\xc8\xc0\x89\x40\x88\x78\x9a\x6f\xb9\x18\xf2\x27\x00\x00\xff\xff\x94\x91\x42\x0b\x69\x01\x00\x00") -func configHtcondorTemplateTxtBytes() ([]byte, error) { +func configPbsTemplateTxtBytes() ([]byte, error) { return bindataRead( - _configHtcondorTemplateTxt, - "config/htcondor-template.txt", + _configPbsTemplateTxt, + "config/pbs-template.txt", ) } -func configHtcondorTemplateTxt() (*asset, error) { - bytes, err := configHtcondorTemplateTxtBytes() +func configPbsTemplateTxt() (*asset, error) { + bytes, err := configPbsTemplateTxtBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "config/htcondor-template.txt", size: 505, mode: os.FileMode(420), modTime: time.Unix(1548721562, 0)} + info := bindataFileInfo{name: "config/pbs-template.txt", size: 361, mode: os.FileMode(436), modTime: time.Unix(1701431150, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _configKubernetesTemplateYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x53\x4d\x8f\x9b\x30\x10\xbd\xf3\x2b\x46\xac\xf6\x48\x20\x97\x1e\x7c\x5b\x25\xab\x74\xab\x86\x8d\xaa\x55\xef\xc6\x19\x12\x2b\xf8\xa3\xf6\x38\x6d\x14\xf1\xdf\x2b\x30\x54\x24\x34\x6a\xe7\x34\x9e\x61\xde\x7b\xf3\x01\xb7\xf2\x3b\x3a\x2f\x8d\x66\x50\x71\x12\xc7\xfc\xbc\x4c\x4e\x52\xef\x19\x7c\x31\x55\xa2\x90\xf8\x9e\x13\x67\x09\xc0\xd3\x13\xac\xdf\xa1\x7c\xff\x80\xd5\xe7\x97\x72\xf3\x0a\xe5\xcb\xf6\x35\x01\xd0\x5c\x21\x83\xeb\x75\xf1\xc1\xfd\xe9\x6d\xdf\xb6\x43\xcc\x5b\x2e\x62\xa2\x1c\x5f\x6d\x9b\x78\x8b\x82\x41\x02\x50\x71\x71\x32\x75\xfd\x55\x2a\x49\x0c\x8a\x04\x40\x18\x65\x1b\x24\x69\xb4\x67\xb0\x4c\x00\x08\x95\x6d\x38\x61\xc7\x0e\xd0\x57\xf6\x1e\x80\x43\x4f\xdc\xd1\xce\x34\x52\x5c\x18\x94\x78\x46\x37\xa4\x84\xd1\xc4\xa5\x46\xe7\x7b\x9a\x68\xd9\x1f\x95\xd6\x49\x4d\x35\xa4\x75\xd0\x1a\x9b\xec\xa7\x71\x27\x74\xd9\xb3\x4f\x61\xaa\x7f\x34\xa9\xf8\x01\x19\x98\xa3\x0f\x9d\xba\x4a\x9a\x7c\x28\x3c\x85\x0a\x9d\x46\x42\x3f\x60\xb0\x4e\xa9\xa7\xfb\xe2\x5d\x68\x9a\x51\xe6\x5b\x5d\x1a\xda\x39\xf4\xa8\xa7\xdf\x71\x77\xf0\x6c\xf2\xee\xe4\x0e\xfa\xd2\xfb\x70\xe4\x9a\x85\x5d\xd0\xb3\x58\x96\x09\xa3\x6b\x79\x98\x25\x72\x24\x91\xc7\x5c\x7e\x3b\x86\x18\x5c\x5c\xd4\x9c\x38\xcb\xa8\x1b\xcf\xfa\x3e\x71\xbb\xf7\xd1\x1c\x7a\x13\x9c\xc0\xbb\xbe\xba\xc4\x8f\x80\x9e\x66\x71\x00\x61\x43\xb7\x1f\x59\x83\x46\x58\xac\x6c\xf0\x50\x40\xd6\xb6\xd7\x6b\xff\xe8\x1c\xc0\xc6\x23\x74\x5e\xba\x2c\x0a\x95\x76\x1e\xea\x5b\xe6\x68\x0a\x95\x71\x97\x09\xde\x37\xae\x36\x15\x14\x8b\x01\x72\xbc\x82\xe7\x45\x51\x6f\xd2\x21\xdd\xc3\x35\x1e\x23\xc1\xa7\xed\x5f\xf1\xcf\xa6\x09\x0a\xb7\x26\xe8\xfb\x26\x1e\xde\x98\x27\xe3\xf8\x01\x1f\x1e\x59\x2f\xb8\x03\xdc\x71\x3a\x4e\xeb\x73\x63\x69\xd8\xd0\x74\x51\xd9\x5e\xba\xfc\x31\xd8\xa8\x23\x2e\x33\x8b\x82\x1f\xd3\x4d\xae\x61\xf2\x91\x47\x11\x9c\xa4\xcb\xca\x68\xc2\x5f\x74\xdb\xa9\x75\xf2\x2c\x1b\x3c\xe0\x9e\x01\xb9\x80\x49\x32\x9d\xcd\x7f\xfd\x77\xff\x9a\x09\x2a\x4b\x97\xb5\x74\x0c\xae\xed\x0c\xed\x51\x67\x31\xbe\xe5\xf6\x56\x6e\x2c\x1a\x88\x87\x4e\x7f\x07\x00\x00\xff\xff\x0a\xf4\x7b\x60\xf8\x04\x00\x00") +var _configSlurmTemplateTxt = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x90\xc1\x6a\xc3\x30\x0c\x86\xef\x79\x0a\x2d\xa5\x47\x27\xd9\x23\xac\x0d\x74\xbb\x6e\x85\x9d\x9d\x45\x61\x9e\x67\xd9\x48\x36\x3b\x18\xbf\xfb\x48\x53\x68\x0a\x0b\xbb\x19\xeb\xfb\x3f\xa4\x7f\xf7\xd0\x0e\x86\xda\x41\xcb\x67\xb5\x7b\x3b\x3c\x9d\x8f\xcf\xa0\xd4\x97\x1f\x14\x69\x87\x90\x73\x73\xd6\x62\x5f\xc6\x52\x56\x63\x8a\x5a\xac\xc0\xe3\xea\x0b\x99\x3d\xcf\xf8\xbb\x67\xdb\x1b\x2e\xa5\x9d\x12\x11\x7e\x2b\x89\x23\x32\xaf\x50\x9f\x62\x48\x71\x8b\xf5\x29\x56\x39\x9b\x09\x08\xa1\x39\x86\x24\xd0\x81\x2a\xa5\xca\x39\xb0\xa1\x38\x41\x7d\x33\x7d\x84\x24\x2a\x20\xab\x79\x1f\xd8\x8f\xf5\x92\xb8\xd0\x0a\x90\xc6\xcb\xeb\xea\x7a\xd5\xee\x34\x40\xd7\x6c\xeb\x1c\x3a\xd8\x37\xdd\x74\x3a\xd4\x57\xfc\x6f\x53\x6f\xc4\xfe\xa3\x8a\x2e\xdc\x54\x0b\x7f\xe7\xaa\x96\x83\xe1\xc7\xb3\x45\x06\x4e\x34\x87\xe6\xa6\xfb\xbb\xce\x7f\x03\x00\x00\xff\xff\x71\x9e\x5b\xbd\x9f\x01\x00\x00") -func configKubernetesTemplateYamlBytes() ([]byte, error) { +func configSlurmTemplateTxtBytes() ([]byte, error) { return bindataRead( - _configKubernetesTemplateYaml, - "config/kubernetes-template.yaml", + _configSlurmTemplateTxt, + "config/slurm-template.txt", ) } -func configKubernetesTemplateYaml() (*asset, error) { - bytes, err := configKubernetesTemplateYamlBytes() +func configSlurmTemplateTxt() (*asset, error) { + bytes, err := configSlurmTemplateTxtBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "config/kubernetes-template.yaml", size: 1272, mode: os.FileMode(420), modTime: time.Unix(1582242960, 0)} + info := bindataFileInfo{name: "config/slurm-template.txt", size: 415, mode: os.FileMode(436), modTime: time.Unix(1701431150, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -254,12 +275,13 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "config/gridengine-template.txt": configGridengineTemplateTxt, - "config/pbs-template.txt": configPbsTemplateTxt, - "config/slurm-template.txt": configSlurmTemplateTxt, - "config/default-config.yaml": configDefaultConfigYaml, - "config/htcondor-template.txt": configHtcondorTemplateTxt, - "config/kubernetes-template.yaml": configKubernetesTemplateYaml, + "config/default-config.yaml": configDefaultConfigYaml, + "config/gridengine-template.txt": configGridengineTemplateTxt, + "config/htcondor-template.txt": configHtcondorTemplateTxt, + "config/kubernetes-executor-template.yaml": configKubernetesExecutorTemplateYaml, + "config/kubernetes-template.yaml": configKubernetesTemplateYaml, + "config/pbs-template.txt": configPbsTemplateTxt, + "config/slurm-template.txt": configSlurmTemplateTxt, } // AssetDir returns the file names below a certain @@ -303,13 +325,14 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "config": {nil, map[string]*bintree{ - "default-config.yaml": {configDefaultConfigYaml, map[string]*bintree{}}, - "gridengine-template.txt": {configGridengineTemplateTxt, map[string]*bintree{}}, - "htcondor-template.txt": {configHtcondorTemplateTxt, map[string]*bintree{}}, - "kubernetes-template.yaml": {configKubernetesTemplateYaml, map[string]*bintree{}}, - "pbs-template.txt": {configPbsTemplateTxt, map[string]*bintree{}}, - "slurm-template.txt": {configSlurmTemplateTxt, map[string]*bintree{}}, + "config": &bintree{nil, map[string]*bintree{ + "default-config.yaml": &bintree{configDefaultConfigYaml, map[string]*bintree{}}, + "gridengine-template.txt": &bintree{configGridengineTemplateTxt, map[string]*bintree{}}, + "htcondor-template.txt": &bintree{configHtcondorTemplateTxt, map[string]*bintree{}}, + "kubernetes-executor-template.yaml": &bintree{configKubernetesExecutorTemplateYaml, map[string]*bintree{}}, + "kubernetes-template.yaml": &bintree{configKubernetesTemplateYaml, map[string]*bintree{}}, + "pbs-template.txt": &bintree{configPbsTemplateTxt, map[string]*bintree{}}, + "slurm-template.txt": &bintree{configSlurmTemplateTxt, map[string]*bintree{}}, }}, }} diff --git a/config/kubernetes-executor-template.yaml b/config/kubernetes-executor-template.yaml new file mode 100644 index 000000000..22bd12a4d --- /dev/null +++ b/config/kubernetes-executor-template.yaml @@ -0,0 +1,38 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: {{.TaskId}}-{{.JobId}} + namespace: {{.Namespace}} + labels: + job-name: {{.TaskId}}-{{.JobId}} +spec: + backoffLimit: 0 + completions: 1 + template: + spec: + restartPolicy: Never + containers: + - name: funnel-worker-{{.TaskId}} + image: {{.Image}} + imagePullPolicy: Always + command: ["/bin/sh", "-c"] + args: {{.Command}} + workingDir: {{.Workdir}} + resources: + requests: + cpu: {{if ne .Cpus 0 -}}{{.Cpus}}{{ else }}{{"100m"}}{{end}} + memory: {{if ne .RamGb 0.0 -}}{{printf "%.0fG" .RamGb}}{{else}}{{"16M"}}{{end}} + ephemeral-storage: {{if ne .DiskGb 0.0 -}}{{printf "%.0fG" .DiskGb}}{{else}}{{"100M"}}{{end}} + + volumeMounts: + ### DO NOT CHANGE THIS + {{range $idx, $item := .Volumes}} + - name: storage + mountPath: {{$item.ContainerPath}} + subPath: {{$.TaskId}}{{$item.ContainerPath}} + {{end}} + + volumes: + - name: storage + persistentVolumeClaim: + claimName: storage-pvc \ No newline at end of file diff --git a/config/kubernetes-template.yaml b/config/kubernetes-template.yaml index c5bcc2383..f16a93dfc 100644 --- a/config/kubernetes-template.yaml +++ b/config/kubernetes-template.yaml @@ -9,13 +9,13 @@ spec: completions: 1 template: spec: + serviceAccountName: funnel-sa restartPolicy: Never containers: - - name: {{printf "funnel-worker-%s" .TaskId}} - image: ohsucompbio/funnel-kubernetes-worker:latest - imagePullPolicy: IfNotPresent + - name: funnel-worker-{{.TaskId}} + image: ohsucompbio/funnel-dind-rootless:latest + imagePullPolicy: Always args: - - "funnel" - "worker" - "run" - "--config" @@ -28,16 +28,16 @@ spec: memory: {{if ne .RamGb 0.0 -}}{{printf "%.0fG" .RamGb}}{{else}}{{"16M"}}{{end}} ephemeral-storage: {{if ne .DiskGb 0.0 -}}{{printf "%.0fG" .DiskGb}}{{else}}{{"100M"}}{{end}} volumeMounts: - - name: {{printf "funnel-storage-%s" .TaskId}} - mountPath: {{printf "/opt/funnel/funnel-work-dir/%s" .TaskId}} + - name: funnel-storage-{{.TaskId}} + mountPath: /opt/funnel/funnel-work-dir/{{.TaskId}} + subPath: {{.TaskId}} - name: config-volume mountPath: /etc/config - securityContext: - privileged: true volumes: - - name: {{printf "funnel-storage-%s" .TaskId}} - emptyDir: {} - name: config-volume configMap: name: funnel-config + - name: funnel-storage-{{.TaskId}} + persistentVolumeClaim: + claimName: storage-pvc \ No newline at end of file diff --git a/deployments/kubernetes/funnel-config.yaml b/deployments/kubernetes/funnel-config.yaml new file mode 100644 index 000000000..4096b1398 --- /dev/null +++ b/deployments/kubernetes/funnel-config.yaml @@ -0,0 +1,130 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: funnel-config +data: + funnel-server-config.yml: | + Database: boltdb + + BoltDB: + Path: /opt/funnel/funnel-work-dir/funnel.bolt.db + + Compute: kubernetes + + Logger: + Level: debug + + Kubernetes: + DisableJobCleanup: false + DisableReconciler: false + ReconcileRate: 5m + Namespace: default + Template: | + apiVersion: batch/v1 + kind: Job + metadata: + ## DO NOT CHANGE NAME + name: {{.TaskId}} + namespace: {{.Namespace}} + spec: + backoffLimit: 0 + completions: 1 + template: + spec: + serviceAccountName: funnel-sa + restartPolicy: Never + containers: + - name: funnel-worker-{{.TaskId}} + image: ohsucompbio/funnel-dind-rootless:latest + imagePullPolicy: Always + args: + - "worker" + - "run" + - "--config" + - "/etc/config/funnel-worker-config.yml" + - "--taskID" + - {{.TaskId}} + resources: + requests: + cpu: {{if ne .Cpus 0 -}}{{.Cpus}}{{ else }}{{"100m"}}{{end}} + memory: {{if ne .RamGb 0.0 -}}{{printf "%.0fG" .RamGb}}{{else}}{{"16M"}}{{end}} + ephemeral-storage: {{if ne .DiskGb 0.0 -}}{{printf "%.0fG" .DiskGb}}{{else}}{{"100M"}}{{end}} + volumeMounts: + - name: funnel-storage-{{.TaskId}} + mountPath: /opt/funnel/funnel-work-dir/{{.TaskId}} + subPath: {{.TaskId}} + - name: config-volume + mountPath: /etc/config + + volumes: + - name: config-volume + configMap: + name: funnel-config + - name: funnel-storage-{{.TaskId}} + persistentVolumeClaim: + claimName: storage-pvc + + + funnel-worker-config.yml: | + Database: boltdb + + Compute: kubernetes + + Logger: + Level: debug + + RPCClient: + MaxRetries: 3 + Timeout: 30s + + EventWriters: + - rpc + - log + + Server: + HostName: funnel + RPCPort: 9090 + + Kubernetes: + # Change to "kubernetes" to use the kubernetes executor + Executor: docker + Namespace: default + ExecutorTemplate: | + apiVersion: batch/v1 + kind: Job + metadata: + name: {{.TaskId}}-{{.JobId}} + namespace: {{.Namespace}} + labels: + job-name: {{.TaskId}}-{{.JobId}} + spec: + backoffLimit: 0 + completions: 1 + template: + spec: + restartPolicy: Never + containers: + - name: funnel-worker-{{.TaskId}} + image: {{.Image}} + imagePullPolicy: Always + command: ["/bin/sh", "-c"] + args: {{.Command}} + workingDir: {{.Workdir}} + resources: + requests: + cpu: {{if ne .Cpus 0 -}}{{.Cpus}}{{ else }}{{"100m"}}{{end}} + memory: {{if ne .RamGb 0.0 -}}{{printf "%.0fG" .RamGb}}{{else}}{{"16M"}}{{end}} + ephemeral-storage: {{if ne .DiskGb 0.0 -}}{{printf "%.0fG" .DiskGb}}{{else}}{{"100M"}}{{end}} + + volumeMounts: + ### DO NOT CHANGE THIS + {{range $idx, $item := .Volumes}} + - name: storage + mountPath: {{$item.ContainerPath}} + subPath: {{$.TaskId}}{{$item.ContainerPath}} + {{end}} + + volumes: + - name: storage + persistentVolumeClaim: + claimName: storage-pvc diff --git a/deployments/kubernetes/funnel-deployment.yml b/deployments/kubernetes/funnel-deployment.yml index c861bc3fe..45ebcb548 100644 --- a/deployments/kubernetes/funnel-deployment.yml +++ b/deployments/kubernetes/funnel-deployment.yml @@ -18,16 +18,15 @@ spec: containers: - name: funnel image: ohsucompbio/funnel:latest - imagePullPolicy: IfNotPresent - command: - - 'funnel' - - 'server' - - 'run' - - '--config' - - '/etc/config/funnel-server-config.yml' - resources: - requests: - cpu: 2 + imagePullPolicy: Never + args: + - "server" + - "run" + - "--config" + - "/etc/config/funnel-server-config.yml" + resources: + requests: + cpu: 2000m memory: 4G ephemeral-storage: 25G # needed since we are using boltdb volumeMounts: @@ -38,10 +37,11 @@ spec: ports: - containerPort: 8000 - containerPort: 9090 - + volumes: - name: funnel-deployment-storage - emptyDir: {} + persistentVolumeClaim: + claimName: storage-pvc - name: config-volume configMap: name: funnel-config diff --git a/deployments/kubernetes/funnel-server-config.yml b/deployments/kubernetes/funnel-server-config.yml deleted file mode 100644 index ae30805ff..000000000 --- a/deployments/kubernetes/funnel-server-config.yml +++ /dev/null @@ -1,61 +0,0 @@ -Database: boltdb - -BoltDB: - Path: /opt/funnel/funnel-work-dir/funnel.bolt.db - -Compute: kubernetes - -Logger: - Level: debug - -Kubernetes: - DisableJobCleanup: false - DisableReconciler: false - ReconcileRate: 5m - Namespace: default - Template: | - apiVersion: batch/v1 - kind: Job - metadata: - ## DO NOT CHANGE NAME - name: {{.TaskId}} - namespace: {{.Namespace}} - spec: - backoffLimit: 0 - completions: 1 - template: - spec: - restartPolicy: Never - containers: - - name: {{printf "funnel-worker-%s" .TaskId}} - image: ohsucompbio/funnel-dind:latest - imagePullPolicy: IfNotPresent - args: - - "funnel" - - "worker" - - "run" - - "--config" - - "/etc/config/funnel-worker-config.yml" - - "--taskID" - - {{.TaskId}} - resources: - requests: - cpu: {{if ne .Cpus 0 -}}{{.Cpus}}{{ else }}{{"100m"}}{{end}} - memory: {{if ne .RamGb 0.0 -}}{{printf "%.0fG" .RamGb}}{{else}}{{"16M"}}{{end}} - ephemeral-storage: {{if ne .DiskGb 0.0 -}}{{printf "%.0fG" .DiskGb}}{{else}}{{"100M"}}{{end}} - volumeMounts: - - name: {{printf "funnel-storage-%s" .TaskId}} - mountPath: {{printf "/opt/funnel/funnel-work-dir/%s" .TaskId}} - - name: config-volume - mountPath: /etc/config - - securityContext: - privileged: true - - volumes: - - name: {{printf "funnel-storage-%s" .TaskId}} - emptyDir: {} - - name: config-volume - configMap: - name: funnel-config - diff --git a/deployments/kubernetes/funnel-worker-config.yml b/deployments/kubernetes/funnel-worker-config.yml deleted file mode 100644 index 692c601c1..000000000 --- a/deployments/kubernetes/funnel-worker-config.yml +++ /dev/null @@ -1,18 +0,0 @@ -Database: boltdb - -Compute: kubernetes - -Logger: - Level: debug - -RPCClient: - MaxRetries: 3 - Timeout: 30s - -EventWriters: - - rpc - - log - -Server: - HostName: 10.104.102.82 - RPCPort: 9090 diff --git a/deployments/kubernetes/pvc.yaml b/deployments/kubernetes/pvc.yaml new file mode 100644 index 000000000..5eb41900e --- /dev/null +++ b/deployments/kubernetes/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: storage-pvc +spec: + storageClassName: standard + resources: + requests: + storage: 10Gi + volumeMode: Filesystem + accessModes: + - ReadWriteMany diff --git a/deployments/kubernetes/role.yml b/deployments/kubernetes/role.yml index 029602882..39f9c3ac1 100644 --- a/deployments/kubernetes/role.yml +++ b/deployments/kubernetes/role.yml @@ -1,15 +1,14 @@ kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: - namespace: default name: funnel-role rules: -- apiGroups: [""] - resources: ["pods"] - verbs: ["get", "list", "watch"] -- apiGroups: ["batch", "extensions"] - resources: ["jobs"] - verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] -- apiGroups: ["extensions", "apps"] - resources: ["deployments"] - verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + - apiGroups: [""] + resources: ["pods", "pods/log"] + verbs: ["get", "list", "watch"] + - apiGroups: ["batch", "extensions"] + resources: ["jobs"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + - apiGroups: ["extensions", "apps"] + resources: ["deployments"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] diff --git a/deployments/kubernetes/role_binding.yml b/deployments/kubernetes/role_binding.yml index 6c110dabe..e152ef489 100644 --- a/deployments/kubernetes/role_binding.yml +++ b/deployments/kubernetes/role_binding.yml @@ -1,11 +1,15 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: funnel-sa +--- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: funnel-rolebinding - namespace: default subjects: -- kind: ServiceAccount - name: funnel-sa + - kind: ServiceAccount + name: funnel-sa roleRef: kind: Role name: funnel-role diff --git a/deployments/kubernetes/svc.yaml b/deployments/kubernetes/svc.yaml new file mode 100644 index 000000000..bceaa7364 --- /dev/null +++ b/deployments/kubernetes/svc.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: funnel +spec: + selector: + app: funnel + ports: + - name: funnel + port: 8000 + targetPort: 8000 + - name: grpc + port: 9090 + targetPort: 9090 diff --git a/worker/command.go b/worker/command.go new file mode 100644 index 000000000..8e32dc888 --- /dev/null +++ b/worker/command.go @@ -0,0 +1,40 @@ +package worker + +import ( + "io" + + "github.com/ohsu-comp-bio/funnel/events" +) + +type Command struct { + Image string + ShellCommand []string + Volumes []Volume + Workdir string + Env map[string]string + Stdin io.Reader + Stdout io.Writer + Stderr io.Writer + Event *events.ExecutorWriter + TaskCommand +} + +func (c *Command) GetStdout() io.Writer { + return c.Stdout +} + +func (c *Command) SetStdout(w io.Writer) { + c.Stdout = w +} + +func (c *Command) GetStderr() io.Writer { + return c.Stderr +} + +func (c *Command) SetStderr(w io.Writer) { + c.Stderr = w +} + +func (c *Command) SetStdin(r io.Reader) { + c.Stdin = r +} \ No newline at end of file diff --git a/worker/docker.go b/worker/docker.go index 1dd928e6b..3a5d375c2 100644 --- a/worker/docker.go +++ b/worker/docker.go @@ -4,28 +4,17 @@ import ( "context" "encoding/json" "fmt" - "io" "os" "os/exec" "strings" "time" - - "github.com/ohsu-comp-bio/funnel/events" ) // DockerCommand is responsible for configuring and running a docker container. type DockerCommand struct { - Image string - Command []string - Volumes []Volume - Workdir string ContainerName string RemoveContainer bool - Env map[string]string - Stdin io.Reader - Stdout io.Writer - Stderr io.Writer - Event *events.ExecutorWriter + Command } // Run runs the Docker command and blocks until done. @@ -68,7 +57,7 @@ func (dcmd DockerCommand) Run(ctx context.Context) error { } args = append(args, dcmd.Image) - args = append(args, dcmd.Command...) + args = append(args, dcmd.ShellCommand...) // Roughly: `docker run --rm -i --read-only -w [workdir] -v [bindings] [imageName] [cmd]` dcmd.Event.Info("Running command", "cmd", "docker "+strings.Join(args, " ")) diff --git a/worker/interfaces.go b/worker/interfaces.go index e5ffea01b..5886fa72b 100644 --- a/worker/interfaces.go +++ b/worker/interfaces.go @@ -1,6 +1,8 @@ package worker import ( + "io" + "github.com/ohsu-comp-bio/funnel/tes" "golang.org/x/net/context" ) @@ -12,3 +14,13 @@ type TaskReader interface { State(ctx context.Context) (tes.State, error) Close() } + +type TaskCommand interface { + Run(context.Context) error + Stop() error + GetStdout() io.Writer + GetStderr() io.Writer + SetStdout(io.Writer) + SetStderr(io.Writer) + SetStdin(io.Reader) +} \ No newline at end of file diff --git a/worker/kubernetes.go b/worker/kubernetes.go new file mode 100644 index 000000000..c1e7e8d91 --- /dev/null +++ b/worker/kubernetes.go @@ -0,0 +1,175 @@ +package worker + +import ( + "bytes" + "context" + "fmt" + "io" + "text/template" + + "github.com/ohsu-comp-bio/funnel/tes" + v1 "k8s.io/api/batch/v1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" +) + +// KubernetesCommand is responsible for configuring and running a task in a Kubernetes cluster. +type KubernetesCommand struct { + TaskId string + JobId int + StdinFile string + TaskTemplate string + Namespace string + Resources *tes.Resources + Command +} + +// Creates a new Kuberntes Job which will run the task. +func (kcmd KubernetesCommand) Run(ctx context.Context) error { + var taskId = kcmd.TaskId + tpl, err := template.New(taskId).Parse(kcmd.TaskTemplate) + + if err != nil { + return err + } + + var command = kcmd.ShellCommand + if kcmd.StdinFile != "" { + command = append(command, "<", kcmd.StdinFile) + } + + var buf bytes.Buffer + err = tpl.Execute(&buf, map[string]interface{}{ + "TaskId": taskId, + "JobId": kcmd.JobId, + "Namespace": kcmd.Namespace, + "Image": kcmd.Image, + "Command": command, + "Workdir": kcmd.Workdir, + "Volumes": kcmd.Volumes, + "Cpus": kcmd.Resources.CpuCores, + "RamGb": kcmd.Resources.RamGb, + "DiskGb": kcmd.Resources.DiskGb, + }) + + if err != nil { + return err + } + + decode := scheme.Codecs.UniversalDeserializer().Decode + obj, _, err := decode(buf.Bytes(), nil, nil) + if err != nil { + return err + } + + job, ok := obj.(*v1.Job) + if !ok { + return err + } + + clientset, err := getKubernetesClientset() + if err != nil { + return err + } + + var client = clientset.BatchV1().Jobs(kcmd.Namespace) + + _ , err = client.Create(ctx, job, metav1.CreateOptions{}) + + if err != nil { + return fmt.Errorf("creating job: %v", err) + } + + // Wait until the job finishes + watcher, err := client.Watch(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("job-name=%s-%d", taskId, kcmd.JobId)}) + defer watcher.Stop() + waitForJobFinnish(ctx, watcher) + + pods, err := clientset.CoreV1().Pods(kcmd.Namespace).List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("job-name=%s-%d", taskId, kcmd.JobId)}) + if err != nil { + return err + } + + for _, v := range pods.Items { + req := clientset.CoreV1().Pods(kcmd.Namespace).GetLogs(v.Name, &corev1.PodLogOptions{}) + podLogs, err := req.Stream(ctx) + + if err != nil { + return err + } + + defer podLogs.Close() + buf := new(bytes.Buffer) + _, err = io.Copy(buf, podLogs) + if err != nil { + return err + } + + var bytes = buf.Bytes() + kcmd.Stdout.Write(bytes) + } + + return nil +} + +// Deletes the job running the task. +func (kcmd KubernetesCommand) Stop() error { + clientset, err := getKubernetesClientset() + if err != nil { + return err + } + + jobName := fmt.Sprintf("%s-%d", kcmd.TaskId, kcmd.JobId) + + backgroundDeletion := metav1.DeletePropagationBackground + err = clientset.BatchV1().Jobs(kcmd.Namespace).Delete(context.TODO(), jobName, metav1.DeleteOptions{ + PropagationPolicy: &backgroundDeletion, + }) + + if err != nil { + return fmt.Errorf("deleting job: %v", err) + } + + return nil +} + +func (kcmd KubernetesCommand) GetStdout() io.Writer { + return kcmd.Stdout +} + +func (kcmd KubernetesCommand) GetStderr() io.Writer { + return kcmd.Stderr +} + +// Waits until the job finishes +func waitForJobFinnish(ctx context.Context, watcher watch.Interface) { + for { + select { + case event := <-watcher.ResultChan(): + job := event.Object.(*v1.Job) + + if job.Status.Succeeded > 0 || job.Status.Failed > 0 { + return + } else if event.Type == watch.Deleted { + return + } + + case <-ctx.Done(): + return + } + } +} + +func getKubernetesClientset() (*kubernetes.Clientset, error) { + kubeconfig, err := rest.InClusterConfig() + if err != nil { + return nil, err + } + + clientset, err := kubernetes.NewForConfig(kubeconfig) + return clientset, err +} \ No newline at end of file diff --git a/worker/step.go b/worker/step.go index 8bb572fcd..adcfddb7f 100644 --- a/worker/step.go +++ b/worker/step.go @@ -11,7 +11,7 @@ import ( type stepWorker struct { Conf config.Worker - Command *DockerCommand + Command TaskCommand Event *events.ExecutorWriter IP string } @@ -38,14 +38,14 @@ func (s *stepWorker) Run(ctx context.Context) error { } // Capture stdout/err to file. - if s.Command.Stdout != nil { - stdout = io.MultiWriter(s.Command.Stdout, stdout) + if s.Command.GetStdout() != nil { + stdout = io.MultiWriter(s.Command.GetStdout(), stdout) } + if s.Command.GetStderr() != nil { + stderr = io.MultiWriter(s.Command.GetStderr(), stderr) } - if s.Command.Stderr != nil { - stderr = io.MultiWriter(s.Command.Stderr, stderr) - } - s.Command.Stdout = stdout - s.Command.Stderr = stderr + + s.Command.SetStdout(stdout) + s.Command.SetStderr(stderr) go func() { done <- s.Command.Run(subctx) diff --git a/worker/worker.go b/worker/worker.go index 737422e0d..f14760e65 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -19,10 +19,21 @@ import ( // sequential process of task initialization, execution, finalization, // and logging. type DefaultWorker struct { - Conf config.Worker - Store storage.Storage - TaskReader TaskReader - EventWriter events.Writer + Executor Executor + Conf config.Worker + Store storage.Storage + TaskReader TaskReader + EventWriter events.Writer +} + +// Configuration of the task executor. +type Executor struct { + // "docker" or "kubernetes" + Backend string + // Kubernetes executor template + Template string + // Kubernetes namespace + Namespace string } // Run runs the Worker. @@ -126,23 +137,47 @@ func (r *DefaultWorker) Run(pctx context.Context) (runerr error) { event.State(tes.State_RUNNING) } + var resources = task.GetResources() + if resources == nil { + resources = &tes.Resources{} + } + // Run steps if run.ok() { for i, d := range task.GetExecutors() { + var command = Command{ + Image: d.Image, + ShellCommand: d.Command, + Volumes: mapper.Volumes, + Workdir: d.Workdir, + Env: d.Env, + Event: event.NewExecutorWriter(uint32(i)), + } + + var taskCommand TaskCommand + if r.Executor.Backend == "kubernetes" { + taskCommand = &KubernetesCommand{ + TaskId: task.Id, + JobId: i, + StdinFile: d.Stdin, + TaskTemplate: r.Executor.Template, + Namespace: r.Executor.Namespace, + Resources: resources, + Command: command, + } + } else { + taskCommand = &DockerCommand{ + ContainerName: fmt.Sprintf("%s-%d", task.Id, i), + //TODO Make RemoveContainer configurable + RemoveContainer: true, + Command: command, + } + } + s := &stepWorker{ Conf: r.Conf, Event: event.NewExecutorWriter(uint32(i)), - Command: &DockerCommand{ - Image: d.Image, - Command: d.Command, - Env: d.Env, - Volumes: mapper.Volumes, - Workdir: d.Workdir, - ContainerName: fmt.Sprintf("%s-%d", task.Id, i), - // TODO make RemoveContainer configurable - RemoveContainer: true, - Event: event.NewExecutorWriter(uint32(i)), - }, + Command: taskCommand, } // Opens stdin/out/err files and updates those fields on "cmd". @@ -190,9 +225,9 @@ func (r *DefaultWorker) Close() { func (r *DefaultWorker) openStepLogs(mapper *FileMapper, s *stepWorker, d *tes.Executor) error { // Find the path for task stdin - var err error if d.Stdin != "" { - s.Command.Stdin, err = mapper.OpenHostFile(d.Stdin) + stdin, err := mapper.OpenHostFile(d.Stdin) + s.Command.SetStdin(stdin) if err != nil { s.Event.Error("Couldn't prepare log files", err) return err @@ -201,7 +236,8 @@ func (r *DefaultWorker) openStepLogs(mapper *FileMapper, s *stepWorker, d *tes.E // Create file for task stdout if d.Stdout != "" { - s.Command.Stdout, err = mapper.CreateHostFile(d.Stdout) + stdout, err := mapper.CreateHostFile(d.Stdout) + s.Command.SetStdout(stdout) if err != nil { s.Event.Error("Couldn't prepare log files", err) return err @@ -210,7 +246,8 @@ func (r *DefaultWorker) openStepLogs(mapper *FileMapper, s *stepWorker, d *tes.E // Create file for task stderr if d.Stderr != "" { - s.Command.Stderr, err = mapper.CreateHostFile(d.Stderr) + stderr, err := mapper.CreateHostFile(d.Stderr) + s.Command.SetStderr(stderr) if err != nil { s.Event.Error("Couldn't prepare log files", err) return err From 3d601a6f55700a2d38234135776ac6b7c13d9bb1 Mon Sep 17 00:00:00 2001 From: KrKOo Date: Tue, 12 Dec 2023 13:34:46 +0100 Subject: [PATCH 5/5] Remove useless methods from KubernetesCommand --- worker/kubernetes.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/worker/kubernetes.go b/worker/kubernetes.go index c1e7e8d91..948553a89 100644 --- a/worker/kubernetes.go +++ b/worker/kubernetes.go @@ -137,14 +137,6 @@ func (kcmd KubernetesCommand) Stop() error { return nil } -func (kcmd KubernetesCommand) GetStdout() io.Writer { - return kcmd.Stdout -} - -func (kcmd KubernetesCommand) GetStderr() io.Writer { - return kcmd.Stderr -} - // Waits until the job finishes func waitForJobFinnish(ctx context.Context, watcher watch.Interface) { for {