@@ -402,3 +402,169 @@ function Test-GalleryCrossTenant
402
402
Clean - ResourceGroup $rgname
403
403
}
404
404
}
405
+
406
+ <#
407
+ . SYNOPSIS
408
+ Testing gallery image version commands
409
+ #>
410
+ function Test-GalleryImageVersion
411
+ {
412
+ # Setup
413
+ $rgname = Get-ComputeTestResourceName ;
414
+ $galleryName = ' gallery' + $rgname ;
415
+ $galleryImageName = ' galleryimage' + $rgname ;
416
+ $galleryImageVersionName = ' imageversion' + $rgname ;
417
+
418
+ try
419
+ {
420
+ # Common
421
+ $loc = " southcentralus" ;
422
+ New-AzResourceGroup - Name $rgname - Location $loc - Force;
423
+ $description1 = " Original Description" ;
424
+
425
+ # Gallery
426
+ New-AzGallery - ResourceGroupName $rgname - Name $galleryName - Description $description1 - Location $loc ;
427
+
428
+ $gallery = Get-AzGallery - ResourceGroupName $rgname - Name $galleryName ;
429
+ Verify- Gallery $gallery $rgname $galleryName $loc $description1 ;
430
+ $output = $gallery | Out-String ;
431
+
432
+ # Gallery Image Definition
433
+ $publisherName = " galleryPublisher20180927" ;
434
+ $offerName = " galleryOffer20180927" ;
435
+ $skuName = " gallerySku20180927" ;
436
+ $eula = " eula" ;
437
+ $privacyStatementUri = " https://www.microsoft.com" ;
438
+ $releaseNoteUri = " https://www.microsoft.com" ;
439
+ $disallowedDiskTypes = " Premium_LRS" ;
440
+ $endOfLifeDate = [DateTime ]::ParseExact(' 12 07 2025 18 02' , ' HH mm yyyy dd MM' , $null );
441
+ $minMemory = 1 ;
442
+ $maxMemory = 100 ;
443
+ $minVCPU = 2 ;
444
+ $maxVCPU = 32 ;
445
+ $purchasePlanName = " purchasePlanName" ;
446
+ $purchasePlanProduct = " purchasePlanProduct" ;
447
+ $purchasePlanPublisher = " " ;
448
+ $osState = " Generalized" ;
449
+ $osType = " Linux" ;
450
+
451
+ New-AzGalleryImageDefinition - ResourceGroupName $rgname - GalleryName $galleryName - Name $galleryImageName `
452
+ - Location $loc - Publisher $publisherName - Offer $offerName - Sku $skuName `
453
+ - OsState $osState - OsType $osType `
454
+ - Description $description1 - Eula $eula `
455
+ - PrivacyStatementUri $privacyStatementUri - ReleaseNoteUri $releaseNoteUri `
456
+ - DisallowedDiskType $disallowedDiskTypes - EndOfLifeDate $endOfLifeDate `
457
+ - MinimumMemory $minMemory - MaximumMemory $maxMemory `
458
+ - MinimumVCPU $minVCPU - MaximumVCPU $maxVCPU `
459
+ - PurchasePlanName $purchasePlanName `
460
+ - PurchasePlanProduct $purchasePlanProduct `
461
+ - PurchasePlanPublisher $purchasePlanPublisher ;
462
+
463
+ $definition = Get-AzGalleryImageDefinition - ResourceGroupName $rgname - GalleryName $galleryName - Name $galleryImageName ;
464
+ $output = $definition | Out-String ;
465
+ Verify- GalleryImageDefinition $definition $rgname $galleryImageName $loc $description1 `
466
+ $eula $privacyStatementUri $releaseNoteUri `
467
+ $osType $osState $endOfLifeDate `
468
+ $publisherName $offerName $skuName `
469
+ $minVCPU $maxVCPU $minMemory $maxMemory `
470
+ $disallowedDiskTypes `
471
+ $purchasePlanName $purchasePlanPublisher $purchasePlanProduct ;
472
+
473
+ # Gallery Image Version
474
+ $galleryImageVersionName = " 1.0.0" ;
475
+
476
+ # Create a VM first
477
+ $vmsize = ' Standard_A4' ;
478
+ $vmname = ' vm' + $rgname ;
479
+ $p = New-AzVMConfig - VMName $vmname - VMSize $vmsize ;
480
+ Assert-AreEqual $p.HardwareProfile.VmSize $vmsize ;
481
+
482
+ # NRP
483
+ $subnet = New-AzVirtualNetworkSubnetConfig - Name (' subnet' + $rgname ) - AddressPrefix " 10.0.0.0/24" ;
484
+ $vnet = New-AzVirtualNetwork - Force - Name (' vnet' + $rgname ) - ResourceGroupName $rgname - Location $loc - AddressPrefix " 10.0.0.0/16" - Subnet $subnet ;
485
+ $vnet = Get-AzVirtualNetwork - Name (' vnet' + $rgname ) - ResourceGroupName $rgname ;
486
+ $subnetId = $vnet.Subnets [0 ].Id;
487
+ $pubip = New-AzPublicIpAddress - Force - Name (' pubip' + $rgname ) - ResourceGroupName $rgname - Location $loc - AllocationMethod Dynamic - DomainNameLabel (' pubip' + $rgname );
488
+ $pubip = Get-AzPublicIpAddress - Name (' pubip' + $rgname ) - ResourceGroupName $rgname ;
489
+ $nic = New-AzNetworkInterface - Force - Name (' nic' + $rgname ) - ResourceGroupName $rgname - Location $loc - SubnetId $subnetId - PublicIpAddressId $pubip.Id ;
490
+ $nic = Get-AzNetworkInterface - Name (' nic' + $rgname ) - ResourceGroupName $rgname ;
491
+
492
+ # Adding the same Nic but not set it Primary
493
+ $p = Add-AzVMNetworkInterface - VM $p - Id $nic.Id - Primary;
494
+
495
+ # Storage Account (SA)
496
+ $stoname = ' sto' + $rgname ;
497
+ $stotype = ' Standard_LRS' ;
498
+ New-AzStorageAccount - ResourceGroupName $rgname - Name $stoname - Location $loc - Type $stotype ;
499
+ $stoaccount = Get-AzStorageAccount - ResourceGroupName $rgname - Name $stoname ;
500
+
501
+ $osDiskName = ' osDisk' ;
502
+ $osDiskCaching = ' ReadWrite' ;
503
+ $osDiskVhdUri = " https://$stoname .blob.core.windows.net/test/os.vhd" ;
504
+ $dataDiskVhdUri1 = " https://$stoname .blob.core.windows.net/test/data1.vhd" ;
505
+ $dataDiskVhdUri2 = " https://$stoname .blob.core.windows.net/test/data2.vhd" ;
506
+
507
+ $p = Set-AzVMOSDisk - VM $p - Name $osDiskName - VhdUri $osDiskVhdUri - Caching $osDiskCaching - CreateOption FromImage;
508
+
509
+ $p = Add-AzVMDataDisk - VM $p - Name ' testDataDisk1' - Caching ' ReadOnly' - DiskSizeInGB 10 - Lun 1 - VhdUri $dataDiskVhdUri1 - CreateOption Empty;
510
+ $p = Add-AzVMDataDisk - VM $p - Name ' testDataDisk2' - Caching ' ReadOnly' - DiskSizeInGB 11 - Lun 2 - VhdUri $dataDiskVhdUri2 - CreateOption Empty;
511
+
512
+ # OS & Image
513
+ $user = " Foo12" ;
514
+ $password = $PLACEHOLDER ;
515
+ $securePassword = ConvertTo-SecureString $password - AsPlainText - Force;
516
+ $cred = New-Object System.Management.Automation.PSCredential ($user , $securePassword );
517
+ $computerName = ' test' ;
518
+ $vhdContainer = " https://$stoname .blob.core.windows.net/test" ;
519
+
520
+ # $p.StorageProfile.OSDisk = $null;
521
+ $p = Set-AzVMOperatingSystem - VM $p - Windows - ComputerName $computerName - Credential $cred ;
522
+
523
+ $imgRef = Get-DefaultCRPImage - loc $loc ;
524
+ $p = ($imgRef | Set-AzVMSourceImage - VM $p );
525
+
526
+ # Virtual Machine
527
+ New-AzVM - ResourceGroupName $rgname - Location $loc - VM $p ;
528
+
529
+ # Create Image using the VM's OS disk and data disks.
530
+ $imageName = ' image' + $rgname ;
531
+ $imageConfig = New-AzImageConfig - Location $loc ;
532
+ Set-AzImageOsDisk - Image $imageConfig - OsType ' Windows' - OsState ' Generalized' - BlobUri $osDiskVhdUri ;
533
+ $imageConfig = Add-AzImageDataDisk - Image $imageConfig - Lun 1 - BlobUri $dataDiskVhdUri1 ;
534
+ $imageConfig = Add-AzImageDataDisk - Image $imageConfig - Lun 2 - BlobUri $dataDiskVhdUri2 ;
535
+
536
+ $image = New-AzImage - Image $imageConfig - ImageName $imageName - ResourceGroupName $rgname
537
+ $targetRegions = @ (@ {Name = ' South Central US' ;ReplicaCount = 1 ;StorageAccountType = ' Standard_LRS' }, @ {Name = ' East US' ;ReplicaCount = 2 }, @ {Name = ' Central US' });
538
+ $tag = @ {test1 = " testval1" ; test2 = " testval2" };
539
+
540
+ New-AzGalleryImageVersion - ResourceGroupName $rgname - GalleryName $galleryName `
541
+ - GalleryImageDefinitionName $galleryImageName - Name $galleryImageVersionName `
542
+ - Location $loc - SourceImageId $image.Id - ReplicaCount 1 `
543
+ - PublishingProfileEndOfLifeDate $endOfLifeDate `
544
+ - StorageAccountType Standard_LRS `
545
+ - TargetRegion $targetRegions ;
546
+
547
+ $version = Get-AzGalleryImageVersion - ResourceGroupName $rgname - GalleryName $galleryName `
548
+ - GalleryImageDefinitionName $galleryImageName - Name $galleryImageVersionName ;
549
+ Verify- GalleryImageVersion $version $rgname $galleryImageVersionName $loc `
550
+ $image.Id 1 $endOfLifeDate $targetRegions ;
551
+
552
+ Update-AzGalleryImageVersion - ResourceGroupName $rgname - GalleryName $galleryName `
553
+ - GalleryImageDefinitionName $galleryImageName - Name $galleryImageVersionName `
554
+ - Tag $tag ;
555
+
556
+ $version = Get-AzGalleryImageVersion - ResourceGroupName $rgname - GalleryName $galleryName `
557
+ - GalleryImageDefinitionName $galleryImageName - Name $galleryImageVersionName ;
558
+ Verify- GalleryImageVersion $version $rgname $galleryImageVersionName $loc `
559
+ $image.Id 1 $endOfLifeDate $targetRegions ;
560
+
561
+ $version | Remove-AzGalleryImageVersion - Force;
562
+ $definition | Remove-AzGalleryImageDefinition - Force;
563
+ $gallery | Remove-AzGallery - Force;
564
+ }
565
+ finally
566
+ {
567
+ # Cleanup
568
+ Clean - ResourceGroup $rgname
569
+ }
570
+ }
0 commit comments