Skip to content

Commit c65c909

Browse files
authored
[Feature] Manage ArangoMember within ArangoDeployment (#696)
1 parent cd3b1ad commit c65c909

File tree

93 files changed

+1129
-499
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+1129
-499
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ update-generated:
249249
"deepcopy" \
250250
"github.com/arangodb/kube-arangodb/pkg/generated" \
251251
"github.com/arangodb/kube-arangodb/pkg/apis" \
252-
"shared:v1 deployment:v1/member deployment:v2alpha1/member" \
252+
"shared:v1" \
253253
--go-header-file "./tools/codegen/boilerplate.go.txt" \
254254
$(VERIFYARGS)
255255

chart/kube-arangodb-crd/templates/member.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
4-
name: arangomembmers.database.arangodb.com
4+
name: arangomembers.database.arangodb.com
55
labels:
66
app.kubernetes.io/name: {{ template "kube-arangodb-crd.name" . }}
77
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}

chart/kube-arangodb/crds/member.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
4-
name: arangomembmers.database.arangodb.com
4+
name: arangomembers.database.arangodb.com
55
spec:
66
group: database.arangodb.com
77
names:

pkg/apis/deployment/definitions.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ const (
2727
ArangoDeploymentResourceKind = "ArangoDeployment"
2828
ArangoDeploymentResourcePlural = "arangodeployments"
2929

30+
ArangoMemberCRDName = ArangoMemberResourcePlural + "." + ArangoDeploymentGroupName
31+
ArangoMemberResourceKind = "ArangoMember"
32+
ArangoMemberResourcePlural = "arangomembers"
33+
3034
ArangoDeploymentGroupName = "database.arangodb.com"
3135
)
3236

pkg/apis/deployment/v1/arango_member.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
package v1
2424

2525
import (
26-
"github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1/member"
26+
"github.com/arangodb/kube-arangodb/pkg/apis/deployment"
2727
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
2828
)
2929

@@ -45,6 +45,20 @@ type ArangoMemberList struct {
4545
type ArangoMember struct {
4646
meta.TypeMeta `json:",inline"`
4747
meta.ObjectMeta `json:"metadata,omitempty"`
48-
Spec member.Spec `json:"spec,omitempty"`
49-
Status member.Status `json:"status,omitempty"`
48+
Spec ArangoMemberSpec `json:"spec,omitempty"`
49+
Status ArangoMemberStatus `json:"status,omitempty"`
50+
}
51+
52+
// AsOwner creates an OwnerReference for the given member
53+
func (a *ArangoMember) AsOwner() meta.OwnerReference {
54+
trueVar := true
55+
return meta.OwnerReference{
56+
APIVersion: SchemeGroupVersion.String(),
57+
Kind: deployment.ArangoMemberResourceKind,
58+
Name: a.Name,
59+
UID: a.UID,
60+
Controller: &trueVar,
61+
// For now BlockOwnerDeletion does not work on OpenShift, so we leave it out.
62+
//BlockOwnerDeletion: &trueVar,
63+
}
5064
}

pkg/apis/deployment/v2alpha1/member/spec.go renamed to pkg/apis/deployment/v1/arango_member_spec.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,14 @@
2020
// Author Adam Janikowski
2121
//
2222

23-
package member
23+
package v1
2424

2525
import core "k8s.io/api/core/v1"
2626

27-
type Spec struct {
27+
type ArangoMemberSpec struct {
28+
Group ServerGroup `json:"group,omitempty"`
29+
ID string `json:"id,omitempty"`
30+
2831
Template *core.PodTemplate `json:"template,omitempty"`
2932
TemplateChecksum string `json:"templateChecksum,omitempty"`
3033
}

pkg/apis/deployment/v2alpha1/member/status.go renamed to pkg/apis/deployment/v1/arango_member_status.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
// Author Adam Janikowski
2121
//
2222

23-
package member
23+
package v1
2424

25-
type Status struct {
25+
type ArangoMemberStatus struct {
2626
}

pkg/apis/deployment/v1/member/doc.go

Lines changed: 0 additions & 25 deletions
This file was deleted.

pkg/apis/deployment/v1/member/zz_generated.deepcopy.go

Lines changed: 0 additions & 66 deletions
This file was deleted.

pkg/apis/deployment/v1/member_status.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import (
2626
"reflect"
2727
"time"
2828

29+
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
30+
2931
"k8s.io/apimachinery/pkg/types"
3032

3133
driver "github.com/arangodb/go-driver"
@@ -155,3 +157,8 @@ func (s MemberStatus) IsNotReadySince(timestamp time.Time) bool {
155157
// A
156158
return s.CreatedAt.Time.Before(timestamp)
157159
}
160+
161+
// ArangoMemberName create member name from given member
162+
func (s MemberStatus) ArangoMemberName(deploymentName string, group ServerGroup) string {
163+
return k8sutil.CreatePodHostName(deploymentName, group.AsRole(), s.ID)
164+
}

0 commit comments

Comments
 (0)