-
Notifications
You must be signed in to change notification settings - Fork 9
/
check.go
38 lines (33 loc) · 1.08 KB
/
check.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Copyright 2022 Namespace Labs Inc; All rights reserved.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
package compatibility
import (
enverr "namespacelabs.dev/foundation/internal/fnerrors/env"
"namespacelabs.dev/foundation/schema"
)
func CheckCompatible(env *schema.Environment, srv *schema.Server) error {
for _, req := range srv.GetEnvironmentRequirement() {
for _, r := range req.GetEnvironmentHasLabel() {
if !env.HasLabel(r) {
return enverr.IncompatibleEnvironmentErr{
Env: env,
ServerPackageName: schema.PackageName(srv.PackageName),
RequirementOwner: schema.PackageName(req.Package),
RequiredLabel: r,
}
}
}
for _, r := range req.GetEnvironmentDoesNotHaveLabel() {
if env.HasLabel(r) {
return enverr.IncompatibleEnvironmentErr{
Env: env,
ServerPackageName: schema.PackageName(srv.PackageName),
RequirementOwner: schema.PackageName(req.Package),
IncompatibleLabel: r,
}
}
}
}
return nil
}