https://pulumi.com logo
#dotnet
Title
# dotnet
n

numerous-artist-1705

07/24/2020, 3:26 PM
I've also published
Pulumi.FSharp.Kubernetes
on NuGet... but that is mostly to reserve the name as I was getting a bunch of errors when generating. I think @wet-noon-14291 worked a bit on it so he'll probably have it already working.
w

wet-noon-14291

07/24/2020, 4:47 PM
I hope I have :). There might be some necessary changes, I’ll check. I hope to get some time this week, but not sure.
n

numerous-artist-1705

07/24/2020, 4:52 PM
I tried to briefly generate some stuff today, but it was a mess! I spent hours trying to resolve manually conflicts that were generated. As the K8s library uses XXX.YYY for the resource namespaces, we may want to declare namespace Pulumi.FSharp.XXX and then module YYY; nested modules can't have partial namespace, alas. I'm sure you already had this issue.
But I couldn't really figure out how to create an AST with multiple namespaces per file. Didn't spend THAT much time, but it doesn't look really straightforward
w

wet-noon-14291

07/24/2020, 5:58 PM
Yeah, I have that sort of solved for kubernetes... but it would be good for a “general” solution to it. The reason is that all the different resources exists in different versions in the kubernetes space, and we must support them all as I see it.
Probably need to make some adjustments to make it work with your code.
👍 1
PR is ready for first version, this will make it possible to write k8s code like https://github.com/UnoSD/Pulumi.FSharp.Extensions/blob/0bd3c45ef18977aa7b400c91dd5d24dde2582aed/samples/KubernetesSample/Program.fs#L36-L63
Copy code
let appDeployCe = 
    deployment {
      name "MyDeploy"
      deploymentSpec {
        replicas 1
        LabelSelectorArgs(
          MatchLabels = inputMap ["app", input "nginx" ] 
        )
        podTemplateSpec {
          ObjectMetaArgs(Labels = appLabels)
          podSpec {
            containers [
              input 
                (ContainerArgs(
                  Name = input "nginx",
                  Image = input "nginx",
                  Ports = inputList [
                    input 
                      (ContainerPortArgs(
                        ContainerPortValue = input 80
                      ))
                  ])
                )
            ]
          }
        }
      }
    }
There are a lot of improvement to be done, but this is a good start.