/**
 * 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.management.sql.implementation;

import com.microsoft.azure.management.sql.VulnerabilityAssessmentRecurringScansProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.microsoft.rest.serializer.JsonFlatten;
import com.microsoft.azure.ProxyResource;

/**
 * A server vulnerability assessment.
 */
@JsonFlatten
public class ServerVulnerabilityAssessmentInner extends ProxyResource {
    /**
     * A blob storage container path to hold the scan results (e.g.
     * https://myStorage.blob.core.windows.net/VaScans/).
     */
    @JsonProperty(value = "properties.storageContainerPath", required = true)
    private String storageContainerPath;

    /**
     * A shared access signature (SAS Key) that has write access to the blob
     * container specified in 'storageContainerPath' parameter. If
     * 'storageAccountAccessKey' isn't specified, StorageContainerSasKey is
     * required.
     */
    @JsonProperty(value = "properties.storageContainerSasKey")
    private String storageContainerSasKey;

    /**
     * Specifies the identifier key of the storage account for vulnerability
     * assessment scan results. If 'StorageContainerSasKey' isn't specified,
     * storageAccountAccessKey is required.
     */
    @JsonProperty(value = "properties.storageAccountAccessKey")
    private String storageAccountAccessKey;

    /**
     * The recurring scans settings.
     */
    @JsonProperty(value = "properties.recurringScans")
    private VulnerabilityAssessmentRecurringScansProperties recurringScans;

    /**
     * Get a blob storage container path to hold the scan results (e.g. https://myStorage.blob.core.windows.net/VaScans/).
     *
     * @return the storageContainerPath value
     */
    public String storageContainerPath() {
        return this.storageContainerPath;
    }

    /**
     * Set a blob storage container path to hold the scan results (e.g. https://myStorage.blob.core.windows.net/VaScans/).
     *
     * @param storageContainerPath the storageContainerPath value to set
     * @return the ServerVulnerabilityAssessmentInner object itself.
     */
    public ServerVulnerabilityAssessmentInner withStorageContainerPath(String storageContainerPath) {
        this.storageContainerPath = storageContainerPath;
        return this;
    }

    /**
     * Get a shared access signature (SAS Key) that has write access to the blob container specified in 'storageContainerPath' parameter. If 'storageAccountAccessKey' isn't specified, StorageContainerSasKey is required.
     *
     * @return the storageContainerSasKey value
     */
    public String storageContainerSasKey() {
        return this.storageContainerSasKey;
    }

    /**
     * Set a shared access signature (SAS Key) that has write access to the blob container specified in 'storageContainerPath' parameter. If 'storageAccountAccessKey' isn't specified, StorageContainerSasKey is required.
     *
     * @param storageContainerSasKey the storageContainerSasKey value to set
     * @return the ServerVulnerabilityAssessmentInner object itself.
     */
    public ServerVulnerabilityAssessmentInner withStorageContainerSasKey(String storageContainerSasKey) {
        this.storageContainerSasKey = storageContainerSasKey;
        return this;
    }

    /**
     * Get specifies the identifier key of the storage account for vulnerability assessment scan results. If 'StorageContainerSasKey' isn't specified, storageAccountAccessKey is required.
     *
     * @return the storageAccountAccessKey value
     */
    public String storageAccountAccessKey() {
        return this.storageAccountAccessKey;
    }

    /**
     * Set specifies the identifier key of the storage account for vulnerability assessment scan results. If 'StorageContainerSasKey' isn't specified, storageAccountAccessKey is required.
     *
     * @param storageAccountAccessKey the storageAccountAccessKey value to set
     * @return the ServerVulnerabilityAssessmentInner object itself.
     */
    public ServerVulnerabilityAssessmentInner withStorageAccountAccessKey(String storageAccountAccessKey) {
        this.storageAccountAccessKey = storageAccountAccessKey;
        return this;
    }

    /**
     * Get the recurring scans settings.
     *
     * @return the recurringScans value
     */
    public VulnerabilityAssessmentRecurringScansProperties recurringScans() {
        return this.recurringScans;
    }

    /**
     * Set the recurring scans settings.
     *
     * @param recurringScans the recurringScans value to set
     * @return the ServerVulnerabilityAssessmentInner object itself.
     */
    public ServerVulnerabilityAssessmentInner withRecurringScans(VulnerabilityAssessmentRecurringScansProperties recurringScans) {
        this.recurringScans = recurringScans;
        return this;
    }

}
