@@ -228,151 +228,3 @@ func (cm *ConnectionManager) WhichVCandDCByNodeID(ctx context.Context, nodeID st
228228 klog .V (4 ).Infof ("WhichVCandDCByNodeID: %q vm not found" , myNodeID )
229229 return nil , vclib .ErrNoVMFound
230230}
231-
232- // WhichVCandDCByFCDId searches for an FCD using the provided ID.
233- func (cm * ConnectionManager ) WhichVCandDCByFCDId (ctx context.Context , fcdID string ) (* FcdDiscoveryInfo , error ) {
234- if fcdID == "" {
235- klog .V (3 ).Info ("WhichVCandDCByFCDId called but fcdID is empty" )
236- return nil , vclib .ErrNoDiskIDFound
237- }
238- klog .V (2 ).Info ("WhichVCandDCByFCDId fcdID: " , fcdID )
239-
240- type fcdSearch struct {
241- tenantRef string
242- vc string
243- datacenter * vclib.Datacenter
244- }
245-
246- var mutex = & sync.Mutex {}
247- var globalErrMutex = & sync.Mutex {}
248- var queueChannel chan * fcdSearch
249- var wg sync.WaitGroup
250- var globalErr * error
251-
252- queueChannel = make (chan * fcdSearch , QueueSize )
253-
254- fcdFound := false
255- globalErr = nil
256-
257- setGlobalErr := func (err error ) {
258- globalErrMutex .Lock ()
259- globalErr = & err
260- globalErrMutex .Unlock ()
261- }
262-
263- setFCDFound := func (found bool ) {
264- mutex .Lock ()
265- fcdFound = found
266- mutex .Unlock ()
267- }
268-
269- getFCDFound := func () bool {
270- mutex .Lock ()
271- found := fcdFound
272- mutex .Unlock ()
273- return found
274- }
275-
276- go func () {
277- for _ , vsi := range cm .VsphereInstanceMap {
278- var datacenterObjs []* vclib.Datacenter
279-
280- if getFCDFound () {
281- break
282- }
283-
284- var err error
285- for i := 0 ; i < NumConnectionAttempts ; i ++ {
286- err = cm .Connect (ctx , vsi )
287- if err == nil {
288- break
289- }
290- time .Sleep (time .Duration (RetryAttemptDelaySecs ) * time .Second )
291- }
292-
293- if err != nil {
294- klog .Error ("WhichVCandDCByFCDId error vc:" , err )
295- setGlobalErr (err )
296- continue
297- }
298-
299- if vsi .Cfg .Datacenters == "" {
300- datacenterObjs , err = vclib .GetAllDatacenter (ctx , vsi .Conn )
301- if err != nil {
302- klog .Error ("WhichVCandDCByFCDId error dc:" , err )
303- setGlobalErr (err )
304- continue
305- }
306- } else {
307- datacenters := strings .Split (vsi .Cfg .Datacenters , "," )
308- for _ , dc := range datacenters {
309- dc = strings .TrimSpace (dc )
310- if dc == "" {
311- continue
312- }
313- datacenterObj , err := vclib .GetDatacenter (ctx , vsi .Conn , dc )
314- if err != nil {
315- klog .Error ("WhichVCandDCByFCDId error dc:" , err )
316- setGlobalErr (err )
317- continue
318- }
319- datacenterObjs = append (datacenterObjs , datacenterObj )
320- }
321- }
322-
323- for _ , datacenterObj := range datacenterObjs {
324- if getFCDFound () {
325- break
326- }
327-
328- klog .V (4 ).Infof ("Finding FCD %s in vc=%s and datacenter=%s" , fcdID , vsi .Cfg .VCenterIP , datacenterObj .Name ())
329- queueChannel <- & fcdSearch {
330- tenantRef : vsi .Cfg .TenantRef ,
331- vc : vsi .Cfg .VCenterIP ,
332- datacenter : datacenterObj ,
333- }
334- }
335- }
336- close (queueChannel )
337- }()
338-
339- var fcdInfo * FcdDiscoveryInfo
340- for i := 0 ; i < PoolSize ; i ++ {
341- wg .Add (1 )
342- go func () {
343- for res := range queueChannel {
344-
345- fcd , err := res .datacenter .DoesFirstClassDiskExist (ctx , fcdID )
346- if err != nil {
347- klog .Errorf ("Error while looking for FCD=%+v in vc=%s and datacenter=%s: %v" ,
348- fcd , res .vc , res .datacenter .Name (), err )
349- if err != vclib .ErrNoDiskIDFound {
350- setGlobalErr (err )
351- } else {
352- klog .V (2 ).Infof ("Did not find FCD %s in vc=%s and datacenter=%s" ,
353- fcdID , res .vc , res .datacenter .Name ())
354- }
355- continue
356- }
357-
358- klog .V (2 ).Infof ("Found FCD %s as vm=%+v in vc=%s and datacenter=%s" ,
359- fcdID , fcd , res .vc , res .datacenter .Name ())
360-
361- fcdInfo = & FcdDiscoveryInfo {TenantRef : res .tenantRef , DataCenter : res .datacenter , FCDInfo : fcd , VcServer : res .vc }
362- setFCDFound (true )
363- break
364- }
365- wg .Done ()
366- }()
367- }
368- wg .Wait ()
369- if fcdFound {
370- return fcdInfo , nil
371- }
372- if globalErr != nil {
373- return nil , * globalErr
374- }
375-
376- klog .V (4 ).Infof ("WhichVCandDCByFCDId: %q FCD not found" , fcdID )
377- return nil , vclib .ErrNoDiskIDFound
378- }
0 commit comments