diff --git a/artifacts/aws-test/s3-bucket.yaml b/artifacts/aws-test/s3-bucket.yaml new file mode 100644 index 0000000..8a4f378 --- /dev/null +++ b/artifacts/aws-test/s3-bucket.yaml @@ -0,0 +1,7 @@ +apiVersion: aws.hykube.io/v1 +kind: aws-s3-bucket +metadata: + name: test-bucket +spec: + bucket: "my-s3-bucket" + acl: "private" diff --git a/docs/local-development.md b/docs/local-development.md index eb8455c..fbdb410 100644 --- a/docs/local-development.md +++ b/docs/local-development.md @@ -80,26 +80,33 @@ You should now be able to create the resource type `Provider` which is the resou ```shell kubectl create -f artifacts/providers/aws.yaml -# outputs provider "aws" created +# provider "aws" created ``` You can then get this resource by running: ```shell kubectl get provider aws -o custom-columns=Name:.metadata.name,status:.status,CreatedAt:.metadata.creationTimestamp -#outputs # Name status CreatedAt # aws adding CRDs 2024-09-12T09:15:29Z ``` -After the provider is initialized, you should see status `ready`: +After the provider is initialized and all ~1500 CRDs are added (can take a while), you should see status `ready`: ```shell kubectl get provider aws -o custom-columns=Name:.metadata.name,status:.status,CreatedAt:.metadata.creationTimestamp -#outputs # Name status CreatedAt # aws ready 2024-09-12T09:15:29Z ``` +## Deploy locally resources + +Once the provider is ready, you can add a test AWS S3 bucket: + +```shell +kubectl create -f artifacts/aws-test/s3-bucket.yaml +# aws-s3-bucket.aws.hykube.io/test-bucket created +``` + ## Local binary run Generate certificates for CA and test user `development` in the superuser group `system:masters` for local testing: diff --git a/pkg/registry/hykube/provider/hashicorp.go b/pkg/registry/hykube/provider/hashicorp.go index dda7b9c..1973cad 100644 --- a/pkg/registry/hykube/provider/hashicorp.go +++ b/pkg/registry/hykube/provider/hashicorp.go @@ -269,7 +269,8 @@ func (h *hashicorpProvider) addCDRs(schemaResponse *providers.GetSchemaResponse, crdClient, err := crd_clientset.NewForConfig(config) CRDGroup := provider.Name + ".hykube.io" - CRDVersion := "v1alpha1" + CRDVersion := "v1" + trueVal := true if err != nil { return err @@ -299,9 +300,11 @@ func (h *hashicorpProvider) addCDRs(schemaResponse *providers.GetSchemaResponse, // TODO: handle nested array types e.g. E0912 13:04:45.166040 1 hashicorp.go:364] "cannot add resource type:aws_cloudfront_distribution" err="CustomResourceDefinition.apiextensions.k8s.io \"aws-cloudfront-distributions.aws.hykube.io\" is invalid: [spec.validation.openAPIV3Schema.properties[trusted_key_groups].items.properties[items].items: Required value: must be specified, spec.validation.openAPIV3Schema.properties[trusted_signers].items.properties[items].items: Required value: must be specified]" Items: &apiextensionv1.JSONSchemaPropsOrArray{ Schema: &apiextensionv1.JSONSchemaProps{ - Type: attrItemType, + Type: attrItemType, + XPreserveUnknownFields: &trueVal, }, }, + XPreserveUnknownFields: &trueVal, } } else { // TODO handle array of arrays... @@ -310,7 +313,8 @@ func (h *hashicorpProvider) addCDRs(schemaResponse *providers.GetSchemaResponse, attrItemPropertyType := h.attributeType(&attrItemPropV) // TODO: address nested array types attrItemProperties[attrItemPropK] = apiextensionv1.JSONSchemaProps{ - Type: attrItemPropertyType, + Type: attrItemPropertyType, + XPreserveUnknownFields: &trueVal, } } @@ -318,8 +322,9 @@ func (h *hashicorpProvider) addCDRs(schemaResponse *providers.GetSchemaResponse, Type: attributeType, Items: &apiextensionv1.JSONSchemaPropsOrArray{ Schema: &apiextensionv1.JSONSchemaProps{ - Type: "object", - Properties: attrItemProperties, + Type: "object", + Properties: attrItemProperties, + XPreserveUnknownFields: &trueVal, }, }, } @@ -327,7 +332,8 @@ func (h *hashicorpProvider) addCDRs(schemaResponse *providers.GetSchemaResponse, } else { // TODO: define fields for object type properties[attrK] = apiextensionv1.JSONSchemaProps{ - Type: attributeType, + Type: attributeType, + XPreserveUnknownFields: &trueVal, } } } @@ -340,11 +346,13 @@ func (h *hashicorpProvider) addCDRs(schemaResponse *providers.GetSchemaResponse, { Name: CRDVersion, Storage: true, + Served: true, Schema: &apiextensionv1.CustomResourceValidation{ OpenAPIV3Schema: &apiextensionv1.JSONSchemaProps{ - Type: "object", - Required: requiredFields, - Properties: properties, + Type: "object", + Required: requiredFields, + Properties: properties, + XPreserveUnknownFields: &trueVal, }, }, },