Skip to content

Commit

Permalink
remove generated kube clients (#55)
Browse files Browse the repository at this point in the history
* remove generated kube clients
* fix client template
  • Loading branch information
ilackarms authored Jun 12, 2020
1 parent f2a0858 commit 08ef97f
Show file tree
Hide file tree
Showing 90 changed files with 15,915 additions and 9,492 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ install-deps: mod-download
# Generated Code - Required to update Codgen Templates
.PHONY: generated-code
generated-code: clean install-deps
go generate ./...
go generate -v ./...
goimports -w .
go mod tidy

Expand Down
59 changes: 33 additions & 26 deletions api/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package main
import (
"log"

"github.com/solo-io/skv2/api/k8s"

"github.com/solo-io/skv2/codegen"
"github.com/solo-io/skv2/codegen/model"
"github.com/solo-io/skv2/contrib"
Expand All @@ -19,38 +21,43 @@ func main() {
"api/**/*.proto",
})

skv2Cmd := codegen.Command{
Groups: []model.Group{
{
GroupVersion: schema.GroupVersion{
Group: "multicluster.solo.io",
Version: "v1alpha1",
},
Module: "github.com/solo-io/skv2",
Resources: []model.Resource{
{
Kind: "KubernetesCluster",
Spec: model.Field{
Type: model.Type{
Name: "KubernetesClusterSpec",
},
groups := []model.Group{
{
GroupVersion: schema.GroupVersion{
Group: "multicluster.solo.io",
Version: "v1alpha1",
},
Module: "github.com/solo-io/skv2",
Resources: []model.Resource{
{
Kind: "KubernetesCluster",
Spec: model.Field{
Type: model.Type{
Name: "KubernetesClusterSpec",
},
Status: &model.Field{
Type: model.Type{
Name: "KubernetesClusterStatus",
},
},
Status: &model.Field{
Type: model.Type{
Name: "KubernetesClusterStatus",
},
},
},
RenderManifests: true,
RenderController: true,
RenderProtos: true,
RenderClients: true,
RenderTypes: true,
ApiRoot: "pkg/api",
CustomTemplates: contrib.AllCustomTemplates,
},
RenderManifests: true,
RenderController: true,
RenderProtos: true,
RenderClients: true,
RenderTypes: true,
ApiRoot: "pkg/api",
CustomTemplates: contrib.AllCustomTemplates,
},
}

// add internal k8s groups we depend on
groups = append(groups, k8s.Groups()...)

skv2Cmd := codegen.Command{
Groups: groups,
AnyVendorConfig: skv2Imports,
}
if err := skv2Cmd.Execute(); err != nil {
Expand Down
101 changes: 101 additions & 0 deletions api/k8s/k8s_groups.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package k8s

import (
"github.com/solo-io/skv2/codegen/model"
"github.com/solo-io/skv2/contrib"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
)

const (
k8sApiRoot = "pkg/multicluster/internal/k8s"
k8sModule = "k8s.io/api"
)

func Groups() []model.Group {
groups := []model.Group{
{
GroupVersion: corev1.SchemeGroupVersion,
Module: k8sModule,
Resources: []model.Resource{
{
Kind: "Secret",
},
{
Kind: "ServiceAccount",
},
{
Kind: "Namespace",
ClusterScoped: true,
},
},
CustomTypesImportPath: "k8s.io/api/core/v1",
ApiRoot: k8sApiRoot + "/core",
},
{
GroupVersion: admissionregistrationv1.SchemeGroupVersion,
Module: "k8s.io/apiextensions-apiserver",
Resources: []model.Resource{
{
Kind: "ValidatingWebhookConfiguration",
},
},
CustomTypesImportPath: "k8s.io/api/admissionregistration/v1",
ApiRoot: k8sApiRoot,
},
{
GroupVersion: rbacv1.SchemeGroupVersion,
Resources: []model.Resource{
{
Kind: "Role",
},
{
Kind: "RoleBinding",
},
{
Kind: "ClusterRole",
ClusterScoped: true,
},
{
Kind: "ClusterRoleBinding",
ClusterScoped: true,
},
},
CustomTypesImportPath: "k8s.io/api/rbac/v1",
ApiRoot: k8sApiRoot,
},
{
GroupVersion: certificatesv1beta1.SchemeGroupVersion,
Resources: []model.Resource{
{
Kind: "CertificateSigningRequest",
},
},
CustomTypesImportPath: "k8s.io/api/certificates/v1beta1",
ApiRoot: k8sApiRoot,
},
{
GroupVersion: apiextensionsv1beta1.SchemeGroupVersion,
Module: "k8s.io/apiextensions-apiserver",
Resources: []model.Resource{
{
Kind: "CustomResourceDefinition",
ClusterScoped: true,
},
},
CustomTypesImportPath: "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1",
ApiRoot: k8sApiRoot,
},
}
for i, group := range groups {
group.RenderClients = true
group.RenderController = true
group.MockgenDirective = true
group.CustomTemplates = contrib.AllCustomTemplates
groups[i] = group
}
return groups
}
4 changes: 4 additions & 0 deletions changelog/v0.4.0/extract-kube-clients.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
changelog:
- type: BREAKING_CHANGE
description: Extract generated Kubernetes clientsets to https://github.com/solo-io/external-apis
issueLink: https://github.com/solo-io/skv2/issues/54
14 changes: 7 additions & 7 deletions codegen/templates/code/types/clients.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ type clientSet struct {

func NewClientsetFromConfig(cfg *rest.Config) (Clientset, error) {
scheme := scheme.Scheme
if err := AddToScheme(scheme); err != nil{
if err := {{ $import_prefix }}AddToScheme(scheme); err != nil{
return nil, err
}
client, err := client.New(cfg, client.Options{
Expand Down Expand Up @@ -152,7 +152,7 @@ func New{{ $resource.Kind }}Client(client client.Client) *{{ $kindLowerCamel }}C

{{if $resource.ClusterScoped }}
func (c *{{ $kindLowerCamel }}Client) Get{{ $resource.Kind }}(ctx context.Context, name string) (*{{ $import_prefix }}{{ $resource.Kind }}, error) {
obj := &{{ $resource.Kind }}{}
obj := &{{ $import_prefix }}{{ $resource.Kind }}{}
key := client.ObjectKey{
Name: name,
}
Expand All @@ -163,7 +163,7 @@ func (c *{{ $kindLowerCamel }}Client) Get{{ $resource.Kind }}(ctx context.Contex
}
{{- else }}
func (c *{{ $kindLowerCamel }}Client) Get{{ $resource.Kind }}(ctx context.Context, key client.ObjectKey) (*{{ $import_prefix }}{{ $resource.Kind }}, error) {
obj := &{{ $resource.Kind }}{}
obj := &{{ $import_prefix }}{{ $resource.Kind }}{}
if err := c.client.Get(ctx, key, obj); err != nil {
return nil, err
}
Expand All @@ -172,7 +172,7 @@ func (c *{{ $kindLowerCamel }}Client) Get{{ $resource.Kind }}(ctx context.Contex
{{- end}}

func (c *{{ $kindLowerCamel }}Client) List{{ $resource.Kind }}(ctx context.Context, opts ...client.ListOption) (*{{ $import_prefix }}{{ $resource.Kind }}List, error) {
list := &{{ $resource.Kind }}List{}
list := &{{ $import_prefix }}{{ $resource.Kind }}List{}
if err := c.client.List(ctx, list, opts...); err != nil {
return nil, err
}
Expand All @@ -185,13 +185,13 @@ func (c *{{ $kindLowerCamel }}Client) Create{{ $resource.Kind }}(ctx context.Con

{{if $resource.ClusterScoped }}
func (c *{{ $kindLowerCamel }}Client) Delete{{ $resource.Kind }}(ctx context.Context, name string, opts ...client.DeleteOption) error {
obj := &{{ $resource.Kind }}{}
obj := &{{ $import_prefix }}{{ $resource.Kind }}{}
obj.SetName(name)
return c.client.Delete(ctx, obj, opts...)
}
{{- else }}
func (c *{{ $kindLowerCamel }}Client) Delete{{ $resource.Kind }}(ctx context.Context, key client.ObjectKey, opts ...client.DeleteOption) error {
obj := &{{ $resource.Kind }}{}
obj := &{{ $import_prefix }}{{ $resource.Kind }}{}
obj.SetName(key.Name)
obj.SetNamespace(key.Namespace)
return c.client.Delete(ctx, obj, opts...)
Expand All @@ -207,7 +207,7 @@ func (c *{{ $kindLowerCamel }}Client) Patch{{ $resource.Kind }}(ctx context.Cont
}

func (c *{{ $kindLowerCamel }}Client) DeleteAllOf{{ $resource.Kind }}(ctx context.Context, opts ...client.DeleteAllOfOption) error {
obj := &{{ $resource.Kind }}{}
obj := &{{ $import_prefix }}{{ $resource.Kind }}{}
return c.client.DeleteAllOf(ctx, obj, opts...)
}

Expand Down
Loading

0 comments on commit 08ef97f

Please sign in to comment.