Skip to content

Commit

Permalink
refactor: openshift-model-machine generated from OpenAPI schemas
Browse files Browse the repository at this point in the history
Signed-off-by: Marc Nuri <marc@marcnuri.com>
  • Loading branch information
manusa authored Sep 23, 2024
1 parent c102bb6 commit 17939f6
Show file tree
Hide file tree
Showing 89 changed files with 7,020 additions and 1,275 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ generate-openapi-classes:
cd kubernetes-model-generator/openshift-model-operatorhub && mvn -Pgenerate clean install
cd kubernetes-model-generator/openshift-model-console && mvn -Pgenerate clean install
cd kubernetes-model-generator/openshift-model-autoscaling && mvn -Pgenerate clean install
cd kubernetes-model-generator/openshift-model-machine && mvn -Pgenerate clean install

# Legacy generation of the model: TODO: remove
.PHONY: generate-model-legacy
Expand Down
1 change: 0 additions & 1 deletion kubernetes-model-generator/generateModel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ ABSOLUTE_BASEDIR=$(realpath "$BASEDIR")
# Array for all existing modules
declare -a modules=(
"openshift-model-hive"
"openshift-model-machine"
"openshift-model-installer"
"openshift-model-machineconfig"
"openshift-model-monitoring"
Expand Down
8 changes: 8 additions & 0 deletions kubernetes-model-generator/openapi/generator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ package main
import (
"github.com/getkin/kin-openapi/openapi3"
openshiftauthorizationv1 "github.com/openshift/api/authorization/v1"
openshiftmachinev1 "github.com/openshift/api/machine/v1"
openshiftmachinev1alpha1 "github.com/openshift/api/machine/v1alpha1"
openshiftsecurityv1 "github.com/openshift/api/security/v1"
admissionV1 "k8s.io/api/admission/v1"
admissionV1Beta1 "k8s.io/api/admission/v1beta1"
Expand Down Expand Up @@ -140,6 +142,12 @@ func main() {
reflect.TypeOf(openshiftauthorizationv1.SubjectAccessReviewResponse{}),
reflect.TypeOf(openshiftauthorizationv1.ResourceAccessReviewResponse{}),
}, "openshift-authorization"),
// Provider Specs are not included in OpenAPI https://docs.openshift.com/container-platform/4.16/machine_management/index.html#machine-mgmt-intro-managing-compute_overview-of-machine-management
NewPathSchema(map[reflect.Type]ApiVersion{
reflect.TypeOf(openshiftmachinev1alpha1.OpenstackProviderSpec{}): {false, openshiftmachinev1alpha1.GroupVersion.String(), "openstackproviderspecs", true},
reflect.TypeOf(openshiftmachinev1.NutanixMachineProviderConfig{}): {false, openshiftmachinev1.GroupVersion.String(), "nutanixmachineproviderconfigs", true},
reflect.TypeOf(openshiftmachinev1.PowerVSMachineProviderConfig{}): {false, openshiftmachinev1.GroupVersion.String(), "powervsmachineproviderconfigs", true},
}, "openshift-machine"),
// OpenAPI spec contains incomplete information for SecurityContextConstraints (only nested inline until certain level)
NewPathSchema(map[reflect.Type]ApiVersion{
reflect.TypeOf(openshiftsecurityv1.SecurityContextConstraintsList{}): {true, openshiftsecurityv1.GroupVersion.String(), "securitycontextconstraints", false},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"components":{"schemas":{"com.github.openshift.api.machine.v1.LoadBalancerReference":{"properties":{"name":{"type":"string"},"type":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixCategory":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixFailureDomainReference":{"properties":{"name":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixGPU":{"properties":{"deviceID":{"format":"int32","type":"integer"},"name":{"type":"string"},"type":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixMachineProviderConfig":{"properties":{"apiVersion":{"type":"string"},"bootType":{"type":"string"},"categories":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixCategory"},"type":"array"},"cluster":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixResourceIdentifier"},"credentialsSecret":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"dataDisks":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixVMDisk"},"type":"array"},"failureDomain":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixFailureDomainReference"},"gpus":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixGPU"},"type":"array"},"image":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixResourceIdentifier"},"kind":{"type":"string"},"memorySize":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"},"metadata":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"project":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixResourceIdentifier"},"subnets":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixResourceIdentifier"},"type":"array"},"systemDiskSize":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"},"userDataSecret":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"vcpuSockets":{"format":"int32","type":"integer"},"vcpusPerSocket":{"format":"int32","type":"integer"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixResourceIdentifier":{"properties":{"name":{"type":"string"},"type":{"type":"string"},"uuid":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixStorageResourceIdentifier":{"properties":{"type":{"type":"string"},"uuid":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixVMDisk":{"properties":{"dataSource":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixResourceIdentifier"},"deviceProperties":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixVMDiskDeviceProperties"},"diskSize":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"},"storageConfig":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixVMStorageConfig"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixVMDiskDeviceProperties":{"properties":{"adapterType":{"type":"string"},"deviceIndex":{"format":"int32","type":"integer"},"deviceType":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1.NutanixVMStorageConfig":{"properties":{"diskMode":{"type":"string"},"storageContainer":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixStorageResourceIdentifier"}},"type":"object"},"com.github.openshift.api.machine.v1.PowerVSMachineProviderConfig":{"properties":{"apiVersion":{"type":"string"},"credentialsSecret":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.PowerVSSecretReference"},"image":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.PowerVSResource"},"keyPairName":{"type":"string"},"kind":{"type":"string"},"loadBalancers":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.LoadBalancerReference"},"type":"array"},"memoryGiB":{"format":"int32","type":"integer"},"metadata":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"network":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.PowerVSResource"},"processorType":{"type":"string"},"processors":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"serviceInstance":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.PowerVSResource"},"systemType":{"type":"string"},"userDataSecret":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.PowerVSSecretReference"}},"type":"object"},"com.github.openshift.api.machine.v1.PowerVSResource":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"regex":{"type":"string"},"type":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1.PowerVSSecretReference":{"properties":{"name":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.AdditionalBlockDevice":{"properties":{"name":{"type":"string"},"sizeGiB":{"format":"int32","type":"integer"},"storage":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.BlockDeviceStorage"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.AddressPair":{"properties":{"ipAddress":{"type":"string"},"macAddress":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.BlockDeviceStorage":{"properties":{"type":{"type":"string"},"volume":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.BlockDeviceVolume"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.BlockDeviceVolume":{"properties":{"availabilityZone":{"type":"string"},"type":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.Filter":{"properties":{"adminStateUp":{"type":"boolean"},"description":{"type":"string"},"id":{"type":"string"},"limit":{"format":"int32","type":"integer"},"marker":{"type":"string"},"name":{"type":"string"},"notTags":{"type":"string"},"notTagsAny":{"type":"string"},"projectId":{"type":"string"},"shared":{"type":"boolean"},"sortDir":{"type":"string"},"sortKey":{"type":"string"},"status":{"type":"string"},"tags":{"type":"string"},"tagsAny":{"type":"string"},"tenantId":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.FixedIPs":{"properties":{"ipAddress":{"type":"string"},"subnetID":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.NetworkParam":{"properties":{"filter":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.Filter"},"fixedIp":{"type":"string"},"noAllowedAddressPairs":{"type":"boolean"},"portSecurity":{"type":"boolean"},"portTags":{"items":{"type":"string"},"type":"array"},"profile":{"additionalProperties":{"type":"string"},"type":"object"},"subnets":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.SubnetParam"},"type":"array"},"uuid":{"type":"string"},"vnicType":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.OpenstackProviderSpec":{"properties":{"additionalBlockDevices":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.AdditionalBlockDevice"},"type":"array"},"apiVersion":{"type":"string"},"availabilityZone":{"type":"string"},"cloudName":{"type":"string"},"cloudsSecret":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"configDrive":{"type":"boolean"},"flavor":{"type":"string"},"floatingIP":{"type":"string"},"image":{"type":"string"},"keyName":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"networks":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.NetworkParam"},"type":"array"},"ports":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.PortOpts"},"type":"array"},"primarySubnet":{"type":"string"},"rootVolume":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.RootVolume"},"securityGroups":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.SecurityGroupParam"},"type":"array"},"serverGroupID":{"type":"string"},"serverGroupName":{"type":"string"},"serverMetadata":{"additionalProperties":{"type":"string"},"type":"object"},"sshUserName":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"trunk":{"type":"boolean"},"userDataSecret":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.PortOpts":{"properties":{"adminStateUp":{"type":"boolean"},"allowedAddressPairs":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.AddressPair"},"type":"array"},"description":{"type":"string"},"fixedIPs":{"items":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.FixedIPs"},"type":"array"},"hostID":{"type":"string"},"macAddress":{"type":"string"},"nameSuffix":{"type":"string"},"networkID":{"type":"string"},"portSecurity":{"type":"boolean"},"profile":{"additionalProperties":{"type":"string"},"type":"object"},"projectID":{"type":"string"},"securityGroups":{"items":{"type":"string"},"type":"array"},"tags":{"items":{"type":"string"},"type":"array"},"tenantID":{"type":"string"},"trunk":{"type":"boolean"},"vnicType":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.RootVolume":{"properties":{"availabilityZone":{"type":"string"},"deviceType":{"type":"string"},"diskSize":{"format":"int32","type":"integer"},"sourceType":{"type":"string"},"sourceUUID":{"type":"string"},"volumeType":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.SecurityGroupFilter":{"properties":{"description":{"type":"string"},"id":{"type":"string"},"limit":{"format":"int32","type":"integer"},"marker":{"type":"string"},"name":{"type":"string"},"notTags":{"type":"string"},"notTagsAny":{"type":"string"},"projectId":{"type":"string"},"sortDir":{"type":"string"},"sortKey":{"type":"string"},"tags":{"type":"string"},"tagsAny":{"type":"string"},"tenantId":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.SecurityGroupParam":{"properties":{"filter":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.SecurityGroupFilter"},"name":{"type":"string"},"uuid":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.SubnetFilter":{"properties":{"cidr":{"type":"string"},"description":{"type":"string"},"enableDhcp":{"type":"boolean"},"gateway_ip":{"type":"string"},"id":{"type":"string"},"ipVersion":{"format":"int32","type":"integer"},"ipv6AddressMode":{"type":"string"},"ipv6RaMode":{"type":"string"},"limit":{"format":"int32","type":"integer"},"marker":{"type":"string"},"name":{"type":"string"},"networkId":{"type":"string"},"notTags":{"type":"string"},"notTagsAny":{"type":"string"},"projectId":{"type":"string"},"sortDir":{"type":"string"},"sortKey":{"type":"string"},"subnetpoolId":{"type":"string"},"tags":{"type":"string"},"tagsAny":{"type":"string"},"tenantId":{"type":"string"}},"type":"object"},"com.github.openshift.api.machine.v1alpha1.SubnetParam":{"properties":{"filter":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.SubnetFilter"},"portSecurity":{"type":"boolean"},"portTags":{"items":{"type":"string"},"type":"array"},"uuid":{"type":"string"}},"type":"object"},"io.k8s.api.core.v1.LocalObjectReference":{"properties":{"name":{"type":"string"}},"type":"object"},"io.k8s.api.core.v1.SecretReference":{"properties":{"name":{"type":"string"},"namespace":{"type":"string"}},"type":"object"},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"properties":{"Format":{"type":"string"}},"type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"properties":{"-":{"type":"string"}},"type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"properties":{"apiVersion":{"type":"string"},"fieldsType":{"type":"string"},"fieldsV1":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"type":"string"},"operation":{"type":"string"},"subresource":{"type":"string"},"time":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}},"type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"properties":{"annotations":{"additionalProperties":{"type":"string"},"type":"object"},"creationTimestamp":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"format":"int64","type":"integer"},"deletionTimestamp":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"items":{"type":"string"},"type":"array"},"generateName":{"type":"string"},"generation":{"format":"int64","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"managedFields":{"items":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"},"type":"array"},"name":{"type":"string"},"namespace":{"type":"string"},"ownerReferences":{"items":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"type":"array"},"resourceVersion":{"type":"string"},"selfLink":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"properties":{"apiVersion":{"type":"string"},"blockOwnerDeletion":{"type":"boolean"},"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"properties":{"Time":{"type":"string"}},"type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"properties":{"IntVal":{"format":"int32","type":"integer"},"StrVal":{"type":"string"},"Type":{"format":"int64","type":"integer"}},"type":"object"}}},"info":{"title":"openshift-machine","version":"0.0.0"},"openapi":"3.0.0","paths":{"/apis/machine.openshift.io/v1/namespaces/{namespace}/nutanixmachineproviderconfigs/{name}":{"get":{"parameters":[{"in":"path","name":"namespace","required":true},{"in":"path","name":"name","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.NutanixMachineProviderConfig"}}},"description":"OK"},"default":{"description":""}},"x-kubernetes-group-version-kind":{"group":"machine.openshift.io","kind":"NutanixMachineProviderConfig","version":"v1"}}},"/apis/machine.openshift.io/v1/namespaces/{namespace}/powervsmachineproviderconfigs/{name}":{"get":{"parameters":[{"in":"path","name":"namespace","required":true},{"in":"path","name":"name","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1.PowerVSMachineProviderConfig"}}},"description":"OK"},"default":{"description":""}},"x-kubernetes-group-version-kind":{"group":"machine.openshift.io","kind":"PowerVSMachineProviderConfig","version":"v1"}}},"/apis/machine.openshift.io/v1alpha1/namespaces/{namespace}/openstackproviderspecs/{name}":{"get":{"parameters":[{"in":"path","name":"namespace","required":true},{"in":"path","name":"name","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/com.github.openshift.api.machine.v1alpha1.OpenstackProviderSpec"}}},"description":"OK"},"default":{"description":""}},"x-kubernetes-group-version-kind":{"group":"machine.openshift.io","kind":"OpenstackProviderSpec","version":"v1alpha1"}}}}}
27 changes: 0 additions & 27 deletions kubernetes-model-generator/openshift-model-machine/Makefile

This file was deleted.

Loading

0 comments on commit 17939f6

Please sign in to comment.