pulumi/sdk/python/lib/test/langhost/component_resource_list_of_providers/__main__.py

72 lines
3 KiB
Python

# Copyright 2016-2018, Pulumi Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from pulumi import ProviderResource, CustomResource, ComponentResource, ResourceOptions
class Provider(ProviderResource):
def __init__(self, name, opts=None):
ProviderResource.__init__(self, "test", name, {}, opts)
class Resource(CustomResource):
def __init__(self, name, create_children, opts=None):
CustomResource.__init__(self, "test:index:Resource", name, {}, opts)
if create_children is not None:
create_children(name, self)
class Component(ComponentResource):
def __init__(self, name, create_children, opts=None):
ComponentResource.__init__(self, "test:index:Component", name, {}, opts)
create_children(name, self)
def create_resources(name, create_children=None, parent=None):
# Use all parent defaults.
Resource(f"{name}/r0", create_children, ResourceOptions(parent=parent))
# Override protect
Resource(f"{name}/r1", create_children, ResourceOptions(parent=parent, protect=False))
Resource(f"{name}/r2", create_children, ResourceOptions(parent=parent, protect=True))
# Override provider
prov = Provider(f"{name}-p", ResourceOptions(parent=parent))
Resource(f"{name}/r3", create_children, ResourceOptions(parent=parent, provider=prov))
def create_components(name, create_children=None, parent=None):
# Use all parent defaults.
Component(f"{name}/c0", create_children, ResourceOptions(parent=parent))
# Override protect
Component(f"{name}/c1", create_children, ResourceOptions(parent=parent, protect=False))
Component(f"{name}/c2", create_children, ResourceOptions(parent=parent, protect=True))
# Override providers
providers = [Provider(f"{name}-p", ResourceOptions(parent=parent))]
Component(f"{name}/c3", create_children, ResourceOptions(parent=parent, providers=providers))
# Create default (unparent) resources
create_resources("unparented")
# Create singly-nested resources
create_components("single-nest", lambda name, parent: create_resources(name, None, parent))
# Create doubly-nested resources
create_components("double-nest", lambda name, parent: create_components(
name,
lambda name, parent: create_resources(name, None, parent),
parent))
# Create doubly-nested resources parented to other resources
create_components("double-nest-2", lambda name, parent: create_resources(
name,
lambda name, parent: create_resources(name, None, parent),
parent))