Skip to content

Commit

Permalink
Fix Python YAML SDK
Browse files Browse the repository at this point in the history
The generated function calls in the YAML SDK were not passing in
the expected parameters for most resource types. Fixed the
function calls to pass all of the expected kwargs.
  • Loading branch information
lblackstone committed Apr 26, 2019
1 parent 14b1a75 commit 210e1c8
Show file tree
Hide file tree
Showing 176 changed files with 363 additions and 350 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
### Bug fixes

- Fix Helm repo quoting for Windows (https://github.com/pulumi/pulumi-kubernetes/pull/540)
- Fix Python YAML SDK (https://github.com/pulumi/pulumi-kubernetes/pull/545)

## 0.22.2 (April 11, 2019)

Expand Down
2 changes: 1 addition & 1 deletion pkg/gen/python-templates/kind.py.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ from ... import tables

class {{Kind}}(pulumi.CustomResource):
{{{Comment}}}
def __init__(self, __name__, __opts__=None{{#Properties}}, {{LanguageName}}=None{{/Properties}}):
def __init__(self, __name__, __opts__=None{{#Properties}}, {{LanguageName}}=None{{/Properties}}, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
12 changes: 9 additions & 3 deletions pkg/gen/python-templates/yaml.py.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ class ConfigFile(pulumi.ComponentResource):
:param str name: A name for a resource.
:param str file_id: Path or a URL that uniquely identifies a file.
:param Optional[ResourceOptions] opts: A bag of optional settings that control a resource's behavior.
:param List[Callable] transformations: A set of transformations to apply to Kubernetes resource definitions
before registering with engine.
:param Optional[List[Callable]] transformations: A set of transformations to apply to Kubernetes
resource definitions before registering with engine.
"""

def __init__(self, name: str, file_id: str, opts: Optional[pulumi.ResourceOptions] = None,
Expand Down Expand Up @@ -131,6 +131,12 @@ def _parse_yaml_object(obj, opts: Optional[pulumi.ResourceOptions] = None,
raise Exception("YAML object does not have a .metadata.name: {}/{} {}".format(
api_version, kind, json.dumps(obj)))

# Convert obj keys to Python casing
for key in obj:
new_key = tables._CASING_FORWARD_TABLE.get(key) or key
if new_key != key:
obj[new_key] = obj.pop(key)

metadata = obj["metadata"]
spec = obj.get("spec")
identifier: pulumi.Output = pulumi.Output.from_input(metadata["name"])
Expand All @@ -145,7 +151,7 @@ def _parse_yaml_object(obj, opts: Optional[pulumi.ResourceOptions] = None,
if gvk == "{{RawAPIVersion}}/{{Kind}}":
return [identifier.apply(
lambda x: (f"{{RawAPIVersion}}/{{Kind}}:{x}",
{{Kind}}(x, opts, metadata, spec)))]
{{Kind}}(x, opts, **obj)))]
{{/Kinds}}
{{/Versions}}
{{/Groups}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class MutatingWebhookConfiguration(pulumi.CustomResource):
MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or
reject and may change the object.
"""
def __init__(self, __name__, __opts__=None, metadata=None, webhooks=None):
def __init__(self, __name__, __opts__=None, metadata=None, webhooks=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class MutatingWebhookConfigurationList(pulumi.CustomResource):
"""
MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class ValidatingWebhookConfiguration(pulumi.CustomResource):
ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept
or reject and object without changing it.
"""
def __init__(self, __name__, __opts__=None, metadata=None, webhooks=None):
def __init__(self, __name__, __opts__=None, metadata=None, webhooks=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ValidatingWebhookConfigurationList(pulumi.CustomResource):
"""
ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class CustomResourceDefinition(pulumi.CustomResource):
CustomResourceDefinition represents a resource that should be exposed on the API server. Its
name MUST be in the format <.spec.name>.<.spec.group>.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class CustomResourceDefinitionList(pulumi.CustomResource):
"""
CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class APIService(pulumi.CustomResource):
"""
APIService represents a server for a particular GroupVersion. Name must be "version.group".
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class APIServiceList(pulumi.CustomResource):
"""
APIServiceList is a list of APIService objects.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class APIService(pulumi.CustomResource):
"""
APIService represents a server for a particular GroupVersion. Name must be "version.group".
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class APIServiceList(pulumi.CustomResource):
"""
APIServiceList is a list of APIService objects.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/ControllerRevision.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class ControllerRevision(pulumi.CustomResource):
representation changes in future releases, and clients should not depend on its stability. It is
primarily for internal use by controllers.
"""
def __init__(self, __name__, __opts__=None, data=None, metadata=None, revision=None):
def __init__(self, __name__, __opts__=None, data=None, metadata=None, revision=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ControllerRevisionList(pulumi.CustomResource):
"""
ControllerRevisionList is a resource containing a list of ControllerRevision objects.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/DaemonSet.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class DaemonSet(pulumi.CustomResource):
"""
DaemonSet represents the configuration of a daemon set.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/DaemonSetList.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class DaemonSetList(pulumi.CustomResource):
"""
DaemonSetList is a collection of daemon sets.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/Deployment.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class Deployment(pulumi.CustomResource):
"""
Deployment enables declarative updates for Pods and ReplicaSets.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/DeploymentList.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class DeploymentList(pulumi.CustomResource):
"""
DeploymentList is a list of Deployments.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/ReplicaSet.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ReplicaSet(pulumi.CustomResource):
"""
ReplicaSet ensures that a specified number of pod replicas are running at any given time.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/ReplicaSetList.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ReplicaSetList(pulumi.CustomResource):
"""
ReplicaSetList is a collection of ReplicaSets.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/StatefulSet.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class StatefulSet(pulumi.CustomResource):
The StatefulSet guarantees that a given network identity will always map to the same storage
identity.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1/StatefulSetList.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class StatefulSetList(pulumi.CustomResource):
"""
StatefulSetList is a collection of StatefulSets.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class ControllerRevision(pulumi.CustomResource):
releases, and clients should not depend on its stability. It is primarily for internal use by
controllers.
"""
def __init__(self, __name__, __opts__=None, data=None, metadata=None, revision=None):
def __init__(self, __name__, __opts__=None, data=None, metadata=None, revision=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ControllerRevisionList(pulumi.CustomResource):
"""
ControllerRevisionList is a resource containing a list of ControllerRevision objects.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1beta1/Deployment.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class Deployment(pulumi.CustomResource):
release notes for more information. Deployment enables declarative updates for Pods and
ReplicaSets.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class DeploymentList(pulumi.CustomResource):
"""
DeploymentList is a list of Deployments.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1beta1/StatefulSet.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class StatefulSet(pulumi.CustomResource):
The StatefulSet guarantees that a given network identity will always map to the same storage
identity.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class StatefulSetList(pulumi.CustomResource):
"""
StatefulSetList is a collection of StatefulSets.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class ControllerRevision(pulumi.CustomResource):
releases, and clients should not depend on its stability. It is primarily for internal use by
controllers.
"""
def __init__(self, __name__, __opts__=None, data=None, metadata=None, revision=None):
def __init__(self, __name__, __opts__=None, data=None, metadata=None, revision=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ControllerRevisionList(pulumi.CustomResource):
"""
ControllerRevisionList is a resource containing a list of ControllerRevision objects.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1beta2/DaemonSet.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class DaemonSet(pulumi.CustomResource):
DEPRECATED - This group version of DaemonSet is deprecated by apps/v1/DaemonSet. See the release
notes for more information. DaemonSet represents the configuration of a daemon set.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1beta2/DaemonSetList.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class DaemonSetList(pulumi.CustomResource):
"""
DaemonSetList is a collection of daemon sets.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1beta2/Deployment.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class Deployment(pulumi.CustomResource):
release notes for more information. Deployment enables declarative updates for Pods and
ReplicaSets.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class DeploymentList(pulumi.CustomResource):
"""
DeploymentList is a list of Deployments.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1beta2/ReplicaSet.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class ReplicaSet(pulumi.CustomResource):
release notes for more information. ReplicaSet ensures that a specified number of pod replicas
are running at any given time.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class ReplicaSetList(pulumi.CustomResource):
"""
ReplicaSetList is a collection of ReplicaSets.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/pulumi_kubernetes/apps/v1beta2/StatefulSet.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class StatefulSet(pulumi.CustomResource):
The StatefulSet guarantees that a given network identity will always map to the same storage
identity.
"""
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None):
def __init__(self, __name__, __opts__=None, metadata=None, spec=None, status=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class StatefulSetList(pulumi.CustomResource):
"""
StatefulSetList is a collection of StatefulSets.
"""
def __init__(self, __name__, __opts__=None, items=None, metadata=None):
def __init__(self, __name__, __opts__=None, items=None, metadata=None, **kwargs):
if not __name__:
raise TypeError('Missing resource name argument (for URN creation)')
if not isinstance(__name__, str):
Expand Down
Loading

0 comments on commit 210e1c8

Please sign in to comment.