From d0d03abe1dd6c19b27a7f86c27dadfe17dcba8ad Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Fri, 24 Jun 2022 17:20:47 +0200 Subject: [PATCH 01/14] fix nil map for networks --- internal/pkg/node/constructors.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index 6dd00bb1..ab846281 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -256,6 +256,9 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.NetDevs[devname].OnBoot.SetAlt(netdev.OnBoot, p) n.NetDevs[devname].Primary.SetAlt(netdev.Primary, p) if len(netdev.Tags) != 0 { + if len(n.NetDevs[devname].Tags) == 0 { + n.NetDevs[devname].Tags = make(map[string]*Entry) + } for keyname, key := range netdev.Tags { if _, ok := n.NetDevs[devname].Tags[keyname]; !ok { var keyVar Entry From bc8aa06673597488962a0d78983f564183111f38 Mon Sep 17 00:00:00 2001 From: Ingo Meyer Date: Thu, 21 Jul 2022 17:35:56 +0200 Subject: [PATCH 02/14] Fix the boot process for Legacy BIOS machines GitHub PR #235 adds an advanced boot mechanism for UEFI machines which causes old Legacy BIOS nodes to hit the 3 GB RAM barrier in 32 Bit iPXE very quickly. Therefore, detect if an EFI or Legacy BIOS is loaded and fall back to the old boot path in the second case. This commit fixes GitHub issue #497. --- etc/ipxe/default.ipxe | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/etc/ipxe/default.ipxe b/etc/ipxe/default.ipxe index 279f2295..0786a0e4 100644 --- a/etc/ipxe/default.ipxe +++ b/etc/ipxe/default.ipxe @@ -19,6 +19,15 @@ echo Warewulf Controller: {{.Ipaddr}} echo Downloading Kernel Image: kernel --name kernel ${uri_base}&stage=kernel || goto reboot +# imgextract causes RAM space problems on non-EFI systems (because of the 3GB barrier +# in 32-Bit mode). +# -> Use the old initrd method with a compressed image to save as much RAM as possible +# in this early boot stage. +# See for more details. +iseq ${platform} efi && goto efi || goto noefi + +:efi + # try extracting compressed images first # NOTE: system overlay tends to be the smallest, so failure here is the cheapest echo Downloading Container Image: @@ -56,6 +65,27 @@ echo Downloading Kernel Modules: initrd --name kmods ${uri_base}&stage=kmods || goto reboot {{- end}} +goto imoktogo + +:noefi + +echo +echo Use legacy initrd mode with compressed images + +echo Downloading Container Image: +initrd --name container ${uri_base}&stage=container&compress=gz || goto reboot + +echo Downloading System Overlay: +initrd --name system ${uri_base}&stage=system&compress=gz || goto reboot + +echo Downloading Runtime Overlay: +initrd --name runtime ${uri_base}&stage=runtime&compress=gz || goto reboot + +{{if ne .KernelOverride "" -}} +echo Downloading Kernel Modules: +initrd --name kmods ${uri_base}&stage=kmods&compress=gz || goto reboot +{{- end}} + :imoktogo From a5d02f193ec6bf77bff916cc8dca422d90ac5bcf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 09:04:26 +0000 Subject: [PATCH 03/14] Bump github.com/spf13/cobra from 1.1.1 to 1.6.1 Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.1.1 to 1.6.1. - [Release notes](https://github.com/spf13/cobra/releases) - [Commits](https://github.com/spf13/cobra/compare/v1.1.1...v1.6.1) --- updated-dependencies: - dependency-name: github.com/spf13/cobra dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 83 +++++++--------------------------------------------------- 2 files changed, 11 insertions(+), 74 deletions(-) diff --git a/go.mod b/go.mod index 6159de0c..0df2b6b8 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/opencontainers/image-spec v1.0.2-0.20190823105129-775207bd45b6 github.com/opencontainers/umoci v0.4.6 github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.1.1 + github.com/spf13/cobra v1.6.1 github.com/stretchr/testify v1.7.0 github.com/talos-systems/go-smbios v0.1.1 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 diff --git a/go.sum b/go.sum index a58cfc27..8351e354 100644 --- a/go.sum +++ b/go.sum @@ -22,7 +22,6 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -67,7 +66,6 @@ github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+V github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= @@ -86,9 +84,6 @@ github.com/apex/log v1.4.0/go.mod h1:UMNC4vQNC7hb5gyr47r18ylK1n34rV7GO+gb0wpXvcE github.com/apex/logs v0.0.7/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= @@ -100,7 +95,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= @@ -112,8 +106,6 @@ github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8n github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/checkpoint-restore/go-criu/v4 v4.0.2/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= @@ -210,8 +202,6 @@ github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgU github.com/containers/storage v1.23.6/go.mod h1:haFs0HRowKwyzvWEx9EgI3WsL8XCSnBDb5f8P5CAxJY= github.com/containers/storage v1.30.0 h1:KS6zmoPyy0Qcx1HCCiseQ0ysSckRvtiuoVpIGh9iwQA= github.com/containers/storage v1.30.0/go.mod h1:M/xn0pg6ReYFrLtWl5YELI/a4Xjq+Z3e5GJxQrJCcDI= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -225,8 +215,9 @@ github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+ github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creasty/defaults v1.5.2 h1:/VfB6uxpyp6h0fr7SPp7n8WJBoV8jfxQXPCnkVSjyls= @@ -243,7 +234,6 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/go-smbios v0.0.0-20180907143718-390a4f403a8e h1:vUmf0yezR0y7jJ5pceLHthLaYf4bA5T14B6q39S4q2Q= github.com/digitalocean/go-smbios v0.0.0-20180907143718-390a4f403a8e/go.mod h1:YTIHhz/QFSYnu/EhlF2SpU2Uk+32abacUYA5ZPljz1A= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= @@ -328,7 +318,6 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/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/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -400,39 +389,21 @@ github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.0 h1:ESEyqQqXXFIcImj/BE8oKEX37Zsuceb2cZI+EL/zNCY= github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.0/go.mod h1:XnLCLFp3tjoZJszVKjfpyAK6J8sYIcQXWQxmqLWF21I= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -440,8 +411,9 @@ github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -482,7 +454,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a h1:weJVJJRzAJBFRlAiJQROKQs8oC9vOxvm4rZmBBk0ONw= github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= @@ -496,7 +467,6 @@ github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -514,18 +484,10 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/pkcs11 v1.0.3 h1:iMwmD7I5225wv84WxIG/bmxz9AXjWvTWIbM/TYHvWtw= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mistifyio/go-zfs v2.1.1+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/moby/sys/mountinfo v0.1.3/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o= @@ -554,7 +516,6 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+ github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -598,8 +559,6 @@ github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3 github.com/opencontainers/umoci v0.4.6 h1:nUULYM+jSLLJCVN2gd4wldm8/yuVMahC36UXna3jEqI= github.com/opencontainers/umoci v0.4.6/go.mod h1:ZyTwgJPvYl9xv1Cf3ykU41BxMSCxW3AtoueA5Bmxs1E= github.com/ostreedev/ostree-go v0.0.0-20190702140239-759a8c1ac913/go.mod h1:J6OG6YJVEWopen4avK3VNQSnALmmjvniMmni/YFYAwc= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -608,14 +567,12 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/ffjson v0.0.0-20181028064349-e517b90714f7/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= github.com/pquerna/ffjson v0.0.0-20190813045741-dac163c6c0a9 h1:kyf9snWXHvQc+yxE9imhdI8YAm4oKeZISlaAR+x73zs= github.com/pquerna/ffjson v0.0.0-20190813045741-dac163c6c0a9/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA= @@ -627,15 +584,12 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= @@ -645,22 +599,19 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= 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/rootless-containers/proto v0.1.0 h1:gS1JOMEtk1YDYHCzBAf/url+olMJbac7MTrgSeP6zh4= github.com/rootless-containers/proto v0.1.0/go.mod h1:vgkUFZbQd0gcE/K/ZwtE4MYjZPu0UNHLXIQxhyqAFh8= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= @@ -676,25 +627,19 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.1.1 h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/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= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980 h1:lIOOHPEbXzO3vnmx2gok1Tfs31Q8GQqKLc8vVqyQq/I= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -709,7 +654,6 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= @@ -762,7 +706,6 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= @@ -782,7 +725,6 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/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-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -830,9 +772,7 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r 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= golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -888,11 +828,9 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/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-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1001,7 +939,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1143,7 +1080,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= @@ -1163,8 +1099,9 @@ 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-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/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 v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= From 88feb1a8766297f429b7639e11e173918ff2037d Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Fri, 24 Feb 2023 22:34:11 -0700 Subject: [PATCH 04/14] Testing for the batch package * Remove Min function (unused) Signed-off-by: Jonathon Anderson --- internal/pkg/batch/batch.go | 7 ------- internal/pkg/batch/batch_test.go | 34 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 internal/pkg/batch/batch_test.go diff --git a/internal/pkg/batch/batch.go b/internal/pkg/batch/batch.go index 1473828d..677851c4 100644 --- a/internal/pkg/batch/batch.go +++ b/internal/pkg/batch/batch.go @@ -17,13 +17,6 @@ func New(active int) *BatchPool { return pool } -func Min(x, y int) int { - if x < y { - return x - } - return y -} - func (pool *BatchPool) Submit(f func()) { pool.jobs = append(pool.jobs, f) } diff --git a/internal/pkg/batch/batch_test.go b/internal/pkg/batch/batch_test.go new file mode 100644 index 00000000..f3884776 --- /dev/null +++ b/internal/pkg/batch/batch_test.go @@ -0,0 +1,34 @@ +package batch + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +/* Submits 10 jobs into a pool that supports 2 simultaneous jobs, and + tests that only two of the jobs ran at a time by capturing the time + that they ran and comparing against the start time. */ +func TestBatchPool (t *testing.T) { + pool := New(2) + var times []time.Time + for i := 0; i <= 10; i++ { + pool.Submit(func() { + times = append(times, time.Now()) + time.Sleep(1 * time.Second) + }) + } + startTime := time.Now() + pool.Run() + assert.Equal(t, 0 * time.Second, times[0].Sub(startTime).Round(time.Second)) + assert.Equal(t, 0 * time.Second, times[1].Sub(startTime).Round(time.Second)) + assert.Equal(t, 1 * time.Second, times[2].Sub(startTime).Round(time.Second)) + assert.Equal(t, 1 * time.Second, times[3].Sub(startTime).Round(time.Second)) + assert.Equal(t, 2 * time.Second, times[4].Sub(startTime).Round(time.Second)) + assert.Equal(t, 2 * time.Second, times[5].Sub(startTime).Round(time.Second)) + assert.Equal(t, 3 * time.Second, times[6].Sub(startTime).Round(time.Second)) + assert.Equal(t, 3 * time.Second, times[7].Sub(startTime).Round(time.Second)) + assert.Equal(t, 4 * time.Second, times[8].Sub(startTime).Round(time.Second)) + assert.Equal(t, 4 * time.Second, times[9].Sub(startTime).Round(time.Second)) +} From 7fed7fd6a24db018764cdf40e45b3c29b89dbf78 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Tue, 28 Feb 2023 15:46:29 -0700 Subject: [PATCH 05/14] Remove reference to deprecated CIQ repository The CIQ repository mentioned in userdocs is expected to be decommissioned soon. Meanwhile, we have RPMs on the GitHub releases page. This updates the documentation to point to the project packages. Signed-off-by: Jonathon Anderson --- userdocs/contents/installation.rst | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/userdocs/contents/installation.rst b/userdocs/contents/installation.rst index be5bc598..31966719 100644 --- a/userdocs/contents/installation.rst +++ b/userdocs/contents/installation.rst @@ -8,22 +8,22 @@ the installation process of multiple methods: Binary RPMs =========== -While the Warewulf project does not build binary RPMs, you can obtain -them from `CIQ `_ and use them for -non-production use from their public YUM and DNF repositories at: -`https://repo.ctrliq.com `_ +The Warewulf project builds binary RPMs as part of its CI/CD +process. You can obtain them from the `GitHub releases +`_ page. -This is the easiest method to install Warewulf and can be done as follows: +Rocky Linux 8 +------------- .. code-block:: console - # yum install -y https://repo.ctrliq.com/rhel/8/ciq-release.rpm - # yum install -y warewulf + # dnf install https://github.com/hpcng/warewulf/releases/download/v4.4.0/warewulf-4.4.0-1.git_afcdb21.el8.x86_64.rpm -> note: as mentioned, these binaries are part of CIQ's commercial -support offering but they can be used for non-production and testing -uses. If you are interested in using these binaries for production, -please contact CIQ at: `info@ctrliq.com `_. +openSuse Leap + +.. code-block:: console + + # zypper install https://github.com/hpcng/warewulf/releases/download/v4.4.0/warewulf-4.4.0-1.git_afcdb21.suse.lp153.x86_64.rpm Compiled Source code ==================== From 8daa40f92917ddf352b4d2bbcc61fe5744db4458 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Wed, 1 Mar 2023 13:41:02 -0700 Subject: [PATCH 06/14] Update installation.rst --- userdocs/contents/installation.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/userdocs/contents/installation.rst b/userdocs/contents/installation.rst index 31966719..e7b62431 100644 --- a/userdocs/contents/installation.rst +++ b/userdocs/contents/installation.rst @@ -20,6 +20,7 @@ Rocky Linux 8 # dnf install https://github.com/hpcng/warewulf/releases/download/v4.4.0/warewulf-4.4.0-1.git_afcdb21.el8.x86_64.rpm openSuse Leap +------------- .. code-block:: console From ba0dec021aa3fdf43da4d7403e61f1e703ece852 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Fri, 10 Mar 2023 16:03:18 +0100 Subject: [PATCH 07/14] added experimental dnsmasq support Signed-off-by: Christian Goll --- CHANGELOG.md | 1 + overlays/host/dnsmasq.d/ww4-hosts.conf.ww | 30 +++++++++++++++++++++++ userdocs/contents/dnsmasq.rst | 17 +++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 overlays/host/dnsmasq.d/ww4-hosts.conf.ww create mode 100644 userdocs/contents/dnsmasq.rst diff --git a/CHANGELOG.md b/CHANGELOG.md index d9c14ff8..17690640 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The primary hostname and warewulf server fqdn are now the canonical name in `/etc/hosts` +- Added experimental dnsmasq support. ## [4.4.0] 2023-01-18 diff --git a/overlays/host/dnsmasq.d/ww4-hosts.conf.ww b/overlays/host/dnsmasq.d/ww4-hosts.conf.ww new file mode 100644 index 00000000..a9d6d66f --- /dev/null +++ b/overlays/host/dnsmasq.d/ww4-hosts.conf.ww @@ -0,0 +1,30 @@ +# This file was autgenerated by warewulf +# Host: {{.BuildHost}} +# Time: {{.BuildTime}} +# Source {{.BuildSource}} +{{ nobackup }} +# select the x86 hosts which will get the iXPE binary +dhcp-match=set:x86PC,option:client-arch, 7 #EFI x86-64 +dhcp-match=set:x86PC,option:client-arch, 6 #EFI x86-64 +dhcp-match=set:x86PC,option:client-arch, 9 #EFI x86-64 +{{ with (index $.Tftp.IpxeBinaries "00:07" ) }}dhcp-boot=tag:x86PC,"/warewulf/{{ index $.Tftp.IpxeBinaries "00:07" }}"{{ end }} +dhcp-no-override +# iPXE binary will get the following configuration file +dhcp-userclass=set:iPXE,iPXE +dhcp-boot=tag:iPXE,"http://{{$.Ipaddr}}:{{$.Warewulf.Port}}/ipxe/${mac:hexhyp}" +{{- if $.Tftp.Enabled }} +# also act as tftp server +tftp-root={{ $.Tftp.TftpRoot }} +{{- end }} +# define the the range +dhcp-range={{$.Dhcp.RangeStart}},{{$.Dhcp.RangeEnd}},{{$.Netmask}},6h +{{/* Add all the known hosts */}} +{{- range $node := $.AllNodes}} {{/* for each node */}} +{{- range $devname, $netdev := $node.NetDevs}} {{/* for each network device on the node */}} +{{- if $netdev.Ipaddr.Defined}} {{/* if we have an ip address on this network device */}} +{{- if $netdev.Hwaddr.Defined }} +dhcp-host={{$netdev.Hwaddr.Get}},set:warewulf,{{$node.Id.Get}},{{$netdev.Ipaddr.Get}},infinite +{{- end}} {{/* end if Hwaddr */}} +{{- end}} {{/* end if ip */}} +{{- end}} {{/* end for each network device */}} +{{- end}} {{/* end for each node */}} diff --git a/userdocs/contents/dnsmasq.rst b/userdocs/contents/dnsmasq.rst new file mode 100644 index 00000000..e1b97486 --- /dev/null +++ b/userdocs/contents/dnsmasq.rst @@ -0,0 +1,17 @@ +======= +Dnsmasq +======= + +Usage +===== + +As experimental feature its possible to use `dnsmasq` instead of the ISC `dhcpd` server in combination +with a `tFTP` server. The `dnsmasq` service is then acting as `dhcp` and `tftp` server. In order to keep +the file `/etc/dnsmasq.d/ww4-hosts.conf` is created and must be included in the main `dnsmasq.conf` via +the `conf-dir=/etc/dnsmasq.d` option. + +Addionally in the configuration file `warewulf.conf` in the sections `dhcp` and `tftp` the systemd name of +dnsmasq must set for the option `systemd name`. + +After this configuration steps its recommended to rebuild the host overlay with `wwctl overlay build -H` and +the the services should be configured with `wwctl configure -a`. From fe765681fe2df1b3d5b536ad062c8c3655bb7326 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 08:13:21 +0000 Subject: [PATCH 08/14] Bump github.com/creasty/defaults from 1.5.2 to 1.7.0 Bumps [github.com/creasty/defaults](https://github.com/creasty/defaults) from 1.5.2 to 1.7.0. - [Release notes](https://github.com/creasty/defaults/releases) - [Commits](https://github.com/creasty/defaults/compare/v1.5.2...v1.7.0) --- updated-dependencies: - dependency-name: github.com/creasty/defaults dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6159de0c..8021a45b 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/containers/image/v5 v5.7.0 github.com/containers/storage v1.30.0 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e - github.com/creasty/defaults v1.5.2 + github.com/creasty/defaults v1.7.0 github.com/fatih/color v1.13.0 github.com/golang/glog v1.0.0 github.com/golang/protobuf v1.5.2 diff --git a/go.sum b/go.sum index a58cfc27..5fdecffe 100644 --- a/go.sum +++ b/go.sum @@ -229,8 +229,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creasty/defaults v1.5.2 h1:/VfB6uxpyp6h0fr7SPp7n8WJBoV8jfxQXPCnkVSjyls= -github.com/creasty/defaults v1.5.2/go.mod h1:FPZ+Y0WNrbqOVw+c6av63eyHUAl6pMHZwqLPvXUZGfY= +github.com/creasty/defaults v1.7.0 h1:eNdqZvc5B509z18lD8yc212CAqJNvfT1Jq6L8WowdBA= +github.com/creasty/defaults v1.7.0/go.mod h1:iGzKe6pbEHnpMPtfDXZEr0NVxWnPTjb1bbDy08fPzYM= github.com/cyphar/filepath-securejoin v0.2.2 h1:jCwT2GTP+PY5nBz3c/YL5PAIbusElVrPujOBSCj8xRg= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= From 8dc016841214b18b8f674ccf5b4d0caef2ff5d1b Mon Sep 17 00:00:00 2001 From: jason yang Date: Fri, 17 Mar 2023 09:01:51 +0000 Subject: [PATCH 09/14] changing a profile always adds an empty default interface Signed-off-by: jason yang --- CHANGELOG.md | 1 + internal/pkg/api/profile/profile.go | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c89fd35..a8dbdb79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Boolean attributes now correctly account for profile and default values. #630 - Kernvel version is shown correctly +- Changing a profile always adds an empty default interface. #661 ## [4.4.0rc3] 2022-12-23 diff --git a/internal/pkg/api/profile/profile.go b/internal/pkg/api/profile/profile.go index 57aa40b7..15fc4512 100644 --- a/internal/pkg/api/profile/profile.go +++ b/internal/pkg/api/profile/profile.go @@ -15,7 +15,6 @@ import ( // NodeSet is the wwapiv1 implmentation for updating nodeinfo fields. func ProfileSet(set *wwapiv1.NodeSetParameter) (err error) { - if set == nil { return fmt.Errorf("NodeAddParameter is nil") } @@ -85,6 +84,10 @@ func ProfileSetParameterCheck(set *wwapiv1.NodeSetParameter, console bool) (node for _, p := range profiles { if util.InSlice(set.NodeNames, p.Id.Get()) { wwlog.Verbose("Evaluating profile: %s", p.Id.Get()) + // Fix issue: https://github.com/hpcng/warewulf/issues/661 + if p.Id.Get() == "default" && len(p.NetDevs) == 0 { + set.NetdevDelete = p.Id.Get() + } p.SetFrom(&pConf) if set.NetdevDelete != "" { if _, ok := p.NetDevs[set.NetdevDelete]; !ok { From 5ff2da7331b71857289ae2d0255fab8484880862 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Fri, 17 Mar 2023 14:57:59 -0600 Subject: [PATCH 10/14] Replace containers with pointer to warewulf-node-images Signed-off-by: Jonathon Anderson --- containers/Apptainer/centos-7.def | 17 ------ containers/Apptainer/leap-15.def | 19 ------- containers/Apptainer/rocky-8.def | 54 ------------------- containers/Docker/.gitignore | 1 - containers/Docker/Makefile | 9 ---- containers/Docker/centos-7/Containerfile | 36 ------------- containers/Docker/centos-7/container_exit.sh | 6 --- containers/Docker/centos-7/excludes | 2 - containers/Docker/openhpc-2/Containerfile | 7 --- containers/Docker/rockylinux-8/Containerfile | 35 ------------ .../Docker/rockylinux-8/container_exit.sh | 6 --- containers/Docker/rockylinux-8/excludes | 2 - containers/README.md | 9 ++++ 13 files changed, 9 insertions(+), 194 deletions(-) delete mode 100644 containers/Apptainer/centos-7.def delete mode 100644 containers/Apptainer/leap-15.def delete mode 100644 containers/Apptainer/rocky-8.def delete mode 100644 containers/Docker/.gitignore delete mode 100644 containers/Docker/Makefile delete mode 100644 containers/Docker/centos-7/Containerfile delete mode 100755 containers/Docker/centos-7/container_exit.sh delete mode 100644 containers/Docker/centos-7/excludes delete mode 100644 containers/Docker/openhpc-2/Containerfile delete mode 100644 containers/Docker/rockylinux-8/Containerfile delete mode 100755 containers/Docker/rockylinux-8/container_exit.sh delete mode 100644 containers/Docker/rockylinux-8/excludes create mode 100644 containers/README.md diff --git a/containers/Apptainer/centos-7.def b/containers/Apptainer/centos-7.def deleted file mode 100644 index 2b2f632b..00000000 --- a/containers/Apptainer/centos-7.def +++ /dev/null @@ -1,17 +0,0 @@ -BootStrap: yum -OSVersion: 7 -MirrorURL: http://mirror.centos.org/centos-%{OSVERSION}/%{OSVERSION}/os/x86_64/ -Include: yum - - -%post - - sed -i 's/^root:.:/root::/g' /etc/passwd - - yum install -y basesystem bash chkconfig coreutils e2fsprogs \ - ethtool filesystem findutils gawk grep initscripts iproute \ - iputils net-tools nfs-utils pam psmisc rdate rsync sed setup \ - shadow-utils rsyslog tcp_wrappers tzdata util-linux words \ - zlib tar less gzip which util-linux openssh-clients \ - openssh-server dhclient pciutils vim-minimal shadow-utils \ - strace cronie crontabs cpio wget centos-release ipmitool diff --git a/containers/Apptainer/leap-15.def b/containers/Apptainer/leap-15.def deleted file mode 100644 index e712ba72..00000000 --- a/containers/Apptainer/leap-15.def +++ /dev/null @@ -1,19 +0,0 @@ -BootStrap: zypper -OSVersion: 15.3 -MirrorURL: http://download.opensuse.org/distribution/leap/%{OSVERSION}/repo/oss/ -Include: zypper - - -%post - - sed -i 's/^root:.:/root::/g' /etc/passwd - - zypper install -y patterns-openSUSE-base bash coreutils e2fsprogs \ - ethtool filesystem findutils gawk grep \ - ifplugd iputils iproute2 net-tools nfs-client pam psmisc rsync sed \ - rsyslog util-linux words wicked tar less \ - gzip which util-linux openssh-clients openssh-server \ - pciutils vim strace sudo syslinux tcpdump timezone cronie cpio \ - wget ipmitool zypper - - systemctl enable sshd diff --git a/containers/Apptainer/rocky-8.def b/containers/Apptainer/rocky-8.def deleted file mode 100644 index 50575309..00000000 --- a/containers/Apptainer/rocky-8.def +++ /dev/null @@ -1,54 +0,0 @@ -BootStrap: docker -From: rockylinux:8 - -%post -dnf update -y ;\ - dnf install -y --allowerasing coreutils \ - cpio \ - dhclient \ - e2fsprogs \ - ethtool \ - findutils \ - initscripts \ - ipmitool \ - iproute \ - kernel-core \ - net-tools \ - network-scripts \ - nfs-utils \ - openssh-clients \ - openssh-server \ - pciutils \ - psmisc \ - rsync \ - rsyslog \ - strace \ - wget \ - which \ - words - -dnf clean all - -sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/system-auth -sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/password-auth - -rm -f /etc/sysconfig/network-scripts/ifcfg-e* - -systemctl unmask console-getty.service dev-hugepages.mount getty.target sys-fs-fuse-connections.mount systemd-logind.service systemd-remount-fs.service -systemctl enable network - -touch /etc/sysconfig/disable-deprecation-warnings - -mkdir -p /etc/warewulf -touch /etc/warewulf/excludes -touch /etc/warewulf/container_exit.sh -chmod +x /etc/warewulf/container_exit.sh - -echo "#!/bin/sh" > /etc/warewulf/container_exit.sh -echo "set -x" >> /etc/warewulf/container_exit.sh -echo "LANG=C" >> /etc/warewulf/container_exit.sh -echo "LC_CTYPE=C" >> /etc/warewulf/container_exit.sh -echo "export LANG LC_CTYPE" >> /etc/warewulf/container_exit.sh -echo "dnf clean all" >> /etc/warewulf/container_exit.sh -echo "/boot/" > /etc/warewulf/excludes -echo "/usr/share/GeoIP" >> /etc/warewulf/excludes \ No newline at end of file diff --git a/containers/Docker/.gitignore b/containers/Docker/.gitignore deleted file mode 100644 index d874ad67..00000000 --- a/containers/Docker/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.tar diff --git a/containers/Docker/Makefile b/containers/Docker/Makefile deleted file mode 100644 index 0343b9b2..00000000 --- a/containers/Docker/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -all: centos-7.tar rockylinux-8.tar openhpc-2.tar -.PHONY: all - -%.tar: %/Containerfile - podman save $$(podman build --quiet $*) >$@ - -clean: - rm -rf *.tar -.PHONY: clean diff --git a/containers/Docker/centos-7/Containerfile b/containers/Docker/centos-7/Containerfile deleted file mode 100644 index 1d7f23e7..00000000 --- a/containers/Docker/centos-7/Containerfile +++ /dev/null @@ -1,36 +0,0 @@ -FROM docker.io/library/centos:7 - -RUN yum update -y \ - && yum install -y \ - coreutils \ - cpio \ - dhclient \ - e2fsprogs \ - ethtool \ - findutils \ - initscripts \ - ipmitool \ - iproute \ - kernel \ - net-tools \ - network-scripts \ - nfs-utils \ - openssh-clients \ - openssh-server \ - pciutils \ - psmisc \ - rsync \ - rsyslog \ - strace \ - wget \ - which \ - words \ - && yum clean all \ - && sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/system-auth \ - && sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/password-auth \ - && rm -f /etc/sysconfig/network-scripts/ifcfg-e* \ - && systemctl unmask console-getty.service dev-hugepages.mount getty.target sys-fs-fuse-connections.mount systemd-logind.service systemd-remount-fs.service \ - && systemctl enable network - -COPY excludes /etc/warewulf/excludes -COPY container_exit.sh /etc/warewulf/container_exit.sh diff --git a/containers/Docker/centos-7/container_exit.sh b/containers/Docker/centos-7/container_exit.sh deleted file mode 100755 index 22bdbf51..00000000 --- a/containers/Docker/centos-7/container_exit.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -set -x -LANG=C -LC_CTYPE=C -export LANG LC_CTYPE -yum clean all diff --git a/containers/Docker/centos-7/excludes b/containers/Docker/centos-7/excludes deleted file mode 100644 index bf007032..00000000 --- a/containers/Docker/centos-7/excludes +++ /dev/null @@ -1,2 +0,0 @@ -/boot/ -/usr/share/GeoIP diff --git a/containers/Docker/openhpc-2/Containerfile b/containers/Docker/openhpc-2/Containerfile deleted file mode 100644 index 1a5e36b3..00000000 --- a/containers/Docker/openhpc-2/Containerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM docker.io/warewulf/rockylinux:8 - -RUN dnf -y install http://repos.openhpc.community/OpenHPC/2/CentOS_8/x86_64/ohpc-release-2-1.el8.x86_64.rpm \ - && sed -i -e 's/^enabled=0/enabled=1/g' /etc/yum.repos.d/*-PowerTools.repo \ - && dnf -y install ohpc-base-compute ohpc-slurm-client chrony lmod-ohpc \ - && dnf -y clean all \ - && systemctl enable munge diff --git a/containers/Docker/rockylinux-8/Containerfile b/containers/Docker/rockylinux-8/Containerfile deleted file mode 100644 index 1200eb66..00000000 --- a/containers/Docker/rockylinux-8/Containerfile +++ /dev/null @@ -1,35 +0,0 @@ -FROM docker.io/library/rockylinux:8 - -RUN dnf update -y \ - && dnf install -y --allowerasing coreutils \ - cpio \ - dhclient \ - e2fsprogs \ - ethtool \ - findutils \ - initscripts \ - ipmitool \ - iproute \ - kernel-core \ - kernel-modules \ - net-tools \ - network-scripts \ - nfs-utils \ - openssh-clients \ - openssh-server \ - pciutils \ - psmisc \ - rsync \ - rsyslog \ - strace \ - wget \ - which \ - words \ - && dnf clean all - -RUN sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/system-auth \ - && sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/password-auth \ - && rm -f /etc/sysconfig/network-scripts/ifcfg-e* \ - && systemctl unmask console-getty.service dev-hugepages.mount getty.target sys-fs-fuse-connections.mount systemd-logind.service systemd-remount-fs.service \ - && systemctl enable network \ - && touch /etc/sysconfig/disable-deprecation-warnings diff --git a/containers/Docker/rockylinux-8/container_exit.sh b/containers/Docker/rockylinux-8/container_exit.sh deleted file mode 100755 index 84993a5f..00000000 --- a/containers/Docker/rockylinux-8/container_exit.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -set -x -LANG=C -LC_CTYPE=C -export LANG LC_CTYPE -dnf clean all diff --git a/containers/Docker/rockylinux-8/excludes b/containers/Docker/rockylinux-8/excludes deleted file mode 100644 index bf007032..00000000 --- a/containers/Docker/rockylinux-8/excludes +++ /dev/null @@ -1,2 +0,0 @@ -/boot/ -/usr/share/GeoIP diff --git a/containers/README.md b/containers/README.md new file mode 100644 index 00000000..04c5170f --- /dev/null +++ b/containers/README.md @@ -0,0 +1,9 @@ +# Node images have moved + +Warewulf node images are now being maintained in a separate repository: + +https://github.com/hpcng/warewulf-node-images. + +Images are built and published to GHCR automatically: + +https://github.com/orgs/hpcng/packages?repo_name=warewulf-node-images From 4c21a725728de262dd040f75b07d1b135591af73 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Mon, 20 Mar 2023 15:12:14 -0600 Subject: [PATCH 11/14] Restrict access to /warewulf/config from overlays The wwinit overlay populates /warewulf/config with information about the Warewulf configuration. This includes the IPMI password, which should not be visible to regular users. This changes the installed permissions of the file to be readable by root only. Closes #728 Signed-off-by: Jonathon Anderson --- CHANGELOG.md | 1 + Makefile | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5245f88..688036a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The correct header is now displayed when `-al` flags are specified to overlay list. +- Restrict access to `/warewulf/config` to root only. (#728, #742) ### Changed diff --git a/Makefile b/Makefile index 2772c723..61e470bc 100644 --- a/Makefile +++ b/Makefile @@ -188,7 +188,7 @@ files: all chmod 600 $(DESTDIR)$(WWOVERLAYDIR)/wwinit/etc/ssh/ssh* chmod 600 $(DESTDIR)$(WWOVERLAYDIR)/wwinit/etc/NetworkManager/system-connections/ww4-managed.ww chmod 644 $(DESTDIR)$(WWOVERLAYDIR)/wwinit/etc/ssh/ssh*.pub.ww - chmod 644 $(DESTDIR)$(WWOVERLAYDIR)/wwinit/warewulf/config.ww + chmod 600 $(DESTDIR)$(WWOVERLAYDIR)/wwinit/warewulf/config.ww chmod 750 $(DESTDIR)$(WWOVERLAYDIR)/host install -m 0755 wwctl $(DESTDIR)$(BINDIR) install -m 0755 wwapic $(DESTDIR)$(BINDIR) From 6073354d24353b1b71cd039880094849268524fe Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Mon, 20 Mar 2023 16:07:15 -0600 Subject: [PATCH 12/14] Update documentation to reference ghcr rather than DockerHub Warewulf sample node images are now built automatically with GitHub CI/CD, targeting ghcr.io. This updates the documentation to reference that location rather than DockerHub. Addresses #732 Signed-off-by: Jonathon Anderson --- internal/app/api/wwapird_curls/curls.sh | 4 ++-- internal/app/wwctl/container/imprt/root.go | 2 +- userdocs/contents/containers.rst | 2 +- userdocs/contributing/development-environment-kvm.rst | 2 +- userdocs/contributing/development-environment-vbox.rst | 2 +- userdocs/quickstart/el7.rst | 2 +- userdocs/quickstart/el8.rst | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/app/api/wwapird_curls/curls.sh b/internal/app/api/wwapird_curls/curls.sh index a9f95d54..e4f6ac01 100644 --- a/internal/app/api/wwapird_curls/curls.sh +++ b/internal/app/api/wwapird_curls/curls.sh @@ -15,7 +15,7 @@ curl --cacert /usr/local/etc/warewulf/keys/cacert.pem \ curl http://localhost:9871/v1/container # container import -curl -d '{"source": "docker://warewulf/rocky:8", "name": "rocky-8", "update": true, "default": true}' -H "Content-Type: application/json" -X POST http://localhost:9871/v1/container +curl -d '{"source": "docker://ghcr.io/hpcng/warewulf-rockylinux:8", "name": "rocky-8", "update": true, "default": true}' -H "Content-Type: application/json" -X POST http://localhost:9871/v1/container # container delete curl -X DELETE http://localhost:9871/v1/container?containerNames=rocky-8 @@ -54,4 +54,4 @@ curl http://localhost:9871/v1/nodestatus?nodeNames=testApiNode0 # node delete single node curl -X DELETE http://localhost:9871/v1/node?nodeNames=testApiNode0 -curl -X DELETE http://localhost:9871/v1/node?nodeNames=testApiNode1 \ No newline at end of file +curl -X DELETE http://localhost:9871/v1/node?nodeNames=testApiNode1 diff --git a/internal/app/wwctl/container/imprt/root.go b/internal/app/wwctl/container/imprt/root.go index bd3a563b..edafc127 100644 --- a/internal/app/wwctl/container/imprt/root.go +++ b/internal/app/wwctl/container/imprt/root.go @@ -16,7 +16,7 @@ are: * /path/to/archive/tar/ball * /path/to/chroot/ Imported containers are used to create bootable VNFS images.`, - Example: "wwctl container import docker://warewulf/centos-8 my_container", + Example: "wwctl container import docker://ghcr.io/hpcng/warewulf-rockylinux:8 rockylinux-8", RunE: CobraRunE, Args: cobra.MinimumNArgs(1), } diff --git a/userdocs/contents/containers.rst b/userdocs/contents/containers.rst index c8b0a5d3..641d023b 100644 --- a/userdocs/contents/containers.rst +++ b/userdocs/contents/containers.rst @@ -48,7 +48,7 @@ Here is an example of importing from Docker Hub. .. code-block:: console - # wwctl container import docker://warewulf/rocky rocky-8 + # wwctl container import docker://ghcr.io/hpcng/warewulf-rockylinux:8 rocky-8 Getting image source signatures Copying blob d7f16ed6f451 done Copying config da2ca70704 done diff --git a/userdocs/contributing/development-environment-kvm.rst b/userdocs/contributing/development-environment-kvm.rst index 023b3eb9..83149f9f 100644 --- a/userdocs/contributing/development-environment-kvm.rst +++ b/userdocs/contributing/development-environment-kvm.rst @@ -102,7 +102,7 @@ Build and install Warewulf on wwdev sudo wwctl configure ssh # Build the basic ssh keys to be included by the default system overlay # Pull and build the VNFS container and kernel - sudo wwctl container import docker://warewulf/centos-8 centos-8 --setdefault + sudo wwctl container import docker://ghcr.io/hpcng/warewulf-centos:7 centos-7 --setdefault sudo wwctl kernel import build $(uname -r) --setdefault # Set up the default node profile diff --git a/userdocs/contributing/development-environment-vbox.rst b/userdocs/contributing/development-environment-vbox.rst index 8d504aa5..e432466c 100644 --- a/userdocs/contributing/development-environment-vbox.rst +++ b/userdocs/contributing/development-environment-vbox.rst @@ -117,7 +117,7 @@ I have VirtualBox running on my desktop. sudo wwctl configure ssh --persist # Build the basic ssh keys to be included by the default system overlay # Pull and build the VNFS container and kernel - sudo wwctl container import docker://warewulf/centos-7 centos-7 --setdefault + sudo wwctl container import docker://ghcr.io/hpcng/warewulf-centos:7 centos-7 --setdefault sudo wwctl kernel import build $(uname -r) --setdefault # Set up the default node profile diff --git a/userdocs/quickstart/el7.rst b/userdocs/quickstart/el7.rst index a82445cd..c5859d56 100644 --- a/userdocs/quickstart/el7.rst +++ b/userdocs/quickstart/el7.rst @@ -103,7 +103,7 @@ default running kernel from the controller node and set both in the .. code-block:: bash - sudo wwctl container import docker://warewulf/centos-7 centos-7 --setdefault + sudo wwctl container import docker://ghcr.io/hpcng/warewulf-centos:7 centos-7 --setdefault sudo wwctl kernel import $(uname -r) --setdefault Set up the default node profile diff --git a/userdocs/quickstart/el8.rst b/userdocs/quickstart/el8.rst index 215b0037..4c812914 100644 --- a/userdocs/quickstart/el8.rst +++ b/userdocs/quickstart/el8.rst @@ -105,7 +105,7 @@ default running kernel from the controller node and set both in the .. code-block:: bash - sudo wwctl container import docker://warewulf/rocky:8 rocky-8 + sudo wwctl container import docker://ghcr.io/hpcng/warewulf-rockylinux:8 rocky-8 Set up the default node profile From 225d8a1379110ebf49bace245bbc87fd2a779012 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Mon, 20 Mar 2023 16:57:17 -0600 Subject: [PATCH 13/14] Add .ww suffix to 70-ww4-netname.rules Fixes #724 Signed-off-by: Jonathon Anderson --- CHANGELOG.md | 2 ++ .../rules.d/{70-ww4-netname.rules => 70-ww4-netname.rules.ww} | 0 2 files changed, 2 insertions(+) rename overlays/wwinit/etc/udev/rules.d/{70-ww4-netname.rules => 70-ww4-netname.rules.ww} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5245f88..7d60bcb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The correct header is now displayed when `-al` flags are specified to overlay list. +- Added a missing `.ww` extension to the `70-ww4-netname.rules` template in the + wwinit overlay. ### Changed diff --git a/overlays/wwinit/etc/udev/rules.d/70-ww4-netname.rules b/overlays/wwinit/etc/udev/rules.d/70-ww4-netname.rules.ww similarity index 100% rename from overlays/wwinit/etc/udev/rules.d/70-ww4-netname.rules rename to overlays/wwinit/etc/udev/rules.d/70-ww4-netname.rules.ww From 84bfccba439dd2683787bf5abf1050758b592bec Mon Sep 17 00:00:00 2001 From: jason yang Date: Wed, 22 Mar 2023 04:18:50 +0000 Subject: [PATCH 14/14] add support for resolving absolute path automatically Signed-off-by: jason yang --- CHANGELOG.md | 1 + internal/pkg/api/container/container.go | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1017537..9e3db101 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a missing `.ww` extension to the `70-ww4-netname.rules` template in the wwinit overlay. - Restrict access to `/warewulf/config` to root only. (#728, #742) +- Add support for resolving absolute path automatically. #493 ### Changed diff --git a/internal/pkg/api/container/container.go b/internal/pkg/api/container/container.go index fdf720fd..5ae4347a 100644 --- a/internal/pkg/api/container/container.go +++ b/internal/pkg/api/container/container.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "path" + "path/filepath" "strconv" "strings" @@ -18,7 +19,6 @@ import ( ) func ContainerBuild(cbp *wwapiv1.ContainerBuildParameter) (err error) { - if cbp == nil { return fmt.Errorf("ContainerBuildParameter is nil") } @@ -60,7 +60,7 @@ func ContainerBuild(cbp *wwapiv1.ContainerBuildParameter) (err error) { return } - //TODO: Don't loop through profiles, instead have a nodeDB function that goes directly to the map + // TODO: Don't loop through profiles, instead have a nodeDB function that goes directly to the map profiles, _ := nodeDB.FindAllProfiles() for _, profile := range profiles { wwlog.Debug("Looking for profile default: %s", profile.Id.Get()) @@ -85,7 +85,6 @@ func ContainerBuild(cbp *wwapiv1.ContainerBuildParameter) (err error) { } func ContainerDelete(cdp *wwapiv1.ContainerDeleteParameter) (err error) { - if cdp == nil { return fmt.Errorf("ContainerDeleteParameter is nil") } @@ -132,7 +131,6 @@ ARG_LOOP: } func ContainerImport(cip *wwapiv1.ContainerImportParameter) (containerName string, err error) { - if cip == nil { err = fmt.Errorf("NodeAddParameter is nil") return @@ -176,6 +174,14 @@ func ContainerImport(cip *wwapiv1.ContainerImportParameter) (containerName strin // TODO: mhink - return was missing here. Was that deliberate? } + if util.IsFile(cip.Source) && !filepath.IsAbs(cip.Source) { + cip.Source, err = filepath.Abs(cip.Source) + if err != nil { + err = fmt.Errorf("when resolving absolute path of %s, err: %v", cip.Source, err) + wwlog.Error(err.Error()) + return + } + } err = container.ImportDocker(cip.Source, cip.Name, sCtx) if err != nil { err = fmt.Errorf("could not import image: %s", err.Error()) @@ -221,7 +227,7 @@ func ContainerImport(cip *wwapiv1.ContainerImportParameter) (containerName strin return } - //TODO: Don't loop through profiles, instead have a nodeDB function that goes directly to the map + // TODO: Don't loop through profiles, instead have a nodeDB function that goes directly to the map profiles, _ := nodeDB.FindAllProfiles() for _, profile := range profiles { wwlog.Debug("Looking for profile default: %s", profile.Id.Get()) @@ -332,7 +338,6 @@ func ContainerList() (containerInfo []*wwapiv1.ContainerInfo, err error) { } func ContainerShow(csp *wwapiv1.ContainerShowParameter) (response *wwapiv1.ContainerShowResponse, err error) { - containerName := csp.ContainerName if !container.ValidName(containerName) {