@@ -40,8 +40,13 @@ public class CrossplaneCompositeResourceService {
4040 public static <T extends CustomResource <?, Void >> void registerOrUpdateCompositeResource (List <String > pipelineFunctions ,
4141 T compositionDefinition ,
4242 KubernetesClient kubernetesClient ) {
43+ registerOrUpdateCompositeResource (pipelineFunctions , compositionDefinition , kubernetesClient , false );
44+ }
45+ public static <T extends CustomResource <?, Void >> void registerOrUpdateCompositeResource (List <String > pipelineFunctions ,
46+ T compositionDefinition ,
47+ KubernetesClient kubernetesClient , boolean legacy ) {
4348
44- CompositeResourceDefinition compositeResourceDefinition = createCompositeResourceDefinition (compositionDefinition );
49+ CompositeResourceDefinition compositeResourceDefinition = createCompositeResourceDefinition (compositionDefinition , legacy );
4550
4651 registerOrUpdateCompositeResourceDefinition (compositeResourceDefinition , kubernetesClient );
4752
@@ -71,28 +76,40 @@ private static void registerOrUpdateCompositeResourceDefinition(CompositeResourc
7176 * @return A CompositeResourceDefintion based on the provided CustomResource
7277 * @param <T> Must extend CustomResource
7378 */
74- public static <T extends CustomResource <?, Void >> CompositeResourceDefinition createCompositeResourceDefinition (T compositionDefinition ) { //}, Class functionMixin) {
79+
80+ public static <T extends CustomResource <?, Void >> CompositeResourceDefinition createCompositeResourceDefinition (T compositionDefinition ) {
81+ return createCompositeResourceDefinition (compositionDefinition , false );
82+ }
83+
84+ /**
85+ * Create a CompositeResourceDefinition based on the provided CustomResource
86+ * If Namespaced, ClaimNames will be added in addition to Names.
87+ *
88+ * @param compositionDefinition The composition definition
89+ * @return A CompositeResourceDefintion based on the provided CustomResource
90+ * @param <T> Must extend CustomResource
91+ * @param legacy True if legacy scope should be used, otherwise the type of the compositionDefinition will be used to determine scope
92+ */
93+ public static <T extends CustomResource <?, Void >> CompositeResourceDefinition createCompositeResourceDefinition (T compositionDefinition , boolean legacy ) { //}, Class functionMixin) {
7594
7695 CompositeResourceDefinition compositeResourceDefinition = new CompositeResourceDefinition ();
7796
7897 CompositeResourceDefinitionSpec spec = new CompositeResourceDefinitionSpec ();
7998 spec .setGroup (compositionDefinition .getGroup ());
8099
81- String namePrefix = "" ;
82100
83- if (compositionDefinition instanceof Namespaced ) {
84- ClaimNames claimNames = new ClaimNames ();
85- claimNames .setKind (compositionDefinition .getKind ());
86- claimNames .setPlural (compositionDefinition .getPlural ());
87- claimNames .setSingular (compositionDefinition .getSingular ());
88- spec .setClaimNames (claimNames );
89- namePrefix = "x" ;
101+ if (legacy ) {
102+ spec .setScope (CompositeResourceDefinitionSpec .Scope .LEGACYCLUSTER );
103+ } else if (compositionDefinition instanceof Namespaced ) {
104+ spec .setScope (CompositeResourceDefinitionSpec .Scope .NAMESPACED );
105+ } else {
106+ spec .setScope (CompositeResourceDefinitionSpec .Scope .CLUSTER );
90107 }
91108
92109 Names names = new Names ();
93- names .setKind (namePrefix + compositionDefinition .getKind ());
94- names .setPlural (namePrefix + compositionDefinition .getPlural ());
95- names .setSingular (namePrefix + compositionDefinition .getSingular ());
110+ names .setKind (compositionDefinition .getKind ());
111+ names .setPlural (compositionDefinition .getPlural ());
112+ names .setSingular (compositionDefinition .getSingular ());
96113 spec .setNames (names );
97114
98115 Versions versions = new Versions ();
@@ -102,7 +119,7 @@ public static <T extends CustomResource<?, Void>> CompositeResourceDefinition cr
102119 versions .setReferenceable (compositionDefinition .isStorage ());
103120 versions .setServed (compositionDefinition .isServed ());
104121
105- compositeResourceDefinition .setMetadata (CrossplaneMetadataBuilder .createMetadata (namePrefix + compositionDefinition .getCRDName ()));
122+ compositeResourceDefinition .setMetadata (CrossplaneMetadataBuilder .createMetadata (compositionDefinition .getCRDName ()));
106123
107124 Schema schema = new Schema ();
108125 schema .setOpenAPIV3Schema (getOpenAPIV3Schema (compositionDefinition .getClass (), CrossplaneCompositeResourceMixin .class ));
0 commit comments