/*
* Copyright 2014 by SCSK Corporation.
*
* 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.ui.data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import jp.primecloud.auto.common.constant.PCCConstant;
import jp.primecloud.auto.config.Config;
import jp.primecloud.auto.entity.crud.AwsInstance;
import jp.primecloud.auto.entity.crud.AzureInstance;
import jp.primecloud.auto.entity.crud.CloudstackInstance;
import jp.primecloud.auto.entity.crud.Image;
import jp.primecloud.auto.entity.crud.Instance;
import jp.primecloud.auto.entity.crud.NiftyInstance;
import jp.primecloud.auto.entity.crud.OpenstackInstance;
import jp.primecloud.auto.entity.crud.Platform;
import jp.primecloud.auto.entity.crud.PlatformVcloud;
import jp.primecloud.auto.entity.crud.VcloudInstance;
import jp.primecloud.auto.entity.crud.VcloudInstanceNetwork;
import jp.primecloud.auto.entity.crud.VmwareAddress;
import jp.primecloud.auto.entity.crud.VmwareInstance;
import jp.primecloud.auto.service.dto.InstanceDto;
import jp.primecloud.auto.ui.util.ViewProperties;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import com.vaadin.data.util.BeanItemContainer;
/**
* <p>
* TODO: クラスコメントを記述
* </p>
*
*/
@SuppressWarnings("serial")
public class InstanceParameterContainer extends BeanItemContainer<InstanceParameter> implements Serializable {
public InstanceParameterContainer(InstanceDto instanceDto) {
super(InstanceParameter.class);
Instance instance = instanceDto.getInstance();
AwsInstance awsInstance = instanceDto.getAwsInstance();
VmwareInstance vmwareInstance = instanceDto.getVmwareInstance();
NiftyInstance niftyInstance = instanceDto.getNiftyInstance();
CloudstackInstance cloudStackInstance = instanceDto.getCloudstackInstance();
VcloudInstance vcloudInstance = instanceDto.getVcloudInstance();
AzureInstance azureInstance = instanceDto.getAzureInstance();
OpenstackInstance openstackInstance = instanceDto.getOpenstackInstance();
Platform platform = instanceDto.getPlatform().getPlatform();
String platformName = platform.getPlatformNameDisp();
Image image = instanceDto.getImage().getImage();
String imageName = image.getImageNameDisp();
List<InstanceParameter> parameters = new ArrayList<InstanceParameter>();
// 共通
String captionCommon = ViewProperties.getCaption("param.instance.common");
parameters.add(new InstanceParameter(captionCommon, ViewProperties.getCaption("param.instance.name"), instance
.getInstanceName()));
parameters.add(new InstanceParameter(captionCommon, ViewProperties.getCaption("param.instance.hostName"),
instance.getFqdn()));
parameters.add(new InstanceParameter(captionCommon, ViewProperties.getCaption("param.instance.comment"),
instance.getComment()));
Boolean showPublicIp = BooleanUtils.toBooleanObject(Config.getProperty("ui.showPublicIp"));
if (BooleanUtils.isTrue(showPublicIp)) {
//ui.showPublicIp = true の場合IPアドレスにPublicIp、内部IPにPrivateIpを表示
parameters.add(new InstanceParameter(captionCommon, ViewProperties.getCaption("param.instance.ipAddress"),
instance.getPublicIp()));
parameters.add(new InstanceParameter(captionCommon, ViewProperties
.getCaption("param.instance.privateIpAddress"), instance.getPrivateIp()));
} else {
//ui.showPublicIp = false の場合 IPアドレスにPrivateIp、内部IPにPublicIpを表示
parameters.add(new InstanceParameter(captionCommon, ViewProperties.getCaption("param.instance.ipAddress"),
instance.getPrivateIp()));
parameters.add(new InstanceParameter(captionCommon, ViewProperties
.getCaption("param.instance.privateIpAddress"), instance.getPublicIp()));
}
parameters.add(new InstanceParameter(captionCommon, ViewProperties.getCaption("param.instance.platform"),
platformName));
parameters.add(new InstanceParameter(captionCommon, ViewProperties.getCaption("param.instance.image"),
imageName));
// AWS
if (PCCConstant.PLATFORM_TYPE_AWS.equals(platform.getPlatformType()) && awsInstance != null) {
String kind = platform.getPlatformSimplenameDisp();
String elasticIp = null;
if (instanceDto.getAwsAddress() != null) {
elasticIp = instanceDto.getAwsAddress().getPublicIp();
}
parameters
.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.elasticIp"), elasticIp));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.dnsName"), awsInstance
.getDnsName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.privateDns"),
awsInstance.getPrivateDnsName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceId"),
awsInstance.getInstanceId()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.keyPair"), awsInstance
.getKeyName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceType"),
awsInstance.getInstanceType()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.securityGroup"),
awsInstance.getSecurityGroups()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.availabilityZone"),
awsInstance.getAvailabilityZone()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.subnetId"),
awsInstance.getSubnetId()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.rootSize"),
ObjectUtils.toString(awsInstance.getRootSize(), "")));
}
// Vmware
else if (PCCConstant.PLATFORM_TYPE_VMWARE.equals(platform.getPlatformType()) && vmwareInstance != null) {
String kind = platform.getPlatformSimplenameDisp();
String keyName = null;
if (instanceDto.getVmwareKeyPair() != null) {
keyName = instanceDto.getVmwareKeyPair().getKeyName();
}
String staticIp = "";
VmwareAddress vmwareAddress = instanceDto.getVmwareAddress();
if (vmwareAddress != null && BooleanUtils.isTrue(instanceDto.getVmwareAddress().getEnabled())) {
staticIp = instanceDto.getVmwareAddress().getIpAddress();
}
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.staticIp"), staticIp));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.machineName"),
vmwareInstance.getMachineName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.keyPair"), keyName));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceType"),
vmwareInstance.getInstanceType()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.cluster"),
vmwareInstance.getComputeResource()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.resourcePool"),
vmwareInstance.getResourcePool()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.datastore"),
vmwareInstance.getDatastore()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.rootSize"),
ObjectUtils.toString(vmwareInstance.getRootSize(), "")));
}
// Nifty
else if (PCCConstant.PLATFORM_TYPE_NIFTY.equals(platform.getPlatformType()) && niftyInstance != null) {
String kind = platform.getPlatformSimplenameDisp();
String keyName = null;
if (instanceDto.getNiftyKeyPair() != null) {
keyName = instanceDto.getNiftyKeyPair().getKeyName();
}
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceId"),
niftyInstance.getInstanceId()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.keyPair"), keyName));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceType"),
niftyInstance.getInstanceType()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.publicIp"),
niftyInstance.getIpAddress()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.privateIp"),
niftyInstance.getPrivateIpAddress()));
}
// CloudStack
else if (PCCConstant.PLATFORM_TYPE_CLOUDSTACK.equals(platform.getPlatformType()) && cloudStackInstance != null) {
String kind = platform.getPlatformSimplenameDisp();
String elasticIp = null;
if (instanceDto.getCloudstackAddress() != null) {
elasticIp = instanceDto.getCloudstackAddress().getIpaddress();
}
parameters
.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.elasticIp"), elasticIp));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.machineName"),
cloudStackInstance.getDisplayname()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceId"),
cloudStackInstance.getInstanceId()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.keyPair"),
cloudStackInstance.getKeyName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceType"),
cloudStackInstance.getInstanceType()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.securityGroup"),
cloudStackInstance.getSecuritygroup()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.zoneId"),
cloudStackInstance.getZoneid()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.networkId"),
cloudStackInstance.getNetworkid()));
}
// VCloud
else if (PCCConstant.PLATFORM_TYPE_VCLOUD.equals(platform.getPlatformType()) && vcloudInstance != null) {
String kind = platform.getPlatformSimplenameDisp();
PlatformVcloud platformVcloud = instanceDto.getPlatform().getPlatformVcloud();
List<VcloudInstanceNetwork> vcloudInstanceNetworks = instanceDto.getVcloudInstanceNetworks();
String keyName = null;
if (instanceDto.getVcloudKeyPair() != null) {
keyName = instanceDto.getVcloudKeyPair().getKeyName();
}
String storageTypeName = null;
if (instanceDto.getPlatformVcloudStorageType() != null) {
storageTypeName = instanceDto.getPlatformVcloudStorageType().getStorageTypeName();
}
for (VcloudInstanceNetwork vcloudInstanceNetwork : vcloudInstanceNetworks) {
String ipStr = vcloudInstanceNetwork.getNetworkName();
if (StringUtils.isNotEmpty(vcloudInstanceNetwork.getIpAddress())) {
ipStr = ipStr + " (IP:" + vcloudInstanceNetwork.getIpAddress() + ")";
}
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.network"), ipStr));
}
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.machineName"),
vcloudInstance.getVmName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.keyPair"), keyName));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceType"),
vcloudInstance.getInstanceType()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.organization"),
platformVcloud.getOrgName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.vdc"), platformVcloud
.getVdcName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.storageType"),
storageTypeName));
}
// Azure
else if (PCCConstant.PLATFORM_TYPE_AZURE.equals(platform.getPlatformType()) && azureInstance != null) {
String kind = platform.getPlatformSimplenameDisp();
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.machineName"),
azureInstance.getInstanceName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.affinityGroup"),
azureInstance.getAffinityGroupName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.cloudService"),
azureInstance.getCloudServiceName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.networkName"),
azureInstance.getNetworkName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.storageAccount"),
azureInstance.getStorageAccountName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceType"),
azureInstance.getInstanceType()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.availabilitySet"),
azureInstance.getAvailabilitySet()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.subnetName"),
azureInstance.getSubnetId()));
}
// OpenStack
else if (PCCConstant.PLATFORM_TYPE_OPENSTACK.equals(platform.getPlatformType())) {
String kind = platform.getPlatformSimplenameDisp();
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.availabilityZone"),
openstackInstance.getAvailabilityZone()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.instanceType"),
openstackInstance.getInstanceType()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.keyPair"),
openstackInstance.getKeyName()));
parameters.add(new InstanceParameter(kind, ViewProperties.getCaption("param.instance.securityGroup"),
openstackInstance.getSecurityGroups()));
}
for (InstanceParameter parameter : parameters) {
addItem(parameter);
}
}
}