Hi, I'm just ramping up on Pulumi, and using the J...
# java
f
Hi, I'm just ramping up on Pulumi, and using the Java SDK (actually via the Kotlin wrapper), and am trying to understand the normal steps of publishing a Java SDK for a provider. For instance, the Terraform bridge provider seems to, by default, not include Java (https://github.com/pulumi/pulumi-tf-provider-boilerplate/blob/main/Makefile#L58). Which seems surprising? My immediate question is around actually publishing a Java SDK for the third-party Cockroach DB provider, which IIUC, is generating it, just not publishing it - see it publishing the other SDKs here: https://github.com/lbrlabs/pulumi-cockroach/blob/373e25d04065cb97818e239c20fe73ee2796157b/.github/workflows/main.yml#L237.
And underlying question I have is - what effort does every provider do when a new language SDK wants to be added to Pulumi (e.g. if say C++ was desired)? I think that would help me understand how it works.
q
It's a bit convoluted process and works in an inverted direction than what you think. Providers expose schema.json files and each language SDK has it's own codegen that generates provider packages in said language out of these files.
By the way, you mentioned Kotlin wrapper, do you mean: https://github.com/VirtuslabRnD/pulumi-kotlin ?
I think the general direction Pulumi team is taking (disclaimer: I'm not a Pulumi team member, I lead pulumi-scala team at VirtusLab) is that code generators are going to be usable from language plugins so the whole mess with static setup and code generation will go away and generating a provider will be as easy as calling the language plugin's codegen capability against a schema.json file.
f
That does seem like a nicer world, with some layers of cacheing to avoid generation too frequently.
Thanks for the info!