pulumi/tests/testdata/codegen/overlay-supported-languages/schema.json

157 lines
3.1 KiB
JSON
Raw Permalink Normal View History

Add ability to constrain supported languages of resource and function overlays (#16579) The existing overlays (e.g. Chart v3 in Kubernetes, or CallbackFunction in AWS) are not available in every language Pulumi supports. This often confuses users because the generated docs include all languages Pulumi supports (e.g. see https://github.com/pulumi/pulumi-kubernetes/issues/2181). To solve that problem, this change adds a new optional parameter to the schema that allows configuring the languages an overlay (resource or function) supports. To support this in docsgen the existing Language Chooser (`LangChooserLanguages`) of resources is made configurable and extended to functions. Note: This doesn't support resource methods right now. They'll need extra handling because and overlay resource method might not support all of the languages its resource supports. I'll tackle this in a follow up PR. Here's a screenshot of how this will look like for the Helm v3 chart for example: <img width="1046" alt="Screenshot 2024-07-01 at 16 11 23" src="https://github.com/pulumi/pulumi/assets/2453580/b1a1365a-6dee-4099-829a-2859639a4c8c"> The PR contains the following commits. I'd recommend to look at the first three ones and then check the regenerated golden files in the last one: - **Add schema parameter to constrain supported languages for overlays** - **Update developer docs and changelog** - **Refactor LanguageChooser and always pass supported languages** - **Regenerate testdata** relates to #13231
2024-07-09 14:54:50 +00:00
{
"version": "0.0.1",
"name": "example",
"types": {
"example::ConfigMap": {
"properties": {
"config": {
"type": "string"
}
},
"type": "object"
},
"example::EnumOverlay": {
"type": "string",
"enum": [
{
"name": "SomeEnumValue",
"value": "SOME_ENUM_VALUE"
}
],
"isOverlay": true
},
"example::ConfigMapOverlay": {
"isOverlay": true,
"properties": {
"config": {
"type": "string"
}
},
"type": "object"
}
},
"resources": {
"example::Resource": {
"properties": {
"foo": {
"$ref": "#/types/example::ConfigMapOverlay"
},
"bar": {
"$ref": "#/types/example::EnumOverlay"
}
},
"inputProperties": {
"foo": {
"$ref": "#/types/example::ConfigMapOverlay"
},
"bar": {
"$ref": "#/types/example::EnumOverlay"
}
},
"type": "object"
},
"example::OverlayResource": {
"isOverlay": true,
"properties": {
"foo": {
"$ref": "#/types/example::ConfigMapOverlay"
},
"bar": {
"$ref": "#/types/example::EnumOverlay"
}
},
"inputProperties": {
"foo": {
"$ref": "#/types/example::ConfigMapOverlay"
},
"bar": {
"$ref": "#/types/example::EnumOverlay"
}
},
"type": "object"
},
"example::OverlayResourceConstrainedLanguages": {
"isOverlay": true,
"overlaySupportedLanguages": [
"go",
"nodejs",
"python"
],
"properties": {
"foo": {
"$ref": "#/types/example::ConfigMapOverlay"
},
"bar": {
"$ref": "#/types/example::EnumOverlay"
}
},
"inputProperties": {
"foo": {
"$ref": "#/types/example::ConfigMapOverlay"
},
"bar": {
"$ref": "#/types/example::EnumOverlay"
}
},
"type": "object"
}
},
"functions": {
"example::Function": {
"inputs": {
"properties": {
"arg1": {
"type": "string"
}
}
},
"outputs": {
"properties": {
"result": {
"type": "string"
}
}
}
},
"example::OverlayFunction": {
"isOverlay": true,
"inputs": {
"properties": {
"arg1": {
"type": "string"
}
}
},
"outputs": {
"properties": {
"result": {
"type": "string"
}
}
}
},
"example::OverlayFunctionConstrainedLanguages": {
"isOverlay": true,
"overlaySupportedLanguages": [
"go",
"nodejs",
"python"
],
"inputs": {
"properties": {
"arg1": {
"type": "string"
}
}
},
"outputs": {
"properties": {
"result": {
"type": "string"
}
}
}
}
}
}