/** * Copyright (c) 2015 INRIA. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * - Fawaz PARAISO */ package org.occiware.clouddesigner.occi.cloud.connector; import com.google.common.base.Objects; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.util.EList; import org.jclouds.compute.domain.NodeMetadata; import org.occiware.clouddesigner.occi.Configuration; import org.occiware.clouddesigner.occi.Resource; import org.occiware.clouddesigner.occi.cloud.Machine; import org.occiware.clouddesigner.occi.cloud.Machine_Amazon_EC2; import org.occiware.clouddesigner.occi.cloud.Machine_CloudSigma; import org.occiware.clouddesigner.occi.cloud.Machine_GCE; import org.occiware.clouddesigner.occi.cloud.Machine_Gogrid; import org.occiware.clouddesigner.occi.cloud.Machine_Hp_Helion; import org.occiware.clouddesigner.occi.cloud.Machine_OpenStack; import org.occiware.clouddesigner.occi.cloud.Machine_ProfitBricks; import org.occiware.clouddesigner.occi.cloud.Machine_RackSpace; import org.occiware.clouddesigner.occi.cloud.Machine_SoftLayer; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_Amazon_EC2; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_CloudSigma; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_GCE; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_Gogrid; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_Hp_Helion; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_OpenStack; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_ProfitBricks; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_RackSpace; import org.occiware.clouddesigner.occi.cloud.connector.ExecutableMachine_SoftLayer; import org.occiware.clouddesigner.occi.cloud.connector.ModelHandler; import org.occiware.clouddesigner.occi.cloud.connector.cloudproviders.JcloudsOpenStack; import org.occiware.clouddesigner.occi.infrastructure.RestartMethod; import org.occiware.clouddesigner.occi.infrastructure.StopMethod; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @SuppressWarnings("all") public class ExecutableCloudModel { private static Logger LOGGER = LoggerFactory.getLogger(ExecutableCloudModel.class); public Machine machine; public Configuration configuration; public Machine_Amazon_EC2 machine_Amazon_EC2; public Machine_CloudSigma machine_CloudSigma; public Machine_GCE machine_GCE; public Machine_SoftLayer machine_SoftLayer; public Machine_Gogrid machine_Gogrid; public Machine_Hp_Helion machine_Hp_Helion; public Machine_OpenStack machine_OpenStack; public Machine_RackSpace machine_RackSpace; public Machine_ProfitBricks machine_ProfitBricks; public ExecutableCloudModel() { } public ExecutableCloudModel(final Machine machine) { this.machine = machine; if ((machine instanceof Machine_Amazon_EC2)) { this.machine_Amazon_EC2 = ((Machine_Amazon_EC2)machine); } else { if ((machine instanceof Machine_CloudSigma)) { this.machine_CloudSigma = ((Machine_CloudSigma)machine); } else { if ((machine instanceof Machine_GCE)) { this.machine_GCE = ((Machine_GCE)machine); } else { if ((machine instanceof Machine_SoftLayer)) { this.machine_SoftLayer = ((Machine_SoftLayer)machine); } else { if ((machine instanceof Machine_Gogrid)) { this.machine_Gogrid = ((Machine_Gogrid)machine); } else { if ((machine instanceof Machine_Hp_Helion)) { this.machine_Hp_Helion = ((Machine_Hp_Helion)machine); } else { if ((machine instanceof Machine_RackSpace)) { this.machine_RackSpace = ((Machine_RackSpace)machine); } else { if ((machine instanceof Machine_OpenStack)) { this.machine_OpenStack = ((Machine_OpenStack)machine); } else { if ((machine instanceof Machine_ProfitBricks)) { this.machine_ProfitBricks = ((Machine_ProfitBricks)machine); } } } } } } } } } } public ExecutableCloudModel(final Configuration configuration) { this.configuration = configuration; } public void start() { boolean _notEquals = (!Objects.equal(this.machine_Amazon_EC2, null)); if (_notEquals) { this.machine_Amazon_EC2.start(); return; } boolean _notEquals_1 = (!Objects.equal(this.machine_CloudSigma, null)); if (_notEquals_1) { this.machine_CloudSigma.start(); return; } boolean _notEquals_2 = (!Objects.equal(this.machine_GCE, null)); if (_notEquals_2) { this.machine_GCE.start(); return; } boolean _notEquals_3 = (!Objects.equal(this.machine_SoftLayer, null)); if (_notEquals_3) { this.machine_SoftLayer.start(); return; } boolean _notEquals_4 = (!Objects.equal(this.machine_Gogrid, null)); if (_notEquals_4) { this.machine_Gogrid.start(); return; } boolean _notEquals_5 = (!Objects.equal(this.machine_Hp_Helion, null)); if (_notEquals_5) { this.machine_Hp_Helion.start(); return; } boolean _notEquals_6 = (!Objects.equal(this.machine_RackSpace, null)); if (_notEquals_6) { this.machine_RackSpace.start(); return; } boolean _notEquals_7 = (!Objects.equal(this.machine_OpenStack, null)); if (_notEquals_7) { this.machine_OpenStack.start(); return; } boolean _notEquals_8 = (!Objects.equal(this.machine_ProfitBricks, null)); if (_notEquals_8) { this.machine_ProfitBricks.start(); return; } } public void stop() { boolean _notEquals = (!Objects.equal(this.machine_Amazon_EC2, null)); if (_notEquals) { ((ExecutableMachine_Amazon_EC2) this.machine_Amazon_EC2).stop(StopMethod.GRACEFUL); return; } boolean _notEquals_1 = (!Objects.equal(this.machine_CloudSigma, null)); if (_notEquals_1) { ((ExecutableMachine_CloudSigma) this.machine_CloudSigma).stop(StopMethod.GRACEFUL); return; } boolean _notEquals_2 = (!Objects.equal(this.machine_GCE, null)); if (_notEquals_2) { ((ExecutableMachine_GCE) this.machine_GCE).stop(StopMethod.GRACEFUL); return; } boolean _notEquals_3 = (!Objects.equal(this.machine_SoftLayer, null)); if (_notEquals_3) { ((ExecutableMachine_SoftLayer) this.machine_SoftLayer).stop(StopMethod.GRACEFUL); return; } boolean _notEquals_4 = (!Objects.equal(this.machine_Gogrid, null)); if (_notEquals_4) { ((ExecutableMachine_Gogrid) this.machine_Gogrid).stop(StopMethod.GRACEFUL); return; } boolean _notEquals_5 = (!Objects.equal(this.machine_Hp_Helion, null)); if (_notEquals_5) { ((ExecutableMachine_Hp_Helion) this.machine_Hp_Helion).stop(StopMethod.GRACEFUL); return; } boolean _notEquals_6 = (!Objects.equal(this.machine_RackSpace, null)); if (_notEquals_6) { ((ExecutableMachine_RackSpace) this.machine_RackSpace).stop(StopMethod.GRACEFUL); return; } boolean _notEquals_7 = (!Objects.equal(this.machine_OpenStack, null)); if (_notEquals_7) { ((ExecutableMachine_OpenStack) this.machine_OpenStack).stop(StopMethod.GRACEFUL); return; } boolean _notEquals_8 = (!Objects.equal(this.machine_ProfitBricks, null)); if (_notEquals_8) { ((ExecutableMachine_ProfitBricks) this.machine_ProfitBricks).stop(StopMethod.GRACEFUL); return; } } public void restart() { boolean _notEquals = (!Objects.equal(this.machine_Amazon_EC2, null)); if (_notEquals) { this.machine_Amazon_EC2.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_1 = (!Objects.equal(this.machine_CloudSigma, null)); if (_notEquals_1) { this.machine_CloudSigma.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_2 = (!Objects.equal(this.machine_GCE, null)); if (_notEquals_2) { this.machine_GCE.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_3 = (!Objects.equal(this.machine_SoftLayer, null)); if (_notEquals_3) { this.machine_SoftLayer.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_4 = (!Objects.equal(this.machine_Gogrid, null)); if (_notEquals_4) { this.machine_Gogrid.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_5 = (!Objects.equal(this.machine_Hp_Helion, null)); if (_notEquals_5) { this.machine_Hp_Helion.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_6 = (!Objects.equal(this.machine_RackSpace, null)); if (_notEquals_6) { this.machine_RackSpace.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_7 = (!Objects.equal(this.machine_OpenStack, null)); if (_notEquals_7) { this.machine_OpenStack.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_8 = (!Objects.equal(this.machine_OpenStack, null)); if (_notEquals_8) { this.machine_OpenStack.restart(RestartMethod.GRACEFUL); return; } boolean _notEquals_9 = (!Objects.equal(this.machine_ProfitBricks, null)); if (_notEquals_9) { this.machine_ProfitBricks.restart(RestartMethod.GRACEFUL); return; } } public void importModel() { ModelHandler instanceMH = new ModelHandler(); List<Machine> machines = this.machinesInConfiguration(); for (final Machine machine : machines) { { if ((machine instanceof Machine_OpenStack)) { Machine_OpenStack tmpMachine = ((Machine_OpenStack) machine); JcloudsOpenStack _jcloudsOpenStack = new JcloudsOpenStack(tmpMachine); List<NodeMetadata> listOfMachines = _jcloudsOpenStack.listMachines(); for (final NodeMetadata instance : listOfMachines) { { String _name = instance.getName(); final boolean machineExistInModeler = this.containMachine(_name); if ((!machineExistInModeler)) { String _provider = tmpMachine.getProvider(); Machine machineOpenStak = instanceMH.getModel(instance, _provider); EList<Resource> _resources = this.configuration.getResources(); _resources.add(machineOpenStak); } } } ExecutableCloudModel.LOGGER.info("Import inside the OpenStack environment is done ..."); } if ((machine instanceof Machine_RackSpace)) { Machine_RackSpace tmpMachine_1 = ((Machine_RackSpace) machine); ExecutableCloudModel.LOGGER.info("Import inside the RackSpace environment is done ..."); } if ((machine instanceof Machine_Amazon_EC2)) { Machine_Amazon_EC2 tmpMachine_2 = ((Machine_Amazon_EC2) machine); ExecutableCloudModel.LOGGER.info("Import inside the Aamzon EC2 environment is done ..."); } if ((machine instanceof Machine_CloudSigma)) { Machine_CloudSigma tmpMachine_3 = ((Machine_CloudSigma) machine); ExecutableCloudModel.LOGGER.info("Import inside the CloudSigma environment is done ..."); } if ((machine instanceof Machine_GCE)) { Machine_GCE tmpMachine_4 = ((Machine_GCE) machine); ExecutableCloudModel.LOGGER.info("Import inside the Google CE environment is done ..."); } if ((machine instanceof Machine_Gogrid)) { Machine_Gogrid tmpMachine_5 = ((Machine_Gogrid) machine); ExecutableCloudModel.LOGGER.info("Import inside the Gogrid environment is done ..."); } if ((machine instanceof Machine_Hp_Helion)) { Machine_Hp_Helion tmpMachine_6 = ((Machine_Hp_Helion) machine); ExecutableCloudModel.LOGGER.info("Import inside the HP Helion environment is done ..."); } if ((machine instanceof Machine_ProfitBricks)) { Machine_ProfitBricks tmpMachine_7 = ((Machine_ProfitBricks) machine); ExecutableCloudModel.LOGGER.info("Import in ProfiBricks environment is done ..."); } if ((machine instanceof Machine_SoftLayer)) { Machine_SoftLayer tmpMachine_8 = ((Machine_SoftLayer) machine); ExecutableCloudModel.LOGGER.info("Import inside the Softlayer environment is done ..."); } } } } public boolean containMachine(final String machineName) { EList<Resource> _resources = this.configuration.getResources(); for (final Resource r : _resources) { if ((r instanceof Machine)) { String _name = ((Machine) r).getName(); boolean _equals = Objects.equal(_name, machineName); if (_equals) { return true; } } } return false; } public List<Machine> machinesInConfiguration() { List<Machine> machines = new ArrayList<Machine>(); EList<Resource> _resources = this.configuration.getResources(); for (final Resource r : _resources) { if ((r instanceof Machine)) { machines.add(((Machine) r)); } } return machines; } }