Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 10 additions & 13 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,29 @@ replace golang.org/x/text => golang.org/x/text v0.3.3
require (
github.com/blang/semver v3.5.0+incompatible
github.com/davecgh/go-spew v1.1.1
github.com/evanphx/json-patch v4.5.0+incompatible // indirect
github.com/ghodss/yaml v1.0.0
github.com/gogo/protobuf v1.3.0 // indirect
github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc // indirect
github.com/google/go-cmp v0.3.1 // indirect
github.com/google/uuid v1.1.1
github.com/googleapis/gnostic v0.3.1 // indirect
github.com/hashicorp/golang-lru v0.5.3 // indirect
github.com/imdario/mergo v0.3.8 // indirect
github.com/openshift/api v0.0.0-20191028120151-c556078b427f
github.com/openshift/client-go v0.0.0-20191001081553-3b0e988f8cb0
github.com/openshift/api v0.0.0-20200521101457-60c476765272
github.com/openshift/client-go v0.0.0-20200521150516-05eb9880269c
github.com/pkg/errors v0.8.1
github.com/prometheus/client_golang v1.1.0
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4
github.com/prometheus/client_model v0.2.0
github.com/prometheus/common v0.7.0 // indirect
github.com/prometheus/procfs v0.0.5 // indirect
github.com/spf13/cobra v0.0.5
golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc
golang.org/x/sys v0.0.0-20191003212358-c178f38b412c // indirect
golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975
golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0
google.golang.org/appengine v1.6.4 // indirect
k8s.io/api v0.17.3
k8s.io/apiextensions-apiserver v0.17.0
k8s.io/apimachinery v0.17.3
k8s.io/client-go v0.17.3
k8s.io/api v0.18.9
k8s.io/apiextensions-apiserver v0.18.9
k8s.io/apimachinery v0.18.9
k8s.io/client-go v0.18.9
k8s.io/klog v1.0.0
k8s.io/kube-aggregator v0.17.0
k8s.io/utils v0.0.0-20191114184206-e782cd3c129f
k8s.io/kube-aggregator v0.18.9
k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89
)
139 changes: 68 additions & 71 deletions go.sum

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion hack/test-prerequisites.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"context"
"io/ioutil"
"log"
"time"
Expand All @@ -9,12 +10,14 @@ import (
v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
apiext "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/tools/clientcmd"
)

// main installs the CV CRD to a cluster for integration testing.
func main() {
ctx := context.Background()
log.SetFlags(0)
kcfg := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(clientcmd.NewDefaultClientConfigLoadingRules(), &clientcmd.ConfigOverrides{})
cfg, err := kcfg.ClientConfig()
Expand All @@ -38,7 +41,7 @@ func main() {
log.Fatalf("Unable to parse CRD %s: %v", path, err)
}
name = crd.Name
_, err = client.ApiextensionsV1beta1().CustomResourceDefinitions().Create(&crd)
_, err = client.ApiextensionsV1beta1().CustomResourceDefinitions().Create(ctx, &crd, metav1.CreateOptions{})
if errors.IsAlreadyExists(err) {
return true, nil
}
Expand Down
18 changes: 10 additions & 8 deletions lib/resourceapply/apiext.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package resourceapply

import (
"context"

"github.com/openshift/cluster-version-operator/lib/resourcemerge"
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
Expand All @@ -12,10 +14,10 @@ import (
"k8s.io/utils/pointer"
)

func ApplyCustomResourceDefinitionV1beta1(client apiextclientv1beta1.CustomResourceDefinitionsGetter, required *apiextv1beta1.CustomResourceDefinition) (*apiextv1beta1.CustomResourceDefinition, bool, error) {
existing, err := client.CustomResourceDefinitions().Get(required.Name, metav1.GetOptions{})
func ApplyCustomResourceDefinitionV1beta1(ctx context.Context, client apiextclientv1beta1.CustomResourceDefinitionsGetter, required *apiextv1beta1.CustomResourceDefinition) (*apiextv1beta1.CustomResourceDefinition, bool, error) {
existing, err := client.CustomResourceDefinitions().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.CustomResourceDefinitions().Create(required)
actual, err := client.CustomResourceDefinitions().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -34,14 +36,14 @@ func ApplyCustomResourceDefinitionV1beta1(client apiextclientv1beta1.CustomResou

klog.V(2).Infof("Updating CRD %s", required.Name)

actual, err := client.CustomResourceDefinitions().Update(existing)
actual, err := client.CustomResourceDefinitions().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}

func ApplyCustomResourceDefinitionV1(client apiextclientv1.CustomResourceDefinitionsGetter, required *apiextv1.CustomResourceDefinition) (*apiextv1.CustomResourceDefinition, bool, error) {
existing, err := client.CustomResourceDefinitions().Get(required.Name, metav1.GetOptions{})
func ApplyCustomResourceDefinitionV1(ctx context.Context, client apiextclientv1.CustomResourceDefinitionsGetter, required *apiextv1.CustomResourceDefinition) (*apiextv1.CustomResourceDefinition, bool, error) {
existing, err := client.CustomResourceDefinitions().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.CustomResourceDefinitions().Create(required)
actual, err := client.CustomResourceDefinitions().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -60,6 +62,6 @@ func ApplyCustomResourceDefinitionV1(client apiextclientv1.CustomResourceDefinit

klog.V(2).Infof("Updating CRD %s", required.Name)

actual, err := client.CustomResourceDefinitions().Update(existing)
actual, err := client.CustomResourceDefinitions().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
10 changes: 6 additions & 4 deletions lib/resourceapply/apireg.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package resourceapply

import (
"context"

"github.com/openshift/cluster-version-operator/lib/resourcemerge"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand All @@ -9,10 +11,10 @@ import (
"k8s.io/utils/pointer"
)

func ApplyAPIService(client apiregclientv1.APIServicesGetter, required *apiregv1.APIService) (*apiregv1.APIService, bool, error) {
existing, err := client.APIServices().Get(required.Name, metav1.GetOptions{})
func ApplyAPIService(ctx context.Context, client apiregclientv1.APIServicesGetter, required *apiregv1.APIService) (*apiregv1.APIService, bool, error) {
existing, err := client.APIServices().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.APIServices().Create(required)
actual, err := client.APIServices().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -29,6 +31,6 @@ func ApplyAPIService(client apiregclientv1.APIServicesGetter, required *apiregv1
return existing, false, nil
}

actual, err := client.APIServices().Update(existing)
actual, err := client.APIServices().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
30 changes: 16 additions & 14 deletions lib/resourceapply/apps.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package resourceapply

import (
"context"

"github.com/openshift/cluster-version-operator/lib/resourcemerge"
appsv1 "k8s.io/api/apps/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
Expand All @@ -11,10 +13,10 @@ import (
)

// ApplyDeployment applies the required deployment to the cluster.
func ApplyDeployment(client appsclientv1.DeploymentsGetter, required *appsv1.Deployment) (*appsv1.Deployment, bool, error) {
existing, err := client.Deployments(required.Namespace).Get(required.Name, metav1.GetOptions{})
func ApplyDeployment(ctx context.Context, client appsclientv1.DeploymentsGetter, required *appsv1.Deployment) (*appsv1.Deployment, bool, error) {
existing, err := client.Deployments(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.Deployments(required.Namespace).Create(required)
actual, err := client.Deployments(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -31,15 +33,15 @@ func ApplyDeployment(client appsclientv1.DeploymentsGetter, required *appsv1.Dep
return existing, false, nil
}

actual, err := client.Deployments(required.Namespace).Update(existing)
actual, err := client.Deployments(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}

// ApplyDeploymentFromCache applies the required deployment to the cluster.
func ApplyDeploymentFromCache(lister appslisterv1.DeploymentLister, client appsclientv1.DeploymentsGetter, required *appsv1.Deployment) (*appsv1.Deployment, bool, error) {
func ApplyDeploymentFromCache(ctx context.Context, lister appslisterv1.DeploymentLister, client appsclientv1.DeploymentsGetter, required *appsv1.Deployment) (*appsv1.Deployment, bool, error) {
existing, err := lister.Deployments(required.Namespace).Get(required.Name)
if apierrors.IsNotFound(err) {
actual, err := client.Deployments(required.Namespace).Create(required)
actual, err := client.Deployments(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -57,15 +59,15 @@ func ApplyDeploymentFromCache(lister appslisterv1.DeploymentLister, client appsc
return existing, false, nil
}

actual, err := client.Deployments(required.Namespace).Update(existing)
actual, err := client.Deployments(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}

// ApplyDaemonSet applies the required daemonset to the cluster.
func ApplyDaemonSet(client appsclientv1.DaemonSetsGetter, required *appsv1.DaemonSet) (*appsv1.DaemonSet, bool, error) {
existing, err := client.DaemonSets(required.Namespace).Get(required.Name, metav1.GetOptions{})
func ApplyDaemonSet(ctx context.Context, client appsclientv1.DaemonSetsGetter, required *appsv1.DaemonSet) (*appsv1.DaemonSet, bool, error) {
existing, err := client.DaemonSets(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.DaemonSets(required.Namespace).Create(required)
actual, err := client.DaemonSets(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -82,15 +84,15 @@ func ApplyDaemonSet(client appsclientv1.DaemonSetsGetter, required *appsv1.Daemo
return existing, false, nil
}

actual, err := client.DaemonSets(required.Namespace).Update(existing)
actual, err := client.DaemonSets(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}

// ApplyDaemonSetFromCache applies the required deployment to the cluster.
func ApplyDaemonSetFromCache(lister appslisterv1.DaemonSetLister, client appsclientv1.DaemonSetsGetter, required *appsv1.DaemonSet) (*appsv1.DaemonSet, bool, error) {
func ApplyDaemonSetFromCache(ctx context.Context, lister appslisterv1.DaemonSetLister, client appsclientv1.DaemonSetsGetter, required *appsv1.DaemonSet) (*appsv1.DaemonSet, bool, error) {
existing, err := lister.DaemonSets(required.Namespace).Get(required.Name)
if apierrors.IsNotFound(err) {
actual, err := client.DaemonSets(required.Namespace).Create(required)
actual, err := client.DaemonSets(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -108,6 +110,6 @@ func ApplyDaemonSetFromCache(lister appslisterv1.DaemonSetLister, client appscli
return existing, false, nil
}

actual, err := client.DaemonSets(required.Namespace).Update(existing)
actual, err := client.DaemonSets(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
10 changes: 6 additions & 4 deletions lib/resourceapply/batch.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package resourceapply

import (
"context"

"github.com/openshift/cluster-version-operator/lib/resourcemerge"
batchv1 "k8s.io/api/batch/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
Expand All @@ -10,10 +12,10 @@ import (
)

// ApplyJob applies the required Job to the cluster.
func ApplyJob(client batchclientv1.JobsGetter, required *batchv1.Job) (*batchv1.Job, bool, error) {
existing, err := client.Jobs(required.Namespace).Get(required.Name, metav1.GetOptions{})
func ApplyJob(ctx context.Context, client batchclientv1.JobsGetter, required *batchv1.Job) (*batchv1.Job, bool, error) {
existing, err := client.Jobs(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.Jobs(required.Namespace).Create(required)
actual, err := client.Jobs(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -30,6 +32,6 @@ func ApplyJob(client batchclientv1.JobsGetter, required *batchv1.Job) (*batchv1.
return existing, false, nil
}

actual, err := client.Jobs(required.Namespace).Update(existing)
actual, err := client.Jobs(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
34 changes: 18 additions & 16 deletions lib/resourceapply/core.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package resourceapply

import (
"context"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/equality"
apierrors "k8s.io/apimachinery/pkg/api/errors"
Expand All @@ -12,10 +14,10 @@ import (
)

// ApplyNamespace merges objectmeta, does not worry about anything else
func ApplyNamespace(client coreclientv1.NamespacesGetter, required *corev1.Namespace) (*corev1.Namespace, bool, error) {
existing, err := client.Namespaces().Get(required.Name, metav1.GetOptions{})
func ApplyNamespace(ctx context.Context, client coreclientv1.NamespacesGetter, required *corev1.Namespace) (*corev1.Namespace, bool, error) {
existing, err := client.Namespaces().Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.Namespaces().Create(required)
actual, err := client.Namespaces().Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -32,17 +34,17 @@ func ApplyNamespace(client coreclientv1.NamespacesGetter, required *corev1.Names
return existing, false, nil
}

actual, err := client.Namespaces().Update(existing)
actual, err := client.Namespaces().Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}

// ApplyService merges objectmeta and requires
// TODO, since this cannot determine whether changes are due to legitimate actors (api server) or illegitimate ones (users), we cannot update
// TODO I've special cased the selector for now
func ApplyService(client coreclientv1.ServicesGetter, required *corev1.Service) (*corev1.Service, bool, error) {
existing, err := client.Services(required.Namespace).Get(required.Name, metav1.GetOptions{})
func ApplyService(ctx context.Context, client coreclientv1.ServicesGetter, required *corev1.Service) (*corev1.Service, bool, error) {
existing, err := client.Services(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.Services(required.Namespace).Create(required)
actual, err := client.Services(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -65,15 +67,15 @@ func ApplyService(client coreclientv1.ServicesGetter, required *corev1.Service)
existing.Spec.Selector = required.Spec.Selector
existing.Spec.Type = required.Spec.Type // if this is different, the update will fail. Status will indicate it.

actual, err := client.Services(required.Namespace).Update(existing)
actual, err := client.Services(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}

// ApplyServiceAccount applies the required serviceaccount to the cluster.
func ApplyServiceAccount(client coreclientv1.ServiceAccountsGetter, required *corev1.ServiceAccount) (*corev1.ServiceAccount, bool, error) {
existing, err := client.ServiceAccounts(required.Namespace).Get(required.Name, metav1.GetOptions{})
func ApplyServiceAccount(ctx context.Context, client coreclientv1.ServiceAccountsGetter, required *corev1.ServiceAccount) (*corev1.ServiceAccount, bool, error) {
existing, err := client.ServiceAccounts(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.ServiceAccounts(required.Namespace).Create(required)
actual, err := client.ServiceAccounts(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -90,15 +92,15 @@ func ApplyServiceAccount(client coreclientv1.ServiceAccountsGetter, required *co
return existing, false, nil
}

actual, err := client.ServiceAccounts(required.Namespace).Update(existing)
actual, err := client.ServiceAccounts(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}

// ApplyConfigMap applies the required serviceaccount to the cluster.
func ApplyConfigMap(client coreclientv1.ConfigMapsGetter, required *corev1.ConfigMap) (*corev1.ConfigMap, bool, error) {
existing, err := client.ConfigMaps(required.Namespace).Get(required.Name, metav1.GetOptions{})
func ApplyConfigMap(ctx context.Context, client coreclientv1.ConfigMapsGetter, required *corev1.ConfigMap) (*corev1.ConfigMap, bool, error) {
existing, err := client.ConfigMaps(required.Namespace).Get(ctx, required.Name, metav1.GetOptions{})
if apierrors.IsNotFound(err) {
actual, err := client.ConfigMaps(required.Namespace).Create(required)
actual, err := client.ConfigMaps(required.Namespace).Create(ctx, required, metav1.CreateOptions{})
return actual, true, err
}
if err != nil {
Expand All @@ -115,6 +117,6 @@ func ApplyConfigMap(client coreclientv1.ConfigMapsGetter, required *corev1.Confi
return existing, false, nil
}

actual, err := client.ConfigMaps(required.Namespace).Update(existing)
actual, err := client.ConfigMaps(required.Namespace).Update(ctx, existing, metav1.UpdateOptions{})
return actual, true, err
}
Loading