Skip to content

Commit 8f1186c

Browse files
Cr 7868 (#246)
* hardcoded git url to debug * clean up redunded fields from example YAMLs * clean up redunded fields from example YAMLs * changed version to 0.0.226 * cleanup redunded fields of Yamls examples * replace unnecsasary lib * changed version * changed example files names * change version number * couple some general methods * review return error * revert filenames of examples * reducing name of functions * changed version
1 parent f049643 commit 8f1186c

File tree

4 files changed

+250
-20
lines changed

4 files changed

+250
-20
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION=v0.0.230
1+
VERSION=v0.0.231
22

33
OUT_DIR=dist
44
YEAR?=$(shell date +"%Y")

cmd/commands/git-source.go

Lines changed: 246 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,7 @@ import (
2020
"strings"
2121
"time"
2222

23-
"github.com/codefresh-io/cli-v2/pkg/log"
24-
"github.com/codefresh-io/cli-v2/pkg/runtime"
25-
"github.com/codefresh-io/cli-v2/pkg/store"
26-
"github.com/codefresh-io/cli-v2/pkg/util"
27-
apu "github.com/codefresh-io/cli-v2/pkg/util/aputil"
28-
ingressutil "github.com/codefresh-io/cli-v2/pkg/util/ingress"
29-
wfutil "github.com/codefresh-io/cli-v2/pkg/util/workflow"
23+
"encoding/json"
3024

3125
apcmd "github.com/argoproj-labs/argocd-autopilot/cmd/commands"
3226
"github.com/argoproj-labs/argocd-autopilot/pkg/application"
@@ -41,6 +35,13 @@ import (
4135
sensorsv1alpha1 "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1"
4236
wf "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow"
4337
wfv1alpha1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1"
38+
"github.com/codefresh-io/cli-v2/pkg/log"
39+
"github.com/codefresh-io/cli-v2/pkg/runtime"
40+
"github.com/codefresh-io/cli-v2/pkg/store"
41+
"github.com/codefresh-io/cli-v2/pkg/util"
42+
apu "github.com/codefresh-io/cli-v2/pkg/util/aputil"
43+
ingressutil "github.com/codefresh-io/cli-v2/pkg/util/ingress"
44+
wfutil "github.com/codefresh-io/cli-v2/pkg/util/workflow"
4445
"github.com/juju/ansiterm"
4546
"github.com/spf13/cobra"
4647
corev1 "k8s.io/api/core/v1"
@@ -230,7 +231,6 @@ func createDemoResources(ctx context.Context, opts *GitSourceCreateOptions, gsRe
230231
if err != nil {
231232
return fmt.Errorf("failed to read files in git-source repo. Err: %w", err)
232233
}
233-
234234
if len(fi) == 0 {
235235
err = createCronExamplePipeline(&gitSourceCronExampleOptions{
236236
runtimeName: opts.RuntimeName,
@@ -273,7 +273,15 @@ func createCronExamplePipeline(opts *gitSourceCronExampleOptions) error {
273273
sensorFilePath := opts.gsFs.Join(opts.gsCloneOpts.Path(), store.Get().CronExampleSensorFileName)
274274

275275
eventSource := createCronExampleEventSource()
276-
err = opts.gsCloneOpts.FS.WriteYamls(eventSourceFilePath, eventSource)
276+
eventSourceRedundanded, err := cleanUpFieldsCronEventSource(&eventSource)
277+
278+
if err != nil {
279+
err = opts.gsCloneOpts.FS.WriteYamls(eventSourceFilePath, eventSource)
280+
281+
} else {
282+
err = opts.gsCloneOpts.FS.WriteYamls(eventSourceFilePath, eventSourceRedundanded)
283+
}
284+
277285
if err != nil {
278286
return fmt.Errorf("failed to write yaml of eventsource. Error: %w", err)
279287
}
@@ -289,7 +297,16 @@ func createCronExamplePipeline(opts *gitSourceCronExampleOptions) error {
289297
return fmt.Errorf("failed to create cron example sensor. Error: %w", err)
290298
}
291299

292-
err = opts.gsCloneOpts.FS.WriteYamls(sensorFilePath, sensor)
300+
sensorRedundanded, err := cleanUpFieldsCronSensor(&sensor)
301+
302+
if err != nil {
303+
304+
err = opts.gsCloneOpts.FS.WriteYamls(sensorFilePath, sensor)
305+
306+
} else {
307+
err = opts.gsCloneOpts.FS.WriteYamls(sensorFilePath, sensorRedundanded)
308+
}
309+
293310
if err != nil {
294311
return fmt.Errorf("failed to write yaml of cron example sensor. Error: %w", err)
295312
}
@@ -310,7 +327,7 @@ func createCronExampleEventSource() *eventsourcev1alpha1.EventSource {
310327
EventBusName: store.Get().EventBusName,
311328
Calendar: map[string]eventsourcev1alpha1.CalendarEventSource{
312329
store.Get().CronExampleEventName: {
313-
Interval: "5m",
330+
Interval: "30m",
314331
},
315332
},
316333
},
@@ -652,14 +669,37 @@ func createDemoWorkflowTemplate(gsFs fs.FS) error {
652669
},
653670
}
654671

655-
return gsFs.WriteYamls(store.Get().CronExampleWfTemplateFileName, wfTemplate)
672+
var err error
673+
674+
wfRedundanded, err := cleanUpFieldsWorkflowTemplate(wfTemplate)
675+
676+
if err != nil {
677+
err = gsFs.WriteYamls(store.Get().CronExampleWfTemplateFileName, wfTemplate)
678+
} else {
679+
err = gsFs.WriteYamls(store.Get().CronExampleWfTemplateFileName, wfRedundanded)
680+
}
681+
682+
if err != nil {
683+
return err
684+
}
685+
return err
656686
}
657687

658688
func createGithubExamplePipeline(opts *gitSourceGithubExampleOptions) error {
659689
// Create an ingress that will manage external access to the github eventsource service
690+
var err error
660691
ingress := createGithubExampleIngress(opts.ingressClass)
661692
ingressFilePath := opts.gsFs.Join(opts.gsCloneOpts.Path(), store.Get().GithubExampleIngressFileName)
662-
err := opts.gsCloneOpts.FS.WriteYamls(ingressFilePath, ingress)
693+
694+
ingressRedundanded, err := cleanUpFieldsIngressGithub(&ingress)
695+
696+
if err != nil {
697+
err = opts.gsCloneOpts.FS.WriteYamls(ingressFilePath, ingress)
698+
699+
} else {
700+
err = opts.gsCloneOpts.FS.WriteYamls(ingressFilePath, ingressRedundanded)
701+
}
702+
663703
if err != nil {
664704
return fmt.Errorf("failed to write yaml of github example ingress. Error: %w", err)
665705
}
@@ -668,19 +708,35 @@ func createGithubExamplePipeline(opts *gitSourceGithubExampleOptions) error {
668708
gsRepoURL := opts.gsCloneOpts.URL()
669709
eventSource := createGithubExampleEventSource(gsRepoURL, opts.ingressHost)
670710
eventSourceFilePath := opts.gsFs.Join(opts.gsCloneOpts.Path(), store.Get().GithubExampleEventSourceFileName)
671-
err = opts.gsCloneOpts.FS.WriteYamls(eventSourceFilePath, eventSource)
711+
712+
eventSourceRedundanded, err := cleanUpFieldsGithubEventSource(&eventSource)
713+
714+
if err != nil {
715+
err = opts.gsCloneOpts.FS.WriteYamls(eventSourceFilePath, eventSource)
716+
717+
} else {
718+
err = opts.gsCloneOpts.FS.WriteYamls(eventSourceFilePath, eventSourceRedundanded)
719+
}
720+
672721
if err != nil {
673722
return fmt.Errorf("failed to write yaml of secret. Error: %w", err)
674723
}
675724

676725
// Create a sensor that will listen to the events published by the github eventsource, and trigger workflows
677726
sensor := createGithubExampleSensor()
678727
sensorFilePath := opts.gsFs.Join(opts.gsCloneOpts.Path(), store.Get().GithubExampleSensorFileName)
679-
err = opts.gsCloneOpts.FS.WriteYamls(sensorFilePath, sensor)
728+
729+
sensorRedunded, err := cleanUpFieldsGithubSensor(&sensor)
730+
680731
if err != nil {
681-
return fmt.Errorf("failed to write yaml of github example sensor. Error: %w", err)
732+
err = opts.gsCloneOpts.FS.WriteYamls(sensorFilePath, sensor)
733+
} else {
734+
err = opts.gsCloneOpts.FS.WriteYamls(sensorFilePath, sensorRedunded)
682735
}
683736

737+
if err != nil {
738+
return fmt.Errorf("failed to write yaml of github example sensor. Error: %w", err)
739+
}
684740
return nil
685741
}
686742

@@ -830,3 +886,177 @@ func createGithubExampleSensor() *sensorsv1alpha1.Sensor {
830886
},
831887
}
832888
}
889+
890+
func cleanUpFieldsIngressGithub(ingress **netv1.Ingress) (map[string]interface{}, error) {
891+
892+
crd, err := unMarshalCustomObject(ingress)
893+
if err != nil {
894+
return nil, err
895+
}
896+
deleteRedundandedGeneralFields(crd)
897+
898+
return crd, nil
899+
900+
}
901+
902+
func cleanUpFieldsCronEventSource(eventSource **eventsourcev1alpha1.EventSource) (map[string]interface{}, error) {
903+
904+
crd, err := unMarshalCustomObject(eventSource)
905+
if err != nil {
906+
return nil, err
907+
}
908+
_, schedule := nestedMapLookup(crd, "spec", "calendar", "example-with-interval", "schedule")
909+
910+
if schedule != nil {
911+
delete(schedule, "schedule")
912+
}
913+
914+
deleteRedundandedGeneralFields(crd)
915+
916+
return crd, nil
917+
918+
}
919+
920+
func cleanUpFieldsWorkflowTemplate(eventSource *wfv1alpha1.WorkflowTemplate) (map[string]interface{}, error) {
921+
crd, err := unMarshalCustomObject(eventSource)
922+
if err != nil {
923+
return nil, err
924+
}
925+
926+
deleteRedundandedGeneralFields(crd)
927+
928+
return crd, nil
929+
930+
}
931+
932+
func cleanUpFieldsCronSensor(sensor **sensorsv1alpha1.Sensor) (map[string]interface{}, error) {
933+
crd, err := unMarshalCustomObject(sensor)
934+
if err != nil {
935+
return nil, err
936+
}
937+
938+
_, triggers := nestedMapLookup(crd, "spec", "triggers")
939+
if triggers != nil {
940+
for _, value := range triggers["triggers"].([]interface{}) {
941+
if rec, ok := value.(map[string]interface{}); ok {
942+
943+
_, resource := nestedMapLookup(rec, "template", "argoWorkflow", "source", "resource", "status")
944+
if resource != nil {
945+
delete(resource, "status")
946+
}
947+
_, metadata := nestedMapLookup(rec, "template", "argoWorkflow", "source", "resource", "metadata", "creationTimestamp")
948+
if metadata != nil {
949+
delete(metadata, "creationTimestamp")
950+
}
951+
}
952+
}
953+
954+
}
955+
956+
deleteRedundandedGeneralFields(crd)
957+
958+
return crd, nil
959+
960+
}
961+
962+
func cleanUpFieldsGithubEventSource(eventSource **eventsourcev1alpha1.EventSource) (map[string]interface{}, error) {
963+
crd, err := unMarshalCustomObject(eventSource)
964+
if err != nil {
965+
return nil, err
966+
}
967+
968+
_, targetPort := nestedMapLookup(crd, "spec", "service", "ports")
969+
if targetPort != nil {
970+
for _, value := range targetPort["ports"].([]interface{}) {
971+
if rec, ok := value.(map[string]interface{}); ok {
972+
_, targetPort := nestedMapLookup(rec, "targetPort")
973+
if targetPort != nil {
974+
delete(targetPort, "targetPort")
975+
}
976+
}
977+
}
978+
}
979+
980+
_, githup := nestedMapLookup(crd, "spec", "github", "push", "id")
981+
if githup != nil {
982+
delete(githup, "id")
983+
delete(githup, "owner")
984+
delete(githup, "repository")
985+
}
986+
987+
deleteRedundandedGeneralFields(crd)
988+
989+
return crd, nil
990+
991+
}
992+
993+
func cleanUpFieldsGithubSensor(sensor **sensorsv1alpha1.Sensor) (map[string]interface{}, error) {
994+
crd, err := unMarshalCustomObject(sensor)
995+
if err != nil {
996+
return nil, err
997+
}
998+
999+
//Delete redunded fields from sensor
1000+
_, triggers := nestedMapLookup(crd, "spec", "triggers")
1001+
if triggers != nil {
1002+
for _, value := range triggers["triggers"].([]interface{}) {
1003+
if rec, ok := value.(map[string]interface{}); ok {
1004+
1005+
_, resource := nestedMapLookup(rec, "template", "argoWorkflow", "source", "resource", "status")
1006+
if resource != nil {
1007+
delete(resource, "status")
1008+
}
1009+
_, metadata := nestedMapLookup(rec, "template", "argoWorkflow", "source", "resource", "metadata", "creationTimestamp")
1010+
if metadata != nil {
1011+
delete(metadata, "creationTimestamp")
1012+
}
1013+
}
1014+
}
1015+
1016+
}
1017+
1018+
deleteRedundandedGeneralFields(crd)
1019+
1020+
return crd, nil
1021+
1022+
}
1023+
1024+
func nestedMapLookup(m map[string]interface{}, ks ...string) (rval interface{}, mm map[string]interface{}) {
1025+
var ok bool
1026+
1027+
if len(ks) == 0 {
1028+
return nil, nil
1029+
}
1030+
if rval, ok = m[ks[0]]; !ok {
1031+
return nil, nil
1032+
} else if len(ks) == 1 {
1033+
return rval, m
1034+
} else if m, ok = rval.(map[string]interface{}); !ok {
1035+
return nil, nil
1036+
} else {
1037+
return nestedMapLookup(m, ks[1:]...)
1038+
}
1039+
}
1040+
1041+
func deleteRedundandedGeneralFields(crd map[string]interface{}) {
1042+
delete(crd, "status")
1043+
metadata := crd["metadata"].(map[string]interface{})
1044+
delete(metadata, "creationTimestamp")
1045+
1046+
}
1047+
1048+
func unMarshalCustomObject(obj interface{}) (map[string]interface{}, error) {
1049+
1050+
crd := make(map[string]interface{})
1051+
1052+
data, err := json.Marshal(obj)
1053+
if err != nil {
1054+
return nil, err
1055+
}
1056+
1057+
err = json.Unmarshal(data, &crd)
1058+
if err != nil {
1059+
return nil, err
1060+
}
1061+
return crd, nil
1062+
}

docs/releases/release_notes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ cf version
2323

2424
```bash
2525
# download and extract the binary
26-
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.230/cf-linux-amd64.tar.gz | tar zx
26+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.231/cf-linux-amd64.tar.gz | tar zx
2727

2828
# move the binary to your $PATH
2929
mv ./cf-linux-amd64 /usr/local/bin/cf
@@ -36,7 +36,7 @@ cf version
3636

3737
```bash
3838
# download and extract the binary
39-
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.230/cf-darwin-amd64.tar.gz | tar zx
39+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.231/cf-darwin-amd64.tar.gz | tar zx
4040

4141
# move the binary to your $PATH
4242
mv ./cf-darwin-amd64 /usr/local/bin/cf

manifests/runtime.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
namespace: '{{ namespace }}'
66
spec:
77
defVersion: 1.0.0
8-
version: 0.0.230
8+
version: 0.0.231
99
bootstrapSpecifier: github.com/codefresh-io/cli-v2/manifests/argo-cd
1010
components:
1111
- name: events

0 commit comments

Comments
 (0)