DaanHoogland commented on code in PR #12563:
URL: https://github.com/apache/cloudstack/pull/12563#discussion_r3008031545


##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/FileInfo.java:
##########
@@ -0,0 +1,297 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.time.OffsetDateTime;
+import java.util.Objects;
+
+/**
+ * Information about a single file.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FileInfo {
+  @JsonProperty("bytes_used")
+  private Long bytesUsed = null;
+  @JsonProperty("creation_time")
+  private OffsetDateTime creationTime = null;
+  @JsonProperty("fill_enabled")
+  private Boolean fillEnabled = null;
+  @JsonProperty("is_empty")
+  private Boolean isEmpty = null;
+  @JsonProperty("is_snapshot")
+  private Boolean isSnapshot = null;
+  @JsonProperty("is_vm_aligned")
+  private Boolean isVmAligned = null;
+  @JsonProperty("modified_time")
+  private OffsetDateTime modifiedTime = null;
+  @JsonProperty("name")
+  private String name = null;
+  @JsonProperty("overwrite_enabled")
+  private Boolean overwriteEnabled = null;
+  @JsonProperty("path")
+  private String path = null;
+  @JsonProperty("size")
+  private Long size = null;
+  @JsonProperty("target")
+  private String target = null;
+
+  /**
+   * Type of the file.
+   */
+  public enum TypeEnum {
+    FILE("file"),
+    DIRECTORY("directory");
+
+    private String value;
+
+    TypeEnum(String value) {
+      this.value = value;
+    }
+
+    @JsonValue
+    public String getValue() {
+      return value;
+    }
+
+    @Override
+    public String toString() {
+      return String.valueOf(value);
+    }
+
+    @JsonCreator
+    public static TypeEnum fromValue(String value) {
+      for (TypeEnum b : TypeEnum.values()) {
+        if (b.value.equals(value)) {
+          return b;
+        }
+      }
+      return null;
+    }
+  }
+
+  @JsonProperty("type")
+  private TypeEnum type = null;
+
+  @JsonProperty("unique_bytes")
+  private Long uniqueBytes = null;
+
+  @JsonProperty("unix_permissions")
+  private Integer unixPermissions = null;
+
+   /**
+   * The actual number of bytes used on disk by this file. If byte_offset and 
length parameters are specified, this will return the bytes used by the file 
within the given range.
+   * @return bytesUsed
+  **/
+  public Long getBytesUsed() {
+    return bytesUsed;
+  }
+
+  public OffsetDateTime getCreationTime() {
+    return creationTime;
+  }
+
+  public FileInfo fillEnabled(Boolean fillEnabled) {
+    this.fillEnabled = fillEnabled;
+    return this;
+  }
+
+  public Boolean isFillEnabled() {
+    return fillEnabled;
+  }
+
+  public void setFillEnabled(Boolean fillEnabled) {
+    this.fillEnabled = fillEnabled;
+  }
+
+
+  public Boolean isIsEmpty() {
+    return isEmpty;
+  }
+
+  public void setIsEmpty(Boolean isEmpty) {
+    this.isEmpty = isEmpty;
+  }
+
+  public Boolean isIsSnapshot() {
+    return isSnapshot;
+  }
+
+  public void setIsSnapshot(Boolean isSnapshot) {
+    this.isSnapshot = isSnapshot;
+  }
+
+
+  public Boolean isIsVmAligned() {
+    return isVmAligned;
+  }
+
+
+  public OffsetDateTime getModifiedTime() {
+    return modifiedTime;
+  }
+
+  public FileInfo name(String name) {
+    this.name = name;
+    return this;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public FileInfo overwriteEnabled(Boolean overwriteEnabled) {
+    this.overwriteEnabled = overwriteEnabled;
+    return this;
+  }
+
+  public Boolean isOverwriteEnabled() {
+    return overwriteEnabled;
+  }
+
+  public void setOverwriteEnabled(Boolean overwriteEnabled) {
+    this.overwriteEnabled = overwriteEnabled;
+  }
+
+  public FileInfo path(String path) {
+    this.path = path;
+    return this;
+  }
+
+  public String getPath() {
+    return path;
+  }
+
+  public void setPath(String path) {
+    this.path = path;
+  }
+  public Long getSize() {
+    return size;
+  }
+
+  public void setSize(Long size) {
+    this.size = size;
+  }
+
+  public FileInfo target(String target) {
+    this.target = target;
+    return this;
+  }
+
+  public String getTarget() {
+    return target;
+  }
+
+  public void setTarget(String target) {
+    this.target = target;
+  }
+
+  public FileInfo type(TypeEnum type) {
+    this.type = type;
+    return this;
+  }
+
+  public TypeEnum getType() {
+    return type;
+  }
+
+  public void setType(TypeEnum type) {
+    this.type = type;
+  }
+
+  public Long getUniqueBytes() {
+    return uniqueBytes;
+  }
+
+  public FileInfo unixPermissions(Integer unixPermissions) {
+    this.unixPermissions = unixPermissions;
+    return this;
+  }
+
+  public Integer getUnixPermissions() {
+    return unixPermissions;
+  }
+
+  public void setUnixPermissions(Integer unixPermissions) {
+    this.unixPermissions = unixPermissions;
+  }
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    FileInfo fileInfo = (FileInfo) o;
+    return Objects.equals(this.name, fileInfo.name) &&
+        Objects.equals(this.path, fileInfo.path);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(name, path);
+  }
+
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class FileInfo {\n");
+    sb.append("    bytesUsed: 
").append(toIndentedString(bytesUsed)).append("\n");
+    sb.append("    creationTime: 
").append(toIndentedString(creationTime)).append("\n");
+    sb.append("    fillEnabled: 
").append(toIndentedString(fillEnabled)).append("\n");
+    sb.append("    isEmpty: ").append(toIndentedString(isEmpty)).append("\n");
+    sb.append("    isSnapshot: 
").append(toIndentedString(isSnapshot)).append("\n");
+    sb.append("    isVmAligned: 
").append(toIndentedString(isVmAligned)).append("\n");
+    sb.append("    modifiedTime: 
").append(toIndentedString(modifiedTime)).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("    overwriteEnabled: 
").append(toIndentedString(overwriteEnabled)).append("\n");
+    sb.append("    path: ").append(toIndentedString(path)).append("\n");
+    sb.append("    size: ").append(toIndentedString(size)).append("\n");
+    sb.append("    target: ").append(toIndentedString(target)).append("\n");
+    sb.append("    type: ").append(toIndentedString(type)).append("\n");
+    sb.append("    uniqueBytes: 
").append(toIndentedString(uniqueBytes)).append("\n");
+    sb.append("    unixPermissions: 
").append(toIndentedString(unixPermissions)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/Cluster.java:
##########
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Objects;
+
+/**
+ * Complete cluster information
+ */
+@SuppressWarnings("checkstyle:RegexpSingleline")
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Cluster {
+
+    @JsonProperty("name")
+    private String name = null;
+    @JsonProperty("uuid")
+    private String uuid = null;
+    @JsonProperty("version")
+    private Version version = null;
+    @JsonProperty("health")
+    private String health = null;
+
+    @JsonProperty("san_optimized")
+    private Boolean sanOptimized = null;
+
+    @JsonProperty("disaggregated")
+    private Boolean disaggregated = null;
+
+
+    public String getHealth() {
+        return health;
+    }
+
+    public void setHealth(String health) {
+        this.health = health;
+    }
+
+    public Cluster name(String name) {
+        this.name = name;
+        return this;
+    }
+
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public Cluster version(Version version) {
+        this.version = version;
+        return this;
+    }
+
+    public Version getVersion() {
+        return version;
+    }
+
+    public void setVersion(Version version) {
+        this.version = version;
+    }
+
+    public Boolean getSanOptimized() {
+        return sanOptimized;
+    }
+
+    public void setSanOptimized(Boolean sanOptimized) {
+        this.sanOptimized = sanOptimized;
+    }
+
+    public Boolean getDisaggregated() {
+        return disaggregated;
+    }
+    public void setDisaggregated(Boolean disaggregated) {
+        this.disaggregated = disaggregated;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getName(), getUuid());
+    }
+
+    @Override
+    public boolean equals(java.lang.Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        Cluster cluster = (Cluster) o;
+        return Objects.equals(this.name, cluster.name) &&
+                Objects.equals(this.uuid, cluster.uuid);
+    }
+    @Override
+    public String toString() {
+        return "Cluster{" +
+                "name='" + name + '\'' +
+                ", uuid='" + uuid + '\'' +
+                ", version=" + version +
+                ", sanOptimized=" + sanOptimized +
+                ", disaggregated=" + disaggregated +
+                '}';
+    }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/Cluster.java:
##########
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Objects;
+
+/**
+ * Complete cluster information
+ */
+@SuppressWarnings("checkstyle:RegexpSingleline")
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Cluster {
+
+    @JsonProperty("name")
+    private String name = null;
+    @JsonProperty("uuid")
+    private String uuid = null;
+    @JsonProperty("version")
+    private Version version = null;
+    @JsonProperty("health")
+    private String health = null;
+
+    @JsonProperty("san_optimized")
+    private Boolean sanOptimized = null;
+
+    @JsonProperty("disaggregated")
+    private Boolean disaggregated = null;
+
+
+    public String getHealth() {
+        return health;
+    }
+
+    public void setHealth(String health) {
+        this.health = health;
+    }
+
+    public Cluster name(String name) {
+        this.name = name;
+        return this;
+    }
+
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public Cluster version(Version version) {
+        this.version = version;
+        return this;
+    }
+
+    public Version getVersion() {
+        return version;
+    }
+
+    public void setVersion(Version version) {
+        this.version = version;
+    }
+
+    public Boolean getSanOptimized() {
+        return sanOptimized;
+    }
+
+    public void setSanOptimized(Boolean sanOptimized) {
+        this.sanOptimized = sanOptimized;
+    }
+
+    public Boolean getDisaggregated() {
+        return disaggregated;
+    }
+    public void setDisaggregated(Boolean disaggregated) {
+        this.disaggregated = disaggregated;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getName(), getUuid());
+    }
+
+    @Override
+    public boolean equals(java.lang.Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        Cluster cluster = (Cluster) o;
+        return Objects.equals(this.name, cluster.name) &&
+                Objects.equals(this.uuid, cluster.uuid);
+    }
+    @Override
+    public String toString() {
+        return "Cluster{" +
+                "name='" + name + '\'' +
+                ", uuid='" + uuid + '\'' +
+                ", version=" + version +
+                ", sanOptimized=" + sanOptimized +
+                ", disaggregated=" + disaggregated +
+                '}';
+    }

Review Comment:
   we tend to use `ReflectionToStringBuilderUtils` for toString methods ( no -1 
on this)



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/ExportPolicy.java:
##########
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.math.BigInteger;
+import java.util.List;
+import java.util.Objects;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ExportPolicy {
+
+  @JsonProperty("id")
+  private BigInteger id = null;
+  @JsonProperty("name")
+  private String name = null;
+  @JsonProperty("rules")
+  private List<ExportRule> rules = null;
+  @JsonProperty("svm")
+  private Svm svm = null;
+
+  public BigInteger getId() {
+    return id;
+  }
+
+  public ExportPolicy name(String name) {
+    this.name = name;
+    return this;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public ExportPolicy rules(List<ExportRule> rules) {
+    this.rules = rules;
+    return this;
+  }
+
+  public List<ExportRule> getRules() {
+    return rules;
+  }
+
+  public void setRules(List<ExportRule> rules) {
+    this.rules = rules;
+  }
+
+  public ExportPolicy svm(Svm svm) {
+    this.svm = svm;
+    return this;
+  }
+
+  public Svm getSvm() {
+    return svm;
+  }
+
+  public void setSvm(Svm svm) {
+    this.svm = svm;
+  }
+
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    ExportPolicy exportPolicy = (ExportPolicy) o;
+    return Objects.equals(this.id, exportPolicy.id) &&
+        Objects.equals(this.name, exportPolicy.name);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash( id, name);
+  }
+
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class ExportPolicy {\n");
+    sb.append("    id: ").append(toIndentedString(id)).append("\n");
+    sb.append("    name: ").append(toIndentedString(name)).append("\n");
+    sb.append("    rules: ").append(toIndentedString(rules)).append("\n");
+    sb.append("    svm: ").append(toIndentedString(svm)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/ExportRule.java:
##########
@@ -0,0 +1,195 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/**
+ * ExportRule
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ExportRule {
+    @JsonProperty("anonymous_user")
+    private String anonymousUser ;
+
+    @JsonProperty("clients")
+    private List<ExportClient> clients = null;
+
+    @JsonProperty("index")
+    private Integer index = null;
+
+    public enum ProtocolsEnum {
+        any("any"),
+
+        nfs("nfs"),
+
+        nfs3("nfs3"),
+
+        nfs4("nfs4");
+
+        private String value;
+
+        ProtocolsEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        @Override
+        public String toString() {
+            return String.valueOf(value);
+        }
+
+        public static ProtocolsEnum fromValue(String text) {
+            for (ProtocolsEnum b : ProtocolsEnum.values()) {
+                if (String.valueOf(b.value).equals(text)) {
+                    return b;
+                }
+            }
+            return null;
+        }
+    }
+
+    @JsonProperty("protocols")
+    private List<ProtocolsEnum> protocols = null;
+
+    @JsonProperty("ro_rule")
+    private List<String> roRule = null;
+
+    @JsonProperty("rw_rule")
+    private List<String> rwRule = null;
+
+    @JsonProperty("superuser")
+    private List<String> superuser = null;
+
+
+    public ExportRule anonymousUser(String anonymousUser) {
+        this.anonymousUser = anonymousUser;
+        return this;
+    }
+
+    public String getAnonymousUser() {
+        return anonymousUser;
+    }
+
+    public void setAnonymousUser(String anonymousUser) {
+        this.anonymousUser = anonymousUser;
+    }
+
+    public ExportRule clients(List<ExportClient> clients) {
+        this.clients = clients;
+        return this;
+    }
+
+    public List<ExportClient> getClients() {
+        return clients;
+    }
+
+    public void setClients(List<ExportClient> clients) {
+        this.clients = clients;
+    }
+
+    public Integer getIndex() {
+        return index;
+    }
+    public void setIndex(Integer index)
+    {
+        this.index=index;
+    }
+
+    public ExportRule protocols(List<ProtocolsEnum> protocols) {
+        this.protocols = protocols;
+        return this;
+    }
+
+    public List<ProtocolsEnum> getProtocols() {
+        return protocols;
+    }
+
+    public void setProtocols(List<ProtocolsEnum> protocols) {
+        this.protocols = protocols;
+    }
+
+    public static class ExportClient {
+        @JsonProperty("match")
+        private String match = null;
+
+        public ExportClient match (String match) {
+            this.match = match;
+            return this;
+        }
+        public String getMatch () {
+            return match;
+        }
+
+        public void setMatch (String match) {
+            this.match = match;
+        }
+    }
+
+    public List<String> getRwRule() {
+        return rwRule;
+    }
+
+    public void setRwRule(List<String> rwRule) {
+        this.rwRule = rwRule;
+    }
+
+    public List<String> getRoRule() {
+        return roRule;
+    }
+
+    public void setRoRule(List<String> roRule) {
+        this.roRule = roRule;
+    }
+
+    public List<String> getSuperuser() {
+        return superuser;
+    }
+
+    public void setSuperuser(List<String> superuser) {
+        this.superuser = superuser;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("class ExportRule {\n");
+
+        sb.append("    anonymousUser: 
").append(toIndentedString(anonymousUser)).append("\n");
+        sb.append("    clients: 
").append(toIndentedString(clients)).append("\n");
+        sb.append("    index: ").append(toIndentedString(index)).append("\n");
+        sb.append("    protocols: 
").append(toIndentedString(protocols)).append("\n");
+        sb.append("}");
+        return sb.toString();
+    }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/LunMap.java:
##########
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.gson.annotations.SerializedName;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class LunMap {
+  @JsonProperty("igroup")
+  private Igroup igroup = null;
+  @JsonProperty("logical_unit_number")
+  private Integer logicalUnitNumber = null;
+  @JsonProperty("lun")
+  private Lun lun = null;
+  @JsonProperty("svm")
+  @SerializedName("svm")
+  private Svm svm = null;
+
+  public LunMap igroup (Igroup igroup) {
+    this.igroup = igroup;
+    return this;
+  }
+
+  public Igroup getIgroup () {
+    return igroup;
+  }
+
+  public void setIgroup (Igroup igroup) {
+    this.igroup = igroup;
+  }
+
+  public LunMap logicalUnitNumber (Integer logicalUnitNumber) {
+    this.logicalUnitNumber = logicalUnitNumber;
+    return this;
+  }
+
+  public Integer getLogicalUnitNumber () {
+    return logicalUnitNumber;
+  }
+
+  public void setLogicalUnitNumber (Integer logicalUnitNumber) {
+    this.logicalUnitNumber = logicalUnitNumber;
+  }
+
+  public LunMap lun (Lun lun) {
+    this.lun = lun;
+    return this;
+  }
+
+  public Lun getLun () {
+    return lun;
+  }
+
+  public void setLun (Lun lun) {
+    this.lun = lun;
+  }
+
+  public LunMap svm (Svm svm) {
+    this.svm = svm;
+    return this;
+  }
+
+  public Svm getSvm () {
+    return svm;
+  }
+
+  public void setSvm (Svm svm) {
+    this.svm = svm;
+  }
+
+  @Override
+  public String toString () {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class LunMap {\n");
+    sb.append("    igroup: ").append(toIndentedString(igroup)).append("\n");
+    sb.append("    logicalUnitNumber: 
").append(toIndentedString(logicalUnitNumber)).append("\n");
+    sb.append("    lun: ").append(toIndentedString(lun)).append("\n");
+    sb.append("    svm: ").append(toIndentedString(svm)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/Job.java:
##########
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author Administrator
+ *
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(Include.NON_NULL)
+public class Job {
+
+    @JsonProperty("uuid")
+    String uuid;
+    @JsonProperty("description")
+    String description;
+    @JsonProperty("state")
+    String state;
+    @JsonProperty("message")
+    String message;
+    @JsonProperty("code")
+    String code;
+    @JsonProperty("_links")
+    private Links links;
+
+    @JsonProperty("error")
+    private JobError error;
+    public JobError getError () { return error; }
+    public void setError (JobError error) { this.error = error; }
+    public Links getLinks() { return links; }
+    public void setLinks(Links links) { this.links = links; }
+    public String getUuid() {
+        return uuid;
+    }
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+    public String getDescription() {
+        return description;
+    }
+    public void setDescription(String description) {
+        this.description = description;
+    }
+    public String getState() {
+        return state;
+    }
+    public void setState(String state) {
+        this.state = state;
+    }
+    public String getMessage() {
+        return message;
+    }
+    public void setMessage(String message) {
+        this.message = message;
+    }
+    public String getCode() {
+        return code;
+    }
+    public void setCode(String code) {
+        this.code = code;
+    }
+    @Override
+    public String toString() {
+        return "JobDTO [uuid=" + uuid + ", description=" + description + ", 
state=" + state + ", message="
+                + message + ", code=" + code + "]";
+    }
+
+    public static class Links {
+        @JsonProperty("self")
+        private Self self;
+        public Self getSelf() { return self; }
+        public void setSelf(Self self) { this.self = self; }
+    }
+
+    public static class Self {
+        @JsonProperty("href")
+        private String href;
+        public String getHref() { return href; }
+        public void setHref(String href) { this.href = href; }
+    }
+
+    public static class JobError {
+        @JsonProperty("message")
+        String errorMesssage;
+        @JsonProperty("code")
+        String code;
+        public String getErrorMesssage () { return errorMesssage; }
+        public void setErrorMesssage (String errorMesssage) { 
this.errorMesssage = errorMesssage; }
+        public String getCode() {
+            return code;
+        }
+        public void setCode(String code) {
+            this.code = code;
+        }
+        @Override
+        public String toString() {
+            return "JobError [errorMesssage=" + errorMesssage + ", code=" + 
code + "]";
+        }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/LunSpace.java:
##########
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The storage space related properties of the LUN.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class LunSpace {
+
+    @JsonProperty("scsi_thin_provisioning_support_enabled")
+    private Boolean scsiThinProvisioningSupportEnabled = null;
+
+    @JsonProperty("size")
+    private Long size = null;
+
+    @JsonProperty("used")
+    private Long used = null;
+    @JsonProperty("physical_used")
+    private Long physicalUsed = null;
+
+    public LunSpace scsiThinProvisioningSupportEnabled(Boolean 
scsiThinProvisioningSupportEnabled) {
+        this.scsiThinProvisioningSupportEnabled = 
scsiThinProvisioningSupportEnabled;
+        return this;
+    }
+
+    public Boolean isScsiThinProvisioningSupportEnabled() {
+        return scsiThinProvisioningSupportEnabled;
+    }
+
+    public void setScsiThinProvisioningSupportEnabled(Boolean 
scsiThinProvisioningSupportEnabled) {
+        this.scsiThinProvisioningSupportEnabled = 
scsiThinProvisioningSupportEnabled;
+    }
+
+    public LunSpace size(Long size) {
+        this.size = size;
+        return this;
+    }
+
+    public Long getSize() {
+        return size;
+    }
+
+    public void setSize(Long size) {
+        this.size = size;
+    }
+
+    public Long getUsed() {
+        return used;
+    }
+
+    public Long getPhysicalUsed() {
+        return physicalUsed;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("class LunSpace {\n");
+        sb.append("    scsiThinProvisioningSupportEnabled: 
").append(toIndentedString(scsiThinProvisioningSupportEnabled)).append("\n");
+        sb.append("    size: ").append(toIndentedString(size)).append("\n");
+        sb.append("    used: ").append(toIndentedString(used)).append("\n");
+        sb.append("    physicalUsed: 
").append(toIndentedString(physicalUsed)).append("\n");
+        sb.append("}");
+        return sb.toString();
+    }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/Nas.java:
##########


Review Comment:
   this class need not be printed?



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/Version.java:
##########
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Objects;
+
+/**
+ * This returns the cluster version information.  When the cluster has more 
than one node, the cluster version is equivalent to the lowest of generation, 
major, and minor versions on all nodes.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Version {
+  @JsonProperty("full")
+  private String full = null;
+
+  @JsonProperty("generation")
+  private Integer generation = null;
+
+  @JsonProperty("major")
+  private Integer major = null;
+
+  @JsonProperty("minor")
+  private Integer minor = null;
+
+  public String getFull() {
+    return full;
+  }
+
+  public Integer getGeneration() {
+    return generation;
+  }
+
+  public Integer getMajor() {
+    return major;
+  }
+
+  public Integer getMinor() {
+    return minor;
+  }
+
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    Version clusterVersion = (Version) o;
+    return Objects.equals(this.full, clusterVersion.full) &&
+        Objects.equals(this.generation, clusterVersion.generation) &&
+        Objects.equals(this.major, clusterVersion.major) &&
+        Objects.equals(this.minor, clusterVersion.minor);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(full, generation, major, minor);
+  }
+
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("class ClusterVersion {\n");
+    sb.append("    full: ").append(toIndentedString(full)).append("\n");
+    sb.append("    generation: 
").append(toIndentedString(generation)).append("\n");
+    sb.append("    major: ").append(toIndentedString(major)).append("\n");
+    sb.append("    minor: ").append(toIndentedString(minor)).append("\n");
+    sb.append("}");
+    return sb.toString();
+  }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/Job.java:
##########
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author Administrator
+ *
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(Include.NON_NULL)
+public class Job {
+
+    @JsonProperty("uuid")
+    String uuid;
+    @JsonProperty("description")
+    String description;
+    @JsonProperty("state")
+    String state;
+    @JsonProperty("message")
+    String message;
+    @JsonProperty("code")
+    String code;
+    @JsonProperty("_links")
+    private Links links;
+
+    @JsonProperty("error")
+    private JobError error;
+    public JobError getError () { return error; }
+    public void setError (JobError error) { this.error = error; }
+    public Links getLinks() { return links; }
+    public void setLinks(Links links) { this.links = links; }
+    public String getUuid() {
+        return uuid;
+    }
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+    public String getDescription() {
+        return description;
+    }
+    public void setDescription(String description) {
+        this.description = description;
+    }
+    public String getState() {
+        return state;
+    }
+    public void setState(String state) {
+        this.state = state;
+    }
+    public String getMessage() {
+        return message;
+    }
+    public void setMessage(String message) {
+        this.message = message;
+    }
+    public String getCode() {
+        return code;
+    }
+    public void setCode(String code) {
+        this.code = code;
+    }
+    @Override
+    public String toString() {
+        return "JobDTO [uuid=" + uuid + ", description=" + description + ", 
state=" + state + ", message="
+                + message + ", code=" + code + "]";
+    }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/IpInterface.java:
##########
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+import java.util.Objects;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class IpInterface {
+    @JsonProperty("uuid")
+    private String uuid;
+
+    @JsonProperty("name")
+    private String name;
+
+    @JsonProperty("ip")
+    private IpInfo ip;
+
+    @JsonProperty("svm")
+    private Svm svm;
+
+    @JsonProperty("services")
+    private List<String> services;
+
+    // Getters and setters
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public IpInfo getIp() {
+        return ip;
+    }
+
+    public void setIp(IpInfo ip) {
+        this.ip = ip;
+    }
+
+    public Svm getSvm() {
+        return svm;
+    }
+
+    public void setSvm(Svm svm) {
+        this.svm = svm;
+    }
+
+    public List<String> getServices() {
+        return services;
+    }
+
+    public void setServices(List<String> services) {
+        this.services = services;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        IpInterface that = (IpInterface) o;
+        return Objects.equals(uuid, that.uuid) &&
+                Objects.equals(name, that.name) &&
+                Objects.equals(ip, that.ip) &&
+                Objects.equals(svm, that.svm) &&
+                Objects.equals(services, that.services);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(uuid, name, ip, svm, services);
+    }
+
+    @Override
+    public String toString() {
+        return "IpInterface{" +
+                "uuid='" + uuid + '\'' +
+                ", name='" + name + '\'' +
+                ", ip=" + ip +
+                ", svm=" + svm +
+                ", services=" + services +
+                '}';
+    }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/IpInterface.java:
##########
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+import java.util.Objects;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class IpInterface {
+    @JsonProperty("uuid")
+    private String uuid;
+
+    @JsonProperty("name")
+    private String name;
+
+    @JsonProperty("ip")
+    private IpInfo ip;
+
+    @JsonProperty("svm")
+    private Svm svm;
+
+    @JsonProperty("services")
+    private List<String> services;
+
+    // Getters and setters
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public IpInfo getIp() {
+        return ip;
+    }
+
+    public void setIp(IpInfo ip) {
+        this.ip = ip;
+    }
+
+    public Svm getSvm() {
+        return svm;
+    }
+
+    public void setSvm(Svm svm) {
+        this.svm = svm;
+    }
+
+    public List<String> getServices() {
+        return services;
+    }
+
+    public void setServices(List<String> services) {
+        this.services = services;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        IpInterface that = (IpInterface) o;
+        return Objects.equals(uuid, that.uuid) &&
+                Objects.equals(name, that.name) &&
+                Objects.equals(ip, that.ip) &&
+                Objects.equals(svm, that.svm) &&
+                Objects.equals(services, that.services);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(uuid, name, ip, svm, services);
+    }
+
+    @Override
+    public String toString() {
+        return "IpInterface{" +
+                "uuid='" + uuid + '\'' +
+                ", name='" + name + '\'' +
+                ", ip=" + ip +
+                ", svm=" + svm +
+                ", services=" + services +
+                '}';
+    }
+
+    // Nested class for IP information
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public static class IpInfo {
+        @JsonProperty("address")
+        private String address;
+
+        public String getAddress() {
+            return address;
+        }
+
+        public void setAddress(String address) {
+            this.address = address;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+            IpInfo ipInfo = (IpInfo) o;
+            return Objects.equals(address, ipInfo.address);
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(address);
+        }
+
+        @Override
+        public String toString() {
+            return "IpInfo{" +
+                    "address='" + address + '\'' +
+                    '}';
+        }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/IscsiService.java:
##########
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+
+/**
+ * An iSCSI service defines the properties of the iSCSI target for an SVM.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class IscsiService {
+    @JsonProperty("enabled")
+    private Boolean enabled = null;
+
+    @JsonProperty("svm")
+    private Svm svm = null;
+
+    @JsonProperty("target")
+    private IscsiServiceTarget target = null;
+
+    public Boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(Boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public Svm getSvm() {
+        return svm;
+    }
+
+    public void setSvm(Svm svm) {
+        this.svm = svm;
+    }
+
+    public IscsiServiceTarget getTarget() {
+        return target;
+    }
+
+    public void setTarget(IscsiServiceTarget target) {
+        this.target = target;
+    }
+
+    @Override
+    public String toString() {
+        return "IscsiService{" +
+                "enabled=" + enabled +
+                ", svm=" + svm +
+                ", target=" + target +
+                '}';
+    }
+
+    /**
+     * iSCSI target information
+     */
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public static class IscsiServiceTarget {
+        @JsonProperty("alias")
+        private String alias = null;
+
+        @JsonProperty("name")
+        private String name = null;
+
+        public String getAlias() {
+            return alias;
+        }
+
+        public void setAlias(String alias) {
+            this.alias = alias;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        @Override
+        public String toString() {
+            return "IscsiServiceTarget{" +
+                    "alias='" + alias + '\'' +
+                    ", name='" + name + '\'' +
+                    '}';
+        }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/IscsiService.java:
##########
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+
+/**
+ * An iSCSI service defines the properties of the iSCSI target for an SVM.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class IscsiService {
+    @JsonProperty("enabled")
+    private Boolean enabled = null;
+
+    @JsonProperty("svm")
+    private Svm svm = null;
+
+    @JsonProperty("target")
+    private IscsiServiceTarget target = null;
+
+    public Boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(Boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public Svm getSvm() {
+        return svm;
+    }
+
+    public void setSvm(Svm svm) {
+        this.svm = svm;
+    }
+
+    public IscsiServiceTarget getTarget() {
+        return target;
+    }
+
+    public void setTarget(IscsiServiceTarget target) {
+        this.target = target;
+    }
+
+    @Override
+    public String toString() {
+        return "IscsiService{" +
+                "enabled=" + enabled +
+                ", svm=" + svm +
+                ", target=" + target +
+                '}';
+    }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/Lun.java:
##########
@@ -0,0 +1,341 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * A LUN is the logical representation of storage in a storage area network 
(SAN).&lt;br/&gt; In ONTAP, a LUN is located within a volume. Optionally, it 
can be located within a qtree in a volume.&lt;br/&gt; A LUN can be created to a 
specified size using thin or thick provisioning. A LUN can then be renamed, 
resized, cloned, and moved to a different volume. LUNs support the assignment 
of a quality of service (QoS) policy for performance management or a QoS policy 
can be assigned to the volume containing the LUN. See the LUN object model to 
learn more about each of the properties supported by the LUN REST 
API.&lt;br/&gt; A LUN must be mapped to an initiator group to grant access to 
the initiator group&#39;s initiators (client hosts). Initiators can then access 
the LUN and perform I/O over a Fibre Channel (FC) fabric using the Fibre 
Channel Protocol or a TCP/IP network using iSCSI.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Lun {
+
+    @JsonProperty("auto_delete")
+    private Boolean autoDelete = null;
+
+    /**
+     * The class of LUN.&lt;br/&gt; Optional in POST.
+     */
+    public enum PropertyClassEnum {
+        REGULAR("regular");
+
+        private String value;
+
+        PropertyClassEnum(String value) {
+            this.value = value;
+        }
+
+        @JsonValue
+        public String getValue() {
+            return value;
+        }
+
+        @Override
+        public String toString() {
+            return String.valueOf(value);
+        }
+
+        @JsonCreator
+        public static PropertyClassEnum fromValue(String value) {
+            for (PropertyClassEnum b : PropertyClassEnum.values()) {
+                if (b.value.equals(value)) {
+                    return b;
+                }
+            }
+            return null;
+        }
+    }
+
+    @JsonProperty("class")
+    private PropertyClassEnum propertyClass = null;
+
+    @JsonProperty("enabled")
+    private Boolean enabled = null;
+
+    @JsonProperty("lun_maps")
+    private List<LunMap> lunMaps = null;
+
+    @JsonProperty("name")
+    private String name = null;
+
+    @JsonProperty("clone")
+    private Clone clone = null;
+
+    /**
+     * The operating system type of the LUN.&lt;br/&gt; Required in POST when 
creating a LUN that is not a clone of another. Disallowed in POST when creating 
a LUN clone.
+     */
+    public enum OsTypeEnum {
+        HYPER_V("hyper_v"),
+
+        LINUX("linux"),
+
+        VMWARE("vmware"),
+
+        WINDOWS("windows"),
+
+        XEN("xen");
+
+        private String value;
+
+        OsTypeEnum(String value) {
+            this.value = value;
+        }
+
+        @JsonValue
+        public String getValue() {
+            return value;
+        }
+
+        @Override
+        public String toString() {
+            return String.valueOf(value);
+        }
+
+        @JsonCreator
+        public static OsTypeEnum fromValue(String value) {
+            for (OsTypeEnum b : OsTypeEnum.values()) {
+                if (b.value.equals(value)) {
+                    return b;
+                }
+            }
+            return null;
+        }
+    }
+
+    @JsonProperty("os_type")
+    private OsTypeEnum osType = null;
+
+    @JsonProperty("serial_number")
+    private String serialNumber = null;
+
+    @JsonProperty("space")
+    private LunSpace space = null;
+
+    @JsonProperty("svm")
+    private Svm svm = null;
+
+    @JsonProperty("uuid")
+    private String uuid = null;
+
+    public Lun autoDelete(Boolean autoDelete) {
+        this.autoDelete = autoDelete;
+        return this;
+    }
+
+    public Boolean isAutoDelete() {
+        return autoDelete;
+    }
+
+    public void setAutoDelete(Boolean autoDelete) {
+        this.autoDelete = autoDelete;
+    }
+
+    public Lun propertyClass(PropertyClassEnum propertyClass) {
+        this.propertyClass = propertyClass;
+        return this;
+    }
+
+    public PropertyClassEnum getPropertyClass() {
+        return propertyClass;
+    }
+
+    public void setPropertyClass(PropertyClassEnum propertyClass) {
+        this.propertyClass = propertyClass;
+    }
+
+    public Lun enabled(Boolean enabled) {
+        this.enabled = enabled;
+        return this;
+    }
+
+    public Boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(Boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public List<LunMap> getLunMaps() {
+        return lunMaps;
+    }
+
+    public void setLunMaps(List<LunMap> lunMaps) {
+        this.lunMaps = lunMaps;
+    }
+
+    public Lun name(String name) {
+        this.name = name;
+        return this;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Lun osType(OsTypeEnum osType) {
+        this.osType = osType;
+        return this;
+    }
+
+    public OsTypeEnum getOsType() {
+        return osType;
+    }
+
+    public void setOsType(OsTypeEnum osType) {
+        this.osType = osType;
+    }
+
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    public Lun space(LunSpace space) {
+        this.space = space;
+        return this;
+    }
+
+    public LunSpace getSpace() {
+        return space;
+    }
+
+    public void setSpace(LunSpace space) {
+        this.space = space;
+    }
+
+    public Lun svm(Svm svm) {
+        this.svm = svm;
+        return this;
+    }
+
+    public Svm getSvm() {
+        return svm;
+    }
+
+    public void setSvm(Svm svm) {
+        this.svm = svm;
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public Clone getClone() {
+        return clone;
+    }
+
+    public void setClone(Clone clone) {
+        this.clone = clone;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        Lun lun = (Lun) o;
+        return Objects.equals(this.name, lun.name) && 
Objects.equals(this.uuid, lun.uuid);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(name, uuid);
+    }
+
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("class Lun {\n");
+        sb.append("    autoDelete: 
").append(toIndentedString(autoDelete)).append("\n");
+        sb.append("    propertyClass: 
").append(toIndentedString(propertyClass)).append("\n");
+        sb.append("    enabled: 
").append(toIndentedString(enabled)).append("\n");
+        sb.append("    lunMaps: 
").append(toIndentedString(lunMaps)).append("\n");
+        sb.append("    name: ").append(toIndentedString(name)).append("\n");
+        sb.append("    osType: 
").append(toIndentedString(osType)).append("\n");
+        sb.append("    serialNumber: 
").append(toIndentedString(serialNumber)).append("\n");
+        sb.append("    space: ").append(toIndentedString(space)).append("\n");
+        sb.append("    svm: ").append(toIndentedString(svm)).append("\n");
+        sb.append("    uuid: ").append(toIndentedString(uuid)).append("\n");
+        sb.append("}");
+        return sb.toString();
+    }

Review Comment:
   `ReflectionToStringBuilderUtils`



##########
plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/model/Igroup.java:
##########
@@ -0,0 +1,257 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cloudstack.storage.feign.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+import java.util.Objects;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Igroup {
+    @JsonProperty("delete_on_unmap")
+    private Boolean deleteOnUnmap = null;
+    @JsonProperty("initiators")
+    private List<Initiator> initiators = null;
+    @JsonProperty("lun_maps")
+    private List<LunMap> lunMaps = null;
+    @JsonProperty("os_type")
+    private OsTypeEnum osType = null;
+
+    @JsonProperty("parent_igroups")
+    private List<Igroup> parentIgroups = null;
+
+    @JsonProperty("igroups")
+    private List<Igroup> igroups = null;
+
+    @JsonProperty("name")
+    private String name = null;
+
+    @JsonProperty("protocol")
+    private ProtocolEnum protocol = null;
+    @JsonProperty("svm")
+    private Svm svm = null;
+    @JsonProperty("uuid")
+    private String uuid = null;
+
+    public enum OsTypeEnum {
+        hyper_v("hyper_v"),
+
+        linux("linux"),
+
+        vmware("vmware"),
+
+        windows("windows"),
+
+        xen("xen");
+
+        private String value;
+
+        OsTypeEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        @Override
+        public String toString() {
+            return String.valueOf(value);
+        }
+
+        public static OsTypeEnum fromValue(String text) {
+            for (OsTypeEnum b : OsTypeEnum.values()) {
+                if (String.valueOf(b.value).equals(text)) {
+                    return b;
+                }
+            }
+            return null;
+        }
+    }
+
+    public List<Igroup> getParentIgroups() {
+        return parentIgroups;
+    }
+
+    public void setParentIgroups(List<Igroup> parentIgroups) {
+        this.parentIgroups = parentIgroups;
+    }
+
+    public Igroup igroups(List<Igroup> igroups) {
+        this.igroups = igroups;
+        return this;
+    }
+
+   public List<Igroup> getIgroups() {
+        return igroups;
+    }
+
+    public void setIgroups(List<Igroup> igroups) {
+        this.igroups = igroups;
+    }
+
+    public enum ProtocolEnum {
+        iscsi("iscsi"),
+
+        mixed("mixed");
+
+        private String value;
+
+        ProtocolEnum(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        @Override
+        public String toString() {
+            return String.valueOf(value);
+        }
+
+        public static ProtocolEnum fromValue(String text) {
+            for (ProtocolEnum b : ProtocolEnum.values()) {
+                if (String.valueOf(b.value).equals(text)) {
+                    return b;
+                }
+            }
+            return null;
+        }
+    }
+    public Igroup deleteOnUnmap(Boolean deleteOnUnmap) {
+        this.deleteOnUnmap = deleteOnUnmap;
+        return this;
+    }
+
+   public Boolean isDeleteOnUnmap() {
+        return deleteOnUnmap;
+    }
+
+    public void setDeleteOnUnmap(Boolean deleteOnUnmap) {
+        this.deleteOnUnmap = deleteOnUnmap;
+    }
+
+    public Igroup initiators(List<Initiator> initiators) {
+        this.initiators = initiators;
+        return this;
+    }
+    public List<Initiator> getInitiators() {
+        return initiators;
+    }
+
+    public void setInitiators(List<Initiator> initiators) {
+        this.initiators = initiators;
+    }
+
+    public Igroup lunMaps(List<LunMap> lunMaps) {
+        this.lunMaps = lunMaps;
+        return this;
+    }
+    public List<LunMap> getLunMaps() {
+        return lunMaps;
+    }
+
+    public void setLunMaps(List<LunMap> lunMaps) {
+        this.lunMaps = lunMaps;
+    }
+
+    public Igroup name(String name) {
+        this.name = name;
+        return this;
+    }
+
+    public String getName() {
+        return name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Igroup osType(OsTypeEnum osType) {
+        this.osType = osType;
+        return this;
+    }
+    public OsTypeEnum getOsType() {
+        return osType;
+    }
+
+    public void setOsType(OsTypeEnum osType) {
+        this.osType = osType;
+    }
+
+    public Igroup protocol(ProtocolEnum protocol) {
+        this.protocol = protocol;
+        return this;
+    }
+
+    public ProtocolEnum getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(ProtocolEnum protocol) {
+        this.protocol = protocol;
+    }
+
+    public Igroup svm(Svm svm) {
+        this.svm = svm;
+        return this;
+    }
+    public Svm getSvm() {
+        return svm;
+    }
+
+    public void setSvm(Svm svm) {
+        this.svm = svm;
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(name, uuid);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        Igroup other = (Igroup) obj;
+        return Objects.equals(name, other.name) && Objects.equals(uuid, 
other.uuid);
+    }
+
+    @Override
+    public String toString() {
+        return "Igroup [deleteOnUnmap=" + deleteOnUnmap + ", initiators=" + 
initiators + ", lunMaps=" + lunMaps
+                + ", name=" + name + ", replication="  + ", osType=" + osType 
+ ", parentIgroups="
+                + parentIgroups + ", igroups=" + igroups + ", protocol=" + 
protocol + ", svm=" + svm + ", uuid=" + uuid
+                + ", portset=" + "]";
+    }

Review Comment:
   `ReflectionToStringBuilderUtils`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to