Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ require (
github.com/onsi/ginkgo/v2 v2.22.2
github.com/onsi/gomega v1.36.2
github.com/prometheus/client_golang v1.20.5
github.com/uselagoon/machinery v0.0.31
github.com/uselagoon/machinery v0.0.35-0.20250907230447-55e831cff5b2
github.com/vshn/k8up v1.99.99
github.com/xhit/go-str2duration/v2 v2.1.0
golang.org/x/text v0.21.0
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1214,6 +1214,10 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/uselagoon/machinery v0.0.31 h1:SkJ+muPBb9Q5vNI0bgXxZai6jN103iSj3e3d3DcZlc4=
github.com/uselagoon/machinery v0.0.31/go.mod h1:RsHzIMOam3hiA4CKR12yANgzdTGy6tz4D19umjMzZyw=
github.com/uselagoon/machinery v0.0.35-0.20250905054447-dcba134effae h1:Rrrun4qliZunUVJxG0TWtygvvLcMbqiNM1Y+5ar8TmE=
github.com/uselagoon/machinery v0.0.35-0.20250905054447-dcba134effae/go.mod h1:G0ujppuNR0BrtAnlmH8xDb9TDfayb4A36aeo0DYg7fQ=
github.com/uselagoon/machinery v0.0.35-0.20250907230447-55e831cff5b2 h1:2tYU+GPIwBo1iyYCcXHgasDPZ1cmQyk2EoIOPdAeyDc=
github.com/uselagoon/machinery v0.0.35-0.20250907230447-55e831cff5b2/go.mod h1:G0ujppuNR0BrtAnlmH8xDb9TDfayb4A36aeo0DYg7fQ=
github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s=
Expand Down
54 changes: 18 additions & 36 deletions internal/controllers/v1beta2/buildpodmonitor_handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,19 @@ import (
lagooncrd "github.com/uselagoon/remote-controller/api/lagoon/v1beta2"
"github.com/uselagoon/remote-controller/internal/helpers"
"github.com/uselagoon/remote-controller/internal/metrics"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
meta "k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/apimachinery/pkg/types"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
)

type LagoonServices struct {
Services []schema.EnvironmentService `json:"services"`
Volumes []schema.EnvironmentVolume `json:"volumes"`
}

func (r *BuildMonitorReconciler) handleBuildMonitor(ctx context.Context,
opLog logr.Logger,
req ctrl.Request,
Expand Down Expand Up @@ -272,40 +274,20 @@ func (r *BuildMonitorReconciler) updateDeploymentAndEnvironmentTask(
Cluster: r.LagoonTargetName,
},
}
labelRequirements1, _ := labels.NewRequirement("lagoon.sh/service", selection.NotIn, []string{"faketest"})
listOption := (&client.ListOptions{}).ApplyOptions([]client.ListOption{
client.InNamespace(jobPod.Namespace),
client.MatchingLabelsSelector{
Selector: labels.NewSelector().Add(*labelRequirements1),
},
})
depList := &appsv1.DeploymentList{}
serviceNames := []string{}
services := []schema.EnvironmentService{}
if err := r.APIReader.List(context.TODO(), depList, listOption); err == nil {
// generate the list of services to add or update to the environment
for _, deployment := range depList.Items {
var serviceName, serviceType string
containers := []schema.ServiceContainer{}
if name, ok := deployment.Labels["lagoon.sh/service"]; ok {
serviceName = name
serviceNames = append(serviceNames, serviceName)
for _, container := range deployment.Spec.Template.Spec.Containers {
containers = append(containers, schema.ServiceContainer{Name: container.Name})
}
}
if sType, ok := deployment.Labels["lagoon.sh/service-type"]; ok {
serviceType = sType
}
// probably need to collect dbaas consumers too at some stage
services = append(services, schema.EnvironmentService{
Name: serviceName,
Type: serviceType,
Containers: containers,
})
lagoonServices := &corev1.ConfigMap{}
if err := r.APIReader.Get(ctx, types.NamespacedName{Namespace: jobPod.Namespace, Name: "lagoon-services"}, lagoonServices); err != nil {
if helpers.IgnoreNotFound(err) != nil {
return err
}
}
if val, ok := lagoonServices.Data["post-deploy"]; ok {
serviceConfig := LagoonServices{}
err := json.Unmarshal([]byte(val), &serviceConfig)
if err == nil {
fmt.Println(serviceConfig.Services)
fmt.Println(serviceConfig.Volumes)
msg.Meta.EnvironmentServices = serviceConfig.Services
}
msg.Meta.Services = serviceNames
msg.Meta.EnvironmentServices = services
}
route, routes, err := helpers.GetLagoonEnvRoutes(ctx, opLog, r.Client, namespace.Name)
// if we aren't being provided the lagoon config, we can skip adding the routes etc
Expand Down
55 changes: 19 additions & 36 deletions internal/messenger/build_messenger.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@ import (
lagooncrd "github.com/uselagoon/remote-controller/api/lagoon/v1beta2"
"github.com/uselagoon/remote-controller/internal/helpers"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
)

type LagoonServices struct {
Services []schema.EnvironmentService `json:"services"`
Volumes []schema.EnvironmentVolume `json:"volumes"`
}

// buildStatusLogsToLagoonLogs sends the logs to lagoon-logs message queue, used for general messaging
func (m *Messenger) BuildStatusLogsToLagoonLogs(
ctx context.Context,
Expand Down Expand Up @@ -117,40 +119,21 @@ func (m *Messenger) UpdateDeploymentAndEnvironmentTask(
Cluster: targetName,
},
}
labelRequirements1, _ := labels.NewRequirement("lagoon.sh/service", selection.NotIn, []string{"faketest"})
listOption := (&client.ListOptions{}).ApplyOptions([]client.ListOption{
client.InNamespace(lagoonBuild.Namespace),
client.MatchingLabelsSelector{
Selector: labels.NewSelector().Add(*labelRequirements1),
},
})
podList := &corev1.PodList{}
serviceNames := []string{}
services := []schema.EnvironmentService{}
if err := m.Client.List(context.TODO(), podList, listOption); err == nil {
// generate the list of services to add to the environment
for _, pod := range podList.Items {
var serviceName, serviceType string
containers := []schema.ServiceContainer{}
if name, ok := pod.Labels["lagoon.sh/service"]; ok {
serviceName = name
serviceNames = append(serviceNames, serviceName)
for _, container := range pod.Spec.Containers {
containers = append(containers, schema.ServiceContainer{Name: container.Name})
}
}
if sType, ok := pod.Labels["lagoon.sh/service-type"]; ok {
serviceType = sType
}
// probably need to collect dbaas consumers too at some stage
services = append(services, schema.EnvironmentService{
Name: serviceName,
Type: serviceType,
Containers: containers,
})
lagoonServices := &corev1.ConfigMap{}
if err := m.APIReader.Get(ctx, types.NamespacedName{Namespace: lagoonBuild.Namespace, Name: "lagoon-services"}, lagoonServices); err != nil {
if helpers.IgnoreNotFound(err) != nil {
opLog.Error(err, "configmap %s not found", "lagoon-services")
return
}
}
if val, ok := lagoonServices.Data["post-deploy"]; ok {
serviceConfig := LagoonServices{}
err := json.Unmarshal([]byte(val), &serviceConfig)
if err == nil {
fmt.Println(serviceConfig.Services)
fmt.Println(serviceConfig.Volumes)
msg.Meta.EnvironmentServices = serviceConfig.Services
}
msg.Meta.Services = serviceNames
msg.Meta.EnvironmentServices = services
}
if checkLagoonEnv {
route, routes, err := helpers.GetLagoonEnvRoutes(ctx, opLog, m.Client, lagoonBuild.Namespace)
Expand Down
Loading