@@ -40,24 +40,20 @@ class NetappDynamicLibrary(NetAppNVMeStorageLibrary):
40
40
- Ours: Multiple SVMs per backend, SVM name from volume type
41
41
"""
42
42
43
+ REQUIRED_CMODE_FLAGS = []
44
+
43
45
def __init__ (self , * args , ** kwargs ):
44
46
"""Initialize driver without creating SVM connections.
45
47
46
48
Parent driver creates static connections during init. We defer
47
49
SVM connections until volume creation when we know which SVM to use.
48
50
"""
49
- self .initialized = False
50
- self .client = None
51
- driver_name = kwargs .pop ("driver_name" , "NetAppDynamicNVMe" )
52
- driver_protocol = kwargs .pop ("driver_protocol" , "nvme" )
53
- self .app_version = kwargs .get ("app_version" , "1.0.0" )
54
-
55
51
self ._setup_configuration (** kwargs )
56
52
57
- super ().__init__ (driver_name , driver_protocol , ** kwargs )
53
+ super ().__init__ (* args , ** kwargs )
54
+ self .client = None
58
55
self .ssc_library = None
59
56
self .perf_library = None
60
- self .init_capabilities ()
61
57
62
58
def _setup_configuration (self , ** kwargs ):
63
59
"""Setup configuration using cinder.volume.configuration module."""
@@ -110,15 +106,6 @@ def _setup_configuration(self, **kwargs):
110
106
"Failed to register configuration options for testing: %s" , e
111
107
)
112
108
113
- @property
114
- def supported (self ):
115
- # Used by Cinder to determine whether this driver is active/enabled
116
- return True
117
-
118
- def get_version (self ):
119
- # Called at Cinder service startup to report backend driver version
120
- return "NetappCinderDynamicDriver 1.0"
121
-
122
109
def do_setup (self , context ):
123
110
"""Skip static NetApp connections, defer to volume creation time."""
124
111
LOG .info ("Skipping static setup, will connect to SVMs dynamically" )
@@ -132,22 +119,6 @@ def check_for_setup_error(self):
132
119
"""Skip static validation since we connect to SVMs dynamically."""
133
120
pass
134
121
135
- def init_capabilities (self ):
136
- """Set driver capabilities for Cinder scheduler."""
137
- max_over_subscription_ratio = self .configuration .max_over_subscription_ratio
138
- self ._capabilities = {
139
- "thin_provisioning_support" : True ,
140
- "thick_provisioning_support" : True ,
141
- "multiattach" : True ,
142
- "snapshot_support" : True ,
143
- "max_over_subscription_ratio" : max_over_subscription_ratio ,
144
- }
145
- self .capabilities = self ._capabilities
146
-
147
- def set_initialized (self ):
148
- """Mark driver as ready for volume operations."""
149
- self .initialized = True
150
-
151
122
def _get_all_svm_clients_from_volume_types (self ):
152
123
"""Connect to all SVMs found in volume type metadata."""
153
124
svm_clients = {}
@@ -1029,10 +1000,6 @@ def get_volume_stats(self, refresh=False):
1029
1000
"""Get volume stats."""
1030
1001
return self .library .get_volume_stats (refresh )
1031
1002
1032
- def update_provider_info (self , volumes , snapshots ):
1033
- """Update provider info."""
1034
- return self .library .update_provider_info (volumes , snapshots )
1035
-
1036
1003
def create_export (self , context , volume , connector ):
1037
1004
"""Create export for volume."""
1038
1005
return self .library .create_export (context , volume , connector )
@@ -1044,12 +1011,3 @@ def ensure_export(self, context, volume):
1044
1011
def remove_export (self , context , volume ):
1045
1012
"""Remove export for volume."""
1046
1013
return self .library .remove_export (context , volume )
1047
-
1048
-
1049
- # NOTES
1050
- # Namespace: Manually created because we skip standard do_setup()
1051
- # Pool: Custom svm#flexvol format to support multi-SVM
1052
- # Client: Runtime creation based on volume type metadata vs static config
1053
- # Metadata: volume type extra_specs vs cinder.conf
1054
- # Library Initialization: Lazy initialization during volume creation
1055
- # Pool Discovery: Multi-SVM aggregation vs single SVM
0 commit comments