-
Notifications
You must be signed in to change notification settings - Fork 162
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial set of pillar types related files
- for cluster multi-node mode, some of the initial pillar side types related files, additional changes will be added in later PRs Signed-off-by: Naiming Shen <naiming@zededa.com>
- Loading branch information
1 parent
cc44ccf
commit 4890f4e
Showing
4 changed files
with
177 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
// Copyright (c) 2024 Zededa, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package types | ||
|
||
import ( | ||
"net" | ||
|
||
uuid "github.com/satori/go.uuid" | ||
) | ||
|
||
const ( | ||
// ClusterStatusPort - Port for k3s server for cluster status advertise | ||
// See more detail description in pkg/pillar/docs/zedkube.md | ||
ClusterStatusPort = "12346" | ||
) | ||
|
||
// EdgeNodeClusterConfig - Configuration for cluster multi-node from controller | ||
type EdgeNodeClusterConfig struct { | ||
ClusterName string | ||
ClusterID UUIDandVersion | ||
// ClusterInterface - Interface to be used for kubernetes cluster for the node. | ||
// This can be a Management interface or an App-Shared interface. This is a logical | ||
// label of the port. | ||
ClusterInterface string | ||
// ClusterIPPrefix - IP Prefix for the kubernetes cluster Node IP. This IP prefix is | ||
// applied to the ClusterInterface. It can be the only IP prefix on the interface, or | ||
// it can be the 2nd IP prefix on the interface. | ||
ClusterIPPrefix *net.IPNet | ||
// IsWorkerNode - Is this node a worker node in the cluster, vs a kubernetes server node | ||
IsWorkerNode bool | ||
// JoinServerIP - The kubernetes server IP address to join for this node as part of the | ||
// multi-node cluster | ||
JoinServerIP net.IP | ||
// BootstrapNode - Is this node the bootstrap node for the cluster. In bringing up the | ||
// kubernetes cluster, one node is designated as the bootstrap node in HA server mode. | ||
// This node needs to be up first before other nodes can join the cluster. This BootstrapNode | ||
// will own the 'JoinServerIP' on it's cluster interface. | ||
BootstrapNode bool | ||
|
||
// CipherBlockStatus, for encrypted cluster token data | ||
CipherToken CipherBlockStatus | ||
} | ||
|
||
// ENClusterAppStatus - Status of an App Instance in the multi-node cluster | ||
type ENClusterAppStatus struct { | ||
AppUUID uuid.UUID // UUID of the appinstance | ||
IsDNidNode bool // DesignatedNodeID is set on the App for this node | ||
ScheduledOnThisNode bool // App is running on this device | ||
StatusRunning bool // Status of the app in "Running" state | ||
IsVolumeDetached bool // Are volumes detached after failover ? | ||
} | ||
|
||
// Key - returns the key for the config of EdgeNodeClusterConfig | ||
func (config EdgeNodeClusterConfig) Key() string { | ||
return config.ClusterID.UUID.String() | ||
} | ||
|
||
// EdgeNodeClusterStatus - Status of the multi-node cluster published by zedkube | ||
type EdgeNodeClusterStatus struct { | ||
ClusterName string | ||
ClusterID UUIDandVersion | ||
// ClusterInterface - Interface to be used for kubernetes cluster for the node. | ||
// This can be a Management interface or an App-Shared interface. This is a logical | ||
// label of the port. | ||
ClusterInterface string | ||
// ClusterIPPrefix - IP Prefix for the kubernetes cluster Node IP. This IP prefix is | ||
// applied to the ClusterInterface. It can be the only IP prefix on the interface, or | ||
// it can be the 2nd IP prefix on the interface. | ||
ClusterIPPrefix *net.IPNet | ||
// ClusterIPIsReady - Is the cluster IP address ready on the cluster interface | ||
ClusterIPIsReady bool | ||
// IsWorkerNode - Is this node a worker node in the cluster, vs a kubernetes server node | ||
IsWorkerNode bool | ||
// JoinServerIP - The kubernetes server IP address to join for this node as part of the | ||
// multi-node cluster | ||
JoinServerIP net.IP | ||
// BootstrapNode - Is this node the bootstrap node for the cluster. In bringing up the | ||
// kubernetes cluster, one node is designated as the bootstrap node in HA server mode. | ||
// This node needs to be up first before other nodes can join the cluster. This BootstrapNode | ||
// will own the 'JoinServerIP' on it's cluster interface. | ||
BootstrapNode bool | ||
|
||
Error ErrorDescription | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
// Copyright (c) 2024 Zededa, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package types | ||
|
||
import "time" | ||
|
||
// KubeNodeStatus - Enum for the status of a Kubernetes node | ||
type KubeNodeStatus int8 | ||
|
||
const ( | ||
KubeNodeStatusUnknown KubeNodeStatus = iota // KubeNodeStatusUnknown - Node status is unknown | ||
KubeNodeStatusReady // KubeNodeStatusReady - Node is in ready status | ||
KubeNodeStatusNotReady // KubeNodeStatusNotReady - Node is in not ready status | ||
KubeNodeStatusNotReachable // KubeNodeStatusNotReachable - Node is not reachable | ||
) | ||
|
||
// KubeNodeInfo - Information about a Kubernetes node | ||
type KubeNodeInfo struct { | ||
Name string | ||
Status KubeNodeStatus | ||
IsMaster bool | ||
UsesEtcd bool | ||
CreationTime time.Time | ||
LastTransitionTime time.Time | ||
KubeletVersion string | ||
InternalIP string | ||
ExternalIP string | ||
Schedulable bool | ||
} | ||
|
||
// KubePodStatus - Enum for the status of a Kubernetes pod | ||
type KubePodStatus int8 | ||
|
||
const ( | ||
KubePodStatusUnknown KubePodStatus = iota // KubePodStatusUnknown - Pod status is unknown | ||
KubePodStatusPending // KubePodStatusPending - Pod is in pending status | ||
KubePodStatusRunning // KubePodStatusRunning - Pod is in running status | ||
KubePodStatusSucceeded // KubePodStatusSucceeded - Pod is in succeeded status | ||
KubePodStatusFailed // KubePodStatusFailed - Pod is in failed status | ||
) | ||
|
||
// KubePodInfo - Information about a Kubernetes pod | ||
type KubePodInfo struct { | ||
Name string | ||
Status KubePodStatus | ||
RestartCount int32 | ||
RestartTimestamp time.Time | ||
CreationTimestamp time.Time | ||
PodIP string | ||
NodeName string | ||
} | ||
|
||
// KubeVMIStatus - Enum for the status of a VirtualMachineInstance | ||
type KubeVMIStatus int8 | ||
|
||
const ( | ||
KubeVMIStatusUnset KubeVMIStatus = iota // KubeVMIStatusUnset - UnSet VMI status | ||
KubeVMIStatusPending // KubeVMIStatusPending - VMI in pending status | ||
KubeVMIStatusScheduling // KubeVMIStatusScheduling - VMI in Scheduling status | ||
KubeVMIStatusScheduled // KubeVMIStatusScheduled - VMI in Scheduled status | ||
KubeVMIStatusRunning // KubeVMIStatusRunning - VMI in Running status | ||
KubeVMIStatusSucceeded // KubeVMIStatusSucceeded - VMI in Succeeded status | ||
KubeVMIStatusFailed // KubeVMIStatusFailed - VMI in Failed status | ||
KubeVMIStatusUnknown // KubeVMIStatusUnknown - VMI in Unknown status | ||
) | ||
|
||
// KubeVMIInfo - Information about a VirtualMachineInstance | ||
type KubeVMIInfo struct { | ||
Name string | ||
Status KubeVMIStatus | ||
CreationTime time.Time | ||
LastTransitionTime time.Time | ||
IsReady bool | ||
NodeName string | ||
} | ||
|
||
// KubeClusterInfo - Information about a Kubernetes cluster | ||
type KubeClusterInfo struct { | ||
Nodes []KubeNodeInfo // List of nodes in the cluster | ||
AppPods []KubePodInfo // List of EVE application pods | ||
AppVMIs []KubeVMIInfo // List of VirtualMachineInstance | ||
} |