Skip to content

Commit e89698e

Browse files
authored
Merge pull request #117 from uselagoon/fix/deal-with-slashes
Fix for slashes in environment names
2 parents b411b93 + fd6bd7b commit e89698e

File tree

7 files changed

+266
-109
lines changed

7 files changed

+266
-109
lines changed

go.mod

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ require (
99
github.com/joho/godotenv v1.5.1
1010
github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2
1111
github.com/stretchr/testify v1.10.0
12+
github.com/uselagoon/machinery v0.0.34
1213
)
1314

1415
require (
@@ -39,8 +40,8 @@ require (
3940
github.com/streadway/amqp v1.1.0 // indirect
4041
github.com/stretchr/objx v0.5.2 // indirect
4142
github.com/vektah/gqlparser/v2 v2.5.21 // indirect
42-
golang.org/x/crypto v0.31.0 // indirect
43-
golang.org/x/sys v0.28.0 // indirect
43+
golang.org/x/crypto v0.32.0 // indirect
44+
golang.org/x/sys v0.29.0 // indirect
4445
golang.org/x/text v0.21.0 // indirect
4546
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
4647
)

go.sum

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ github.com/terminalstatic/go-xsd-validate v0.1.6/go.mod h1:18lsvYFofBflqCrvo1ump
178178
github.com/tiago4orion/conjure v0.0.0-20150908101743-93cb30b9d218 h1:tOESt7J50fPC9NqR0VdU1Zxk2zo5QYH70ap5TsU1bt4=
179179
github.com/tiago4orion/conjure v0.0.0-20150908101743-93cb30b9d218/go.mod h1:GQei++1WClbEC7AN1B9ipY1jCjzllM/7UNg0okAh/Z4=
180180
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
181+
github.com/uselagoon/machinery v0.0.34 h1:5DsvXEyMeXmzQhjt11YH7+kZJueabovrwKTv0x7jQV8=
182+
github.com/uselagoon/machinery v0.0.34/go.mod h1:G0ujppuNR0BrtAnlmH8xDb9TDfayb4A36aeo0DYg7fQ=
181183
github.com/vektah/gqlparser/v2 v2.5.21 h1:Zw1rG2dr1pRR4wqwbVq4d6+xk2f4ut/yo+hwr4QjE08=
182184
github.com/vektah/gqlparser/v2 v2.5.21/go.mod h1:xMl+ta8a5M1Yo1A1Iwt/k7gSpscwSnHZdw7tfhEGfTM=
183185
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
@@ -194,8 +196,8 @@ go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
194196
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
195197
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
196198
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
197-
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
198-
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
199+
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
200+
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
199201
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
200202
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
201203
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
@@ -243,8 +245,8 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
243245
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
244246
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
245247
golang.org/x/sys v0.0.0-20210216224549-f992740a1bac/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
246-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
247-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
248+
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
249+
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
248250
golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
249251
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
250252
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=

internal/handler/insightsParserFilter.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
cdx "github.com/CycloneDX/cyclonedx-go"
66
"github.com/Khan/genqlient/graphql"
7+
"github.com/uselagoon/machinery/utils/namespace"
78
"log/slog"
89
)
910

@@ -21,8 +22,8 @@ func processSbomInsightsData(h *Messaging, insights InsightsData, v string, apiC
2122
return []LagoonFact{}, "", err
2223
}
2324

24-
// Determine lagoon resource destination
25-
_, environment, apiErr := determineResourceFromLagoonAPI(apiClient, resource)
25+
kubernetesNamespaceName := namespace.GenerateNamespaceName("", resource.Environment, resource.Project, "", "", false)
26+
_, environment, apiErr := determineResourceFromLagoonAPIByKubernetesNamespace(apiClient, kubernetesNamespaceName)
2627
if apiErr != nil {
2728
return nil, "", apiErr
2829
}

internal/handler/main.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"encoding/base64"
99
"encoding/json"
1010
"fmt"
11+
"github.com/uselagoon/machinery/utils/namespace"
1112
"io"
1213
"io/ioutil"
1314
"log"
@@ -428,24 +429,28 @@ func (h *Messaging) getApiClient() graphql.Client {
428429
return apiClient
429430
}
430431

431-
func determineResourceFromLagoonAPI(apiClient graphql.Client, resource ResourceDestination) (lagoonclient.Project, lagoonclient.Environment, error) {
432-
// Get project data (we need the project ID to be able to utilise the environmentByName query)
433-
project, err := lagoonclient.GetProjectByName(context.TODO(), apiClient, resource.Project)
432+
func determineResourceFromLagoonAPIByKubernetesNamespace(apiClient graphql.Client, k8sNamespaceName string) (lagoonclient.Project, lagoonclient.Environment, error) {
433+
project, environment, err := lagoonclient.GetEnvironmentFromKubernetesNamespaceName(context.TODO(), apiClient, k8sNamespaceName)
434434
if err != nil {
435-
return lagoonclient.Project{}, lagoonclient.Environment{}, fmt.Errorf("error: unable to determine resource destination (does %s:%s exist?): %v", resource.Project, resource.Environment, err.Error())
435+
return lagoonclient.Project{}, lagoonclient.Environment{}, fmt.Errorf("error: unable to determine resource destination (does %s exist?): %v", k8sNamespaceName, err.Error())
436436
}
437-
438437
if project.Id == 0 || project.Name == "" {
439-
return lagoonclient.Project{}, lagoonclient.Environment{}, fmt.Errorf("error: unable to determine resource destination (does %s:%s exist?): %v", resource.Project, resource.Environment, err.Error())
438+
return lagoonclient.Project{}, lagoonclient.Environment{}, fmt.Errorf("error: unable to determine resource destination (does %s exist?): %v", k8sNamespaceName, err.Error())
440439
}
441-
442-
environment, err := lagoonclient.GetEnvironmentFromName(context.TODO(), apiClient, resource.Environment, project.Id)
443-
if err != nil {
444-
return lagoonclient.Project{}, lagoonclient.Environment{}, err
440+
if environment.Id == 0 || environment.Name == "" {
441+
return lagoonclient.Project{}, lagoonclient.Environment{}, fmt.Errorf("error: unable to determine resource destination (does %s exist?): %v", k8sNamespaceName, err.Error())
445442
}
443+
446444
return project, environment, nil
447445
}
448446

447+
func determineResourceFromLagoonAPI(apiClient graphql.Client, resource ResourceDestination) (lagoonclient.Project, lagoonclient.Environment, error) {
448+
// Determine lagoon resource destination
449+
// let's grab the environment via the kubernetes namespace
450+
kubernetesNamespaceName := namespace.GenerateNamespaceName("", resource.Environment, resource.Project, "", "", false)
451+
return determineResourceFromLagoonAPIByKubernetesNamespace(apiClient, kubernetesNamespaceName)
452+
}
453+
449454
func (h *Messaging) sendToLagoonS3(incoming *InsightsMessage, insights InsightsData, resource ResourceDestination) (err error) {
450455
// strip http/s protocol from origin
451456
u, _ := url.Parse(h.S3Config.S3Origin)

internal/lagoonclient/facts.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,25 @@ func GetEnvironmentFromName(ctx context.Context, client graphql.Client, environm
5959
}, nil
6060
}
6161

62+
func GetEnvironmentFromKubernetesNamespaceName(ctx context.Context, client graphql.Client, kubernetesNamespaceName string) (Project, Environment, error) {
63+
var ret Environment
64+
var retProject Project
65+
66+
resp, err := getEnvironmentByNamespaceName(ctx, client, kubernetesNamespaceName)
67+
if err != nil {
68+
return retProject, ret, err
69+
}
70+
71+
return Project{
72+
Id: resp.EnvironmentByKubernetesNamespaceName.Project.Id,
73+
Name: resp.EnvironmentByKubernetesNamespaceName.Project.Name,
74+
}, Environment{
75+
Id: resp.EnvironmentByKubernetesNamespaceName.Id,
76+
Name: resp.EnvironmentByKubernetesNamespaceName.Name,
77+
}, nil
78+
79+
}
80+
6281
func GetEnvironmentFromID(ctx context.Context, client graphql.Client, environmentID int) (Environment, error) {
6382
var ret Environment
6483

0 commit comments

Comments
 (0)