Skip to content

Commit 102d4ae

Browse files
authored
New API objects RemoteStorageNodeSet and RemoteDatabaseNodeSet (#173)
1 parent 3ab6413 commit 102d4ae

11 files changed

+9536
-4
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and Cust
5151
cp config/crd/bases/ydb.tech_databases.yaml deploy/ydb-operator/crds/database.yaml
5252
cp config/crd/bases/ydb.tech_storagenodesets.yaml deploy/ydb-operator/crds/storagenodeset.yaml
5353
cp config/crd/bases/ydb.tech_databasenodesets.yaml deploy/ydb-operator/crds/databasenodeset.yaml
54+
cp config/crd/bases/ydb.tech_remotestoragenodesets.yaml deploy/ydb-operator/crds/remotestoragenodeset.yaml
55+
cp config/crd/bases/ydb.tech_remotedatabasenodesets.yaml deploy/ydb-operator/crds/remotedatabasenodeset.yaml
5456
cp config/crd/bases/ydb.tech_databasemonitorings.yaml deploy/ydb-operator/crds/databasemonitoring.yaml
5557
cp config/crd/bases/ydb.tech_storagemonitorings.yaml deploy/ydb-operator/crds/storagemonitoring.yaml
5658

api/v1alpha1/common_types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,9 @@ type PodImage struct {
3434
// +optional
3535
PullSecret *string `json:"pullSecret,omitempty"`
3636
}
37+
38+
type RemoteSpec struct {
39+
// Remote cluster to deploy NodeSet into
40+
// +required
41+
Cluster string `json:"cluster"`
42+
}

api/v1alpha1/databasenodeset_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ type DatabaseNodeSetSpecInline struct {
3232

3333
// (Optional) Object should be reference to remote object
3434
// +optional
35-
Remote bool `json:"remote,omitempty"`
35+
Remote *RemoteSpec `json:"remote,omitempty"`
3636

3737
DatabaseNodeSpec `json:",inline"`
3838
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package v1alpha1
2+
3+
import (
4+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5+
)
6+
7+
//+kubebuilder:object:root=true
8+
//+kubebuilder:subresource:status
9+
//+kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.state",description="The status of this RemoteDatabaseNodeSet"
10+
//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
11+
12+
// RemoteDatabaseNodeSet declares NodeSet spec and status for objects in remote cluster
13+
type RemoteDatabaseNodeSet struct {
14+
metav1.TypeMeta `json:",inline"`
15+
// +optional
16+
metav1.ObjectMeta `json:"metadata,omitempty"`
17+
// +optional
18+
Spec DatabaseNodeSetSpec `json:"spec,omitempty"`
19+
// +optional
20+
// +kubebuilder:default:={state: "Pending"}
21+
Status DatabaseNodeSetStatus `json:"status,omitempty"`
22+
}
23+
24+
//+kubebuilder:object:root=true
25+
26+
// RemoteDatabaseNodeSetList contains a list of RemoteDatabaseNodeSet
27+
type RemoteDatabaseNodeSetList struct {
28+
metav1.TypeMeta `json:",inline"`
29+
metav1.ListMeta `json:"metadata,omitempty"`
30+
Items []RemoteDatabaseNodeSet `json:"items"`
31+
}
32+
33+
func init() {
34+
SchemeBuilder.Register(&RemoteDatabaseNodeSet{}, &RemoteDatabaseNodeSetList{})
35+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package v1alpha1
2+
3+
import (
4+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5+
)
6+
7+
//+kubebuilder:object:root=true
8+
//+kubebuilder:subresource:status
9+
//+kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.state",description="The status of this RemoteStorageNodeSet"
10+
//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
11+
12+
// RemoteStorageNodeSet declares NodeSet spec and status for objects in remote cluster
13+
type RemoteStorageNodeSet struct {
14+
metav1.TypeMeta `json:",inline"`
15+
// +optional
16+
metav1.ObjectMeta `json:"metadata,omitempty"`
17+
// +optional
18+
Spec StorageNodeSetSpec `json:"spec,omitempty"`
19+
// +optional
20+
// +kubebuilder:default:={state: "Pending"}
21+
Status StorageNodeSetStatus `json:"status,omitempty"`
22+
}
23+
24+
//+kubebuilder:object:root=true
25+
26+
// RemoteStorageNodeSetList contains a list of RemoteStorageNodeSet
27+
type RemoteStorageNodeSetList struct {
28+
metav1.TypeMeta `json:",inline"`
29+
metav1.ListMeta `json:"metadata,omitempty"`
30+
Items []RemoteStorageNodeSet `json:"items"`
31+
}
32+
33+
func init() {
34+
SchemeBuilder.Register(&RemoteStorageNodeSet{}, &RemoteStorageNodeSetList{})
35+
}

api/v1alpha1/storagenodeset_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ type StorageNodeSetSpecInline struct {
3232

3333
// (Optional) Object should be reference to remote object
3434
// +optional
35-
Remote bool `json:"remote,omitempty"`
35+
Remote *RemoteSpec `json:"remote,omitempty"`
3636

3737
StorageNodeSpec `json:",inline"`
3838
}

api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 143 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/ydb-operator/crds/database.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3175,7 +3175,13 @@ spec:
31753175
remote:
31763176
description: (Optional) Object should be reference to remote
31773177
object
3178-
type: boolean
3178+
properties:
3179+
cluster:
3180+
description: Remote cluster to deploy NodeSet into
3181+
type: string
3182+
required:
3183+
- cluster
3184+
type: object
31793185
resources:
31803186
description: (Optional) Database storage and compute resources
31813187
properties:

0 commit comments

Comments
 (0)