mirror of https://github.com/pulumi/pulumi.git
138 lines
4.1 KiB
Python
138 lines
4.1 KiB
Python
# Copyright 2016-2021, 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 typing import Optional, Sequence, Mapping, Any
|
|
|
|
from pulumi import ResourceOptions, Input, Inputs
|
|
|
|
|
|
class ConstructResult:
|
|
"""ConstructResult represents the results of a call to
|
|
`Provider.construct`.
|
|
|
|
"""
|
|
|
|
urn: Input[str]
|
|
"""The URN of the constructed resource."""
|
|
|
|
state: Inputs
|
|
"""Any state that was computed during construction."""
|
|
|
|
def __init__(self, urn: Input[str], state: Inputs) -> None:
|
|
self.urn = urn
|
|
self.state = state
|
|
|
|
|
|
class CheckFailure:
|
|
"""CheckFailure represents a single failure in the results of a call to `Provider.call`."""
|
|
|
|
property: str
|
|
"""The property that failed validation."""
|
|
|
|
reason: str
|
|
"""The reason that the property failed validation."""
|
|
|
|
def __init__(
|
|
self, property: str, reason: str # pylint: disable=redefined-builtin
|
|
) -> None:
|
|
self.property = property
|
|
self.reason = reason
|
|
|
|
|
|
class CallResult:
|
|
"""CallResult represents the results of a call to `Provider.call`."""
|
|
|
|
outputs: Inputs
|
|
"""The outputs returned by the invoked function, if any."""
|
|
|
|
failures: Optional[Sequence[CheckFailure]]
|
|
"""Any validation failures that occurred."""
|
|
|
|
def __init__(
|
|
self, outputs: Inputs, failures: Optional[Sequence[CheckFailure]] = None
|
|
) -> None:
|
|
self.outputs = outputs
|
|
self.failures = failures
|
|
|
|
|
|
class InvokeResult:
|
|
"""InvokeResult represents the results of a call to `Provider.invoke`."""
|
|
|
|
outputs: Mapping[str, Any]
|
|
"""The outputs returned by the invoked function, if any."""
|
|
|
|
failures: Optional[Sequence[CheckFailure]]
|
|
"""Any validation failures that occurred."""
|
|
|
|
def __init__(
|
|
self,
|
|
outputs: Mapping[str, Any],
|
|
failures: Optional[Sequence[CheckFailure]] = None,
|
|
) -> None:
|
|
self.outputs = outputs
|
|
self.failures = failures
|
|
|
|
|
|
class Provider:
|
|
"""Provider represents an object that implements the resources and
|
|
functions for a particular Pulumi package.
|
|
|
|
"""
|
|
|
|
version: str
|
|
schema: Optional[str]
|
|
|
|
def __init__(self, version: str, schema: Optional[str] = None) -> None:
|
|
"""
|
|
:param str version: The version of the provider. Must be valid semver.
|
|
:param Optional[str] schema: The JSON-encoded schema for this provider's package.
|
|
"""
|
|
self.version = version
|
|
self.schema = schema
|
|
|
|
def construct(
|
|
self,
|
|
name: str,
|
|
resource_type: str,
|
|
inputs: Inputs,
|
|
options: Optional[ResourceOptions] = None,
|
|
) -> ConstructResult:
|
|
"""Construct creates a new component resource.
|
|
|
|
:param str name: The name of the resource to create.
|
|
:param str resource_type: The type of the resource to create.
|
|
:param Inputs inputs: The inputs to the resource.
|
|
:param Optional[ResourceOptions] options: The options for the resource.
|
|
"""
|
|
|
|
raise Exception("Subclass of Provider must implement 'construct'")
|
|
|
|
def call(self, token: str, args: Inputs) -> CallResult:
|
|
"""Call calls the indicated function.
|
|
|
|
:param str token: The token of the function to call.
|
|
:param Inputs args: The inputs to the function.
|
|
"""
|
|
|
|
raise Exception(f"Unknown method {token}")
|
|
|
|
def invoke(self, token: str, args: Mapping[str, Any]) -> InvokeResult:
|
|
"""Invoke calls the indicated function.
|
|
|
|
:param str token: The token of the function to call.
|
|
:param Inputs args: The inputs to the function.
|
|
"""
|
|
|
|
raise Exception(f"Unknown function {token}")
|