Skip to content

Commit 2a10f87

Browse files
authored
feat: Update Argo CD Agent's agent component API (#1930)
Signed-off-by: Mike Ng <ming@redhat.com>
1 parent e979a3f commit 2a10f87

19 files changed

+1261
-918
lines changed

api/v1alpha1/argocd_conversion.go

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,7 @@ func ConvertAlphaToBetaArgoCDAgent(src *ArgoCDAgentSpec) *v1beta1.ArgoCDAgentSpe
717717
if src != nil {
718718
dst = &v1beta1.ArgoCDAgentSpec{
719719
Principal: ConvertAlphaToBetaPrincipal(src.Principal),
720+
Agent: ConvertAlphaToBetaAgent(src.Agent),
720721
}
721722
}
722723
return dst
@@ -759,6 +760,7 @@ func ConvertBetaToAlphaArgoCDAgent(src *v1beta1.ArgoCDAgentSpec) *ArgoCDAgentSpe
759760
if src != nil {
760761
dst = &ArgoCDAgentSpec{
761762
Principal: ConvertBetaToAlphaPrincipal(src.Principal),
763+
Agent: ConvertBetaToAlphaAgent(src.Agent),
762764
}
763765
}
764766
return dst
@@ -927,6 +929,116 @@ func ConvertBetaToAlphaPrincipalJWT(src *v1beta1.PrincipalJWTSpec) *PrincipalJWT
927929
return dst
928930
}
929931

932+
func ConvertAlphaToBetaAgent(src *AgentSpec) *v1beta1.AgentSpec {
933+
var dst *v1beta1.AgentSpec
934+
if src != nil {
935+
dst = &v1beta1.AgentSpec{
936+
Enabled: src.Enabled,
937+
Creds: src.Creds,
938+
LogLevel: src.LogLevel,
939+
LogFormat: src.LogFormat,
940+
Image: src.Image,
941+
Env: src.Env,
942+
Client: ConvertAlphaToBetaAgentClient(src.Client),
943+
Redis: ConvertAlphaToBetaAgentRedis(src.Redis),
944+
TLS: ConvertAlphaToBetaAgentTLS(src.TLS),
945+
}
946+
}
947+
return dst
948+
}
949+
950+
func ConvertBetaToAlphaAgent(src *v1beta1.AgentSpec) *AgentSpec {
951+
var dst *AgentSpec
952+
if src != nil {
953+
dst = &AgentSpec{
954+
Enabled: src.Enabled,
955+
Creds: src.Creds,
956+
LogLevel: src.LogLevel,
957+
LogFormat: src.LogFormat,
958+
Image: src.Image,
959+
Env: src.Env,
960+
Client: ConvertBetaToAlphaAgentClient(src.Client),
961+
Redis: ConvertBetaToAlphaAgentRedis(src.Redis),
962+
TLS: ConvertBetaToAlphaAgentTLS(src.TLS),
963+
}
964+
}
965+
return dst
966+
}
967+
968+
func ConvertAlphaToBetaAgentClient(src *AgentClientSpec) *v1beta1.AgentClientSpec {
969+
var dst *v1beta1.AgentClientSpec
970+
if src != nil {
971+
dst = &v1beta1.AgentClientSpec{
972+
PrincipalServerAddress: src.PrincipalServerAddress,
973+
PrincipalServerPort: src.PrincipalServerPort,
974+
Mode: src.Mode,
975+
EnableWebSocket: src.EnableWebSocket,
976+
EnableCompression: src.EnableCompression,
977+
KeepAliveInterval: src.KeepAliveInterval,
978+
}
979+
}
980+
return dst
981+
}
982+
983+
func ConvertBetaToAlphaAgentClient(src *v1beta1.AgentClientSpec) *AgentClientSpec {
984+
var dst *AgentClientSpec
985+
if src != nil {
986+
dst = &AgentClientSpec{
987+
PrincipalServerAddress: src.PrincipalServerAddress,
988+
PrincipalServerPort: src.PrincipalServerPort,
989+
Mode: src.Mode,
990+
EnableWebSocket: src.EnableWebSocket,
991+
EnableCompression: src.EnableCompression,
992+
KeepAliveInterval: src.KeepAliveInterval,
993+
}
994+
}
995+
return dst
996+
}
997+
998+
func ConvertAlphaToBetaAgentRedis(src *AgentRedisSpec) *v1beta1.AgentRedisSpec {
999+
var dst *v1beta1.AgentRedisSpec
1000+
if src != nil {
1001+
dst = &v1beta1.AgentRedisSpec{
1002+
ServerAddress: src.ServerAddress,
1003+
}
1004+
}
1005+
return dst
1006+
}
1007+
1008+
func ConvertBetaToAlphaAgentRedis(src *v1beta1.AgentRedisSpec) *AgentRedisSpec {
1009+
var dst *AgentRedisSpec
1010+
if src != nil {
1011+
dst = &AgentRedisSpec{
1012+
ServerAddress: src.ServerAddress,
1013+
}
1014+
}
1015+
return dst
1016+
}
1017+
1018+
func ConvertAlphaToBetaAgentTLS(src *AgentTLSSpec) *v1beta1.AgentTLSSpec {
1019+
var dst *v1beta1.AgentTLSSpec
1020+
if src != nil {
1021+
dst = &v1beta1.AgentTLSSpec{
1022+
SecretName: src.SecretName,
1023+
RootCASecretName: src.RootCASecretName,
1024+
Insecure: src.Insecure,
1025+
}
1026+
}
1027+
return dst
1028+
}
1029+
1030+
func ConvertBetaToAlphaAgentTLS(src *v1beta1.AgentTLSSpec) *AgentTLSSpec {
1031+
var dst *AgentTLSSpec
1032+
if src != nil {
1033+
dst = &AgentTLSSpec{
1034+
SecretName: src.SecretName,
1035+
RootCASecretName: src.RootCASecretName,
1036+
Insecure: src.Insecure,
1037+
}
1038+
}
1039+
return dst
1040+
}
1041+
9301042
func ConvertAlphaToBetaNamespaceManagement(src []ManagedNamespaces) []v1beta1.ManagedNamespaces {
9311043
var dst []v1beta1.ManagedNamespaces
9321044
for _, s := range src {

api/v1alpha1/argocd_conversion_test.go

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,6 +678,121 @@ func TestAlphaToBetaConversion(t *testing.T) {
678678
}
679679
}),
680680
},
681+
{
682+
name: "ArgoCD Example - Agent Agent Basic",
683+
input: makeTestArgoCDAlpha(func(cr *ArgoCD) {
684+
enabled := true
685+
cr.Spec.ArgoCDAgent = &ArgoCDAgentSpec{
686+
Agent: &AgentSpec{
687+
Enabled: &enabled,
688+
Creds: "mtls:any",
689+
Client: &AgentClientSpec{
690+
PrincipalServerAddress: "argocd-agent-principal.example.com",
691+
PrincipalServerPort: "443",
692+
Mode: "managed",
693+
},
694+
},
695+
}
696+
}),
697+
expectedOutput: makeTestArgoCDBeta(func(cr *v1beta1.ArgoCD) {
698+
enabled := true
699+
cr.Spec.ArgoCDAgent = &v1beta1.ArgoCDAgentSpec{
700+
Agent: &v1beta1.AgentSpec{
701+
Enabled: &enabled,
702+
Creds: "mtls:any",
703+
Client: &v1beta1.AgentClientSpec{
704+
PrincipalServerAddress: "argocd-agent-principal.example.com",
705+
PrincipalServerPort: "443",
706+
Mode: "managed",
707+
},
708+
},
709+
}
710+
}),
711+
},
712+
{
713+
name: "ArgoCD Example - Agent Agent Full Configuration",
714+
input: makeTestArgoCDAlpha(func(cr *ArgoCD) {
715+
enabled := true
716+
enableWebSocket := true
717+
enableCompression := true
718+
insecure := true
719+
cr.Spec.ArgoCDAgent = &ArgoCDAgentSpec{
720+
Agent: &AgentSpec{
721+
Enabled: &enabled,
722+
Creds: "mtls:any",
723+
LogLevel: "info",
724+
LogFormat: "text",
725+
Image: "quay.io/user/argocd-agent:v1",
726+
Client: &AgentClientSpec{
727+
PrincipalServerAddress: "argocd-agent-principal.example.com",
728+
PrincipalServerPort: "443",
729+
Mode: "managed",
730+
EnableWebSocket: &enableWebSocket,
731+
EnableCompression: &enableCompression,
732+
KeepAliveInterval: "30s",
733+
},
734+
Redis: &AgentRedisSpec{
735+
ServerAddress: "redis:6379",
736+
},
737+
TLS: &AgentTLSSpec{
738+
SecretName: "agent-tls-secret",
739+
RootCASecretName: "agent-ca-secret",
740+
Insecure: &insecure,
741+
},
742+
},
743+
}
744+
}),
745+
expectedOutput: makeTestArgoCDBeta(func(cr *v1beta1.ArgoCD) {
746+
enabled := true
747+
enableWebSocket := true
748+
enableCompression := true
749+
insecure := true
750+
cr.Spec.ArgoCDAgent = &v1beta1.ArgoCDAgentSpec{
751+
Agent: &v1beta1.AgentSpec{
752+
Enabled: &enabled,
753+
Creds: "mtls:any",
754+
LogLevel: "info",
755+
LogFormat: "text",
756+
Image: "quay.io/user/argocd-agent:v1",
757+
Client: &v1beta1.AgentClientSpec{
758+
PrincipalServerAddress: "argocd-agent-principal.example.com",
759+
PrincipalServerPort: "443",
760+
Mode: "managed",
761+
EnableWebSocket: &enableWebSocket,
762+
EnableCompression: &enableCompression,
763+
KeepAliveInterval: "30s",
764+
},
765+
Redis: &v1beta1.AgentRedisSpec{
766+
ServerAddress: "redis:6379",
767+
},
768+
TLS: &v1beta1.AgentTLSSpec{
769+
SecretName: "agent-tls-secret",
770+
RootCASecretName: "agent-ca-secret",
771+
Insecure: &insecure,
772+
},
773+
},
774+
}
775+
}),
776+
},
777+
{
778+
name: "ArgoCD Example - Agent Agent Disabled",
779+
input: makeTestArgoCDAlpha(func(cr *ArgoCD) {
780+
enabled := false
781+
cr.Spec.ArgoCDAgent = &ArgoCDAgentSpec{
782+
Agent: &AgentSpec{
783+
Enabled: &enabled,
784+
},
785+
}
786+
}),
787+
expectedOutput: makeTestArgoCDBeta(func(cr *v1beta1.ArgoCD) {
788+
enabled := false
789+
cr.Spec.ArgoCDAgent = &v1beta1.ArgoCDAgentSpec{
790+
Agent: &v1beta1.AgentSpec{
791+
Enabled: &enabled,
792+
},
793+
}
794+
}),
795+
},
681796
}
682797

683798
for _, test := range tests {
@@ -939,6 +1054,127 @@ func TestBetaToAlphaConversion(t *testing.T) {
9391054
}
9401055
}),
9411056
},
1057+
{
1058+
name: "ArgoCD Example - Agent Agent Basic",
1059+
input: makeTestArgoCDBeta(func(cr *v1beta1.ArgoCD) {
1060+
enabled := true
1061+
cr.Spec.ArgoCDAgent = &v1beta1.ArgoCDAgentSpec{
1062+
Agent: &v1beta1.AgentSpec{
1063+
Enabled: &enabled,
1064+
Creds: "mtls:any",
1065+
Client: &v1beta1.AgentClientSpec{
1066+
PrincipalServerAddress: "argocd-agent-principal.example.com",
1067+
PrincipalServerPort: "443",
1068+
Mode: "managed",
1069+
},
1070+
},
1071+
}
1072+
}),
1073+
expectedOutput: makeTestArgoCDAlpha(func(cr *ArgoCD) {
1074+
enabled := true
1075+
cr.Spec.ArgoCDAgent = &ArgoCDAgentSpec{
1076+
Agent: &AgentSpec{
1077+
Enabled: &enabled,
1078+
Creds: "mtls:any",
1079+
Client: &AgentClientSpec{
1080+
PrincipalServerAddress: "argocd-agent-principal.example.com",
1081+
PrincipalServerPort: "443",
1082+
Mode: "managed",
1083+
},
1084+
},
1085+
}
1086+
}),
1087+
},
1088+
{
1089+
name: "ArgoCD Example - Agent Agent Full Configuration",
1090+
input: makeTestArgoCDBeta(func(cr *v1beta1.ArgoCD) {
1091+
enabled := true
1092+
enableWebSocket := true
1093+
enableCompression := true
1094+
insecure := true
1095+
cr.Spec.ArgoCDAgent = &v1beta1.ArgoCDAgentSpec{
1096+
Agent: &v1beta1.AgentSpec{
1097+
Enabled: &enabled,
1098+
Creds: "mtls:any",
1099+
LogLevel: "info",
1100+
LogFormat: "text",
1101+
Image: "quay.io/user/argocd-agent:v1",
1102+
Env: []corev1.EnvVar{
1103+
{Name: "TEST_ENV", Value: "test-value"},
1104+
},
1105+
Client: &v1beta1.AgentClientSpec{
1106+
PrincipalServerAddress: "argocd-agent-principal.example.com",
1107+
PrincipalServerPort: "443",
1108+
Mode: "managed",
1109+
EnableWebSocket: &enableWebSocket,
1110+
EnableCompression: &enableCompression,
1111+
KeepAliveInterval: "30s",
1112+
},
1113+
Redis: &v1beta1.AgentRedisSpec{
1114+
ServerAddress: "redis:6379",
1115+
},
1116+
TLS: &v1beta1.AgentTLSSpec{
1117+
SecretName: "agent-tls-secret",
1118+
RootCASecretName: "agent-ca-secret",
1119+
Insecure: &insecure,
1120+
},
1121+
},
1122+
}
1123+
}),
1124+
expectedOutput: makeTestArgoCDAlpha(func(cr *ArgoCD) {
1125+
enabled := true
1126+
enableWebSocket := true
1127+
enableCompression := true
1128+
insecure := true
1129+
cr.Spec.ArgoCDAgent = &ArgoCDAgentSpec{
1130+
Agent: &AgentSpec{
1131+
Enabled: &enabled,
1132+
Creds: "mtls:any",
1133+
LogLevel: "info",
1134+
LogFormat: "text",
1135+
Image: "quay.io/user/argocd-agent:v1",
1136+
Env: []corev1.EnvVar{
1137+
{Name: "TEST_ENV", Value: "test-value"},
1138+
},
1139+
Client: &AgentClientSpec{
1140+
PrincipalServerAddress: "argocd-agent-principal.example.com",
1141+
PrincipalServerPort: "443",
1142+
Mode: "managed",
1143+
EnableWebSocket: &enableWebSocket,
1144+
EnableCompression: &enableCompression,
1145+
KeepAliveInterval: "30s",
1146+
},
1147+
Redis: &AgentRedisSpec{
1148+
ServerAddress: "redis:6379",
1149+
},
1150+
TLS: &AgentTLSSpec{
1151+
SecretName: "agent-tls-secret",
1152+
RootCASecretName: "agent-ca-secret",
1153+
Insecure: &insecure,
1154+
},
1155+
},
1156+
}
1157+
}),
1158+
},
1159+
{
1160+
name: "ArgoCD Example - Agent Agent Disabled",
1161+
input: makeTestArgoCDBeta(func(cr *v1beta1.ArgoCD) {
1162+
enabled := false
1163+
cr.Spec.ArgoCDAgent = &v1beta1.ArgoCDAgentSpec{
1164+
Agent: &v1beta1.AgentSpec{
1165+
Enabled: &enabled,
1166+
},
1167+
}
1168+
}),
1169+
expectedOutput: makeTestArgoCDAlpha(func(cr *ArgoCD) {
1170+
enabled := false
1171+
cr.Spec.ArgoCDAgent = &ArgoCDAgentSpec{
1172+
Agent: &AgentSpec{
1173+
Enabled: &enabled,
1174+
},
1175+
}
1176+
}),
1177+
},
9421178
}
9431179
for _, test := range tests {
9441180
t.Run(test.name, func(t *testing.T) {

0 commit comments

Comments
 (0)