Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to go-1.22 and slog #16

Merged
merged 3 commits into from
Feb 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ jobs:
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}

- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Set up Go 1.20
uses: actions/setup-go@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: '1.20'
go-version: '1.22'

- name: Lint
uses: golangci/golangci-lint-action@v3
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ghcr.io/metal-stack/builder:latest as builder

FROM alpine:3.17
FROM alpine:3.19
RUN apk add --no-cache tini ca-certificates
COPY --from=builder /work/bin/metal-image-cache-sync /metal-image-cache-sync
CMD ["/metal-image-cache-sync"]
32 changes: 16 additions & 16 deletions cmd/internal/determine-sync-images/lister.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package synclister
import (
"context"
"fmt"
"log/slog"
"net/http"
"net/url"
"sort"
Expand All @@ -17,11 +18,10 @@ import (
"github.com/metal-stack/metal-image-cache-sync/cmd/internal/metrics"
"github.com/metal-stack/metal-image-cache-sync/pkg/api"
"github.com/metal-stack/metal-image-cache-sync/pkg/utils"
"go.uber.org/zap"
)

type SyncLister struct {
logger *zap.SugaredLogger
logger *slog.Logger
client metalgo.Client
config *api.Config
s3 *s3.S3
Expand All @@ -30,7 +30,7 @@ type SyncLister struct {
httpClient *http.Client
}

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

if img.ExpirationDate != nil {
if time.Since(time.Time(*img.ExpirationDate)) > expirationGraceDays {
s.logger.Debugw("not considering expired image, skipping", "id", *img.ID)
s.logger.Debug("not considering expired image, skipping", "id", *img.ID)
continue
}
}

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

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

u, err := url.Parse(img.URL)
if err != nil {
s.logger.Errorw("image url is invalid, skipping", "error", err)
s.logger.Error("image url is invalid, skipping", "error", err)
continue
}

bucketKey := u.Path[1:]

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

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

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

if s.isExcluded(kernelURL) {
s.logger.Debugw("skipping kernel with exclude URL", "url", kernelURL)
s.logger.Debug("skipping kernel with exclude URL", "url", kernelURL)
continue
}

u, err := url.Parse(kernelURL)
if err != nil {
s.logger.Errorw("kernel url is invalid, skipping", "error", err)
s.logger.Error("kernel url is invalid, skipping", "error", err)
continue
}

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

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

if s.isExcluded(bootImageURL) {
s.logger.Debugw("skipping boot image with exclude URL", "url", bootImageURL)
s.logger.Debug("skipping boot image with exclude URL", "url", bootImageURL)
continue
}

u, err := url.Parse(bootImageURL)
if err != nil {
s.logger.Errorw("boot image url is invalid, skipping", "error", err)
s.logger.Error("boot image url is invalid, skipping", "error", err)
continue
}

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

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

Expand Down
11 changes: 6 additions & 5 deletions cmd/internal/metrics/boot-image-collector.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
package metrics

import (
"log/slog"

"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
"go.uber.org/zap"
)

type BootImageCollector struct {
logger *zap.SugaredLogger
logger *slog.Logger
reg *prometheus.Registry
rootPath string
cacheMissInc func()
cacheDownloads func()
}

func MustBootImageMetrics(logger *zap.SugaredLogger, rootPath string) *BootImageCollector {
func MustBootImageMetrics(logger *slog.Logger, rootPath string) *BootImageCollector {
c := &BootImageCollector{
logger: logger,
rootPath: rootPath,
Expand Down Expand Up @@ -57,7 +58,7 @@ func (c *BootImageCollector) cacheDirSize() float64 {
size, err := dirSize(c.rootPath)

if err != nil {
c.logger.Errorw("error collecting cache dir size metric", "error", err)
c.logger.Error("error collecting cache dir size metric", "error", err)
}

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

if err != nil {
c.logger.Errorw("error collecting image cache count metric", "error", err)
c.logger.Error("error collecting image cache count metric", "error", err)
}

return float64(count)
Expand Down
11 changes: 6 additions & 5 deletions cmd/internal/metrics/image-collector.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package metrics

import (
"log/slog"

"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
"go.uber.org/zap"
)

type ImageCollector struct {
logger *zap.SugaredLogger
logger *slog.Logger
reg *prometheus.Registry
rootPath string
cacheMissInc func()
Expand All @@ -18,7 +19,7 @@ type ImageCollector struct {
metalAPIImageCount func(float64)
}

func MustImageMetrics(logger *zap.SugaredLogger, rootPath string) *ImageCollector {
func MustImageMetrics(logger *slog.Logger, rootPath string) *ImageCollector {
c := &ImageCollector{
logger: logger,
rootPath: rootPath,
Expand Down Expand Up @@ -89,7 +90,7 @@ func (c *ImageCollector) cacheDirSize() float64 {
size, err := dirSize(c.rootPath)

if err != nil {
c.logger.Errorw("error collecting cache dir size metric", "error", err)
c.logger.Error("error collecting cache dir size metric", "error", err)
}

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

if err != nil {
c.logger.Errorw("error collecting image cache count metric", "error", err)
c.logger.Error("error collecting image cache count metric", "error", err)
}

return float64(count)
Expand Down
10 changes: 5 additions & 5 deletions cmd/internal/metrics/kernel-collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@ package metrics

import (
"fmt"
"log/slog"

"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
"go.uber.org/zap"
)

type KernelCollector struct {
logger *zap.SugaredLogger
logger *slog.Logger
reg *prometheus.Registry
rootPath string
cacheMissInc func()
cacheDownloads func()
}

func MustKernelMetrics(logger *zap.SugaredLogger, rootPath string) *KernelCollector {
func MustKernelMetrics(logger *slog.Logger, rootPath string) *KernelCollector {
c := &KernelCollector{
logger: logger,
rootPath: rootPath,
Expand Down Expand Up @@ -60,7 +60,7 @@ func (c *KernelCollector) cacheDirSize() float64 {
size, err := dirSize(c.rootPath)

if err != nil {
c.logger.Errorw("error collecting cache dir size metric", "error", err)
c.logger.Error("error collecting cache dir size metric", "error", err)
}

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

if err != nil {
c.logger.Errorw("error collecting image cache count metric", "error", err)
c.logger.Error("error collecting image cache count metric", "error", err)
}

return float64(count)
Expand Down
Loading
Loading