Skip to content

Commit d793843

Browse files
authored
Merge pull request #97 from sttts/sttts-mjudeikis/hack.dashed.packages
✨ Support dashed clients
2 parents cd963f0 + 4f7d2fd commit d793843

File tree

89 files changed

+5395
-205
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+5395
-205
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ TOOLS_DIR=hack/tools
2020
GOBIN_DIR := $(abspath $(TOOLS_DIR))
2121
TMPDIR := $(shell mktemp -d)
2222

23-
CONTROLLER_GEN_VER := v0.16.1
23+
CONTROLLER_GEN_VER := v0.16.5
2424
CONTROLLER_GEN_BIN := controller-gen
2525
CONTROLLER_GEN := $(GOBIN_DIR)/$(CONTROLLER_GEN_BIN)-$(CONTROLLER_GEN_VER)
2626
export CONTROLLER_GEN
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
Copyright 2021 The KCP Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package exampledashed
18+
19+
const (
20+
// GroupName is the group name use in this package.
21+
GroupName = "example-dashed.some.corp"
22+
)
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
Copyright 2022 The KCP Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
// Package v1 contains API Schema definitions for the example-dashed.some.corp
18+
// v1 API group.
19+
//
20+
// +k8s:deepcopy-gen=package,register
21+
// +groupName=example-dashed.some.corp
22+
// +groupGoName=ExampleDashed
23+
package v1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
Copyright 2021 The KCP Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package v1
18+
19+
import (
20+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21+
"k8s.io/apimachinery/pkg/runtime"
22+
"k8s.io/apimachinery/pkg/runtime/schema"
23+
24+
example "acme.corp/pkg/apis/exampledashed"
25+
)
26+
27+
// SchemeGroupVersion is group version used to register these objects.
28+
var SchemeGroupVersion = schema.GroupVersion{Group: example.GroupName, Version: "v1"}
29+
30+
// Kind takes an unqualified kind and returns back a Group qualified GroupKind.
31+
func Kind(kind string) schema.GroupKind {
32+
return SchemeGroupVersion.WithKind(kind).GroupKind()
33+
}
34+
35+
// Resource takes an unqualified resource and returns a Group qualified GroupResource.
36+
func Resource(resource string) schema.GroupResource {
37+
return SchemeGroupVersion.WithResource(resource).GroupResource()
38+
}
39+
40+
var (
41+
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
42+
AddToScheme = SchemeBuilder.AddToScheme
43+
)
44+
45+
// Adds the list of known types to Scheme.
46+
func addKnownTypes(scheme *runtime.Scheme) error {
47+
scheme.AddKnownTypes(SchemeGroupVersion,
48+
&TestType{},
49+
&TestTypeList{},
50+
&ClusterTestType{},
51+
&ClusterTestTypeList{},
52+
)
53+
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
54+
return nil
55+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
Copyright 2022 The KCP Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package v1
18+
19+
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
20+
21+
// +genclient
22+
// +genclient:noStatus
23+
// +genclient:method=CreateField,verb=create,subresource=field,input=acme.corp/pkg/apis/example/v1.Field,result=acme.corp/pkg/apis/example/v1.Field
24+
// +genclient:method=UpdateField,verb=update,subresource=field,input=acme.corp/pkg/apis/example/v1.Field,result=acme.corp/pkg/apis/example/v1.Field
25+
// +genclient:method=GetField,verb=get,subresource=field,result=acme.corp/pkg/apis/example/v1.Field
26+
// TestType is a top-level type. A client is created for it.
27+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
28+
type TestType struct {
29+
metav1.TypeMeta `json:",inline"`
30+
// +optional
31+
metav1.ObjectMeta `json:"metadata,omitempty"`
32+
// +optional
33+
APIGroups []string `json:"apiGroups,omitempty"`
34+
}
35+
36+
// TestTypeList is a top-level list type. The client methods for lists are automatically created.
37+
// You are not supposed to create a separated client for this one.
38+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
39+
type TestTypeList struct {
40+
metav1.TypeMeta `json:",inline"`
41+
metav1.ListMeta `json:"metadata"`
42+
Items []TestType `json:"items"`
43+
}
44+
45+
// +genclient
46+
// +genclient:nonNamespaced
47+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
48+
type ClusterTestType struct {
49+
metav1.TypeMeta `json:",inline"`
50+
// +optional
51+
metav1.ObjectMeta `json:"metadata,omitempty"`
52+
// ObjectKind is the type of resource being referenced
53+
ObjectKind string `json:"kind"`
54+
// ObjectName is the name of resource being referenced
55+
ObjectName string `json:"name"`
56+
// +optional
57+
Status ClusterTestTypeStatus `json:"status,omitempty"`
58+
}
59+
60+
type ClusterTestTypeStatus struct {
61+
Blah string `json:"blah,omitempty"`
62+
}
63+
64+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
65+
type ClusterTestTypeList struct {
66+
metav1.TypeMeta `json:",inline"`
67+
metav1.ListMeta `json:"metadata"`
68+
69+
Items []ClusterTestType `json:"items"`
70+
}

examples/pkg/apis/exampledashed/v1/zz_generated.deepcopy.go

+144
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)