Skip to content

Commit ee5a065

Browse files
refactor
1 parent b05c2a8 commit ee5a065

File tree

16 files changed

+329
-228
lines changed

16 files changed

+329
-228
lines changed

cmd/account/link_key/link_key.go

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ import (
2020
"github.com/spf13/cobra"
2121
"github.com/spf13/viper"
2222

23-
"github.com/smartcontractkit/chainlink/deployment/cre/workflow_registry/v2/changeset"
24-
2523
"github.com/smartcontractkit/cre-cli/cmd/client"
2624
cmdCommon "github.com/smartcontractkit/cre-cli/cmd/common"
2725
"github.com/smartcontractkit/cre-cli/internal/client/graphqlclient"
@@ -342,28 +340,31 @@ func (h *handler) linkOwner(resp initiateLinkingResponse) error {
342340
if err != nil {
343341
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
344342
}
345-
csFile := types.ChangesetFile{
346-
Environment: h.settings.Workflow.CLDSettings.Environment,
347-
Domain: h.settings.Workflow.CLDSettings.Domain,
348-
Changesets: []types.Changeset{
349-
{
350-
LinkOwner: &types.LinkOwner{
351-
Payload: changeset.UserLinkOwnerInput{
352-
ValidityTimestamp: ts,
353-
Proof: common.Bytes2Hex(proofBytes[:]),
354-
Signature: common.Bytes2Hex(sigBytes),
355-
ChainSelector: chainSelector,
356-
MCMSConfig: mcmsConfig,
357-
WorkflowRegistryQualifier: h.settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
358-
},
343+
cldSettings := h.settings.CLDSettings
344+
changesets := []types.Changeset{
345+
{
346+
LinkOwner: &types.LinkOwner{
347+
Payload: types.UserLinkOwnerInput{
348+
ValidityTimestamp: ts,
349+
Proof: common.Bytes2Hex(proofBytes[:]),
350+
Signature: common.Bytes2Hex(sigBytes),
351+
ChainSelector: chainSelector,
352+
MCMSConfig: mcmsConfig,
353+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
359354
},
360355
},
361356
},
362357
}
358+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
363359

364-
fileName := fmt.Sprintf("LinkOwner_%s_%s.yaml", h.settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
360+
var fileName string
361+
if cldSettings.ChangesetFile != "" {
362+
fileName = cldSettings.ChangesetFile
363+
} else {
364+
fileName = fmt.Sprintf("LinkOwner_%s_%s.yaml", h.settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
365+
}
365366

366-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.settings)
367+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.settings)
367368

368369
default:
369370
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/account/unlink_key/unlink_key.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ import (
1919
"github.com/spf13/cobra"
2020
"github.com/spf13/viper"
2121

22-
"github.com/smartcontractkit/chainlink/deployment/cre/workflow_registry/v2/changeset"
23-
2422
"github.com/smartcontractkit/cre-cli/cmd/client"
2523
cmdCommon "github.com/smartcontractkit/cre-cli/cmd/common"
2624
"github.com/smartcontractkit/cre-cli/internal/client/graphqlclient"
@@ -301,27 +299,30 @@ func (h *handler) unlinkOwner(owner string, resp initiateUnlinkingResponse) erro
301299
if err != nil {
302300
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
303301
}
304-
csFile := types.ChangesetFile{
305-
Environment: h.settings.Workflow.CLDSettings.Environment,
306-
Domain: h.settings.Workflow.CLDSettings.Domain,
307-
Changesets: []types.Changeset{
308-
{
309-
UnlinkOwner: &types.UnlinkOwner{
310-
Payload: changeset.UserUnlinkOwnerInput{
311-
ValidityTimestamp: ts,
312-
Signature: common.Bytes2Hex(sigBytes),
313-
ChainSelector: chainSelector,
314-
MCMSConfig: mcmsConfig,
315-
WorkflowRegistryQualifier: h.settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
316-
},
302+
cldSettings := h.settings.CLDSettings
303+
changesets := []types.Changeset{
304+
{
305+
UnlinkOwner: &types.UnlinkOwner{
306+
Payload: types.UserUnlinkOwnerInput{
307+
ValidityTimestamp: ts,
308+
Signature: common.Bytes2Hex(sigBytes),
309+
ChainSelector: chainSelector,
310+
MCMSConfig: mcmsConfig,
311+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
317312
},
318313
},
319314
},
320315
}
316+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
321317

322-
fileName := fmt.Sprintf("UnlinkOwner_%s_%s.yaml", h.settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
318+
var fileName string
319+
if cldSettings.ChangesetFile != "" {
320+
fileName = cldSettings.ChangesetFile
321+
} else {
322+
fileName = fmt.Sprintf("UnlinkOwner_%s_%s.yaml", h.settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
323+
}
323324

324-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.settings)
325+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.settings)
325326

326327
default:
327328
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/common/utils.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -219,20 +219,38 @@ func GetBuildCmd(inputFile string, outputFile string, rootFolder string) *exec.C
219219
}
220220

221221
func WriteChangesetFile(fileName string, changesetFile *inttypes.ChangesetFile, settings *settings.Settings) error {
222-
yamlData, err := yaml.Marshal(&changesetFile)
223-
if err != nil {
224-
return fmt.Errorf("failed to marshal changeset to yaml: %w", err)
225-
}
226-
227222
fullFilePath := filepath.Join(
228-
filepath.Clean(settings.Workflow.CLDSettings.CLDPath),
223+
filepath.Clean(settings.CLDSettings.CLDPath),
229224
"domains",
230-
settings.Workflow.CLDSettings.Domain,
231-
settings.Workflow.CLDSettings.Environment,
225+
settings.CLDSettings.Domain,
226+
settings.CLDSettings.Environment,
232227
"durable_pipelines",
233228
"inputs",
234229
fileName,
235230
)
231+
232+
// if file exists, read it and append the new changesets
233+
if _, err := os.Stat(fullFilePath); err == nil {
234+
existingYamlData, err := os.ReadFile(fullFilePath)
235+
if err != nil {
236+
return fmt.Errorf("failed to read existing changeset yaml file: %w", err)
237+
}
238+
239+
var existingChangesetFile inttypes.ChangesetFile
240+
if err := yaml.Unmarshal(existingYamlData, &existingChangesetFile); err != nil {
241+
return fmt.Errorf("failed to unmarshal existing changeset yaml: %w", err)
242+
}
243+
244+
// Append new changesets to the existing ones
245+
existingChangesetFile.Changesets = append(existingChangesetFile.Changesets, changesetFile.Changesets...)
246+
changesetFile = &existingChangesetFile
247+
}
248+
249+
yamlData, err := yaml.Marshal(&changesetFile)
250+
if err != nil {
251+
return fmt.Errorf("failed to marshal changeset to yaml: %w", err)
252+
}
253+
236254
if err := os.WriteFile(fullFilePath, yamlData, 0600); err != nil {
237255
return fmt.Errorf("failed to write changeset yaml file: %w", err)
238256
}

cmd/secrets/common/handler.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"github.com/smartcontractkit/chainlink-common/pkg/capabilities/actions/vault"
2626
"github.com/smartcontractkit/chainlink-common/pkg/jsonrpc2"
2727
"github.com/smartcontractkit/chainlink-evm/gethwrappers/workflow/generated/workflow_registry_wrapper_v2"
28-
"github.com/smartcontractkit/chainlink/deployment/cre/workflow_registry/v2/changeset"
2928
"github.com/smartcontractkit/chainlink/v2/core/capabilities/vault/vaulttypes"
3029
"github.com/smartcontractkit/tdh2/go/tdh2/tdh2easy"
3130

@@ -475,31 +474,34 @@ func (h *Handler) Execute(
475474
if err != nil {
476475
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
477476
}
478-
csFile := types.ChangesetFile{
479-
Environment: h.Settings.Workflow.CLDSettings.Environment,
480-
Domain: h.Settings.Workflow.CLDSettings.Domain,
481-
Changesets: []types.Changeset{
482-
{
483-
AllowlistRequest: &types.AllowlistRequest{
484-
Payload: changeset.UserAllowlistRequestInput{
485-
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
486-
RequestDigest: common.Bytes2Hex(digest[:]),
487-
ChainSelector: chainSelector,
488-
MCMSConfig: mcmsConfig,
489-
WorkflowRegistryQualifier: h.Settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
490-
},
477+
cldSettings := h.Settings.CLDSettings
478+
changesets := []types.Changeset{
479+
{
480+
AllowlistRequest: &types.AllowlistRequest{
481+
Payload: types.UserAllowlistRequestInput{
482+
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
483+
RequestDigest: common.Bytes2Hex(digest[:]),
484+
ChainSelector: chainSelector,
485+
MCMSConfig: mcmsConfig,
486+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
491487
},
492488
},
493489
},
494490
}
491+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
495492

496-
fileName := fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
493+
var fileName string
494+
if cldSettings.ChangesetFile != "" {
495+
fileName = cldSettings.ChangesetFile
496+
} else {
497+
fileName = fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
498+
}
497499

498500
if err := SaveBundle(bundlePath, ub); err != nil {
499501
return fmt.Errorf("failed to save unsigned bundle at %s: %w", bundlePath, err)
500502
}
501503

502-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.Settings)
504+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.Settings)
503505

504506
default:
505507
h.Log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/secrets/delete/delete.go

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818

1919
"github.com/smartcontractkit/chainlink-common/pkg/capabilities/actions/vault"
2020
"github.com/smartcontractkit/chainlink-common/pkg/jsonrpc2"
21-
"github.com/smartcontractkit/chainlink/deployment/cre/workflow_registry/v2/changeset"
2221
"github.com/smartcontractkit/chainlink/v2/core/capabilities/vault/vaulttypes"
2322

2423
"github.com/smartcontractkit/cre-cli/cmd/client"
@@ -215,31 +214,35 @@ func Execute(h *common.Handler, inputs DeleteSecretsInputs, duration time.Durati
215214
if err != nil {
216215
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
217216
}
218-
csFile := types.ChangesetFile{
219-
Environment: h.Settings.Workflow.CLDSettings.Environment,
220-
Domain: h.Settings.Workflow.CLDSettings.Domain,
221-
Changesets: []types.Changeset{
222-
{
223-
AllowlistRequest: &types.AllowlistRequest{
224-
Payload: changeset.UserAllowlistRequestInput{
225-
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
226-
RequestDigest: ethcommon.Bytes2Hex(digest[:]),
227-
ChainSelector: chainSelector,
228-
MCMSConfig: mcmsConfig,
229-
WorkflowRegistryQualifier: h.Settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
230-
},
217+
cldSettings := h.Settings.CLDSettings
218+
changesets := []types.Changeset{
219+
{
220+
AllowlistRequest: &types.AllowlistRequest{
221+
Payload: types.UserAllowlistRequestInput{
222+
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
223+
RequestDigest: ethcommon.Bytes2Hex(digest[:]),
224+
ChainSelector: chainSelector,
225+
MCMSConfig: mcmsConfig,
226+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
231227
},
232228
},
233229
},
234230
}
231+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
235232

236-
fileName := fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
233+
var fileName string
234+
if cldSettings.ChangesetFile != "" {
235+
fileName = cldSettings.ChangesetFile
236+
} else {
237+
238+
fileName = fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
239+
}
237240

238241
if err := common.SaveBundle(bundlePath, ub); err != nil {
239242
return fmt.Errorf("failed to save unsigned bundle at %s: %w", bundlePath, err)
240243
}
241244

242-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.Settings)
245+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.Settings)
243246

244247
default:
245248
h.Log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/secrets/list/list.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616

1717
"github.com/smartcontractkit/chainlink-common/pkg/capabilities/actions/vault"
1818
"github.com/smartcontractkit/chainlink-common/pkg/jsonrpc2"
19-
"github.com/smartcontractkit/chainlink/deployment/cre/workflow_registry/v2/changeset"
2019
"github.com/smartcontractkit/chainlink/v2/core/capabilities/vault/vaulttypes"
2120

2221
"github.com/smartcontractkit/cre-cli/cmd/client"
@@ -187,31 +186,34 @@ func Execute(h *common.Handler, namespace string, duration time.Duration, ownerT
187186
if err != nil {
188187
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
189188
}
190-
csFile := types.ChangesetFile{
191-
Environment: h.Settings.Workflow.CLDSettings.Environment,
192-
Domain: h.Settings.Workflow.CLDSettings.Domain,
193-
Changesets: []types.Changeset{
194-
{
195-
AllowlistRequest: &types.AllowlistRequest{
196-
Payload: changeset.UserAllowlistRequestInput{
197-
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
198-
RequestDigest: ethcommon.Bytes2Hex(digest[:]),
199-
ChainSelector: chainSelector,
200-
MCMSConfig: mcmsConfig,
201-
WorkflowRegistryQualifier: h.Settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
202-
},
189+
cldSettings := h.Settings.CLDSettings
190+
changesets := []types.Changeset{
191+
{
192+
AllowlistRequest: &types.AllowlistRequest{
193+
Payload: types.UserAllowlistRequestInput{
194+
ExpiryTimestamp: uint32(time.Now().Add(duration).Unix()), // #nosec G115 -- int64 to uint32 conversion; Unix() returns seconds since epoch, which fits in uint32 until 2106
195+
RequestDigest: ethcommon.Bytes2Hex(digest[:]),
196+
ChainSelector: chainSelector,
197+
MCMSConfig: mcmsConfig,
198+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
203199
},
204200
},
205201
},
206202
}
203+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
207204

208-
fileName := fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
205+
var fileName string
206+
if cldSettings.ChangesetFile != "" {
207+
fileName = cldSettings.ChangesetFile
208+
} else {
209+
fileName = fmt.Sprintf("AllowlistRequest_%s_%s_%s.yaml", requestID, h.Settings.Workflow.UserWorkflowSettings.WorkflowOwnerAddress, time.Now().Format("20060102_150405"))
210+
}
209211

210212
if err := common.SaveBundle(bundlePath, ub); err != nil {
211213
return fmt.Errorf("failed to save unsigned bundle at %s: %w", bundlePath, err)
212214
}
213215

214-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.Settings)
216+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.Settings)
215217

216218
default:
217219
h.Log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

cmd/workflow/activate/activate.go

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ import (
1313
"github.com/spf13/cobra"
1414
"github.com/spf13/viper"
1515

16-
"github.com/smartcontractkit/chainlink/deployment/cre/workflow_registry/v2/changeset"
17-
1816
"github.com/smartcontractkit/cre-cli/cmd/client"
1917
cmdCommon "github.com/smartcontractkit/cre-cli/cmd/common"
2018
"github.com/smartcontractkit/cre-cli/internal/environments"
@@ -211,28 +209,31 @@ func (h *handler) Execute() error {
211209
if err != nil {
212210
fmt.Println("\nMCMS config not found or is incorrect, skipping MCMS config in changeset")
213211
}
214-
csFile := types.ChangesetFile{
215-
Environment: h.settings.Workflow.CLDSettings.Environment,
216-
Domain: h.settings.Workflow.CLDSettings.Domain,
217-
Changesets: []types.Changeset{
218-
{
219-
ActivateWorkflow: &types.ActivateWorkflow{
220-
Payload: changeset.UserWorkflowActivateInput{
221-
WorkflowID: h.runtimeContext.Workflow.ID,
222-
DonFamily: h.inputs.DonFamily,
223-
224-
ChainSelector: chainSelector,
225-
MCMSConfig: mcmsConfig,
226-
WorkflowRegistryQualifier: h.settings.Workflow.CLDSettings.WorkflowRegistryQualifier,
227-
},
212+
cldSettings := h.settings.CLDSettings
213+
changesets := []types.Changeset{
214+
{
215+
ActivateWorkflow: &types.ActivateWorkflow{
216+
Payload: types.UserWorkflowActivateInput{
217+
WorkflowID: h.runtimeContext.Workflow.ID,
218+
DonFamily: h.inputs.DonFamily,
219+
220+
ChainSelector: chainSelector,
221+
MCMSConfig: mcmsConfig,
222+
WorkflowRegistryQualifier: cldSettings.WorkflowRegistryQualifier,
228223
},
229224
},
230225
},
231226
}
227+
csFile := types.NewChangesetFile(cldSettings.Environment, cldSettings.Domain, cldSettings.MergeProposals, changesets)
232228

233-
fileName := fmt.Sprintf("ActivateWorkflow_%s_%s.yaml", workflowName, time.Now().Format("20060102_150405"))
229+
var fileName string
230+
if cldSettings.ChangesetFile != "" {
231+
fileName = cldSettings.ChangesetFile
232+
} else {
233+
fileName = fmt.Sprintf("ActivateWorkflow_%s_%s.yaml", workflowName, time.Now().Format("20060102_150405"))
234+
}
234235

235-
return cmdCommon.WriteChangesetFile(fileName, &csFile, h.settings)
236+
return cmdCommon.WriteChangesetFile(fileName, csFile, h.settings)
236237

237238
default:
238239
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)

0 commit comments

Comments
 (0)