@@ -15,8 +15,9 @@ import (
15
15
"github.com/ihcsim/cbt-aggapi/pkg/apis/cbt/v1alpha1"
16
16
"github.com/ihcsim/cbt-aggapi/pkg/generated/cbt/clientset/versioned"
17
17
cbtgrpc "github.com/ihcsim/cbt-aggapi/pkg/grpc"
18
+ "github.com/kubernetes-csi/csi-lib-utils/connection"
19
+ "github.com/kubernetes-csi/csi-lib-utils/metrics"
18
20
"google.golang.org/grpc"
19
- "google.golang.org/grpc/credentials/insecure"
20
21
apierrors "k8s.io/apimachinery/pkg/api/errors"
21
22
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
22
23
"k8s.io/apimachinery/pkg/runtime"
@@ -29,17 +30,28 @@ const defaultPort = 8080
29
30
30
31
var (
31
32
listenAddr = flag .String ("listen-addr" , fmt .Sprintf (":%d" , defaultPort ), "Address to listen at" )
32
- grpcTarget = flag .String ("grpc-target " , ":9779 " , "Address of the GRPC server " )
33
+ csiAddress = flag .String ("csi-address " , "/run/csi/socket " , "Address of the CSI driver socket. " )
33
34
)
34
35
35
36
func main () {
36
37
flag .Parse ()
37
38
38
- if _ , err := registerDriver (); err != nil {
39
+ var (
40
+ driver = os .Getenv ("CSI_DRIVER_NAME" )
41
+ svc = os .Getenv ("SVC_NAME" )
42
+ namespace = os .Getenv ("SVC_NAMESPACE" )
43
+ )
44
+ svcPort , err := strconv .ParseInt (os .Getenv ("SVC_PORT" ), 10 , 32 )
45
+ if err != nil {
46
+ klog .Error (err )
47
+ svcPort = defaultPort
48
+ }
49
+
50
+ if _ , err := registerDriver (driver , svc , namespace , svcPort ); err != nil {
39
51
klog .Fatal (err )
40
52
}
41
53
42
- server , err := newServer ()
54
+ server , err := newServer (driver , * csiAddress )
43
55
if err != nil {
44
56
klog .Fatal (err )
45
57
}
@@ -53,7 +65,7 @@ func main() {
53
65
}
54
66
}
55
67
56
- func registerDriver () (runtime.Object , error ) {
68
+ func registerDriver (driver , svc , namespace string , svcPort int64 ) (runtime.Object , error ) {
57
69
restConfig , err := rest .InClusterConfig ()
58
70
if err != nil {
59
71
return nil , err
@@ -64,22 +76,16 @@ func registerDriver() (runtime.Object, error) {
64
76
return nil , err
65
77
}
66
78
67
- svcPort , err := strconv .ParseInt (os .Getenv ("SVC_PORT" ), 10 , 32 )
68
- if err != nil {
69
- klog .Error (err )
70
- svcPort = defaultPort
71
- }
72
-
73
79
var (
74
80
endpoint = & v1alpha1.DriverDiscovery {
75
81
ObjectMeta : metav1.ObjectMeta {
76
- Name : os . Getenv ( "CSI_DRIVER_NAME" ) ,
82
+ Name : driver ,
77
83
},
78
84
Spec : v1alpha1.DriverDiscoverySpec {
79
- Driver : os . Getenv ( "CSI_DRIVER_NAME" ) ,
85
+ Driver : driver ,
80
86
Service : v1alpha1.Service {
81
- Name : os . Getenv ( "SVC_NAME" ) ,
82
- Namespace : os . Getenv ( "SVC_NAMESPACE" ) ,
87
+ Name : svc ,
88
+ Namespace : namespace ,
83
89
Path : "/" ,
84
90
Port : svcPort ,
85
91
},
@@ -107,10 +113,10 @@ func registerDriver() (runtime.Object, error) {
107
113
return created , err
108
114
}
109
115
110
- func newServer () (* http.Server , error ) {
111
- serveMux , err := newServeMux (* grpcTarget )
116
+ func newServer (driver , grpcTarget string ) (* http.Server , error ) {
117
+ serveMux , err := newServeMux (driver , grpcTarget )
112
118
if err != nil {
113
- klog . Fatal ( err )
119
+ return nil , err
114
120
}
115
121
116
122
return & http.Server {
@@ -136,10 +142,13 @@ type serveMux struct {
136
142
* http.ServeMux
137
143
}
138
144
139
- func newServeMux (grpcTarget string ) (* serveMux , error ) {
140
- klog .Infof ("connecting to GRPC target at %s" , grpcTarget )
141
- opts := grpc .WithTransportCredentials (insecure .NewCredentials ())
142
- clientConn , err := grpc .Dial (grpcTarget , opts )
145
+ func newServeMux (driverName , grpcTarget string ) (* serveMux , error ) {
146
+ klog .Infof ("connecting to CSI driver at %s" , grpcTarget )
147
+ metricsManager := metrics .NewCSIMetricsManager (driverName )
148
+ csiConn , err := connection .Connect (
149
+ grpcTarget ,
150
+ metricsManager ,
151
+ connection .OnConnectionLoss (connection .ExitOnConnectionLoss ()))
143
152
if err != nil {
144
153
return nil , err
145
154
}
@@ -148,7 +157,7 @@ func newServeMux(grpcTarget string) (*serveMux, error) {
148
157
mux := http .NewServeMux ()
149
158
mux .HandleFunc ("/" , s .handle )
150
159
151
- s .grpc = clientConn
160
+ s .grpc = csiConn
152
161
s .ServeMux = mux
153
162
return s , nil
154
163
}
0 commit comments