Skip to content

Commit f63308c

Browse files
committed
feat: consume environment services from confimap
1 parent 5fe9c4f commit f63308c

File tree

4 files changed

+42
-73
lines changed

4 files changed

+42
-73
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ require (
1818
github.com/onsi/ginkgo/v2 v2.22.2
1919
github.com/onsi/gomega v1.36.2
2020
github.com/prometheus/client_golang v1.20.5
21-
github.com/uselagoon/machinery v0.0.31
21+
github.com/uselagoon/machinery v0.0.35-0.20250907230447-55e831cff5b2
2222
github.com/vshn/k8up v1.99.99
2323
github.com/xhit/go-str2duration/v2 v2.1.0
2424
golang.org/x/text v0.21.0

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,6 +1214,10 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX
12141214
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
12151215
github.com/uselagoon/machinery v0.0.31 h1:SkJ+muPBb9Q5vNI0bgXxZai6jN103iSj3e3d3DcZlc4=
12161216
github.com/uselagoon/machinery v0.0.31/go.mod h1:RsHzIMOam3hiA4CKR12yANgzdTGy6tz4D19umjMzZyw=
1217+
github.com/uselagoon/machinery v0.0.35-0.20250905054447-dcba134effae h1:Rrrun4qliZunUVJxG0TWtygvvLcMbqiNM1Y+5ar8TmE=
1218+
github.com/uselagoon/machinery v0.0.35-0.20250905054447-dcba134effae/go.mod h1:G0ujppuNR0BrtAnlmH8xDb9TDfayb4A36aeo0DYg7fQ=
1219+
github.com/uselagoon/machinery v0.0.35-0.20250907230447-55e831cff5b2 h1:2tYU+GPIwBo1iyYCcXHgasDPZ1cmQyk2EoIOPdAeyDc=
1220+
github.com/uselagoon/machinery v0.0.35-0.20250907230447-55e831cff5b2/go.mod h1:G0ujppuNR0BrtAnlmH8xDb9TDfayb4A36aeo0DYg7fQ=
12171221
github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM=
12181222
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
12191223
github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s=

internal/controllers/v1beta2/buildpodmonitor_handlers.go

Lines changed: 18 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,19 @@ import (
1616
lagooncrd "github.com/uselagoon/remote-controller/api/lagoon/v1beta2"
1717
"github.com/uselagoon/remote-controller/internal/helpers"
1818
"github.com/uselagoon/remote-controller/internal/metrics"
19-
appsv1 "k8s.io/api/apps/v1"
2019
corev1 "k8s.io/api/core/v1"
2120
meta "k8s.io/apimachinery/pkg/api/meta"
2221
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23-
"k8s.io/apimachinery/pkg/labels"
24-
"k8s.io/apimachinery/pkg/selection"
2522
"k8s.io/apimachinery/pkg/types"
2623
ctrl "sigs.k8s.io/controller-runtime"
2724
"sigs.k8s.io/controller-runtime/pkg/client"
2825
)
2926

27+
type LagoonServices struct {
28+
Services []schema.EnvironmentService `json:"services"`
29+
Volumes []schema.EnvironmentVolume `json:"volumes"`
30+
}
31+
3032
func (r *BuildMonitorReconciler) handleBuildMonitor(ctx context.Context,
3133
opLog logr.Logger,
3234
req ctrl.Request,
@@ -272,40 +274,20 @@ func (r *BuildMonitorReconciler) updateDeploymentAndEnvironmentTask(
272274
Cluster: r.LagoonTargetName,
273275
},
274276
}
275-
labelRequirements1, _ := labels.NewRequirement("lagoon.sh/service", selection.NotIn, []string{"faketest"})
276-
listOption := (&client.ListOptions{}).ApplyOptions([]client.ListOption{
277-
client.InNamespace(jobPod.Namespace),
278-
client.MatchingLabelsSelector{
279-
Selector: labels.NewSelector().Add(*labelRequirements1),
280-
},
281-
})
282-
depList := &appsv1.DeploymentList{}
283-
serviceNames := []string{}
284-
services := []schema.EnvironmentService{}
285-
if err := r.APIReader.List(context.TODO(), depList, listOption); err == nil {
286-
// generate the list of services to add or update to the environment
287-
for _, deployment := range depList.Items {
288-
var serviceName, serviceType string
289-
containers := []schema.ServiceContainer{}
290-
if name, ok := deployment.Labels["lagoon.sh/service"]; ok {
291-
serviceName = name
292-
serviceNames = append(serviceNames, serviceName)
293-
for _, container := range deployment.Spec.Template.Spec.Containers {
294-
containers = append(containers, schema.ServiceContainer{Name: container.Name})
295-
}
296-
}
297-
if sType, ok := deployment.Labels["lagoon.sh/service-type"]; ok {
298-
serviceType = sType
299-
}
300-
// probably need to collect dbaas consumers too at some stage
301-
services = append(services, schema.EnvironmentService{
302-
Name: serviceName,
303-
Type: serviceType,
304-
Containers: containers,
305-
})
277+
lagoonServices := &corev1.ConfigMap{}
278+
if err := r.APIReader.Get(ctx, types.NamespacedName{Namespace: jobPod.Namespace, Name: "lagoon-services"}, lagoonServices); err != nil {
279+
if helpers.IgnoreNotFound(err) != nil {
280+
return err
281+
}
282+
}
283+
if val, ok := lagoonServices.Data["post-deploy"]; ok {
284+
serviceConfig := LagoonServices{}
285+
err := json.Unmarshal([]byte(val), &serviceConfig)
286+
if err == nil {
287+
fmt.Println(serviceConfig.Services)
288+
fmt.Println(serviceConfig.Volumes)
289+
msg.Meta.EnvironmentServices = serviceConfig.Services
306290
}
307-
msg.Meta.Services = serviceNames
308-
msg.Meta.EnvironmentServices = services
309291
}
310292
route, routes, err := helpers.GetLagoonEnvRoutes(ctx, opLog, r.Client, namespace.Name)
311293
// if we aren't being provided the lagoon config, we can skip adding the routes etc

internal/messenger/build_messenger.go

Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ import (
1212
lagooncrd "github.com/uselagoon/remote-controller/api/lagoon/v1beta2"
1313
"github.com/uselagoon/remote-controller/internal/helpers"
1414
corev1 "k8s.io/api/core/v1"
15-
"k8s.io/apimachinery/pkg/labels"
16-
"k8s.io/apimachinery/pkg/selection"
1715
"k8s.io/apimachinery/pkg/types"
18-
"sigs.k8s.io/controller-runtime/pkg/client"
1916
)
2017

18+
type LagoonServices struct {
19+
Services []schema.EnvironmentService `json:"services"`
20+
Volumes []schema.EnvironmentVolume `json:"volumes"`
21+
}
22+
2123
// buildStatusLogsToLagoonLogs sends the logs to lagoon-logs message queue, used for general messaging
2224
func (m *Messenger) BuildStatusLogsToLagoonLogs(
2325
ctx context.Context,
@@ -117,40 +119,21 @@ func (m *Messenger) UpdateDeploymentAndEnvironmentTask(
117119
Cluster: targetName,
118120
},
119121
}
120-
labelRequirements1, _ := labels.NewRequirement("lagoon.sh/service", selection.NotIn, []string{"faketest"})
121-
listOption := (&client.ListOptions{}).ApplyOptions([]client.ListOption{
122-
client.InNamespace(lagoonBuild.Namespace),
123-
client.MatchingLabelsSelector{
124-
Selector: labels.NewSelector().Add(*labelRequirements1),
125-
},
126-
})
127-
podList := &corev1.PodList{}
128-
serviceNames := []string{}
129-
services := []schema.EnvironmentService{}
130-
if err := m.Client.List(context.TODO(), podList, listOption); err == nil {
131-
// generate the list of services to add to the environment
132-
for _, pod := range podList.Items {
133-
var serviceName, serviceType string
134-
containers := []schema.ServiceContainer{}
135-
if name, ok := pod.Labels["lagoon.sh/service"]; ok {
136-
serviceName = name
137-
serviceNames = append(serviceNames, serviceName)
138-
for _, container := range pod.Spec.Containers {
139-
containers = append(containers, schema.ServiceContainer{Name: container.Name})
140-
}
141-
}
142-
if sType, ok := pod.Labels["lagoon.sh/service-type"]; ok {
143-
serviceType = sType
144-
}
145-
// probably need to collect dbaas consumers too at some stage
146-
services = append(services, schema.EnvironmentService{
147-
Name: serviceName,
148-
Type: serviceType,
149-
Containers: containers,
150-
})
122+
lagoonServices := &corev1.ConfigMap{}
123+
if err := m.APIReader.Get(ctx, types.NamespacedName{Namespace: lagoonBuild.Namespace, Name: "lagoon-services"}, lagoonServices); err != nil {
124+
if helpers.IgnoreNotFound(err) != nil {
125+
opLog.Error(err, "configmap %s not found", "lagoon-services")
126+
return
127+
}
128+
}
129+
if val, ok := lagoonServices.Data["post-deploy"]; ok {
130+
serviceConfig := LagoonServices{}
131+
err := json.Unmarshal([]byte(val), &serviceConfig)
132+
if err == nil {
133+
fmt.Println(serviceConfig.Services)
134+
fmt.Println(serviceConfig.Volumes)
135+
msg.Meta.EnvironmentServices = serviceConfig.Services
151136
}
152-
msg.Meta.Services = serviceNames
153-
msg.Meta.EnvironmentServices = services
154137
}
155138
if checkLagoonEnv {
156139
route, routes, err := helpers.GetLagoonEnvRoutes(ctx, opLog, m.Client, lagoonBuild.Namespace)

0 commit comments

Comments
 (0)