Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
1636292
delete linstor-scheduler-extender
krpsh123 Apr 25, 2025
e05e3e3
fix go hooks
krpsh123 Apr 25, 2025
e73deac
chang log level
MrTomSawyer Apr 29, 2025
ab5d588
add log to rsc controller
MrTomSawyer Apr 29, 2025
ce05e4e
hardcode loglevel
MrTomSawyer Apr 30, 2025
a16c952
add LVGs to storage class
MrTomSawyer May 16, 2025
8a781c7
fix
MrTomSawyer May 16, 2025
1c3046b
add enum
MrTomSawyer May 16, 2025
26188f3
empty commit to restart build
MrTomSawyer May 16, 2025
9d03ade
enum fix
MrTomSawyer May 16, 2025
a5a9830
empty
MrTomSawyer May 16, 2025
90623d8
patch fix
MrTomSawyer May 16, 2025
888e12b
add lvm type and lvgs to sc params
MrTomSawyer May 19, 2025
af7cb4c
fix sc creation params
MrTomSawyer May 19, 2025
cc2d8c6
change StorageClassLVMVolumeGroupsParamKey value
MrTomSawyer May 26, 2025
b8f6b99
add drbd syncer
MrTomSawyer May 28, 2025
dcb1023
run tidy
MrTomSawyer May 28, 2025
970d03c
fix
MrTomSawyer May 28, 2025
b1eda2b
add image
MrTomSawyer May 29, 2025
7acfee3
webhooks run tidy
MrTomSawyer May 29, 2025
b8160c4
remove vars
AleksZimin May 29, 2025
77ca8ca
fix init
AleksZimin May 29, 2025
f8a98ad
fix image
AleksZimin May 29, 2025
e3253ca
add crds
MrTomSawyer May 29, 2025
ea02e0c
fix
AleksZimin May 29, 2025
f764662
add drbd resource
MrTomSawyer May 30, 2025
161b652
add createDRBDResource method
MrTomSawyer Jun 4, 2025
b6f049a
Merge branch 'main' into pkarp-delete-linstor-scheduler-extender
MrTomSawyer Jun 4, 2025
bdcf65a
add LayerResourceIds type and sync
MrTomSawyer Jun 4, 2025
4bf82ba
Empty commit
duckhawk Jun 4, 2025
de9a24b
sync logic upd
MrTomSawyer Jun 4, 2025
f0c9e94
Fix in choose-version
duckhawk Jun 4, 2025
b526d75
empty commit
MrTomSawyer Jun 4, 2025
a78c417
Fix in openapi scheme
duckhawk Jun 4, 2025
c754ef0
Fix in openapi scheme
duckhawk Jun 4, 2025
98d8612
add crbdreplica scheme
MrTomSawyer Jun 4, 2025
317394a
add namespace to syncer
MrTomSawyer Jun 5, 2025
96e9d3e
add logging
MrTomSawyer Jun 5, 2025
dcddf18
change map
MrTomSawyer Jun 5, 2025
7d49277
add pv name Tolower()
MrTomSawyer Jun 5, 2025
899c1fb
change namespace
MrTomSawyer Jun 5, 2025
5a38c8f
add rbac
MrTomSawyer Jun 5, 2025
c563926
add nodeName toLowerCase
MrTomSawyer Jun 5, 2025
b26c4a8
DRBDResourceReplica creation fix
MrTomSawyer Jun 5, 2025
bb0eab3
minor refactor
MrTomSawyer Jun 10, 2025
c70cf50
conflict fix merge main
krpsh123 Jun 11, 2025
436655b
fix
AleksZimin Jun 11, 2025
169d7cb
fix
AleksZimin Jun 11, 2025
b620d28
add logging to KubernetesDefaultConfigCreate
MrTomSawyer Jun 16, 2025
41bbee0
change kubeclient init
MrTomSawyer Jun 16, 2025
ea00338
add automountServiceAccountToken to linstor-csi spec
MrTomSawyer Jun 16, 2025
fa1c2b7
add layerresourceids controller watcher
MrTomSawyer Jun 16, 2025
a089914
disabled linstor client
MrTomSawyer Jun 16, 2025
7113407
add err handling in watcher
MrTomSawyer Jun 16, 2025
7bbd9af
add watcher logic
MrTomSawyer Jun 16, 2025
6c63dc3
bump CI
NikolayDemchuk Jul 25, 2025
b35a756
Merge branch 'main' into n-demchuk-common-scheduler
NikolayDemchuk Jul 25, 2025
c1ce1be
fix
NikolayDemchuk Jul 25, 2025
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
6 changes: 1 addition & 5 deletions .werf/consts.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,6 @@
{{- $_ := set $versions "LINSTOR_COMMON" "999c3c0793376f88b891eb7ef3dc8f8bc9aa26ec" }}
{{- $_ := set $versions "LINSTOR_CSI" "98544cadb6d111d27a86a11ec07de91b99704b82" }}
{{- $_ := set $versions "LINSTOR_K8S_AWAIT_ELECTION" "0.3.1" }}
{{- $_ := set $versions "LINSTOR_SCHEDULER_EXTENDER" "0.3.2" }}
# the closest version I found for the stork's module version v1.4.1-0.20220512171133-b99428ee1ddf which used in linstor-scheduler-extender v0.3.2
# https://github.com/libopenstorage/stork/pull/1097/commits
{{- $_ := set $versions "LINSTOR_SCHEDULER_STORK" "2.11.5" }}
{{- $_ := set $versions "LINSTOR_SERVER" "1.24.2" }}
# We are using Gradle version 6.9.3 because building Linstor Controller with version 7+ completes unsuccesfully with error:
# Could not set unknown property 'release' for object of type org.gradle.api.tasks.compile.CompileOptions.
Expand All @@ -45,4 +41,4 @@
{{- $_ := set $ "BUILD_PACKAGES" "build-essential rpm-build rpm-macros-intro-conflicts sudo git jq" }}
{{- $_ := set $ "DECKHOUSE_UID_GID" "64535" }}
{{- $_ := set $ "ALT_CLEANUP_CMD" "rm -rf /var/lib/apt/lists/* /var/cache/apt/* && mkdir -p /var/lib/apt/lists/partial /var/cache/apt/archives/partial" }}
{{- $_ := set $ "ALT_BASE_PACKAGES" "openssl libtirpc tzdata" }}
{{- $_ := set $ "ALT_BASE_PACKAGES" "openssl libtirpc tzdata" }}
26 changes: 15 additions & 11 deletions api/go.mod
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
module github.com/deckhouse/sds-replicated-volume/api

go 1.23.6
go 1.24.0

require k8s.io/apimachinery v0.30.2
toolchain go1.24.3

require k8s.io/apimachinery v0.33.1

require (
github.com/go-logr/logr v1.4.1 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
golang.org/x/net v0.40.0 // indirect
golang.org/x/text v0.25.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
golang.org/x/net v0.38.0 // indirect
golang.org/x/text v0.23.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
k8s.io/klog/v2 v2.120.1 // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
56 changes: 29 additions & 27 deletions api/go.sum
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
Expand All @@ -26,8 +26,10 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
Expand All @@ -39,8 +41,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand All @@ -49,8 +51,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
Expand All @@ -63,20 +65,20 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg=
k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
k8s.io/apimachinery v0.33.1 h1:mzqXWV8tW9Rw4VeW9rEkqvnxj59k1ezDUl20tFK/oM4=
k8s.io/apimachinery v0.33.1/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc=
sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
31 changes: 31 additions & 0 deletions api/linstor/layer_storage_resource_ids.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package linstor

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// LayerResourceIdsSpec defines the desired state of LayerResourceIds
type LayerResourceIdsSpec struct {
LayerResourceID int `json:"layer_resource_id"`
LayerResourceKind string `json:"layer_resource_kind"`
LayerResourceSuffix string `json:"layer_resource_suffix"`
LayerResourceSuspended bool `json:"layer_resource_suspended"`
NodeName string `json:"node_name"`
ResourceName string `json:"resource_name"`
SnapshotName string `json:"snapshot_name"`
}

// LayerResourceIds is the Schema for the layerresourceids API
type LayerResourceIds struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec LayerResourceIdsSpec `json:"spec,omitempty"`
}

// LayerResourceIdsList contains a list of LayerResourceIds
type LayerResourceIdsList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []LayerResourceIds `json:"items"`
}
2 changes: 2 additions & 0 deletions api/linstor/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&LayerStorageVolumesList{},
&ResourceDefinitions{},
&ResourceDefinitionsList{},
&LayerResourceIds{},
&LayerResourceIdsList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
Expand Down
61 changes: 61 additions & 0 deletions api/linstor/zz_generated.deepcopy.go
Original file line number Diff line number Diff line change
Expand Up @@ -502,3 +502,64 @@ func (in *ResourceDefinitionsList) DeepCopyObject() runtime.Object {
}

// ------------------- ResourceDefinitions ----------------------------

// ------------------- ResourceIds ----------------------------

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LayerResourceIds) DeepCopyInto(out *LayerResourceIds) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmptyBlockDevice.
func (in *LayerResourceIds) DeepCopy() *LayerResourceIds {
if in == nil {
return nil
}
out := new(LayerResourceIds)
in.DeepCopyInto(out)
return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *LayerResourceIds) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LayerResourceIdsList) DeepCopyInto(out *LayerResourceIdsList) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ListMeta.DeepCopyInto(&out.ListMeta)
if in.Items != nil {
in, out := &in.Items, &out.Items
*out = make([]LayerResourceIds, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GuestbookList.
func (in *LayerResourceIdsList) DeepCopy() *LayerResourceIdsList {
if in == nil {
return nil
}
out := new(LayerResourceIdsList)
in.DeepCopyInto(out)
return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *LayerResourceIdsList) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
return nil
}

// ------------------- ResourceIds ----------------------------
109 changes: 109 additions & 0 deletions api/v1alpha1/drbd_cluster.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
Copyright 2025 Flant JSC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// DRBDClusterSpec defines the desired state of DRBDCluster
// +k8s:deepcopy-gen=true
type DRBDClusterSpec struct {
Replicas int32 `json:"replicas"`
QuorumPolicy string `json:"quorumPolicy"`
NetworkPoolName string `json:"networkPoolName"`
SharedSecret string `json:"sharedSecret"`
Size int64 `json:"size"`
DrbdCurrentGi string `json:"drbdCurrentGi"`
Port int32 `json:"port"`
Minor int `json:"minor"`
AttachmentRequested []string `json:"attachmentRequested"`
TopologySpreadConstraints []TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"`
Affinity Affinity `json:"affinity,omitempty"`
AutoDiskful AutoDiskful `json:"autoDiskful,omitempty"`
AutoRecovery AutoRecovery `json:"autoRecovery,omitempty"`
StoragePoolSelector []metav1.LabelSelector `json:"storagePoolSelector,omitempty"`
}

// TopologySpreadConstraint specifies topology constraints
// +k8s:deepcopy-gen=true
type TopologySpreadConstraint struct {
MaxSkew int `json:"maxSkew"`
TopologyKey string `json:"topologyKey"`
WhenUnsatisfiable string `json:"whenUnsatisfiable"`
}

// Affinity defines node affinity scheduling rules
// +k8s:deepcopy-gen=true
type Affinity struct {
NodeAffinity NodeAffinity `json:"nodeAffinity,omitempty"`
}

// NodeAffinity specifies node selection criteria
// +k8s:deepcopy-gen=true
type NodeAffinity struct {
RequiredDuringSchedulingIgnoredDuringExecution NodeSelector `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
}

// NodeSelector represents constraints to match nodes
// +k8s:deepcopy-gen=true
type NodeSelector struct {
NodeSelectorTerms []NodeSelectorTerm `json:"nodeSelectorTerms"`
}

// NodeSelectorTerm defines node selection conditions
// +k8s:deepcopy-gen=true
type NodeSelectorTerm struct {
MatchExpressions []metav1.LabelSelectorRequirement `json:"matchExpressions"`
}

// AutoDiskful represents auto-diskful settings
// +k8s:deepcopy-gen=true
type AutoDiskful struct {
DelaySeconds int `json:"delaySeconds"`
}

// AutoRecovery represents auto-recovery settings
// +k8s:deepcopy-gen=true
type AutoRecovery struct {
DelaySeconds int `json:"delaySeconds"`
}

// DRBDClusterStatus defines the observed state of DRBDCluster
// +k8s:deepcopy-gen=true
type DRBDClusterStatus struct {
Size int64 `json:"size"`
AttachmentCompleted []string `json:"attachmentCompleted"`
Conditions []metav1.Condition `json:"conditions"`
}

// DRBDCluster is the Schema for the drbdclusters API
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type DRBDCluster struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec DRBDClusterSpec `json:"spec"`
Status DRBDClusterStatus `json:"status,omitempty"`
}

// DRBDClusterList is the list of DRBDClusters
// +k8s:deepcopy-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type DRBDClusterList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []DRBDCluster `json:"items"`
}
2 changes: 2 additions & 0 deletions api/v1alpha1/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&ReplicatedStorageClassList{},
&ReplicatedStoragePool{},
&ReplicatedStoragePoolList{},
&DRBDCluster{},
&DRBDClusterList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
Expand Down
Loading
Loading