Skip to content

Instantly share code, notes, and snippets.

@TheMasterR
Forked from metral/pulumiWaitFor.ts
Created October 9, 2021 05:32
Show Gist options
  • Save TheMasterR/e0ad88607a97378f9ddf7feae2c2832d to your computer and use it in GitHub Desktop.
Save TheMasterR/e0ad88607a97378f9ddf7feae2c2832d to your computer and use it in GitHub Desktop.
Wait for a resource in pulumi
// Make sure x is a true output so pulumi doesn't try to run this function during preview.
const ingressIP = pulumi.all([x]).apply(async ([x]) => {
const kc = new k8sClient.KubeConfig();
const provider = (this.getProvider('kubernetes::') as any)
const kubeConfig = provider.kubeconfig as pulumi.Output<string>;
const ip = kubeConfig.apply(async (config) => {
kc.loadFromString(config);
const k8sApi = kc.makeApiClient(k8sClient.CoreV1Api);
while (true) {
try {
pulumi.log.info('Waiting for load balancer IP...', this);
const res = await k8sApi.readNamespacedService('istio-ingressgateway', namespace)
return res.body.status.loadBalancer.ingress[0].ip;
} catch (err) {
await new Promise(r => setTimeout(r, 2000));
}
}
});
return ip;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment