/** * Copyright (C) 2009-2015 Dell, Inc * See annotations for authorship information * * ==================================================================== * Licensed 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.dasein.cloud.joyent.compute; import org.dasein.cloud.*; import org.dasein.cloud.compute.*; import org.dasein.cloud.joyent.SmartDataCenter; import org.dasein.cloud.util.NamingConstraints; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collections; import java.util.Locale; /** * Describes the capabilities of Joyent with respect to Dasein image operations. * <p>Created by Stas Maksimov: 10/03/2014 10:18</p> * * @author Stas Maksimov * @version 2014.03 initial version * @since 2014.03 */ public class DatasetCapabilities extends AbstractCapabilities<SmartDataCenter> implements ImageCapabilities { public DatasetCapabilities(SmartDataCenter provider) { super(provider); } @Override public boolean canBundle(@Nonnull VmState fromState) throws CloudException, InternalException { return false; } @Override public boolean canImage(@Nonnull VmState fromState) throws CloudException, InternalException { return VmState.STOPPED.equals(fromState); } @Nonnull @Override public String getProviderTermForImage(@Nonnull Locale locale, @Nonnull ImageClass cls) { return "image"; } @Nonnull @Override public String getProviderTermForCustomImage(@Nonnull Locale locale, @Nonnull ImageClass cls) { return getProviderTermForImage(locale, cls); } @Nullable @Override public VisibleScope getImageVisibleScope() { return null; } @Nonnull @Override public Requirement identifyLocalBundlingRequirement() throws CloudException, InternalException { return Requirement.NONE; } @Nonnull @Override public Iterable<MachineImageFormat> listSupportedFormats() throws CloudException, InternalException { return Collections.emptyList(); } @Nonnull @Override public Iterable<MachineImageFormat> listSupportedFormatsForBundling() throws CloudException, InternalException { return Collections.emptyList(); } @Nonnull @Override public Iterable<ImageClass> listSupportedImageClasses() throws CloudException, InternalException { return Collections.singletonList(ImageClass.MACHINE); } @Nonnull @Override public Iterable<MachineImageType> listSupportedImageTypes() throws CloudException, InternalException { return Collections.singletonList(MachineImageType.VOLUME); } @Override public boolean supportsDirectImageUpload() throws CloudException, InternalException { return false; } @Override public boolean supportsImageCapture(@Nonnull MachineImageType type) throws CloudException, InternalException { return true; } @Override public boolean supportsImageCopy(){return false;} @Override public boolean supportsImageSharing() throws CloudException, InternalException { return false; } @Override public boolean supportsImageSharingWithPublic() throws CloudException, InternalException { return false; } @Override public boolean supportsPublicLibrary(@Nonnull ImageClass cls) throws CloudException, InternalException { return ImageClass.MACHINE.equals(cls); } @Override public boolean supportsListingAllRegions(){return false;} @Override public boolean imageCaptureDestroysVM() throws CloudException, InternalException{return false;} @Override public @Nonnull NamingConstraints getImageNamingConstraints() throws CloudException, InternalException { return NamingConstraints.getAlphaNumeric(1, 512).constrainedBy('.', '-'); } }