hack/crossplane/azure-crossplane.yaml (130 lines of code) (raw):

schemaRoot: "../../v2/specs/azure-rest-api-specs/specification" destinationGoModuleFile: go.mod # These two paths are relative to the module path above. typesOutputPath: apis supportedResourcesReport: # Path is relative to the module path, above outputFolder: apis # Path to documentation fragments to inject into the report fragmentPath: ../../docs/v2/crossplane/supported-resources currentRelease: v2.13.0 pipeline: crossplane typeFilters: - action: prune group: definitions name: Expression because: expression is an ARM template construct which doesn't belong in CRDs - action: include group: common matchRequired: false # only triggers for Status types - action: include version: v*20201101 group: network because: Including network for Crossplane - action: include version: v*20200601 group: cache because: Including cache for Crossplane - action: include version: v*20201101preview group: sql because: Including sql - action: include group: sql version: "*v1" because: Including sql v1 common types matchRequired: false # only triggers for Status types - action: include group: sql version: "*v2" because: Including sql v2 common types matchRequired: false # only triggers for Status types - action: prune version: "*preview" because: preview SDK versions are excluded by default - action: prune group: network version: "*" because: Pruning all networking api versions since we don't use them anyway - action: prune group: compute version: "*" because: Pruning all compute api versions since we don't use them anyway - action: prune group: solutions because: There seems to be some issue with embedded JSON objects, specifically "CreateUiDefinition" - action: prune group: kusto because: Some types use OneOf in a way we don't currently handle correctly. - action: prune group: timeseriesinsights because: Some types use OneOf to model inheritance, which we don't currently support. - action: prune group: databoxedge because: Some types use OneOf to model inheritance, which we don't currently support. - action: prune group: resources name: ScopedDeployment because: Terrifying. Also has scoped-resource clashes. - action: prune name: Deployment group: resources because: Terrifying. - action: prune group: compute.admin name: Disk because: "don't know how to intersect types: []github.com/Azure/azure-service-operator/hack/crossplane/apis/compute.admin/v1beta20210901/Disk and (object)" - action: prune group: compute.admin name: DiskListInput because: Disk was pruned - action: prune name: ManagementGroup group: management because: Contains directly recursive type. - action: prune group: datashare because: Some types use OneOf to model inheritance, which we don't currently support. - action: prune group: apimanagement because: Some types use OneOf to model inheritance, which we don't currently support. - action: prune group: automation because: Some types use OneOf to model inheritance, which we don't currently support. - action: prune group: machinelearningservices name: Workspaces_Service* because: Some types use OneOf to model inheritance, which we don't currently support. - action: prune group: resources name: DeploymentScript* because: Some types use OneOf to model inheritance, which we don't currently support. - action: prune group: web because: Some types (SitesSlotsConfig) use OneOf in a way we don't currently handle. Exclude the whole set for now. - action: prune group: hdinsight name: Clusters;Clusters_Extensions because: Uses one-of in a way we don't support - action: prune group: resources name: Tags because: This type is defined recursively. - action: prune group: web because: Some types (SitesSlotsConfig) use OneOf in a way we don't currently handle. Exclude the whole set for now. - action: prune group: compute.extensions because: All other extensions should be removed - action: prune group: costmanagement because: QueryFilter is a self-referential, infinitely recursive type. We can't easily unroll it and controller-gen doesn't support recursive types - action: prune group: azurestackhci because: There are some types in here (Step) that are defined recursively. - action: prune group: securityinsights name: Workspaces_Providers* because: Resource ownership is malformed # Exclusions for packages that currently produce types including AnyType. # TODO: get rid of these, either by chasing the teams generating # weird json or by handling them differently in the generator. anyTypePackages: typeTransformers: # Deal with stuff that exists on ARM resources but doesn't make sense on CRDs - group: definitions name: NumberOrExpression because: NumberOrExpression is an ARM template artifact that doesn't make sense in CRDs target: name: float matchRequired: false # TODO: Remove this if/when we actually require it - name: "*" property: Tags ifType: map: key: name: string value: name: any target: map: key: name: string value: name: string because: Tags is defined as map[string]interface{} when it should be map[string]string # Deal with readonly properties that were not properly pruned in the JSON schema - name: ResourceIdentity group: sql property: UserAssignedIdentities remove: true because: The UserAssignedIdentities property is enitrely readOnly but is modelled poorly in the JSON schemas. See discussion on https://github.com/Azure/azure-resource-manager-schemas/issues/835 status: overrides: [ { # give the common types their own namespace basePath: "common-types/resource-management", namespace: "Microsoft.Common", }, { # force the namespace here or it can fall foul of the sibling-name-collision test basePath: "sql/resource-manager/common", namespace: "Microsoft.Sql", }, { # force the namespace here or it can fall foul of the sibling-name-collision test basePath: "security/resource-manager/common", namespace: "Microsoft.Security", }, { # force the namespace here or it can fall foul of the sibling-name-collision test basePath: "eventhub/resource-manager/common", namespace: "Microsoft.EventHub", }, { # force the namespace here or it can fall foul of the sibling-name-collision test basePath: "securityinsights/resource-manager/common", namespace: "Microsoft.SecurityInsights", }, # the rest of the configuration below is copied from the ARM schema repo: # https://github.com/Azure/azure-resource-manager-schemas/blob/master/generator/autogenlist.ts { basePath: "blueprint/resource-manager", namespace: "Microsoft.Blueprint", resourceConfig: [ { type: "blueprintAssignments", scopes: ScopeType.Subcription | ScopeType.ManagementGroup, }, { type: "blueprints", scopes: ScopeType.Subcription | ScopeType.ManagementGroup, }, { type: "blueprints/artifacts", scopes: ScopeType.Subcription | ScopeType.ManagementGroup, }, { type: "blueprints/versions", scopes: ScopeType.Subcription | ScopeType.ManagementGroup, }, ], }, { basePath: "customproviders/resource-manager", namespace: "Microsoft.CustomProviders", resourceConfig: [{ type: "associations", scopes: ScopeType.Extension }], }, { basePath: "consumption/resource-manager", namespace: "Microsoft.Consumption", resourceConfig: [ { type: "budgets", scopes: ScopeType.Subcription | ScopeType.ResourceGroup | ScopeType.Extension, }, ], }, { basePath: "digitaltwins/resource-manager", resourceConfig: [{ type: "integrationResources", scopes: ScopeType.Extension }], }, { basePath: "deviceprovisioningservices/resource-manager", suffix: "Provisioning", }, { basePath: "frontdoor/resource-manager", suffix: "FrontDoor" }, { basePath: "eventgrid/resource-manager", resourceConfig: [ { type: "eventSubscriptions", scopes: ScopeType.Extension | ScopeType.Subcription | ScopeType.ResourceGroup, }, ], }, { basePath: "machinelearning/resource-manager", postProcessor: machineLearningPostProcessor, }, { basePath: "managednetwork/resource-manager", resourceConfig: [{ type: "scopeAssignments", scopes: ScopeType.Subcription }], }, { basePath: "policyinsights/resource-manager", resourceConfig: [ { type: "remediations", scopes: ScopeType.Subcription | ScopeType.ResourceGroup | ScopeType.ManagementGroup, }, ], }, { basePath: "resources/resource-manager", resourceConfig: [ { type: "deployments", scopes: ScopeType.Tenant | ScopeType.ManagementGroup | ScopeType.Subcription | ScopeType.ResourceGroup, }, { type: "tags", scopes: ScopeType.ManagementGroup | ScopeType.Subcription | ScopeType.ResourceGroup | ScopeType.Extension, }, ], postProcessor: resourcesPostProcessor, }, { basePath: "storSimple1200Series/resource-manager", suffix: "1200" }, { basePath: "storsimple8000series/resource-manager", suffix: "8000" }, { basePath: "softwareplan/resource-manager", resourceConfig: [{ type: "hybridUseBenefits", scopes: ScopeType.Extension }], }, ] objectModelConfiguration: sql: 2020-11-01-preview: Server: $export: true $supportedFrom: "-" Servers_Database: $export: true $supportedFrom: "-" 2021-11-01: Server: $export: true $supportedFrom: "-" cache: 2020-06-01: Redis: $export: true $supportedFrom: "-"