1
1
package get
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
5
-
6
6
"github.com/cnoe-io/idpbuilder/pkg/cmd/helpers"
7
+ "github.com/cnoe-io/idpbuilder/pkg/kind"
8
+ "github.com/cnoe-io/idpbuilder/pkg/util"
7
9
"github.com/spf13/cobra"
10
+ corev1 "k8s.io/api/core/v1"
11
+ "os"
8
12
"sigs.k8s.io/kind/pkg/cluster"
9
13
)
10
14
@@ -16,19 +20,60 @@ var ClustersCmd = &cobra.Command{
16
20
PreRunE : preClustersE ,
17
21
}
18
22
23
+ var kubeCfgPath string
24
+
19
25
func preClustersE (cmd * cobra.Command , args []string ) error {
20
26
return helpers .SetLogger ()
21
27
}
22
28
23
29
func list (cmd * cobra.Command , args []string ) error {
24
- provider := cluster .NewProvider (cluster .ProviderWithDocker ())
30
+ logger := helpers .CmdLogger
31
+
32
+ detectOpt , err := util .DetectKindNodeProvider ()
33
+ if err != nil {
34
+ logger .Error (err , "failed to detect the provider." )
35
+ os .Exit (1 )
36
+ }
37
+
38
+ kubeConfig , err := helpers .GetKubeConfig ()
39
+ if err != nil {
40
+ logger .Error (err , "failed to create the kube config." )
41
+ os .Exit (1 )
42
+ }
43
+
44
+ cli , err := helpers .GetKubeClient (kubeConfig )
45
+ if err != nil {
46
+ logger .Error (err , "failed to create the kube client." )
47
+ os .Exit (1 )
48
+ }
49
+
50
+ provider := cluster .NewProvider (cluster .ProviderWithLogger (kind .KindLoggerFromLogr (& logger )), detectOpt )
25
51
clusters , err := provider .List ()
26
52
if err != nil {
27
- return fmt . Errorf ( "failed to list clusters: %w" , err )
53
+ logger . Error ( err , "failed to list clusters." )
28
54
}
29
55
30
56
for _ , c := range clusters {
31
- fmt .Println (c )
57
+ fmt .Printf ("Cluster: %s\n " , c )
58
+ var nodeList corev1.NodeList
59
+ err := cli .List (context .TODO (), & nodeList )
60
+ if err != nil {
61
+ logger .Error (err , "failed to list nodes for cluster: %s" , c )
62
+ }
63
+ for _ , node := range nodeList .Items {
64
+ nodeName := node .Name
65
+ fmt .Printf (" Node: %s\n " , nodeName )
66
+
67
+ for _ , addr := range node .Status .Addresses {
68
+ switch addr .Type {
69
+ case corev1 .NodeInternalIP :
70
+ fmt .Printf (" Internal IP: %s\n " , addr .Address )
71
+ case corev1 .NodeExternalIP :
72
+ fmt .Printf (" External IP: %s\n " , addr .Address )
73
+ }
74
+ }
75
+ fmt .Println ("----------" )
76
+ }
32
77
}
33
78
return nil
34
79
}
0 commit comments