jp.primecloud.auto.process.InstancesProcess.java Source code

Java tutorial

Introduction

Here is the source code for jp.primecloud.auto.process.InstancesProcess.java

Source

/*
 * 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.process;

import java.util.ArrayList;
import java.util.List;

import jp.primecloud.auto.common.status.InstanceCoodinateStatus;
import jp.primecloud.auto.common.status.InstanceStatus;
import jp.primecloud.auto.entity.crud.Farm;
import jp.primecloud.auto.entity.crud.Instance;
import jp.primecloud.auto.log.EventLogger;
import jp.primecloud.auto.service.ServiceSupport;
import jp.primecloud.auto.util.MessageUtils;

import org.apache.commons.lang.BooleanUtils;

import jp.primecloud.auto.process.puppet.PuppetNodesProcess;

/**
 * <p>
 * TODO: 
 * </p>
 *
 */
public class InstancesProcess extends ServiceSupport {

    protected PuppetNodesProcess puppetNodesProcess;

    protected ProcessLogger processLogger;

    protected EventLogger eventLogger;

    public void start(Long farmNo) {
        Farm farm = farmDao.read(farmNo);
        if (BooleanUtils.isTrue(farm.getComponentProcessing())) {
            // ??????????
            if (log.isDebugEnabled()) {
                String message = MessageUtils.format("Component is being configured.(farmNo={0})", farmNo);
                log.debug(message);
            }
            return;
        }

        if (log.isInfoEnabled()) {
            log.info(MessageUtils.getMessage("IPROCESS-100021", farmNo));
        }

        // 
        farm.setComponentProcessing(true);
        farmDao.update(farm);

        //
        processLogger.writeLogSupport(ProcessLogger.LOG_DEBUG, null, null, "InstanceCoordinate", null);

        try {
            // ????
            List<Long> startInstanceNos = new ArrayList<Long>();
            List<Instance> allInstances = instanceDao.readByFarmNo(farmNo);
            for (Instance instance : allInstances) {
                // ????????????????????
                if (InstanceStatus.fromStatus(instance.getStatus()) == InstanceStatus.RUNNING) {
                    if (BooleanUtils.isTrue(instance.getEnabled()) || InstanceCoodinateStatus
                            .fromStatus(instance.getCoodinateStatus()) == InstanceCoodinateStatus.COODINATED) {
                        startInstanceNos.add(instance.getInstanceNo());
                    }
                }
            }

            InstancesProcessContext context = new InstancesProcessContext();
            context.setFarmNo(farmNo);
            context.setStartInstanceNos(startInstanceNos);

            // ??
            puppetNodesProcess.configureNodes(context);

        } finally {
            // 
            farm = farmDao.read(farmNo);
            farm.setComponentProcessing(false);
            farmDao.update(farm);
        }

        //
        processLogger.writeLogSupport(ProcessLogger.LOG_DEBUG, null, null, "InstanceCoordinateFinish", null);

        if (log.isInfoEnabled()) {
            log.info(MessageUtils.getMessage("IPROCESS-100022", farmNo));
        }
    }

    public void stop(Long farmNo) {
        Farm farm = farmDao.read(farmNo);
        if (BooleanUtils.isTrue(farm.getComponentProcessing())) {
            // ??????????
            if (log.isDebugEnabled()) {
                String message = MessageUtils.format("Component is being configured.(farmNo={0})", farmNo);
                log.debug(message);
            }
            return;
        }

        if (log.isInfoEnabled()) {
            log.info(MessageUtils.getMessage("IPROCESS-100021", farmNo));
        }

        // 
        farm.setComponentProcessing(true);
        farmDao.update(farm);

        //
        processLogger.writeLogSupport(ProcessLogger.LOG_DEBUG, null, null, "InstanceCoordinate", null);

        try {
            // ????
            List<Long> startInstanceNos = new ArrayList<Long>();
            List<Long> stopInstanceNos = new ArrayList<Long>();
            List<Instance> allInstances = instanceDao.readByFarmNo(farmNo);
            for (Instance instance : allInstances) {
                // ???????????????????
                if (InstanceStatus.fromStatus(instance.getStatus()) == InstanceStatus.RUNNING) {
                    if (BooleanUtils.isTrue(instance.getEnabled())) {
                        startInstanceNos.add(instance.getInstanceNo());
                    } else if (InstanceCoodinateStatus
                            .fromStatus(instance.getCoodinateStatus()) == InstanceCoodinateStatus.COODINATED) {
                        stopInstanceNos.add(instance.getInstanceNo());
                    }
                }
            }

            InstancesProcessContext context = new InstancesProcessContext();
            context.setFarmNo(farmNo);
            context.setStartInstanceNos(startInstanceNos);
            context.setStopInstanceNos(stopInstanceNos);

            // ??
            puppetNodesProcess.configureNodes(context);

        } finally {
            // 
            farm = farmDao.read(farmNo);
            farm.setComponentProcessing(false);
            farmDao.update(farm);
        }

        //
        processLogger.writeLogSupport(ProcessLogger.LOG_DEBUG, null, null, "InstanceCoordinateFinish", null);

        if (log.isInfoEnabled()) {
            log.info(MessageUtils.getMessage("IPROCESS-100022", farmNo));
        }
    }

    /**
     * puppetNodesProcess???
     *
     * @param puppetNodesProcess puppetNodesProcess
     */
    public void setPuppetNodesProcess(PuppetNodesProcess puppetNodesProcess) {
        this.puppetNodesProcess = puppetNodesProcess;
    }

    /**
     * processLogger???
     *
     * @param processLogger processLogger
     */
    public void setProcessLogger(ProcessLogger processLogger) {
        this.processLogger = processLogger;
    }

    /**
     * eventLogger???
     *
     * @param eventLogger eventLogger
     */
    public void setEventLogger(EventLogger eventLogger) {
        this.eventLogger = eventLogger;
    }

}