Skip to content

Commit f2274a5

Browse files
committed
Member status
1 parent 7de8bc8 commit f2274a5

File tree

4 files changed

+114
-64
lines changed

4 files changed

+114
-64
lines changed

dashboard/assets.go

Lines changed: 53 additions & 53 deletions
Large diffs are not rendered by default.

dashboard/src/deployment/MemberList.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const Field = styled('div')`
99
`;
1010

1111
const FieldLabel = styled('span')`
12-
width: 5rem;
12+
width: 9rem;
1313
display: inline-block;
1414
`;
1515

@@ -26,13 +26,26 @@ const MemberListView = ({group, activeMemberID, onClick, members, namespace}) =>
2626
</Segment>
2727
);
2828

29+
const MemberOfClusterView = (memberOfCluster) => {
30+
if (memberOfCluster === 'never') {
31+
return null;
32+
}
33+
return (
34+
<Field>
35+
<FieldLabel>Cluster member:</FieldLabel>
36+
{(memberOfCluster ==='true') ? "Yes" : "No"}
37+
</Field>
38+
);
39+
}
40+
2941
const MemberView = ({memberInfo, namespace, active, onClick}) => (
3042
<List.Item>
3143
<Accordion>
3244
<Accordion.Title active={active} onClick={() => onClick(memberInfo.id)}>
33-
<Icon name='dropdown' /> {memberInfo.id}
45+
<Icon name='dropdown' /> <Icon name={memberInfo.ready ? "check" : "bell"} /> {memberInfo.id}
3446
</Accordion.Title>
3547
<Accordion.Content active={active}>
48+
{MemberOfClusterView(memberInfo.member_of_cluster)}
3649
<Field>
3750
<FieldLabel>Pod:</FieldLabel>
3851
{memberInfo.pod_name || "-"}

pkg/deployment/server_member_api.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
package deployment
2424

2525
import (
26-
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1alpha"
2726
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27+
28+
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1alpha"
29+
"github.com/arangodb/kube-arangodb/pkg/server"
2830
)
2931

3032
type member struct {
@@ -66,3 +68,24 @@ func (m member) PVName() string {
6668
}
6769
return ""
6870
}
71+
72+
func (m member) MemberOfCluster() server.MemberOfCluster {
73+
switch m.group {
74+
case api.ServerGroupDBServers, api.ServerGroupCoordinators:
75+
if status, found := m.status(); found {
76+
if status.Conditions.IsTrue(api.ConditionTypeMemberOfCluster) {
77+
return server.IsMemberOfCluster
78+
} else {
79+
return server.IsNotMemberOfCluster
80+
}
81+
}
82+
}
83+
return server.NeverMemberOfCluster
84+
}
85+
86+
func (m member) Ready() bool {
87+
if status, found := m.status(); found {
88+
return status.Conditions.IsTrue(api.ConditionTypeReady)
89+
}
90+
return false
91+
}

pkg/server/handlers_deployment.go

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ type Member interface {
5555
PodName() string
5656
PVCName() string
5757
PVName() string
58+
MemberOfCluster() MemberOfCluster
59+
Ready() bool
5860
}
5961

6062
// DeploymentOperator is the API implemented by the deployment operator.
@@ -112,21 +114,33 @@ func newDeploymentInfo(d Deployment) DeploymentInfo {
112114
}
113115
}
114116

117+
type MemberOfCluster string
118+
119+
const (
120+
IsMemberOfCluster MemberOfCluster = "true"
121+
IsNotMemberOfCluster MemberOfCluster = "false"
122+
NeverMemberOfCluster MemberOfCluster = "never"
123+
)
124+
115125
// MemberInfo contains detailed info of a specific member of the deployment
116126
type MemberInfo struct {
117-
ID string `json:"id"`
118-
PodName string `json:"pod_name"`
119-
PVCName string `json:"pvc_name"`
120-
PVName string `json:"pv_name"`
127+
ID string `json:"id"`
128+
PodName string `json:"pod_name"`
129+
PVCName string `json:"pvc_name"`
130+
PVName string `json:"pv_name"`
131+
MemberOfCluster MemberOfCluster `json:"member_of_cluster"`
132+
Ready bool `json:"ready"`
121133
}
122134

123135
// newMemberInfo creates a MemberInfo for the given member
124136
func newMemberInfo(m Member) MemberInfo {
125137
return MemberInfo{
126-
ID: m.ID(),
127-
PodName: m.PodName(),
128-
PVCName: m.PVCName(),
129-
PVName: m.PVName(),
138+
ID: m.ID(),
139+
PodName: m.PodName(),
140+
PVCName: m.PVCName(),
141+
PVName: m.PVName(),
142+
MemberOfCluster: m.MemberOfCluster(),
143+
Ready: m.Ready(),
130144
}
131145
}
132146

0 commit comments

Comments
 (0)