From 7ce249d71a58e93a771793e6c6d6429e4e3e23f4 Mon Sep 17 00:00:00 2001 From: ajanikow <12255597+ajanikow@users.noreply.github.com> Date: Thu, 30 Jun 2022 18:37:41 +0000 Subject: [PATCH 1/2] [Linter] Unify imports --- .golangci.yaml | 34 ++++ Makefile | 14 +- cmd/admin.go | 12 +- cmd/cmd.go | 10 +- cmd/lifecycle.go | 6 +- cmd/reboot.go | 86 +++++------ pkg/apis/apps/v1/job.go | 16 +- pkg/apis/apps/v1/register.go | 4 +- pkg/apis/backup/v1/backup.go | 10 +- pkg/apis/backup/v1/backup_policy.go | 12 +- pkg/apis/backup/v1/register.go | 4 +- pkg/apis/deployment/v1/conditions.go | 14 +- .../deployment/v1/deployment_metrics_spec.go | 4 +- .../deployment/v1/deployment_spec_test.go | 14 +- .../deployment/v1/external_access_type.go | 8 +- pkg/apis/deployment/v1/lifecycle_spec.go | 4 +- pkg/apis/deployment/v1/member_status.go | 12 +- pkg/apis/deployment/v1/member_status_list.go | 4 +- pkg/apis/deployment/v1/member_status_test.go | 14 +- pkg/apis/deployment/v1/register.go | 4 +- pkg/apis/deployment/v2alpha1/conditions.go | 14 +- .../v2alpha1/deployment_metrics_spec.go | 4 +- .../v2alpha1/deployment_spec_test.go | 14 +- .../v2alpha1/external_access_type.go | 8 +- .../deployment/v2alpha1/lifecycle_spec.go | 4 +- pkg/apis/deployment/v2alpha1/member_status.go | 12 +- .../deployment/v2alpha1/member_status_list.go | 4 +- .../deployment/v2alpha1/member_status_test.go | 14 +- pkg/apis/deployment/v2alpha1/register.go | 4 +- pkg/apis/replication/v1/conditions.go | 22 +-- pkg/apis/replication/v1/register.go | 4 +- pkg/apis/replication/v1/replication.go | 18 +-- pkg/apis/replication/v2alpha1/conditions.go | 22 +-- pkg/apis/replication/v2alpha1/register.go | 4 +- pkg/apis/replication/v2alpha1/replication.go | 18 +-- pkg/apis/storage/v1alpha/local_storage.go | 18 +-- pkg/apis/storage/v1alpha/register.go | 4 +- pkg/deployment/access_package.go | 28 ++-- pkg/deployment/chaos/context.go | 4 +- pkg/deployment/cluster_scaling_integration.go | 4 +- pkg/deployment/deployment_finalizers.go | 12 +- pkg/deployment/deployment_pod_sync_test.go | 10 +- pkg/deployment/deployment_run_test.go | 12 +- pkg/deployment/deployment_suite_test.go | 8 +- pkg/deployment/images.go | 8 +- pkg/deployment/informers.go | 32 ++-- pkg/deployment/members.go | 14 +- .../action_runtime_container_image_update.go | 4 +- pkg/deployment/reconcile/plan_executor.go | 4 +- pkg/deployment/resources/exporter.go | 14 +- pkg/deployment/resources/internal_exporter.go | 18 +-- pkg/deployment/resources/pod_finalizers.go | 8 +- pkg/deployment/resources/pod_inspector.go | 3 +- pkg/deployment/resources/pod_termination.go | 6 +- pkg/deployment/resources/pvc_finalizers.go | 4 +- pkg/deployment/resources/pvc_inspector.go | 4 +- pkg/deployment/server_api.go | 4 +- pkg/deployment/server_member_api.go | 4 +- pkg/handlers/backup/status.go | 6 +- pkg/handlers/job/job_suite_test.go | 10 +- pkg/operator/operator_leader.go | 14 +- pkg/operator/server_discovery_api.go | 8 +- pkg/replication/deployment_replication.go | 14 +- pkg/replication/finalizers.go | 14 +- pkg/replication/sync_client.go | 6 +- pkg/server/auth.go | 14 +- pkg/server/server.go | 4 +- pkg/storage/image_test.go | 20 +-- pkg/storage/local_storage.go | 26 ++-- pkg/storage/pv_cleanup.go | 14 +- pkg/storage/pv_creator.go | 66 ++++---- pkg/storage/pv_creator_test.go | 46 +++--- pkg/storage/pv_informer.go | 10 +- pkg/storage/pv_inspector.go | 10 +- pkg/storage/pvc_informer.go | 10 +- pkg/storage/pvc_inspector.go | 16 +- pkg/storage/server_api.go | 4 +- pkg/storage/server_volume_api.go | 10 +- pkg/storage/service.go | 18 +-- pkg/storage/storage_class.go | 12 +- pkg/util/crd/crd.go | 4 +- pkg/util/k8sutil/affinity.go | 36 ++--- pkg/util/k8sutil/affinity_test.go | 10 +- pkg/util/k8sutil/dns.go | 14 +- pkg/util/k8sutil/dns_test.go | 8 +- pkg/util/k8sutil/events.go | 48 +++--- pkg/util/k8sutil/finalizers.go | 20 +-- pkg/util/k8sutil/images.go | 4 +- pkg/util/k8sutil/images_test.go | 18 +-- pkg/util/k8sutil/owner.go | 10 +- pkg/util/k8sutil/pods.go | 8 +- pkg/util/k8sutil/pods_test.go | 146 +++++++++--------- pkg/util/k8sutil/probes/probes_test.go | 6 +- pkg/util/k8sutil/pvc.go | 38 ++--- pkg/util/k8sutil/services.go | 26 ++-- pkg/util/k8sutil/storageclass.go | 6 +- pkg/util/k8sutil/storageclass_test.go | 18 +-- pkg/util/k8sutil/test/events_test.go | 16 +- pkg/util/k8sutil/tolerations.go | 10 +- pkg/util/k8sutil/util.go | 14 +- pkg/util/k8sutil/util_test.go | 14 +- pkg/util/refs.go | 8 +- pkg/util/times.go | 6 +- 103 files changed, 774 insertions(+), 745 deletions(-) create mode 100644 .golangci.yaml diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 000000000..9129cb5b1 --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,34 @@ +--- + +run: + issues-exit-code: 3 + timeout: 30m + skip-dirs: + - vendor + - .gobuild + - deps + - tools + +linters: + disable-all: true + enable: + - deadcode + - gosimple + - govet + - ineffassign + - staticcheck + - structcheck + - typecheck + - unconvert + - unparam + - unused + - varcheck + - importas + +linters-settings: + importas: + alias: + - pkg: k8s.io/api/core/v1 + alias: core + - pkg: k8s.io/apimachinery/pkg/apis/meta/v1 + alias: meta \ No newline at end of file diff --git a/Makefile b/Makefile index 264198137..06a76b97a 100644 --- a/Makefile +++ b/Makefile @@ -182,10 +182,6 @@ allall: all # Tip: Run `eval $(minikube docker-env)` before calling make if you're developing on minikube. # -GOLANGCI_ENABLED=deadcode gosimple govet ineffassign staticcheck structcheck typecheck unconvert unparam unused varcheck -#GOLANGCI_ENABLED=gocyclo goconst golint maligned errcheck interfacer megacheck -#GOLANGCI_ENABLED+=dupl - disable dupl check - .PHONY: license-verify license-verify: @echo ">> Verify license of files" @@ -208,11 +204,11 @@ fmt-verify: license-verify .PHONY: linter linter: - $(GOPATH)/bin/golangci-lint run --build-tags "$(RELEASE_MODE)" --no-config --issues-exit-code=1 --deadline=30m --exclude-use-default=false \ - --disable-all $(foreach EXCLUDE_DIR,$(EXCLUDE_DIRS),--skip-dirs $(EXCLUDE_DIR)) \ - $(foreach MODE,$(GOLANGCI_ENABLED),--enable $(MODE)) \ - $(foreach LINT_EXCLUDE,$(LINT_EXCLUDES),--exclude '$(LINT_EXCLUDE)') \ - ./... + $(GOPATH)/bin/golangci-lint run --build-tags "$(RELEASE_MODE)" $(foreach LINT_EXCLUDE,$(LINT_EXCLUDES),--exclude '$(LINT_EXCLUDE)') ./... + +.PHONY: linter-fix +linter-fix: + $(GOPATH)/bin/golangci-lint run --fix --build-tags "$(RELEASE_MODE)" $(foreach LINT_EXCLUDE,$(LINT_EXCLUDES),--exclude '$(LINT_EXCLUDE)') ./... .PHONY: build build: docker manifests diff --git a/cmd/admin.go b/cmd/admin.go index 3f195cb7e..6c5b15cf9 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -36,8 +36,8 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/globals" "github.com/spf13/cobra" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb-helper/go-certificates" "github.com/arangodb/go-driver/jwt" @@ -314,16 +314,16 @@ func getCACertificate(ctx context.Context, secrets secretv1.ReadInterface, name ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - s, err := secrets.Get(ctxChild, name, metav1.GetOptions{}) + s, err := secrets.Get(ctxChild, name, meta.GetOptions{}) if err != nil { return nil, errors.WithMessage(err, fmt.Sprintf("failed to get secret \"%s\"", name)) } - if data, ok := s.Data[v1.ServiceAccountRootCAKey]; ok { + if data, ok := s.Data[core.ServiceAccountRootCAKey]; ok { return certificates.LoadCertPool(string(data)) } - return nil, errors.New(fmt.Sprintf("the \"%s\" does not exist in the secret \"%s\"", v1.ServiceAccountRootCAKey, + return nil, errors.New(fmt.Sprintf("the \"%s\" does not exist in the secret \"%s\"", core.ServiceAccountRootCAKey, name)) } @@ -341,7 +341,7 @@ func getDeployment(ctx context.Context, namespace, deplName string) (api.ArangoD ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - deployments, err := extCli.DatabaseV1().ArangoDeployments(namespace).List(ctxChild, metav1.ListOptions{}) + deployments, err := extCli.DatabaseV1().ArangoDeployments(namespace).List(ctxChild, meta.ListOptions{}) if err != nil { if api.IsNotFound(err) { return api.ArangoDeployment{}, errors.WithMessage(err, "there are no deployments") diff --git a/cmd/cmd.go b/cmd/cmd.go index fd98761b2..5c4ebef4b 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -61,8 +61,8 @@ import ( "github.com/spf13/cobra" flag "github.com/spf13/pflag" appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes" v1core "k8s.io/client-go/kubernetes/typed/core/v1" @@ -448,7 +448,7 @@ func newOperatorConfigAndDeps(id, namespace, name string) (operator.Config, oper func getMyPodInfo(kubecli kubernetes.Interface, namespace, name string) (string, string, error) { var image, sa string op := func() error { - pod, err := kubecli.CoreV1().Pods(namespace).Get(context.Background(), name, metav1.GetOptions{}) + pod, err := kubecli.CoreV1().Pods(namespace).Get(context.Background(), name, meta.GetOptions{}) if err != nil { logger. Err(err). @@ -480,7 +480,7 @@ func createRecorder(kubecli kubernetes.Interface, name, namespace string) record eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: v1core.New(kubecli.CoreV1().RESTClient()).Events(namespace)}) combinedScheme := runtime.NewScheme() scheme.AddToScheme(combinedScheme) - v1.AddToScheme(combinedScheme) + core.AddToScheme(combinedScheme) appsv1.AddToScheme(combinedScheme) - return eventBroadcaster.NewRecorder(combinedScheme, v1.EventSource{Component: name}) + return eventBroadcaster.NewRecorder(combinedScheme, core.EventSource{Component: name}) } diff --git a/cmd/lifecycle.go b/cmd/lifecycle.go index 44b6ddd82..5f696103a 100644 --- a/cmd/lifecycle.go +++ b/cmd/lifecycle.go @@ -36,7 +36,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/version" "github.com/spf13/cobra" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/constants" @@ -119,7 +119,7 @@ func cmdLifecyclePreStopRunFinalizer(cmd *cobra.Command, args []string) { pods := client.Kubernetes().CoreV1().Pods(namespace) recentErrors := 0 for { - p, err := pods.Get(context.Background(), name, metav1.GetOptions{}) + p, err := pods.Get(context.Background(), name, meta.GetOptions{}) if k8sutil.IsNotFound(err) { logger.Warn("Pod not found") return @@ -218,7 +218,7 @@ func (c *cmdLifecyclePreStopRunPort) run(cmd *cobra.Command, args []string) erro conn.Close() - p, err := pods.Get(context.Background(), name, metav1.GetOptions{}) + p, err := pods.Get(context.Background(), name, meta.GetOptions{}) if k8sutil.IsNotFound(err) { logger.Warn("Pod not found") return nil diff --git a/cmd/reboot.go b/cmd/reboot.go index b48021acb..8315879c3 100644 --- a/cmd/reboot.go +++ b/cmd/reboot.go @@ -41,9 +41,9 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/kclient" "github.com/pkg/errors" "github.com/spf13/cobra" - corev1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/client-go/kubernetes" ) @@ -103,71 +103,71 @@ func runVolumeInspector(ctx context.Context, kube kubernetes.Interface, ns, name deletePVC := true claimname := "arangodb-reboot-pvc-" + name - pvcspec := corev1.PersistentVolumeClaim{ - ObjectMeta: metav1.ObjectMeta{ + pvcspec := core.PersistentVolumeClaim{ + ObjectMeta: meta.ObjectMeta{ Name: claimname, Labels: map[string]string{ "app": "arangodb", "rebooted": "yes", }, }, - Spec: corev1.PersistentVolumeClaimSpec{ - AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce}, + Spec: core.PersistentVolumeClaimSpec{ + AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce}, VolumeName: name, - Resources: corev1.ResourceRequirements{ - Requests: corev1.ResourceList{ - corev1.ResourceStorage: *resource.NewQuantity(1024*1024*1024, resource.DecimalSI), + Resources: core.ResourceRequirements{ + Requests: core.ResourceList{ + core.ResourceStorage: *resource.NewQuantity(1024*1024*1024, resource.DecimalSI), }, }, StorageClassName: util.NewString(storageClassName), }, } - _, err := kube.CoreV1().PersistentVolumeClaims(ns).Create(context.Background(), &pvcspec, metav1.CreateOptions{}) + _, err := kube.CoreV1().PersistentVolumeClaims(ns).Create(context.Background(), &pvcspec, meta.CreateOptions{}) if err != nil { return "", "", errors.Wrap(err, "failed to create pvc") } defer func() { if deletePVC { logger.Str("pvc-name", claimname).Debug("deleting pvc") - kube.CoreV1().PersistentVolumeClaims(ns).Delete(context.Background(), claimname, metav1.DeleteOptions{}) + kube.CoreV1().PersistentVolumeClaims(ns).Delete(context.Background(), claimname, meta.DeleteOptions{}) } }() podname := "arangodb-reboot-pod-" + name - podspec := corev1.Pod{ - ObjectMeta: metav1.ObjectMeta{ + podspec := core.Pod{ + ObjectMeta: meta.ObjectMeta{ Name: podname, }, - Spec: corev1.PodSpec{ - RestartPolicy: corev1.RestartPolicyNever, - Containers: []corev1.Container{ - corev1.Container{ + Spec: core.PodSpec{ + RestartPolicy: core.RestartPolicyNever, + Containers: []core.Container{ + core.Container{ Name: "inspector", Image: image, - ImagePullPolicy: corev1.PullAlways, + ImagePullPolicy: core.PullAlways, Command: []string{"arangodb_operator"}, Args: []string{"reboot", "inspect"}, - Env: []corev1.EnvVar{ - corev1.EnvVar{ + Env: []core.EnvVar{ + core.EnvVar{ Name: constants.EnvOperatorPodNamespace, Value: ns, }, }, - VolumeMounts: []corev1.VolumeMount{ - corev1.VolumeMount{ + VolumeMounts: []core.VolumeMount{ + core.VolumeMount{ MountPath: "/data", Name: "data", }, }, - Ports: []corev1.ContainerPort{ - corev1.ContainerPort{ + Ports: []core.ContainerPort{ + core.ContainerPort{ ContainerPort: 8080, }, }, - ReadinessProbe: &corev1.Probe{ - Handler: corev1.Handler{ - HTTPGet: &corev1.HTTPGetAction{ + ReadinessProbe: &core.Probe{ + Handler: core.Handler{ + HTTPGet: &core.HTTPGetAction{ Path: "/info", Port: intstr.FromInt(8080), }, @@ -175,19 +175,19 @@ func runVolumeInspector(ctx context.Context, kube kubernetes.Interface, ns, name }, }, }, - Volumes: []corev1.Volume{ + Volumes: []core.Volume{ k8sutil.CreateVolumeWithPersitantVolumeClaim("data", claimname), }, }, } - _, err = kube.CoreV1().Pods(ns).Create(context.Background(), &podspec, metav1.CreateOptions{}) + _, err = kube.CoreV1().Pods(ns).Create(context.Background(), &podspec, meta.CreateOptions{}) if err != nil { return "", "", errors.Wrap(err, "failed to create pod") } - defer kube.CoreV1().Pods(ns).Delete(context.Background(), podname, metav1.DeleteOptions{}) + defer kube.CoreV1().Pods(ns).Delete(context.Background(), podname, meta.DeleteOptions{}) - podwatch, err := kube.CoreV1().Pods(ns).Watch(context.Background(), metav1.ListOptions{FieldSelector: fields.OneTermEqualSelector("metadata.name", podname).String()}) + podwatch, err := kube.CoreV1().Pods(ns).Watch(context.Background(), meta.ListOptions{FieldSelector: fields.OneTermEqualSelector("metadata.name", podname).String()}) if err != nil { return "", "", errors.Wrap(err, "failed to watch for pod") } @@ -204,18 +204,18 @@ func runVolumeInspector(ctx context.Context, kube kubernetes.Interface, ns, name } // get the pod - pod, ok := ev.Object.(*corev1.Pod) + pod, ok := ev.Object.(*core.Pod) if !ok { return "", "", fmt.Errorf("failed to get pod") } switch pod.Status.Phase { - case corev1.PodFailed: + case core.PodFailed: return "", "", fmt.Errorf("pod failed: %s", pod.Status.Reason) - case corev1.PodRunning: + case core.PodRunning: podReady := false for _, c := range pod.Status.Conditions { - if c.Type == corev1.PodReady && c.Status == corev1.ConditionTrue { + if c.Type == core.PodReady && c.Status == core.ConditionTrue { podReady = true } } @@ -264,22 +264,22 @@ func doVolumeInspection(ctx context.Context, kube kubernetes.Interface, ns, name } func checkVolumeAvailable(kube kubernetes.Interface, vname string) (VolumeInfo, error) { - volume, err := kube.CoreV1().PersistentVolumes().Get(context.Background(), vname, metav1.GetOptions{}) + volume, err := kube.CoreV1().PersistentVolumes().Get(context.Background(), vname, meta.GetOptions{}) if err != nil { return VolumeInfo{}, errors.Wrapf(err, "failed to GET volume %s", vname) } switch volume.Status.Phase { - case corev1.VolumeAvailable: + case core.VolumeAvailable: break - case corev1.VolumeReleased: + case core.VolumeReleased: // we have to remove the claim reference volume.Spec.ClaimRef = nil - if _, err := kube.CoreV1().PersistentVolumes().Update(context.Background(), volume, metav1.UpdateOptions{}); err != nil { + if _, err := kube.CoreV1().PersistentVolumes().Update(context.Background(), volume, meta.UpdateOptions{}); err != nil { return VolumeInfo{}, errors.Wrapf(err, "failed to remove claim reference") } default: - return VolumeInfo{}, fmt.Errorf("Volume %s phase is %s, expected %s", vname, volume.Status.Phase, corev1.VolumeAvailable) + return VolumeInfo{}, fmt.Errorf("Volume %s phase is %s, expected %s", vname, volume.Status.Phase, core.VolumeAvailable) } return VolumeInfo{StorageClassName: volume.Spec.StorageClassName}, nil @@ -306,7 +306,7 @@ func preflightChecks(kube kubernetes.Interface, volumes []string) (VolumeListInf } func getMyImage(kube kubernetes.Interface, ns, name string) (string, error) { - pod, err := kube.CoreV1().Pods(ns).Get(context.Background(), name, metav1.GetOptions{}) + pod, err := kube.CoreV1().Pods(ns).Get(context.Background(), name, meta.GetOptions{}) if err != nil { return "", err } @@ -330,7 +330,7 @@ func createArangoDeployment(cli acli.Interface, ns, deplname, arangoimage string } depl := deplv1.ArangoDeployment{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: deplname, }, Spec: deplv1.DeploymentSpec{ @@ -367,7 +367,7 @@ func createArangoDeployment(cli acli.Interface, ns, deplname, arangoimage string }) } - if _, err := cli.DatabaseV1().ArangoDeployments(ns).Create(context.Background(), &depl, metav1.CreateOptions{}); err != nil { + if _, err := cli.DatabaseV1().ArangoDeployments(ns).Create(context.Background(), &depl, meta.CreateOptions{}); err != nil { return errors.Wrap(err, "failed to create ArangoDeployment") } diff --git a/pkg/apis/apps/v1/job.go b/pkg/apis/apps/v1/job.go index 8e78e2559..12daf0612 100644 --- a/pkg/apis/apps/v1/job.go +++ b/pkg/apis/apps/v1/job.go @@ -24,15 +24,15 @@ import ( "github.com/arangodb/kube-arangodb/pkg/apis/apps" batchv1 "k8s.io/api/batch/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ArangoJobList is a list of ArangoDB jobs. type ArangoJobList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` + meta.TypeMeta `json:",inline"` + meta.ListMeta `json:"metadata,omitempty"` Items []ArangoJob `json:"items"` } @@ -42,16 +42,16 @@ type ArangoJobList struct { // ArangoJob contains definition and status of the ArangoDB type Job. type ArangoJob struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - Spec ArangoJobSpec `json:"spec,omitempty"` + meta.TypeMeta `json:",inline"` + meta.ObjectMeta `json:"metadata,omitempty"` + Spec ArangoJobSpec `json:"spec,omitempty"` Status batchv1.JobStatus `json:"status,omitempty"` } // AsOwner creates an OwnerReference for the given job -func (a *ArangoJob) AsOwner() metav1.OwnerReference { +func (a *ArangoJob) AsOwner() meta.OwnerReference { trueVar := true - return metav1.OwnerReference{ + return meta.OwnerReference{ APIVersion: SchemeGroupVersion.String(), Kind: apps.ArangoJobResourceKind, Name: a.Name, diff --git a/pkg/apis/apps/v1/register.go b/pkg/apis/apps/v1/register.go index d57682405..97ae42a71 100644 --- a/pkg/apis/apps/v1/register.go +++ b/pkg/apis/apps/v1/register.go @@ -23,7 +23,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/apps" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -50,6 +50,6 @@ func addKnownTypes(s *runtime.Scheme) error { &ArangoJob{}, &ArangoJobList{}, ) - metav1.AddToGroupVersion(s, SchemeGroupVersion) + meta.AddToGroupVersion(s, SchemeGroupVersion) return nil } diff --git a/pkg/apis/backup/v1/backup.go b/pkg/apis/backup/v1/backup.go index 217b3c0bb..f586a31ba 100644 --- a/pkg/apis/backup/v1/backup.go +++ b/pkg/apis/backup/v1/backup.go @@ -22,7 +22,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/backup" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) const ( @@ -39,8 +39,8 @@ var ( // ArangoBackupList is a list of ArangoDB backups. type ArangoBackupList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` + meta.TypeMeta `json:",inline"` + meta.ListMeta `json:"metadata,omitempty"` Items []ArangoBackup `json:"items"` } @@ -50,8 +50,8 @@ type ArangoBackupList struct { // ArangoBackup contains definition and status of the ArangoDB Backup. type ArangoBackup struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` + meta.TypeMeta `json:",inline"` + meta.ObjectMeta `json:"metadata,omitempty"` Spec ArangoBackupSpec `json:"spec"` Status ArangoBackupStatus `json:"status"` diff --git a/pkg/apis/backup/v1/backup_policy.go b/pkg/apis/backup/v1/backup_policy.go index 24922e0b1..761d26bc8 100644 --- a/pkg/apis/backup/v1/backup_policy.go +++ b/pkg/apis/backup/v1/backup_policy.go @@ -26,15 +26,15 @@ import ( deployment "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/handlers/utils" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ArangoBackupPolicyList is a list of ArangoDB backup policy. type ArangoBackupPolicyList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` + meta.TypeMeta `json:",inline"` + meta.ListMeta `json:"metadata,omitempty"` Items []ArangoBackupPolicy `json:"items"` } @@ -44,8 +44,8 @@ type ArangoBackupPolicyList struct { // ArangoBackupPolicy contains definition and status of the ArangoDB Backup Policy. type ArangoBackupPolicy struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` + meta.TypeMeta `json:",inline"` + meta.ObjectMeta `json:"metadata,omitempty"` Spec ArangoBackupPolicySpec `json:"spec"` Status ArangoBackupPolicyStatus `json:"status"` @@ -64,7 +64,7 @@ func (a *ArangoBackupPolicy) NewBackup(d *deployment.ArangoDeployment) *ArangoBa } return &ArangoBackup{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: fmt.Sprintf("%s-%s", d.Name, utils.RandomString(8)), Namespace: a.Namespace, diff --git a/pkg/apis/backup/v1/register.go b/pkg/apis/backup/v1/register.go index f091f8d0e..b34c76a7b 100644 --- a/pkg/apis/backup/v1/register.go +++ b/pkg/apis/backup/v1/register.go @@ -22,7 +22,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/backup" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -51,6 +51,6 @@ func addKnownTypes(s *runtime.Scheme) error { &ArangoBackupPolicy{}, &ArangoBackupPolicyList{}, ) - metav1.AddToGroupVersion(s, SchemeGroupVersion) + meta.AddToGroupVersion(s, SchemeGroupVersion) return nil } diff --git a/pkg/apis/deployment/v1/conditions.go b/pkg/apis/deployment/v1/conditions.go index 38142284d..4c790ef5d 100644 --- a/pkg/apis/deployment/v1/conditions.go +++ b/pkg/apis/deployment/v1/conditions.go @@ -23,7 +23,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/util" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // ConditionType is a strongly typed condition name @@ -117,9 +117,9 @@ type Condition struct { // Status of the condition, one of True, False, Unknown. Status core.ConditionStatus `json:"status"` // The last time this condition was updated. - LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty"` + LastUpdateTime meta.Time `json:"lastUpdateTime,omitempty"` // Last time the condition transitioned from one status to another. - LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"` + LastTransitionTime meta.Time `json:"lastTransitionTime,omitempty"` // The reason for the condition's last transition. Reason string `json:"reason,omitempty"` // A human readable message indicating details about the transition. @@ -205,7 +205,7 @@ func (list *ConditionList) Touch(conditionType ConditionType) bool { src := *list for i, x := range src { if x.Type == conditionType { - src[i].LastUpdateTime = metav1.Now() + src[i].LastUpdateTime = meta.Now() return true } } @@ -234,7 +234,7 @@ func (list *ConditionList) update(conditionType ConditionType, status bool, reas if index == -1 { // Not found - now := metav1.Now() + now := meta.Now() *list = append(src, Condition{ Type: conditionType, LastUpdateTime: now, @@ -250,14 +250,14 @@ func (list *ConditionList) update(conditionType ConditionType, status bool, reas if src[index].Status != statusX { // Transition to another status src[index].Status = statusX - now := metav1.Now() + now := meta.Now() src[index].LastTransitionTime = now src[index].LastUpdateTime = now src[index].Reason = reason src[index].Message = message src[index].Hash = hash } else if src[index].Reason != reason || src[index].Message != message || src[index].Hash != hash { - src[index].LastUpdateTime = metav1.Now() + src[index].LastUpdateTime = meta.Now() src[index].Reason = reason src[index].Message = message src[index].Hash = hash diff --git a/pkg/apis/deployment/v1/deployment_metrics_spec.go b/pkg/apis/deployment/v1/deployment_metrics_spec.go index c88ba7bde..3cc37f2dc 100644 --- a/pkg/apis/deployment/v1/deployment_metrics_spec.go +++ b/pkg/apis/deployment/v1/deployment_metrics_spec.go @@ -24,7 +24,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // MetricsAuthenticationSpec contains spec for authentication with arangodb @@ -74,7 +74,7 @@ type MetricsSpec struct { // deprecated Image *string `json:"image,omitempty"` Authentication MetricsAuthenticationSpec `json:"authentication,omitempty"` - Resources v1.ResourceRequirements `json:"resources,omitempty"` + Resources core.ResourceRequirements `json:"resources,omitempty"` // deprecated Mode *MetricsMode `json:"mode,omitempty"` TLS *bool `json:"tls,omitempty"` diff --git a/pkg/apis/deployment/v1/deployment_spec_test.go b/pkg/apis/deployment/v1/deployment_spec_test.go index 0e746a112..48d8f9c6f 100644 --- a/pkg/apis/deployment/v1/deployment_spec_test.go +++ b/pkg/apis/deployment/v1/deployment_spec_test.go @@ -24,7 +24,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" "github.com/arangodb/kube-arangodb/pkg/handlers/utils" "github.com/arangodb/kube-arangodb/pkg/util" @@ -67,16 +67,16 @@ func TestDeploymentSpecResetImmutableFields(t *testing.T) { nil, }, { - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullAlways)}, - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullNever)}, - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullNever)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullAlways)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullNever)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullNever)}, false, nil, }, { - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullAlways)}, - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullNever)}, - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullNever)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullAlways)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullNever)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullNever)}, true, nil, }, diff --git a/pkg/apis/deployment/v1/external_access_type.go b/pkg/apis/deployment/v1/external_access_type.go index 9e03466ca..798059d7b 100644 --- a/pkg/apis/deployment/v1/external_access_type.go +++ b/pkg/apis/deployment/v1/external_access_type.go @@ -23,7 +23,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // ExternalAccessType specifies the type of external access provides for the deployment @@ -47,12 +47,12 @@ func (t ExternalAccessType) IsNodePort() bool { return t == ExternalAccessTy // AsServiceType returns the k8s ServiceType for this ExternalAccessType. // If type is "Auto", ServiceTypeLoadBalancer is returned. -func (t ExternalAccessType) AsServiceType() v1.ServiceType { +func (t ExternalAccessType) AsServiceType() core.ServiceType { switch t { case ExternalAccessTypeLoadBalancer, ExternalAccessTypeAuto: - return v1.ServiceTypeLoadBalancer + return core.ServiceTypeLoadBalancer case ExternalAccessTypeNodePort: - return v1.ServiceTypeNodePort + return core.ServiceTypeNodePort default: return "" } diff --git a/pkg/apis/deployment/v1/lifecycle_spec.go b/pkg/apis/deployment/v1/lifecycle_spec.go index b9fb1e216..88c82d338 100644 --- a/pkg/apis/deployment/v1/lifecycle_spec.go +++ b/pkg/apis/deployment/v1/lifecycle_spec.go @@ -21,11 +21,11 @@ package v1 import ( - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) type LifecycleSpec struct { - Resources v1.ResourceRequirements `json:"resources,omitempty"` + Resources core.ResourceRequirements `json:"resources,omitempty"` } // SetDefaultsFrom fills unspecified fields with a value from given source spec. diff --git a/pkg/apis/deployment/v1/member_status.go b/pkg/apis/deployment/v1/member_status.go index 573f38df0..cd6646c05 100644 --- a/pkg/apis/deployment/v1/member_status.go +++ b/pkg/apis/deployment/v1/member_status.go @@ -28,8 +28,8 @@ import ( driver "github.com/arangodb/go-driver" "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // MemberStatus holds the current status of a single member (server) @@ -48,7 +48,7 @@ type MemberStatus struct { // Phase holds the current lifetime phase of this member Phase MemberPhase `json:"phase"` // CreatedAt holds the creation timestamp of this member. - CreatedAt metav1.Time `json:"created-at"` + CreatedAt meta.Time `json:"created-at"` // PersistentVolumeClaimName holds the name of the persistent volume claim used for this member (if any). PersistentVolumeClaimName string `json:"persistentVolumeClaimName,omitempty"` // PodName holds the name of the Pod that currently runs this member @@ -61,7 +61,7 @@ type MemberStatus struct { Conditions ConditionList `json:"conditions,omitempty"` // RecentTerminatons holds the times when this member was recently terminated. // First entry is the oldest. (do not add omitempty, since we want to be able to switch from a list to an empty list) - RecentTerminations []metav1.Time `json:"recent-terminations"` + RecentTerminations []meta.Time `json:"recent-terminations"` // IsInitialized is set after the very first time a pod was created for this member. // After that, DBServers must have a UUID field or fail. IsInitialized bool `json:"initialized"` @@ -86,7 +86,7 @@ type MemberStatus struct { // deprecated // SideCarSpecs contains list of specifications specified for side cars - SideCarSpecs map[string]v1.Container `json:"sidecars-specs,omitempty"` + SideCarSpecs map[string]core.Container `json:"sidecars-specs,omitempty"` } // Equal checks for equality @@ -165,7 +165,7 @@ func (s MemberStatus) IsNotReadySince(timestamp time.Time) bool { cond, found := s.Conditions.Get(ConditionTypeReady) if found { // B - return cond.Status != v1.ConditionTrue && cond.LastTransitionTime.Time.Before(timestamp) + return cond.Status != core.ConditionTrue && cond.LastTransitionTime.Time.Before(timestamp) } // A return s.CreatedAt.Time.Before(timestamp) diff --git a/pkg/apis/deployment/v1/member_status_list.go b/pkg/apis/deployment/v1/member_status_list.go index 544433429..27f5919b2 100644 --- a/pkg/apis/deployment/v1/member_status_list.go +++ b/pkg/apis/deployment/v1/member_status_list.go @@ -27,7 +27,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // MemberStatusList is a list of MemberStatus entries @@ -227,7 +227,7 @@ func (l MemberStatusList) AllMembersReady() bool { } // AllConditionTrueSince returns true if all members satisfy the condition since the given period -func (l MemberStatusList) AllConditionTrueSince(cond ConditionType, status v1.ConditionStatus, period time.Duration) bool { +func (l MemberStatusList) AllConditionTrueSince(cond ConditionType, status core.ConditionStatus, period time.Duration) bool { for _, x := range l { if c, ok := x.Conditions.Get(cond); ok { if c.Status == status && c.LastTransitionTime.Time.Add(period).Before(time.Now()) { diff --git a/pkg/apis/deployment/v1/member_status_test.go b/pkg/apis/deployment/v1/member_status_test.go index f6b5287cb..775344b83 100644 --- a/pkg/apis/deployment/v1/member_status_test.go +++ b/pkg/apis/deployment/v1/member_status_test.go @@ -25,25 +25,25 @@ import ( "time" "github.com/stretchr/testify/assert" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // TestMemberStatusRecentTerminations tests the functions related to MemberStatus.RecentTerminations. func TestMemberStatusRecentTerminations(t *testing.T) { - relTime := func(delta time.Duration) metav1.Time { - return metav1.Time{Time: time.Now().Add(delta)} + relTime := func(delta time.Duration) meta.Time { + return meta.Time{Time: time.Now().Add(delta)} } s := MemberStatus{} assert.Equal(t, 0, s.RecentTerminationsSince(time.Now().Add(-time.Hour))) assert.Equal(t, 0, s.RemoveTerminationsBefore(time.Now())) - s.RecentTerminations = []metav1.Time{metav1.Now()} + s.RecentTerminations = []meta.Time{meta.Now()} assert.Equal(t, 1, s.RecentTerminationsSince(time.Now().Add(-time.Minute))) assert.Equal(t, 0, s.RecentTerminationsSince(time.Now().Add(time.Minute))) assert.Equal(t, 0, s.RemoveTerminationsBefore(time.Now().Add(-time.Hour))) - s.RecentTerminations = []metav1.Time{relTime(-time.Hour), relTime(-time.Minute), relTime(time.Minute)} + s.RecentTerminations = []meta.Time{relTime(-time.Hour), relTime(-time.Minute), relTime(time.Minute)} assert.Equal(t, 3, s.RecentTerminationsSince(time.Now().Add(-time.Hour*2))) assert.Equal(t, 2, s.RecentTerminationsSince(time.Now().Add(-time.Minute*2))) assert.Equal(t, 2, s.RemoveTerminationsBefore(time.Now())) @@ -53,7 +53,7 @@ func TestMemberStatusRecentTerminations(t *testing.T) { // TestMemberStatusIsNotReadySince tests the functions related to MemberStatus.IsNotReadySince. func TestMemberStatusIsNotReadySince(t *testing.T) { s := MemberStatus{ - CreatedAt: metav1.Now(), + CreatedAt: meta.Now(), } assert.False(t, s.IsNotReadySince(time.Now().Add(-time.Hour))) @@ -61,7 +61,7 @@ func TestMemberStatusIsNotReadySince(t *testing.T) { assert.False(t, s.IsNotReadySince(time.Now().Add(-2*time.Hour))) assert.True(t, s.IsNotReadySince(time.Now().Add(-(time.Hour - time.Minute)))) - s.CreatedAt = metav1.Now() + s.CreatedAt = meta.Now() s.Conditions.Update(ConditionTypeReady, true, "", "") assert.False(t, s.IsNotReadySince(time.Now().Add(-time.Minute))) assert.False(t, s.IsNotReadySince(time.Now().Add(time.Minute))) diff --git a/pkg/apis/deployment/v1/register.go b/pkg/apis/deployment/v1/register.go index c7866d42a..8762315e3 100644 --- a/pkg/apis/deployment/v1/register.go +++ b/pkg/apis/deployment/v1/register.go @@ -22,7 +22,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/deployment" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -55,6 +55,6 @@ func addKnownTypes(s *runtime.Scheme) error { &ArangoTask{}, &ArangoTaskList{}, ) - metav1.AddToGroupVersion(s, SchemeGroupVersion) + meta.AddToGroupVersion(s, SchemeGroupVersion) return nil } diff --git a/pkg/apis/deployment/v2alpha1/conditions.go b/pkg/apis/deployment/v2alpha1/conditions.go index 2ca1335a6..311df6b21 100644 --- a/pkg/apis/deployment/v2alpha1/conditions.go +++ b/pkg/apis/deployment/v2alpha1/conditions.go @@ -23,7 +23,7 @@ package v2alpha1 import ( "github.com/arangodb/kube-arangodb/pkg/util" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // ConditionType is a strongly typed condition name @@ -117,9 +117,9 @@ type Condition struct { // Status of the condition, one of True, False, Unknown. Status core.ConditionStatus `json:"status"` // The last time this condition was updated. - LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty"` + LastUpdateTime meta.Time `json:"lastUpdateTime,omitempty"` // Last time the condition transitioned from one status to another. - LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"` + LastTransitionTime meta.Time `json:"lastTransitionTime,omitempty"` // The reason for the condition's last transition. Reason string `json:"reason,omitempty"` // A human readable message indicating details about the transition. @@ -205,7 +205,7 @@ func (list *ConditionList) Touch(conditionType ConditionType) bool { src := *list for i, x := range src { if x.Type == conditionType { - src[i].LastUpdateTime = metav1.Now() + src[i].LastUpdateTime = meta.Now() return true } } @@ -234,7 +234,7 @@ func (list *ConditionList) update(conditionType ConditionType, status bool, reas if index == -1 { // Not found - now := metav1.Now() + now := meta.Now() *list = append(src, Condition{ Type: conditionType, LastUpdateTime: now, @@ -250,14 +250,14 @@ func (list *ConditionList) update(conditionType ConditionType, status bool, reas if src[index].Status != statusX { // Transition to another status src[index].Status = statusX - now := metav1.Now() + now := meta.Now() src[index].LastTransitionTime = now src[index].LastUpdateTime = now src[index].Reason = reason src[index].Message = message src[index].Hash = hash } else if src[index].Reason != reason || src[index].Message != message || src[index].Hash != hash { - src[index].LastUpdateTime = metav1.Now() + src[index].LastUpdateTime = meta.Now() src[index].Reason = reason src[index].Message = message src[index].Hash = hash diff --git a/pkg/apis/deployment/v2alpha1/deployment_metrics_spec.go b/pkg/apis/deployment/v2alpha1/deployment_metrics_spec.go index 90c01f712..faf09b5a1 100644 --- a/pkg/apis/deployment/v2alpha1/deployment_metrics_spec.go +++ b/pkg/apis/deployment/v2alpha1/deployment_metrics_spec.go @@ -24,7 +24,7 @@ package v2alpha1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // MetricsAuthenticationSpec contains spec for authentication with arangodb @@ -74,7 +74,7 @@ type MetricsSpec struct { // deprecated Image *string `json:"image,omitempty"` Authentication MetricsAuthenticationSpec `json:"authentication,omitempty"` - Resources v1.ResourceRequirements `json:"resources,omitempty"` + Resources core.ResourceRequirements `json:"resources,omitempty"` // deprecated Mode *MetricsMode `json:"mode,omitempty"` TLS *bool `json:"tls,omitempty"` diff --git a/pkg/apis/deployment/v2alpha1/deployment_spec_test.go b/pkg/apis/deployment/v2alpha1/deployment_spec_test.go index a959e9759..e80b569ce 100644 --- a/pkg/apis/deployment/v2alpha1/deployment_spec_test.go +++ b/pkg/apis/deployment/v2alpha1/deployment_spec_test.go @@ -24,7 +24,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" "github.com/arangodb/kube-arangodb/pkg/handlers/utils" "github.com/arangodb/kube-arangodb/pkg/util" @@ -67,16 +67,16 @@ func TestDeploymentSpecResetImmutableFields(t *testing.T) { nil, }, { - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullAlways)}, - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullNever)}, - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullNever)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullAlways)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullNever)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullNever)}, false, nil, }, { - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullAlways)}, - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullNever)}, - DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(v1.PullNever)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullAlways)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullNever)}, + DeploymentSpec{ImagePullPolicy: util.NewPullPolicy(core.PullNever)}, true, nil, }, diff --git a/pkg/apis/deployment/v2alpha1/external_access_type.go b/pkg/apis/deployment/v2alpha1/external_access_type.go index 4b210a94d..110c3e2b1 100644 --- a/pkg/apis/deployment/v2alpha1/external_access_type.go +++ b/pkg/apis/deployment/v2alpha1/external_access_type.go @@ -23,7 +23,7 @@ package v2alpha1 import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // ExternalAccessType specifies the type of external access provides for the deployment @@ -47,12 +47,12 @@ func (t ExternalAccessType) IsNodePort() bool { return t == ExternalAccessTy // AsServiceType returns the k8s ServiceType for this ExternalAccessType. // If type is "Auto", ServiceTypeLoadBalancer is returned. -func (t ExternalAccessType) AsServiceType() v1.ServiceType { +func (t ExternalAccessType) AsServiceType() core.ServiceType { switch t { case ExternalAccessTypeLoadBalancer, ExternalAccessTypeAuto: - return v1.ServiceTypeLoadBalancer + return core.ServiceTypeLoadBalancer case ExternalAccessTypeNodePort: - return v1.ServiceTypeNodePort + return core.ServiceTypeNodePort default: return "" } diff --git a/pkg/apis/deployment/v2alpha1/lifecycle_spec.go b/pkg/apis/deployment/v2alpha1/lifecycle_spec.go index fbd974752..60b404c6d 100644 --- a/pkg/apis/deployment/v2alpha1/lifecycle_spec.go +++ b/pkg/apis/deployment/v2alpha1/lifecycle_spec.go @@ -21,11 +21,11 @@ package v2alpha1 import ( - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) type LifecycleSpec struct { - Resources v1.ResourceRequirements `json:"resources,omitempty"` + Resources core.ResourceRequirements `json:"resources,omitempty"` } // SetDefaultsFrom fills unspecified fields with a value from given source spec. diff --git a/pkg/apis/deployment/v2alpha1/member_status.go b/pkg/apis/deployment/v2alpha1/member_status.go index a71d15bcf..a1598a39d 100644 --- a/pkg/apis/deployment/v2alpha1/member_status.go +++ b/pkg/apis/deployment/v2alpha1/member_status.go @@ -28,8 +28,8 @@ import ( driver "github.com/arangodb/go-driver" "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // MemberStatus holds the current status of a single member (server) @@ -48,7 +48,7 @@ type MemberStatus struct { // Phase holds the current lifetime phase of this member Phase MemberPhase `json:"phase"` // CreatedAt holds the creation timestamp of this member. - CreatedAt metav1.Time `json:"created-at"` + CreatedAt meta.Time `json:"created-at"` // PersistentVolumeClaimName holds the name of the persistent volume claim used for this member (if any). PersistentVolumeClaimName string `json:"persistentVolumeClaimName,omitempty"` // PodName holds the name of the Pod that currently runs this member @@ -61,7 +61,7 @@ type MemberStatus struct { Conditions ConditionList `json:"conditions,omitempty"` // RecentTerminatons holds the times when this member was recently terminated. // First entry is the oldest. (do not add omitempty, since we want to be able to switch from a list to an empty list) - RecentTerminations []metav1.Time `json:"recent-terminations"` + RecentTerminations []meta.Time `json:"recent-terminations"` // IsInitialized is set after the very first time a pod was created for this member. // After that, DBServers must have a UUID field or fail. IsInitialized bool `json:"initialized"` @@ -86,7 +86,7 @@ type MemberStatus struct { // deprecated // SideCarSpecs contains list of specifications specified for side cars - SideCarSpecs map[string]v1.Container `json:"sidecars-specs,omitempty"` + SideCarSpecs map[string]core.Container `json:"sidecars-specs,omitempty"` } // Equal checks for equality @@ -165,7 +165,7 @@ func (s MemberStatus) IsNotReadySince(timestamp time.Time) bool { cond, found := s.Conditions.Get(ConditionTypeReady) if found { // B - return cond.Status != v1.ConditionTrue && cond.LastTransitionTime.Time.Before(timestamp) + return cond.Status != core.ConditionTrue && cond.LastTransitionTime.Time.Before(timestamp) } // A return s.CreatedAt.Time.Before(timestamp) diff --git a/pkg/apis/deployment/v2alpha1/member_status_list.go b/pkg/apis/deployment/v2alpha1/member_status_list.go index af1a38851..65329d9d4 100644 --- a/pkg/apis/deployment/v2alpha1/member_status_list.go +++ b/pkg/apis/deployment/v2alpha1/member_status_list.go @@ -27,7 +27,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // MemberStatusList is a list of MemberStatus entries @@ -227,7 +227,7 @@ func (l MemberStatusList) AllMembersReady() bool { } // AllConditionTrueSince returns true if all members satisfy the condition since the given period -func (l MemberStatusList) AllConditionTrueSince(cond ConditionType, status v1.ConditionStatus, period time.Duration) bool { +func (l MemberStatusList) AllConditionTrueSince(cond ConditionType, status core.ConditionStatus, period time.Duration) bool { for _, x := range l { if c, ok := x.Conditions.Get(cond); ok { if c.Status == status && c.LastTransitionTime.Time.Add(period).Before(time.Now()) { diff --git a/pkg/apis/deployment/v2alpha1/member_status_test.go b/pkg/apis/deployment/v2alpha1/member_status_test.go index ecdac3b3a..6e1c73fbf 100644 --- a/pkg/apis/deployment/v2alpha1/member_status_test.go +++ b/pkg/apis/deployment/v2alpha1/member_status_test.go @@ -25,25 +25,25 @@ import ( "time" "github.com/stretchr/testify/assert" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // TestMemberStatusRecentTerminations tests the functions related to MemberStatus.RecentTerminations. func TestMemberStatusRecentTerminations(t *testing.T) { - relTime := func(delta time.Duration) metav1.Time { - return metav1.Time{Time: time.Now().Add(delta)} + relTime := func(delta time.Duration) meta.Time { + return meta.Time{Time: time.Now().Add(delta)} } s := MemberStatus{} assert.Equal(t, 0, s.RecentTerminationsSince(time.Now().Add(-time.Hour))) assert.Equal(t, 0, s.RemoveTerminationsBefore(time.Now())) - s.RecentTerminations = []metav1.Time{metav1.Now()} + s.RecentTerminations = []meta.Time{meta.Now()} assert.Equal(t, 1, s.RecentTerminationsSince(time.Now().Add(-time.Minute))) assert.Equal(t, 0, s.RecentTerminationsSince(time.Now().Add(time.Minute))) assert.Equal(t, 0, s.RemoveTerminationsBefore(time.Now().Add(-time.Hour))) - s.RecentTerminations = []metav1.Time{relTime(-time.Hour), relTime(-time.Minute), relTime(time.Minute)} + s.RecentTerminations = []meta.Time{relTime(-time.Hour), relTime(-time.Minute), relTime(time.Minute)} assert.Equal(t, 3, s.RecentTerminationsSince(time.Now().Add(-time.Hour*2))) assert.Equal(t, 2, s.RecentTerminationsSince(time.Now().Add(-time.Minute*2))) assert.Equal(t, 2, s.RemoveTerminationsBefore(time.Now())) @@ -53,7 +53,7 @@ func TestMemberStatusRecentTerminations(t *testing.T) { // TestMemberStatusIsNotReadySince tests the functions related to MemberStatus.IsNotReadySince. func TestMemberStatusIsNotReadySince(t *testing.T) { s := MemberStatus{ - CreatedAt: metav1.Now(), + CreatedAt: meta.Now(), } assert.False(t, s.IsNotReadySince(time.Now().Add(-time.Hour))) @@ -61,7 +61,7 @@ func TestMemberStatusIsNotReadySince(t *testing.T) { assert.False(t, s.IsNotReadySince(time.Now().Add(-2*time.Hour))) assert.True(t, s.IsNotReadySince(time.Now().Add(-(time.Hour - time.Minute)))) - s.CreatedAt = metav1.Now() + s.CreatedAt = meta.Now() s.Conditions.Update(ConditionTypeReady, true, "", "") assert.False(t, s.IsNotReadySince(time.Now().Add(-time.Minute))) assert.False(t, s.IsNotReadySince(time.Now().Add(time.Minute))) diff --git a/pkg/apis/deployment/v2alpha1/register.go b/pkg/apis/deployment/v2alpha1/register.go index 461f8134e..59325cf1d 100644 --- a/pkg/apis/deployment/v2alpha1/register.go +++ b/pkg/apis/deployment/v2alpha1/register.go @@ -22,7 +22,7 @@ package v2alpha1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/deployment" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -55,6 +55,6 @@ func addKnownTypes(s *runtime.Scheme) error { &ArangoTask{}, &ArangoTaskList{}, ) - metav1.AddToGroupVersion(s, SchemeGroupVersion) + meta.AddToGroupVersion(s, SchemeGroupVersion) return nil } diff --git a/pkg/apis/replication/v1/conditions.go b/pkg/apis/replication/v1/conditions.go index b698534f2..bff41af47 100644 --- a/pkg/apis/replication/v1/conditions.go +++ b/pkg/apis/replication/v1/conditions.go @@ -21,8 +21,8 @@ package v1 import ( - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // ConditionType is a strongly typed condition name @@ -40,11 +40,11 @@ type Condition struct { // Type of condition. Type ConditionType `json:"type"` // Status of the condition, one of True, False, Unknown. - Status v1.ConditionStatus `json:"status"` + Status core.ConditionStatus `json:"status"` // The last time this condition was updated. - LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty"` + LastUpdateTime meta.Time `json:"lastUpdateTime,omitempty"` // Last time the condition transitioned from one status to another. - LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"` + LastTransitionTime meta.Time `json:"lastTransitionTime,omitempty"` // The reason for the condition's last transition. Reason string `json:"reason,omitempty"` // A human readable message indicating details about the transition. @@ -58,7 +58,7 @@ type ConditionList []Condition // IsTrue return true when a condition with given type exists and its status is `True`. func (list ConditionList) IsTrue(conditionType ConditionType) bool { c, found := list.Get(conditionType) - return found && c.Status == v1.ConditionTrue + return found && c.Status == core.ConditionTrue } // Get a condition by type. @@ -77,22 +77,22 @@ func (list ConditionList) Get(conditionType ConditionType) (Condition, bool) { // Returns true when changes were made, false otherwise. func (list *ConditionList) Update(conditionType ConditionType, status bool, reason, message string) bool { src := *list - statusX := v1.ConditionFalse + statusX := core.ConditionFalse if status { - statusX = v1.ConditionTrue + statusX = core.ConditionTrue } for i, x := range src { if x.Type == conditionType { if x.Status != statusX { // Transition to another status src[i].Status = statusX - now := metav1.Now() + now := meta.Now() src[i].LastTransitionTime = now src[i].LastUpdateTime = now src[i].Reason = reason src[i].Message = message } else if x.Reason != reason || x.Message != message { - src[i].LastUpdateTime = metav1.Now() + src[i].LastUpdateTime = meta.Now() src[i].Reason = reason src[i].Message = message } else { @@ -102,7 +102,7 @@ func (list *ConditionList) Update(conditionType ConditionType, status bool, reas } } // Not found - now := metav1.Now() + now := meta.Now() *list = append(src, Condition{ Type: conditionType, LastUpdateTime: now, diff --git a/pkg/apis/replication/v1/register.go b/pkg/apis/replication/v1/register.go index 97094082a..75f953d37 100644 --- a/pkg/apis/replication/v1/register.go +++ b/pkg/apis/replication/v1/register.go @@ -22,7 +22,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/replication" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -50,6 +50,6 @@ func addKnownTypes(s *runtime.Scheme) error { &ArangoDeploymentReplication{}, &ArangoDeploymentReplicationList{}, ) - metav1.AddToGroupVersion(s, SchemeGroupVersion) + meta.AddToGroupVersion(s, SchemeGroupVersion) return nil } diff --git a/pkg/apis/replication/v1/replication.go b/pkg/apis/replication/v1/replication.go index bffe609b5..e0dd57cad 100644 --- a/pkg/apis/replication/v1/replication.go +++ b/pkg/apis/replication/v1/replication.go @@ -22,18 +22,18 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/replication" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ArangoDeploymentReplicationList is a list of ArangoDB deployment replications. type ArangoDeploymentReplicationList struct { - metav1.TypeMeta `json:",inline"` + meta.TypeMeta `json:",inline"` // Standard list metadata // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata - metav1.ListMeta `json:"metadata,omitempty"` - Items []ArangoDeploymentReplication `json:"items"` + meta.ListMeta `json:"metadata,omitempty"` + Items []ArangoDeploymentReplication `json:"items"` } // +genclient @@ -42,16 +42,16 @@ type ArangoDeploymentReplicationList struct { // ArangoDeploymentReplication contains the entire Kubernetes info for an ArangoDB // local storage provider. type ArangoDeploymentReplication struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - Spec DeploymentReplicationSpec `json:"spec"` + meta.TypeMeta `json:",inline"` + meta.ObjectMeta `json:"metadata,omitempty"` + Spec DeploymentReplicationSpec `json:"spec"` Status DeploymentReplicationStatus `json:"status"` } // AsOwner creates an OwnerReference for the given replication -func (d *ArangoDeploymentReplication) AsOwner() metav1.OwnerReference { +func (d *ArangoDeploymentReplication) AsOwner() meta.OwnerReference { trueVar := true - return metav1.OwnerReference{ + return meta.OwnerReference{ APIVersion: SchemeGroupVersion.String(), Kind: replication.ArangoDeploymentReplicationResourceKind, Name: d.Name, diff --git a/pkg/apis/replication/v2alpha1/conditions.go b/pkg/apis/replication/v2alpha1/conditions.go index e17aa195b..9bf0ee3c4 100644 --- a/pkg/apis/replication/v2alpha1/conditions.go +++ b/pkg/apis/replication/v2alpha1/conditions.go @@ -21,8 +21,8 @@ package v2alpha1 import ( - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // ConditionType is a strongly typed condition name @@ -40,11 +40,11 @@ type Condition struct { // Type of condition. Type ConditionType `json:"type"` // Status of the condition, one of True, False, Unknown. - Status v1.ConditionStatus `json:"status"` + Status core.ConditionStatus `json:"status"` // The last time this condition was updated. - LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty"` + LastUpdateTime meta.Time `json:"lastUpdateTime,omitempty"` // Last time the condition transitioned from one status to another. - LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"` + LastTransitionTime meta.Time `json:"lastTransitionTime,omitempty"` // The reason for the condition's last transition. Reason string `json:"reason,omitempty"` // A human readable message indicating details about the transition. @@ -58,7 +58,7 @@ type ConditionList []Condition // IsTrue return true when a condition with given type exists and its status is `True`. func (list ConditionList) IsTrue(conditionType ConditionType) bool { c, found := list.Get(conditionType) - return found && c.Status == v1.ConditionTrue + return found && c.Status == core.ConditionTrue } // Get a condition by type. @@ -77,22 +77,22 @@ func (list ConditionList) Get(conditionType ConditionType) (Condition, bool) { // Returns true when changes were made, false otherwise. func (list *ConditionList) Update(conditionType ConditionType, status bool, reason, message string) bool { src := *list - statusX := v1.ConditionFalse + statusX := core.ConditionFalse if status { - statusX = v1.ConditionTrue + statusX = core.ConditionTrue } for i, x := range src { if x.Type == conditionType { if x.Status != statusX { // Transition to another status src[i].Status = statusX - now := metav1.Now() + now := meta.Now() src[i].LastTransitionTime = now src[i].LastUpdateTime = now src[i].Reason = reason src[i].Message = message } else if x.Reason != reason || x.Message != message { - src[i].LastUpdateTime = metav1.Now() + src[i].LastUpdateTime = meta.Now() src[i].Reason = reason src[i].Message = message } else { @@ -102,7 +102,7 @@ func (list *ConditionList) Update(conditionType ConditionType, status bool, reas } } // Not found - now := metav1.Now() + now := meta.Now() *list = append(src, Condition{ Type: conditionType, LastUpdateTime: now, diff --git a/pkg/apis/replication/v2alpha1/register.go b/pkg/apis/replication/v2alpha1/register.go index 5da8a63e7..a751c46bc 100644 --- a/pkg/apis/replication/v2alpha1/register.go +++ b/pkg/apis/replication/v2alpha1/register.go @@ -22,7 +22,7 @@ package v2alpha1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/replication" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -50,6 +50,6 @@ func addKnownTypes(s *runtime.Scheme) error { &ArangoDeploymentReplication{}, &ArangoDeploymentReplicationList{}, ) - metav1.AddToGroupVersion(s, SchemeGroupVersion) + meta.AddToGroupVersion(s, SchemeGroupVersion) return nil } diff --git a/pkg/apis/replication/v2alpha1/replication.go b/pkg/apis/replication/v2alpha1/replication.go index de5aba31b..53c0ac4e0 100644 --- a/pkg/apis/replication/v2alpha1/replication.go +++ b/pkg/apis/replication/v2alpha1/replication.go @@ -22,18 +22,18 @@ package v2alpha1 import ( "github.com/arangodb/kube-arangodb/pkg/apis/replication" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ArangoDeploymentReplicationList is a list of ArangoDB deployment replications. type ArangoDeploymentReplicationList struct { - metav1.TypeMeta `json:",inline"` + meta.TypeMeta `json:",inline"` // Standard list metadata // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata - metav1.ListMeta `json:"metadata,omitempty"` - Items []ArangoDeploymentReplication `json:"items"` + meta.ListMeta `json:"metadata,omitempty"` + Items []ArangoDeploymentReplication `json:"items"` } // +genclient @@ -42,16 +42,16 @@ type ArangoDeploymentReplicationList struct { // ArangoDeploymentReplication contains the entire Kubernetes info for an ArangoDB // local storage provider. type ArangoDeploymentReplication struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - Spec DeploymentReplicationSpec `json:"spec"` + meta.TypeMeta `json:",inline"` + meta.ObjectMeta `json:"metadata,omitempty"` + Spec DeploymentReplicationSpec `json:"spec"` Status DeploymentReplicationStatus `json:"status"` } // AsOwner creates an OwnerReference for the given replication -func (d *ArangoDeploymentReplication) AsOwner() metav1.OwnerReference { +func (d *ArangoDeploymentReplication) AsOwner() meta.OwnerReference { trueVar := true - return metav1.OwnerReference{ + return meta.OwnerReference{ APIVersion: SchemeGroupVersion.String(), Kind: replication.ArangoDeploymentReplicationResourceKind, Name: d.Name, diff --git a/pkg/apis/storage/v1alpha/local_storage.go b/pkg/apis/storage/v1alpha/local_storage.go index 0efd9ab1a..84cbdbe33 100644 --- a/pkg/apis/storage/v1alpha/local_storage.go +++ b/pkg/apis/storage/v1alpha/local_storage.go @@ -21,18 +21,18 @@ package v1alpha import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ArangoLocalStorageList is a list of ArangoDB local storage providers. type ArangoLocalStorageList struct { - metav1.TypeMeta `json:",inline"` + meta.TypeMeta `json:",inline"` // Standard list metadata // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata - metav1.ListMeta `json:"metadata,omitempty"` - Items []ArangoLocalStorage `json:"items"` + meta.ListMeta `json:"metadata,omitempty"` + Items []ArangoLocalStorage `json:"items"` } // +genclient @@ -42,15 +42,15 @@ type ArangoLocalStorageList struct { // ArangoLocalStorage contains the entire Kubernetes info for an ArangoDB // local storage provider. type ArangoLocalStorage struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - Spec LocalStorageSpec `json:"spec"` + meta.TypeMeta `json:",inline"` + meta.ObjectMeta `json:"metadata,omitempty"` + Spec LocalStorageSpec `json:"spec"` Status LocalStorageStatus `json:"status"` } // AsOwner creates an OwnerReference for the given storage -func (d *ArangoLocalStorage) AsOwner() metav1.OwnerReference { - return metav1.OwnerReference{ +func (d *ArangoLocalStorage) AsOwner() meta.OwnerReference { + return meta.OwnerReference{ APIVersion: SchemeGroupVersion.String(), Kind: ArangoLocalStorageResourceKind, Name: d.Name, diff --git a/pkg/apis/storage/v1alpha/register.go b/pkg/apis/storage/v1alpha/register.go index 5335ec7be..d4a69289e 100644 --- a/pkg/apis/storage/v1alpha/register.go +++ b/pkg/apis/storage/v1alpha/register.go @@ -21,7 +21,7 @@ package v1alpha import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -53,6 +53,6 @@ func addKnownTypes(s *runtime.Scheme) error { &ArangoLocalStorage{}, &ArangoLocalStorageList{}, ) - metav1.AddToGroupVersion(s, SchemeGroupVersion) + meta.AddToGroupVersion(s, SchemeGroupVersion) return nil } diff --git a/pkg/deployment/access_package.go b/pkg/deployment/access_package.go index 3ca323485..cc299e6e3 100644 --- a/pkg/deployment/access_package.go +++ b/pkg/deployment/access_package.go @@ -31,8 +31,8 @@ import ( certificates "github.com/arangodb-helper/go-certificates" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -74,8 +74,8 @@ func (d *Deployment) createAccessPackages(ctx context.Context) error { if _, wanted := apNameMap[secret.GetName()]; !wanted { // We found an obsolete access package secret. Remove it. err := globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error { - return d.SecretsModInterface().Delete(ctxChild, secret.GetName(), metav1.DeleteOptions{ - Preconditions: &metav1.Preconditions{UID: &secret.UID}, + return d.SecretsModInterface().Delete(ctxChild, secret.GetName(), meta.DeleteOptions{ + Preconditions: &meta.Preconditions{UID: &secret.UID}, }) }) if err != nil && !k8sutil.IsNotFound(err) { @@ -101,7 +101,7 @@ func (d *Deployment) ensureAccessPackage(ctx context.Context, apSecretName strin log := d.sectionLogger("access-package") spec := d.apiObject.Spec - _, err := d.acs.CurrentClusterCache().Secret().V1().Read().Get(ctx, apSecretName, metav1.GetOptions{}) + _, err := d.acs.CurrentClusterCache().Secret().V1().Read().Get(ctx, apSecretName, meta.GetOptions{}) if err == nil { // Secret already exists return nil @@ -147,12 +147,12 @@ func (d *Deployment) ensureAccessPackage(ctx context.Context, apSecretName strin keyfile := strings.TrimSpace(cert) + "\n" + strings.TrimSpace(key) // Create secrets (in memory) - keyfileSecret := v1.Secret{ - TypeMeta: metav1.TypeMeta{ + keyfileSecret := core.Secret{ + TypeMeta: meta.TypeMeta{ APIVersion: "v1", Kind: "Secret", }, - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: apSecretName + "-auth", Labels: map[string]string{ labelKeyOriginalDeployment: d.apiObject.GetName(), @@ -163,12 +163,12 @@ func (d *Deployment) ensureAccessPackage(ctx context.Context, apSecretName strin }, Type: "Opaque", } - tlsCASecret := v1.Secret{ - TypeMeta: metav1.TypeMeta{ + tlsCASecret := core.Secret{ + TypeMeta: meta.TypeMeta{ APIVersion: "v1", Kind: "Secret", }, - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: apSecretName + "-ca", Labels: map[string]string{ labelKeyOriginalDeployment: d.apiObject.GetName(), @@ -194,8 +194,8 @@ func (d *Deployment) ensureAccessPackage(ctx context.Context, apSecretName strin allYaml := strings.TrimSpace(string(keyfileYaml)) + "\n---\n" + strings.TrimSpace(string(tlsCAYaml)) // Create secret containing access package - secret := &v1.Secret{ - ObjectMeta: metav1.ObjectMeta{ + secret := &core.Secret{ + ObjectMeta: meta.ObjectMeta{ Name: apSecretName, }, Data: map[string][]byte{ @@ -207,7 +207,7 @@ func (d *Deployment) ensureAccessPackage(ctx context.Context, apSecretName strin // Attach secret to owner secret.SetOwnerReferences(append(secret.GetOwnerReferences(), d.apiObject.AsOwner())) err = globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error { - _, err := d.SecretsModInterface().Create(ctxChild, secret, metav1.CreateOptions{}) + _, err := d.SecretsModInterface().Create(ctxChild, secret, meta.CreateOptions{}) return err }) if err != nil { diff --git a/pkg/deployment/chaos/context.go b/pkg/deployment/chaos/context.go index 9c52cfe2c..bf5ea50af 100644 --- a/pkg/deployment/chaos/context.go +++ b/pkg/deployment/chaos/context.go @@ -24,7 +24,7 @@ import ( "context" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -36,5 +36,5 @@ type Context interface { // of the deployment. If the pod does not exist, the error is ignored. DeletePod(ctx context.Context, podName string, options meta.DeleteOptions) error // GetOwnedPods returns a list of all pods owned by the deployment. - GetOwnedPods(ctx context.Context) ([]v1.Pod, error) + GetOwnedPods(ctx context.Context) ([]core.Pod, error) } diff --git a/pkg/deployment/cluster_scaling_integration.go b/pkg/deployment/cluster_scaling_integration.go index 7e2dbb68d..afd5f2eff 100644 --- a/pkg/deployment/cluster_scaling_integration.go +++ b/pkg/deployment/cluster_scaling_integration.go @@ -30,7 +30,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/rs/zerolog" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/logging" @@ -212,7 +212,7 @@ func (ci *clusterScalingIntegration) inspectCluster(ctx context.Context, expectS apiObject := ci.depl.apiObject ctxChild, cancel = globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - current, err := ci.depl.deps.Client.Arango().DatabaseV1().ArangoDeployments(apiObject.Namespace).Get(ctxChild, apiObject.Name, metav1.GetOptions{}) + current, err := ci.depl.deps.Client.Arango().DatabaseV1().ArangoDeployments(apiObject.Namespace).Get(ctxChild, apiObject.Name, meta.GetOptions{}) if err != nil { return errors.WithStack(err) } diff --git a/pkg/deployment/deployment_finalizers.go b/pkg/deployment/deployment_finalizers.go index 543df3542..7bb300b25 100644 --- a/pkg/deployment/deployment_finalizers.go +++ b/pkg/deployment/deployment_finalizers.go @@ -29,7 +29,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned" @@ -58,7 +58,7 @@ func (d *Deployment) runDeploymentFinalizers(ctx context.Context, cachedStatus i depls := d.deps.Client.Arango().DatabaseV1().ArangoDeployments(d.GetNamespace()) ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - updated, err := depls.Get(ctxChild, d.apiObject.GetName(), metav1.GetOptions{}) + updated, err := depls.Get(ctxChild, d.apiObject.GetName(), meta.GetOptions{}) if err != nil { return errors.WithStack(err) } @@ -108,22 +108,22 @@ func (d *Deployment) inspectRemoveChildFinalizers(ctx context.Context, _ *api.Ar func removeDeploymentFinalizers(ctx context.Context, cli versioned.Interface, depl *api.ArangoDeployment, finalizers []string) error { depls := cli.DatabaseV1().ArangoDeployments(depl.GetNamespace()) - getFunc := func() (metav1.Object, error) { + getFunc := func() (meta.Object, error) { ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - result, err := depls.Get(ctxChild, depl.GetName(), metav1.GetOptions{}) + result, err := depls.Get(ctxChild, depl.GetName(), meta.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } return result, nil } - updateFunc := func(updated metav1.Object) error { + updateFunc := func(updated meta.Object) error { updatedDepl := updated.(*api.ArangoDeployment) ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - result, err := depls.Update(ctxChild, updatedDepl, metav1.UpdateOptions{}) + result, err := depls.Update(ctxChild, updatedDepl, meta.UpdateOptions{}) if err != nil { return errors.WithStack(err) } diff --git a/pkg/deployment/deployment_pod_sync_test.go b/pkg/deployment/deployment_pod_sync_test.go index dff978f5e..7eaa01c67 100644 --- a/pkg/deployment/deployment_pod_sync_test.go +++ b/pkg/deployment/deployment_pod_sync_test.go @@ -34,7 +34,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/stretchr/testify/require" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) func TestEnsurePod_Sync_Error(t *testing.T) { @@ -99,7 +99,7 @@ func TestEnsurePod_Sync_Error(t *testing.T) { } secretName := testCase.ArangoDeployment.Spec.Sync.Monitoring.GetTokenSecretName() - err := deployment.SecretsModInterface().Delete(context.Background(), secretName, metav1.DeleteOptions{}) + err := deployment.SecretsModInterface().Delete(context.Background(), secretName, meta.DeleteOptions{}) require.NoError(t, err) }, ExpectedError: errors.New("Monitoring token secret validation failed: secrets \"" + @@ -133,7 +133,7 @@ func TestEnsurePod_Sync_Master(t *testing.T) { } secretName := testCase.ArangoDeployment.Spec.Sync.TLS.GetCASecretName() - err := deployment.SecretsModInterface().Delete(context.Background(), secretName, metav1.DeleteOptions{}) + err := deployment.SecretsModInterface().Delete(context.Background(), secretName, meta.DeleteOptions{}) require.NoError(t, err) }, ExpectedError: errors.New("Failed to create TLS keyfile secret: secrets \"" + @@ -161,7 +161,7 @@ func TestEnsurePod_Sync_Master(t *testing.T) { } secretName := testCase.ArangoDeployment.Spec.Authentication.GetJWTSecretName() - err := deployment.SecretsModInterface().Delete(context.Background(), secretName, metav1.DeleteOptions{}) + err := deployment.SecretsModInterface().Delete(context.Background(), secretName, meta.DeleteOptions{}) require.NoError(t, err) }, ExpectedError: errors.New("Cluster JWT secret validation failed: secrets \"" + @@ -189,7 +189,7 @@ func TestEnsurePod_Sync_Master(t *testing.T) { } secretName := testCase.ArangoDeployment.Spec.Sync.Authentication.GetClientCASecretName() - err := deployment.SecretsModInterface().Delete(context.Background(), secretName, metav1.DeleteOptions{}) + err := deployment.SecretsModInterface().Delete(context.Background(), secretName, meta.DeleteOptions{}) require.NoError(t, err) }, ExpectedError: errors.New("Client authentication CA certificate secret validation failed: " + diff --git a/pkg/deployment/deployment_run_test.go b/pkg/deployment/deployment_run_test.go index 8e7728da3..1d9095324 100644 --- a/pkg/deployment/deployment_run_test.go +++ b/pkg/deployment/deployment_run_test.go @@ -38,7 +38,7 @@ import ( api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) func runTestCases(t *testing.T, testCases ...testCaseStruct) { @@ -104,7 +104,7 @@ func runTestCase(t *testing.T, testCase testCaseStruct) { } // Create custom resource in the fake kubernetes API - _, err := d.deps.Client.Arango().DatabaseV1().ArangoDeployments(testNamespace).Create(context.Background(), d.apiObject, metav1.CreateOptions{}) + _, err := d.deps.Client.Arango().DatabaseV1().ArangoDeployments(testNamespace).Create(context.Background(), d.apiObject, meta.CreateOptions{}) require.NoError(t, err) if testCase.Resources != nil { @@ -143,7 +143,7 @@ func runTestCase(t *testing.T, testCase testCaseStruct) { for _, m := range list { member := api.ArangoMember{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Namespace: d.GetNamespace(), Name: m.ArangoMemberName(d.GetName(), group), }, @@ -160,13 +160,13 @@ func runTestCase(t *testing.T, testCase testCaseStruct) { } s := core.Service{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: member.GetName(), Namespace: member.GetNamespace(), }, } - if _, err := d.ServicesModInterface().Create(context.Background(), &s, metav1.CreateOptions{}); err != nil { + if _, err := d.ServicesModInterface().Create(context.Background(), &s, meta.CreateOptions{}); err != nil { return err } @@ -228,7 +228,7 @@ func runTestCase(t *testing.T, testCase testCaseStruct) { } require.NoError(t, err) - pods, err := d.deps.Client.Kubernetes().CoreV1().Pods(testNamespace).List(context.Background(), metav1.ListOptions{}) + pods, err := d.deps.Client.Kubernetes().CoreV1().Pods(testNamespace).List(context.Background(), meta.ListOptions{}) require.NoError(t, err) require.Len(t, pods.Items, 1) if util.BoolOrDefault(testCase.CompareChecksum, true) { diff --git a/pkg/deployment/deployment_suite_test.go b/pkg/deployment/deployment_suite_test.go index 3701b7c30..ea023f0ce 100644 --- a/pkg/deployment/deployment_suite_test.go +++ b/pkg/deployment/deployment_suite_test.go @@ -35,7 +35,7 @@ import ( monitoringFakeClient "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/fake" "github.com/stretchr/testify/require" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" recordfake "k8s.io/client-go/tools/record" @@ -456,7 +456,7 @@ func createTestDeployment(t *testing.T, config Config, arangoDeployment *api.Ara monitoringClientSet := monitoringFakeClient.NewSimpleClientset() arangoClientSet := arangofake.NewSimpleClientset() - arangoDeployment.ObjectMeta = metav1.ObjectMeta{ + arangoDeployment.ObjectMeta = meta.ObjectMeta{ Name: testDeploymentName, Namespace: testNamespace, } @@ -562,11 +562,11 @@ func (testCase *testCaseStruct) createTestPodData(deployment *Deployment, group podName := k8sutil.CreatePodName(testDeploymentName, group.AsRoleAbbreviated(), memberStatus.ID, resources.CreatePodSuffix(testCase.ArangoDeployment.Spec)) - testCase.ExpectedPod.ObjectMeta = metav1.ObjectMeta{ + testCase.ExpectedPod.ObjectMeta = meta.ObjectMeta{ Name: podName, Namespace: testNamespace, Labels: k8sutil.LabelsForMember(testDeploymentName, group.AsRole(), memberStatus.ID), - OwnerReferences: []metav1.OwnerReference{ + OwnerReferences: []meta.OwnerReference{ testCase.ArangoDeployment.AsOwner(), }, Finalizers: finalizers(group), diff --git a/pkg/deployment/images.go b/pkg/deployment/images.go index 24c44f21e..6cd12aadb 100644 --- a/pkg/deployment/images.go +++ b/pkg/deployment/images.go @@ -28,7 +28,7 @@ import ( "time" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" @@ -140,14 +140,14 @@ func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, cac // Check if pod exists ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - pod, err := ib.Context.ACS().CurrentClusterCache().Pod().V1().Read().Get(ctxChild, podName, metav1.GetOptions{}) + pod, err := ib.Context.ACS().CurrentClusterCache().Pod().V1().Read().Get(ctxChild, podName, meta.GetOptions{}) if err == nil { // Pod found if k8sutil.IsPodFailed(pod, utils.StringList{shared.ServerContainerName}) { // Wait some time before deleting the pod if time.Now().After(pod.GetCreationTimestamp().Add(30 * time.Second)) { err := globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error { - return ib.Context.ACS().CurrentClusterCache().PodsModInterface().V1().Delete(ctxChild, podName, metav1.DeleteOptions{}) + return ib.Context.ACS().CurrentClusterCache().PodsModInterface().V1().Delete(ctxChild, podName, meta.DeleteOptions{}) }) if err != nil && !k8sutil.IsNotFound(err) { log.Err(err).Warn("Failed to delete Image ID Pod") @@ -189,7 +189,7 @@ func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, cac // We have all the info we need now, kill the pod and store the image info. err = globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error { - return ib.Context.ACS().CurrentClusterCache().PodsModInterface().V1().Delete(ctxChild, podName, metav1.DeleteOptions{}) + return ib.Context.ACS().CurrentClusterCache().PodsModInterface().V1().Delete(ctxChild, podName, meta.DeleteOptions{}) }) if err != nil && !k8sutil.IsNotFound(err) { log.Err(err).Warn("Failed to delete Image ID Pod") diff --git a/pkg/deployment/informers.go b/pkg/deployment/informers.go index 476578a82..d0650b989 100644 --- a/pkg/deployment/informers.go +++ b/pkg/deployment/informers.go @@ -21,7 +21,7 @@ package deployment import ( - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" crdv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/client-go/tools/cache" @@ -30,14 +30,14 @@ import ( // listenForPodEvents keep listening for changes in pod until the given channel is closed. func (d *Deployment) listenForPodEvents(stopCh <-chan struct{}) { - getPod := func(obj interface{}) (*v1.Pod, bool) { - pod, ok := obj.(*v1.Pod) + getPod := func(obj interface{}) (*core.Pod, bool) { + pod, ok := obj.(*core.Pod) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { return nil, false } - pod, ok = tombstone.Obj.(*v1.Pod) + pod, ok = tombstone.Obj.(*core.Pod) return pod, ok } return pod, true @@ -47,7 +47,7 @@ func (d *Deployment) listenForPodEvents(stopCh <-chan struct{}) { d.deps.Client.Kubernetes().CoreV1().RESTClient(), "pods", d.apiObject.GetNamespace(), - &v1.Pod{}, + &core.Pod{}, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { d.acs.CurrentClusterCache().GetThrottles().Pod().Invalidate() @@ -74,14 +74,14 @@ func (d *Deployment) listenForPodEvents(stopCh <-chan struct{}) { // listenForPVCEvents keep listening for changes in PVC's until the given channel is closed. func (d *Deployment) listenForPVCEvents(stopCh <-chan struct{}) { - getPVC := func(obj interface{}) (*v1.PersistentVolumeClaim, bool) { - pvc, ok := obj.(*v1.PersistentVolumeClaim) + getPVC := func(obj interface{}) (*core.PersistentVolumeClaim, bool) { + pvc, ok := obj.(*core.PersistentVolumeClaim) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { return nil, false } - pvc, ok = tombstone.Obj.(*v1.PersistentVolumeClaim) + pvc, ok = tombstone.Obj.(*core.PersistentVolumeClaim) return pvc, ok } return pvc, true @@ -91,7 +91,7 @@ func (d *Deployment) listenForPVCEvents(stopCh <-chan struct{}) { d.deps.Client.Kubernetes().CoreV1().RESTClient(), "persistentvolumeclaims", d.apiObject.GetNamespace(), - &v1.PersistentVolumeClaim{}, + &core.PersistentVolumeClaim{}, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { d.acs.CurrentClusterCache().GetThrottles().PersistentVolumeClaim().Invalidate() @@ -119,13 +119,13 @@ func (d *Deployment) listenForPVCEvents(stopCh <-chan struct{}) { // listenForSecretEvents keep listening for changes in Secrets's until the given channel is closed. func (d *Deployment) listenForSecretEvents(stopCh <-chan struct{}) { getSecret := func(obj interface{}) bool { - _, ok := obj.(*v1.Secret) + _, ok := obj.(*core.Secret) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { return false } - _, ok = tombstone.Obj.(*v1.Secret) + _, ok = tombstone.Obj.(*core.Secret) return ok } return true @@ -135,7 +135,7 @@ func (d *Deployment) listenForSecretEvents(stopCh <-chan struct{}) { d.deps.Client.Kubernetes().CoreV1().RESTClient(), "secrets", d.apiObject.GetNamespace(), - &v1.Secret{}, + &core.Secret{}, cache.ResourceEventHandlerFuncs{ // Note: For secrets we look at all of them because they do not have to be owned by this deployment. AddFunc: func(obj interface{}) { @@ -163,14 +163,14 @@ func (d *Deployment) listenForSecretEvents(stopCh <-chan struct{}) { // listenForServiceEvents keep listening for changes in Service's until the given channel is closed. func (d *Deployment) listenForServiceEvents(stopCh <-chan struct{}) { - getService := func(obj interface{}) (*v1.Service, bool) { - service, ok := obj.(*v1.Service) + getService := func(obj interface{}) (*core.Service, bool) { + service, ok := obj.(*core.Service) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { return nil, false } - service, ok = tombstone.Obj.(*v1.Service) + service, ok = tombstone.Obj.(*core.Service) return service, ok } return service, true @@ -180,7 +180,7 @@ func (d *Deployment) listenForServiceEvents(stopCh <-chan struct{}) { d.deps.Client.Kubernetes().CoreV1().RESTClient(), "services", d.apiObject.GetNamespace(), - &v1.Service{}, + &core.Service{}, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { d.acs.CurrentClusterCache().GetThrottles().Service().Invalidate() diff --git a/pkg/deployment/members.go b/pkg/deployment/members.go index f4c57e02c..79463c6f1 100644 --- a/pkg/deployment/members.go +++ b/pkg/deployment/members.go @@ -31,7 +31,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/apis/shared" @@ -139,7 +139,7 @@ func (d *Deployment) renderMember(status *api.DeploymentStatus, group api.Server return &api.MemberStatus{ ID: id, UID: uuid.NewUUID(), - CreatedAt: metav1.Now(), + CreatedAt: meta.Now(), Phase: api.MemberPhaseNone, PersistentVolumeClaimName: shared.CreatePersistentVolumeClaimName(deploymentName, role, id), PodName: "", @@ -151,7 +151,7 @@ func (d *Deployment) renderMember(status *api.DeploymentStatus, group api.Server return &api.MemberStatus{ ID: id, UID: uuid.NewUUID(), - CreatedAt: metav1.Now(), + CreatedAt: meta.Now(), Phase: api.MemberPhaseNone, PersistentVolumeClaimName: shared.CreatePersistentVolumeClaimName(deploymentName, role, id), PodName: "", @@ -163,7 +163,7 @@ func (d *Deployment) renderMember(status *api.DeploymentStatus, group api.Server return &api.MemberStatus{ ID: id, UID: uuid.NewUUID(), - CreatedAt: metav1.Now(), + CreatedAt: meta.Now(), Phase: api.MemberPhaseNone, PersistentVolumeClaimName: shared.CreatePersistentVolumeClaimName(deploymentName, role, id), PodName: "", @@ -175,7 +175,7 @@ func (d *Deployment) renderMember(status *api.DeploymentStatus, group api.Server return &api.MemberStatus{ ID: id, UID: uuid.NewUUID(), - CreatedAt: metav1.Now(), + CreatedAt: meta.Now(), Phase: api.MemberPhaseNone, PersistentVolumeClaimName: "", PodName: "", @@ -187,7 +187,7 @@ func (d *Deployment) renderMember(status *api.DeploymentStatus, group api.Server return &api.MemberStatus{ ID: id, UID: uuid.NewUUID(), - CreatedAt: metav1.Now(), + CreatedAt: meta.Now(), Phase: api.MemberPhaseNone, PersistentVolumeClaimName: "", PodName: "", @@ -199,7 +199,7 @@ func (d *Deployment) renderMember(status *api.DeploymentStatus, group api.Server return &api.MemberStatus{ ID: id, UID: uuid.NewUUID(), - CreatedAt: metav1.Now(), + CreatedAt: meta.Now(), Phase: api.MemberPhaseNone, PersistentVolumeClaimName: "", PodName: "", diff --git a/pkg/deployment/reconcile/action_runtime_container_image_update.go b/pkg/deployment/reconcile/action_runtime_container_image_update.go index f69e7975e..20dec2023 100644 --- a/pkg/deployment/reconcile/action_runtime_container_image_update.go +++ b/pkg/deployment/reconcile/action_runtime_container_image_update.go @@ -30,7 +30,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) func init() { @@ -193,7 +193,7 @@ func (a actionRuntimeContainerImageUpdate) Start(ctx context.Context) (bool, err // Update pod image pod.Spec.Containers[id].Image = image - if _, err := a.actionCtx.ACS().CurrentClusterCache().PodsModInterface().V1().Update(ctx, pod, v1.UpdateOptions{}); err != nil { + if _, err := a.actionCtx.ACS().CurrentClusterCache().PodsModInterface().V1().Update(ctx, pod, meta.UpdateOptions{}); err != nil { return true, err } diff --git a/pkg/deployment/reconcile/plan_executor.go b/pkg/deployment/reconcile/plan_executor.go index 10acc126b..d0602928e 100644 --- a/pkg/deployment/reconcile/plan_executor.go +++ b/pkg/deployment/reconcile/plan_executor.go @@ -25,7 +25,7 @@ import ( "fmt" "time" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/metrics" @@ -252,7 +252,7 @@ func (d *Reconciler) executePlan(ctx context.Context, statusPlan api.Plan, pg pl actionsCurrentPlan.WithLabelValues(d.context.GetName(), planAction.Group.AsRole(), planAction.MemberID, planAction.Type.String(), pg.Type()).Inc() - now := metav1.Now() + now := meta.Now() plan[0].StartTime = &now } diff --git a/pkg/deployment/resources/exporter.go b/pkg/deployment/resources/exporter.go index a716543fb..948e85ca1 100644 --- a/pkg/deployment/resources/exporter.go +++ b/pkg/deployment/resources/exporter.go @@ -29,27 +29,27 @@ import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // ArangodbExporterContainer creates metrics container func ArangodbExporterContainer(image string, args []string, livenessProbe *probes.HTTPProbeConfig, - resources v1.ResourceRequirements, securityContext *v1.SecurityContext, - spec api.DeploymentSpec) v1.Container { + resources core.ResourceRequirements, securityContext *core.SecurityContext, + spec api.DeploymentSpec) core.Container { - c := v1.Container{ + c := core.Container{ Name: shared.ExporterContainerName, Image: image, Command: append([]string{"/app/arangodb-exporter"}, args...), - Ports: []v1.ContainerPort{ + Ports: []core.ContainerPort{ { Name: "exporter", ContainerPort: int32(spec.Metrics.GetPort()), - Protocol: v1.ProtocolTCP, + Protocol: core.ProtocolTCP, }, }, Resources: k8sutil.ExtractPodResourceRequirement(resources), - ImagePullPolicy: v1.PullIfNotPresent, + ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext, } diff --git a/pkg/deployment/resources/internal_exporter.go b/pkg/deployment/resources/internal_exporter.go index 9af32e006..17b8bd223 100644 --- a/pkg/deployment/resources/internal_exporter.go +++ b/pkg/deployment/resources/internal_exporter.go @@ -28,35 +28,35 @@ import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // ArangodbInternalExporterContainer creates metrics container based on internal exporter func ArangodbInternalExporterContainer(image string, args []string, livenessProbe *probes.HTTPProbeConfig, - resources v1.ResourceRequirements, securityContext *v1.SecurityContext, - spec api.DeploymentSpec) (v1.Container, error) { + resources core.ResourceRequirements, securityContext *core.SecurityContext, + spec api.DeploymentSpec) (core.Container, error) { binaryPath, err := os.Executable() if err != nil { - return v1.Container{}, errors.WithStack(err) + return core.Container{}, errors.WithStack(err) } exePath := filepath.Join(k8sutil.LifecycleVolumeMountDir, filepath.Base(binaryPath)) - c := v1.Container{ + c := core.Container{ Name: shared.ExporterContainerName, Image: image, Command: append([]string{exePath, "exporter"}, args...), - Ports: []v1.ContainerPort{ + Ports: []core.ContainerPort{ { Name: "exporter", ContainerPort: int32(spec.Metrics.GetPort()), - Protocol: v1.ProtocolTCP, + Protocol: core.ProtocolTCP, }, }, Resources: k8sutil.ExtractPodResourceRequirement(resources), - ImagePullPolicy: v1.PullIfNotPresent, + ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext, - VolumeMounts: []v1.VolumeMount{k8sutil.LifecycleVolumeMount()}, + VolumeMounts: []core.VolumeMount{k8sutil.LifecycleVolumeMount()}, } if livenessProbe != nil { diff --git a/pkg/deployment/resources/pod_finalizers.go b/pkg/deployment/resources/pod_finalizers.go index 579975290..fcd194fd7 100644 --- a/pkg/deployment/resources/pod_finalizers.go +++ b/pkg/deployment/resources/pod_finalizers.go @@ -28,7 +28,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" @@ -45,7 +45,7 @@ const ( // runPodFinalizers goes through the list of pod finalizers to see if they can be removed. // Returns: Interval_till_next_inspection, error -func (r *Resources) runPodFinalizers(ctx context.Context, p *v1.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) (util.Interval, error) { +func (r *Resources) runPodFinalizers(ctx context.Context, p *core.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) (util.Interval, error) { log := r.log.Str("section", "pod").Str("pod-name", p.GetName()) var removalList []string @@ -130,7 +130,7 @@ func (r *Resources) runPodFinalizers(ctx context.Context, p *v1.Pod, memberStatu // inspectFinalizerPodAgencyServing checks the finalizer condition for agency-serving. // It returns nil if the finalizer can be removed. -func (r *Resources) inspectFinalizerPodAgencyServing(ctx context.Context, p *v1.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error { +func (r *Resources) inspectFinalizerPodAgencyServing(ctx context.Context, p *core.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error { log := r.log.Str("section", "agency") if err := r.prepareAgencyPodTermination(p, memberStatus, func(update api.MemberStatus) error { if err := updateMember(update); err != nil { @@ -161,7 +161,7 @@ func (r *Resources) inspectFinalizerPodAgencyServing(ctx context.Context, p *v1. // inspectFinalizerPodDrainDBServer checks the finalizer condition for drain-dbserver. // It returns nil if the finalizer can be removed. -func (r *Resources) inspectFinalizerPodDrainDBServer(ctx context.Context, p *v1.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error { +func (r *Resources) inspectFinalizerPodDrainDBServer(ctx context.Context, p *core.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error { log := r.log.Str("section", "pod") if err := r.prepareDBServerPodTermination(ctx, p, memberStatus, func(update api.MemberStatus) error { if err := updateMember(update); err != nil { diff --git a/pkg/deployment/resources/pod_inspector.go b/pkg/deployment/resources/pod_inspector.go index 3dbdcee55..ab35dfd11 100644 --- a/pkg/deployment/resources/pod_inspector.go +++ b/pkg/deployment/resources/pod_inspector.go @@ -27,7 +27,6 @@ import ( "time" core "k8s.io/api/core/v1" - v1 "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" @@ -92,7 +91,7 @@ func (r *Resources) InspectPods(ctx context.Context, cachedStatus inspectorInter var podNamesWithScheduleTimeout []string var unscheduledPodNames []string - err := cachedStatus.Pod().V1().Iterate(func(pod *v1.Pod) error { + err := cachedStatus.Pod().V1().Iterate(func(pod *core.Pod) error { if k8sutil.IsArangoDBImageIDAndVersionPod(pod) { // Image ID pods are not relevant to inspect here return nil diff --git a/pkg/deployment/resources/pod_termination.go b/pkg/deployment/resources/pod_termination.go index 7a1f8b980..074332a94 100644 --- a/pkg/deployment/resources/pod_termination.go +++ b/pkg/deployment/resources/pod_termination.go @@ -34,13 +34,13 @@ import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/agency" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // prepareAgencyPodTermination checks if the given agency pod is allowed to terminate // and if so, prepares it for termination. // It returns nil if the pod is allowed to terminate, an error otherwise. -func (r *Resources) prepareAgencyPodTermination(p *v1.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error { +func (r *Resources) prepareAgencyPodTermination(p *core.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error { log := r.log.Str("section", "pod") // Inspect member phase @@ -110,7 +110,7 @@ func (r *Resources) prepareAgencyPodTermination(p *v1.Pod, memberStatus api.Memb // prepareDBServerPodTermination checks if the given dbserver pod is allowed to terminate // and if so, prepares it for termination. // It returns nil if the pod is allowed to terminate, an error otherwise. -func (r *Resources) prepareDBServerPodTermination(ctx context.Context, p *v1.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error { +func (r *Resources) prepareDBServerPodTermination(ctx context.Context, p *core.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error { log := r.log.Str("section", "pod") // Inspect member phase diff --git a/pkg/deployment/resources/pvc_finalizers.go b/pkg/deployment/resources/pvc_finalizers.go index 0914c6d47..b02582052 100644 --- a/pkg/deployment/resources/pvc_finalizers.go +++ b/pkg/deployment/resources/pvc_finalizers.go @@ -28,7 +28,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" @@ -42,7 +42,7 @@ const ( ) // runPVCFinalizers goes through the list of PVC finalizers to see if they can be removed. -func (r *Resources) runPVCFinalizers(ctx context.Context, p *v1.PersistentVolumeClaim, group api.ServerGroup, +func (r *Resources) runPVCFinalizers(ctx context.Context, p *core.PersistentVolumeClaim, group api.ServerGroup, memberStatus api.MemberStatus) (util.Interval, error) { log := r.log.Str("section", "pvc").Str("pvc-name", p.GetName()) var removalList []string diff --git a/pkg/deployment/resources/pvc_inspector.go b/pkg/deployment/resources/pvc_inspector.go index 0fc8d608c..bc9e34548 100644 --- a/pkg/deployment/resources/pvc_inspector.go +++ b/pkg/deployment/resources/pvc_inspector.go @@ -24,7 +24,7 @@ import ( "context" "time" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" @@ -58,7 +58,7 @@ func (r *Resources) InspectPVCs(ctx context.Context, cachedStatus inspectorInter // Update member status from all pods found status, _ := r.context.GetStatus() - if err := cachedStatus.PersistentVolumeClaim().V1().Iterate(func(pvc *v1.PersistentVolumeClaim) error { + if err := cachedStatus.PersistentVolumeClaim().V1().Iterate(func(pvc *core.PersistentVolumeClaim) error { // PVC belongs to this deployment, update metric inspectedPVCsCounters.WithLabelValues(deploymentName).Inc() diff --git a/pkg/deployment/server_api.go b/pkg/deployment/server_api.go index 02d206c1b..9dfaaa434 100644 --- a/pkg/deployment/server_api.go +++ b/pkg/deployment/server_api.go @@ -25,7 +25,7 @@ import ( "sort" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/apis/shared" @@ -190,7 +190,7 @@ func (d *Deployment) StorageClasses() []string { // Empty string means that the database is not reachable outside the Kubernetes cluster. func (d *Deployment) DatabaseURL() string { eaSvcName := k8sutil.CreateDatabaseExternalAccessServiceName(d.Name()) - svc, err := d.acs.CurrentClusterCache().Service().V1().Read().Get(context.Background(), eaSvcName, metav1.GetOptions{}) + svc, err := d.acs.CurrentClusterCache().Service().V1().Read().Get(context.Background(), eaSvcName, meta.GetOptions{}) if err != nil { return "" } diff --git a/pkg/deployment/server_member_api.go b/pkg/deployment/server_member_api.go index ece28b44f..47f07e61f 100644 --- a/pkg/deployment/server_member_api.go +++ b/pkg/deployment/server_member_api.go @@ -23,7 +23,7 @@ package deployment import ( "context" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/server" @@ -62,7 +62,7 @@ func (m member) PVCName() string { func (m member) PVName() string { if status, found := m.status(); found && status.PersistentVolumeClaimName != "" { pvcs := m.d.deps.Client.Kubernetes().CoreV1().PersistentVolumeClaims(m.d.Namespace()) - if pvc, err := pvcs.Get(context.Background(), status.PersistentVolumeClaimName, metav1.GetOptions{}); err == nil { + if pvc, err := pvcs.Get(context.Background(), status.PersistentVolumeClaimName, meta.GetOptions{}); err == nil { return pvc.Spec.VolumeName } } diff --git a/pkg/handlers/backup/status.go b/pkg/handlers/backup/status.go index ce2b219ff..976b243f3 100644 --- a/pkg/handlers/backup/status.go +++ b/pkg/handlers/backup/status.go @@ -30,7 +30,7 @@ import ( backupApi "github.com/arangodb/kube-arangodb/pkg/apis/backup/v1" "github.com/arangodb/kube-arangodb/pkg/handlers/backup/state" "github.com/arangodb/kube-arangodb/pkg/util" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) type updateStatusFunc func(status *backupApi.ArangoBackupStatus) @@ -52,7 +52,7 @@ func updateStatus(backup *backupApi.ArangoBackup, update ...updateStatusFunc) *b func updateStatusState(state state.State, template string, a ...interface{}) updateStatusFunc { return func(status *backupApi.ArangoBackupStatus) { if status.State != state { - status.Time = v1.Now() + status.Time = meta.Now() } status.State = state status.Message = fmt.Sprintf(template, a...) @@ -144,7 +144,7 @@ func createBackupFromMeta(backupMeta driver.BackupMeta, old *backupApi.ArangoBac obj.Keys = keysToHashList(backupMeta.Keys) obj.PotentiallyInconsistent = util.NewBool(backupMeta.PotentiallyInconsistent) obj.SizeInBytes = backupMeta.SizeInBytes - obj.CreationTimestamp = v1.Time{ + obj.CreationTimestamp = meta.Time{ Time: backupMeta.DateTime, } obj.NumberOfDBServers = backupMeta.NumberOfDBServers diff --git a/pkg/handlers/job/job_suite_test.go b/pkg/handlers/job/job_suite_test.go index 5ccbf9753..2c1d8b415 100644 --- a/pkg/handlers/job/job_suite_test.go +++ b/pkg/handlers/job/job_suite_test.go @@ -35,7 +35,7 @@ import ( "github.com/stretchr/testify/require" batchv1 "k8s.io/api/batch/v1" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/client-go/kubernetes/fake" @@ -114,16 +114,16 @@ func newArangoJob(name, namespace, deployment string) *appsApi.ArangoJob { Spec: appsApi.ArangoJobSpec{ ArangoDeploymentName: deployment, JobTemplate: &batchv1.JobSpec{ - Template: v1.PodTemplateSpec{ - Spec: v1.PodSpec{ - Containers: []v1.Container{ + Template: core.PodTemplateSpec{ + Spec: core.PodSpec{ + Containers: []core.Container{ { Image: "perl", Name: "pi", Args: []string{"perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"}, }, }, - RestartPolicy: v1.RestartPolicyNever, + RestartPolicy: core.RestartPolicyNever, }, }, }, diff --git a/pkg/operator/operator_leader.go b/pkg/operator/operator_leader.go index 4fed9944e..5f8f6da97 100644 --- a/pkg/operator/operator_leader.go +++ b/pkg/operator/operator_leader.go @@ -28,8 +28,8 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/tools/leaderelection" "k8s.io/client-go/tools/leaderelection/resourcelock" @@ -54,7 +54,7 @@ func (o *Operator) runLeaderElection(lockName, label string, onStart func(stop < eventTarget := o.getLeaderElectionEventTarget(log) recordEvent := func(reason, message string) { if eventTarget != nil { - o.Dependencies.EventRecorder.Event(eventTarget, v1.EventTypeNormal, reason, message) + o.Dependencies.EventRecorder.Event(eventTarget, core.EventTypeNormal, reason, message) } } rl, err := resourcelock.New(resourcelock.EndpointsResourceLock, @@ -104,7 +104,7 @@ func (o *Operator) runWithoutLeaderElection(lockName, label string, onStart func eventTarget := o.getLeaderElectionEventTarget(log) recordEvent := func(reason, message string) { if eventTarget != nil { - o.Dependencies.EventRecorder.Event(eventTarget, v1.EventTypeNormal, reason, message) + o.Dependencies.EventRecorder.Event(eventTarget, core.EventTypeNormal, reason, message) } } ctx := context.Background() @@ -125,7 +125,7 @@ func (o *Operator) getLeaderElectionEventTarget(log logging.Logger) runtime.Obje kubecli := o.Dependencies.Client.Kubernetes() pods := kubecli.CoreV1().Pods(ns) log = log.Str("pod-name", o.Config.PodName) - pod, err := pods.Get(context.Background(), o.Config.PodName, metav1.GetOptions{}) + pod, err := pods.Get(context.Background(), o.Config.PodName, meta.GetOptions{}) if err != nil { log.Err(err).Error("Cannot find Pod containing this operator") return nil @@ -159,7 +159,7 @@ func (o *Operator) setRoleLabel(log logging.Logger, label, role string) error { pods := kubecli.CoreV1().Pods(ns) log = log.Str("pod-name", o.Config.PodName) op := func() error { - pod, err := pods.Get(context.Background(), o.Config.PodName, metav1.GetOptions{}) + pod, err := pods.Get(context.Background(), o.Config.PodName, meta.GetOptions{}) if k8sutil.IsNotFound(err) { log.Err(err).Error("Pod not found, so we cannot set its role label") return retry.Permanent(errors.WithStack(err)) @@ -172,7 +172,7 @@ func (o *Operator) setRoleLabel(log logging.Logger, label, role string) error { } labels[label] = role pod.ObjectMeta.SetLabels(labels) - if _, err := pods.Update(context.Background(), pod, metav1.UpdateOptions{}); k8sutil.IsConflict(err) { + if _, err := pods.Update(context.Background(), pod, meta.UpdateOptions{}); k8sutil.IsConflict(err) { // Retry it return errors.WithStack(err) } else if err != nil { diff --git a/pkg/operator/server_discovery_api.go b/pkg/operator/server_discovery_api.go index 0145fcfdb..8200ada68 100644 --- a/pkg/operator/server_discovery_api.go +++ b/pkg/operator/server_discovery_api.go @@ -27,7 +27,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb/kube-arangodb/pkg/logging" "github.com/arangodb/kube-arangodb/pkg/server" @@ -52,7 +52,7 @@ func (o *Operator) FindOtherOperators() []server.OperatorReference { log := o.log var result []server.OperatorReference - namespaces, err := o.Dependencies.Client.Kubernetes().CoreV1().Namespaces().List(context.Background(), metav1.ListOptions{}) + namespaces, err := o.Dependencies.Client.Kubernetes().CoreV1().Namespaces().List(context.Background(), meta.ListOptions{}) if err != nil { log.Err(err).Warn("Failed to list namespaces") } else { @@ -94,7 +94,7 @@ func (o *Operator) FindOtherOperators() []server.OperatorReference { func (o *Operator) findOtherOperatorsInNamespace(log logging.Logger, namespace string, typePred func(server.OperatorType) bool) []server.OperatorReference { log = log.Str("namespace", namespace) var result []server.OperatorReference - services, err := o.Dependencies.Client.Kubernetes().CoreV1().Services(namespace).List(context.Background(), metav1.ListOptions{}) + services, err := o.Dependencies.Client.Kubernetes().CoreV1().Services(namespace).List(context.Background(), meta.ListOptions{}) if err != nil { log.Err(err).Debug("Failed to list services") return nil @@ -103,7 +103,7 @@ func (o *Operator) findOtherOperatorsInNamespace(log logging.Logger, namespace s if o.Scope.IsNamespaced() { return nil, nil } - result, err := o.Dependencies.Client.Kubernetes().CoreV1().Nodes().List(context.Background(), metav1.ListOptions{}) + result, err := o.Dependencies.Client.Kubernetes().CoreV1().Nodes().List(context.Background(), meta.ListOptions{}) if err != nil { return nil, errors.WithStack(err) } diff --git a/pkg/replication/deployment_replication.go b/pkg/replication/deployment_replication.go index db0016741..e11b2d34e 100644 --- a/pkg/replication/deployment_replication.go +++ b/pkg/replication/deployment_replication.go @@ -28,7 +28,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/record" "github.com/arangodb/arangosync-client/client" @@ -196,7 +196,7 @@ func (dr *DeploymentReplication) handleArangoDeploymentReplicationUpdatedEvent(e repls := dr.deps.Client.Arango().ReplicationV1().ArangoDeploymentReplications(dr.apiObject.GetNamespace()) // Get the most recent version of the deployment replication from the API server - current, err := repls.Get(context.Background(), dr.apiObject.GetName(), metav1.GetOptions{}) + current, err := repls.Get(context.Background(), dr.apiObject.GetName(), meta.GetOptions{}) if err != nil { log.Err(err).Debug("Failed to get current version of deployment replication from API server") if k8sutil.IsNotFound(err) { @@ -260,7 +260,7 @@ func (dr *DeploymentReplication) updateCRStatus() error { for { attempt++ update.Status = dr.status - newAPIObject, err := repls.Update(context.Background(), update, metav1.UpdateOptions{}) + newAPIObject, err := repls.Update(context.Background(), update, meta.UpdateOptions{}) if err == nil { // Update internal object dr.apiObject = newAPIObject @@ -270,7 +270,7 @@ func (dr *DeploymentReplication) updateCRStatus() error { // API object may have been changed already, // Reload api object and try again var current *api.ArangoDeploymentReplication - current, err = repls.Get(context.Background(), update.GetName(), metav1.GetOptions{}) + current, err = repls.Get(context.Background(), update.GetName(), meta.GetOptions{}) if err == nil { update = current.DeepCopy() continue @@ -297,7 +297,7 @@ func (dr *DeploymentReplication) updateCRSpec(newSpec api.DeploymentReplicationS attempt++ update.Spec = newSpec update.Status = dr.status - newAPIObject, err := repls.Update(context.Background(), update, metav1.UpdateOptions{}) + newAPIObject, err := repls.Update(context.Background(), update, meta.UpdateOptions{}) if err == nil { // Update internal object dr.apiObject = newAPIObject @@ -307,7 +307,7 @@ func (dr *DeploymentReplication) updateCRSpec(newSpec api.DeploymentReplicationS // API object may have been changed already, // Reload api object and try again var current *api.ArangoDeploymentReplication - current, err = repls.Get(context.Background(), update.GetName(), metav1.GetOptions{}) + current, err = repls.Get(context.Background(), update.GetName(), meta.GetOptions{}) if err == nil { update = current.DeepCopy() continue @@ -346,7 +346,7 @@ func (dr *DeploymentReplication) reportFailedStatus() { return errors.WithStack(err) } - depl, err := repls.Get(context.Background(), dr.apiObject.Name, metav1.GetOptions{}) + depl, err := repls.Get(context.Background(), dr.apiObject.Name, meta.GetOptions{}) if err != nil { // Update (PUT) will return conflict even if object is deleted since we have UID set in object. // Because it will check UID first and return something like: diff --git a/pkg/replication/finalizers.go b/pkg/replication/finalizers.go index 1edb83799..292cf7b1f 100644 --- a/pkg/replication/finalizers.go +++ b/pkg/replication/finalizers.go @@ -26,7 +26,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb/arangosync-client/client" api "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1" @@ -98,7 +98,7 @@ func (dr *DeploymentReplication) inspectFinalizerDeplReplStopSync(ctx context.Co abort := dr.status.CancelFailures > maxCancelFailures depls := dr.deps.Client.Arango().DatabaseV1().ArangoDeployments(p.GetNamespace()) if name := p.Spec.Source.GetDeploymentName(); name != "" { - depl, err := depls.Get(context.Background(), name, metav1.GetOptions{}) + depl, err := depls.Get(context.Background(), name, meta.GetOptions{}) if k8sutil.IsNotFound(err) { dr.log.Debug("Source deployment is gone. Abort enabled") abort = true @@ -114,7 +114,7 @@ func (dr *DeploymentReplication) inspectFinalizerDeplReplStopSync(ctx context.Co // Inspect deployment deletion state in destination cleanupSource := false if name := p.Spec.Destination.GetDeploymentName(); name != "" { - depl, err := depls.Get(context.Background(), name, metav1.GetOptions{}) + depl, err := depls.Get(context.Background(), name, meta.GetOptions{}) if k8sutil.IsNotFound(err) { dr.log.Debug("Destination deployment is gone. Source cleanup enabled") cleanupSource = true @@ -166,16 +166,16 @@ func (dr *DeploymentReplication) inspectFinalizerDeplReplStopSync(ctx context.Co // removeDeploymentReplicationFinalizers removes the given finalizers from the given DeploymentReplication. func removeDeploymentReplicationFinalizers(crcli versioned.Interface, p *api.ArangoDeploymentReplication, finalizers []string, ignoreNotFound bool) error { repls := crcli.ReplicationV1().ArangoDeploymentReplications(p.GetNamespace()) - getFunc := func() (metav1.Object, error) { - result, err := repls.Get(context.Background(), p.GetName(), metav1.GetOptions{}) + getFunc := func() (meta.Object, error) { + result, err := repls.Get(context.Background(), p.GetName(), meta.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } return result, nil } - updateFunc := func(updated metav1.Object) error { + updateFunc := func(updated meta.Object) error { updatedRepl := updated.(*api.ArangoDeploymentReplication) - result, err := repls.Update(context.Background(), updatedRepl, metav1.UpdateOptions{}) + result, err := repls.Update(context.Background(), updatedRepl, meta.UpdateOptions{}) if err != nil { return errors.WithStack(err) } diff --git a/pkg/replication/sync_client.go b/pkg/replication/sync_client.go index 2163d876c..9a6712c38 100644 --- a/pkg/replication/sync_client.go +++ b/pkg/replication/sync_client.go @@ -30,7 +30,7 @@ import ( certificates "github.com/arangodb-helper/go-certificates" "github.com/arangodb/arangosync-client/client" "github.com/arangodb/arangosync-client/tasks" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1" "github.com/arangodb/kube-arangodb/pkg/apis/shared" @@ -108,7 +108,7 @@ func (dr *DeploymentReplication) createArangoSyncEndpoint(epSpec api.EndpointSpe if epSpec.HasDeploymentName() { deploymentName := epSpec.GetDeploymentName() depls := dr.deps.Client.Arango().DatabaseV1().ArangoDeployments(dr.apiObject.GetNamespace()) - depl, err := depls.Get(context.Background(), deploymentName, metav1.GetOptions{}) + depl, err := depls.Get(context.Background(), deploymentName, meta.GetOptions{}) if err != nil { dr.log.Err(err).Str("deployment", deploymentName).Debug("Failed to get deployment") return nil, errors.WithStack(err) @@ -167,7 +167,7 @@ func (dr *DeploymentReplication) getEndpointSecretNames(epSpec api.EndpointSpec) if epSpec.HasDeploymentName() { deploymentName := epSpec.GetDeploymentName() depls := dr.deps.Client.Arango().DatabaseV1().ArangoDeployments(dr.apiObject.GetNamespace()) - depl, err := depls.Get(context.Background(), deploymentName, metav1.GetOptions{}) + depl, err := depls.Get(context.Background(), deploymentName, meta.GetOptions{}) if err != nil { dr.log.Err(err).Str("deployment", deploymentName).Debug("Failed to get deployment") return "", "", "", "", errors.WithStack(err) diff --git a/pkg/server/auth.go b/pkg/server/auth.go index 677fa78f7..8b09694e6 100644 --- a/pkg/server/auth.go +++ b/pkg/server/auth.go @@ -33,8 +33,8 @@ import ( "github.com/gin-gonic/gin" "github.com/arangodb/kube-arangodb/pkg/logging" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" typedv1 "k8s.io/client-go/kubernetes/typed/core/v1" ) @@ -98,18 +98,18 @@ func (s *serverAuthentication) fetchAdminSecret() (string, string, error) { if s.adminSecretName == "" { return "", "", errors.WithStack(errors.Newf("No admin secret name specified")) } - secret, err := s.secrets.Get(context.Background(), s.adminSecretName, metav1.GetOptions{}) + secret, err := s.secrets.Get(context.Background(), s.adminSecretName, meta.GetOptions{}) if err != nil { return "", "", errors.WithStack(err) } var username, password string - if raw, found := secret.Data[v1.BasicAuthUsernameKey]; !found { - return "", "", errors.WithStack(errors.Newf("Secret '%s' contains no '%s' field", s.adminSecretName, v1.BasicAuthUsernameKey)) + if raw, found := secret.Data[core.BasicAuthUsernameKey]; !found { + return "", "", errors.WithStack(errors.Newf("Secret '%s' contains no '%s' field", s.adminSecretName, core.BasicAuthUsernameKey)) } else { username = string(raw) } - if raw, found := secret.Data[v1.BasicAuthPasswordKey]; !found { - return "", "", errors.WithStack(errors.Newf("Secret '%s' contains no '%s' field", s.adminSecretName, v1.BasicAuthPasswordKey)) + if raw, found := secret.Data[core.BasicAuthPasswordKey]; !found { + return "", "", errors.WithStack(errors.Newf("Secret '%s' contains no '%s' field", s.adminSecretName, core.BasicAuthPasswordKey)) } else { password = string(raw) } diff --git a/pkg/server/server.go b/pkg/server/server.go index 28f7e2769..0294d2769 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -37,7 +37,7 @@ import ( "github.com/jessevdk/go-assets" prometheus "github.com/prometheus/client_golang/prometheus/promhttp" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" "github.com/arangodb/kube-arangodb/dashboard" @@ -107,7 +107,7 @@ func NewServer(cli corev1.CoreV1Interface, cfg Config, deps Dependencies) (*Serv var cert, key string if cfg.TLSSecretName != "" && cfg.TLSSecretNamespace != "" { // Load TLS certificate from secret - s, err := cli.Secrets(cfg.TLSSecretNamespace).Get(context.Background(), cfg.TLSSecretName, metav1.GetOptions{}) + s, err := cli.Secrets(cfg.TLSSecretNamespace).Get(context.Background(), cfg.TLSSecretName, meta.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } diff --git a/pkg/storage/image_test.go b/pkg/storage/image_test.go index bc96967c0..292640776 100644 --- a/pkg/storage/image_test.go +++ b/pkg/storage/image_test.go @@ -27,8 +27,8 @@ import ( "github.com/stretchr/testify/require" "github.com/arangodb/kube-arangodb/pkg/util/kclient" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // TestGetMyImage tests getMyImage() method @@ -36,23 +36,23 @@ func TestGetMyImage(t *testing.T) { testNamespace := "testNs" testPodName := "testPodname" testImage := "test-image" - testPullSecrets := []v1.LocalObjectReference{ + testPullSecrets := []core.LocalObjectReference{ { Name: "custom-docker", }, } - pod := v1.Pod{ - ObjectMeta: metav1.ObjectMeta{ + pod := core.Pod{ + ObjectMeta: meta.ObjectMeta{ Name: testPodName, Namespace: testNamespace, }, - Spec: v1.PodSpec{ - Containers: []v1.Container{ + Spec: core.PodSpec{ + Containers: []core.Container{ { Name: "test", Image: testImage, - ImagePullPolicy: v1.PullAlways, + ImagePullPolicy: core.PullAlways, }, }, ImagePullSecrets: testPullSecrets, @@ -70,13 +70,13 @@ func TestGetMyImage(t *testing.T) { } // prepare mock - if _, err := ls.deps.Client.Kubernetes().CoreV1().Pods(testNamespace).Create(context.Background(), &pod, metav1.CreateOptions{}); err != nil { + if _, err := ls.deps.Client.Kubernetes().CoreV1().Pods(testNamespace).Create(context.Background(), &pod, meta.CreateOptions{}); err != nil { require.NoError(t, err) } image, pullPolicy, pullSecrets, err := ls.getMyImage() require.NoError(t, err) require.Equal(t, image, testImage) - require.Equal(t, pullPolicy, v1.PullAlways) + require.Equal(t, pullPolicy, core.PullAlways) require.Equal(t, pullSecrets, testPullSecrets) } diff --git a/pkg/storage/local_storage.go b/pkg/storage/local_storage.go index f565989c6..f9e2f73f7 100644 --- a/pkg/storage/local_storage.go +++ b/pkg/storage/local_storage.go @@ -28,8 +28,8 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/record" api "github.com/arangodb/kube-arangodb/pkg/apis/storage/v1alpha" @@ -70,8 +70,8 @@ const ( type localStorageEvent struct { Type localStorageEventType LocalStorage *api.ArangoLocalStorage - PersistentVolume *v1.PersistentVolume - PersistentVolumeClaim *v1.PersistentVolumeClaim + PersistentVolume *core.PersistentVolume + PersistentVolumeClaim *core.PersistentVolumeClaim } const ( @@ -94,8 +94,8 @@ type LocalStorage struct { stopped int32 image string - imagePullPolicy v1.PullPolicy - imagePullSecrets []v1.LocalObjectReference + imagePullPolicy core.PullPolicy + imagePullSecrets []core.LocalObjectReference inspectTrigger trigger.Trigger pvCleaner *pvCleaner @@ -297,7 +297,7 @@ func (ls *LocalStorage) handleArangoLocalStorageUpdatedEvent(event *localStorage log := ls.log.Str("localStorage", event.LocalStorage.GetName()) // Get the most recent version of the local storage from the API server - current, err := ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Get(context.Background(), ls.apiObject.GetName(), metav1.GetOptions{}) + current, err := ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Get(context.Background(), ls.apiObject.GetName(), meta.GetOptions{}) if err != nil { log.Err(err).Debug("Failed to get current version of local storage from API server") if k8sutil.IsNotFound(err) { @@ -359,7 +359,7 @@ func (ls *LocalStorage) updateCRStatus() error { for { attempt++ update.Status = ls.status - newAPIObject, err := ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Update(context.Background(), update, metav1.UpdateOptions{}) + newAPIObject, err := ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Update(context.Background(), update, meta.UpdateOptions{}) if err == nil { // Update internal object ls.apiObject = newAPIObject @@ -369,7 +369,7 @@ func (ls *LocalStorage) updateCRStatus() error { // API object may have been changed already, // Reload api object and try again var current *api.ArangoLocalStorage - current, err = ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Get(context.Background(), update.GetName(), metav1.GetOptions{}) + current, err = ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Get(context.Background(), update.GetName(), meta.GetOptions{}) if err == nil { update = current.DeepCopy() continue @@ -393,7 +393,7 @@ func (ls *LocalStorage) updateCRSpec(newSpec api.LocalStorageSpec) error { attempt++ update.Spec = newSpec update.Status = ls.status - newAPIObject, err := ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Update(context.Background(), update, metav1.UpdateOptions{}) + newAPIObject, err := ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Update(context.Background(), update, meta.UpdateOptions{}) if err == nil { // Update internal object ls.apiObject = newAPIObject @@ -403,7 +403,7 @@ func (ls *LocalStorage) updateCRSpec(newSpec api.LocalStorageSpec) error { // API object may have been changed already, // Reload api object and try again var current *api.ArangoLocalStorage - current, err = ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Get(context.Background(), update.GetName(), metav1.GetOptions{}) + current, err = ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Get(context.Background(), update.GetName(), meta.GetOptions{}) if err == nil { update = current.DeepCopy() continue @@ -442,7 +442,7 @@ func (ls *LocalStorage) reportFailedStatus() { return errors.WithStack(err) } - depl, err := ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Get(context.Background(), ls.apiObject.Name, metav1.GetOptions{}) + depl, err := ls.deps.Client.Arango().StorageV1alpha().ArangoLocalStorages().Get(context.Background(), ls.apiObject.Name, meta.GetOptions{}) if err != nil { // Update (PUT) will return conflict even if object is deleted since we have UID set in object. // Because it will check UID first and return something like: @@ -461,7 +461,7 @@ func (ls *LocalStorage) reportFailedStatus() { } // isOwnerOf returns true if the given object belong to this local storage. -func (ls *LocalStorage) isOwnerOf(obj metav1.Object) bool { +func (ls *LocalStorage) isOwnerOf(obj meta.Object) bool { ownerRefs := obj.GetOwnerReferences() if len(ownerRefs) < 1 { return false diff --git a/pkg/storage/pv_cleanup.go b/pkg/storage/pv_cleanup.go index 2e3fb7d5f..0c4f6a0be 100644 --- a/pkg/storage/pv_cleanup.go +++ b/pkg/storage/pv_cleanup.go @@ -28,8 +28,8 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/rs/zerolog" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "github.com/arangodb/kube-arangodb/pkg/logging" @@ -44,7 +44,7 @@ type pvCleaner struct { mutex sync.Mutex log logging.Logger cli kubernetes.Interface - items []v1.PersistentVolume + items []core.PersistentVolume trigger trigger.Trigger clientGetter func(nodeName string) (provisioner.API, error) } @@ -86,7 +86,7 @@ func (c *pvCleaner) Run(stopCh <-chan struct{}) { } // Add the given volume to the list of items to clean. -func (c *pvCleaner) Add(pv v1.PersistentVolume) { +func (c *pvCleaner) Add(pv core.PersistentVolume) { c.mutex.Lock() defer c.mutex.Unlock() @@ -105,7 +105,7 @@ func (c *pvCleaner) Add(pv v1.PersistentVolume) { // cleanFirst tries to clean the first PV in the list. // Returns (hasMore, error) func (c *pvCleaner) cleanFirst() (bool, error) { - var first *v1.PersistentVolume + var first *core.PersistentVolume c.mutex.Lock() if len(c.items) > 0 { first = &c.items[0] @@ -132,7 +132,7 @@ func (c *pvCleaner) cleanFirst() (bool, error) { } // clean tries to clean the given PV. -func (c *pvCleaner) clean(pv v1.PersistentVolume) error { +func (c *pvCleaner) clean(pv core.PersistentVolume) error { log := c.log.Str("name", pv.GetName()) log.Debug("Cleaning PersistentVolume") @@ -165,7 +165,7 @@ func (c *pvCleaner) clean(pv v1.PersistentVolume) error { } // Remove persistent volume - if err := c.cli.CoreV1().PersistentVolumes().Delete(context.Background(), pv.GetName(), metav1.DeleteOptions{}); err != nil && !k8sutil.IsNotFound(err) { + if err := c.cli.CoreV1().PersistentVolumes().Delete(context.Background(), pv.GetName(), meta.DeleteOptions{}); err != nil && !k8sutil.IsNotFound(err) { log.Err(err). Str("name", pv.GetName()). Debug("Failed to remove PersistentVolume") diff --git a/pkg/storage/pv_creator.go b/pkg/storage/pv_creator.go index f80251e5d..df494f726 100644 --- a/pkg/storage/pv_creator.go +++ b/pkg/storage/pv_creator.go @@ -37,8 +37,8 @@ import ( "k8s.io/apimachinery/pkg/api/resource" "github.com/dchest/uniuri" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/storage/v1alpha" "github.com/arangodb/kube-arangodb/pkg/storage/provisioner" @@ -59,7 +59,7 @@ var ( ) // createPVs creates a given number of PersistentVolume's. -func (ls *LocalStorage) createPVs(ctx context.Context, apiObject *api.ArangoLocalStorage, unboundClaims []v1.PersistentVolumeClaim) error { +func (ls *LocalStorage) createPVs(ctx context.Context, apiObject *api.ArangoLocalStorage, unboundClaims []core.PersistentVolumeClaim) error { // Find provisioner clients clients, err := ls.createProvisionerClients() if err != nil { @@ -99,7 +99,7 @@ func (ls *LocalStorage) createPVs(ctx context.Context, apiObject *api.ArangoLoca // Find size of PVC volSize := defaultVolumeSize - if reqStorage, ok := claim.Spec.Resources.Requests[v1.ResourceStorage]; ok { + if reqStorage, ok := claim.Spec.Resources.Requests[core.ResourceStorage]; ok { if v, ok := reqStorage.AsInt64(); ok && v > 0 { volSize = v } @@ -114,7 +114,7 @@ func (ls *LocalStorage) createPVs(ctx context.Context, apiObject *api.ArangoLoca } // createPV creates a PersistentVolume. -func (ls *LocalStorage) createPV(ctx context.Context, apiObject *api.ArangoLocalStorage, clients []provisioner.API, clientsOffset int, volSize int64, claim v1.PersistentVolumeClaim, deploymentName, role string) error { +func (ls *LocalStorage) createPV(ctx context.Context, apiObject *api.ArangoLocalStorage, clients []provisioner.API, clientsOffset int, volSize int64, claim core.PersistentVolumeClaim, deploymentName, role string) error { // Try clients for clientIdx := 0; clientIdx < len(clients); clientIdx++ { client := clients[(clientsOffset+clientIdx)%len(clients)] @@ -141,10 +141,10 @@ func (ls *LocalStorage) createPV(ctx context.Context, apiObject *api.ArangoLocal } // Create a volume pvName := strings.ToLower(apiObject.GetName() + "-" + shortHash(info.NodeName) + "-" + name) - volumeMode := v1.PersistentVolumeFilesystem + volumeMode := core.PersistentVolumeFilesystem nodeSel := createNodeSelector(info.NodeName) - pv := &v1.PersistentVolume{ - ObjectMeta: metav1.ObjectMeta{ + pv := &core.PersistentVolume{ + ObjectMeta: meta.ObjectMeta{ Name: pvName, Annotations: map[string]string{ AnnProvisionedBy: storageClassProvisioner, @@ -155,36 +155,36 @@ func (ls *LocalStorage) createPV(ctx context.Context, apiObject *api.ArangoLocal k8sutil.LabelKeyRole: role, }, }, - Spec: v1.PersistentVolumeSpec{ - Capacity: v1.ResourceList{ - v1.ResourceStorage: *resource.NewQuantity(volSize, resource.BinarySI), + Spec: core.PersistentVolumeSpec{ + Capacity: core.ResourceList{ + core.ResourceStorage: *resource.NewQuantity(volSize, resource.BinarySI), }, - PersistentVolumeReclaimPolicy: v1.PersistentVolumeReclaimRetain, - PersistentVolumeSource: v1.PersistentVolumeSource{ - Local: &v1.LocalVolumeSource{ + PersistentVolumeReclaimPolicy: core.PersistentVolumeReclaimRetain, + PersistentVolumeSource: core.PersistentVolumeSource{ + Local: &core.LocalVolumeSource{ Path: localPath, }, }, - AccessModes: []v1.PersistentVolumeAccessMode{ - v1.ReadWriteOnce, + AccessModes: []core.PersistentVolumeAccessMode{ + core.ReadWriteOnce, }, StorageClassName: apiObject.Spec.StorageClass.Name, VolumeMode: &volumeMode, - ClaimRef: &v1.ObjectReference{ + ClaimRef: &core.ObjectReference{ Kind: "PersistentVolumeClaim", APIVersion: "", Name: claim.GetName(), Namespace: claim.GetNamespace(), UID: claim.GetUID(), }, - NodeAffinity: &v1.VolumeNodeAffinity{ + NodeAffinity: &core.VolumeNodeAffinity{ Required: nodeSel, }, }, } // Attach PV to ArangoLocalStorage pv.SetOwnerReferences(append(pv.GetOwnerReferences(), apiObject.AsOwner())) - if _, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().Create(context.Background(), pv, metav1.CreateOptions{}); err != nil { + if _, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().Create(context.Background(), pv, meta.CreateOptions{}); err != nil { log.Err(err).Error("Failed to create PersistentVolume") continue } @@ -196,7 +196,7 @@ func (ls *LocalStorage) createPV(ctx context.Context, apiObject *api.ArangoLocal // Bind claim to volume if err := ls.bindClaimToVolume(claim, pv.GetName()); err != nil { // Try to delete the PV now - if err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().Delete(context.Background(), pv.GetName(), metav1.DeleteOptions{}); err != nil { + if err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().Delete(context.Background(), pv.GetName(), meta.DeleteOptions{}); err != nil { log.Err(err).Error("Failed to delete PV after binding PVC failed") } return errors.WithStack(err) @@ -210,7 +210,7 @@ func (ls *LocalStorage) createPV(ctx context.Context, apiObject *api.ArangoLocal // createValidEndpointList convers the given endpoints list into // valid addresses. -func createValidEndpointList(list *v1.EndpointsList) []string { +func createValidEndpointList(list *core.EndpointsList) []string { result := make([]string, 0, len(list.Items)) for _, ep := range list.Items { for _, subset := range ep.Subsets { @@ -225,14 +225,14 @@ func createValidEndpointList(list *v1.EndpointsList) []string { } // createNodeAffinity creates a node affinity serialized to string. -func createNodeSelector(nodeName string) *v1.NodeSelector { - return &v1.NodeSelector{ - NodeSelectorTerms: []v1.NodeSelectorTerm{ - v1.NodeSelectorTerm{ - MatchExpressions: []v1.NodeSelectorRequirement{ - v1.NodeSelectorRequirement{ +func createNodeSelector(nodeName string) *core.NodeSelector { + return &core.NodeSelector{ + NodeSelectorTerms: []core.NodeSelectorTerm{ + core.NodeSelectorTerm{ + MatchExpressions: []core.NodeSelectorRequirement{ + core.NodeSelectorRequirement{ Key: "kubernetes.io/hostname", - Operator: v1.NodeSelectorOpIn, + Operator: core.NodeSelectorOpIn, Values: []string{nodeName}, }, }, @@ -258,7 +258,7 @@ func createNodeClientMap(ctx context.Context, clients []provisioner.API) map[str // the role of the server that the claim is used for and the value for `enforceAntiAffinity`. // If not found, empty strings are returned. // Returns deploymentName, role, enforceAntiAffinity. -func getDeploymentInfo(pvc v1.PersistentVolumeClaim) (string, string, bool) { +func getDeploymentInfo(pvc core.PersistentVolumeClaim) (string, string, bool) { deploymentName := pvc.GetLabels()[k8sutil.LabelKeyArangoDeployment] role := pvc.GetLabels()[k8sutil.LabelKeyRole] enforceAntiAffinity, _ := strconv.ParseBool(pvc.GetAnnotations()[constants.AnnotationEnforceAntiAffinity]) // If annotation empty, this will yield false. @@ -268,7 +268,7 @@ func getDeploymentInfo(pvc v1.PersistentVolumeClaim) (string, string, bool) { // filterAllowedNodes returns those clients that do not yet have a volume for the given deployment name & role. func (ls *LocalStorage) filterAllowedNodes(clients map[string]provisioner.API, deploymentName, role string) ([]provisioner.API, error) { // Find all PVs for given deployment & role - list, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().List(context.Background(), metav1.ListOptions{ + list, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().List(context.Background(), meta.ListOptions{ LabelSelector: fmt.Sprintf("%s=%s,%s=%s", k8sutil.LabelKeyArangoDeployment, deploymentName, k8sutil.LabelKeyRole, role), }) if err != nil { @@ -290,7 +290,7 @@ func (ls *LocalStorage) filterAllowedNodes(clients map[string]provisioner.API, d // bindClaimToVolume tries to bind the given claim to the volume with given name. // If the claim has been updated, the function retries several times. -func (ls *LocalStorage) bindClaimToVolume(claim v1.PersistentVolumeClaim, volumeName string) error { +func (ls *LocalStorage) bindClaimToVolume(claim core.PersistentVolumeClaim, volumeName string) error { log := ls.log.Str("pvc-name", claim.GetName()).Str("volume-name", volumeName) pvcs := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumeClaims(claim.GetNamespace()) @@ -299,7 +299,7 @@ func (ls *LocalStorage) bindClaimToVolume(claim v1.PersistentVolumeClaim, volume time.Sleep(time.Millisecond * time.Duration(10*attempt)) // Fetch latest version of claim - updated, err := pvcs.Get(context.Background(), claim.GetName(), metav1.GetOptions{}) + updated, err := pvcs.Get(context.Background(), claim.GetName(), meta.GetOptions{}) if k8sutil.IsNotFound(err) { return errors.WithStack(err) } else if err != nil { @@ -318,7 +318,7 @@ func (ls *LocalStorage) bindClaimToVolume(claim v1.PersistentVolumeClaim, volume // Try to bind updated.Spec.VolumeName = volumeName - if _, err := pvcs.Update(context.Background(), updated, metav1.UpdateOptions{}); k8sutil.IsConflict(err) { + if _, err := pvcs.Update(context.Background(), updated, meta.UpdateOptions{}); k8sutil.IsConflict(err) { // Claim modified already, retry log.Err(err).Debug("PersistentVolumeClaim has been modified. Retrying.") } else if err != nil { diff --git a/pkg/storage/pv_creator_test.go b/pkg/storage/pv_creator_test.go index f805f9e3c..6f4988ccb 100644 --- a/pkg/storage/pv_creator_test.go +++ b/pkg/storage/pv_creator_test.go @@ -26,8 +26,8 @@ import ( "testing" "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb/kube-arangodb/pkg/storage/provisioner" "github.com/arangodb/kube-arangodb/pkg/storage/provisioner/mocks" @@ -36,31 +36,31 @@ import ( // TestCreateValidEndpointList tests createValidEndpointList. func TestCreateValidEndpointList(t *testing.T) { tests := []struct { - Input *v1.EndpointsList + Input *core.EndpointsList Expected []string }{ { - Input: &v1.EndpointsList{}, + Input: &core.EndpointsList{}, Expected: []string{}, }, { - Input: &v1.EndpointsList{ - Items: []v1.Endpoints{ - v1.Endpoints{ - Subsets: []v1.EndpointSubset{ - v1.EndpointSubset{ - Addresses: []v1.EndpointAddress{ - v1.EndpointAddress{ + Input: &core.EndpointsList{ + Items: []core.Endpoints{ + core.Endpoints{ + Subsets: []core.EndpointSubset{ + core.EndpointSubset{ + Addresses: []core.EndpointAddress{ + core.EndpointAddress{ IP: "1.2.3.4", }, }, }, - v1.EndpointSubset{ - Addresses: []v1.EndpointAddress{ - v1.EndpointAddress{ + core.EndpointSubset{ + Addresses: []core.EndpointAddress{ + core.EndpointAddress{ IP: "5.6.7.8", }, - v1.EndpointAddress{ + core.EndpointAddress{ IP: "9.10.11.12", }, }, @@ -127,20 +127,20 @@ func TestCreateNodeClientMap(t *testing.T) { // TestGetDeploymentInfo tests getDeploymentInfo. func TestGetDeploymentInfo(t *testing.T) { tests := []struct { - Input v1.PersistentVolumeClaim + Input core.PersistentVolumeClaim ExpectedDeploymentName string ExpectedRole string ExpectedEnforceAntiAffinity bool }{ { - Input: v1.PersistentVolumeClaim{}, + Input: core.PersistentVolumeClaim{}, ExpectedDeploymentName: "", ExpectedRole: "", ExpectedEnforceAntiAffinity: false, }, { - Input: v1.PersistentVolumeClaim{ - ObjectMeta: metav1.ObjectMeta{ + Input: core.PersistentVolumeClaim{ + ObjectMeta: meta.ObjectMeta{ Annotations: map[string]string{ "database.arangodb.com/enforce-anti-affinity": "true", }, @@ -155,8 +155,8 @@ func TestGetDeploymentInfo(t *testing.T) { ExpectedEnforceAntiAffinity: true, }, { - Input: v1.PersistentVolumeClaim{ - ObjectMeta: metav1.ObjectMeta{ + Input: core.PersistentVolumeClaim{ + ObjectMeta: meta.ObjectMeta{ Annotations: map[string]string{ "database.arangodb.com/enforce-anti-affinity": "false", }, @@ -171,8 +171,8 @@ func TestGetDeploymentInfo(t *testing.T) { ExpectedEnforceAntiAffinity: false, }, { - Input: v1.PersistentVolumeClaim{ - ObjectMeta: metav1.ObjectMeta{ + Input: core.PersistentVolumeClaim{ + ObjectMeta: meta.ObjectMeta{ Annotations: map[string]string{ "database.arangodb.com/enforce-anti-affinity": "wrong", }, diff --git a/pkg/storage/pv_informer.go b/pkg/storage/pv_informer.go index 0713ed144..d815ac3e8 100644 --- a/pkg/storage/pv_informer.go +++ b/pkg/storage/pv_informer.go @@ -21,7 +21,7 @@ package storage import ( - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" "k8s.io/client-go/tools/cache" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -29,14 +29,14 @@ import ( // listenForPvEvents keep listening for changes in PV's until the given channel is closed. func (ls *LocalStorage) listenForPvEvents() { - getPv := func(obj interface{}) (*v1.PersistentVolume, bool) { - pv, ok := obj.(*v1.PersistentVolume) + getPv := func(obj interface{}) (*core.PersistentVolume, bool) { + pv, ok := obj.(*core.PersistentVolume) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { return nil, false } - pv, ok = tombstone.Obj.(*v1.PersistentVolume) + pv, ok = tombstone.Obj.(*core.PersistentVolume) return pv, ok } return pv, true @@ -46,7 +46,7 @@ func (ls *LocalStorage) listenForPvEvents() { ls.deps.Client.Kubernetes().CoreV1().RESTClient(), "persistentvolumes", "", //ls.apiObject.GetNamespace(), - &v1.PersistentVolume{}, + &core.PersistentVolume{}, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { // Ignore diff --git a/pkg/storage/pv_inspector.go b/pkg/storage/pv_inspector.go index 3ecf5ceff..4ecc4d9d0 100644 --- a/pkg/storage/pv_inspector.go +++ b/pkg/storage/pv_inspector.go @@ -26,15 +26,15 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // inspectPVs queries all PersistentVolume's and triggers a cleanup for // released volumes. // Returns the number of available PV's. func (ls *LocalStorage) inspectPVs() (int, error) { - list, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().List(context.Background(), metav1.ListOptions{}) + list, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().List(context.Background(), meta.ListOptions{}) if err != nil { return 0, errors.WithStack(err) } @@ -47,7 +47,7 @@ func (ls *LocalStorage) inspectPVs() (int, error) { continue } switch pv.Status.Phase { - case v1.VolumeAvailable: + case core.VolumeAvailable: // Is this an old volume? if pv.GetObjectMeta().GetCreationTimestamp().Time.Before(cleanupBeforeTimestamp) { // Let's clean it up @@ -62,7 +62,7 @@ func (ls *LocalStorage) inspectPVs() (int, error) { } else { availableVolumes++ } - case v1.VolumeReleased: + case core.VolumeReleased: if ls.isOwnerOf(&pv) { // Cleanup this volume ls.log.Str("name", pv.GetName()).Debug("Added PersistentVolume to cleaner") diff --git a/pkg/storage/pvc_informer.go b/pkg/storage/pvc_informer.go index 69c1ca94f..0210b35b0 100644 --- a/pkg/storage/pvc_informer.go +++ b/pkg/storage/pvc_informer.go @@ -21,7 +21,7 @@ package storage import ( - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" "k8s.io/client-go/tools/cache" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -29,14 +29,14 @@ import ( // listenForPvcEvents keep listening for changes in PVC's until the given channel is closed. func (ls *LocalStorage) listenForPvcEvents() { - getPvc := func(obj interface{}) (*v1.PersistentVolumeClaim, bool) { - pvc, ok := obj.(*v1.PersistentVolumeClaim) + getPvc := func(obj interface{}) (*core.PersistentVolumeClaim, bool) { + pvc, ok := obj.(*core.PersistentVolumeClaim) if !ok { tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if !ok { return nil, false } - pvc, ok = tombstone.Obj.(*v1.PersistentVolumeClaim) + pvc, ok = tombstone.Obj.(*core.PersistentVolumeClaim) return pvc, ok } return pvc, true @@ -46,7 +46,7 @@ func (ls *LocalStorage) listenForPvcEvents() { ls.deps.Client.Kubernetes().CoreV1().RESTClient(), "persistentvolumeclaims", "", //ls.apiObject.GetNamespace(), - &v1.PersistentVolumeClaim{}, + &core.PersistentVolumeClaim{}, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { if pvc, ok := getPvc(obj); ok { diff --git a/pkg/storage/pvc_inspector.go b/pkg/storage/pvc_inspector.go index afab9c80b..8dd7a3fa3 100644 --- a/pkg/storage/pvc_inspector.go +++ b/pkg/storage/pvc_inspector.go @@ -24,21 +24,21 @@ import ( "context" "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // inspectPVCs queries all PVC's and checks if there is a need to // build new persistent volumes. // Returns the PVC's that need a volume. -func (ls *LocalStorage) inspectPVCs() ([]v1.PersistentVolumeClaim, error) { +func (ls *LocalStorage) inspectPVCs() ([]core.PersistentVolumeClaim, error) { ns := ls.apiObject.GetNamespace() - list, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumeClaims(ns).List(context.Background(), metav1.ListOptions{}) + list, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumeClaims(ns).List(context.Background(), meta.ListOptions{}) if err != nil { return nil, errors.WithStack(err) } spec := ls.apiObject.Spec - var result []v1.PersistentVolumeClaim + var result []core.PersistentVolumeClaim for _, pvc := range list.Items { if !pvcMatchesStorageClass(pvc, spec.StorageClass.Name, spec.StorageClass.IsDefault) { continue @@ -53,7 +53,7 @@ func (ls *LocalStorage) inspectPVCs() ([]v1.PersistentVolumeClaim, error) { // pvcMatchesStorageClass checks if the given pvc requests a volume // of the given storage class. -func pvcMatchesStorageClass(pvc v1.PersistentVolumeClaim, storageClassName string, isDefault bool) bool { +func pvcMatchesStorageClass(pvc core.PersistentVolumeClaim, storageClassName string, isDefault bool) bool { scn := pvc.Spec.StorageClassName if scn == nil { // No storage class specified, default is used @@ -63,6 +63,6 @@ func pvcMatchesStorageClass(pvc v1.PersistentVolumeClaim, storageClassName strin } // pvcNeedsVolume checks if the given pvc is in need of a persistent volume. -func pvcNeedsVolume(pvc v1.PersistentVolumeClaim) bool { - return pvc.Status.Phase == v1.ClaimPending +func pvcNeedsVolume(pvc core.PersistentVolumeClaim) bool { + return pvc.Status.Phase == core.ClaimPending } diff --git a/pkg/storage/server_api.go b/pkg/storage/server_api.go index e09ccdaf3..23713c7aa 100644 --- a/pkg/storage/server_api.go +++ b/pkg/storage/server_api.go @@ -26,7 +26,7 @@ import ( api "github.com/arangodb/kube-arangodb/pkg/apis/storage/v1alpha" "github.com/arangodb/kube-arangodb/pkg/server" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // Name returns the name of the local storage resource @@ -63,7 +63,7 @@ func (ls *LocalStorage) StorageClassIsDefault() bool { // Volumes returns all volumes created by the local storage resource func (ls *LocalStorage) Volumes() []server.Volume { - list, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().List(context.Background(), metav1.ListOptions{}) + list, err := ls.deps.Client.Kubernetes().CoreV1().PersistentVolumes().List(context.Background(), meta.ListOptions{}) if err != nil { ls.log.Err(err).Error("Failed to list persistent volumes") return nil diff --git a/pkg/storage/server_volume_api.go b/pkg/storage/server_volume_api.go index e8e17161c..97a5b0907 100644 --- a/pkg/storage/server_volume_api.go +++ b/pkg/storage/server_volume_api.go @@ -22,10 +22,10 @@ package storage import ( "github.com/arangodb/kube-arangodb/pkg/server" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) -type serverVolume v1.PersistentVolume +type serverVolume core.PersistentVolume // Name returns the name of the volume func (v serverVolume) Name() string { @@ -37,9 +37,9 @@ func (v serverVolume) StateColor() server.StateColor { switch v.Status.Phase { default: return server.StateYellow - case v1.VolumeBound: + case core.VolumeBound: return server.StateGreen - case v1.VolumeFailed: + case core.VolumeFailed: return server.StateRed } } @@ -51,7 +51,7 @@ func (v serverVolume) NodeName() string { // Capacity returns the capacity of the volume in human readable form func (v serverVolume) Capacity() string { - c, found := v.Spec.Capacity[v1.ResourceStorage] + c, found := v.Spec.Capacity[core.ResourceStorage] if found { return c.String() } diff --git a/pkg/storage/service.go b/pkg/storage/service.go index 77994fb25..e5f6dd88c 100644 --- a/pkg/storage/service.go +++ b/pkg/storage/service.go @@ -24,8 +24,8 @@ import ( "context" "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/storage/v1alpha" "github.com/arangodb/kube-arangodb/pkg/storage/provisioner" @@ -36,16 +36,16 @@ import ( // provisioners. func (ls *LocalStorage) ensureProvisionerService(apiObject *api.ArangoLocalStorage) error { labels := k8sutil.LabelsForLocalStorage(apiObject.GetName(), roleProvisioner) - svc := &v1.Service{ - ObjectMeta: metav1.ObjectMeta{ + svc := &core.Service{ + ObjectMeta: meta.ObjectMeta{ Name: apiObject.GetName(), Labels: labels, }, - Spec: v1.ServiceSpec{ - Ports: []v1.ServicePort{ - v1.ServicePort{ + Spec: core.ServiceSpec{ + Ports: []core.ServicePort{ + core.ServicePort{ Name: "provisioner", - Protocol: v1.ProtocolTCP, + Protocol: core.ProtocolTCP, Port: provisioner.DefaultPort, }, }, @@ -54,7 +54,7 @@ func (ls *LocalStorage) ensureProvisionerService(apiObject *api.ArangoLocalStora } svc.SetOwnerReferences(append(svc.GetOwnerReferences(), apiObject.AsOwner())) ns := ls.config.Namespace - if _, err := ls.deps.Client.Kubernetes().CoreV1().Services(ns).Create(context.Background(), svc, metav1.CreateOptions{}); err != nil && !k8sutil.IsAlreadyExists(err) { + if _, err := ls.deps.Client.Kubernetes().CoreV1().Services(ns).Create(context.Background(), svc, meta.CreateOptions{}); err != nil && !k8sutil.IsAlreadyExists(err) { return errors.WithStack(err) } return nil diff --git a/pkg/storage/storage_class.go b/pkg/storage/storage_class.go index 717c466cc..4a08d2c44 100644 --- a/pkg/storage/storage_class.go +++ b/pkg/storage/storage_class.go @@ -24,9 +24,9 @@ import ( "context" "github.com/arangodb/kube-arangodb/pkg/util/errors" - corev1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" v1 "k8s.io/api/storage/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/storage/v1alpha" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -41,9 +41,9 @@ var ( func (l *LocalStorage) ensureStorageClass(apiObject *api.ArangoLocalStorage) error { spec := apiObject.Spec.StorageClass bindingMode := v1.VolumeBindingWaitForFirstConsumer - reclaimPolicy := corev1.PersistentVolumeReclaimRetain + reclaimPolicy := core.PersistentVolumeReclaimRetain sc := &v1.StorageClass{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: spec.Name, }, ReclaimPolicy: &reclaimPolicy, @@ -53,7 +53,7 @@ func (l *LocalStorage) ensureStorageClass(apiObject *api.ArangoLocalStorage) err // Note: We do not attach the StorageClass to the apiObject (OwnerRef) because many // ArangoLocalStorage resource may use the same StorageClass. cli := l.deps.Client.Kubernetes().StorageV1() - if _, err := cli.StorageClasses().Create(context.Background(), sc, metav1.CreateOptions{}); k8sutil.IsAlreadyExists(err) { + if _, err := cli.StorageClasses().Create(context.Background(), sc, meta.CreateOptions{}); k8sutil.IsAlreadyExists(err) { l.log. Str("storageclass", sc.GetName()). Debug("StorageClass already exists") @@ -70,7 +70,7 @@ func (l *LocalStorage) ensureStorageClass(apiObject *api.ArangoLocalStorage) err if apiObject.Spec.StorageClass.IsDefault { // UnMark current default (if any) - list, err := cli.StorageClasses().List(context.Background(), metav1.ListOptions{}) + list, err := cli.StorageClasses().List(context.Background(), meta.ListOptions{}) if err != nil { l.log.Err(err).Debug("Listing StorageClasses failed") return errors.WithStack(err) diff --git a/pkg/util/crd/crd.go b/pkg/util/crd/crd.go index 848094b18..4b4c45105 100644 --- a/pkg/util/crd/crd.go +++ b/pkg/util/crd/crd.go @@ -28,7 +28,7 @@ import ( apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb/kube-arangodb/pkg/util/retry" ) @@ -44,7 +44,7 @@ func WaitReady(check func() error) error { // WaitCRDReady waits for a custom resource definition with given name to be ready. func WaitCRDReady(clientset apiextensionsclient.Interface, crdName string) error { op := func() error { - crd, err := clientset.ApiextensionsV1().CustomResourceDefinitions().Get(context.Background(), crdName, metav1.GetOptions{}) + crd, err := clientset.ApiextensionsV1().CustomResourceDefinitions().Get(context.Background(), crdName, meta.GetOptions{}) if err != nil { return errors.WithStack(err) } diff --git a/pkg/util/k8sutil/affinity.go b/pkg/util/k8sutil/affinity.go index 9fd5afadc..501963807 100644 --- a/pkg/util/k8sutil/affinity.go +++ b/pkg/util/k8sutil/affinity.go @@ -22,20 +22,20 @@ package k8sutil import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // CreateAffinity creates pod anti-affinity for the given role. // role contains the name of the role to configure any-affinity with. // affinityWithRole contains the role to configure affinity with. -func CreateAffinity(deploymentName, role string, required bool, affinityWithRole string) *v1.Affinity { - a := &v1.Affinity{ - NodeAffinity: &v1.NodeAffinity{ - RequiredDuringSchedulingIgnoredDuringExecution: &v1.NodeSelector{ - NodeSelectorTerms: []v1.NodeSelectorTerm{ +func CreateAffinity(deploymentName, role string, required bool, affinityWithRole string) *core.Affinity { + a := &core.Affinity{ + NodeAffinity: &core.NodeAffinity{ + RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{ + NodeSelectorTerms: []core.NodeSelectorTerm{ { - MatchExpressions: []v1.NodeSelectorRequirement{ + MatchExpressions: []core.NodeSelectorRequirement{ { Key: shared.NodeArchAffinityLabel, Operator: "In", @@ -46,40 +46,40 @@ func CreateAffinity(deploymentName, role string, required bool, affinityWithRole }, }, }, - PodAntiAffinity: &v1.PodAntiAffinity{}, + PodAntiAffinity: &core.PodAntiAffinity{}, } labels := LabelsForDeployment(deploymentName, role) - labelSelector := &metav1.LabelSelector{ + labelSelector := &meta.LabelSelector{ MatchLabels: labels, } if required { - a.PodAntiAffinity.RequiredDuringSchedulingIgnoredDuringExecution = append(a.PodAntiAffinity.RequiredDuringSchedulingIgnoredDuringExecution, v1.PodAffinityTerm{ + a.PodAntiAffinity.RequiredDuringSchedulingIgnoredDuringExecution = append(a.PodAntiAffinity.RequiredDuringSchedulingIgnoredDuringExecution, core.PodAffinityTerm{ LabelSelector: labelSelector, TopologyKey: shared.TopologyKeyHostname, }) } else { - a.PodAntiAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(a.PodAntiAffinity.PreferredDuringSchedulingIgnoredDuringExecution, v1.WeightedPodAffinityTerm{ + a.PodAntiAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(a.PodAntiAffinity.PreferredDuringSchedulingIgnoredDuringExecution, core.WeightedPodAffinityTerm{ Weight: 1, - PodAffinityTerm: v1.PodAffinityTerm{ + PodAffinityTerm: core.PodAffinityTerm{ LabelSelector: labelSelector, TopologyKey: shared.TopologyKeyHostname, }, }) } if affinityWithRole != "" { - a.PodAffinity = &v1.PodAffinity{} - labelSelector := &metav1.LabelSelector{ + a.PodAffinity = &core.PodAffinity{} + labelSelector := &meta.LabelSelector{ MatchLabels: LabelsForDeployment(deploymentName, affinityWithRole), } if required { - a.PodAffinity.RequiredDuringSchedulingIgnoredDuringExecution = append(a.PodAffinity.RequiredDuringSchedulingIgnoredDuringExecution, v1.PodAffinityTerm{ + a.PodAffinity.RequiredDuringSchedulingIgnoredDuringExecution = append(a.PodAffinity.RequiredDuringSchedulingIgnoredDuringExecution, core.PodAffinityTerm{ LabelSelector: labelSelector, TopologyKey: shared.TopologyKeyHostname, }) } else { - a.PodAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(a.PodAffinity.PreferredDuringSchedulingIgnoredDuringExecution, v1.WeightedPodAffinityTerm{ + a.PodAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(a.PodAffinity.PreferredDuringSchedulingIgnoredDuringExecution, core.WeightedPodAffinityTerm{ Weight: 1, - PodAffinityTerm: v1.PodAffinityTerm{ + PodAffinityTerm: core.PodAffinityTerm{ LabelSelector: labelSelector, TopologyKey: shared.TopologyKeyHostname, }, diff --git a/pkg/util/k8sutil/affinity_test.go b/pkg/util/k8sutil/affinity_test.go index 24e05358b..e92e23150 100644 --- a/pkg/util/k8sutil/affinity_test.go +++ b/pkg/util/k8sutil/affinity_test.go @@ -23,7 +23,7 @@ package k8sutil import ( "testing" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/stretchr/testify/assert" @@ -31,11 +31,11 @@ import ( ) func TestCreateAffinity(t *testing.T) { - expectedNodeAffinity := &v1.NodeAffinity{ - RequiredDuringSchedulingIgnoredDuringExecution: &v1.NodeSelector{ - NodeSelectorTerms: []v1.NodeSelectorTerm{ + expectedNodeAffinity := &core.NodeAffinity{ + RequiredDuringSchedulingIgnoredDuringExecution: &core.NodeSelector{ + NodeSelectorTerms: []core.NodeSelectorTerm{ { - MatchExpressions: []v1.NodeSelectorRequirement{ + MatchExpressions: []core.NodeSelectorRequirement{ { Key: shared.NodeArchAffinityLabel, Operator: "In", diff --git a/pkg/util/k8sutil/dns.go b/pkg/util/k8sutil/dns.go index 77dc53953..6761eefe2 100644 --- a/pkg/util/k8sutil/dns.go +++ b/pkg/util/k8sutil/dns.go @@ -26,7 +26,7 @@ import ( core "k8s.io/api/core/v1" "github.com/arangodb/kube-arangodb/pkg/apis/shared" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) func appendDeploymentClusterDomain(dns string, domain *string) string { @@ -39,13 +39,13 @@ func appendDeploymentClusterDomain(dns string, domain *string) string { // CreatePodDNSName returns the DNS of a pod with a given role & id in // a given deployment. -func CreatePodDNSName(deployment metav1.Object, role, id string) string { +func CreatePodDNSName(deployment meta.Object, role, id string) string { return fmt.Sprintf("%s.%s.%s.svc", shared.CreatePodHostName(deployment.GetName(), role, id), CreateHeadlessServiceName(deployment.GetName()), deployment.GetNamespace()) } // CreatePodDNSName returns the DNS of a pod with a given role & id in // a given deployment. -func CreatePodDNSNameWithDomain(deployment metav1.Object, domain *string, role, id string) string { +func CreatePodDNSNameWithDomain(deployment meta.Object, domain *string, role, id string) string { return appendDeploymentClusterDomain(CreatePodDNSName(deployment, role, id), domain) } @@ -60,21 +60,21 @@ func CreateServiceDNSNameWithDomain(svc *core.Service, domain *string) string { } // CreateDatabaseClientServiceDNSNameWithDomain returns the DNS of the database client service. -func CreateDatabaseClientServiceDNSNameWithDomain(deployment metav1.Object, domain *string) string { +func CreateDatabaseClientServiceDNSNameWithDomain(deployment meta.Object, domain *string) string { return appendDeploymentClusterDomain(CreateDatabaseClientServiceDNSName(deployment), domain) } // CreateDatabaseClientServiceDNSName returns the DNS of the database client service. -func CreateDatabaseClientServiceDNSName(deployment metav1.Object) string { +func CreateDatabaseClientServiceDNSName(deployment meta.Object) string { return fmt.Sprintf("%s.%s.svc", CreateDatabaseClientServiceName(deployment.GetName()), deployment.GetNamespace()) } // CreateSyncMasterClientServiceDNSNameWithDomain returns the DNS of the syncmaster client service. -func CreateSyncMasterClientServiceDNSNameWithDomain(deployment metav1.Object, domain *string) string { +func CreateSyncMasterClientServiceDNSNameWithDomain(deployment meta.Object, domain *string) string { return appendDeploymentClusterDomain(CreateSyncMasterClientServiceDNSName(deployment), domain) } // CreateSyncMasterClientServiceDNSName returns the DNS of the syncmaster client service. -func CreateSyncMasterClientServiceDNSName(deployment metav1.Object) string { +func CreateSyncMasterClientServiceDNSName(deployment meta.Object) string { return fmt.Sprintf("%s.%s.svc", CreateSyncMasterClientServiceName(deployment.GetName()), deployment.GetNamespace()) } diff --git a/pkg/util/k8sutil/dns_test.go b/pkg/util/k8sutil/dns_test.go index ccebdff43..73bc45fc9 100644 --- a/pkg/util/k8sutil/dns_test.go +++ b/pkg/util/k8sutil/dns_test.go @@ -27,12 +27,12 @@ import ( "github.com/stretchr/testify/assert" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // TestCreatePodDNSName tests CreatePodDNSName. func TestCreatePodDNSName(t *testing.T) { - depl := &metav1.ObjectMeta{ + depl := &meta.ObjectMeta{ Name: "test", Namespace: "ns", } @@ -42,7 +42,7 @@ func TestCreatePodDNSName(t *testing.T) { // TestCreateDatabaseClientServiceDNSName tests CreateDatabaseClientServiceDNSName. func TestCreateDatabaseClientServiceDNSName(t *testing.T) { - depl := &metav1.ObjectMeta{ + depl := &meta.ObjectMeta{ Name: "test", Namespace: "ns", } @@ -51,7 +51,7 @@ func TestCreateDatabaseClientServiceDNSName(t *testing.T) { } func TestCreatePodDNSNameWithDomain(t *testing.T) { - depl := &metav1.ObjectMeta{ + depl := &meta.ObjectMeta{ Name: "test", Namespace: "ns", } diff --git a/pkg/util/k8sutil/events.go b/pkg/util/k8sutil/events.go index 26c6febbb..3f0d19958 100644 --- a/pkg/util/k8sutil/events.go +++ b/pkg/util/k8sutil/events.go @@ -26,8 +26,8 @@ import ( driver "github.com/arangodb/go-driver" upgraderules "github.com/arangodb/go-upgrade-rules" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" ) @@ -42,15 +42,15 @@ type Event struct { // APIObject helps to abstract an object from our custom API. type APIObject interface { runtime.Object - metav1.Object + meta.Object // AsOwner creates an OwnerReference for the given deployment - AsOwner() metav1.OwnerReference + AsOwner() meta.OwnerReference } // NewMemberAddEvent creates an event indicating that a member was added. func NewMemberAddEvent(memberName, role string, apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = fmt.Sprintf("New %s Added", strings.Title(role)) event.Message = fmt.Sprintf("New %s %s added to deployment", role, memberName) return event @@ -59,7 +59,7 @@ func NewMemberAddEvent(memberName, role string, apiObject APIObject) *Event { // NewMemberRemoveEvent creates an event indicating that an existing member was removed. func NewMemberRemoveEvent(memberName, role string, apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = fmt.Sprintf("%s Removed", strings.Title(role)) event.Message = fmt.Sprintf("Existing %s %s removed from the deployment", role, memberName) return event @@ -68,7 +68,7 @@ func NewMemberRemoveEvent(memberName, role string, apiObject APIObject) *Event { // NewPodCreatedEvent creates an event indicating that a pod has been created func NewPodCreatedEvent(podName, role string, apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = fmt.Sprintf("Pod Of %s Created", strings.Title(role)) event.Message = fmt.Sprintf("Pod %s of member %s is created", podName, role) return event @@ -77,7 +77,7 @@ func NewPodCreatedEvent(podName, role string, apiObject APIObject) *Event { // NewPodGoneEvent creates an event indicating that a pod is missing func NewPodGoneEvent(podName, role string, apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = fmt.Sprintf("Pod Of %s Gone", strings.Title(role)) event.Message = fmt.Sprintf("Pod %s of member %s is gone", podName, role) return event @@ -87,7 +87,7 @@ func NewPodGoneEvent(podName, role string, apiObject APIObject) *Event { // that is immutable. func NewImmutableFieldEvent(fieldName string, apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Immutable Field Change" event.Message = fmt.Sprintf("Changing field %s is not possible. It has been reset to its original value.", fieldName) return event @@ -96,7 +96,7 @@ func NewImmutableFieldEvent(fieldName string, apiObject APIObject) *Event { // NewPodsSchedulingFailureEvent creates an event indicating that one of more cannot be scheduled. func NewPodsSchedulingFailureEvent(unscheduledPodNames []string, apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Pods Scheduling Failure" event.Message = fmt.Sprintf("One or more pods are not scheduled in time. Pods: %v", unscheduledPodNames) return event @@ -106,7 +106,7 @@ func NewPodsSchedulingFailureEvent(unscheduledPodNames []string, apiObject APIOb // pod scheduling has been resolved. func NewPodsSchedulingResolvedEvent(apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Pods Scheduling Resolved" event.Message = "All pods have been scheduled" return event @@ -115,7 +115,7 @@ func NewPodsSchedulingResolvedEvent(apiObject APIObject) *Event { // NewSecretsChangedEvent creates an event indicating that one of more secrets have changed. func NewSecretsChangedEvent(changedSecretNames []string, apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Secrets changed" event.Message = fmt.Sprintf("Found %d changed secrets. You must revert them before the operator can continue. Secrets: %v", len(changedSecretNames), changedSecretNames) return event @@ -125,7 +125,7 @@ func NewSecretsChangedEvent(changedSecretNames []string, apiObject APIObject) *E // to their original values. func NewSecretsRestoredEvent(apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Secrets restored" event.Message = "All secrets have been restored to their original value" return event @@ -135,7 +135,7 @@ func NewSecretsRestoredEvent(apiObject APIObject) *Event { // has been created. func NewAccessPackageCreatedEvent(apiObject APIObject, apSecretName string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Access package created" event.Message = fmt.Sprintf("An access package named %s has been created", apSecretName) return event @@ -145,7 +145,7 @@ func NewAccessPackageCreatedEvent(apiObject APIObject, apSecretName string) *Eve // has been deleted. func NewAccessPackageDeletedEvent(apiObject APIObject, apSecretName string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Access package deleted" event.Message = fmt.Sprintf("An access package named %s has been deleted", apSecretName) return event @@ -154,7 +154,7 @@ func NewAccessPackageDeletedEvent(apiObject APIObject, apSecretName string) *Eve // NewPlanAppendEvent creates an event indicating that an item on a reconciliation plan has been added func NewPlanAppendEvent(apiObject APIObject, itemType, memberID, role, reason string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Plan Action added" msg := fmt.Sprintf("A plan item of type %s", itemType) if role != "" { @@ -172,7 +172,7 @@ func NewPlanAppendEvent(apiObject APIObject, itemType, memberID, role, reason st // finish before its deadline. func NewPlanTimeoutEvent(apiObject APIObject, itemType, memberID, role string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Reconciliation Plan Timeout" event.Message = fmt.Sprintf("A plan item of type %s or member %s with role %s did not finish in time", itemType, memberID, role) return event @@ -182,7 +182,7 @@ func NewPlanTimeoutEvent(apiObject APIObject, itemType, memberID, role string) * // the entire plan. func NewPlanAbortedEvent(apiObject APIObject, itemType, memberID, role string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Reconciliation Plan Aborted" event.Message = fmt.Sprintf("A plan item of type %s or member %s with role %s wants to abort the plan", itemType, memberID, role) return event @@ -192,7 +192,7 @@ func NewPlanAbortedEvent(apiObject APIObject, itemType, memberID, role string) * // but this is not possible for the given reason. func NewCannotChangeStorageClassEvent(apiObject APIObject, memberID, role, subReason string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = fmt.Sprintf("%s Member StorageClass Cannot Change", strings.Title(role)) event.Message = fmt.Sprintf("Member %s with role %s should use a different StorageClass, but is cannot because: %s", memberID, role, subReason) return event @@ -202,7 +202,7 @@ func NewCannotChangeStorageClassEvent(apiObject APIObject, memberID, role, subRe // is currently not allowed. func NewDowntimeNotAllowedEvent(apiObject APIObject, operation string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "Downtime Operation Postponed" event.Message = fmt.Sprintf("The '%s' operation is postponed because downtime it not allowed. Set `spec.downtimeAllowed` to true to execute this operation", operation) return event @@ -211,7 +211,7 @@ func NewDowntimeNotAllowedEvent(apiObject APIObject, operation string) *Event { // NewPVCResizedEvent creates an event indicating that a PVC has been resized func NewPVCResizedEvent(apiObject APIObject, pvcname string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "PVC Resized" event.Message = fmt.Sprintf("The persistent volume claim %s has been resized", pvcname) return event @@ -220,7 +220,7 @@ func NewPVCResizedEvent(apiObject APIObject, pvcname string) *Event { // NewCannotShrinkVolumeEvent creates an event indicating that the user tried to shrink a PVC func NewCannotShrinkVolumeEvent(apiObject APIObject, pvcname string) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal event.Reason = "PVC Shrinked" event.Message = fmt.Sprintf("The persistent volume claim %s can not be shrinked", pvcname) return event @@ -231,7 +231,7 @@ func NewUpgradeNotAllowedEvent(apiObject APIObject, fromVersion, toVersion driver.Version, fromLicense, toLicense upgraderules.License) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeNormal + event.Type = core.EventTypeNormal formatLicense := func(l upgraderules.License) string { if l == upgraderules.LicenseCommunity { return "Community Edition" @@ -259,7 +259,7 @@ func NewUpgradeNotAllowedEvent(apiObject APIObject, // NewErrorEvent creates an even of type error. func NewErrorEvent(reason string, err error, apiObject APIObject) *Event { event := newDeploymentEvent(apiObject) - event.Type = v1.EventTypeWarning + event.Type = core.EventTypeWarning event.Reason = strings.Title(reason) event.Message = err.Error() return event diff --git a/pkg/util/k8sutil/finalizers.go b/pkg/util/k8sutil/finalizers.go index a93d85e20..d95927c10 100644 --- a/pkg/util/k8sutil/finalizers.go +++ b/pkg/util/k8sutil/finalizers.go @@ -32,7 +32,7 @@ import ( persistentvolumeclaimv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/persistentvolumeclaim/v1" podv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/pod/v1" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) const ( @@ -42,22 +42,22 @@ const ( // RemovePodFinalizers removes the given finalizers from the given pod. func RemovePodFinalizers(ctx context.Context, cachedStatus pod.Inspector, c podv1.ModInterface, p *core.Pod, finalizers []string, ignoreNotFound bool) (int, error) { - getFunc := func() (metav1.Object, error) { + getFunc := func() (meta.Object, error) { ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - result, err := cachedStatus.Pod().V1().Read().Get(ctxChild, p.GetName(), metav1.GetOptions{}) + result, err := cachedStatus.Pod().V1().Read().Get(ctxChild, p.GetName(), meta.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } return result, nil } - updateFunc := func(updated metav1.Object) error { + updateFunc := func(updated meta.Object) error { updatedPod := updated.(*core.Pod) ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - result, err := c.Update(ctxChild, updatedPod, metav1.UpdateOptions{}) + result, err := c.Update(ctxChild, updatedPod, meta.UpdateOptions{}) if err != nil { return errors.WithStack(err) } @@ -74,22 +74,22 @@ func RemovePodFinalizers(ctx context.Context, cachedStatus pod.Inspector, c podv // RemovePVCFinalizers removes the given finalizers from the given PVC. func RemovePVCFinalizers(ctx context.Context, cachedStatus persistentvolumeclaim.Inspector, c persistentvolumeclaimv1.ModInterface, p *core.PersistentVolumeClaim, finalizers []string, ignoreNotFound bool) (int, error) { - getFunc := func() (metav1.Object, error) { + getFunc := func() (meta.Object, error) { ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - result, err := cachedStatus.PersistentVolumeClaim().V1().Read().Get(ctxChild, p.GetName(), metav1.GetOptions{}) + result, err := cachedStatus.PersistentVolumeClaim().V1().Read().Get(ctxChild, p.GetName(), meta.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } return result, nil } - updateFunc := func(updated metav1.Object) error { + updateFunc := func(updated meta.Object) error { updatedPVC := updated.(*core.PersistentVolumeClaim) ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx) defer cancel() - result, err := c.Update(ctxChild, updatedPVC, metav1.UpdateOptions{}) + result, err := c.Update(ctxChild, updatedPVC, meta.UpdateOptions{}) if err != nil { return errors.WithStack(err) } @@ -107,7 +107,7 @@ func RemovePVCFinalizers(ctx context.Context, cachedStatus persistentvolumeclaim // The functions tries to get the object using the provided get function, // then remove the given finalizers and update the update using the given update function. // In case of an update conflict, the functions tries again. -func RemoveFinalizers(finalizers []string, getFunc func() (metav1.Object, error), updateFunc func(metav1.Object) error, ignoreNotFound bool) (int, error) { +func RemoveFinalizers(finalizers []string, getFunc func() (meta.Object, error), updateFunc func(meta.Object) error, ignoreNotFound bool) (int, error) { attempts := 0 for { attempts++ diff --git a/pkg/util/k8sutil/images.go b/pkg/util/k8sutil/images.go index 39c668b48..75e40f9c4 100644 --- a/pkg/util/k8sutil/images.go +++ b/pkg/util/k8sutil/images.go @@ -23,7 +23,7 @@ package k8sutil import ( "strings" - corev1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" "github.com/arangodb/kube-arangodb/pkg/util/errors" ) @@ -42,7 +42,7 @@ func ConvertImageID2Image(imageID string) string { } // GetArangoDBImageIDFromPod returns the ArangoDB specific image from a pod -func GetArangoDBImageIDFromPod(pod *corev1.Pod) (string, error) { +func GetArangoDBImageIDFromPod(pod *core.Pod) (string, error) { if pod == nil { return "", errors.New("failed to get container statuses from nil pod") } diff --git a/pkg/util/k8sutil/images_test.go b/pkg/util/k8sutil/images_test.go index 56662e13a..45d2e59f5 100644 --- a/pkg/util/k8sutil/images_test.go +++ b/pkg/util/k8sutil/images_test.go @@ -26,12 +26,12 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - corev1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) func TestGetArangoDBImageIDFromPod(t *testing.T) { type args struct { - pod *corev1.Pod + pod *core.Pod } tests := map[string]struct { args args @@ -43,15 +43,15 @@ func TestGetArangoDBImageIDFromPod(t *testing.T) { }, "container statuses list is empty": { args: args{ - pod: &corev1.Pod{}, + pod: &core.Pod{}, }, wantErr: errors.New("empty list of ContainerStatuses"), }, "image ID from the only container": { args: args{ - pod: &corev1.Pod{ - Status: corev1.PodStatus{ - ContainerStatuses: []corev1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { ImageID: dockerPullableImageIDPrefix + "test", }, @@ -63,9 +63,9 @@ func TestGetArangoDBImageIDFromPod(t *testing.T) { }, "image ID from two containers": { args: args{ - pod: &corev1.Pod{ - Status: corev1.PodStatus{ - ContainerStatuses: []corev1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { ImageID: dockerPullableImageIDPrefix + "test_arango", }, diff --git a/pkg/util/k8sutil/owner.go b/pkg/util/k8sutil/owner.go index 5309060b2..fc1935e2c 100644 --- a/pkg/util/k8sutil/owner.go +++ b/pkg/util/k8sutil/owner.go @@ -25,19 +25,19 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" ) // GetPodOwner returns the ReplicaSet that owns the given Pod. // If the Pod has no owner of the owner is not a ReplicaSet, nil is returned. -func GetPodOwner(kubecli kubernetes.Interface, pod *v1.Pod, ns string) (*appsv1.ReplicaSet, error) { +func GetPodOwner(kubecli kubernetes.Interface, pod *core.Pod, ns string) (*appsv1.ReplicaSet, error) { for _, ref := range pod.GetOwnerReferences() { if ref.Kind == "ReplicaSet" { rSets := kubecli.AppsV1().ReplicaSets(pod.GetNamespace()) - rSet, err := rSets.Get(context.Background(), ref.Name, metav1.GetOptions{}) + rSet, err := rSets.Get(context.Background(), ref.Name, meta.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } @@ -53,7 +53,7 @@ func GetReplicaSetOwner(kubecli kubernetes.Interface, rSet *appsv1.ReplicaSet, n for _, ref := range rSet.GetOwnerReferences() { if ref.Kind == "Deployment" { depls := kubecli.AppsV1().Deployments(rSet.GetNamespace()) - depl, err := depls.Get(context.Background(), ref.Name, metav1.GetOptions{}) + depl, err := depls.Get(context.Background(), ref.Name, meta.GetOptions{}) if err != nil { return nil, errors.WithStack(err) } diff --git a/pkg/util/k8sutil/pods.go b/pkg/util/k8sutil/pods.go index f8a6fa42d..f411a4b8f 100644 --- a/pkg/util/k8sutil/pods.go +++ b/pkg/util/k8sutil/pods.go @@ -30,7 +30,7 @@ import ( core "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/json" @@ -518,7 +518,7 @@ func NewPod(deploymentName, role, id, podName string, podCreator interfaces.PodC hostname := shared.CreatePodHostName(deploymentName, role, id) p := core.Pod{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: podName, Labels: LabelsForMember(deploymentName, role, id), Finalizers: podCreator.GetFinalizers(), @@ -562,10 +562,10 @@ func GetPodSpecChecksum(podSpec core.PodSpec) (string, error) { // If the pod already exists, nil is returned. // If another error occurs, that error is returned. func CreatePod(ctx context.Context, c podv1.ModInterface, pod *core.Pod, ns string, - owner metav1.OwnerReference) (string, types.UID, error) { + owner meta.OwnerReference) (string, types.UID, error) { AddOwnerRefToObject(pod.GetObjectMeta(), &owner) - if createdPod, err := c.Create(ctx, pod, metav1.CreateOptions{}); err != nil { + if createdPod, err := c.Create(ctx, pod, meta.CreateOptions{}); err != nil { if IsAlreadyExists(err) { return pod.GetName(), "", nil // If pod exists do not return any error but do not record UID (enforced rotation) } diff --git a/pkg/util/k8sutil/pods_test.go b/pkg/util/k8sutil/pods_test.go index 18ba296a6..293295d5b 100644 --- a/pkg/util/k8sutil/pods_test.go +++ b/pkg/util/k8sutil/pods_test.go @@ -24,7 +24,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" "github.com/arangodb/kube-arangodb/pkg/handlers/utils" "github.com/stretchr/testify/require" @@ -32,23 +32,23 @@ import ( // TestIsPodReady tests IsPodReady. func TestIsPodReady(t *testing.T) { - assert.False(t, IsPodReady(&v1.Pod{})) - assert.False(t, IsPodReady(&v1.Pod{ - Status: v1.PodStatus{ - Conditions: []v1.PodCondition{ - v1.PodCondition{ - Type: v1.PodReady, - Status: v1.ConditionFalse, + assert.False(t, IsPodReady(&core.Pod{})) + assert.False(t, IsPodReady(&core.Pod{ + Status: core.PodStatus{ + Conditions: []core.PodCondition{ + core.PodCondition{ + Type: core.PodReady, + Status: core.ConditionFalse, }, }, }, })) - assert.True(t, IsPodReady(&v1.Pod{ - Status: v1.PodStatus{ - Conditions: []v1.PodCondition{ - v1.PodCondition{ - Type: v1.PodReady, - Status: v1.ConditionTrue, + assert.True(t, IsPodReady(&core.Pod{ + Status: core.PodStatus{ + Conditions: []core.PodCondition{ + core.PodCondition{ + Type: core.PodReady, + Status: core.ConditionTrue, }, }, }, @@ -58,7 +58,7 @@ func TestIsPodReady(t *testing.T) { // TestIsPodFailed tests IsPodFailed. func TestIsPodFailed(t *testing.T) { type args struct { - pod *v1.Pod + pod *core.Pod coreContainers utils.StringList } tests := map[string]struct { @@ -67,23 +67,23 @@ func TestIsPodFailed(t *testing.T) { }{ "empty pod": { args: args{ - pod: &v1.Pod{}, + pod: &core.Pod{}, }, }, "pod is running": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - Phase: v1.PodRunning, + pod: &core.Pod{ + Status: core.PodStatus{ + Phase: core.PodRunning, }, }, }, }, "pod is failed": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - Phase: v1.PodFailed, + pod: &core.Pod{ + Status: core.PodStatus{ + Phase: core.PodFailed, }, }, }, @@ -91,13 +91,13 @@ func TestIsPodFailed(t *testing.T) { }, "one core container failed": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { Name: "core_container", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 1, }, }, @@ -111,13 +111,13 @@ func TestIsPodFailed(t *testing.T) { }, "one non-core container failed": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { Name: "non_core_container", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 1, }, }, @@ -130,13 +130,13 @@ func TestIsPodFailed(t *testing.T) { }, "one core container succeeded": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { Name: "core_container", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 0, }, }, @@ -149,19 +149,19 @@ func TestIsPodFailed(t *testing.T) { }, "first core container succeeded and second is still running": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { Name: "core_container1", - State: v1.ContainerState{ - Running: &v1.ContainerStateRunning{}, + State: core.ContainerState{ + Running: &core.ContainerStateRunning{}, }, }, { Name: "core_container2", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 0, }, }, @@ -175,21 +175,21 @@ func TestIsPodFailed(t *testing.T) { }, "all containers succeeded": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { Name: "core_container1", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 0, }, }, }, { Name: "core_container2", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 0, }, }, @@ -212,7 +212,7 @@ func TestIsPodFailed(t *testing.T) { func TestIsPodSucceeded(t *testing.T) { type args struct { - pod *v1.Pod + pod *core.Pod coreContainers utils.StringList } tests := map[string]struct { @@ -221,14 +221,14 @@ func TestIsPodSucceeded(t *testing.T) { }{ "empty pod": { args: args{ - pod: &v1.Pod{}, + pod: &core.Pod{}, }, }, "pod is succeeded": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - Phase: v1.PodSucceeded, + pod: &core.Pod{ + Status: core.PodStatus{ + Phase: core.PodSucceeded, }, }, }, @@ -236,21 +236,21 @@ func TestIsPodSucceeded(t *testing.T) { }, "all core containers succeeded": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { Name: "core_container1", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 0, }, }, }, { Name: "core_container2", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 0, }, }, @@ -267,16 +267,16 @@ func TestIsPodSucceeded(t *testing.T) { }, "non-core container succeeded": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { Name: "core_container1", }, { Name: "non-core_container", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 0, }, }, @@ -289,13 +289,13 @@ func TestIsPodSucceeded(t *testing.T) { }, "the only one core container succeeded": { args: args{ - pod: &v1.Pod{ - Status: v1.PodStatus{ - ContainerStatuses: []v1.ContainerStatus{ + pod: &core.Pod{ + Status: core.PodStatus{ + ContainerStatuses: []core.ContainerStatus{ { Name: "core_container1", - State: v1.ContainerState{ - Terminated: &v1.ContainerStateTerminated{ + State: core.ContainerState{ + Terminated: &core.ContainerStateTerminated{ ExitCode: 0, }, }, diff --git a/pkg/util/k8sutil/probes/probes_test.go b/pkg/util/k8sutil/probes/probes_test.go index ed2023f76..0b83e0689 100644 --- a/pkg/util/k8sutil/probes/probes_test.go +++ b/pkg/util/k8sutil/probes/probes_test.go @@ -24,7 +24,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) func TestCreate(t *testing.T) { @@ -45,13 +45,13 @@ func TestCreate(t *testing.T) { assert.Equal(t, probe.Handler.HTTPGet.HTTPHeaders[0].Name, "Authorization") assert.Equal(t, probe.Handler.HTTPGet.HTTPHeaders[0].Value, secret) assert.Equal(t, probe.Handler.HTTPGet.Port.IntValue(), 8529) - assert.Equal(t, probe.Handler.HTTPGet.Scheme, v1.URISchemeHTTP) + assert.Equal(t, probe.Handler.HTTPGet.Scheme, core.URISchemeHTTP) // https config = HTTPProbeConfig{path, true, secret, 0, 0, 0, 0, 0, 0} probe = config.Create() - assert.Equal(t, probe.Handler.HTTPGet.Scheme, v1.URISchemeHTTPS) + assert.Equal(t, probe.Handler.HTTPGet.Scheme, core.URISchemeHTTPS) // http, custom timing config = HTTPProbeConfig{path, false, secret, 0, 1, 2, 3, 4, 5} diff --git a/pkg/util/k8sutil/pvc.go b/pkg/util/k8sutil/pvc.go index cd9f7f6e5..f47fc4e72 100644 --- a/pkg/util/k8sutil/pvc.go +++ b/pkg/util/k8sutil/pvc.go @@ -26,22 +26,22 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb/kube-arangodb/pkg/util/constants" persistentvolumeclaimv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/persistentvolumeclaim/v1" ) // IsPersistentVolumeClaimMarkedForDeletion returns true if the pvc has been marked for deletion. -func IsPersistentVolumeClaimMarkedForDeletion(pvc *v1.PersistentVolumeClaim) bool { +func IsPersistentVolumeClaimMarkedForDeletion(pvc *core.PersistentVolumeClaim) bool { return pvc.DeletionTimestamp != nil } // IsPersistentVolumeClaimFileSystemResizePending returns true if the pvc has FileSystemResizePending set to true -func IsPersistentVolumeClaimFileSystemResizePending(pvc *v1.PersistentVolumeClaim) bool { +func IsPersistentVolumeClaimFileSystemResizePending(pvc *core.PersistentVolumeClaim) bool { for _, c := range pvc.Status.Conditions { - if c.Type == v1.PersistentVolumeClaimFileSystemResizePending && c.Status == v1.ConditionTrue { + if c.Type == core.PersistentVolumeClaimFileSystemResizePending && c.Status == core.ConditionTrue { return true } } @@ -49,12 +49,12 @@ func IsPersistentVolumeClaimFileSystemResizePending(pvc *v1.PersistentVolumeClai } // ExtractStorageResourceRequirement filters resource requirements for Pods. -func ExtractStorageResourceRequirement(resources v1.ResourceRequirements) v1.ResourceRequirements { +func ExtractStorageResourceRequirement(resources core.ResourceRequirements) core.ResourceRequirements { - filterStorage := func(list v1.ResourceList) v1.ResourceList { - newlist := make(v1.ResourceList) + filterStorage := func(list core.ResourceList) core.ResourceList { + newlist := make(core.ResourceList) for k, v := range list { - if k != v1.ResourceStorage && k != "iops" { + if k != core.ResourceStorage && k != "iops" { continue } newlist[k] = v @@ -62,7 +62,7 @@ func ExtractStorageResourceRequirement(resources v1.ResourceRequirements) v1.Res return newlist } - return v1.ResourceRequirements{ + return core.ResourceRequirements{ Limits: filterStorage(resources.Limits), Requests: filterStorage(resources.Requests), } @@ -72,12 +72,12 @@ func ExtractStorageResourceRequirement(resources v1.ResourceRequirements) v1.Res // If the pvc already exists, nil is returned. // If another error occurs, that error is returned. func CreatePersistentVolumeClaim(ctx context.Context, pvcs persistentvolumeclaimv1.ModInterface, pvcName, deploymentName, - storageClassName, role string, enforceAntiAffinity bool, resources v1.ResourceRequirements, - vct *v1.PersistentVolumeClaim, finalizers []string, owner metav1.OwnerReference) error { + storageClassName, role string, enforceAntiAffinity bool, resources core.ResourceRequirements, + vct *core.PersistentVolumeClaim, finalizers []string, owner meta.OwnerReference) error { labels := LabelsForDeployment(deploymentName, role) - volumeMode := v1.PersistentVolumeFilesystem - pvc := &v1.PersistentVolumeClaim{ - ObjectMeta: metav1.ObjectMeta{ + volumeMode := core.PersistentVolumeFilesystem + pvc := &core.PersistentVolumeClaim{ + ObjectMeta: meta.ObjectMeta{ Name: pvcName, Labels: labels, Finalizers: finalizers, @@ -87,9 +87,9 @@ func CreatePersistentVolumeClaim(ctx context.Context, pvcs persistentvolumeclaim }, } if vct == nil { - pvc.Spec = v1.PersistentVolumeClaimSpec{ - AccessModes: []v1.PersistentVolumeAccessMode{ - v1.ReadWriteOnce, + pvc.Spec = core.PersistentVolumeClaimSpec{ + AccessModes: []core.PersistentVolumeAccessMode{ + core.ReadWriteOnce, }, VolumeMode: &volumeMode, Resources: ExtractStorageResourceRequirement(resources), @@ -102,7 +102,7 @@ func CreatePersistentVolumeClaim(ctx context.Context, pvcs persistentvolumeclaim pvc.Spec.StorageClassName = &storageClassName } AddOwnerRefToObject(pvc.GetObjectMeta(), &owner) - if _, err := pvcs.Create(ctx, pvc, metav1.CreateOptions{}); err != nil && !IsAlreadyExists(err) { + if _, err := pvcs.Create(ctx, pvc, meta.CreateOptions{}); err != nil && !IsAlreadyExists(err) { return errors.WithStack(err) } return nil diff --git a/pkg/util/k8sutil/services.go b/pkg/util/k8sutil/services.go index 81bece083..8ebb7fd90 100644 --- a/pkg/util/k8sutil/services.go +++ b/pkg/util/k8sutil/services.go @@ -28,7 +28,7 @@ import ( "strings" core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/errors" @@ -73,7 +73,7 @@ func CreateAgentLeaderServiceName(deploymentName string) string { // CreateExporterService func CreateExporterService(ctx context.Context, cachedStatus service.Inspector, svcs servicev1.ModInterface, - deployment metav1.Object, owner metav1.OwnerReference) (string, bool, error) { + deployment meta.Object, owner meta.OwnerReference) (string, bool, error) { deploymentName := deployment.GetName() svcName := CreateExporterClientServiceName(deploymentName) @@ -84,7 +84,7 @@ func CreateExporterService(ctx context.Context, cachedStatus service.Inspector, } svc := &core.Service{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: svcName, Labels: LabelsForExporterService(deploymentName), }, @@ -101,7 +101,7 @@ func CreateExporterService(ctx context.Context, cachedStatus service.Inspector, }, } AddOwnerRefToObject(svc.GetObjectMeta(), &owner) - if _, err := svcs.Create(ctx, svc, metav1.CreateOptions{}); IsAlreadyExists(err) { + if _, err := svcs.Create(ctx, svc, meta.CreateOptions{}); IsAlreadyExists(err) { return svcName, false, nil } else if err != nil { return svcName, false, errors.WithStack(err) @@ -114,8 +114,8 @@ func CreateExporterService(ctx context.Context, cachedStatus service.Inspector, // If the service already exists, nil is returned. // If another error occurs, that error is returned. // The returned bool is true if the service is created, or false when the service already existed. -func CreateHeadlessService(ctx context.Context, svcs servicev1.ModInterface, deployment metav1.Object, - owner metav1.OwnerReference) (string, bool, error) { +func CreateHeadlessService(ctx context.Context, svcs servicev1.ModInterface, deployment meta.Object, + owner meta.OwnerReference) (string, bool, error) { deploymentName := deployment.GetName() svcName := CreateHeadlessServiceName(deploymentName) ports := []core.ServicePort{ @@ -139,8 +139,8 @@ func CreateHeadlessService(ctx context.Context, svcs servicev1.ModInterface, dep // If the service already exists, nil is returned. // If another error occurs, that error is returned. // The returned bool is true if the service is created, or false when the service already existed. -func CreateDatabaseClientService(ctx context.Context, svcs servicev1.ModInterface, deployment metav1.Object, - single, withLeader bool, owner metav1.OwnerReference) (string, bool, error) { +func CreateDatabaseClientService(ctx context.Context, svcs servicev1.ModInterface, deployment meta.Object, + single, withLeader bool, owner meta.OwnerReference) (string, bool, error) { deploymentName := deployment.GetName() svcName := CreateDatabaseClientServiceName(deploymentName) ports := []core.ServicePort{ @@ -171,8 +171,8 @@ func CreateDatabaseClientService(ctx context.Context, svcs servicev1.ModInterfac // If another error occurs, that error is returned. // The returned bool is true if the service is created, or false when the service already existed. func CreateExternalAccessService(ctx context.Context, svcs servicev1.ModInterface, svcName, role string, - deployment metav1.Object, serviceType core.ServiceType, port, nodePort int, loadBalancerIP string, - loadBalancerSourceRanges []string, owner metav1.OwnerReference, withLeader bool) (string, bool, error) { + deployment meta.Object, serviceType core.ServiceType, port, nodePort int, loadBalancerIP string, + loadBalancerSourceRanges []string, owner meta.OwnerReference, withLeader bool) (string, bool, error) { deploymentName := deployment.GetName() ports := []core.ServicePort{ { @@ -197,14 +197,14 @@ func CreateExternalAccessService(ctx context.Context, svcs servicev1.ModInterfac // The returned bool is true if the service is created, or false when the service already existed. func createService(ctx context.Context, svcs servicev1.ModInterface, svcName, deploymentName, clusterIP, role string, serviceType core.ServiceType, ports []core.ServicePort, loadBalancerIP string, loadBalancerSourceRanges []string, - publishNotReadyAddresses, withLeader bool, owner metav1.OwnerReference) (bool, error) { + publishNotReadyAddresses, withLeader bool, owner meta.OwnerReference) (bool, error) { labels := LabelsForDeployment(deploymentName, role) if withLeader { labels[LabelKeyArangoLeader] = "true" } svc := &core.Service{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: svcName, Labels: labels, Annotations: map[string]string{}, @@ -220,7 +220,7 @@ func createService(ctx context.Context, svcs servicev1.ModInterface, svcName, de }, } AddOwnerRefToObject(svc.GetObjectMeta(), &owner) - if _, err := svcs.Create(ctx, svc, metav1.CreateOptions{}); IsAlreadyExists(err) { + if _, err := svcs.Create(ctx, svc, meta.CreateOptions{}); IsAlreadyExists(err) { return false, nil } else if err != nil { return false, errors.WithStack(err) diff --git a/pkg/util/k8sutil/storageclass.go b/pkg/util/k8sutil/storageclass.go index 4c7001e92..7841b233f 100644 --- a/pkg/util/k8sutil/storageclass.go +++ b/pkg/util/k8sutil/storageclass.go @@ -29,7 +29,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/retry" v1 "k8s.io/api/storage/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" storagev1 "k8s.io/client-go/kubernetes/typed/storage/v1" ) @@ -53,7 +53,7 @@ func PatchStorageClassIsDefault(cli storagev1.StorageV1Interface, name string, i stcs := cli.StorageClasses() op := func() error { // Fetch current version of StorageClass - current, err := stcs.Get(context.Background(), name, metav1.GetOptions{}) + current, err := stcs.Get(context.Background(), name, meta.GetOptions{}) if IsNotFound(err) { return retry.Permanent(errors.WithStack(err)) } else if err != nil { @@ -68,7 +68,7 @@ func PatchStorageClassIsDefault(cli storagev1.StorageV1Interface, name string, i current.SetAnnotations(ann) // Save StorageClass - if _, err := stcs.Update(context.Background(), current, metav1.UpdateOptions{}); IsConflict(err) { + if _, err := stcs.Update(context.Background(), current, meta.UpdateOptions{}); IsConflict(err) { // StorageClass has been modified since we read it return errors.WithStack(err) } else if err != nil { diff --git a/pkg/util/k8sutil/storageclass_test.go b/pkg/util/k8sutil/storageclass_test.go index 83cb22792..b0f8c6bb2 100644 --- a/pkg/util/k8sutil/storageclass_test.go +++ b/pkg/util/k8sutil/storageclass_test.go @@ -33,7 +33,7 @@ import ( "github.com/stretchr/testify/assert" v1 "k8s.io/api/storage/v1" er "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" k8stesting "k8s.io/client-go/testing" ) @@ -47,14 +47,14 @@ func TestStorageClassIsDefault(t *testing.T) { { Name: "Storage class without annotations", StorageClass: v1.StorageClass{ - ObjectMeta: metav1.ObjectMeta{}, + ObjectMeta: meta.ObjectMeta{}, }, IsDefault: false, }, { Name: "Storage class with empty annotations", StorageClass: v1.StorageClass{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Annotations: map[string]string{}, }, }, @@ -63,7 +63,7 @@ func TestStorageClassIsDefault(t *testing.T) { { Name: "Storage class without default", StorageClass: v1.StorageClass{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Annotations: map[string]string{ annStorageClassIsDefault: "false", }, @@ -74,7 +74,7 @@ func TestStorageClassIsDefault(t *testing.T) { { Name: "Storage class with invalid value in annotation", StorageClass: v1.StorageClass{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Annotations: map[string]string{ annStorageClassIsDefault: "foo", }, @@ -85,7 +85,7 @@ func TestStorageClassIsDefault(t *testing.T) { { Name: "Default storage class exits", StorageClass: v1.StorageClass{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Annotations: map[string]string{ annStorageClassIsDefault: "true", }, @@ -162,11 +162,11 @@ func TestPatchStorageClassIsDefault(t *testing.T) { clientSet := fake.NewSimpleClientset() storageSet := clientSet.StorageV1() _, err = storageSet.StorageClasses().Create(context.Background(), &v1.StorageClass{ - TypeMeta: metav1.TypeMeta{}, - ObjectMeta: metav1.ObjectMeta{ + TypeMeta: meta.TypeMeta{}, + ObjectMeta: meta.ObjectMeta{ Name: "test", }, - }, metav1.CreateOptions{}) + }, meta.CreateOptions{}) require.NoError(t, err) if testCase.Reactor != nil { diff --git a/pkg/util/k8sutil/test/events_test.go b/pkg/util/k8sutil/test/events_test.go index 2a8e0994c..2421b1a2a 100644 --- a/pkg/util/k8sutil/test/events_test.go +++ b/pkg/util/k8sutil/test/events_test.go @@ -27,15 +27,15 @@ import ( "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) var apiObjectForTest = api.ArangoDeployment{ - ObjectMeta: metav1.ObjectMeta{ + ObjectMeta: meta.ObjectMeta{ Name: "Willy", Namespace: "Wonka", }, @@ -48,32 +48,32 @@ func TestMemberAddEvent(t *testing.T) { event := k8sutil.NewMemberAddEvent("name", "role", &apiObjectForTest) assert.Equal(t, event.Reason, "New Role Added") assert.Equal(t, event.Message, "New role name added to deployment") - assert.Equal(t, event.Type, v1.EventTypeNormal) + assert.Equal(t, event.Type, core.EventTypeNormal) } func TestMemberRemoveEvent(t *testing.T) { event := k8sutil.NewMemberRemoveEvent("name", "role", &apiObjectForTest) assert.Equal(t, event.Reason, "Role Removed") assert.Equal(t, event.Message, "Existing role name removed from the deployment") - assert.Equal(t, event.Type, v1.EventTypeNormal) + assert.Equal(t, event.Type, core.EventTypeNormal) } func TestPodGoneEvent(t *testing.T) { event := k8sutil.NewPodGoneEvent("name", "role", &apiObjectForTest) assert.Equal(t, event.Reason, "Pod Of Role Gone") assert.Equal(t, event.Message, "Pod name of member role is gone") - assert.Equal(t, event.Type, v1.EventTypeNormal) + assert.Equal(t, event.Type, core.EventTypeNormal) } func TestImmutableFieldEvent(t *testing.T) { event := k8sutil.NewImmutableFieldEvent("name", &apiObjectForTest) assert.Equal(t, event.Reason, "Immutable Field Change") assert.Equal(t, event.Message, "Changing field name is not possible. It has been reset to its original value.") - assert.Equal(t, event.Type, v1.EventTypeNormal) + assert.Equal(t, event.Type, core.EventTypeNormal) } func TestErrorEvent(t *testing.T) { event := k8sutil.NewErrorEvent("reason", errors.New("something"), &apiObjectForTest) assert.Equal(t, event.Reason, "Reason") - assert.Equal(t, event.Type, v1.EventTypeWarning) + assert.Equal(t, event.Type, core.EventTypeWarning) } diff --git a/pkg/util/k8sutil/tolerations.go b/pkg/util/k8sutil/tolerations.go index 886c2c356..851063864 100644 --- a/pkg/util/k8sutil/tolerations.go +++ b/pkg/util/k8sutil/tolerations.go @@ -23,7 +23,7 @@ package k8sutil import ( "time" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) const ( @@ -40,8 +40,8 @@ type TolerationDuration struct { // NewNoExecuteToleration is a helper to create a Toleration with // Key=key, Operator='Exists' Effect='NoExecute', TolerationSeconds=tolerationDuration.Seconds(). -func NewNoExecuteToleration(key string, duration TolerationDuration) v1.Toleration { - t := v1.Toleration{ +func NewNoExecuteToleration(key string, duration TolerationDuration) core.Toleration { + t := core.Toleration{ Key: key, Operator: "Exists", Effect: "NoExecute", @@ -54,9 +54,9 @@ func NewNoExecuteToleration(key string, duration TolerationDuration) v1.Tolerati } // AddTolerationIfNotFound adds the given tolerations, if no such toleration has been set in the given source. -func AddTolerationIfNotFound(source []v1.Toleration, toAdd v1.Toleration) []v1.Toleration { +func AddTolerationIfNotFound(source []core.Toleration, toAdd core.Toleration) []core.Toleration { if len(source) == 0 { - return []v1.Toleration{ + return []core.Toleration{ toAdd, } } diff --git a/pkg/util/k8sutil/util.go b/pkg/util/k8sutil/util.go index b3a30dd78..8340ee959 100644 --- a/pkg/util/k8sutil/util.go +++ b/pkg/util/k8sutil/util.go @@ -21,7 +21,7 @@ package k8sutil import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" ) @@ -51,14 +51,14 @@ const ( ) // AddOwnerRefToObject adds given owner reference to given object -func AddOwnerRefToObject(obj metav1.Object, ownerRef *metav1.OwnerReference) { +func AddOwnerRefToObject(obj meta.Object, ownerRef *meta.OwnerReference) { if ownerRef != nil { obj.SetOwnerReferences(append(obj.GetOwnerReferences(), *ownerRef)) } } // UpdateOwnerRefToObjectIfNeeded add given owner reference to given object if it does not exist yet -func UpdateOwnerRefToObjectIfNeeded(obj metav1.Object, ownerRef *metav1.OwnerReference) bool { +func UpdateOwnerRefToObjectIfNeeded(obj meta.Object, ownerRef *meta.OwnerReference) bool { if ownerRef != nil { for _, existingOwnerRef := range obj.GetOwnerReferences() { if existingOwnerRef.UID == ownerRef.UID { @@ -132,15 +132,15 @@ func LabelsForLocalStorage(localStorageName, role string) map[string]string { } // DeploymentListOpt creates a ListOptions matching all labels for the given deployment name. -func DeploymentListOpt(deploymentName string) metav1.ListOptions { - return metav1.ListOptions{ +func DeploymentListOpt(deploymentName string) meta.ListOptions { + return meta.ListOptions{ LabelSelector: labels.SelectorFromSet(LabelsForDeployment(deploymentName, "")).String(), } } // LocalStorageListOpt creates a ListOptions matching all labels for the given local storage name. -func LocalStorageListOpt(localStorageName, role string) metav1.ListOptions { - return metav1.ListOptions{ +func LocalStorageListOpt(localStorageName, role string) meta.ListOptions { + return meta.ListOptions{ LabelSelector: labels.SelectorFromSet(LabelsForLocalStorage(localStorageName, role)).String(), } } diff --git a/pkg/util/k8sutil/util_test.go b/pkg/util/k8sutil/util_test.go index 976fe922b..fbb8a9e4a 100644 --- a/pkg/util/k8sutil/util_test.go +++ b/pkg/util/k8sutil/util_test.go @@ -24,32 +24,32 @@ import ( "testing" "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core "k8s.io/api/core/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // TestAddOwnerRefToObject tests AddOwnerRefToObject. func TestAddOwnerRefToObject(t *testing.T) { - p := &v1.Pod{} + p := &core.Pod{} AddOwnerRefToObject(p, nil) assert.Len(t, p.GetOwnerReferences(), 0) - AddOwnerRefToObject(p, &metav1.OwnerReference{}) + AddOwnerRefToObject(p, &meta.OwnerReference{}) assert.Len(t, p.GetOwnerReferences(), 1) } // UpdateOwnerRefToObjectIfNeeded tests UpdateOwnerRefToObjectIfNeeded. func TestUpdateOwnerRefToObjectIfNeeded(t *testing.T) { - p := &v1.Pod{} + p := &core.Pod{} result := UpdateOwnerRefToObjectIfNeeded(p, nil) assert.Len(t, p.GetOwnerReferences(), 0) assert.False(t, result) - result = UpdateOwnerRefToObjectIfNeeded(p, &metav1.OwnerReference{}) + result = UpdateOwnerRefToObjectIfNeeded(p, &meta.OwnerReference{}) assert.Len(t, p.GetOwnerReferences(), 1) assert.True(t, result) - result = UpdateOwnerRefToObjectIfNeeded(p, &metav1.OwnerReference{}) + result = UpdateOwnerRefToObjectIfNeeded(p, &meta.OwnerReference{}) assert.Len(t, p.GetOwnerReferences(), 1) assert.False(t, result) } diff --git a/pkg/util/refs.go b/pkg/util/refs.go index a9ef5e585..8a83cc948 100644 --- a/pkg/util/refs.go +++ b/pkg/util/refs.go @@ -23,7 +23,7 @@ package util import ( "time" - v1 "k8s.io/api/core/v1" + core "k8s.io/api/core/v1" ) // NewString returns a reference to a string with given value. @@ -195,12 +195,12 @@ func DurationOrDefault(input *time.Duration, defaultValue ...time.Duration) time } // NewPullPolicy returns a reference to a pull policy with given value. -func NewPullPolicy(input v1.PullPolicy) *v1.PullPolicy { +func NewPullPolicy(input core.PullPolicy) *core.PullPolicy { return &input } // NewPullPolicyOrNil returns nil if input is nil, otherwise returns a clone of the given value. -func NewPullPolicyOrNil(input *v1.PullPolicy) *v1.PullPolicy { +func NewPullPolicyOrNil(input *core.PullPolicy) *core.PullPolicy { if input == nil { return nil } @@ -208,7 +208,7 @@ func NewPullPolicyOrNil(input *v1.PullPolicy) *v1.PullPolicy { } // PullPolicyOrDefault returns the default value (or 0) if input is nil, otherwise returns the referenced value. -func PullPolicyOrDefault(input *v1.PullPolicy, defaultValue ...v1.PullPolicy) v1.PullPolicy { +func PullPolicyOrDefault(input *core.PullPolicy, defaultValue ...core.PullPolicy) core.PullPolicy { if input == nil { if len(defaultValue) > 0 { return defaultValue[0] diff --git a/pkg/util/times.go b/pkg/util/times.go index a48c27b8a..cd034c8c3 100644 --- a/pkg/util/times.go +++ b/pkg/util/times.go @@ -25,16 +25,16 @@ import ( "time" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) // TimeCompareEqual compares two times, allowing an error of 1s -func TimeCompareEqual(a, b metav1.Time) bool { +func TimeCompareEqual(a, b meta.Time) bool { return math.Abs(a.Time.Sub(b.Time).Seconds()) <= 1 } // TimeCompareEqualPointer compares two times, allowing an error of 1s -func TimeCompareEqualPointer(a, b *metav1.Time) bool { +func TimeCompareEqualPointer(a, b *meta.Time) bool { if a == nil || b == nil { return false } else if a == b { From 7ee7deeeabc4216ab4994ea314eba69482a889dc Mon Sep 17 00:00:00 2001 From: ajanikow <12255597+ajanikow@users.noreply.github.com> Date: Thu, 30 Jun 2022 18:38:36 +0000 Subject: [PATCH 2/2] Iteration --- .golangci.yaml | 2 +- pkg/apis/apps/v1/job.go | 2 +- pkg/apis/replication/v1/replication.go | 2 +- pkg/apis/replication/v2alpha1/replication.go | 2 +- pkg/apis/storage/v1alpha/local_storage.go | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 9129cb5b1..bed92f3e4 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -31,4 +31,4 @@ linters-settings: - pkg: k8s.io/api/core/v1 alias: core - pkg: k8s.io/apimachinery/pkg/apis/meta/v1 - alias: meta \ No newline at end of file + alias: meta diff --git a/pkg/apis/apps/v1/job.go b/pkg/apis/apps/v1/job.go index 12daf0612..6f0f90238 100644 --- a/pkg/apis/apps/v1/job.go +++ b/pkg/apis/apps/v1/job.go @@ -45,7 +45,7 @@ type ArangoJob struct { meta.TypeMeta `json:",inline"` meta.ObjectMeta `json:"metadata,omitempty"` Spec ArangoJobSpec `json:"spec,omitempty"` - Status batchv1.JobStatus `json:"status,omitempty"` + Status batchv1.JobStatus `json:"status,omitempty"` } // AsOwner creates an OwnerReference for the given job diff --git a/pkg/apis/replication/v1/replication.go b/pkg/apis/replication/v1/replication.go index e0dd57cad..7dd23879f 100644 --- a/pkg/apis/replication/v1/replication.go +++ b/pkg/apis/replication/v1/replication.go @@ -45,7 +45,7 @@ type ArangoDeploymentReplication struct { meta.TypeMeta `json:",inline"` meta.ObjectMeta `json:"metadata,omitempty"` Spec DeploymentReplicationSpec `json:"spec"` - Status DeploymentReplicationStatus `json:"status"` + Status DeploymentReplicationStatus `json:"status"` } // AsOwner creates an OwnerReference for the given replication diff --git a/pkg/apis/replication/v2alpha1/replication.go b/pkg/apis/replication/v2alpha1/replication.go index 53c0ac4e0..530df8da5 100644 --- a/pkg/apis/replication/v2alpha1/replication.go +++ b/pkg/apis/replication/v2alpha1/replication.go @@ -45,7 +45,7 @@ type ArangoDeploymentReplication struct { meta.TypeMeta `json:",inline"` meta.ObjectMeta `json:"metadata,omitempty"` Spec DeploymentReplicationSpec `json:"spec"` - Status DeploymentReplicationStatus `json:"status"` + Status DeploymentReplicationStatus `json:"status"` } // AsOwner creates an OwnerReference for the given replication diff --git a/pkg/apis/storage/v1alpha/local_storage.go b/pkg/apis/storage/v1alpha/local_storage.go index 84cbdbe33..c9f1d9435 100644 --- a/pkg/apis/storage/v1alpha/local_storage.go +++ b/pkg/apis/storage/v1alpha/local_storage.go @@ -45,7 +45,7 @@ type ArangoLocalStorage struct { meta.TypeMeta `json:",inline"` meta.ObjectMeta `json:"metadata,omitempty"` Spec LocalStorageSpec `json:"spec"` - Status LocalStorageStatus `json:"status"` + Status LocalStorageStatus `json:"status"` } // AsOwner creates an OwnerReference for the given storage