-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathservice.go
73 lines (63 loc) · 1.97 KB
/
service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package resources
import (
"fmt"
"log"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
)
type Services struct {
clientSet *kubernetes.Clientset
namespace string
name string
}
func NewServices(clientSet *kubernetes.Clientset, namespace, name string) *Services {
return &Services{clientSet: clientSet, namespace: namespace, name: name}
}
func (s *Services) Get() {
if len(s.name) > 0 {
s.getService()
} else {
s.getServiceList()
}
}
func (s *Services) Delete() {
err := s.clientSet.CoreV1().Services(s.namespace).Delete(s.name, &metav1.DeleteOptions{})
if err != nil {
log.Fatalf("[Error] Delete service %s failed: %s\n", s.name, err.Error())
} else {
fmt.Printf("service \"%s\" deleted\n", s.name)
}
}
func (s *Services) getService() {
service, err := s.clientSet.CoreV1().Services(s.namespace).Get(s.name, metav1.GetOptions{})
if err != nil {
log.Fatalln("[Error] getService()", err.Error())
}
s.printService(service)
}
func (s *Services) getServiceList() {
services, err := s.clientSet.CoreV1().Services(s.namespace).List(metav1.ListOptions{})
if err != nil {
log.Fatalln("[Error] getServiceList()", err.Error())
}
s.printServiceList(services)
}
func (s *Services) printService(service *v1.Service) {
fmt.Printf("NAME\t\t TYPE\t\t CLUSTER-IP\t EXTERNAL-IP\t PORT(S)\t AGE\n")
fmt.Printf("%-16s %s\t %s\t %v\t\t %v\t %s\n",
service.Name, service.Spec.Type, service.Spec.ClusterIP,
service.Spec.ExternalIPs, service.Spec.Ports, service.CreationTimestamp)
}
func (s *Services) printServiceList(services *v1.ServiceList) {
if len(services.Items) > 0 {
fmt.Printf("NAME\t\t TYPE\t\t CLUSTER-IP\t EXTERNAL-IP\t PORT(S)\t AGE\n")
for _, service := range services.Items {
fmt.Printf("%-16s %s\t %s\t %v\t\t %v\t %s\n",
service.Name, service.Spec.Type, service.Spec.ClusterIP,
service.Spec.ExternalIPs, service.Spec.Ports, service.CreationTimestamp)
}
} else {
fmt.Println(ERR_NO_RESOURCE)
}
}