| // 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.storage; | |
| import java.util.ArrayList; | |
| import java.util.List; | |
| public class Storage { | |
| public static enum ImageFormat { | |
| QCOW2(true, true, false), | |
| RAW(false, false, false), | |
| VHD(true, true, true), | |
| ISO(false, false, false), | |
| OVA(true, true, true, "ova"), | |
| BAREMETAL(false, false, false); | |
| private final boolean thinProvisioned; | |
| private final boolean supportSparse; | |
| private final boolean supportSnapshot; | |
| private final String fileExtension; | |
| private ImageFormat(boolean thinProvisioned, boolean supportSparse, boolean supportSnapshot) { | |
| this.thinProvisioned = thinProvisioned; | |
| this.supportSparse = supportSparse; | |
| this.supportSnapshot = supportSnapshot; | |
| fileExtension = null; | |
| } | |
| private ImageFormat(boolean thinProvisioned, boolean supportSparse, boolean supportSnapshot, String fileExtension) { | |
| this.thinProvisioned = thinProvisioned; | |
| this.supportSparse = supportSparse; | |
| this.supportSnapshot = supportSnapshot; | |
| this.fileExtension = fileExtension; | |
| } | |
| public boolean isThinProvisioned() { | |
| return thinProvisioned; | |
| } | |
| public boolean supportsSparse() { | |
| return supportSparse; | |
| } | |
| public boolean supportSnapshot() { | |
| return supportSnapshot; | |
| } | |
| public String getFileExtension() { | |
| if (fileExtension == null) | |
| return toString().toLowerCase(); | |
| return fileExtension; | |
| } | |
| } | |
| public static enum FileSystem { | |
| Unknown, | |
| ext3, | |
| ntfs, | |
| fat, | |
| fat32, | |
| ext2, | |
| ext4, | |
| cdfs, | |
| hpfs, | |
| ufs, | |
| hfs, | |
| hfsp | |
| } | |
| public static enum TemplateType { | |
| SYSTEM, /* routing, system vm template */ | |
| BUILTIN, /* buildin template */ | |
| PERHOST, /* every host has this template, don't need to install it in secondary storage */ | |
| USER /* User supplied template/iso */ | |
| } | |
| public static enum StoragePoolType { | |
| Filesystem(false), // local directory | |
| NetworkFilesystem(true), // NFS or CIFS | |
| IscsiLUN(true), // shared LUN, with a clusterfs overlay | |
| Iscsi(true), // for e.g., ZFS Comstar | |
| ISO(false), // for iso image | |
| LVM(false), // XenServer local LVM SR | |
| CLVM(true), | |
| RBD(true), | |
| SharedMountPoint(true), | |
| VMFS(true), // VMware VMFS storage | |
| PreSetup(true), // for XenServer, Storage Pool is set up by customers. | |
| EXT(false), // XenServer local EXT SR | |
| OCFS2(true); | |
| boolean shared; | |
| StoragePoolType(boolean shared) { | |
| this.shared = shared; | |
| } | |
| public boolean isShared() { | |
| return shared; | |
| } | |
| } | |
| public static List<StoragePoolType> getNonSharedStoragePoolTypes() { | |
| List<StoragePoolType> nonSharedStoragePoolTypes = new ArrayList<StoragePoolType>(); | |
| for (StoragePoolType storagePoolType : StoragePoolType.values()) { | |
| if (!storagePoolType.isShared()) { | |
| nonSharedStoragePoolTypes.add(storagePoolType); | |
| } | |
| } | |
| return nonSharedStoragePoolTypes; | |
| } | |
| public static enum StorageResourceType { | |
| STORAGE_POOL, STORAGE_HOST, SECONDARY_STORAGE, LOCAL_SECONDARY_STORAGE | |
| } | |
| } |