@@ -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,6 +514,12 @@ 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 (
@@ -424,6 +528,41 @@ var _ = Describe("Instance", func() {
424
528
})
425
529
})
426
530
531
+ It ("returns errors when there is not enough available VM limit in project" , func () {
532
+ expectVMNotFound ()
533
+ dummies .CSMachine1 .Spec .DiskOffering .CustomSize = 0
534
+ sos .EXPECT ().GetServiceOfferingByName (dummies .CSMachine1 .Spec .Offering .Name , gomock .Any ()).
535
+ Return (& cloudstack.ServiceOffering {
536
+ Id : dummies .CSMachine1 .Spec .Offering .ID ,
537
+ Name : dummies .CSMachine1 .Spec .Offering .Name ,
538
+ Cpunumber : 2 ,
539
+ Memory : 1024 ,
540
+ }, 1 , nil )
541
+ user := & cloud.User {
542
+ Account : cloud.Account {
543
+ Domain : cloud.Domain {
544
+ CPUAvailable : "20" ,
545
+ MemoryAvailable : "2048" ,
546
+ VMAvailable : "10" ,
547
+ },
548
+ CPUAvailable : "20" ,
549
+ MemoryAvailable : "2048" ,
550
+ VMAvailable : "10" ,
551
+ },
552
+ Project : cloud.Project {
553
+ ID : "123" ,
554
+ CPUAvailable : "20" ,
555
+ MemoryAvailable : "2048" ,
556
+ VMAvailable : "0" ,
557
+ },
558
+ }
559
+ c := cloud .NewClientFromCSAPIClient (mockClient , user )
560
+ Ω (c .GetOrCreateVMInstance (
561
+ dummies .CSMachine1 , dummies .CAPIMachine , dummies .CSCluster , dummies .CSFailureDomain1 , dummies .CSAffinityGroup , "" )).
562
+ Should (MatchError ("VM Limit in project has reached it's maximum value" ))
563
+ })
564
+ })
565
+
427
566
It ("handles deployment errors" , func () {
428
567
expectVMNotFound ()
429
568
sos .EXPECT ().GetServiceOfferingByName (dummies .CSMachine1 .Spec .Offering .Name , gomock .Any ()).
0 commit comments