/** * Abiquo community edition * cloud management application for hybrid clouds * Copyright (C) 2008-2010 - Abiquo Holdings S.L. * * This application is free software; you can redistribute it and/or * modify it under the terms of the GNU LESSER GENERAL PUBLIC * LICENSE as published by the Free Software Foundation under * version 3 of the License * * This software 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 * LESSER GENERAL PUBLIC LICENSE v.3 for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ package com.abiquo.abiserver.commands.impl; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.abiquo.abiserver.commands.BasicCommand; import com.abiquo.abiserver.commands.ConfigurationCommand; import com.abiquo.abiserver.listener.ProxyContextLoaderListener; import com.abiquo.abiserver.pojo.result.BasicResult; import com.abiquo.abiserver.pojo.result.DataResult; import com.abiquo.heartbeat.client.services.HeartbeatClient; import com.abiquo.heartbeat.client.services.RegistrationClient; import com.abiquo.heartbeat.client.services.impl.HeartbeatClientImpl; import com.abiquo.heartbeat.client.services.impl.RegistrationClientImpl; import com.abiquo.heartbeat.shared.dto.HeartbeatDTO; import com.abiquo.heartbeat.shared.dto.RegisterDTO; import com.abiquo.heartbeat.shared.dto.RegisterResponse; import com.abiquo.heartbeat.shared.exceptions.HeartbeatException; public class ConfigurationCommandImpl extends BasicCommand implements ConfigurationCommand { private static final Logger logger = LoggerFactory.getLogger(ConfigurationCommandImpl.class); private final HeartbeatClient heartbeat; private final RegistrationClient register; public ConfigurationCommandImpl() { heartbeat = ProxyContextLoaderListener.getCtx().getBean(HeartbeatClientImpl.class); register = ProxyContextLoaderListener.getCtx().getBean(RegistrationClientImpl.class); } // ////////////////////////////////////////////////////////////// // REGISTRATION /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#setRegistrationStatusNo() */ @Override public BasicResult setRegistrationStatusNo() { register.setStatusNo(); BasicResult basicResult = new BasicResult(); basicResult.setSuccess(true); return basicResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#setRegistrationStatusLater() */ @Override public BasicResult setRegistrationStatusLater() { register.setStatusLater(); BasicResult basicResult = new BasicResult(); basicResult.setSuccess(true); return basicResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#mustShowRegistrationReminder() */ @Override public BasicResult mustShowRegistrationReminder() { boolean showRegister = register.isRegistrationReminderTimeout(); DataResult<Boolean> dataResult = new DataResult<Boolean>(); dataResult.setData(showRegister); dataResult.setSuccess(true); return dataResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#getRegistrationData() */ @Override public BasicResult getRegistrationData() { DataResult<RegisterDTO> dataResult = new DataResult<RegisterDTO>(); RegisterDTO data = null; try { data = register.getData(); } catch (Exception e) { logger.warn("error retrieving registration data", e); } dataResult.setData(data); dataResult.setSuccess(true); return dataResult; } /* * (non-Javadoc) * @see * com.abiquo.abiserver.commands.ConfigurationComman#setRegistrationData(com.abiquo.heartbeat * .shared.dto.RegisterDTO) */ @Override public DataResult<RegisterDTO> setRegistrationData(final RegisterDTO registrationData) { DataResult<RegisterDTO> dataResult = new DataResult<RegisterDTO>(); try { RegisterResponse registerResponse = register.send(registrationData); dataResult.setData(registerResponse.getRegisterDTO()); dataResult.setSuccess(true); } catch (Exception e) { dataResult.setSuccess(false); dataResult .setMessage("Connection refused: unabled to connect to the configuration server"); logger.error("error sending the registration data", e); } return dataResult; } // ////////////////////////////////////////////////////////////// // HEARTBEAT /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#mustShowHeartbeatReminder() */ @Override public BasicResult mustShowHeartbeatReminder() { DataResult<Boolean> dataResult = new DataResult<Boolean>(); boolean showHeartbeat = heartbeat.isConfigurationTimeout(); dataResult.setData(showHeartbeat); dataResult.setSuccess(true); return dataResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#isHeartbeatEnabled() */ @Override public BasicResult isHeartbeatEnabled() { DataResult<Boolean> dataResult = new DataResult<Boolean>(); dataResult.setData(heartbeat.isConfigured()); dataResult.setSuccess(true); return dataResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#setHeartbeatStatusNo() */ @Override public BasicResult setHeartbeatStatusNo() { BasicResult basicResult = new BasicResult(); heartbeat.setStatusNo(); basicResult.setSuccess(true); return basicResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#setHeartbeatStatusLater() */ @Override public BasicResult setHeartbeatStatusLater() { BasicResult basicResult = new BasicResult(); heartbeat.setStatusLater(); basicResult.setSuccess(true); return basicResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#enableHeartbeat() */ @Override public BasicResult enableHeartbeat() { BasicResult basicResult = new BasicResult(); try { heartbeat.setStatusYes(); basicResult = getLastHeartbeat(); } catch (Exception e) { basicResult.setSuccess(false); basicResult .setMessage("Connection refused: unabled to connect to the configuration server"); logger.error("error activating the heartbeat", e); } return basicResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#disableHeartbeat() */ @Override public BasicResult disableHeartbeat() { BasicResult basicResult = new BasicResult(); try { heartbeat.setStatusNo(); heartbeat.stopHeartbeat(); basicResult.setSuccess(true); } catch (Exception e) { basicResult.setSuccess(false); basicResult .setMessage("Connection refused: unabled to connect to the configuration server"); logger.error("error setting the heartbeating data", e); } return basicResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#getLastHeartbeat() */ @Override public BasicResult getLastHeartbeat() { DataResult<HeartbeatDTO> basicResult = new DataResult<HeartbeatDTO>(); try { if (!heartbeat.isConfigured()) { basicResult.setSuccess(false); basicResult.setMessage("Connection refused: Heartbeat is not configured"); logger.error("error getting the heartbeating data"); } else { heartbeat.send(); HeartbeatDTO data = heartbeat.getLast(); basicResult.setSuccess(true); basicResult.setData(data); } } catch (HeartbeatException e) { basicResult.setSuccess(false); basicResult .setMessage("Connection refused: unabled to connect to the configuration server"); logger.error("error sending the heartbeating data", "Heartbeat not enabled"); } return basicResult; } /* * (non-Javadoc) * @see com.abiquo.abiserver.commands.ConfigurationComman#getLastHeartbeat(java.lang.Integer) */ @Override public BasicResult getLastHeartbeat(final Integer rows) { DataResult<List<HeartbeatDTO>> dataResult = new DataResult<List<HeartbeatDTO>>(); try { if (!heartbeat.isConfigured()) { dataResult.setSuccess(false); dataResult.setMessage("Connection refused: Heartbeat is not configured"); logger.error("error getting the heartbeating data", "Heartbeat not enabled"); } else { List<HeartbeatDTO> data = heartbeat.getLast(rows); if (data != null && !data.isEmpty()) { dataResult.setData(data); dataResult.setSuccess(true); } } } catch (Exception e) { dataResult.setSuccess(false); dataResult .setMessage("Connection refused: unabled to connect to the configuration server"); logger.error("error getting the heartbeating data", e); } return dataResult; } }