Exemple #1
0
 /// <summary>
 /// Initializes a new instance of the VirtualMachineUpdate class.
 /// </summary>
 /// <param name="tags">Resource tags</param>
 /// <param name="plan">Specifies information about the marketplace
 /// image used to create the virtual machine. This element is only used
 /// for marketplace images. Before you can use a marketplace image from
 /// an API, you must enable the image for programmatic use.  In the
 /// Azure portal, find the marketplace image that you want to use and
 /// then click **Want to deploy programmatically, Get Started -&gt;**.
 /// Enter any required information and then click **Save**.</param>
 /// <param name="hardwareProfile">Specifies the hardware settings for
 /// the virtual machine.</param>
 /// <param name="storageProfile">Specifies the storage settings for the
 /// virtual machine disks.</param>
 /// <param name="additionalCapabilities">Specifies additional
 /// capabilities enabled or disabled on the virtual machine.</param>
 /// <param name="osProfile">Specifies the operating system settings
 /// used while creating the virtual machine. Some of the settings
 /// cannot be changed once VM is provisioned.</param>
 /// <param name="networkProfile">Specifies the network interfaces of
 /// the virtual machine.</param>
 /// <param name="securityProfile">Specifies the Security related
 /// profile settings for the virtual machine.</param>
 /// <param name="diagnosticsProfile">Specifies the boot diagnostic
 /// settings state. &lt;br&gt;&lt;br&gt;Minimum api-version:
 /// 2015-06-15.</param>
 /// <param name="availabilitySet">Specifies information about the
 /// availability set that the virtual machine should be assigned to.
 /// Virtual machines specified in the same availability set are
 /// allocated to different nodes to maximize availability. For more
 /// information about availability sets, see [Availability sets
 /// overview](https://docs.microsoft.com/azure/virtual-machines/availability-set-overview).
 /// &lt;br&gt;&lt;br&gt; For more information on Azure planned
 /// maintenance, see [Maintenance and updates for Virtual Machines in
 /// Azure](https://docs.microsoft.com/azure/virtual-machines/maintenance-and-updates)
 /// &lt;br&gt;&lt;br&gt; Currently, a VM can only be added to
 /// availability set at creation time. The availability set to which
 /// the VM is being added should be under the same resource group as
 /// the availability set resource. An existing VM cannot be added to an
 /// availability set. &lt;br&gt;&lt;br&gt;This property cannot exist
 /// along with a non-null properties.virtualMachineScaleSet
 /// reference.</param>
 /// <param name="virtualMachineScaleSet">Specifies information about
 /// the virtual machine scale set that the virtual machine should be
 /// assigned to. Virtual machines specified in the same virtual machine
 /// scale set are allocated to different nodes to maximize
 /// availability. Currently, a VM can only be added to virtual machine
 /// scale set at creation time. An existing VM cannot be added to a
 /// virtual machine scale set. &lt;br&gt;&lt;br&gt;This property cannot
 /// exist along with a non-null properties.availabilitySet reference.
 /// &lt;br&gt;&lt;br&gt;Minimum api‐version: 2019‐03‐01</param>
 /// <param name="proximityPlacementGroup">Specifies information about
 /// the proximity placement group that the virtual machine should be
 /// assigned to. &lt;br&gt;&lt;br&gt;Minimum api-version:
 /// 2018-04-01.</param>
 /// <param name="priority">Specifies the priority for the virtual
 /// machine. &lt;br&gt;&lt;br&gt;Minimum api-version: 2019-03-01.
 /// Possible values include: 'Regular', 'Low', 'Spot'</param>
 /// <param name="evictionPolicy">Specifies the eviction policy for the
 /// Azure Spot virtual machine and Azure Spot scale set.
 /// &lt;br&gt;&lt;br&gt;For Azure Spot virtual machines, both
 /// 'Deallocate' and 'Delete' are supported and the minimum api-version
 /// is 2019-03-01. &lt;br&gt;&lt;br&gt;For Azure Spot scale sets, both
 /// 'Deallocate' and 'Delete' are supported and the minimum api-version
 /// is 2017-10-30-preview. Possible values include: 'Deallocate',
 /// 'Delete'</param>
 /// <param name="billingProfile">Specifies the billing related details
 /// of a Azure Spot virtual machine. &lt;br&gt;&lt;br&gt;Minimum
 /// api-version: 2019-03-01.</param>
 /// <param name="host">Specifies information about the dedicated host
 /// that the virtual machine resides in. &lt;br&gt;&lt;br&gt;Minimum
 /// api-version: 2018-10-01.</param>
 /// <param name="hostGroup">Specifies information about the dedicated
 /// host group that the virtual machine resides in.
 /// &lt;br&gt;&lt;br&gt;Minimum api-version: 2020-06-01.
 /// &lt;br&gt;&lt;br&gt;NOTE: User cannot specify both host and
 /// hostGroup properties.</param>
 /// <param name="provisioningState">The provisioning state, which only
 /// appears in the response.</param>
 /// <param name="instanceView">The virtual machine instance
 /// view.</param>
 /// <param name="licenseType">Specifies that the image or disk that is
 /// being used was licensed on-premises. &lt;br&gt;&lt;br&gt; Possible
 /// values for Windows Server operating system are:
 /// &lt;br&gt;&lt;br&gt; Windows_Client &lt;br&gt;&lt;br&gt;
 /// Windows_Server &lt;br&gt;&lt;br&gt; Possible values for Linux
 /// Server operating system are: &lt;br&gt;&lt;br&gt; RHEL_BYOS (for
 /// RHEL) &lt;br&gt;&lt;br&gt; SLES_BYOS (for SUSE)
 /// &lt;br&gt;&lt;br&gt; For more information, see [Azure Hybrid Use
 /// Benefit for Windows
 /// Server](https://docs.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing)
 /// &lt;br&gt;&lt;br&gt; [Azure Hybrid Use Benefit for Linux
 /// Server](https://docs.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux)
 /// &lt;br&gt;&lt;br&gt; Minimum api-version: 2015-06-15</param>
 /// <param name="vmId">Specifies the VM unique ID which is a 128-bits
 /// identifier that is encoded and stored in all Azure IaaS VMs SMBIOS
 /// and can be read using platform BIOS commands.</param>
 /// <param name="extensionsTimeBudget">Specifies the time alloted for
 /// all extensions to start. The time duration should be between 15
 /// minutes and 120 minutes (inclusive) and should be specified in ISO
 /// 8601 format. The default value is 90 minutes (PT1H30M).
 /// &lt;br&gt;&lt;br&gt; Minimum api-version: 2020-06-01</param>
 /// <param name="platformFaultDomain">Specifies the scale set logical
 /// fault domain into which the Virtual Machine will be created. By
 /// default, the Virtual Machine will by automatically assigned to a
 /// fault domain that best maintains balance across available fault
 /// domains.&lt;br&gt;&lt;li&gt;This is applicable only if the
 /// 'virtualMachineScaleSet' property of this Virtual Machine is
 /// set.&lt;li&gt;The Virtual Machine Scale Set that is referenced,
 /// must have 'platformFaultDomainCount' &amp;gt; 1.&lt;li&gt;This
 /// property cannot be updated once the Virtual Machine is
 /// created.&lt;li&gt;Fault domain assignment can be viewed in the
 /// Virtual Machine Instance View.&lt;br&gt;&lt;br&gt;Minimum
 /// api‐version: 2020‐12‐01</param>
 /// <param name="scheduledEventsProfile">Specifies Scheduled Event
 /// related configurations.</param>
 /// <param name="userData">UserData for the VM, which must be base-64
 /// encoded. Customer should not pass any secrets in here.
 /// &lt;br&gt;&lt;br&gt;Minimum api-version: 2021-03-01</param>
 /// <param name="capacityReservation">Specifies information about the
 /// capacity reservation that is used to allocate virtual machine.
 /// &lt;br&gt;&lt;br&gt;Minimum api-version: 2021-04-01.</param>
 /// <param name="applicationProfile">Specifies the gallery applications
 /// that should be made available to the VM/VMSS</param>
 /// <param name="timeCreated">Specifies the time at which the Virtual
 /// Machine resource was created.&lt;br&gt;&lt;br&gt;Minimum
 /// api-version: 2022-03-01.</param>
 /// <param name="identity">The identity of the virtual machine, if
 /// configured.</param>
 /// <param name="zones">The virtual machine zones.</param>
 public VirtualMachineUpdate(IDictionary <string, string> tags = default(IDictionary <string, string>), Plan plan = default(Plan), HardwareProfile hardwareProfile = default(HardwareProfile), StorageProfile storageProfile = default(StorageProfile), AdditionalCapabilities additionalCapabilities = default(AdditionalCapabilities), OSProfile osProfile = default(OSProfile), NetworkProfile networkProfile = default(NetworkProfile), SecurityProfile securityProfile = default(SecurityProfile), DiagnosticsProfile diagnosticsProfile = default(DiagnosticsProfile), SubResource availabilitySet = default(SubResource), SubResource virtualMachineScaleSet = default(SubResource), SubResource proximityPlacementGroup = default(SubResource), string priority = default(string), string evictionPolicy = default(string), BillingProfile billingProfile = default(BillingProfile), SubResource host = default(SubResource), SubResource hostGroup = default(SubResource), string provisioningState = default(string), VirtualMachineInstanceView instanceView = default(VirtualMachineInstanceView), string licenseType = default(string), string vmId = default(string), string extensionsTimeBudget = default(string), int?platformFaultDomain = default(int?), ScheduledEventsProfile scheduledEventsProfile = default(ScheduledEventsProfile), string userData = default(string), CapacityReservationProfile capacityReservation = default(CapacityReservationProfile), ApplicationProfile applicationProfile = default(ApplicationProfile), System.DateTime?timeCreated = default(System.DateTime?), VirtualMachineIdentity identity = default(VirtualMachineIdentity), IList <string> zones = default(IList <string>))
     : base(tags)
 {
     Plan                    = plan;
     HardwareProfile         = hardwareProfile;
     StorageProfile          = storageProfile;
     AdditionalCapabilities  = additionalCapabilities;
     OsProfile               = osProfile;
     NetworkProfile          = networkProfile;
     SecurityProfile         = securityProfile;
     DiagnosticsProfile      = diagnosticsProfile;
     AvailabilitySet         = availabilitySet;
     VirtualMachineScaleSet  = virtualMachineScaleSet;
     ProximityPlacementGroup = proximityPlacementGroup;
     Priority                = priority;
     EvictionPolicy          = evictionPolicy;
     BillingProfile          = billingProfile;
     Host                    = host;
     HostGroup               = hostGroup;
     ProvisioningState       = provisioningState;
     InstanceView            = instanceView;
     LicenseType             = licenseType;
     VmId                    = vmId;
     ExtensionsTimeBudget    = extensionsTimeBudget;
     PlatformFaultDomain     = platformFaultDomain;
     ScheduledEventsProfile  = scheduledEventsProfile;
     UserData                = userData;
     CapacityReservation     = capacityReservation;
     ApplicationProfile      = applicationProfile;
     TimeCreated             = timeCreated;
     Identity                = identity;
     Zones                   = zones;
     CustomInit();
 }
 public VirtualMachine(string location, string id, string name, string type, IDictionary <string, string> tags, Plan plan, HardwareProfile hardwareProfile, StorageProfile storageProfile, AdditionalCapabilities additionalCapabilities, OSProfile osProfile, NetworkProfile networkProfile, SecurityProfile securityProfile, DiagnosticsProfile diagnosticsProfile, SubResource availabilitySet, SubResource virtualMachineScaleSet, SubResource proximityPlacementGroup, string priority, string evictionPolicy, BillingProfile billingProfile, SubResource host, SubResource hostGroup, string provisioningState, VirtualMachineInstanceView instanceView, string licenseType, string vmId, string extensionsTimeBudget)
     : base(location, id, name, type, tags)
 {
     Plan                    = plan;
     HardwareProfile         = hardwareProfile;
     StorageProfile          = storageProfile;
     AdditionalCapabilities  = additionalCapabilities;
     OsProfile               = osProfile;
     NetworkProfile          = networkProfile;
     SecurityProfile         = securityProfile;
     DiagnosticsProfile      = diagnosticsProfile;
     AvailabilitySet         = availabilitySet;
     VirtualMachineScaleSet  = virtualMachineScaleSet;
     ProximityPlacementGroup = proximityPlacementGroup;
     Priority                = priority;
     EvictionPolicy          = evictionPolicy;
     BillingProfile          = billingProfile;
     Host                    = host;
     HostGroup               = hostGroup;
     ProvisioningState       = provisioningState;
     InstanceView            = instanceView;
     LicenseType             = licenseType;
     VmId                    = vmId;
     ExtensionsTimeBudget    = extensionsTimeBudget;
     CustomInit();
 }
 /// <summary>
 /// Initializes a new instance of the VirtualMachine class.
 /// </summary>
 /// <param name="location">Resource location</param>
 /// <param name="id">Resource Id</param>
 /// <param name="name">Resource name</param>
 /// <param name="type">Resource type</param>
 /// <param name="tags">Resource tags</param>
 /// <param name="plan">Specifies information about the marketplace
 /// image used to create the virtual machine. This element is only used
 /// for marketplace images. Before you can use a marketplace image from
 /// an API, you must enable the image for programmatic use.  In the
 /// Azure portal, find the marketplace image that you want to use and
 /// then click **Want to deploy programmatically, Get Started -&gt;**.
 /// Enter any required information and then click **Save**.</param>
 /// <param name="hardwareProfile">Specifies the hardware settings for
 /// the virtual machine.</param>
 /// <param name="storageProfile">Specifies the storage settings for the
 /// virtual machine disks.</param>
 /// <param name="additionalCapabilities">Specifies additional
 /// capabilities enabled or disabled on the virtual machine.</param>
 /// <param name="osProfile">Specifies the operating system settings for
 /// the virtual machine.</param>
 /// <param name="networkProfile">Specifies the network interfaces of
 /// the virtual machine.</param>
 /// <param name="diagnosticsProfile">Specifies the boot diagnostic
 /// settings state. &lt;br&gt;&lt;br&gt;Minimum api-version:
 /// 2015-06-15.</param>
 /// <param name="availabilitySet">Specifies information about the
 /// availability set that the virtual machine should be assigned to.
 /// Virtual machines specified in the same availability set are
 /// allocated to different nodes to maximize availability. For more
 /// information about availability sets, see [Manage the availability
 /// of virtual
 /// machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
 /// &lt;br&gt;&lt;br&gt; For more information on Azure planned
 /// maintenance, see [Planned maintenance for virtual machines in
 /// Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json)
 /// &lt;br&gt;&lt;br&gt; Currently, a VM can only be added to
 /// availability set at creation time. An existing VM cannot be added
 /// to an availability set. &lt;br&gt;&lt;br&gt;This property cannot
 /// exist along with a non-null properties.virtualMachineScaleSet
 /// reference.</param>
 /// <param name="virtualMachineScaleSet">Specifies information about
 /// the virtual machine scale set that the virtual machine should be
 /// assigned to. Virtual machines specified in the same virtual machine
 /// scale set are allocated to different nodes to maximize
 /// availability. Currently, a VM can only be added to virtual machine
 /// scale set at creation time. An existing VM cannot be added to a
 /// virtual machine scale set. &lt;br&gt;&lt;br&gt;This property cannot
 /// exist along with a non-null properties.availabilitySet reference.
 /// &lt;br&gt;&lt;br&gt;Minimum api‐version: 2019‐03‐01</param>
 /// <param name="proximityPlacementGroup">Specifies information about
 /// the proximity placement group that the virtual machine should be
 /// assigned to. &lt;br&gt;&lt;br&gt;Minimum api-version:
 /// 2018-04-01.</param>
 /// <param name="priority">Specifies the priority for the virtual
 /// machine. &lt;br&gt;&lt;br&gt;Minimum api-version: 2019-03-01.
 /// Possible values include: 'Regular', 'Low', 'Spot'</param>
 /// <param name="evictionPolicy">Specifies the eviction policy for the
 /// Azure Spot virtual machine. Only supported value is 'Deallocate'.
 /// &lt;br&gt;&lt;br&gt;Minimum api-version: 2019-03-01. Possible
 /// values include: 'Deallocate', 'Delete'</param>
 /// <param name="billingProfile">Specifies the billing related details
 /// of a Azure Spot virtual machine. &lt;br&gt;&lt;br&gt;Minimum
 /// api-version: 2019-03-01.</param>
 /// <param name="host">Specifies information about the dedicated host
 /// that the virtual machine resides in. &lt;br&gt;&lt;br&gt;Minimum
 /// api-version: 2018-10-01.</param>
 /// <param name="provisioningState">The provisioning state, which only
 /// appears in the response.</param>
 /// <param name="instanceView">The virtual machine instance
 /// view.</param>
 /// <param name="licenseType">Specifies that the image or disk that is
 /// being used was licensed on-premises. This element is only used for
 /// images that contain the Windows Server operating system.
 /// &lt;br&gt;&lt;br&gt; Possible values are: &lt;br&gt;&lt;br&gt;
 /// Windows_Client &lt;br&gt;&lt;br&gt; Windows_Server
 /// &lt;br&gt;&lt;br&gt; If this element is included in a request for
 /// an update, the value must match the initial value. This value
 /// cannot be updated. &lt;br&gt;&lt;br&gt; For more information, see
 /// [Azure Hybrid Use Benefit for Windows
 /// Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json)
 /// &lt;br&gt;&lt;br&gt; Minimum api-version: 2015-06-15</param>
 /// <param name="vmId">Specifies the VM unique ID which is a 128-bits
 /// identifier that is encoded and stored in all Azure IaaS VMs SMBIOS
 /// and can be read using platform BIOS commands.</param>
 /// <param name="resources">The virtual machine child extension
 /// resources.</param>
 /// <param name="identity">The identity of the virtual machine, if
 /// configured.</param>
 /// <param name="zones">The virtual machine zones.</param>
 public VirtualMachine(string location, string id = default(string), string name = default(string), string type = default(string), IDictionary <string, string> tags = default(IDictionary <string, string>), Plan plan = default(Plan), HardwareProfile hardwareProfile = default(HardwareProfile), StorageProfile storageProfile = default(StorageProfile), AdditionalCapabilities additionalCapabilities = default(AdditionalCapabilities), OSProfile osProfile = default(OSProfile), NetworkProfile networkProfile = default(NetworkProfile), DiagnosticsProfile diagnosticsProfile = default(DiagnosticsProfile), SubResource availabilitySet = default(SubResource), SubResource virtualMachineScaleSet = default(SubResource), SubResource proximityPlacementGroup = default(SubResource), string priority = default(string), string evictionPolicy = default(string), BillingProfile billingProfile = default(BillingProfile), SubResource host = default(SubResource), string provisioningState = default(string), VirtualMachineInstanceView instanceView = default(VirtualMachineInstanceView), string licenseType = default(string), string vmId = default(string), IList <VirtualMachineExtension> resources = default(IList <VirtualMachineExtension>), VirtualMachineIdentity identity = default(VirtualMachineIdentity), IList <string> zones = default(IList <string>))
     : base(location, id, name, type, tags)
 {
     Plan                    = plan;
     HardwareProfile         = hardwareProfile;
     StorageProfile          = storageProfile;
     AdditionalCapabilities  = additionalCapabilities;
     OsProfile               = osProfile;
     NetworkProfile          = networkProfile;
     DiagnosticsProfile      = diagnosticsProfile;
     AvailabilitySet         = availabilitySet;
     VirtualMachineScaleSet  = virtualMachineScaleSet;
     ProximityPlacementGroup = proximityPlacementGroup;
     Priority                = priority;
     EvictionPolicy          = evictionPolicy;
     BillingProfile          = billingProfile;
     Host                    = host;
     ProvisioningState       = provisioningState;
     InstanceView            = instanceView;
     LicenseType             = licenseType;
     VmId                    = vmId;
     Resources               = resources;
     Identity                = identity;
     Zones                   = zones;
     CustomInit();
 }
Exemple #4
0
 /// <summary>
 /// Initializes a new instance of the VirtualMachineUpdate class.
 /// </summary>
 /// <param name="tags">Resource tags</param>
 /// <param name="plan">Specifies information about the marketplace
 /// image used to create the virtual machine. This element is only used
 /// for marketplace images. Before you can use a marketplace image from
 /// an API, you must enable the image for programmatic use.  In the
 /// Azure portal, find the marketplace image that you want to use and
 /// then click **Want to deploy programmatically, Get Started -&gt;**.
 /// Enter any required information and then click **Save**.</param>
 /// <param name="hardwareProfile">Specifies the hardware settings for
 /// the virtual machine.</param>
 /// <param name="storageProfile">Specifies the storage settings for the
 /// virtual machine disks.</param>
 /// <param name="additionalCapabilities">Specifies additional
 /// capabilities enabled or disabled on the virtual machine.</param>
 /// <param name="osProfile">Specifies the operating system settings
 /// used while creating the virtual machine. Some of the settings
 /// cannot be changed once VM is provisioned.</param>
 /// <param name="networkProfile">Specifies the network interfaces of
 /// the virtual machine.</param>
 /// <param name="securityProfile">Specifies the Security related
 /// profile settings for the virtual machine.</param>
 /// <param name="diagnosticsProfile">Specifies the boot diagnostic
 /// settings state. &lt;br&gt;&lt;br&gt;Minimum api-version:
 /// 2015-06-15.</param>
 /// <param name="availabilitySet">Specifies information about the
 /// availability set that the virtual machine should be assigned to.
 /// Virtual machines specified in the same availability set are
 /// allocated to different nodes to maximize availability. For more
 /// information about availability sets, see [Availability sets
 /// overview](https://docs.microsoft.com/azure/virtual-machines/availability-set-overview).
 /// &lt;br&gt;&lt;br&gt; For more information on Azure planned
 /// maintenance, see [Maintenance and updates for Virtual Machines in
 /// Azure](https://docs.microsoft.com/azure/virtual-machines/maintenance-and-updates)
 /// &lt;br&gt;&lt;br&gt; Currently, a VM can only be added to
 /// availability set at creation time. The availability set to which
 /// the VM is being added should be under the same resource group as
 /// the availability set resource. An existing VM cannot be added to an
 /// availability set. &lt;br&gt;&lt;br&gt;This property cannot exist
 /// along with a non-null properties.virtualMachineScaleSet
 /// reference.</param>
 /// <param name="virtualMachineScaleSet">Specifies information about
 /// the virtual machine scale set that the virtual machine should be
 /// assigned to. Virtual machines specified in the same virtual machine
 /// scale set are allocated to different nodes to maximize
 /// availability. Currently, a VM can only be added to virtual machine
 /// scale set at creation time. An existing VM cannot be added to a
 /// virtual machine scale set. &lt;br&gt;&lt;br&gt;This property cannot
 /// exist along with a non-null properties.availabilitySet reference.
 /// &lt;br&gt;&lt;br&gt;Minimum api‐version: 2019‐03‐01</param>
 /// <param name="proximityPlacementGroup">Specifies information about
 /// the proximity placement group that the virtual machine should be
 /// assigned to. &lt;br&gt;&lt;br&gt;Minimum api-version:
 /// 2018-04-01.</param>
 /// <param name="priority">Specifies the priority for the virtual
 /// machine. &lt;br&gt;&lt;br&gt;Minimum api-version: 2019-03-01.
 /// Possible values include: 'Regular', 'Low', 'Spot'</param>
 /// <param name="evictionPolicy">Specifies the eviction policy for the
 /// Azure Spot virtual machine and Azure Spot scale set.
 /// &lt;br&gt;&lt;br&gt;For Azure Spot virtual machines, both
 /// 'Deallocate' and 'Delete' are supported and the minimum api-version
 /// is 2019-03-01. &lt;br&gt;&lt;br&gt;For Azure Spot scale sets, both
 /// 'Deallocate' and 'Delete' are supported and the minimum api-version
 /// is 2017-10-30-preview. Possible values include: 'Deallocate',
 /// 'Delete'</param>
 /// <param name="billingProfile">Specifies the billing related details
 /// of a Azure Spot virtual machine. &lt;br&gt;&lt;br&gt;Minimum
 /// api-version: 2019-03-01.</param>
 /// <param name="host">Specifies information about the dedicated host
 /// that the virtual machine resides in. &lt;br&gt;&lt;br&gt;Minimum
 /// api-version: 2018-10-01.</param>
 /// <param name="hostGroup">Specifies information about the dedicated
 /// host group that the virtual machine resides in.
 /// &lt;br&gt;&lt;br&gt;Minimum api-version: 2020-06-01.
 /// &lt;br&gt;&lt;br&gt;NOTE: User cannot specify both host and
 /// hostGroup properties.</param>
 /// <param name="provisioningState">The provisioning state, which only
 /// appears in the response.</param>
 /// <param name="instanceView">The virtual machine instance
 /// view.</param>
 /// <param name="licenseType">Specifies that the image or disk that is
 /// being used was licensed on-premises. &lt;br&gt;&lt;br&gt; Possible
 /// values for Windows Server operating system are:
 /// &lt;br&gt;&lt;br&gt; Windows_Client &lt;br&gt;&lt;br&gt;
 /// Windows_Server &lt;br&gt;&lt;br&gt; Possible values for Linux
 /// Server operating system are: &lt;br&gt;&lt;br&gt; RHEL_BYOS (for
 /// RHEL) &lt;br&gt;&lt;br&gt; SLES_BYOS (for SUSE)
 /// &lt;br&gt;&lt;br&gt; For more information, see [Azure Hybrid Use
 /// Benefit for Windows
 /// Server](https://docs.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing)
 /// &lt;br&gt;&lt;br&gt; [Azure Hybrid Use Benefit for Linux
 /// Server](https://docs.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux)
 /// &lt;br&gt;&lt;br&gt; Minimum api-version: 2015-06-15</param>
 /// <param name="vmId">Specifies the VM unique ID which is a 128-bits
 /// identifier that is encoded and stored in all Azure IaaS VMs SMBIOS
 /// and can be read using platform BIOS commands.</param>
 /// <param name="extensionsTimeBudget">Specifies the time alloted for
 /// all extensions to start. The time duration should be between 15
 /// minutes and 120 minutes (inclusive) and should be specified in ISO
 /// 8601 format. The default value is 90 minutes (PT1H30M).
 /// &lt;br&gt;&lt;br&gt; Minimum api-version: 2020-06-01</param>
 /// <param name="platformFaultDomain">Specifies the scale set logical
 /// fault domain into which the Virtual Machine will be created. By
 /// default, the Virtual Machine will by automatically assigned to a
 /// fault domain that best maintains balance across available fault
 /// domains.&lt;br&gt;&lt;li&gt;This is applicable only if the
 /// 'virtualMachineScaleSet' property of this Virtual Machine is
 /// set.&lt;li&gt;The Virtual Machine Scale Set that is referenced,
 /// must have 'platformFaultDomainCount' &amp;gt; 1.&lt;li&gt;This
 /// property cannot be updated once the Virtual Machine is
 /// created.&lt;li&gt;Fault domain assignment can be viewed in the
 /// Virtual Machine Instance View.&lt;br&gt;&lt;br&gt;Minimum
 /// api‐version: 2020‐12‐01</param>
 public VirtualMachineUpdate(IDictionary <string, string> tags = default(IDictionary <string, string>), Plan plan = default(Plan), HardwareProfile hardwareProfile = default(HardwareProfile), StorageProfile storageProfile = default(StorageProfile), AdditionalCapabilities additionalCapabilities = default(AdditionalCapabilities), OSProfile osProfile = default(OSProfile), NetworkProfile networkProfile = default(NetworkProfile), SecurityProfile securityProfile = default(SecurityProfile), DiagnosticsProfile diagnosticsProfile = default(DiagnosticsProfile), SubResource availabilitySet = default(SubResource), SubResource virtualMachineScaleSet = default(SubResource), SubResource proximityPlacementGroup = default(SubResource), string priority = default(string), string evictionPolicy = default(string), BillingProfile billingProfile = default(BillingProfile), SubResource host = default(SubResource), SubResource hostGroup = default(SubResource), string provisioningState = default(string), VirtualMachineInstanceView instanceView = default(VirtualMachineInstanceView), string licenseType = default(string), string vmId = default(string), string extensionsTimeBudget = default(string), int?platformFaultDomain = default(int?))
     : base(tags)
 {
     Plan                    = plan;
     HardwareProfile         = hardwareProfile;
     StorageProfile          = storageProfile;
     AdditionalCapabilities  = additionalCapabilities;
     OsProfile               = osProfile;
     NetworkProfile          = networkProfile;
     SecurityProfile         = securityProfile;
     DiagnosticsProfile      = diagnosticsProfile;
     AvailabilitySet         = availabilitySet;
     VirtualMachineScaleSet  = virtualMachineScaleSet;
     ProximityPlacementGroup = proximityPlacementGroup;
     Priority                = priority;
     EvictionPolicy          = evictionPolicy;
     BillingProfile          = billingProfile;
     Host                    = host;
     HostGroup               = hostGroup;
     ProvisioningState       = provisioningState;
     InstanceView            = instanceView;
     LicenseType             = licenseType;
     VmId                    = vmId;
     ExtensionsTimeBudget    = extensionsTimeBudget;
     PlatformFaultDomain     = platformFaultDomain;
     CustomInit();
 }
 public VirtualMachine(string location, string id, string name, string type, IDictionary <string, string> tags, Plan plan, HardwareProfile hardwareProfile, StorageProfile storageProfile, AdditionalCapabilities additionalCapabilities, OSProfile osProfile, NetworkProfile networkProfile, SecurityProfile securityProfile, DiagnosticsProfile diagnosticsProfile, SubResource availabilitySet, SubResource virtualMachineScaleSet, SubResource proximityPlacementGroup, string priority, string evictionPolicy, BillingProfile billingProfile, SubResource host, SubResource hostGroup, string provisioningState, VirtualMachineInstanceView instanceView, string licenseType, string vmId, string extensionsTimeBudget, int?platformFaultDomain, ScheduledEventsProfile scheduledEventsProfile, string userData, CapacityReservationProfile capacityReservation, IList <VirtualMachineExtension> resources, VirtualMachineIdentity identity)
     : base(location, id, name, type, tags)
 {
     Plan                    = plan;
     HardwareProfile         = hardwareProfile;
     StorageProfile          = storageProfile;
     AdditionalCapabilities  = additionalCapabilities;
     OsProfile               = osProfile;
     NetworkProfile          = networkProfile;
     SecurityProfile         = securityProfile;
     DiagnosticsProfile      = diagnosticsProfile;
     AvailabilitySet         = availabilitySet;
     VirtualMachineScaleSet  = virtualMachineScaleSet;
     ProximityPlacementGroup = proximityPlacementGroup;
     Priority                = priority;
     EvictionPolicy          = evictionPolicy;
     BillingProfile          = billingProfile;
     Host                    = host;
     HostGroup               = hostGroup;
     ProvisioningState       = provisioningState;
     InstanceView            = instanceView;
     LicenseType             = licenseType;
     VmId                    = vmId;
     ExtensionsTimeBudget    = extensionsTimeBudget;
     PlatformFaultDomain     = platformFaultDomain;
     ScheduledEventsProfile  = scheduledEventsProfile;
     UserData                = userData;
     CapacityReservation     = capacityReservation;
     Resources               = resources;
     Identity                = identity;
     CustomInit();
 }
Exemple #6
0
 /// <summary>
 /// Initializes a new instance of the VirtualMachine class.
 /// </summary>
 public VirtualMachine(string location, string id = default(string), string name = default(string), string type = default(string), IDictionary <string, string> tags = default(IDictionary <string, string>), Plan plan = default(Plan), IList <VirtualMachineExtension> resources = default(IList <VirtualMachineExtension>), HardwareProfile hardwareProfile = default(HardwareProfile), StorageProfile storageProfile = default(StorageProfile), OSProfile osProfile = default(OSProfile), NetworkProfile networkProfile = default(NetworkProfile), DiagnosticsProfile diagnosticsProfile = default(DiagnosticsProfile), SubResource availabilitySet = default(SubResource), string provisioningState = default(string), VirtualMachineInstanceView instanceView = default(VirtualMachineInstanceView), string licenseType = default(string))
     : base(location, id, name, type, tags)
 {
     Plan               = plan;
     Resources          = resources;
     HardwareProfile    = hardwareProfile;
     StorageProfile     = storageProfile;
     OsProfile          = osProfile;
     NetworkProfile     = networkProfile;
     DiagnosticsProfile = diagnosticsProfile;
     AvailabilitySet    = availabilitySet;
     ProvisioningState  = provisioningState;
     InstanceView       = instanceView;
     LicenseType        = licenseType;
 }
Exemple #7
0
 /// <summary>
 /// Initializes a new instance of the VirtualMachineUpdate class.
 /// </summary>
 /// <param name="tags">Resource tags</param>
 /// <param name="plan">Specifies information about the marketplace
 /// image used to create the virtual machine. This element is only used
 /// for marketplace images. Before you can use a marketplace image from
 /// an API, you must enable the image for programmatic use.  In the
 /// Azure portal, find the marketplace image that you want to use and
 /// then click **Want to deploy programmatically, Get Started -&gt;**.
 /// Enter any required information and then click **Save**.</param>
 /// <param name="hardwareProfile">Specifies the hardware settings for
 /// the virtual machine.</param>
 /// <param name="storageProfile">Specifies the storage settings for the
 /// virtual machine disks.</param>
 /// <param name="additionalCapabilities">Specifies additional
 /// capabilities enabled or disabled on the virtual machine.</param>
 /// <param name="osProfile">Specifies the operating system settings for
 /// the virtual machine.</param>
 /// <param name="networkProfile">Specifies the network interfaces of
 /// the virtual machine.</param>
 /// <param name="diagnosticsProfile">Specifies the boot diagnostic
 /// settings state. &lt;br&gt;&lt;br&gt;Minimum api-version:
 /// 2015-06-15.</param>
 /// <param name="availabilitySet">Specifies information about the
 /// availability set that the virtual machine should be assigned to.
 /// Virtual machines specified in the same availability set are
 /// allocated to different nodes to maximize availability. For more
 /// information about availability sets, see [Manage the availability
 /// of virtual
 /// machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
 /// &lt;br&gt;&lt;br&gt; For more information on Azure planned
 /// maintenance, see [Planned maintenance for virtual machines in
 /// Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json)
 /// &lt;br&gt;&lt;br&gt; Currently, a VM can only be added to
 /// availability set at creation time. An existing VM cannot be added
 /// to an availability set.</param>
 /// <param name="provisioningState">The provisioning state, which only
 /// appears in the response.</param>
 /// <param name="instanceView">The virtual machine instance
 /// view.</param>
 /// <param name="licenseType">Specifies that the image or disk that is
 /// being used was licensed on-premises. This element is only used for
 /// images that contain the Windows Server operating system.
 /// &lt;br&gt;&lt;br&gt; Possible values are: &lt;br&gt;&lt;br&gt;
 /// Windows_Client &lt;br&gt;&lt;br&gt; Windows_Server
 /// &lt;br&gt;&lt;br&gt; If this element is included in a request for
 /// an update, the value must match the initial value. This value
 /// cannot be updated. &lt;br&gt;&lt;br&gt; For more information, see
 /// [Azure Hybrid Use Benefit for Windows
 /// Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json)
 /// &lt;br&gt;&lt;br&gt; Minimum api-version: 2015-06-15</param>
 /// <param name="vmId">Specifies the VM unique ID which is a 128-bits
 /// identifier that is encoded and stored in all Azure IaaS VMs SMBIOS
 /// and can be read using platform BIOS commands.</param>
 /// <param name="identity">The identity of the virtual machine, if
 /// configured.</param>
 /// <param name="zones">The virtual machine zones.</param>
 public VirtualMachineUpdate(IDictionary <string, string> tags = default(IDictionary <string, string>), Plan plan = default(Plan), HardwareProfile hardwareProfile = default(HardwareProfile), StorageProfile storageProfile = default(StorageProfile), AdditionalCapabilities additionalCapabilities = default(AdditionalCapabilities), OSProfile osProfile = default(OSProfile), NetworkProfile networkProfile = default(NetworkProfile), DiagnosticsProfile diagnosticsProfile = default(DiagnosticsProfile), SubResource availabilitySet = default(SubResource), string provisioningState = default(string), VirtualMachineInstanceView instanceView = default(VirtualMachineInstanceView), string licenseType = default(string), string vmId = default(string), VirtualMachineIdentity identity = default(VirtualMachineIdentity), IList <string> zones = default(IList <string>))
     : base(tags)
 {
     Plan                   = plan;
     HardwareProfile        = hardwareProfile;
     StorageProfile         = storageProfile;
     AdditionalCapabilities = additionalCapabilities;
     OsProfile              = osProfile;
     NetworkProfile         = networkProfile;
     DiagnosticsProfile     = diagnosticsProfile;
     AvailabilitySet        = availabilitySet;
     ProvisioningState      = provisioningState;
     InstanceView           = instanceView;
     LicenseType            = licenseType;
     VmId                   = vmId;
     Identity               = identity;
     Zones                  = zones;
     CustomInit();
 }
        internal VirtualMachineExtensionInstanceView GetExtension(VirtualMachine vm, VirtualMachineInstanceView vmStatus, string type, string publisher)
        {
            var ext = this.GetExtension(vm, type, publisher);
            if (ext == null)
            {
                return null;
            }

            if (vmStatus.Extensions == null)
            {
                return null;
            }
            return vmStatus.Extensions.FirstOrDefault(extSt => extSt.Name.Equals(ext.Name));
        }
        internal Version GetExtensionVersion(VirtualMachine vm, VirtualMachineInstanceView vmStatus, string osType, string type, string publisher)
        {
            Version version = new Version();
            if (AEMExtensionConstants.AEMExtensionPublisher[osType].Equals(publisher, StringComparison.InvariantCultureIgnoreCase)
                && AEMExtensionConstants.AEMExtensionType[osType].Equals(type, StringComparison.InvariantCultureIgnoreCase))
            {
                version = AEMExtensionConstants.AEMExtensionVersion[osType];
            }
            else if (AEMExtensionConstants.WADExtensionPublisher[osType].Equals(publisher, StringComparison.InvariantCultureIgnoreCase)
                && AEMExtensionConstants.WADExtensionType[osType].Equals(type, StringComparison.InvariantCultureIgnoreCase))
            {
                version = AEMExtensionConstants.WADExtensionVersion[osType];
            }

            if (vm.Resources != null && vmStatus.Extensions != null)
            {
                var extension = vm.Resources.FirstOrDefault(ext =>
                   ext.VirtualMachineExtensionType.Equals(type)
                   && ext.Publisher.Equals(publisher));

                if (extension != null)
                {
                    var extensionStatus = vmStatus.Extensions.FirstOrDefault(ext => ext.Name.Equals(extension.Name));

                    if (extensionStatus != null)
                    {
                        string strExtVersion = extensionStatus.TypeHandlerVersion;
                        Version extVersion;
                        if (Version.TryParse(strExtVersion, out extVersion))
                        {
                            version = extVersion;
                        }
                    }
                }
            }
            return version;
        }
        private VirtualMachine SetAzureVMDiagnosticsExtensionC(VirtualMachine vm, VirtualMachineInstanceView vmStatus, string storageAccountName, string storageAccountKey)
        {
            System.Xml.XmlDocument xpublicConfig = null;

            var extensionName = AEMExtensionConstants.WADExtensionDefaultName[this.OSType];

            var extTemp = this._Helper.GetExtension(vm,
                AEMExtensionConstants.WADExtensionType[this.OSType], AEMExtensionConstants.WADExtensionPublisher[OSType]);
            object publicConf = null;
            if (extTemp != null)
            {
                publicConf = extTemp.Settings;
                extensionName = extTemp.Name;
            }

            if (publicConf != null)
            {
                var jpublicConf = publicConf as Newtonsoft.Json.Linq.JObject;
                if (jpublicConf == null)
                {
                    throw new ArgumentException();
                }

                var base64 = jpublicConf["xmlCfg"] as Newtonsoft.Json.Linq.JValue;
                if (base64 == null)
                {
                    throw new ArgumentException();
                }

                System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
                xDoc.LoadXml(Encoding.UTF8.GetString(System.Convert.FromBase64String(base64.Value.ToString())));

                if (xDoc.SelectSingleNode("/WadCfg/DiagnosticMonitorConfiguration/PerformanceCounters") != null)
                {
                    xDoc.SelectSingleNode("WadCfg/DiagnosticMonitorConfiguration").Attributes["overallQuotaInMB"].Value = "4096";
                    xDoc.SelectSingleNode("WadCfg/DiagnosticMonitorConfiguration/PerformanceCounters").Attributes["scheduledTransferPeriod"].Value = "PT1M";

                    xpublicConfig = xDoc;
                }
            }

            if (xpublicConfig == null)
            {
                xpublicConfig = new System.Xml.XmlDocument();
                xpublicConfig.LoadXml(AEMExtensionConstants.WADConfigXML);
            }

            foreach (var perfCounter in AEMExtensionConstants.PerformanceCounters[OSType])
            {
                var currentCounter = xpublicConfig.
                            SelectSingleNode("WadCfg/DiagnosticMonitorConfiguration/PerformanceCounters/PerformanceCounterConfiguration[@counterSpecifier = '" + perfCounter.counterSpecifier + "']");
                if (currentCounter == null)
                {
                    var node = xpublicConfig.CreateElement("PerformanceCounterConfiguration");
                    xpublicConfig.SelectSingleNode("WadCfg/DiagnosticMonitorConfiguration/PerformanceCounters").AppendChild(node);
                    node.SetAttribute("counterSpecifier", perfCounter.counterSpecifier);
                    node.SetAttribute("sampleRate", perfCounter.sampleRate);
                }
            }

            var endpoint = this._Helper.GetCoreEndpoint(storageAccountName);
            endpoint = "https://" + endpoint;

            Newtonsoft.Json.Linq.JObject jPublicConfig = new Newtonsoft.Json.Linq.JObject();
            jPublicConfig.Add("xmlCfg", new Newtonsoft.Json.Linq.JValue(System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(xpublicConfig.InnerXml))));

            Newtonsoft.Json.Linq.JObject jPrivateConfig = new Newtonsoft.Json.Linq.JObject();
            jPrivateConfig.Add("storageAccountName", new Newtonsoft.Json.Linq.JValue(storageAccountName));
            jPrivateConfig.Add("storageAccountKey", new Newtonsoft.Json.Linq.JValue(storageAccountKey));
            jPrivateConfig.Add("storageAccountEndPoint", new Newtonsoft.Json.Linq.JValue(endpoint));

            WriteVerbose("Installing WAD extension");

            Version wadVersion = this._Helper.GetExtensionVersion(vm, vmStatus, OSType, 
                AEMExtensionConstants.WADExtensionType[this.OSType], AEMExtensionConstants.WADExtensionPublisher[this.OSType]);
            
            VirtualMachineExtension vmExtParameters = new VirtualMachineExtension();

            vmExtParameters.Publisher = AEMExtensionConstants.WADExtensionPublisher[this.OSType];
            vmExtParameters.VirtualMachineExtensionType = AEMExtensionConstants.WADExtensionType[this.OSType];
            vmExtParameters.TypeHandlerVersion = wadVersion.ToString(2);
            vmExtParameters.Settings = jPublicConfig;
            vmExtParameters.ProtectedSettings = jPrivateConfig;
            vmExtParameters.Location = vm.Location;

            this.VirtualMachineExtensionClient.CreateOrUpdate(ResourceGroupName, vm.Name, extensionName, vmExtParameters);

            return this.ComputeClient.ComputeManagementClient.VirtualMachines.Get(ResourceGroupName, vm.Name);
        }