/* * 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.api; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Context; import jp.primecloud.auto.api.util.BeanContext; import jp.primecloud.auto.common.log.LoggingUtils; import jp.primecloud.auto.dao.crud.ApiCertificateDao; import jp.primecloud.auto.dao.crud.AwsAddressDao; import jp.primecloud.auto.dao.crud.AwsCertificateDao; import jp.primecloud.auto.dao.crud.AwsInstanceDao; import jp.primecloud.auto.dao.crud.AwsLoadBalancerDao; import jp.primecloud.auto.dao.crud.AwsSnapshotDao; import jp.primecloud.auto.dao.crud.AwsSslKeyDao; import jp.primecloud.auto.dao.crud.AwsVolumeDao; import jp.primecloud.auto.dao.crud.AzureInstanceDao; import jp.primecloud.auto.dao.crud.CloudstackAddressDao; import jp.primecloud.auto.dao.crud.CloudstackCertificateDao; import jp.primecloud.auto.dao.crud.CloudstackInstanceDao; import jp.primecloud.auto.dao.crud.CloudstackLoadBalancerDao; import jp.primecloud.auto.dao.crud.CloudstackSnapshotDao; import jp.primecloud.auto.dao.crud.CloudstackVolumeDao; import jp.primecloud.auto.dao.crud.ComponentConfigDao; import jp.primecloud.auto.dao.crud.ComponentDao; import jp.primecloud.auto.dao.crud.ComponentInstanceDao; import jp.primecloud.auto.dao.crud.ComponentLoadBalancerDao; import jp.primecloud.auto.dao.crud.ComponentTypeDao; import jp.primecloud.auto.dao.crud.FarmDao; import jp.primecloud.auto.dao.crud.ImageAwsDao; import jp.primecloud.auto.dao.crud.ImageAzureDao; import jp.primecloud.auto.dao.crud.ImageCloudstackDao; import jp.primecloud.auto.dao.crud.ImageDao; import jp.primecloud.auto.dao.crud.ImageNiftyDao; import jp.primecloud.auto.dao.crud.ImageOpenstackDao; import jp.primecloud.auto.dao.crud.ImageVcloudDao; import jp.primecloud.auto.dao.crud.ImageVmwareDao; import jp.primecloud.auto.dao.crud.InstanceConfigDao; import jp.primecloud.auto.dao.crud.InstanceDao; import jp.primecloud.auto.dao.crud.LoadBalancerDao; import jp.primecloud.auto.dao.crud.LoadBalancerHealthCheckDao; import jp.primecloud.auto.dao.crud.LoadBalancerInstanceDao; import jp.primecloud.auto.dao.crud.LoadBalancerListenerDao; import jp.primecloud.auto.dao.crud.NiftyCertificateDao; import jp.primecloud.auto.dao.crud.NiftyInstanceDao; import jp.primecloud.auto.dao.crud.NiftyKeyPairDao; import jp.primecloud.auto.dao.crud.OpenstackInstanceDao; import jp.primecloud.auto.dao.crud.PccSystemInfoDao; import jp.primecloud.auto.dao.crud.PlatformAwsDao; import jp.primecloud.auto.dao.crud.PlatformAzureDao; import jp.primecloud.auto.dao.crud.PlatformCloudstackDao; import jp.primecloud.auto.dao.crud.PlatformDao; import jp.primecloud.auto.dao.crud.PlatformNiftyDao; import jp.primecloud.auto.dao.crud.PlatformOpenstackDao; import jp.primecloud.auto.dao.crud.PlatformVcloudDao; import jp.primecloud.auto.dao.crud.PlatformVcloudInstanceTypeDao; import jp.primecloud.auto.dao.crud.PlatformVcloudStorageTypeDao; import jp.primecloud.auto.dao.crud.PlatformVmwareDao; import jp.primecloud.auto.dao.crud.PlatformVmwareInstanceTypeDao; import jp.primecloud.auto.dao.crud.ProxyDao; import jp.primecloud.auto.dao.crud.PuppetInstanceDao; import jp.primecloud.auto.dao.crud.TemplateComponentDao; import jp.primecloud.auto.dao.crud.TemplateDao; import jp.primecloud.auto.dao.crud.TemplateInstanceDao; import jp.primecloud.auto.dao.crud.UserDao; import jp.primecloud.auto.dao.crud.VcloudDiskDao; import jp.primecloud.auto.dao.crud.VcloudInstanceDao; import jp.primecloud.auto.dao.crud.VcloudInstanceNetworkDao; import jp.primecloud.auto.dao.crud.VcloudKeyPairDao; import jp.primecloud.auto.dao.crud.VmwareAddressDao; import jp.primecloud.auto.dao.crud.VmwareDiskDao; import jp.primecloud.auto.dao.crud.VmwareInstanceDao; import jp.primecloud.auto.dao.crud.VmwareKeyPairDao; import jp.primecloud.auto.dao.crud.VmwareNetworkDao; import jp.primecloud.auto.dao.crud.ZabbixDataDao; import jp.primecloud.auto.dao.crud.ZabbixInstanceDao; import jp.primecloud.auto.entity.crud.Component; import jp.primecloud.auto.entity.crud.Farm; import jp.primecloud.auto.entity.crud.Instance; import jp.primecloud.auto.entity.crud.LoadBalancer; import jp.primecloud.auto.entity.crud.User; import jp.primecloud.auto.exception.AutoApplicationException; import jp.primecloud.auto.log.service.EventLogService; import jp.primecloud.auto.process.aws.AwsAddressProcess; import jp.primecloud.auto.process.aws.AwsProcessClientFactory; import jp.primecloud.auto.service.AwsDescribeService; import jp.primecloud.auto.service.ComponentService; import jp.primecloud.auto.service.FarmService; import jp.primecloud.auto.service.IaasDescribeService; import jp.primecloud.auto.service.InstanceService; import jp.primecloud.auto.service.LoadBalancerService; import jp.primecloud.auto.service.NiftyDescribeService; import jp.primecloud.auto.service.PlatformService; import jp.primecloud.auto.service.ProcessService; import jp.primecloud.auto.service.TemplateService; import jp.primecloud.auto.service.UserService; import jp.primecloud.auto.service.VmwareDescribeService; import org.apache.commons.lang.BooleanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class ApiSupport extends ApiConstants { protected Log log = LogFactory.getLog(getClass()); @Context protected HttpServletRequest request; protected User checkAndGetUser() { User user = (User) request.getAttribute(PARAM_NAME_USER); return user; } protected User checkAndGetUser(Farm farm) { User user = checkAndGetUser(); if (!user.getUserNo().equals(farm.getUserNo())) { // ファームを操作する権限がない場合 throw new AutoApplicationException("EAPI-100042", farm.getFarmNo()); } LoggingUtils.setFarmNo(farm.getFarmNo()); LoggingUtils.setFarmName(farm.getFarmName()); return user; } protected User checkAndGetUser(Instance instance) { Farm farm = farmDao.read(instance.getFarmNo()); try { User user = checkAndGetUser(farm); LoggingUtils.setInstanceNo(instance.getInstanceNo()); LoggingUtils.setInstanceName(instance.getInstanceName()); return user; } catch (AutoApplicationException e) { // インスタンスを操作する権限がない場合 throw new AutoApplicationException("EAPI-100043", instance.getInstanceNo()); } } protected User checkAndGetUser(Component component) { Farm farm = farmDao.read(component.getFarmNo()); try { User user = checkAndGetUser(farm); LoggingUtils.setComponentNo(component.getComponentNo()); LoggingUtils.setComponentName(component.getComponentName()); return user; } catch (AutoApplicationException e) { // コンポーネントを操作する権限がない場合 throw new AutoApplicationException("EAPI-100044", component.getComponentNo()); } } protected User checkAndGetUser(LoadBalancer loadBalancer) { Farm farm = farmDao.read(loadBalancer.getFarmNo()); try { User user = checkAndGetUser(farm); return user; } catch (AutoApplicationException e) { // ロードバランサを操作する権限がない場合 throw new AutoApplicationException("EAPI-100045", loadBalancer.getLoadBalancerNo()); } } protected Farm getFarm(Long farmNo) { Farm farm = farmDao.read(farmNo); // ファームが存在しない if (farm == null) { throw new AutoApplicationException("EAPI-100000", "Farm", PARAM_NAME_FARM_NO, farmNo); } return farm; } protected Instance getInstance(Long instanceNo) { Instance instance = instanceDao.read(instanceNo); // インスタンスが存在しない if (instance == null) { throw new AutoApplicationException("EAPI-100000", "Instance", PARAM_NAME_INSTANCE_NO, instanceNo); } // インスタンスがロードバランサ if (BooleanUtils.isTrue(instance.getLoadBalancer())) { throw new AutoApplicationException("EAPI-100000", "Instance", PARAM_NAME_INSTANCE_NO, instanceNo); } return instance; } protected Component getComponent(Long componentNo) { Component component = componentDao.read(componentNo); // コンポーネントが存在しない if (component == null) { throw new AutoApplicationException("EAPI-100000", "Component", PARAM_NAME_COMPONENT_NO, componentNo); } // コンポーネントがロードバランサ if (BooleanUtils.isTrue(component.getLoadBalancer())) { throw new AutoApplicationException("EAPI-100000", "Component", PARAM_NAME_COMPONENT_NO, componentNo); } return component; } protected LoadBalancer getLoadBalancer(Long loadBalancerNo) { LoadBalancer loadBalancer = loadBalancerDao.read(loadBalancerNo); // ロードバランサが存在しない if (loadBalancer == null) { throw new AutoApplicationException("EAPI-100000", "LoadBalancer", PARAM_NAME_LOAD_BALANCER_NO, loadBalancerNo); } return loadBalancer; } //auto-data protected ApiCertificateDao apiCertificateDao = BeanContext.getBean(ApiCertificateDao.class); protected AwsAddressDao awsAddressDao = BeanContext.getBean(AwsAddressDao.class); protected AwsCertificateDao awsCertificateDao = BeanContext.getBean(AwsCertificateDao.class); protected AwsInstanceDao awsInstanceDao = BeanContext.getBean(AwsInstanceDao.class); protected AwsLoadBalancerDao awsLoadBalancerDao = BeanContext.getBean(AwsLoadBalancerDao.class); protected AwsSnapshotDao awsSnapshotDao = BeanContext.getBean(AwsSnapshotDao.class); protected AwsVolumeDao awsVolumeDao = BeanContext.getBean(AwsVolumeDao.class); protected AzureInstanceDao azureInstanceDao = BeanContext.getBean(AzureInstanceDao.class); protected CloudstackAddressDao cloudstackAddressDao = BeanContext.getBean(CloudstackAddressDao.class); protected CloudstackCertificateDao cloudstackCertificateDao = BeanContext.getBean(CloudstackCertificateDao.class); protected CloudstackInstanceDao cloudstackInstanceDao = BeanContext.getBean(CloudstackInstanceDao.class); protected CloudstackLoadBalancerDao cloudstackLoadBalancerDao = BeanContext .getBean(CloudstackLoadBalancerDao.class); protected CloudstackSnapshotDao cloudstackSnapshotDao = BeanContext.getBean(CloudstackSnapshotDao.class); protected CloudstackVolumeDao cloudstackVolumeDao = BeanContext.getBean(CloudstackVolumeDao.class); protected ComponentDao componentDao = BeanContext.getBean(ComponentDao.class); protected ComponentConfigDao componentConfigDao = BeanContext.getBean(ComponentConfigDao.class); protected ComponentInstanceDao componentInstanceDao = BeanContext.getBean(ComponentInstanceDao.class); protected ComponentLoadBalancerDao componentLoadBalancerDao = BeanContext.getBean(ComponentLoadBalancerDao.class); protected ComponentTypeDao componentTypeDao = BeanContext.getBean(ComponentTypeDao.class); protected FarmDao farmDao = BeanContext.getBean(FarmDao.class); protected ImageDao imageDao = BeanContext.getBean(ImageDao.class); protected ImageAwsDao imageAwsDao = BeanContext.getBean(ImageAwsDao.class); protected ImageCloudstackDao imageCloudstackDao = BeanContext.getBean(ImageCloudstackDao.class); protected ImageNiftyDao imageNiftyDao = BeanContext.getBean(ImageNiftyDao.class); protected ImageVcloudDao imageVcloudDao = BeanContext.getBean(ImageVcloudDao.class); protected ImageVmwareDao imageVmwareDao = BeanContext.getBean(ImageVmwareDao.class); protected ImageOpenstackDao imageOpenstackDao = BeanContext.getBean(ImageOpenstackDao.class); protected ImageAzureDao imageAzureDao = BeanContext.getBean(ImageAzureDao.class); protected InstanceDao instanceDao = BeanContext.getBean(InstanceDao.class); protected InstanceConfigDao instanceConfigDao = BeanContext.getBean(InstanceConfigDao.class); protected LoadBalancerDao loadBalancerDao = BeanContext.getBean(LoadBalancerDao.class); protected LoadBalancerHealthCheckDao loadBalancerHealthCheckDao = BeanContext .getBean(LoadBalancerHealthCheckDao.class); protected LoadBalancerInstanceDao loadBalancerInstanceDao = BeanContext.getBean(LoadBalancerInstanceDao.class); protected LoadBalancerListenerDao loadBalancerListenerDao = BeanContext.getBean(LoadBalancerListenerDao.class); protected NiftyCertificateDao niftyCertificateDao = BeanContext.getBean(NiftyCertificateDao.class); protected NiftyInstanceDao niftyInstanceDao = BeanContext.getBean(NiftyInstanceDao.class); protected NiftyKeyPairDao niftyKeyPairDao = BeanContext.getBean(NiftyKeyPairDao.class); protected OpenstackInstanceDao openstackInstanceDao = BeanContext.getBean(OpenstackInstanceDao.class); protected PccSystemInfoDao pccSystemInfoDao = BeanContext.getBean(PccSystemInfoDao.class); protected PlatformDao platformDao = BeanContext.getBean(PlatformDao.class); protected PlatformAwsDao platformAwsDao = BeanContext.getBean(PlatformAwsDao.class); protected PlatformCloudstackDao platformCloudstackDao = BeanContext.getBean(PlatformCloudstackDao.class); protected PlatformNiftyDao platformNiftyDao = BeanContext.getBean(PlatformNiftyDao.class); protected PlatformVcloudDao platformVcloudDao = BeanContext.getBean(PlatformVcloudDao.class); protected PlatformVcloudInstanceTypeDao platformVcloudInstanceTypeDao = BeanContext .getBean(PlatformVcloudInstanceTypeDao.class); protected PlatformVcloudStorageTypeDao platformVcloudStorageTypeDao = BeanContext .getBean(PlatformVcloudStorageTypeDao.class); protected PlatformVmwareDao platformVmwareDao = BeanContext.getBean(PlatformVmwareDao.class); protected PlatformVmwareInstanceTypeDao platformVmwareInstanceTypeDao = BeanContext .getBean(PlatformVmwareInstanceTypeDao.class); protected PlatformOpenstackDao platformOpenstackDao = BeanContext.getBean(PlatformOpenstackDao.class); protected PlatformAzureDao platformAzureDao = BeanContext.getBean(PlatformAzureDao.class); protected ProxyDao proxyDao = BeanContext.getBean(ProxyDao.class); protected PuppetInstanceDao puppetInstanceDao = BeanContext.getBean(PuppetInstanceDao.class); protected TemplateDao templateDao = BeanContext.getBean(TemplateDao.class); protected TemplateComponentDao templateComponentDao = BeanContext.getBean(TemplateComponentDao.class); protected TemplateInstanceDao templateInstanceDao = BeanContext.getBean(TemplateInstanceDao.class); protected UserDao userDao = BeanContext.getBean(UserDao.class); protected VcloudDiskDao vcloudDiskDao = BeanContext.getBean(VcloudDiskDao.class); protected VcloudInstanceDao vcloudInstanceDao = BeanContext.getBean(VcloudInstanceDao.class); protected VcloudKeyPairDao vcloudKeyPairDao = BeanContext.getBean(VcloudKeyPairDao.class); protected VcloudInstanceNetworkDao vcloudInstanceNetworkDao = BeanContext.getBean(VcloudInstanceNetworkDao.class); protected VmwareAddressDao vmwareAddressDao = BeanContext.getBean(VmwareAddressDao.class); protected VmwareDiskDao vmwareDiskDao = BeanContext.getBean(VmwareDiskDao.class); protected VmwareInstanceDao vmwareInstanceDao = BeanContext.getBean(VmwareInstanceDao.class); protected VmwareKeyPairDao vmwareKeyPairDao = BeanContext.getBean(VmwareKeyPairDao.class); protected VmwareNetworkDao vmwareNetworkDao = BeanContext.getBean(VmwareNetworkDao.class); protected ZabbixDataDao zabbixDataDao = BeanContext.getBean(ZabbixDataDao.class); protected ZabbixInstanceDao zabbixInstanceDao = BeanContext.getBean(ZabbixInstanceDao.class); protected AwsSslKeyDao awsSslKeyDao = BeanContext.getBean(AwsSslKeyDao.class); //auto-process protected AwsProcessClientFactory awsProcessClientFactory = BeanContext.getBean(AwsProcessClientFactory.class); protected AwsAddressProcess awsAddressProcess = BeanContext.getBean(AwsAddressProcess.class); //auto-service protected FarmService farmService = BeanContext.getBean(FarmService.class); protected InstanceService instanceService = BeanContext.getBean(InstanceService.class); protected ComponentService componentService = BeanContext.getBean(ComponentService.class); protected LoadBalancerService loadBalancerService = BeanContext.getBean(LoadBalancerService.class); protected TemplateService templateService = BeanContext.getBean(TemplateService.class); protected IaasDescribeService iaasDescribeService = BeanContext.getBean(IaasDescribeService.class); protected VmwareDescribeService vmwareDescribeService = BeanContext.getBean(VmwareDescribeService.class); protected NiftyDescribeService niftyDescribeService = BeanContext.getBean(NiftyDescribeService.class); protected ProcessService processService = BeanContext.getBean(ProcessService.class); protected EventLogService eventLogService = BeanContext.getBean(EventLogService.class); protected PlatformService platformService = BeanContext.getBean(PlatformService.class); protected UserService userService = BeanContext.getBean(UserService.class); protected AwsDescribeService awsDescribeService = BeanContext.getBean(AwsDescribeService.class); }