
com.azure.resourcemanager.storagepool.fluent.models.DiskPoolProperties Maven / Gradle / Ivy
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.
package com.azure.resourcemanager.storagepool.fluent.models;
import com.azure.core.annotation.Fluent;
import com.azure.core.util.logging.ClientLogger;
import com.azure.json.JsonReader;
import com.azure.json.JsonSerializable;
import com.azure.json.JsonToken;
import com.azure.json.JsonWriter;
import com.azure.resourcemanager.storagepool.models.Disk;
import com.azure.resourcemanager.storagepool.models.OperationalStatus;
import com.azure.resourcemanager.storagepool.models.ProvisioningStates;
import java.io.IOException;
import java.util.List;
/**
* Disk Pool response properties.
*/
@Fluent
public final class DiskPoolProperties implements JsonSerializable {
/*
* State of the operation on the resource.
*/
private ProvisioningStates provisioningState;
/*
* Logical zone for Disk Pool resource; example: ["1"].
*/
private List availabilityZones;
/*
* Operational status of the Disk Pool.
*/
private OperationalStatus status;
/*
* List of Azure Managed Disks to attach to a Disk Pool.
*/
private List disks;
/*
* Azure Resource ID of a Subnet for the Disk Pool.
*/
private String subnetId;
/*
* List of additional capabilities for Disk Pool.
*/
private List additionalCapabilities;
/**
* Creates an instance of DiskPoolProperties class.
*/
public DiskPoolProperties() {
}
/**
* Get the provisioningState property: State of the operation on the resource.
*
* @return the provisioningState value.
*/
public ProvisioningStates provisioningState() {
return this.provisioningState;
}
/**
* Get the availabilityZones property: Logical zone for Disk Pool resource; example: ["1"].
*
* @return the availabilityZones value.
*/
public List availabilityZones() {
return this.availabilityZones;
}
/**
* Set the availabilityZones property: Logical zone for Disk Pool resource; example: ["1"].
*
* @param availabilityZones the availabilityZones value to set.
* @return the DiskPoolProperties object itself.
*/
public DiskPoolProperties withAvailabilityZones(List availabilityZones) {
this.availabilityZones = availabilityZones;
return this;
}
/**
* Get the status property: Operational status of the Disk Pool.
*
* @return the status value.
*/
public OperationalStatus status() {
return this.status;
}
/**
* Set the status property: Operational status of the Disk Pool.
*
* @param status the status value to set.
* @return the DiskPoolProperties object itself.
*/
public DiskPoolProperties withStatus(OperationalStatus status) {
this.status = status;
return this;
}
/**
* Get the disks property: List of Azure Managed Disks to attach to a Disk Pool.
*
* @return the disks value.
*/
public List disks() {
return this.disks;
}
/**
* Set the disks property: List of Azure Managed Disks to attach to a Disk Pool.
*
* @param disks the disks value to set.
* @return the DiskPoolProperties object itself.
*/
public DiskPoolProperties withDisks(List disks) {
this.disks = disks;
return this;
}
/**
* Get the subnetId property: Azure Resource ID of a Subnet for the Disk Pool.
*
* @return the subnetId value.
*/
public String subnetId() {
return this.subnetId;
}
/**
* Set the subnetId property: Azure Resource ID of a Subnet for the Disk Pool.
*
* @param subnetId the subnetId value to set.
* @return the DiskPoolProperties object itself.
*/
public DiskPoolProperties withSubnetId(String subnetId) {
this.subnetId = subnetId;
return this;
}
/**
* Get the additionalCapabilities property: List of additional capabilities for Disk Pool.
*
* @return the additionalCapabilities value.
*/
public List additionalCapabilities() {
return this.additionalCapabilities;
}
/**
* Set the additionalCapabilities property: List of additional capabilities for Disk Pool.
*
* @param additionalCapabilities the additionalCapabilities value to set.
* @return the DiskPoolProperties object itself.
*/
public DiskPoolProperties withAdditionalCapabilities(List additionalCapabilities) {
this.additionalCapabilities = additionalCapabilities;
return this;
}
/**
* Validates the instance.
*
* @throws IllegalArgumentException thrown if the instance is not valid.
*/
public void validate() {
if (availabilityZones() == null) {
throw LOGGER.atError()
.log(new IllegalArgumentException(
"Missing required property availabilityZones in model DiskPoolProperties"));
}
if (status() == null) {
throw LOGGER.atError()
.log(new IllegalArgumentException("Missing required property status in model DiskPoolProperties"));
}
if (disks() != null) {
disks().forEach(e -> e.validate());
}
if (subnetId() == null) {
throw LOGGER.atError()
.log(new IllegalArgumentException("Missing required property subnetId in model DiskPoolProperties"));
}
}
private static final ClientLogger LOGGER = new ClientLogger(DiskPoolProperties.class);
/**
* {@inheritDoc}
*/
@Override
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
jsonWriter.writeArrayField("availabilityZones", this.availabilityZones,
(writer, element) -> writer.writeString(element));
jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString());
jsonWriter.writeStringField("subnetId", this.subnetId);
jsonWriter.writeArrayField("disks", this.disks, (writer, element) -> writer.writeJson(element));
jsonWriter.writeArrayField("additionalCapabilities", this.additionalCapabilities,
(writer, element) -> writer.writeString(element));
return jsonWriter.writeEndObject();
}
/**
* Reads an instance of DiskPoolProperties from the JsonReader.
*
* @param jsonReader The JsonReader being read.
* @return An instance of DiskPoolProperties if the JsonReader was pointing to an instance of it, or null if it was
* pointing to JSON null.
* @throws IllegalStateException If the deserialized JSON object was missing any required properties.
* @throws IOException If an error occurs while reading the DiskPoolProperties.
*/
public static DiskPoolProperties fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
DiskPoolProperties deserializedDiskPoolProperties = new DiskPoolProperties();
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
if ("provisioningState".equals(fieldName)) {
deserializedDiskPoolProperties.provisioningState
= ProvisioningStates.fromString(reader.getString());
} else if ("availabilityZones".equals(fieldName)) {
List availabilityZones = reader.readArray(reader1 -> reader1.getString());
deserializedDiskPoolProperties.availabilityZones = availabilityZones;
} else if ("status".equals(fieldName)) {
deserializedDiskPoolProperties.status = OperationalStatus.fromString(reader.getString());
} else if ("subnetId".equals(fieldName)) {
deserializedDiskPoolProperties.subnetId = reader.getString();
} else if ("disks".equals(fieldName)) {
List disks = reader.readArray(reader1 -> Disk.fromJson(reader1));
deserializedDiskPoolProperties.disks = disks;
} else if ("additionalCapabilities".equals(fieldName)) {
List additionalCapabilities = reader.readArray(reader1 -> reader1.getString());
deserializedDiskPoolProperties.additionalCapabilities = additionalCapabilities;
} else {
reader.skipChildren();
}
}
return deserializedDiskPoolProperties;
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy