From 8a879ab9ca7a7fa12ef73361b44fd4c90dd61fd5 Mon Sep 17 00:00:00 2001 From: Daniel Lipovetsky Date: Mon, 13 May 2024 15:24:47 -0700 Subject: [PATCH] refactor: Derive path of a patch file in a common package --- pkg/common/constants.go | 26 +++++++++++++++++++ .../mutation/containerdmetrics/metrics.go | 11 ++------ .../credential_provider_install_files.go | 10 ++++--- .../generic/mutation/mirrors/mirror.go | 7 +++-- 4 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 pkg/common/constants.go diff --git a/pkg/common/constants.go b/pkg/common/constants.go new file mode 100644 index 000000000..f0f629d5d --- /dev/null +++ b/pkg/common/constants.go @@ -0,0 +1,26 @@ +// Copyright 2024 Nutanix. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +package common + +import "path/filepath" + +const ( + // PatchRootDirOnRemote is the directory on the machine where we write patches as files. + // These files are later applied by one or more commands that run on the machine. + PatchRootDirOnRemote = "/etc/caren" +) + +// ContainerdPatchDirOnRemote is the directory where we write containerd patches as files. +// It is a subdirectory of the root patches directory. +var ContainerdPatchDirOnRemote = filepath.Join(PatchRootDirOnRemote, "containerd") + +// PatchPathOnRemote returns the absolute path of a patch on the machine. +func PatchPathOnRemote(relativePath string) string { + return filepath.Join(PatchRootDirOnRemote, relativePath) +} + +// ContainerdPatchPathOnRemote returns the absolute path of a containerd patch on the machine. +func ContainerdPatchPathOnRemote(relativePath string) string { + return (filepath.Join(ContainerdPatchDirOnRemote, relativePath)) +} diff --git a/pkg/handlers/generic/mutation/containerdmetrics/metrics.go b/pkg/handlers/generic/mutation/containerdmetrics/metrics.go index 79728247e..0ab21bcd2 100644 --- a/pkg/handlers/generic/mutation/containerdmetrics/metrics.go +++ b/pkg/handlers/generic/mutation/containerdmetrics/metrics.go @@ -4,23 +4,16 @@ package containerdmetrics import ( _ "embed" - "path" cabpkv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1" -) -const ( - // TODO Factor out this constant to a common package. - containerdPatchesDirOnRemote = "/etc/caren/containerd" + "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pkg/common" ) var ( //go:embed files/metrics-config.toml metricsConfigDropIn []byte - metricsConfigDropInFileOnRemote = path.Join( - containerdPatchesDirOnRemote, - "metrics-config.toml", - ) + metricsConfigDropInFileOnRemote = common.ContainerdPatchPathOnRemote("metrics-config.toml") ) func generateMetricsConfigDropIn() cabpkv1.File { diff --git a/pkg/handlers/generic/mutation/imageregistries/credentials/credential_provider_install_files.go b/pkg/handlers/generic/mutation/imageregistries/credentials/credential_provider_install_files.go index f6538f40c..4562a46fe 100644 --- a/pkg/handlers/generic/mutation/imageregistries/credentials/credential_provider_install_files.go +++ b/pkg/handlers/generic/mutation/imageregistries/credentials/credential_provider_install_files.go @@ -10,14 +10,18 @@ import ( "text/template" cabpkv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1" + + "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pkg/common" ) -const ( - //nolint:gosec // Does not contain hard coded credentials. - installKubeletCredentialProvidersScriptOnRemote = "/etc/caren/install-kubelet-credential-providers.sh" +var ( + installKubeletCredentialProvidersScriptOnRemote = common.PatchPathOnRemote( + "install-kubelet-credential-providers.sh") installKubeletCredentialProvidersScriptOnRemoteCommand = "/bin/bash " + installKubeletCredentialProvidersScriptOnRemote +) +const ( //nolint:gosec // Does not contain hard coded credentials. dynamicCredentialProviderImage = "ghcr.io/mesosphere/dynamic-credential-provider:v0.5.0" diff --git a/pkg/handlers/generic/mutation/mirrors/mirror.go b/pkg/handlers/generic/mutation/mirrors/mirror.go index 271a1be37..78f3fdbdb 100644 --- a/pkg/handlers/generic/mutation/mirrors/mirror.go +++ b/pkg/handlers/generic/mutation/mirrors/mirror.go @@ -17,6 +17,7 @@ import ( ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/v1alpha1" + "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pkg/common" ) const ( @@ -25,7 +26,6 @@ const ( secretKeyForMirrorCACert = "ca.crt" tomlMergeImage = "ghcr.io/mesosphere/toml-merge:v0.2.0" - containerdPatchesDirOnRemote = "/etc/caren/containerd" containerdApplyPatchesScriptOnRemote = "/etc/containerd/apply-patches.sh" containerdApplyPatchesScriptOnRemoteCommand = "/bin/bash " + containerdApplyPatchesScriptOnRemote ) @@ -40,8 +40,7 @@ var ( //go:embed templates/containerd-registry-config-drop-in.toml containerdRegistryConfigDropIn []byte - containerdRegistryConfigDropInFileOnRemote = path.Join( - containerdPatchesDirOnRemote, + containerdRegistryConfigDropInFileOnRemote = common.ContainerdPatchPathOnRemote( "registry-config.toml", ) @@ -203,7 +202,7 @@ func generateContainerdApplyPatchesScript() ([]cabpkv1.File, string, error) { PatchDir string }{ TOMLMergeImage: tomlMergeImage, - PatchDir: containerdPatchesDirOnRemote, + PatchDir: common.ContainerdPatchDirOnRemote, } var b bytes.Buffer