@@ -26,6 +26,7 @@ import (
2626 "github.com/codefresh-io/cli-v2/pkg/runtime"
2727 "github.com/codefresh-io/cli-v2/pkg/store"
2828 "github.com/codefresh-io/cli-v2/pkg/util"
29+ argodashboardutil "github.com/codefresh-io/cli-v2/pkg/util/argo-agent"
2930 cdutil "github.com/codefresh-io/cli-v2/pkg/util/cd"
3031 eventsutil "github.com/codefresh-io/cli-v2/pkg/util/events"
3132 ingressutil "github.com/codefresh-io/cli-v2/pkg/util/ingress"
@@ -274,6 +275,10 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
274275 }
275276 }
276277
278+ if err = createCodefreshArgoAgentReporter (ctx , opts .insCloneOpts , opts , rt ); err != nil {
279+ return fmt .Errorf ("failed to create argocd-agent-reporter: %w" , err )
280+ }
281+
277282 if err = createEventsReporter (ctx , opts .insCloneOpts , opts , rt ); err != nil {
278283 return fmt .Errorf ("failed to create events-reporter: %w" , err )
279284 }
@@ -745,7 +750,12 @@ func createEventsReporter(ctx context.Context, cloneOpts *git.CloneOptions, opts
745750 return fmt .Errorf ("failed to create argocd token secret: %w" , err )
746751 }
747752
748- if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , aputil .JoinManifests (runtimeTokenSecret , argoTokenSecret )); err != nil {
753+ argoAgentCFTokenSecret , err := getArgoCDAgentTokenSecret (ctx , cfConfig .GetCurrentContext ().Token , opts .RuntimeName )
754+ if err != nil {
755+ return fmt .Errorf ("failed to create argocd token secret: %w" , err )
756+ }
757+
758+ if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , aputil .JoinManifests (runtimeTokenSecret , argoTokenSecret , argoAgentCFTokenSecret )); err != nil {
749759 return fmt .Errorf ("failed to create codefresh token: %w" , err )
750760 }
751761
@@ -778,6 +788,41 @@ func createEventsReporter(ctx context.Context, cloneOpts *git.CloneOptions, opts
778788 return err
779789}
780790
791+ func createCodefreshArgoAgentReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions , rt * runtime.Runtime ) error {
792+ argoAgentCFTokenSecret , err := getArgoCDAgentTokenSecret (ctx , cfConfig .GetCurrentContext ().Token , opts .RuntimeName )
793+ if err != nil {
794+ return fmt .Errorf ("failed to create argocd token secret: %w" , err )
795+ }
796+
797+ if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , aputil .JoinManifests (argoAgentCFTokenSecret )); err != nil {
798+ return fmt .Errorf ("failed to create codefresh token: %w" , err )
799+ }
800+
801+ resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().ArgoCDAgentReporterName , opts .RuntimeName , "resources" )
802+ appDef := & runtime.AppDef {
803+ Name : store .Get ().ArgoCDAgentReporterName ,
804+ Type : application .AppTypeDirectory ,
805+ URL : cloneOpts .URL () + "/" + resPath ,
806+ }
807+ if err := appDef .CreateApp (ctx , opts .KubeFactory , cloneOpts , opts .RuntimeName , store .Get ().CFComponentType ); err != nil {
808+ return err
809+ }
810+
811+ r , _ , err := cloneOpts .GetRepo (ctx )
812+ if err != nil {
813+ return err
814+ }
815+
816+ if err := createCodefreshArgoDashboardAgent (ctx , resPath , cloneOpts , rt ); err != nil {
817+ return err
818+ }
819+
820+ _ , err = r .Persist (ctx , & git.PushOptions {
821+ CommitMsg : "Created ArgoCD Agent Reporter" ,
822+ })
823+ return err
824+ }
825+
781826func createWorkflowReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions ) error {
782827 resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().WorkflowReporterName , opts .RuntimeName , "resources" )
783828 appDef := & runtime.AppDef {
@@ -875,6 +920,22 @@ func getArgoCDTokenSecret(ctx context.Context, namespace string, insecure bool)
875920 })
876921}
877922
923+ func getArgoCDAgentTokenSecret (ctx context.Context , token string , namespace string ) ([]byte , error ) {
924+ return yaml .Marshal (& v1.Secret {
925+ TypeMeta : metav1.TypeMeta {
926+ APIVersion : "v1" ,
927+ Kind : "Secret" ,
928+ },
929+ ObjectMeta : metav1.ObjectMeta {
930+ Name : store .Get ().ArgoCDAgentCFTokenSecret ,
931+ Namespace : namespace ,
932+ },
933+ Data : map [string ][]byte {
934+ store .Get ().ArgoCDAgentCFTokenKey : []byte (token ),
935+ },
936+ })
937+ }
938+
878939func createWorkflowReporterRBAC (repofs fs.FS , path , runtimeName string ) error {
879940 serviceAccount := & v1.ServiceAccount {
880941 TypeMeta : metav1.TypeMeta {
@@ -982,3 +1043,22 @@ func createSensor(repofs fs.FS, name, path, namespace, eventSourceName, trigger,
9821043 })
9831044 return repofs .WriteYamls (repofs .Join (path , "sensor.yaml" ), sensor )
9841045}
1046+
1047+ func createCodefreshArgoDashboardAgent (ctx context.Context , path string , cloneOpts * git.CloneOptions , rt * runtime.Runtime ) error {
1048+ _ , fs , err := cloneOpts .GetRepo (ctx )
1049+ if err != nil {
1050+ return err
1051+ }
1052+ resource , err := argodashboardutil .CreateAgentResource ()
1053+ if err != nil {
1054+ return err
1055+ }
1056+
1057+ kust := argodashboardutil .CreateAgentResourceKustomize (& argodashboardutil.CreateAgentOptions {Namespace : rt .Namespace , Name : rt .Name })
1058+
1059+ if err = kustutil .WriteKustomization (fs , & kust , path ); err != nil {
1060+ return err
1061+ }
1062+
1063+ return billyUtils .WriteFile (fs , fs .Join (path , "argocd-agent.yaml" ), resource , 0666 )
1064+ }
0 commit comments