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;
  
  /**
   * offered.
   */
  public interface ServiceOffering extends InfrastructureEntity, InternalIdentity, Identity {
      static final String consoleProxyDefaultOffUniqueName = "Cloud.com-ConsoleProxy";
      static final String ssvmDefaultOffUniqueName = "Cloud.com-SecondaryStorage";
      static final String routerDefaultOffUniqueName = "Cloud.Com-SoftwareRouter";
      static final String elbVmDefaultOffUniqueName = "Cloud.Com-ElasticLBVm";
      static final String internalLbVmDefaultOffUniqueName = "Cloud.Com-InternalLBVm";
      // leaving cloud.com references as these are identifyers and no real world addresses (check against DB)
  
  
      static final String PURGE_DB_ENTITIES_KEY = "purge.db.entities";
  
      enum State {
          Inactive, Active,
      }
  
      enum StorageType {
          local, shared
      }
  
      String getDisplayText();
  
      Date getCreated();
  
      /**
       * @return user readable description
       */
      String getName();
  
      /**
       * @return is this a system service offering
       */
      boolean isSystemUse();
  
      /**
       * @return # of cpu.
       */
      Integer getCpu();
  
      /**
       * @return speed in mhz
       */
      Integer getSpeed();
  
      /**
       * @return ram size in megabytes
       */
      Integer getRamSize();
  
      /**
       * @return Does this service plan offer HA?
       */
      boolean isOfferHA();
  
      /**
       * @return Does this service plan offer VM to use CPU resources beyond the service offering limits?
       */
      boolean getLimitCpuUse();
  
      /**
       * @return Does this service plan support Volatile VM that is, discard VM's root disk and create a new one on reboot?
       */
      boolean isVolatileVm();
  
      /**
       * @return the rate in megabits per sec to which a VM's network interface is throttled to
       */
      Integer getRateMbps();
  
      /**
       * @return the rate megabits per sec to which a VM's multicast&broadcast traffic is throttled to
       */
      Integer getMulticastRateMbps();
  
      /**
       * @return tag that should be present on the host needed, optional parameter
       */
      String getHostTag();
  
      boolean getDefaultUse();
  
      String getVmType();
  
      String getDeploymentPlanner();
  
      boolean isDynamic();
  
      void setState(ServiceOffering.State state);
  
      ServiceOffering.State getState();
  
      void setName(String name);
  
      String getUniqueName();
  
      void setUniqueName(String uniqueName);
  
      void setDisplayText(String displayText);
  
      boolean isCustomized();
  
      void setCustomized(boolean customized);
  
      Date getRemoved();
  
      void setRemoved(Date removed);
  
      void setSortKey(int key);
  
      int getSortKey();
  
      Long getDiskOfferingId();
  
      boolean isDynamicScalingEnabled();
  
      Boolean getDiskOfferingStrictness();
  
      void setDiskOfferingStrictness(boolean diskOfferingStrictness);
  
      Long getVgpuProfileId();
  
      Integer getGpuCount();
  }
  