/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 */

package com.microsoft.azure.batch.protocol.models;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * The configuration for virtual machine extension instance view.
 */
public class NodeVMExtension {
    /**
     * The provisioning state of the virtual machine extension.
     */
    @JsonProperty(value = "provisioningState")
    private String provisioningState;

    /**
     * The virtual machine extension.
     */
    @JsonProperty(value = "vmExtension")
    private VMExtension vmExtension;

    /**
     * The vm extension instance view.
     */
    @JsonProperty(value = "instanceView")
    private VMExtensionInstanceView instanceView;

    /**
     * Get the provisioningState value.
     *
     * @return the provisioningState value
     */
    public String provisioningState() {
        return this.provisioningState;
    }

    /**
     * Set the provisioningState value.
     *
     * @param provisioningState the provisioningState value to set
     * @return the NodeVMExtension object itself.
     */
    public NodeVMExtension withProvisioningState(String provisioningState) {
        this.provisioningState = provisioningState;
        return this;
    }

    /**
     * Get the vmExtension value.
     *
     * @return the vmExtension value
     */
    public VMExtension vmExtension() {
        return this.vmExtension;
    }

    /**
     * Set the vmExtension value.
     *
     * @param vmExtension the vmExtension value to set
     * @return the NodeVMExtension object itself.
     */
    public NodeVMExtension withVmExtension(VMExtension vmExtension) {
        this.vmExtension = vmExtension;
        return this;
    }

    /**
     * Get the instanceView value.
     *
     * @return the instanceView value
     */
    public VMExtensionInstanceView instanceView() {
        return this.instanceView;
    }

    /**
     * Set the instanceView value.
     *
     * @param instanceView the instanceView value to set
     * @return the NodeVMExtension object itself.
     */
    public NodeVMExtension withInstanceView(VMExtensionInstanceView instanceView) {
        this.instanceView = instanceView;
        return this;
    }

}
