// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.compute.outputs;

import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.Objects;

@CustomType
public final class WindowsVirtualMachinePlan {
    /**
     * @return Specifies the Name of the Marketplace Image this Virtual Machine should be created from. Changing this forces a new resource to be created.
     * 
     */
    private String name;
    /**
     * @return Specifies the Product of the Marketplace Image this Virtual Machine should be created from. Changing this forces a new resource to be created.
     * 
     */
    private String product;
    /**
     * @return Specifies the Publisher of the Marketplace Image this Virtual Machine should be created from. Changing this forces a new resource to be created.
     * 
     * &gt; **NOTE:** If you use the `plan` block with one of Microsoft&#39;s marketplace images (e.g. `publisher = &#34;MicrosoftWindowsServer&#34;`). This may prevent the purchase of the offer. An example Azure API error: `The Offer: &#39;WindowsServer&#39; cannot be purchased by subscription: &#39;12345678-12234-5678-9012-123456789012&#39; as it is not to be sold in market: &#39;US&#39;. Please choose a subscription which is associated with a different market.`
     * 
     */
    private String publisher;

    private WindowsVirtualMachinePlan() {}
    /**
     * @return Specifies the Name of the Marketplace Image this Virtual Machine should be created from. Changing this forces a new resource to be created.
     * 
     */
    public String name() {
        return this.name;
    }
    /**
     * @return Specifies the Product of the Marketplace Image this Virtual Machine should be created from. Changing this forces a new resource to be created.
     * 
     */
    public String product() {
        return this.product;
    }
    /**
     * @return Specifies the Publisher of the Marketplace Image this Virtual Machine should be created from. Changing this forces a new resource to be created.
     * 
     * &gt; **NOTE:** If you use the `plan` block with one of Microsoft&#39;s marketplace images (e.g. `publisher = &#34;MicrosoftWindowsServer&#34;`). This may prevent the purchase of the offer. An example Azure API error: `The Offer: &#39;WindowsServer&#39; cannot be purchased by subscription: &#39;12345678-12234-5678-9012-123456789012&#39; as it is not to be sold in market: &#39;US&#39;. Please choose a subscription which is associated with a different market.`
     * 
     */
    public String publisher() {
        return this.publisher;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static Builder builder(WindowsVirtualMachinePlan defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String name;
        private String product;
        private String publisher;
        public Builder() {}
        public Builder(WindowsVirtualMachinePlan defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.name = defaults.name;
    	      this.product = defaults.product;
    	      this.publisher = defaults.publisher;
        }

        @CustomType.Setter
        public Builder name(String name) {
            this.name = Objects.requireNonNull(name);
            return this;
        }
        @CustomType.Setter
        public Builder product(String product) {
            this.product = Objects.requireNonNull(product);
            return this;
        }
        @CustomType.Setter
        public Builder publisher(String publisher) {
            this.publisher = Objects.requireNonNull(publisher);
            return this;
        }
        public WindowsVirtualMachinePlan build() {
            final var o = new WindowsVirtualMachinePlan();
            o.name = name;
            o.product = product;
            o.publisher = publisher;
            return o;
        }
    }
}
