-
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 316b999
Showing
4 changed files
with
147 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,56 @@ | ||
// Copyright (c) 2024 Zededa, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package types | ||
|
||
import ( | ||
"net" | ||
|
||
uuid "github.com/satori/go.uuid" | ||
) | ||
|
||
const ( | ||
ClusterStatusPort = "12346" // ClusterStatusPort - Port for k3s server for cluster status advertise | ||
) | ||
|
||
// EdgeNodeClusterConfig - Configuration for cluster multi-node from controller | ||
type EdgeNodeClusterConfig struct { | ||
ClusterName string | ||
ClusterID UUIDandVersion | ||
ClusterInterface string | ||
ClusterIPPrefix *net.IPNet | ||
IsWorkerNode bool | ||
JoinServerIP net.IP | ||
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 | ||
IsDNSet bool // DesignatedNodeID is set 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 string | ||
ClusterIPPrefix *net.IPNet | ||
ClusterIPIsReady bool | ||
IsWorkerNode bool | ||
JoinServerIP net.IP | ||
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,82 @@ | ||
// Copyright (c) 2024 Zededa, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package types | ||
|
||
import "time" | ||
|
||
type KubeNodeStatus int8 | ||
|
||
const ( | ||
KubeNodeStatusUnknown KubeNodeStatus = iota // KubeNodeStatusUnknown - Node status is unknown | ||
KubeNodeStatusReady | ||
KubeNodeStatusNotReady | ||
KubeNodeStatusNotReachable | ||
) | ||
|
||
// KubeNodeInfo - Information about a Kubernetes node | ||
type KubeNodeInfo struct { | ||
Name string | ||
Status KubeNodeStatus | ||
IsMaster bool | ||
IsEtcd 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 | ||
} |