Skip to content

Commit ad25360

Browse files
committed
Add logic for queue controller
Signed-off-by: Jason Parraga <sovietaced@gmail.com>
1 parent 28367eb commit ad25360

File tree

10 files changed

+1120
-165
lines changed

10 files changed

+1120
-165
lines changed

Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,11 @@ generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and
102102
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
103103

104104
.PHONY: mock
105-
mock: mockgen ## Generate mock client for k8sclient
105+
mock: mockgen ## Generate mock clients
106106
$(RM) test/k8sclient/mock_client.go
107107
mockgen -destination=test/k8sclient/mock_client.go -package=k8sclient "github.com/armadaproject/armada-operator/test/k8sclient" Client
108+
$(RM) test/armadaclient/mock_queue_client.go
109+
mockgen -destination=test/armadaclient/mock_queue_client.go -package=armadaclient "github.com/armadaproject/armada-operator/test/armadaclient" QueueClient
108110

109111
.PHONY: generate-helm-chart
110112
generate-helm-chart: manifests kustomize helmify ## Generate Helm chart from Kustomize manifests

api/core/v1alpha1/queue_types.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,30 @@ limitations under the License.
1717
package v1alpha1
1818

1919
import (
20+
"k8s.io/apimachinery/pkg/api/resource"
2021
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122
)
2223

23-
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
24-
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
24+
type PermissionSubject struct {
25+
Kind string `json:"kind,omitempty"`
26+
Name string `json:"name,omitempty"`
27+
}
28+
29+
type QueuePermissions struct {
30+
Subjects []PermissionSubject `json:"subjects,omitempty"`
31+
Verbs []string `json:"verbs,omitempty"`
32+
}
2533

2634
// QueueSpec defines the desired state of Queue
2735
type QueueSpec struct {
28-
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
29-
// Important: Run "make" to regenerate code after modifying this file
30-
31-
// Foo is an example field of Queue. Edit queue_types.go to remove/update
32-
Foo string `json:"foo,omitempty"`
36+
// PriorityFactor is a multiplicative constant which is applied to the priority.
37+
PriorityFactor *resource.Quantity `json:"priorityFactor,omitempty"`
38+
// Permissions describe who can perform what operations on queue related resources.
39+
Permissions []QueuePermissions `json:"permissions,omitempty"`
3340
}
3441

3542
// QueueStatus defines the observed state of Queue
3643
type QueueStatus struct {
37-
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
38-
// Important: Run "make" to regenerate code after modifying this file
3944
}
4045

4146
//+kubebuilder:object:root=true

api/core/v1alpha1/zz_generated.deepcopy.go

Lines changed: 53 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go.mod

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,86 @@
11
module github.com/armadaproject/armada-operator
22

3-
go 1.22.3
3+
go 1.23.2
44

55
require (
6+
github.com/armadaproject/armada v0.15.11
67
github.com/go-logr/logr v1.4.2
8+
github.com/gogo/protobuf v1.3.2
79
github.com/golang/mock v1.6.0
10+
github.com/google/go-cmp v0.6.0
811
github.com/onsi/ginkgo/v2 v2.19.0
912
github.com/onsi/gomega v1.33.1
1013
github.com/pkg/errors v0.9.1
11-
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.74.0
14+
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.77.2
1215
github.com/stretchr/testify v1.9.0
13-
k8s.io/api v0.30.1
14-
k8s.io/apimachinery v0.30.1
15-
k8s.io/client-go v0.30.1
16-
k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0
17-
sigs.k8s.io/controller-runtime v0.18.3
16+
google.golang.org/grpc v1.67.1
17+
google.golang.org/protobuf v1.35.1
18+
k8s.io/api v0.31.2
19+
k8s.io/apimachinery v0.31.2
20+
k8s.io/client-go v0.31.2
21+
k8s.io/utils v0.0.0-20240921022957-49e7df575cb6
22+
sigs.k8s.io/controller-runtime v0.19.1
1823
sigs.k8s.io/yaml v1.4.0
1924
)
2025

2126
require (
2227
github.com/beorn7/perks v1.0.1 // indirect
23-
github.com/cespare/xxhash/v2 v2.2.0 // indirect
28+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
2429
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
25-
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
30+
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
2631
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
2732
github.com/fsnotify/fsnotify v1.7.0 // indirect
33+
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
2834
github.com/go-logr/zapr v1.3.0 // indirect
29-
github.com/go-openapi/jsonpointer v0.20.0 // indirect
30-
github.com/go-openapi/jsonreference v0.20.2 // indirect
31-
github.com/go-openapi/swag v0.22.4 // indirect
35+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
36+
github.com/go-openapi/jsonreference v0.21.0 // indirect
37+
github.com/go-openapi/swag v0.23.0 // indirect
3238
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
33-
github.com/gogo/protobuf v1.3.2 // indirect
39+
github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a // indirect
40+
github.com/gogo/status v1.1.1 // indirect
3441
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
3542
github.com/golang/protobuf v1.5.4 // indirect
3643
github.com/google/gnostic-models v0.6.8 // indirect
37-
github.com/google/go-cmp v0.6.0 // indirect
3844
github.com/google/gofuzz v1.2.0 // indirect
39-
github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect
45+
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
4046
github.com/google/uuid v1.6.0 // indirect
47+
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
4148
github.com/imdario/mergo v0.3.16 // indirect
4249
github.com/josharian/intern v1.0.0 // indirect
4350
github.com/json-iterator/go v1.1.12 // indirect
51+
github.com/klauspost/compress v1.17.11 // indirect
4452
github.com/mailru/easyjson v0.7.7 // indirect
45-
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
53+
github.com/minio/highwayhash v1.0.2 // indirect
4654
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
4755
github.com/modern-go/reflect2 v1.0.2 // indirect
4856
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
4957
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
50-
github.com/prometheus/client_golang v1.18.0 // indirect
51-
github.com/prometheus/client_model v0.5.0 // indirect
52-
github.com/prometheus/common v0.45.0 // indirect
53-
github.com/prometheus/procfs v0.12.0 // indirect
58+
github.com/prometheus/client_golang v1.20.5 // indirect
59+
github.com/prometheus/client_model v0.6.1 // indirect
60+
github.com/prometheus/common v0.60.1 // indirect
61+
github.com/prometheus/procfs v0.15.1 // indirect
5462
github.com/spf13/pflag v1.0.5 // indirect
63+
github.com/x448/float16 v0.8.4 // indirect
5564
go.uber.org/multierr v1.11.0 // indirect
5665
go.uber.org/zap v1.27.0 // indirect
57-
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
58-
golang.org/x/net v0.25.0 // indirect
59-
golang.org/x/oauth2 v0.12.0 // indirect
60-
golang.org/x/sys v0.20.0 // indirect
61-
golang.org/x/term v0.20.0 // indirect
62-
golang.org/x/text v0.15.0 // indirect
63-
golang.org/x/time v0.3.0 // indirect
64-
golang.org/x/tools v0.21.0 // indirect
66+
golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect
67+
golang.org/x/net v0.30.0 // indirect
68+
golang.org/x/oauth2 v0.23.0 // indirect
69+
golang.org/x/sys v0.26.0 // indirect
70+
golang.org/x/term v0.25.0 // indirect
71+
golang.org/x/text v0.19.0 // indirect
72+
golang.org/x/time v0.7.0 // indirect
73+
golang.org/x/tools v0.26.0 // indirect
6574
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
66-
google.golang.org/appengine v1.6.8 // indirect
67-
google.golang.org/protobuf v1.33.0 // indirect
75+
google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect
76+
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
77+
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect
6878
gopkg.in/inf.v0 v0.9.1 // indirect
6979
gopkg.in/yaml.v2 v2.4.0 // indirect
7080
gopkg.in/yaml.v3 v3.0.1 // indirect
71-
k8s.io/apiextensions-apiserver v0.30.1 // indirect
72-
k8s.io/klog/v2 v2.120.1 // indirect
73-
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
74-
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
81+
k8s.io/apiextensions-apiserver v0.31.2 // indirect
82+
k8s.io/klog/v2 v2.130.1 // indirect
83+
k8s.io/kube-openapi v0.0.0-20241009091222-67ed5848f094 // indirect
84+
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
7585
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
7686
)

0 commit comments

Comments
 (0)