/*
* Copyright 2014 by SCSK Corporation.
* ss
* This file is part of PrimeCloud Controller(TM).
*
* PrimeCloud Controller(TM) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* PrimeCloud Controller(TM) is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PrimeCloud Controller(TM). If not, see <http://www.gnu.org/licenses/>.
*/
package jp.primecloud.auto.service;
import java.util.List;
import jp.primecloud.auto.common.status.InstanceStatus;
import jp.primecloud.auto.entity.crud.Instance;
import jp.primecloud.auto.service.dto.DataDiskDto;
import jp.primecloud.auto.service.dto.InstanceDto;
import jp.primecloud.auto.service.dto.InstanceNetworkDto;
import jp.primecloud.auto.service.dto.PlatformDto;
import jp.primecloud.auto.service.dto.VmwareAddressDto;
/**
* <p>
* TODO: クラスコメントを記述
* </p>
*
*/
public interface InstanceService {
public InstanceDto getInstance(Long instanceNo);
public List<InstanceDto> getInstances(Long farmNo);
public Long createIaasInstance(Long farmNo, String instanceName, Long platformNo, String comment, Long imageNo,
String instanceType);
public Long createVmwareInstance(Long farmNo, String instanceName, Long platformNo, String comment, Long imageNo,
String instanceType);
public Long createNiftyInstance(Long farmNo, String instanceName, Long platformNo, String comment, Long imageNo,
String instanceType);
public void updateAwsInstance(Long instanceNo, String instanceName, String comment, String keyName,
String instanceType, String securityGroupName, String availabilityZoneName, Long addressNo,
String subnetId, Integer rootSize, String privateIpAddress);
public void updateCloudstackInstance(Long instanceNo, String instanceName, String comment, String keyName,
String instanceType, String securityGroupName, String availabilityZoneName, Long addressNo);
public void updateVcloudInstance(Long instanceNo, String instanceName, String comment, Long storageTypeNo,
Long keyPairNo, String instanceType, List<InstanceNetworkDto> instanceNetworkDtos);
public void updateAzureInstance(Long instanceNo, String instanceName, String comment, String instanceType,
String availabilitySet, String subnetId);
public void updateOpenStackInstance(Long instanceNo, String instanceName, String comment, String instanceType,
String availabilityZoneName, String securityGroupName, String keyName);
public Long createDataDisk(Long instanceNo, DataDiskDto dataDiskDto);
public void updateDataDisk(Long instanceNo, DataDiskDto dataDiskDto);
public void attachDataDisk(Long instanceNo, Long diskNo);
public void detachDataDisk(Long instanceNo, Long diskNo);
public void updateVmwareInstance(Long instanceNo, String instanceName, String comment, String instanceType,
String computeResource, String resourcePool, Long keyPairNo, Integer rootSize);
public void updateVmwareInstance(Long instanceNo, String instanceName, String comment, String instanceType,
String computeResource, String resourcePool, Long keyPairNo, Integer rootSize, VmwareAddressDto vmwareAddressDto);
public void updateNiftyInstance(Long instanceNo, String instanceName, String comment, String instanceType,
Long keyPairNo);
public void deleteInstance(Long instanceNo);
public void associateComponents(Long instanceNo, List<Long> componentNos);
public List<PlatformDto> getPlatforms(Long userNo);
public void enableZabbixMonitoring(Long instanceNo);
public void disableZabbixMonitoring(Long instanceNo);
public InstanceStatus getInstanceStatus(Instance instance);
}