From 8ae091d1d198e8820fb8b14401e1484ec54800a6 Mon Sep 17 00:00:00 2001 From: Komal Date: Thu, 10 Oct 2024 20:22:45 -0700 Subject: [PATCH] Make sourceContext optional --- examples/examples_yaml_test.go | 37 ++++++++ .../Pulumi.yaml | 16 ++++ examples/yaml-deployment-settings/.pulumi | 0 .../Pulumi.test-stack.yaml | 0 .../pulumi-resource-pulumiservice/schema.json | 8 +- sdk/dotnet/DeploymentSettings.cs | 6 +- sdk/go/pulumiservice/deploymentSettings.go | 13 ++- sdk/go/pulumiservice/pulumiTypes.go | 87 +++++++++++++++++++ .../pulumiservice/DeploymentSettings.java | 6 +- .../pulumiservice/DeploymentSettingsArgs.java | 13 ++- sdk/nodejs/deploymentSettings.ts | 7 +- .../deployment_settings.py | 37 ++++---- 12 files changed, 179 insertions(+), 51 deletions(-) create mode 100644 examples/yaml-deployment-settings-no-source/Pulumi.yaml delete mode 100644 examples/yaml-deployment-settings/.pulumi delete mode 100644 examples/yaml-deployment-settings/Pulumi.test-stack.yaml diff --git a/examples/examples_yaml_test.go b/examples/examples_yaml_test.go index 1b4196f5..6bac8b40 100644 --- a/examples/examples_yaml_test.go +++ b/examples/examples_yaml_test.go @@ -208,6 +208,43 @@ func TestYamlDeploymentSettingsExample(t *testing.T) { }) } +func TestYamlDeploymentSettingsNoSourceExample(t *testing.T) { + + // Set up tmpdir with a Pulumi.yml with no resources + // mimicking the deletion of resource + newProgram := YamlProgram{ + Name: "yaml-deployment-settings-example-no-source", + Runtime: "yaml", + } + + tmpdir := writePulumiYaml(t, newProgram) + + cwd, _ := os.Getwd() + digits := generateRandomFiveDigits() + + integration.ProgramTest(t, &integration.ProgramTestOptions{ + Quick: true, + Dir: path.Join(cwd, ".", "yaml-deployment-settings-no-source"), + StackName: "test-stack-" + digits, + Config: map[string]string{ + "digits": digits, + }, + PrepareProject: func(_ *engine.Projinfo) error { + return nil + }, + EditDirs: []integration.EditDir{ + { + Dir: tmpdir, + }, + // Reapply the same thing again, except this time we expect there to be no changes + { + Dir: tmpdir, + ExpectNoChanges: true, + }, + }, + }) +} + func TestYamlTeamAccessTokenExample(t *testing.T) { cwd, _ := os.Getwd() integration.ProgramTest(t, &integration.ProgramTestOptions{ diff --git a/examples/yaml-deployment-settings-no-source/Pulumi.yaml b/examples/yaml-deployment-settings-no-source/Pulumi.yaml new file mode 100644 index 00000000..028de86c --- /dev/null +++ b/examples/yaml-deployment-settings-no-source/Pulumi.yaml @@ -0,0 +1,16 @@ +name: yaml-deployment-settings-example +runtime: yaml +description: Deployment settings test +resources: + my_settings: + type: pulumiservice:DeploymentSettings + properties: + organization: service-provider-test-org + project: yaml-deployment-settings-example + stack: test-stack-${digits} + operationContext: + preRunCommands: + - yarn + - ls -al + environmentVariables: + TEST_VAR: "test-value" diff --git a/examples/yaml-deployment-settings/.pulumi b/examples/yaml-deployment-settings/.pulumi deleted file mode 100644 index e69de29b..00000000 diff --git a/examples/yaml-deployment-settings/Pulumi.test-stack.yaml b/examples/yaml-deployment-settings/Pulumi.test-stack.yaml deleted file mode 100644 index e69de29b..00000000 diff --git a/provider/cmd/pulumi-resource-pulumiservice/schema.json b/provider/cmd/pulumi-resource-pulumiservice/schema.json index be85b720..074cb2c2 100644 --- a/provider/cmd/pulumi-resource-pulumiservice/schema.json +++ b/provider/cmd/pulumi-resource-pulumiservice/schema.json @@ -578,7 +578,7 @@ "value": "admin" } ] - }, + }, "pulumiservice:index:TemplateSourceDestination": { "type": "object", "properties": { @@ -1070,8 +1070,7 @@ "required": [ "organization", "project", - "stack", - "sourceContext" + "stack" ], "inputProperties": { "organization": { @@ -1110,8 +1109,7 @@ "requiredInputs": [ "organization", "project", - "stack", - "sourceContext" + "stack" ] }, "pulumiservice:index:StackTag": { diff --git a/sdk/dotnet/DeploymentSettings.cs b/sdk/dotnet/DeploymentSettings.cs index 96abdd46..d4174729 100644 --- a/sdk/dotnet/DeploymentSettings.cs +++ b/sdk/dotnet/DeploymentSettings.cs @@ -63,7 +63,7 @@ public partial class DeploymentSettings : global::Pulumi.CustomResource /// Settings related to the source of the deployment. /// [Output("sourceContext")] - public Output SourceContext { get; private set; } = null!; + public Output SourceContext { get; private set; } = null!; /// /// Stack name. @@ -155,8 +155,8 @@ public sealed class DeploymentSettingsArgs : global::Pulumi.ResourceArgs /// /// Settings related to the source of the deployment. /// - [Input("sourceContext", required: true)] - public Input SourceContext { get; set; } = null!; + [Input("sourceContext")] + public Input? SourceContext { get; set; } /// /// Stack name. diff --git a/sdk/go/pulumiservice/deploymentSettings.go b/sdk/go/pulumiservice/deploymentSettings.go index cb5121f8..1a151858 100644 --- a/sdk/go/pulumiservice/deploymentSettings.go +++ b/sdk/go/pulumiservice/deploymentSettings.go @@ -39,7 +39,7 @@ type DeploymentSettings struct { // Project name. Project pulumi.StringOutput `pulumi:"project"` // Settings related to the source of the deployment. - SourceContext DeploymentSettingsSourceContextOutput `pulumi:"sourceContext"` + SourceContext DeploymentSettingsSourceContextPtrOutput `pulumi:"sourceContext"` // Stack name. Stack pulumi.StringOutput `pulumi:"stack"` } @@ -57,9 +57,6 @@ func NewDeploymentSettings(ctx *pulumi.Context, if args.Project == nil { return nil, errors.New("invalid value for required argument 'Project'") } - if args.SourceContext == nil { - return nil, errors.New("invalid value for required argument 'SourceContext'") - } if args.Stack == nil { return nil, errors.New("invalid value for required argument 'Stack'") } @@ -112,7 +109,7 @@ type deploymentSettingsArgs struct { // Project name. Project string `pulumi:"project"` // Settings related to the source of the deployment. - SourceContext DeploymentSettingsSourceContext `pulumi:"sourceContext"` + SourceContext *DeploymentSettingsSourceContext `pulumi:"sourceContext"` // Stack name. Stack string `pulumi:"stack"` } @@ -132,7 +129,7 @@ type DeploymentSettingsArgs struct { // Project name. Project pulumi.StringInput // Settings related to the source of the deployment. - SourceContext DeploymentSettingsSourceContextInput + SourceContext DeploymentSettingsSourceContextPtrInput // Stack name. Stack pulumi.StringInput } @@ -255,8 +252,8 @@ func (o DeploymentSettingsOutput) Project() pulumi.StringOutput { } // Settings related to the source of the deployment. -func (o DeploymentSettingsOutput) SourceContext() DeploymentSettingsSourceContextOutput { - return o.ApplyT(func(v *DeploymentSettings) DeploymentSettingsSourceContextOutput { return v.SourceContext }).(DeploymentSettingsSourceContextOutput) +func (o DeploymentSettingsOutput) SourceContext() DeploymentSettingsSourceContextPtrOutput { + return o.ApplyT(func(v *DeploymentSettings) DeploymentSettingsSourceContextPtrOutput { return v.SourceContext }).(DeploymentSettingsSourceContextPtrOutput) } // Stack name. diff --git a/sdk/go/pulumiservice/pulumiTypes.go b/sdk/go/pulumiservice/pulumiTypes.go index 04e0abc4..37812656 100644 --- a/sdk/go/pulumiservice/pulumiTypes.go +++ b/sdk/go/pulumiservice/pulumiTypes.go @@ -1701,6 +1701,47 @@ func (i DeploymentSettingsSourceContextArgs) ToDeploymentSettingsSourceContextOu return pulumi.ToOutputWithContext(ctx, i).(DeploymentSettingsSourceContextOutput) } +func (i DeploymentSettingsSourceContextArgs) ToDeploymentSettingsSourceContextPtrOutput() DeploymentSettingsSourceContextPtrOutput { + return i.ToDeploymentSettingsSourceContextPtrOutputWithContext(context.Background()) +} + +func (i DeploymentSettingsSourceContextArgs) ToDeploymentSettingsSourceContextPtrOutputWithContext(ctx context.Context) DeploymentSettingsSourceContextPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DeploymentSettingsSourceContextOutput).ToDeploymentSettingsSourceContextPtrOutputWithContext(ctx) +} + +// DeploymentSettingsSourceContextPtrInput is an input type that accepts DeploymentSettingsSourceContextArgs, DeploymentSettingsSourceContextPtr and DeploymentSettingsSourceContextPtrOutput values. +// You can construct a concrete instance of `DeploymentSettingsSourceContextPtrInput` via: +// +// DeploymentSettingsSourceContextArgs{...} +// +// or: +// +// nil +type DeploymentSettingsSourceContextPtrInput interface { + pulumi.Input + + ToDeploymentSettingsSourceContextPtrOutput() DeploymentSettingsSourceContextPtrOutput + ToDeploymentSettingsSourceContextPtrOutputWithContext(context.Context) DeploymentSettingsSourceContextPtrOutput +} + +type deploymentSettingsSourceContextPtrType DeploymentSettingsSourceContextArgs + +func DeploymentSettingsSourceContextPtr(v *DeploymentSettingsSourceContextArgs) DeploymentSettingsSourceContextPtrInput { + return (*deploymentSettingsSourceContextPtrType)(v) +} + +func (*deploymentSettingsSourceContextPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DeploymentSettingsSourceContext)(nil)).Elem() +} + +func (i *deploymentSettingsSourceContextPtrType) ToDeploymentSettingsSourceContextPtrOutput() DeploymentSettingsSourceContextPtrOutput { + return i.ToDeploymentSettingsSourceContextPtrOutputWithContext(context.Background()) +} + +func (i *deploymentSettingsSourceContextPtrType) ToDeploymentSettingsSourceContextPtrOutputWithContext(ctx context.Context) DeploymentSettingsSourceContextPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DeploymentSettingsSourceContextPtrOutput) +} + // Settings related to the source of the deployment. type DeploymentSettingsSourceContextOutput struct{ *pulumi.OutputState } @@ -1716,11 +1757,55 @@ func (o DeploymentSettingsSourceContextOutput) ToDeploymentSettingsSourceContext return o } +func (o DeploymentSettingsSourceContextOutput) ToDeploymentSettingsSourceContextPtrOutput() DeploymentSettingsSourceContextPtrOutput { + return o.ToDeploymentSettingsSourceContextPtrOutputWithContext(context.Background()) +} + +func (o DeploymentSettingsSourceContextOutput) ToDeploymentSettingsSourceContextPtrOutputWithContext(ctx context.Context) DeploymentSettingsSourceContextPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DeploymentSettingsSourceContext) *DeploymentSettingsSourceContext { + return &v + }).(DeploymentSettingsSourceContextPtrOutput) +} + // Git source settings for a deployment. func (o DeploymentSettingsSourceContextOutput) Git() DeploymentSettingsGitSourcePtrOutput { return o.ApplyT(func(v DeploymentSettingsSourceContext) *DeploymentSettingsGitSource { return v.Git }).(DeploymentSettingsGitSourcePtrOutput) } +type DeploymentSettingsSourceContextPtrOutput struct{ *pulumi.OutputState } + +func (DeploymentSettingsSourceContextPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DeploymentSettingsSourceContext)(nil)).Elem() +} + +func (o DeploymentSettingsSourceContextPtrOutput) ToDeploymentSettingsSourceContextPtrOutput() DeploymentSettingsSourceContextPtrOutput { + return o +} + +func (o DeploymentSettingsSourceContextPtrOutput) ToDeploymentSettingsSourceContextPtrOutputWithContext(ctx context.Context) DeploymentSettingsSourceContextPtrOutput { + return o +} + +func (o DeploymentSettingsSourceContextPtrOutput) Elem() DeploymentSettingsSourceContextOutput { + return o.ApplyT(func(v *DeploymentSettingsSourceContext) DeploymentSettingsSourceContext { + if v != nil { + return *v + } + var ret DeploymentSettingsSourceContext + return ret + }).(DeploymentSettingsSourceContextOutput) +} + +// Git source settings for a deployment. +func (o DeploymentSettingsSourceContextPtrOutput) Git() DeploymentSettingsGitSourcePtrOutput { + return o.ApplyT(func(v *DeploymentSettingsSourceContext) *DeploymentSettingsGitSource { + if v == nil { + return nil + } + return v.Git + }).(DeploymentSettingsGitSourcePtrOutput) +} + type GCPOIDCConfiguration struct { // The numerical ID of the GCP project. ProjectId string `pulumi:"projectId"` @@ -2479,6 +2564,7 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*DeploymentSettingsOperationContextInput)(nil)).Elem(), DeploymentSettingsOperationContextArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DeploymentSettingsOperationContextPtrInput)(nil)).Elem(), DeploymentSettingsOperationContextArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*DeploymentSettingsSourceContextInput)(nil)).Elem(), DeploymentSettingsSourceContextArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DeploymentSettingsSourceContextPtrInput)(nil)).Elem(), DeploymentSettingsSourceContextArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GCPOIDCConfigurationInput)(nil)).Elem(), GCPOIDCConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GCPOIDCConfigurationPtrInput)(nil)).Elem(), GCPOIDCConfigurationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*OperationContextOIDCInput)(nil)).Elem(), OperationContextOIDCArgs{}) @@ -2506,6 +2592,7 @@ func init() { pulumi.RegisterOutputType(DeploymentSettingsOperationContextOutput{}) pulumi.RegisterOutputType(DeploymentSettingsOperationContextPtrOutput{}) pulumi.RegisterOutputType(DeploymentSettingsSourceContextOutput{}) + pulumi.RegisterOutputType(DeploymentSettingsSourceContextPtrOutput{}) pulumi.RegisterOutputType(GCPOIDCConfigurationOutput{}) pulumi.RegisterOutputType(GCPOIDCConfigurationPtrOutput{}) pulumi.RegisterOutputType(OperationContextOIDCOutput{}) diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettings.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettings.java index 4528ccf2..5a9ec28e 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettings.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettings.java @@ -120,14 +120,14 @@ public Output project() { * */ @Export(name="sourceContext", refs={DeploymentSettingsSourceContext.class}, tree="[0]") - private Output sourceContext; + private Output sourceContext; /** * @return Settings related to the source of the deployment. * */ - public Output sourceContext() { - return this.sourceContext; + public Output> sourceContext() { + return Codegen.optional(this.sourceContext); } /** * Stack name. diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java index f0470f5b..91d8d865 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java @@ -114,15 +114,15 @@ public Output project() { * Settings related to the source of the deployment. * */ - @Import(name="sourceContext", required=true) - private Output sourceContext; + @Import(name="sourceContext") + private @Nullable Output sourceContext; /** * @return Settings related to the source of the deployment. * */ - public Output sourceContext() { - return this.sourceContext; + public Optional> sourceContext() { + return Optional.ofNullable(this.sourceContext); } /** @@ -303,7 +303,7 @@ public Builder project(String project) { * @return builder * */ - public Builder sourceContext(Output sourceContext) { + public Builder sourceContext(@Nullable Output sourceContext) { $.sourceContext = sourceContext; return this; } @@ -346,9 +346,6 @@ public DeploymentSettingsArgs build() { if ($.project == null) { throw new MissingRequiredPropertyException("DeploymentSettingsArgs", "project"); } - if ($.sourceContext == null) { - throw new MissingRequiredPropertyException("DeploymentSettingsArgs", "sourceContext"); - } if ($.stack == null) { throw new MissingRequiredPropertyException("DeploymentSettingsArgs", "stack"); } diff --git a/sdk/nodejs/deploymentSettings.ts b/sdk/nodejs/deploymentSettings.ts index 931f59b8..2da06eb9 100644 --- a/sdk/nodejs/deploymentSettings.ts +++ b/sdk/nodejs/deploymentSettings.ts @@ -72,7 +72,7 @@ export class DeploymentSettings extends pulumi.CustomResource { /** * Settings related to the source of the deployment. */ - public readonly sourceContext!: pulumi.Output; + public readonly sourceContext!: pulumi.Output; /** * Stack name. */ @@ -95,9 +95,6 @@ export class DeploymentSettings extends pulumi.CustomResource { if ((!args || args.project === undefined) && !opts.urn) { throw new Error("Missing required property 'project'"); } - if ((!args || args.sourceContext === undefined) && !opts.urn) { - throw new Error("Missing required property 'sourceContext'"); - } if ((!args || args.stack === undefined) && !opts.urn) { throw new Error("Missing required property 'stack'"); } @@ -155,7 +152,7 @@ export interface DeploymentSettingsArgs { /** * Settings related to the source of the deployment. */ - sourceContext: pulumi.Input; + sourceContext?: pulumi.Input; /** * Stack name. */ diff --git a/sdk/python/pulumi_pulumiservice/deployment_settings.py b/sdk/python/pulumi_pulumiservice/deployment_settings.py index a720cba8..4163cf6c 100644 --- a/sdk/python/pulumi_pulumiservice/deployment_settings.py +++ b/sdk/python/pulumi_pulumiservice/deployment_settings.py @@ -18,26 +18,25 @@ class DeploymentSettingsArgs: def __init__(__self__, *, organization: pulumi.Input[str], project: pulumi.Input[str], - source_context: pulumi.Input['DeploymentSettingsSourceContextArgs'], stack: pulumi.Input[str], agent_pool_id: Optional[pulumi.Input[str]] = None, executor_context: Optional[pulumi.Input['DeploymentSettingsExecutorContextArgs']] = None, github: Optional[pulumi.Input['DeploymentSettingsGithubArgs']] = None, - operation_context: Optional[pulumi.Input['DeploymentSettingsOperationContextArgs']] = None): + operation_context: Optional[pulumi.Input['DeploymentSettingsOperationContextArgs']] = None, + source_context: Optional[pulumi.Input['DeploymentSettingsSourceContextArgs']] = None): """ The set of arguments for constructing a DeploymentSettings resource. :param pulumi.Input[str] organization: Organization name. :param pulumi.Input[str] project: Project name. - :param pulumi.Input['DeploymentSettingsSourceContextArgs'] source_context: Settings related to the source of the deployment. :param pulumi.Input[str] stack: Stack name. :param pulumi.Input[str] agent_pool_id: The agent pool identifier to use for the deployment. :param pulumi.Input['DeploymentSettingsExecutorContextArgs'] executor_context: Settings related to the deployment executor. :param pulumi.Input['DeploymentSettingsGithubArgs'] github: GitHub settings for the deployment. :param pulumi.Input['DeploymentSettingsOperationContextArgs'] operation_context: Settings related to the Pulumi operation environment during the deployment. + :param pulumi.Input['DeploymentSettingsSourceContextArgs'] source_context: Settings related to the source of the deployment. """ pulumi.set(__self__, "organization", organization) pulumi.set(__self__, "project", project) - pulumi.set(__self__, "source_context", source_context) pulumi.set(__self__, "stack", stack) if agent_pool_id is not None: pulumi.set(__self__, "agent_pool_id", agent_pool_id) @@ -47,6 +46,8 @@ def __init__(__self__, *, pulumi.set(__self__, "github", github) if operation_context is not None: pulumi.set(__self__, "operation_context", operation_context) + if source_context is not None: + pulumi.set(__self__, "source_context", source_context) @property @pulumi.getter @@ -72,18 +73,6 @@ def project(self) -> pulumi.Input[str]: def project(self, value: pulumi.Input[str]): pulumi.set(self, "project", value) - @property - @pulumi.getter(name="sourceContext") - def source_context(self) -> pulumi.Input['DeploymentSettingsSourceContextArgs']: - """ - Settings related to the source of the deployment. - """ - return pulumi.get(self, "source_context") - - @source_context.setter - def source_context(self, value: pulumi.Input['DeploymentSettingsSourceContextArgs']): - pulumi.set(self, "source_context", value) - @property @pulumi.getter def stack(self) -> pulumi.Input[str]: @@ -144,6 +133,18 @@ def operation_context(self) -> Optional[pulumi.Input['DeploymentSettingsOperatio def operation_context(self, value: Optional[pulumi.Input['DeploymentSettingsOperationContextArgs']]): pulumi.set(self, "operation_context", value) + @property + @pulumi.getter(name="sourceContext") + def source_context(self) -> Optional[pulumi.Input['DeploymentSettingsSourceContextArgs']]: + """ + Settings related to the source of the deployment. + """ + return pulumi.get(self, "source_context") + + @source_context.setter + def source_context(self, value: Optional[pulumi.Input['DeploymentSettingsSourceContextArgs']]): + pulumi.set(self, "source_context", value) + class DeploymentSettings(pulumi.CustomResource): @overload @@ -240,8 +241,6 @@ def _internal_init(__self__, if project is None and not opts.urn: raise TypeError("Missing required property 'project'") __props__.__dict__["project"] = project - if source_context is None and not opts.urn: - raise TypeError("Missing required property 'source_context'") __props__.__dict__["source_context"] = source_context if stack is None and not opts.urn: raise TypeError("Missing required property 'stack'") @@ -328,7 +327,7 @@ def project(self) -> pulumi.Output[str]: @property @pulumi.getter(name="sourceContext") - def source_context(self) -> pulumi.Output['outputs.DeploymentSettingsSourceContext']: + def source_context(self) -> pulumi.Output[Optional['outputs.DeploymentSettingsSourceContext']]: """ Settings related to the source of the deployment. """