@@ -20,7 +20,6 @@ import (
20
20
"os"
21
21
"path"
22
22
"strings"
23
- "sync"
24
23
25
24
"github.com/oracle/oci-flexvolume-driver/pkg/flexvolume"
26
25
"github.com/oracle/oci-flexvolume-driver/pkg/oci/driver"
@@ -30,10 +29,8 @@ import (
30
29
var version string
31
30
var build string
32
31
33
- // All registered drivers.
34
32
var (
35
- driversMutex sync.Mutex
36
- drivers = make (map [string ]flexvolume.Driver )
33
+ drivers = make (map [string ]flexvolume.Driver )
37
34
)
38
35
39
36
// GetLogPath returns the default path to the driver log file.
@@ -45,7 +42,7 @@ func GetLogPath() string {
45
42
return path + "/oci_flexvolume_driver.log"
46
43
}
47
44
48
- func loadRegisteredDrivers () {
45
+ func registerDrivers () {
49
46
registerDriver ("oci-bvs" , & driver.OCIFlexvolumeDriver {})
50
47
}
51
48
@@ -64,7 +61,7 @@ func main() {
64
61
65
62
log .Printf ("OCI FlexVolume Driver version: %s (%s)" , version , build )
66
63
67
- loadRegisteredDrivers ()
64
+ registerDrivers ()
68
65
69
66
driver , err := getDriverFromArgs ()
70
67
if err != nil {
@@ -75,7 +72,7 @@ func main() {
75
72
}
76
73
77
74
func getDriverFromArgs () (flexvolume.Driver , error ) {
78
- driver , err := getRegisteredDriver (flexvolume .DefaultSymlinkDirectory ) //Block volume is default
75
+ driver , err := getDriver (flexvolume .DefaultSymlinkDirectory ) //Block volume is default
79
76
if err != nil {
80
77
return nil , err
81
78
}
@@ -84,7 +81,7 @@ func getDriverFromArgs() (flexvolume.Driver, error) {
84
81
dir = string (strings .TrimPrefix (dir , "oracle~" ))
85
82
86
83
if dir != "oci" && dir != flexvolume .DefaultSymlinkDirectory {
87
- driver , err = getRegisteredDriver (dir )
84
+ driver , err = getDriver (dir )
88
85
if err != nil {
89
86
return nil , err
90
87
}
@@ -95,26 +92,16 @@ func getDriverFromArgs() (flexvolume.Driver, error) {
95
92
return driver , nil
96
93
}
97
94
98
- // getRegisteredDriver returns an instance of the named driver, or nil if
99
- // the name is unknown. An error is thrown if the named driver is not found.
100
- func getRegisteredDriver (name string ) (flexvolume.Driver , error ) {
101
- driversMutex .Lock ()
102
- defer driversMutex .Unlock ()
103
- f , found := drivers [name ]
104
- if ! found {
105
- return nil , fmt .Errorf ("No driver found for %s" , name )
95
+ func registerDriver (name string , driver flexvolume.Driver ) {
96
+ if drivers [name ] == nil {
97
+ drivers [name ] = driver
106
98
}
107
- return f , nil
108
99
}
109
100
110
- // registerDriver registers a flexvolume.Driver by name. This
111
- // is expected to happen during app startup.
112
- func registerDriver (name string , driver flexvolume.Driver ) {
113
- driversMutex .Lock ()
114
- defer driversMutex .Unlock ()
115
- if _ , found := drivers [name ]; found {
116
- log .Fatalf ("Driver %q was registered twice" , name )
101
+ func getDriver (name string ) (flexvolume.Driver , error ) {
102
+ driver := drivers [name ]
103
+ if driver == nil {
104
+ return nil , fmt .Errorf ("could not find a registered driver for %s" , name )
117
105
}
118
- log .Printf ("Registered driver %q" , name )
119
- drivers [name ] = driver
106
+ return driver , nil
120
107
}
0 commit comments