6
6
"strings"
7
7
8
8
"github.com/kubernetes-csi/csi-proxy/pkg/cim"
9
- "github.com/microsoft/wmi/server2019/root/microsoft/windows/storage"
10
9
"k8s.io/klog/v2"
11
10
)
12
11
@@ -21,20 +20,6 @@ func New() APIImplementor {
21
20
return APIImplementor {}
22
21
}
23
22
24
- func parseTargetPortal (instance * storage.MSFT_iSCSITargetPortal ) (string , uint32 , error ) {
25
- portalAddress , err := instance .GetPropertyTargetPortalAddress ()
26
- if err != nil {
27
- return "" , 0 , fmt .Errorf ("failed parsing target portal address %v. err: %w" , instance , err )
28
- }
29
-
30
- portalPort , err := instance .GetProperty ("TargetPortalPortNumber" )
31
- if err != nil {
32
- return "" , 0 , fmt .Errorf ("failed parsing target portal port number %v. err: %w" , instance , err )
33
- }
34
-
35
- return portalAddress , uint32 (portalPort .(int32 )), nil
36
- }
37
-
38
23
func (APIImplementor ) AddTargetPortal (portal * TargetPortal ) error {
39
24
existing , err := cim .QueryISCSITargetPortal (portal .Address , portal .Port , nil )
40
25
if cim .IgnoreNotFound (err ) != nil {
@@ -55,38 +40,33 @@ func (APIImplementor) AddTargetPortal(portal *TargetPortal) error {
55
40
}
56
41
57
42
func (APIImplementor ) DiscoverTargetPortal (portal * TargetPortal ) ([]string , error ) {
58
- instance , err := cim .QueryISCSITargetPortal (portal .Address , portal .Port , nil )
59
- if err != nil {
60
- return nil , err
61
- }
62
-
63
- targets , err := cim .ListISCSITargetsByTargetPortal ([]* storage.MSFT_iSCSITargetPortal {instance })
43
+ targets , err := cim .ListISCSITargetsByTargetPortalAddressAndPort (portal .Address , portal .Port , nil )
64
44
if err != nil {
65
45
return nil , err
66
46
}
67
47
68
48
var iqns []string
69
49
for _ , target := range targets {
70
- iqn , err := target . GetProperty ( "NodeAddress" )
50
+ iqn , err := cim . GetISCSITargetNodeAddress ( target )
71
51
if err != nil {
72
52
return nil , fmt .Errorf ("failed parsing node address of target %v to target portal at (%s:%d). err: %w" , target , portal .Address , portal .Port , err )
73
53
}
74
54
75
- iqns = append (iqns , iqn .( string ) )
55
+ iqns = append (iqns , iqn )
76
56
}
77
57
78
58
return iqns , nil
79
59
}
80
60
81
61
func (APIImplementor ) ListTargetPortals () ([]TargetPortal , error ) {
82
- instances , err := cim .ListISCSITargetPortals ([] string { "TargetPortalAddress" , "TargetPortalPortNumber" } )
62
+ instances , err := cim .ListISCSITargetPortals (cim . ISCSITargetPortalDefaultSelectorList )
83
63
if err != nil {
84
64
return nil , err
85
65
}
86
66
87
67
var portals []TargetPortal
88
68
for _ , instance := range instances {
89
- address , port , err := parseTargetPortal (instance )
69
+ address , port , err := cim . ParseISCSITargetPortal (instance )
90
70
if err != nil {
91
71
return nil , fmt .Errorf ("failed parsing target portal %v. err: %w" , instance , err )
92
72
}
@@ -106,19 +86,9 @@ func (APIImplementor) RemoveTargetPortal(portal *TargetPortal) error {
106
86
return err
107
87
}
108
88
109
- address , port , err := parseTargetPortal (instance )
110
- if err != nil {
111
- return fmt .Errorf ("failed to parse target portal %v. error: %v" , instance , err )
112
- }
113
-
114
- result , err := instance .InvokeMethodWithReturn ("Remove" ,
115
- nil ,
116
- nil ,
117
- int (port ),
118
- address ,
119
- )
89
+ result , err := cim .RemoveISCSITargetPortal (instance )
120
90
if result != 0 || err != nil {
121
- return fmt .Errorf ("error removing target portal at (%s:%d). result: %d, err: %w" , address , port , result , err )
91
+ return fmt .Errorf ("error removing target portal at (%s:%d). result: %d, err: %w" , portal . Address , portal . Port , result , err )
122
92
}
123
93
124
94
return nil
@@ -130,7 +100,7 @@ func (APIImplementor) ConnectTarget(portal *TargetPortal, iqn string, authType s
130
100
return err
131
101
}
132
102
133
- connected , err := target . GetPropertyIsConnected ( )
103
+ connected , err := cim . IsISCSITargetConnected ( target )
134
104
if err != nil {
135
105
return err
136
106
}
@@ -142,7 +112,7 @@ func (APIImplementor) ConnectTarget(portal *TargetPortal, iqn string, authType s
142
112
143
113
targetAuthType := strings .ToUpper (strings .ReplaceAll (authType , "_" , "" ))
144
114
145
- result , _ , err := cim .ConnectISCSITarget (portal .Address , portal .Port , iqn , targetAuthType , & chapUser , & chapSecret )
115
+ result , err := cim .ConnectISCSITarget (portal .Address , portal .Port , iqn , targetAuthType , & chapUser , & chapSecret )
146
116
if err != nil {
147
117
return fmt .Errorf ("error connecting to target portal. result: %d, err: %w" , result , err )
148
118
}
@@ -156,7 +126,7 @@ func (APIImplementor) DisconnectTarget(portal *TargetPortal, iqn string) error {
156
126
return err
157
127
}
158
128
159
- connected , err := target . GetPropertyIsConnected ( )
129
+ connected , err := cim . IsISCSITargetConnected ( target )
160
130
if err != nil {
161
131
return fmt .Errorf ("error query connected of target %s from target portal at (%s:%d). err: %w" , iqn , portal .Address , portal .Port , err )
162
132
}
@@ -172,24 +142,24 @@ func (APIImplementor) DisconnectTarget(portal *TargetPortal, iqn string) error {
172
142
return fmt .Errorf ("error query session of target %s from target portal at (%s:%d). err: %w" , iqn , portal .Address , portal .Port , err )
173
143
}
174
144
175
- sessionIdentifier , err := session . GetPropertySessionIdentifier ( )
145
+ sessionIdentifier , err := cim . GetISCSISessionIdentifier ( session )
176
146
if err != nil {
177
147
return fmt .Errorf ("error query session identifier of target %s from target portal at (%s:%d). err: %w" , iqn , portal .Address , portal .Port , err )
178
148
}
179
149
180
- persistent , err := session . GetPropertyIsPersistent ( )
150
+ persistent , err := cim . IsISCSISessionPersistent ( session )
181
151
if err != nil {
182
152
return fmt .Errorf ("error query session persistency of target %s from target portal at (%s:%d). err: %w" , iqn , portal .Address , portal .Port , err )
183
153
}
184
154
185
155
if persistent {
186
- result , err := session . InvokeMethodWithReturn ( "Unregister" )
156
+ result , err := cim . UnregisterISCSISession ( session )
187
157
if err != nil {
188
158
return fmt .Errorf ("error unregister session on target %s from target portal at (%s:%d). result: %d, err: %w" , iqn , portal .Address , portal .Port , result , err )
189
159
}
190
160
}
191
161
192
- result , err := target . InvokeMethodWithReturn ( "Disconnect" , sessionIdentifier )
162
+ result , err := cim . DisconnectISCSITarget ( target , sessionIdentifier )
193
163
if err != nil {
194
164
return fmt .Errorf ("error disconnecting target %s from target portal at (%s:%d). result: %d, err: %w" , iqn , portal .Address , portal .Port , result , err )
195
165
}
@@ -203,7 +173,7 @@ func (APIImplementor) GetTargetDisks(portal *TargetPortal, iqn string) ([]string
203
173
return nil , err
204
174
}
205
175
206
- connected , err := target . GetPropertyIsConnected ( )
176
+ connected , err := cim . IsISCSITargetConnected ( target )
207
177
if err != nil {
208
178
return nil , fmt .Errorf ("error query connected of target %s from target portal at (%s:%d). err: %w" , iqn , portal .Address , portal .Port , err )
209
179
}
@@ -220,18 +190,18 @@ func (APIImplementor) GetTargetDisks(portal *TargetPortal, iqn string) ([]string
220
190
221
191
var ids []string
222
192
for _ , disk := range disks {
223
- number , err := disk . GetProperty ( "Number" )
193
+ number , err := cim . GetDiskNumber ( disk )
224
194
if err != nil {
225
195
return nil , fmt .Errorf ("error getting number of disk %v on target %s from target portal at (%s:%d). err: %w" , disk , iqn , portal .Address , portal .Port , err )
226
196
}
227
197
228
- ids = append (ids , strconv .Itoa (int (number .( int32 ) )))
198
+ ids = append (ids , strconv .Itoa (int (number )))
229
199
}
230
200
return ids , nil
231
201
}
232
202
233
203
func (APIImplementor ) SetMutualChapSecret (mutualChapSecret string ) error {
234
- result , _ , err := cim .InvokeCimMethod ( cim . WMINamespaceStorage , "MSFT_iSCSISession" , "SetCHAPSecret" , map [ string ] interface {}{ "ChapSecret" : mutualChapSecret } )
204
+ result , err := cim .SetISCSISessionChapSecret ( mutualChapSecret )
235
205
if err != nil {
236
206
return fmt .Errorf ("error setting mutual chap secret. result: %d, err: %v" , result , err )
237
207
}
0 commit comments