content: // 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.datastore.adapter.primera;
  
  import java.util.ArrayList;
  import java.util.Date;
  
  import org.apache.cloudstack.storage.datastore.adapter.ProviderSnapshot;
  
  import com.fasterxml.jackson.annotation.JsonIgnore;
  import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  import com.fasterxml.jackson.annotation.JsonInclude;
  
  @JsonIgnoreProperties(ignoreUnknown = true)
  @JsonInclude(JsonInclude.Include.NON_NULL)
  public class PrimeraVolume implements ProviderSnapshot {
      @JsonIgnore
      private AddressType addressType = AddressType.FIBERWWN;
      @JsonIgnore
      private String connectionId;
      @JsonIgnore
      private Integer priority = 0;
  
      private String physParentId = null;
      private Integer parentId = null;
      private String copyOf = null;
      private Integer roChildId = null;
      private Integer rwChildId = null;
      private String snapCPG = null;
      private Long total = null;
      /**
       * Actions are enumerated and listed at
       * https://support.hpe.com/hpesc/public/docDisplay?docId=a00118636en_us&page=v25706371.html
       */
      private Integer action = null;
      private String comment = null;
      private Integer id = null;
      private String name = null;
      private Integer deduplicationState = null;
      private Integer compressionState = null;
      private Integer provisioningType = null;
      private Integer copyType = null;
      private Integer baseId = null;
      private Boolean readOnly = null;
      private Integer state = null;
      private ArrayList<Object> failedStates = null;
      private ArrayList<Object> degradedStates = null;
      private ArrayList<Object> additionalStates = null;
      private PrimeraVolumeAdminSpace adminSpace = null;
      private PrimeraVolumeSnapshotSpace snapshotSpace = null;
      private PrimeraVolumeUserSpace userSpace = null;
      private Integer totalReservedMiB = null;
      private Integer totalUsedMiB = null;
      private Integer sizeMiB = null;
      private Integer hostWriteMiB = null;
      private String wwn = null;
      private Integer creationTimeSec = null;
      private Date creationTime8601 = null;
      private Integer ssSpcAllocWarningPct;
      private Integer ssSpcAllocLimitPct = null;
      private Integer usrSpcAllocWarningPct = null;
      private Integer usrSpcAllocLimitPct = null;
      private PrimeraVolumePolicies policies = null;
      private String userCPG = null;
      private String uuid = null;
      private Integer sharedParentId = null;
      private Integer udid = null;
      private PrimeraVolumeCapacityEfficiency capacityEfficiency = null;
      private Integer rcopyStatus = null;
      private ArrayList<PrimeraVolumeLink> links = null;
      public String getPhysParentId() {
          return physParentId;
      }
      public void setPhysParentId(String physParentId) {
          this.physParentId = physParentId;
      }
      public Integer getParentId() {
          return parentId;
      }
      public void setParentId(Integer parentId) {
          this.parentId = parentId;
      }
      public String getCopyOf() {
          return copyOf;
      }
      public void setCopyOf(String copyOf) {
          this.copyOf = copyOf;
      }
      public Integer getRoChildId() {
          return roChildId;
      }
      public void setRoChildId(Integer roChildId) {
          this.roChildId = roChildId;
      }
      public Integer getRwChildId() {
          return rwChildId;
      }
      public void setRwChildId(Integer rwChildId) {
          this.rwChildId = rwChildId;
      }
      public String getSnapCPG() {
          return snapCPG;
      }
      public void setSnapCPG(String snapCPG) {
          this.snapCPG = snapCPG;
      }
      public Long getTotal() {
          return total;
      }
      public void setTotal(Long total) {
          this.total = total;
      }
      public Integer getAction() {
          return action;
      }
      public void setAction(Integer action) {
          this.action = action;
      }
      public String getComment() {
          return comment;
      }
      public void setComment(String comment) {
          this.comment = comment;
      }
      public String getName() {
          return name;
      }
      public void setName(String name) {
          this.name = name;
      }
      public Integer getDeduplicationState() {
          return deduplicationState;
      }
      public void setDeduplicationState(Integer deduplicationState) {
          this.deduplicationState = deduplicationState;
      }
      public Integer getCompressionState() {
          return compressionState;
      }
      public void setCompressionState(Integer compressionState) {
          this.compressionState = compressionState;
      }
      public Integer getProvisioningType() {
          return provisioningType;
      }
      public void setProvisioningType(Integer provisioningType) {
          this.provisioningType = provisioningType;
      }
      public Integer getCopyType() {
          return copyType;
      }
      public void setCopyType(Integer copyType) {
          this.copyType = copyType;
      }
      public Integer getBaseId() {
          return baseId;
      }
      public void setBaseId(Integer baseId) {
          this.baseId = baseId;
      }
      public Boolean getReadOnly() {
          return readOnly;
      }
      public void setReadOnly(Boolean readOnly) {
          this.readOnly = readOnly;
      }
      public String getState() {
          if (state != null) {
              return state.toString();
          }
          return null;
      }
      public void setState(Integer state) {
          this.state = state;
      }
      public ArrayList<Object> getFailedStates() {
          return failedStates;
      }
      public void setFailedStates(ArrayList<Object> failedStates) {
          this.failedStates = failedStates;
      }
      public ArrayList<Object> getDegradedStates() {
          return degradedStates;
      }
      public void setDegradedStates(ArrayList<Object> degradedStates) {
          this.degradedStates = degradedStates;
      }
      public ArrayList<Object> getAdditionalStates() {
          return additionalStates;
      }
      public void setAdditionalStates(ArrayList<Object> additionalStates) {
          this.additionalStates = additionalStates;
      }
      public PrimeraVolumeAdminSpace getAdminSpace() {
          return adminSpace;
      }
      public void setAdminSpace(PrimeraVolumeAdminSpace adminSpace) {
          this.adminSpace = adminSpace;
      }
      public PrimeraVolumeSnapshotSpace getSnapshotSpace() {
          return snapshotSpace;
      }
      public void setSnapshotSpace(PrimeraVolumeSnapshotSpace snapshotSpace) {
          this.snapshotSpace = snapshotSpace;
      }
      public PrimeraVolumeUserSpace getUserSpace() {
          return userSpace;
      }
      public void setUserSpace(PrimeraVolumeUserSpace userSpace) {
          this.userSpace = userSpace;
      }
      public Integer getTotalReservedMiB() {
          return totalReservedMiB;
      }
      public void setTotalReservedMiB(Integer totalReservedMiB) {
          this.totalReservedMiB = totalReservedMiB;
      }
      public Integer getTotalUsedMiB() {
          return totalUsedMiB;
      }
      public void setTotalUsedMiB(Integer totalUsedMiB) {
          this.totalUsedMiB = totalUsedMiB;
      }
      public Integer getSizeMiB() {
          return sizeMiB;
      }
      public void setSizeMiB(Integer sizeMiB) {
          this.sizeMiB = sizeMiB;
      }
      public Integer getHostWriteMiB() {
          return hostWriteMiB;
      }
      public void setHostWriteMiB(Integer hostWriteMiB) {
          this.hostWriteMiB = hostWriteMiB;
      }
      public String getWwn() {
          return wwn;
      }
      public void setWwn(String wwn) {
          this.wwn = wwn;
      }
      public Integer getCreationTimeSec() {
          return creationTimeSec;
      }
      public void setCreationTimeSec(Integer creationTimeSec) {
          this.creationTimeSec = creationTimeSec;
      }
      public Date getCreationTime8601() {
          return creationTime8601;
      }
      public void setCreationTime8601(Date creationTime8601) {
          this.creationTime8601 = creationTime8601;
      }
      public Integer getSsSpcAllocWarningPct() {
          return ssSpcAllocWarningPct;
      }
      public void setSsSpcAllocWarningPct(Integer ssSpcAllocWarningPct) {
          this.ssSpcAllocWarningPct = ssSpcAllocWarningPct;
      }
      public Integer getSsSpcAllocLimitPct() {
          return ssSpcAllocLimitPct;
      }
      public void setSsSpcAllocLimitPct(Integer ssSpcAllocLimitPct) {
          this.ssSpcAllocLimitPct = ssSpcAllocLimitPct;
      }
      public Integer getUsrSpcAllocWarningPct() {
          return usrSpcAllocWarningPct;
      }
      public void setUsrSpcAllocWarningPct(Integer usrSpcAllocWarningPct) {
          this.usrSpcAllocWarningPct = usrSpcAllocWarningPct;
      }
      public Integer getUsrSpcAllocLimitPct() {
          return usrSpcAllocLimitPct;
      }
      public void setUsrSpcAllocLimitPct(Integer usrSpcAllocLimitPct) {
          this.usrSpcAllocLimitPct = usrSpcAllocLimitPct;
      }
      public PrimeraVolumePolicies getPolicies() {
          return policies;
      }
      public void setPolicies(PrimeraVolumePolicies policies) {
          this.policies = policies;
      }
      public String getUserCPG() {
          return userCPG;
      }
      public void setUserCPG(String userCPG) {
          this.userCPG = userCPG;
      }
      public String getUuid() {
          return uuid;
      }
      public void setUuid(String uuid) {
          this.uuid = uuid;
      }
      public Integer getSharedParentId() {
          return sharedParentId;
      }
      public void setSharedParentId(Integer sharedParentId) {
          this.sharedParentId = sharedParentId;
      }
      public Integer getUdid() {
          return udid;
      }
      public void setUdid(Integer udid) {
          this.udid = udid;
      }
      public PrimeraVolumeCapacityEfficiency getCapacityEfficiency() {
          return capacityEfficiency;
      }
      public void setCapacityEfficiency(PrimeraVolumeCapacityEfficiency capacityEfficiency) {
          this.capacityEfficiency = capacityEfficiency;
      }
      public Integer getRcopyStatus() {
          return rcopyStatus;
      }
      public void setRcopyStatus(Integer rcopyStatus) {
          this.rcopyStatus = rcopyStatus;
      }
      public ArrayList<PrimeraVolumeLink> getLinks() {
          return links;
      }
      public void setLinks(ArrayList<PrimeraVolumeLink> links) {
          this.links = links;
      }
      @Override
      @JsonIgnore
      public Boolean isDestroyed() {
          return false;
      }
      @Override
      public void setId(String id) {
          this.id = Integer.parseInt(id);
      }
      public String getId() {
          if (id != null) {
              return Integer.toString(id);
          }
          return null;
      }
      @Override
      public Integer getPriority() {
          return priority;
      }
      @Override
      public void setPriority(Integer priority) {
          this.priority = priority;
      }
      @Override
      public AddressType getAddressType() {
          return addressType;
      }
      @Override
      public void setAddressType(AddressType addressType) {
          this.addressType = addressType;
      }
      @Override
      public String getAddress() {
          return this.wwn;
      }
      @Override
      @JsonIgnore
      public Long getAllocatedSizeInBytes() {
          if (this.getSizeMiB() != null) {
              return this.getSizeMiB() * PrimeraAdapter.BYTES_IN_MiB;
          }
          return 0L;
      }
      @Override
      @JsonIgnore
      public Long getUsedBytes() {
          if (this.getTotalReservedMiB() != null) {
              return this.getTotalReservedMiB() * PrimeraAdapter.BYTES_IN_MiB;
          }
          return 0L;
      }
      @Override
      @JsonIgnore
      public String getExternalUuid() {
          return uuid;
      }
      public void setExternalUuid(String uuid) {
          this.uuid = uuid;
      }
      @Override
      @JsonIgnore
      public String getExternalName() {
          return name;
      }
      public void setExternalName(String name) {
          this.name = name;
      }
      @Override
      @JsonIgnore
      public String getExternalConnectionId() {
          return connectionId;
      }
      public void setExternalConnection(String connectionId) {
          this.connectionId = connectionId;
      }
      @Override
      @JsonIgnore
      public Boolean canAttachDirectly() {
          return true;
      }
  }
  