pulumi/tests/testdata/codegen/components-pp/python/exampleComponent.py

65 lines
2.4 KiB
Python

import pulumi
from pulumi import Input
from simpleComponent import SimpleComponent
from typing import Optional, Dict, TypedDict, Any
import pulumi_random as random
class DeploymentZones(TypedDict, total=False):
zone: Input[str]
class GithubApp(TypedDict, total=False):
id: Input[str]
keyBase64: Input[str]
webhookSecret: Input[str]
class Servers(TypedDict, total=False):
name: Input[str]
class ExampleComponentArgs(TypedDict, total=False):
input: Input[str]
cidrBlocks: Input[Dict[str, str]]
githubApp: Input[GithubApp]
servers: Input[list(Servers)]
deploymentZones: Input[Dict[str, DeploymentZones]]
ipAddress: Input[list[int]]
class ExampleComponent(pulumi.ComponentResource):
def __init__(self, name: str, args: ExampleComponentArgs, opts:Optional[pulumi.ResourceOptions] = None):
super().__init__("components:index:ExampleComponent", name, args, opts)
password = random.RandomPassword(f"{name}-password",
length=16,
special=True,
override_special=args["input"],
opts = pulumi.ResourceOptions(parent=self))
github_password = random.RandomPassword(f"{name}-githubPassword",
length=16,
special=True,
override_special=args["githubApp"]["webhookSecret"],
opts = pulumi.ResourceOptions(parent=self))
# Example of iterating a list of objects
server_passwords = []
for range in [{"value": i} for i in range(0, len(args["servers"]))]:
server_passwords.append(random.RandomPassword(f"{name}-serverPasswords-{range['value']}",
length=16,
special=True,
override_special=args["servers"][range["value"]]["name"],
opts = pulumi.ResourceOptions(parent=self)))
# Example of iterating a map of objects
zone_passwords = []
for range in [{"key": k, "value": v} for [k, v] in enumerate(args["deploymentZones"])]:
zone_passwords.append(random.RandomPassword(f"{name}-zonePasswords-{range['key']}",
length=16,
special=True,
override_special=range["value"]["zone"],
opts = pulumi.ResourceOptions(parent=self)))
simple_component = SimpleComponent(f"{name}-simpleComponent", opts = pulumi.ResourceOptions(parent=self))
self.result = password.result
self.register_outputs({
'result': password.result
})