@@ -331,13 +331,22 @@ func (m *CnsVolumeManager) CnsDeleteVolume(ctx *simulator.Context, req *cnstypes
331331 vsom := vctx .Map .VStorageObjectManager ()
332332
333333 task := simulator .CreateTask (m , "CnsDeleteVolume" , func (* simulator.Task ) (vim25types.AnyType , vim25types.BaseMethodFault ) {
334- operationResult := []cnstypes.BaseCnsVolumeOperationResult {}
335- for _ , volumeId := range req .VolumeIds {
336- for ds , dsVolumes := range m .volumes {
337- res := & cnstypes.CnsVolumeOperationResult {
338- VolumeId : volumeId ,
339- }
340- if _ , ok := dsVolumes [volumeId ]; ok {
334+ if len (req .VolumeIds ) != 1 {
335+ return nil , & vim25types.InvalidArgument {InvalidProperty : "InputSpec" } // Same as real VC, currently
336+ }
337+
338+ found := false
339+ volumeId := req .VolumeIds [0 ]
340+ res := & cnstypes.CnsVolumeOperationResult {
341+ VolumeId : volumeId ,
342+ }
343+
344+ for ds , volumes := range m .volumes {
345+ if _ , ok := volumes [volumeId ]; ok {
346+ found = true
347+ delete (m .volumes [ds ], volumeId )
348+
349+ if req .DeleteDisk {
341350 val := vsom .DeleteVStorageObjectTask (vctx , & vim25types.DeleteVStorageObject_Task {
342351 This : vsom .Self ,
343352 Id : vim25types .ID (volumeId ),
@@ -349,17 +358,17 @@ func (m *CnsVolumeManager) CnsDeleteVolume(ctx *simulator.Context, req *cnstypes
349358 task .Wait ()
350359 if task .Info .Error != nil {
351360 res .Fault = task .Info .Error
352- } else {
353- delete (m .volumes [ds ], volumeId )
354361 }
355- } else {
356- res .Fault = & vim25types.LocalizedMethodFault {Fault : new (vim25types.NotFound )}
357362 }
358- operationResult = append (operationResult , res )
359363 }
360364 }
365+
366+ if ! found {
367+ res .Fault = & vim25types.LocalizedMethodFault {Fault : new (vim25types.NotFound )}
368+ }
369+
361370 return & cnstypes.CnsVolumeOperationBatchResult {
362- VolumeResults : operationResult ,
371+ VolumeResults : []cnstypes. BaseCnsVolumeOperationResult { res } ,
363372 }, nil
364373 })
365374
0 commit comments