Skip to content

Commit

Permalink
Remove controller-runtime
Browse files Browse the repository at this point in the history
Signed-off-by: Dominique Vernier <[email protected]>
  • Loading branch information
itdove committed Jun 3, 2021
1 parent ea3a619 commit a1526b1
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 102 deletions.
8 changes: 5 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,15 @@ clusteradm <verb> [<noun>]

## Client

- The [helpers](pkg/helpers/client.go) package contains methods to get a client. For the time being only a `sigs.k8s.io/controller-runtime/pkg/client` is used as it is the one needed for the applier, but if you would like to use another client for other goals, please add the method to create client in that package. The most important to to get the config from:
- The [main](cmd/clusteradm.go) provides a cmdutil.Factory which can be laverage to get different clients and also the *rest.Config. The factory can be passed to the cobra.Command and then save in the Options.

```Go
config, err := configFlags.ToRESTConfig()
kubeClient, err := o.factory.KubernetesClientSet()
```

as it uses also the parameters like `--server` or `--kubeconfig` to generate the client.
```Go
config, err := f.ToRESTConfig()
```

## Unit tests

Expand Down
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ export GOPACKAGES = $(shell go list ./... | grep -v /vendor | grep -v /build |

.PHONY: clean
clean: clean-test
kind delete cluster --name ${PROJECT_NAME}-functional-test
kind delete cluster --name ${PROJECT_NAME}-functional-test-hub
kind delete cluster --name ${PROJECT_NAME}-functional-test-spoke

.PHONY: deps
deps:
Expand Down
8 changes: 7 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,16 @@ require (
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible
github.com/ghodss/yaml v1.0.0
github.com/googleapis/gnostic v0.5.1 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/huandu/xstrings v1.3.2 // indirect
github.com/imdario/mergo v0.3.10 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/onsi/ginkgo v1.14.1 // indirect
github.com/onsi/gomega v1.10.2 // indirect
github.com/openshift/library-go v0.0.0-20210521084623-7392ea9b02ca
github.com/spf13/cobra v1.1.3
google.golang.org/appengine v1.6.6 // indirect
k8s.io/api v0.21.1
k8s.io/apiextensions-apiserver v0.21.1
k8s.io/apimachinery v0.21.1
Expand All @@ -24,6 +30,6 @@ require (
k8s.io/component-base v0.21.1
k8s.io/klog v1.0.0
k8s.io/kubectl v0.21.0
k8s.io/utils v0.0.0-20210111153108-fddb29f9d009 // indirect
open-cluster-management.io/api v0.0.0-20210519100835-bb9d4652f920
sigs.k8s.io/controller-runtime v0.8.3
)
43 changes: 0 additions & 43 deletions go.sum

Large diffs are not rendered by default.

52 changes: 22 additions & 30 deletions pkg/cmd/accept/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,12 @@ import (

corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/kubernetes"
"open-cluster-management.io/clusteradm/pkg/helpers"

crclient "sigs.k8s.io/controller-runtime/pkg/client"

"github.com/spf13/cobra"
certificatesv1 "k8s.io/api/certificates/v1"
clusterclientset "open-cluster-management.io/api/client/cluster/clientset/versioned"
)

const (
Expand Down Expand Up @@ -48,24 +46,27 @@ func (o *Options) validate() error {
}

func (o *Options) run() error {
client, err := helpers.GetControllerRuntimeClientFromFlags(o.ConfigFlags)
kubeClient, err := o.factory.KubernetesClientSet()
if err != nil {
return err
}
restConfig, err := o.factory.ToRESTConfig()
if err != nil {
return err
}
return o.runWithClient(client)
clusterClient, err := clusterclientset.NewForConfig(restConfig)
if err != nil {
return err
}
return o.runWithClient(kubeClient, clusterClient)
}

func (o *Options) runWithClient(client crclient.Client) error {
func (o *Options) runWithClient(kubeClient *kubernetes.Clientset, clusterClient *clusterclientset.Clientset) error {
for _, clusterName := range o.values.clusters {

csrs := &certificatesv1.CertificateSigningRequestList{}
ls := labels.SelectorFromSet(labels.Set{
clusterLabel: clusterName,
})
err := client.List(context.TODO(),
csrs,
&crclient.ListOptions{
LabelSelector: ls,
csrs, err := kubeClient.CertificatesV1().CertificateSigningRequests().List(context.TODO(),
metav1.ListOptions{
LabelSelector: fmt.Sprintf("%v = %v", clusterLabel, clusterName),
})
if err != nil {
return err
Expand Down Expand Up @@ -130,24 +131,15 @@ func (o *Options) runWithClient(client crclient.Client) error {
fmt.Printf("no CSR to approve for cluster %s\n", clusterName)
}

mc := &unstructured.Unstructured{}
mc.SetKind("ManagedCluster")
mc.SetAPIVersion("cluster.open-cluster-management.io/v1")
err = client.Get(context.TODO(),
crclient.ObjectKey{
Name: clusterName,
},
mc)
mc, err := clusterClient.ClusterV1().ManagedClusters().Get(context.TODO(),
clusterName,
metav1.GetOptions{})
if err != nil {
return err
}
spec := mc.Object["spec"].(map[string]interface{})
hubAcceptsClient, ok := spec["hubAcceptsClient"]
if !ok || !hubAcceptsClient.(bool) {
patch := crclient.MergeFrom(mc.DeepCopyObject())
spec["hubAcceptsClient"] = true

err = client.Patch(context.TODO(), mc, patch)
if !mc.Spec.HubAcceptsClient {
mc.Spec.HubAcceptsClient = true
_, err = clusterClient.ClusterV1().ManagedClusters().Update(context.TODO(), mc, metav1.UpdateOptions{})
if err != nil {
return err
}
Expand Down
11 changes: 0 additions & 11 deletions pkg/cmd/version/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,8 @@ package version
import (
"fmt"

crclient "sigs.k8s.io/controller-runtime/pkg/client"

"github.com/spf13/cobra"
clusteradm "open-cluster-management.io/clusteradm"
"open-cluster-management.io/clusteradm/pkg/helpers"
)

func (o *Options) complete(cmd *cobra.Command, args []string) (err error) {
Expand All @@ -20,14 +17,6 @@ func (o *Options) validate() error {
}
func (o *Options) run() (err error) {
fmt.Printf("client\t\tversion\t:%s\n", clusteradm.GetVersion())
client, err := helpers.GetControllerRuntimeClientFromFlags(o.ConfigFlags)
if err != nil {
return err
}
return o.runWithClient(client)
}

func (o *Options) runWithClient(client crclient.Client) (err error) {
discoveryClient, err := o.factory.ToDiscoveryClient()
if err != nil {
return err
Expand Down
13 changes: 0 additions & 13 deletions pkg/helpers/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,8 @@ import (
"github.com/ghodss/yaml"
"k8s.io/client-go/kubernetes"
clientcmdapiv1 "k8s.io/client-go/tools/clientcmd/api/v1"

crclient "sigs.k8s.io/controller-runtime/pkg/client"

"k8s.io/cli-runtime/pkg/genericclioptions"
)

func GetControllerRuntimeClientFromFlags(configFlags *genericclioptions.ConfigFlags) (client crclient.Client, err error) {
config, err := configFlags.ToRESTConfig()
if err != nil {
return nil, err
}
config.QPS = 20
return crclient.New(config, crclient.Options{})
}

func GetAPIServer(kubeClient kubernetes.Interface) (string, error) {
config, err := getClusterInfoKubeConfig(kubeClient)
if err != nil {
Expand Down

0 comments on commit a1526b1

Please sign in to comment.