Skip to content

Commit 1cbd6b0

Browse files
Reasonable-Solutionstronghn
authored andcommitted
Secrets: move graph nodes around
1 parent f68e134 commit 1cbd6b0

18 files changed

+65
-142
lines changed

internal/graph/app.resolvers.go

+13-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/graph/gengql/generated.go

+8-84
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/graph/model/secret.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ type Secret struct {
66
ID scalar.Ident `json:"id"` // This is a graphql ID, cahcing, deduplication etc
77
Name string `json:"name"`
88
Data map[string]string `json:"data"`
9-
Apps []string `json:"apps"`
9+
Apps []*App `json:"apps"`
1010
GQLVars SecretGQLVars `json:"-"` // Internal context for custom resolvers
1111
}
1212

1313
type EnvSecret struct {
14-
Env Env `json:"env"`
15-
Secrets []Secret `json:"secrets"`
14+
Env Env `json:"env"`
15+
Secrets []*Secret `json:"secrets"`
1616
}

internal/graph/secrets.resolvers.go

-30
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/graph/teams.resolvers.go

+12-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/k8s/secrets.go

+17-10
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ func (c *Client) Secrets(ctx context.Context, team slug.Slug) ([]*model.EnvSecre
5252
return nil, c.error(ctx, err, "mapping apps to secrets")
5353
}
5454

55-
graphSecrets := make([]model.Secret, 0)
55+
graphSecrets := make([]*model.Secret, 0)
5656
for _, secret := range kubeSecrets.Items {
5757
if !secretIsManagedByConsole(secret) {
5858
continue
5959
}
6060

61-
graphSecrets = append(graphSecrets, *toGraphSecret(env, &secret, appsForSecrets[secret.Name]))
61+
graphSecrets = append(graphSecrets, toGraphSecret(env, &secret, appsForSecrets[secret.Name]))
6262
}
6363
envSecrets = append(envSecrets, toGraphEnvSecret(env, team, graphSecrets...))
6464
}
@@ -199,15 +199,15 @@ func (c *Client) DeleteSecret(ctx context.Context, name string, team slug.Slug,
199199
}
200200

201201
// mapAppsBySecret returns a map of secrets to a list of apps that references said secret
202-
func (c *Client) mapAppsBySecret(ctx context.Context, team slug.Slug, env string) (map[string][]string, error) {
202+
func (c *Client) mapAppsBySecret(ctx context.Context, team slug.Slug, env string) (map[string][]*model.App, error) {
203203
// fetch apps to build map of apps that use each secret
204204
apps, err := c.informers[env].AppInformer.Lister().ByNamespace(team.String()).List(labels.Everything())
205205
if err != nil {
206206
return nil, c.error(ctx, err, fmt.Sprintf("listing applications for %q in %q", team, env))
207207
}
208208

209209
// we want a map: Secret -> [App]
210-
appsBySecret := make(map[string][]string)
210+
appsBySecret := make(map[string][]*model.App)
211211
for _, obj := range apps {
212212
u := obj.(*unstructured.Unstructured)
213213
app := &naisv1alpha1.Application{}
@@ -216,12 +216,15 @@ func (c *Client) mapAppsBySecret(ctx context.Context, team slug.Slug, env string
216216
return nil, fmt.Errorf("converting to application: %w", err)
217217
}
218218

219+
// Todo: Unignore the error
220+
modelApp, _ := c.App(ctx, app.Name, team.String(), env)
221+
219222
for _, secret := range app.Spec.EnvFrom {
220-
appsBySecret[secret.Secret] = append(appsBySecret[secret.Secret], app.Name)
223+
appsBySecret[secret.Secret] = append(appsBySecret[secret.Secret], modelApp)
221224
}
222225

223226
for _, secret := range app.Spec.FilesFrom {
224-
appsBySecret[secret.Secret] = append(appsBySecret[secret.Secret], app.Name)
227+
appsBySecret[secret.Secret] = append(appsBySecret[secret.Secret], modelApp)
225228
}
226229
}
227230

@@ -260,7 +263,7 @@ func kubeSecret(name, namespace, user string, data []*model.SecretTupleInput) *c
260263
}
261264
}
262265

263-
func toGraphEnvSecret(env string, team slug.Slug, secret ...model.Secret) *model.EnvSecret {
266+
func toGraphEnvSecret(env string, team slug.Slug, secret ...*model.Secret) *model.EnvSecret {
264267
return &model.EnvSecret{
265268
Env: model.Env{Team: team.String(), Name: env},
266269
Secrets: secret,
@@ -269,13 +272,17 @@ func toGraphEnvSecret(env string, team slug.Slug, secret ...model.Secret) *model
269272

270273
// toGraphSecret accepts apps as an empty list for cases where only the secret is getting
271274
// updated
272-
func toGraphSecret(env string, obj *corev1.Secret, apps []string) *model.Secret {
275+
func toGraphSecret(env string, obj *corev1.Secret, apps []*model.App) *model.Secret {
273276
if apps == nil {
274-
apps = make([]string, 0)
277+
apps = make([]*model.App, 0)
275278
}
276279

277280
// sort first as Compact only removes consecutive duplicates
278-
slices.Sort(apps)
281+
282+
slices.SortFunc(apps, func(a, b *model.App) int {
283+
return cmp.Compare(a.Name, b.Name)
284+
})
285+
279286
apps = slices.Compact(apps)
280287

281288
return &model.Secret{

pkg/protoapi/auditlogs.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/protoapi/auditlogs_grpc.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/protoapi/events.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/protoapi/pagination.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/protoapi/reconciler_resources.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/protoapi/reconciler_resources_grpc.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/protoapi/reconcilers.pb.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)