@@ -276,6 +276,12 @@ var _ = Describe("Instance", func() {
276
276
MemoryAvailable : "2048" ,
277
277
VMAvailable : "20" ,
278
278
},
279
+ Project : cloud.Project {
280
+ ID : "123" ,
281
+ CPUAvailable : "20" ,
282
+ MemoryAvailable : "2048" ,
283
+ VMAvailable : "20" ,
284
+ },
279
285
}
280
286
c := cloud .NewClientFromCSAPIClient (mockClient , user )
281
287
Ω (c .GetOrCreateVMInstance (
@@ -304,13 +310,53 @@ var _ = Describe("Instance", func() {
304
310
MemoryAvailable : "2048" ,
305
311
VMAvailable : "20" ,
306
312
},
313
+ Project : cloud.Project {
314
+ ID : "123" ,
315
+ CPUAvailable : "20" ,
316
+ MemoryAvailable : "2048" ,
317
+ VMAvailable : "20" ,
318
+ },
307
319
}
308
320
c := cloud .NewClientFromCSAPIClient (mockClient , user )
309
321
Ω (c .GetOrCreateVMInstance (
310
322
dummies .CSMachine1 , dummies .CAPIMachine , dummies .CSCluster , dummies .CSFailureDomain1 , dummies .CSAffinityGroup , "" )).
311
323
Should (MatchError (MatchRegexp ("CPU available .* in domain can't fulfil the requirement:.*" )))
312
324
})
313
325
326
+ It ("returns errors when there are not enough available CPU in project" , func () {
327
+ expectVMNotFound ()
328
+ dummies .CSMachine1 .Spec .DiskOffering .CustomSize = 0
329
+ sos .EXPECT ().GetServiceOfferingByName (dummies .CSMachine1 .Spec .Offering .Name , gomock .Any ()).
330
+ Return (& cloudstack.ServiceOffering {
331
+ Id : dummies .CSMachine1 .Spec .Offering .ID ,
332
+ Name : dummies .CSMachine1 .Spec .Offering .Name ,
333
+ Cpunumber : 2 ,
334
+ Memory : 1024 ,
335
+ }, 1 , nil )
336
+ user := & cloud.User {
337
+ Account : cloud.Account {
338
+ Domain : cloud.Domain {
339
+ CPUAvailable : "20" ,
340
+ MemoryAvailable : "2048" ,
341
+ VMAvailable : "20" ,
342
+ },
343
+ CPUAvailable : "20" ,
344
+ MemoryAvailable : "2048" ,
345
+ VMAvailable : "20" ,
346
+ },
347
+ Project : cloud.Project {
348
+ ID : "123" ,
349
+ CPUAvailable : "1" ,
350
+ MemoryAvailable : "2048" ,
351
+ VMAvailable : "20" ,
352
+ },
353
+ }
354
+ c := cloud .NewClientFromCSAPIClient (mockClient , user )
355
+ Ω (c .GetOrCreateVMInstance (
356
+ dummies .CSMachine1 , dummies .CAPIMachine , dummies .CSCluster , dummies .CSFailureDomain1 , dummies .CSAffinityGroup , "" )).
357
+ Should (MatchError (MatchRegexp ("CPU available .* in project can't fulfil the requirement:.*" )))
358
+ })
359
+
314
360
It ("returns errors when there is not enough available memory in account" , func () {
315
361
expectVMNotFound ()
316
362
dummies .CSMachine1 .Spec .DiskOffering .CustomSize = 0
@@ -332,6 +378,12 @@ var _ = Describe("Instance", func() {
332
378
MemoryAvailable : "512" ,
333
379
VMAvailable : "20" ,
334
380
},
381
+ Project : cloud.Project {
382
+ ID : "123" ,
383
+ CPUAvailable : "20" ,
384
+ MemoryAvailable : "2048" ,
385
+ VMAvailable : "20" ,
386
+ },
335
387
}
336
388
c := cloud .NewClientFromCSAPIClient (mockClient , user )
337
389
Ω (c .GetOrCreateVMInstance (
@@ -360,13 +412,53 @@ var _ = Describe("Instance", func() {
360
412
MemoryAvailable : "2048" ,
361
413
VMAvailable : "20" ,
362
414
},
415
+ Project : cloud.Project {
416
+ ID : "123" ,
417
+ CPUAvailable : "20" ,
418
+ MemoryAvailable : "2048" ,
419
+ VMAvailable : "20" ,
420
+ },
363
421
}
364
422
c := cloud .NewClientFromCSAPIClient (mockClient , user )
365
423
Ω (c .GetOrCreateVMInstance (
366
424
dummies .CSMachine1 , dummies .CAPIMachine , dummies .CSCluster , dummies .CSFailureDomain1 , dummies .CSAffinityGroup , "" )).
367
425
Should (MatchError (MatchRegexp ("memory available .* in domain can't fulfil the requirement:.*" )))
368
426
})
369
427
428
+ It ("returns errors when there is not enough available memory in project" , func () {
429
+ expectVMNotFound ()
430
+ dummies .CSMachine1 .Spec .DiskOffering .CustomSize = 0
431
+ sos .EXPECT ().GetServiceOfferingByName (dummies .CSMachine1 .Spec .Offering .Name , gomock .Any ()).
432
+ Return (& cloudstack.ServiceOffering {
433
+ Id : dummies .CSMachine1 .Spec .Offering .ID ,
434
+ Name : dummies .CSMachine1 .Spec .Offering .Name ,
435
+ Cpunumber : 2 ,
436
+ Memory : 1024 ,
437
+ }, 1 , nil )
438
+ user := & cloud.User {
439
+ Account : cloud.Account {
440
+ Domain : cloud.Domain {
441
+ CPUAvailable : "20" ,
442
+ MemoryAvailable : "2048" ,
443
+ VMAvailable : "20" ,
444
+ },
445
+ CPUAvailable : "20" ,
446
+ MemoryAvailable : "2048" ,
447
+ VMAvailable : "20" ,
448
+ },
449
+ Project : cloud.Project {
450
+ ID : "123" ,
451
+ CPUAvailable : "20" ,
452
+ MemoryAvailable : "512" ,
453
+ VMAvailable : "20" ,
454
+ },
455
+ }
456
+ c := cloud .NewClientFromCSAPIClient (mockClient , user )
457
+ Ω (c .GetOrCreateVMInstance (
458
+ dummies .CSMachine1 , dummies .CAPIMachine , dummies .CSCluster , dummies .CSFailureDomain1 , dummies .CSAffinityGroup , "" )).
459
+ Should (MatchError (MatchRegexp ("memory available .* in project can't fulfil the requirement:.*" )))
460
+ })
461
+
370
462
It ("returns errors when there is not enough available VM limit in account" , func () {
371
463
expectVMNotFound ()
372
464
dummies .CSMachine1 .Spec .DiskOffering .CustomSize = 0
@@ -388,6 +480,12 @@ var _ = Describe("Instance", func() {
388
480
MemoryAvailable : "2048" ,
389
481
VMAvailable : "0" ,
390
482
},
483
+ Project : cloud.Project {
484
+ ID : "123" ,
485
+ CPUAvailable : "20" ,
486
+ MemoryAvailable : "2048" ,
487
+ VMAvailable : "20" ,
488
+ },
391
489
}
392
490
c := cloud .NewClientFromCSAPIClient (mockClient , user )
393
491
Ω (c .GetOrCreateVMInstance (
@@ -416,12 +514,52 @@ var _ = Describe("Instance", func() {
416
514
MemoryAvailable : "2048" ,
417
515
VMAvailable : "10" ,
418
516
},
517
+ Project : cloud.Project {
518
+ ID : "123" ,
519
+ CPUAvailable : "20" ,
520
+ MemoryAvailable : "2048" ,
521
+ VMAvailable : "20" ,
522
+ },
419
523
}
420
524
c := cloud .NewClientFromCSAPIClient (mockClient , user )
421
525
Ω (c .GetOrCreateVMInstance (
422
526
dummies .CSMachine1 , dummies .CAPIMachine , dummies .CSCluster , dummies .CSFailureDomain1 , dummies .CSAffinityGroup , "" )).
423
527
Should (MatchError ("VM Limit in domain has reached it's maximum value" ))
424
528
})
529
+
530
+ It ("returns errors when there is not enough available VM limit in project" , func () {
531
+ expectVMNotFound ()
532
+ dummies .CSMachine1 .Spec .DiskOffering .CustomSize = 0
533
+ sos .EXPECT ().GetServiceOfferingByName (dummies .CSMachine1 .Spec .Offering .Name , gomock .Any ()).
534
+ Return (& cloudstack.ServiceOffering {
535
+ Id : dummies .CSMachine1 .Spec .Offering .ID ,
536
+ Name : dummies .CSMachine1 .Spec .Offering .Name ,
537
+ Cpunumber : 2 ,
538
+ Memory : 1024 ,
539
+ }, 1 , nil )
540
+ user := & cloud.User {
541
+ Account : cloud.Account {
542
+ Domain : cloud.Domain {
543
+ CPUAvailable : "20" ,
544
+ MemoryAvailable : "2048" ,
545
+ VMAvailable : "10" ,
546
+ },
547
+ CPUAvailable : "20" ,
548
+ MemoryAvailable : "2048" ,
549
+ VMAvailable : "10" ,
550
+ },
551
+ Project : cloud.Project {
552
+ ID : "123" ,
553
+ CPUAvailable : "20" ,
554
+ MemoryAvailable : "2048" ,
555
+ VMAvailable : "0" ,
556
+ },
557
+ }
558
+ c := cloud .NewClientFromCSAPIClient (mockClient , user )
559
+ Ω (c .GetOrCreateVMInstance (
560
+ dummies .CSMachine1 , dummies .CAPIMachine , dummies .CSCluster , dummies .CSFailureDomain1 , dummies .CSAffinityGroup , "" )).
561
+ Should (MatchError ("VM Limit in project has reached it's maximum value" ))
562
+ })
425
563
})
426
564
427
565
It ("handles deployment errors" , func () {
0 commit comments