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 com.cloud.offering;
  
  import java.util.Date;
  
  import org.apache.cloudstack.acl.InfrastructureEntity;
  import org.apache.cloudstack.api.Identity;
  import org.apache.cloudstack.api.InternalIdentity;
  
  import com.cloud.storage.Storage.ProvisioningType;
  
  /**
   * Represents a disk offering that specifies what the end user needs in
   * the disk offering.
   *
   */
  public interface DiskOffering extends InfrastructureEntity, Identity, InternalIdentity {
      enum State {
          Inactive, Active,
      }
  
      State getState();
  
      enum DiskCacheMode {
          NONE("none"), WRITEBACK("writeback"), WRITETHROUGH("writethrough"), HYPERVISOR_DEFAULT("hypervisor_default");
  
          private final String _diskCacheMode;
  
          DiskCacheMode(String cacheMode) {
              _diskCacheMode = cacheMode;
          }
  
          @Override
          public String toString() {
              return _diskCacheMode;
          }
      };
  
      String getUniqueName();
  
      boolean isUseLocalStorage();
  
      String getName();
  
      String getDisplayText();
  
      ProvisioningType getProvisioningType();
  
      String getTags();
  
      String[] getTagsArray();
  
      Date getCreated();
  
      boolean isCustomized();
  
      boolean isShared();
  
      void setDiskSize(long diskSize);
  
      long getDiskSize();
  
      void setCustomizedIops(Boolean customizedIops);
  
      Boolean isCustomizedIops();
  
      void setMinIops(Long minIops);
  
      Long getMinIops();
  
      void setMaxIops(Long maxIops);
  
      Long getMaxIops();
  
      boolean isRecreatable();
  
      void setBytesReadRate(Long bytesReadRate);
  
      Long getBytesReadRate();
  
      void setBytesReadRateMax(Long bytesReadRateMax);
  
      Long getBytesReadRateMax();
  
      void setBytesReadRateMaxLength(Long bytesReadRateMaxLength);
  
      Long getBytesReadRateMaxLength();
  
      void setBytesWriteRate(Long bytesWriteRate);
  
      Long getBytesWriteRate();
  
      void setBytesWriteRateMax(Long bytesWriteMax);
  
      Long getBytesWriteRateMax();
  
      void setBytesWriteRateMaxLength(Long bytesWriteMaxLength);
  
      Long getBytesWriteRateMaxLength();
  
      void setIopsReadRate(Long iopsReadRate);
  
      Long getIopsReadRate();
  
      void setIopsReadRateMax(Long iopsReadRateMax);
  
      Long getIopsReadRateMax();
  
      void setIopsReadRateMaxLength(Long iopsReadRateMaxLength);
  
      Long getIopsReadRateMaxLength();
  
      void setIopsWriteRate(Long iopsWriteRate);
  
      Long getIopsWriteRate();
  
      void setIopsWriteRateMax(Long iopsWriteRateMax);
  
      Long getIopsWriteRateMax();
  
      void setIopsWriteRateMaxLength(Long iopsWriteRateMaxLength);
  
      Long getIopsWriteRateMaxLength();
  
      void setHypervisorSnapshotReserve(Integer hypervisorSnapshotReserve);
  
      Integer getHypervisorSnapshotReserve();
  
      DiskCacheMode getCacheMode();
  
      void setCacheMode(DiskCacheMode cacheMode);
  
      boolean isComputeOnly();
  
      boolean getDiskSizeStrictness();
  
      boolean getEncrypt();
  
      void setEncrypt(boolean encrypt);
  }
  