Skip to content

Commit b544a60

Browse files
authored
Migrate to go-1.22 and slog (#16)
1 parent 6eb6b52 commit b544a60

File tree

12 files changed

+318
-853
lines changed

12 files changed

+318
-853
lines changed

.github/workflows/docker.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ jobs:
2929
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
3030

3131
- name: Checkout
32-
uses: actions/checkout@v3
32+
uses: actions/checkout@v4
3333

34-
- name: Set up Go 1.20
35-
uses: actions/setup-go@v4
34+
- name: Set up Go 1.22
35+
uses: actions/setup-go@v5
3636
with:
37-
go-version: '1.20'
37+
go-version: '1.22'
3838

3939
- name: Lint
4040
uses: golangci/golangci-lint-action@v3

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM ghcr.io/metal-stack/builder:latest as builder
22

3-
FROM alpine:3.17
3+
FROM alpine:3.19
44
RUN apk add --no-cache tini ca-certificates
55
COPY --from=builder /work/bin/metal-image-cache-sync /metal-image-cache-sync
66
CMD ["/metal-image-cache-sync"]

cmd/internal/determine-sync-images/lister.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package synclister
33
import (
44
"context"
55
"fmt"
6+
"log/slog"
67
"net/http"
78
"net/url"
89
"sort"
@@ -17,11 +18,10 @@ import (
1718
"github.com/metal-stack/metal-image-cache-sync/cmd/internal/metrics"
1819
"github.com/metal-stack/metal-image-cache-sync/pkg/api"
1920
"github.com/metal-stack/metal-image-cache-sync/pkg/utils"
20-
"go.uber.org/zap"
2121
)
2222

2323
type SyncLister struct {
24-
logger *zap.SugaredLogger
24+
logger *slog.Logger
2525
client metalgo.Client
2626
config *api.Config
2727
s3 *s3.S3
@@ -30,7 +30,7 @@ type SyncLister struct {
3030
httpClient *http.Client
3131
}
3232

33-
func NewSyncLister(logger *zap.SugaredLogger, client metalgo.Client, s3 *s3.S3, imageCollector *metrics.ImageCollector, config *api.Config, stop context.Context) *SyncLister {
33+
func NewSyncLister(logger *slog.Logger, client metalgo.Client, s3 *s3.S3, imageCollector *metrics.ImageCollector, config *api.Config, stop context.Context) *SyncLister {
3434
return &SyncLister{
3535
logger: logger,
3636
client: client,
@@ -60,20 +60,20 @@ func (s *SyncLister) DetermineImageSyncList() ([]api.OS, error) {
6060
images := api.OSImagesByOS{}
6161
for _, img := range resp.Payload {
6262
if s.isExcluded(img.URL) {
63-
s.logger.Debugw("skipping image with exclude URL", "id", *img.ID)
63+
s.logger.Debug("skipping image with exclude URL", "id", *img.ID)
6464
continue
6565
}
6666

6767
if img.ExpirationDate != nil {
6868
if time.Since(time.Time(*img.ExpirationDate)) > expirationGraceDays {
69-
s.logger.Debugw("not considering expired image, skipping", "id", *img.ID)
69+
s.logger.Debug("not considering expired image, skipping", "id", *img.ID)
7070
continue
7171
}
7272
}
7373

7474
os, ver, err := utils.GetOsAndSemver(*img.ID)
7575
if err != nil {
76-
s.logger.Errorw("could not extract os and version, skipping", "error", err)
76+
s.logger.Error("could not extract os and version, skipping", "error", err)
7777
continue
7878
}
7979

@@ -87,21 +87,21 @@ func (s *SyncLister) DetermineImageSyncList() ([]api.OS, error) {
8787

8888
u, err := url.Parse(img.URL)
8989
if err != nil {
90-
s.logger.Errorw("image url is invalid, skipping", "error", err)
90+
s.logger.Error("image url is invalid, skipping", "error", err)
9191
continue
9292
}
9393

9494
bucketKey := u.Path[1:]
9595

9696
s3Image, ok := s3Images[bucketKey]
9797
if !ok {
98-
s.logger.Errorw("image is not contained in global image store, skipping", "path", u.Path, "id", *img.ID)
98+
s.logger.Error("image is not contained in global image store, skipping", "path", u.Path, "id", *img.ID)
9999
continue
100100
}
101101

102102
s3MD5, ok := s3Images[bucketKey+".md5"]
103103
if !ok {
104-
s.logger.Errorw("image md5 is not contained in global image store, skipping", "path", u.Path, "id", *img.ID)
104+
s.logger.Error("image md5 is not contained in global image store, skipping", "path", u.Path, "id", *img.ID)
105105
continue
106106
}
107107

@@ -189,19 +189,19 @@ func (s *SyncLister) DetermineKernelSyncList() ([]api.Kernel, error) {
189189
}
190190

191191
if s.isExcluded(kernelURL) {
192-
s.logger.Debugw("skipping kernel with exclude URL", "url", kernelURL)
192+
s.logger.Debug("skipping kernel with exclude URL", "url", kernelURL)
193193
continue
194194
}
195195

196196
u, err := url.Parse(kernelURL)
197197
if err != nil {
198-
s.logger.Errorw("kernel url is invalid, skipping", "error", err)
198+
s.logger.Error("kernel url is invalid, skipping", "error", err)
199199
continue
200200
}
201201

202202
size, err := retrieveContentLength(s.stop, s.httpClient, u.String())
203203
if err != nil {
204-
s.logger.Warnw("unable to determine kernel download size", "error", err)
204+
s.logger.Warn("unable to determine kernel download size", "error", err)
205205
}
206206

207207
result = append(result, api.Kernel{
@@ -236,25 +236,25 @@ func (s *SyncLister) DetermineBootImageSyncList() ([]api.BootImage, error) {
236236
}
237237

238238
if s.isExcluded(bootImageURL) {
239-
s.logger.Debugw("skipping boot image with exclude URL", "url", bootImageURL)
239+
s.logger.Debug("skipping boot image with exclude URL", "url", bootImageURL)
240240
continue
241241
}
242242

243243
u, err := url.Parse(bootImageURL)
244244
if err != nil {
245-
s.logger.Errorw("boot image url is invalid, skipping", "error", err)
245+
s.logger.Error("boot image url is invalid, skipping", "error", err)
246246
continue
247247
}
248248

249249
size, err := retrieveContentLength(s.stop, s.httpClient, u.String())
250250
if err != nil {
251-
s.logger.Warnw("unable to determine boot image download size", "error", err)
251+
s.logger.Warn("unable to determine boot image download size", "error", err)
252252
}
253253

254254
md5URL := u.String() + ".md5"
255255
_, err = retrieveContentLength(s.stop, s.httpClient, md5URL)
256256
if err != nil {
257-
s.logger.Errorw("boot image md5 does not exist, skipping", "url", md5URL, "error", err)
257+
s.logger.Error("boot image md5 does not exist, skipping", "url", md5URL, "error", err)
258258
continue
259259
}
260260

cmd/internal/metrics/boot-image-collector.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
package metrics
22

33
import (
4+
"log/slog"
5+
46
"github.com/prometheus/client_golang/prometheus"
57
"github.com/prometheus/client_golang/prometheus/collectors"
6-
"go.uber.org/zap"
78
)
89

910
type BootImageCollector struct {
10-
logger *zap.SugaredLogger
11+
logger *slog.Logger
1112
reg *prometheus.Registry
1213
rootPath string
1314
cacheMissInc func()
1415
cacheDownloads func()
1516
}
1617

17-
func MustBootImageMetrics(logger *zap.SugaredLogger, rootPath string) *BootImageCollector {
18+
func MustBootImageMetrics(logger *slog.Logger, rootPath string) *BootImageCollector {
1819
c := &BootImageCollector{
1920
logger: logger,
2021
rootPath: rootPath,
@@ -57,7 +58,7 @@ func (c *BootImageCollector) cacheDirSize() float64 {
5758
size, err := dirSize(c.rootPath)
5859

5960
if err != nil {
60-
c.logger.Errorw("error collecting cache dir size metric", "error", err)
61+
c.logger.Error("error collecting cache dir size metric", "error", err)
6162
}
6263

6364
return float64(size)
@@ -67,7 +68,7 @@ func (c *BootImageCollector) cacheImageCount() float64 {
6768
count, err := fileCount(c.rootPath)
6869

6970
if err != nil {
70-
c.logger.Errorw("error collecting image cache count metric", "error", err)
71+
c.logger.Error("error collecting image cache count metric", "error", err)
7172
}
7273

7374
return float64(count)

cmd/internal/metrics/image-collector.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package metrics
22

33
import (
4+
"log/slog"
5+
46
"github.com/prometheus/client_golang/prometheus"
57
"github.com/prometheus/client_golang/prometheus/collectors"
6-
"go.uber.org/zap"
78
)
89

910
type ImageCollector struct {
10-
logger *zap.SugaredLogger
11+
logger *slog.Logger
1112
reg *prometheus.Registry
1213
rootPath string
1314
cacheMissInc func()
@@ -18,7 +19,7 @@ type ImageCollector struct {
1819
metalAPIImageCount func(float64)
1920
}
2021

21-
func MustImageMetrics(logger *zap.SugaredLogger, rootPath string) *ImageCollector {
22+
func MustImageMetrics(logger *slog.Logger, rootPath string) *ImageCollector {
2223
c := &ImageCollector{
2324
logger: logger,
2425
rootPath: rootPath,
@@ -89,7 +90,7 @@ func (c *ImageCollector) cacheDirSize() float64 {
8990
size, err := dirSize(c.rootPath)
9091

9192
if err != nil {
92-
c.logger.Errorw("error collecting cache dir size metric", "error", err)
93+
c.logger.Error("error collecting cache dir size metric", "error", err)
9394
}
9495

9596
return float64(size)
@@ -99,7 +100,7 @@ func (c *ImageCollector) cacheImageCount() float64 {
99100
count, err := fileCount(c.rootPath)
100101

101102
if err != nil {
102-
c.logger.Errorw("error collecting image cache count metric", "error", err)
103+
c.logger.Error("error collecting image cache count metric", "error", err)
103104
}
104105

105106
return float64(count)

cmd/internal/metrics/kernel-collector.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ package metrics
22

33
import (
44
"fmt"
5+
"log/slog"
56

67
"github.com/prometheus/client_golang/prometheus"
78
"github.com/prometheus/client_golang/prometheus/collectors"
8-
"go.uber.org/zap"
99
)
1010

1111
type KernelCollector struct {
12-
logger *zap.SugaredLogger
12+
logger *slog.Logger
1313
reg *prometheus.Registry
1414
rootPath string
1515
cacheMissInc func()
1616
cacheDownloads func()
1717
}
1818

19-
func MustKernelMetrics(logger *zap.SugaredLogger, rootPath string) *KernelCollector {
19+
func MustKernelMetrics(logger *slog.Logger, rootPath string) *KernelCollector {
2020
c := &KernelCollector{
2121
logger: logger,
2222
rootPath: rootPath,
@@ -60,7 +60,7 @@ func (c *KernelCollector) cacheDirSize() float64 {
6060
size, err := dirSize(c.rootPath)
6161

6262
if err != nil {
63-
c.logger.Errorw("error collecting cache dir size metric", "error", err)
63+
c.logger.Error("error collecting cache dir size metric", "error", err)
6464
}
6565

6666
return float64(size)
@@ -70,7 +70,7 @@ func (c *KernelCollector) cacheImageCount() float64 {
7070
count, err := fileCount(c.rootPath)
7171

7272
if err != nil {
73-
c.logger.Errorw("error collecting image cache count metric", "error", err)
73+
c.logger.Error("error collecting image cache count metric", "error", err)
7474
}
7575

7676
return float64(count)

0 commit comments

Comments
 (0)