Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ivanjosipovic/kubernetescrdmodelgen
Kubernetes CustomResourceDefinition Model Generator for .NET
https://github.com/ivanjosipovic/kubernetescrdmodelgen
crd custom-resource-definition dotnet generator kubernetes model
Last synced: 3 months ago
JSON representation
Kubernetes CustomResourceDefinition Model Generator for .NET
- Host: GitHub
- URL: https://github.com/ivanjosipovic/kubernetescrdmodelgen
- Owner: IvanJosipovic
- License: mit
- Created: 2022-01-29T19:47:22.000Z (about 3 years ago)
- Default Branch: alpha
- Last Pushed: 2024-05-22T15:03:07.000Z (9 months ago)
- Last Synced: 2024-05-22T15:28:56.756Z (9 months ago)
- Topics: crd, custom-resource-definition, dotnet, generator, kubernetes, model
- Language: C#
- Homepage: https://www.nuget.org/packages?q=KubernetesCRDModelGen
- Size: 40.5 MB
- Stars: 7
- Watchers: 2
- Forks: 4
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# KubernetesCRDModelGen
[![codecov](https://codecov.io/gh/IvanJosipovic/KubernetesCRDModelGen/branch/alpha/graph/badge.svg?token=Xxq5yw1TtO)](https://codecov.io/gh/IvanJosipovic/KubernetesCRDModelGen)
## What is this?
This project contains components which allow generation of C# Classes/Assemblies from Kubernetes Custom Resource Definitions.
- KubernetesCRDModelGen
- Custom Resource Definition to C# Class/Assembly Generator
- KubernetesCRDModelGen.Tool
- Yaml to C# Class Generator
- KubernetesCRDModelGen.Sync
- Synchronizes Custom Resource Definitions from numerous sources## How to use
- Programmatically
```
var crd = KubernetesYaml.LoadAllFromString(yaml);
var fac = LoggerFactory.Create((x) => { });
var generator = new Generator(fac.CreateLogger());
var code = generator.GenerateCode(crd);
var assembly = generator.GenerateAssembly(crd)
```
- CLI
- Install .Net Tool
- `dotnet tool install --global KubernetesCRDModelGen.Tool --prerelease`
- Run
- `KubernetesCRDModelGen --FolderPath /path/to/yamls --Namespace Namespace`## Published Packages
We publish the following premade packages
| Group | NuGet |
|---|---|
| argoproj.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.argoproj.io/) |
| aws.upbound.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.aws.upbound.io/) |
| azure.com | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.azure.com/) |
| azure.upbound.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.azure.upbound.io/) |
| cnrm.cloud.google.com | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.cnrm.cloud.google.com/) |
| crossplane.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.crossplane.io/) |
| fluxcd.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.fluxcd.io/) |
| gcp.upbound.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.gcp.upbound.io/) |
| helm.crossplane.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.helm.crossplane.io/) |
| istio.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.istio.io/) |
| jetstack.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.jetstack.io/) |
| keda.sh | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.keda.sh/) |
| knative.dev | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.knative.dev/) |
| kubevirt.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.kubevirt.io/) |
| postgresql.cnpg.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.postgresql.cnpg.io/) |
| projectcalico.org | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.projectcalico.org/) |
| secrets-store.csi.x-k8s.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.secrets-store.csi.x-k8s.io) |
| storage.k8s.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.storage.k8s.io) |
| tf.upbound.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.tf.upbound.io/) |
| traefik.io | [Link](https://www.nuget.org/packages/KubernetesCRDModelGen.Models.traefik.io/) |## Type Mappings
| OpenAPIv3 type | Type |
|---|---|
| 'object' with Properties | object |
| 'object' with AdditionalProperties | Dictionary |
| 'object' with x-kubernetes-embedded-type | object |
| 'object' with x-kubernetes-preserve-unknown-fields | object |
| 'object' with x-kubernetes-int-or-string | k8s.Models.IntstrIntOrString |
| 'array' | List |
| 'array' with x-kubernetes-list-type=atomic | List |
| 'array' with x-kubernetes-list-type=map | List |
| 'array' with x-kubernetes-list-type=set | List |
| 'boolean' | boolean |
| 'number' (all formats) | double |
| 'integer' (all formats) | int |
| 'integer' with format=int64 | long |
| 'null' | null |
| 'string' | string |
| 'string' with format=binary | ~~bytes~~ |
| 'string' with format=byte (base64 encoded) | ~~bytes~~ |
| 'string' with format=date | ~~timestamp (google.protobuf.Timestamp)~~ |
| 'string' with format=date-time | ~~timestamp (google.protobuf.Timestamp)~~ |
| 'string' with format=duration | ~~duration (google.protobuf.Duration)~~ |