Skip to content

Commit

Permalink
Fixing refresh breaking drift and ttl schedule
Browse files Browse the repository at this point in the history
  • Loading branch information
IaroslavTitov committed Apr 26, 2024
1 parent 2ea8a75 commit 0816b90
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 13 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG_PENDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

### Bug Fixes

- Fixed refresh breaking schedules bug [#257](https://github.com/pulumi/pulumi-pulumiservice/issues/257)

### Miscellaneous
2 changes: 1 addition & 1 deletion provider/pkg/provider/deployment_schedules.go
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ func (st *PulumiServiceDeploymentScheduleResource) Read(req *pulumirpc.ReadReque
}

outputProperties, err := plugin.MarshalProperties(
input.ToPropertyMap(),
AddScheduleIdToPropertyMap(*scheduleID, input.ToPropertyMap()),
plugin.MarshalOptions{
KeepUnknowns: true,
SkipNulls: true,
Expand Down
23 changes: 17 additions & 6 deletions provider/pkg/provider/drift_schedules.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ type PulumiServiceDriftScheduleResource struct {
type PulumiServiceDriftScheduleInput struct {
Stack pulumiapi.StackName
ScheduleCron string `pulumi:"scheduleCron"`
AutoRemediate bool `pulumi:"autoRemediate"`
AutoRemediate *bool `pulumi:"autoRemediate"`
}

type PulumiServiceDriftScheduleOutput struct {
Expand All @@ -32,7 +32,9 @@ func (i *PulumiServiceDriftScheduleInput) ToPropertyMap() resource.PropertyMap {
propertyMap := StackToPropertyMap(i.Stack)

propertyMap["scheduleCron"] = resource.NewPropertyValue(i.ScheduleCron)
propertyMap["autoRemediate"] = resource.NewPropertyValue(i.AutoRemediate)
if i.AutoRemediate != nil {
propertyMap["autoRemediate"] = resource.NewPropertyValue(*i.AutoRemediate)
}

return propertyMap
}
Expand All @@ -56,7 +58,8 @@ func ToPulumiServiceDriftScheduleInput(properties *structpb.Struct) (*PulumiServ
}

if inputMap["autoRemediate"].HasValue() && inputMap["autoRemediate"].IsBool() {
input.AutoRemediate = inputMap["autoRemediate"].BoolValue()
val := inputMap["autoRemediate"].BoolValue()
input.AutoRemediate = &val
}

return &input, nil
Expand All @@ -76,9 +79,13 @@ func (st *PulumiServiceDriftScheduleResource) Create(req *pulumirpc.CreateReques
return nil, err
}

var autoRemediate = false
if input.AutoRemediate != nil {
autoRemediate = *input.AutoRemediate
}
scheduleReq := pulumiapi.CreateDriftScheduleRequest{
ScheduleCron: input.ScheduleCron,
AutoRemediate: input.AutoRemediate,
AutoRemediate: autoRemediate,
}
scheduleID, err := st.client.CreateDriftSchedule(context.Background(), input.Stack, scheduleReq)
if err != nil {
Expand Down Expand Up @@ -138,9 +145,13 @@ func (st *PulumiServiceDriftScheduleResource) Update(req *pulumirpc.UpdateReques
return nil, err
}

var autoRemediate = false
if input.AutoRemediate != nil {
autoRemediate = *input.AutoRemediate
}
updateReq := pulumiapi.CreateDriftScheduleRequest{
ScheduleCron: input.ScheduleCron,
AutoRemediate: input.AutoRemediate,
AutoRemediate: autoRemediate,
}
scheduleID, err := st.client.UpdateDriftSchedule(context.Background(), input.Stack, updateReq, previousOutput.ScheduleID)
if err != nil {
Expand Down Expand Up @@ -182,7 +193,7 @@ func (st *PulumiServiceDriftScheduleResource) Read(req *pulumirpc.ReadRequest) (
}

outputProperties, err := plugin.MarshalProperties(
input.ToPropertyMap(),
AddScheduleIdToPropertyMap(*scheduleID, input.ToPropertyMap()),
plugin.MarshalOptions{
KeepUnknowns: true,
SkipNulls: true,
Expand Down
23 changes: 17 additions & 6 deletions provider/pkg/provider/ttl_schedules.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ type PulumiServiceTtlScheduleResource struct {
type PulumiServiceTtlScheduleInput struct {
Stack pulumiapi.StackName
Timestamp time.Time `pulumi:"timestamp"`
DeleteAfterDestroy bool `pulumi:"deleteAfterDestroy"`
DeleteAfterDestroy *bool `pulumi:"deleteAfterDestroy"`
}

type PulumiServiceTtlScheduleOutput struct {
Expand All @@ -33,7 +33,9 @@ func (i *PulumiServiceTtlScheduleInput) ToPropertyMap() resource.PropertyMap {
propertyMap := StackToPropertyMap(i.Stack)

propertyMap["timestamp"] = resource.NewPropertyValue(i.Timestamp.Format(time.RFC3339))
propertyMap["deleteAfterDestroy"] = resource.NewPropertyValue(i.DeleteAfterDestroy)
if i.DeleteAfterDestroy != nil {
propertyMap["deleteAfterDestroy"] = resource.NewPropertyValue(*i.DeleteAfterDestroy)
}

return propertyMap
}
Expand All @@ -60,7 +62,8 @@ func ToPulumiServiceTtlScheduleInput(properties *structpb.Struct) (*PulumiServic
}

if inputMap["deleteAfterDestroy"].HasValue() && inputMap["deleteAfterDestroy"].IsBool() {
input.DeleteAfterDestroy = inputMap["deleteAfterDestroy"].BoolValue()
val := inputMap["deleteAfterDestroy"].BoolValue()
input.DeleteAfterDestroy = &val
}

return &input, nil
Expand All @@ -80,9 +83,13 @@ func (st *PulumiServiceTtlScheduleResource) Create(req *pulumirpc.CreateRequest)
return nil, err
}

var deleteAfterDestroy = false
if input.DeleteAfterDestroy != nil {
deleteAfterDestroy = *input.DeleteAfterDestroy
}
scheduleReq := pulumiapi.CreateTtlScheduleRequest{
Timestamp: input.Timestamp,
DeleteAfterDestroy: input.DeleteAfterDestroy,
DeleteAfterDestroy: deleteAfterDestroy,
}
scheduleID, err := st.client.CreateTtlSchedule(context.Background(), input.Stack, scheduleReq)
if err != nil {
Expand Down Expand Up @@ -142,9 +149,13 @@ func (st *PulumiServiceTtlScheduleResource) Update(req *pulumirpc.UpdateRequest)
return nil, err
}

var deleteAfterDestroy = false
if input.DeleteAfterDestroy != nil {
deleteAfterDestroy = *input.DeleteAfterDestroy
}
updateReq := pulumiapi.CreateTtlScheduleRequest{
Timestamp: input.Timestamp,
DeleteAfterDestroy: input.DeleteAfterDestroy,
DeleteAfterDestroy: deleteAfterDestroy,
}
scheduleID, err := st.client.UpdateTtlSchedule(context.Background(), input.Stack, updateReq, previousOutput.ScheduleID)
if err != nil {
Expand Down Expand Up @@ -186,7 +197,7 @@ func (st *PulumiServiceTtlScheduleResource) Read(req *pulumirpc.ReadRequest) (*p
}

outputProperties, err := plugin.MarshalProperties(
input.ToPropertyMap(),
AddScheduleIdToPropertyMap(*scheduleID, input.ToPropertyMap()),
plugin.MarshalOptions{
KeepUnknowns: true,
SkipNulls: true,
Expand Down

0 comments on commit 0816b90

Please sign in to comment.