/**
* 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.docker.connector;
import com.github.dockerjava.api.command.InspectContainerResponse;
import com.github.dockerjava.api.model.Container;
import com.github.dockerjava.api.model.ContainerConfig;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.HostConfig;
import com.github.dockerjava.api.model.Link;
import com.google.common.base.Objects;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.codehaus.jackson.JsonNode;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.Diff;
import org.eclipse.emf.compare.EMFCompare;
import org.eclipse.emf.compare.match.DefaultComparisonFactory;
import org.eclipse.emf.compare.match.DefaultEqualityHelperFactory;
import org.eclipse.emf.compare.match.DefaultMatchEngine;
import org.eclipse.emf.compare.match.IComparisonFactory;
import org.eclipse.emf.compare.match.IMatchEngine;
import org.eclipse.emf.compare.match.eobject.IEObjectMatcher;
import org.eclipse.emf.compare.match.impl.MatchEngineFactoryImpl;
import org.eclipse.emf.compare.match.impl.MatchEngineFactoryRegistryImpl;
import org.eclipse.emf.compare.scope.DefaultComparisonScope;
import org.eclipse.emf.compare.scope.IComparisonScope;
import org.eclipse.emf.compare.utils.UseIdentifiers;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.URIConverter;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.XMIResource;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Conversions;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.occiware.clouddesigner.occi.docker.Contains;
import org.occiware.clouddesigner.occi.docker.DockerFactory;
import org.occiware.clouddesigner.occi.docker.DockerPackage;
import org.occiware.clouddesigner.occi.docker.Machine;
import org.occiware.clouddesigner.occi.docker.Machine_Amazon_EC2;
import org.occiware.clouddesigner.occi.docker.Machine_Digital_Ocean;
import org.occiware.clouddesigner.occi.docker.Machine_Google_Compute_Engine;
import org.occiware.clouddesigner.occi.docker.Machine_IBM_SoftLayer;
import org.occiware.clouddesigner.occi.docker.Machine_Microsoft_Azure;
import org.occiware.clouddesigner.occi.docker.Machine_Microsoft_Hyper_V;
import org.occiware.clouddesigner.occi.docker.Machine_OpenStack;
import org.occiware.clouddesigner.occi.docker.Machine_Rackspace;
import org.occiware.clouddesigner.occi.docker.Machine_VMware_Fusion;
import org.occiware.clouddesigner.occi.docker.Machine_VMware_vCloud_Air;
import org.occiware.clouddesigner.occi.docker.Machine_VMware_vSphere;
import org.occiware.clouddesigner.occi.docker.Machine_VirtualBox;
import org.occiware.clouddesigner.occi.docker.connector.dockerjava.DockerContainerManager;
import org.occiware.clouddesigner.occi.docker.connector.dockermachine.manager.DockerMachineManager;
import org.occiware.clouddesigner.occi.docker.connector.dockermachine.manager.Provider;
import org.occiware.clouddesigner.occi.docker.connector.dockermachine.util.DockerUtil;
import org.occiware.clouddesigner.occi.infrastructure.ComputeStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings("all")
public class ModelHandler {
private static Logger LOGGER = LoggerFactory.getLogger(ModelHandler.class);
/**
* Dynamic EMF
*/
public void loadModelWithoutGenerateCode() {
final Resource resource = this.loadModel();
EList<EObject> _contents = resource.getContents();
EObject _get = _contents.get(0);
final EPackage ePackage = ((EPackage) _get);
final EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
for (final EClassifier eClassifier : eClassifiers) {
{
String _name = eClassifier.getName();
ModelHandler.LOGGER.info(_name);
ModelHandler.LOGGER.info(" ");
if ((eClassifier instanceof EClass)) {
final EClass eClass = ((EClass) eClassifier);
final EList<EAttribute> eAttributes = eClass.getEAttributes();
for (final EAttribute eAttribute : eAttributes) {
String _name_1 = eAttribute.getName();
String _plus = (_name_1 + "(");
EDataType _eAttributeType = eAttribute.getEAttributeType();
String _name_2 = _eAttributeType.getName();
String _plus_1 = (_plus + _name_2);
String _plus_2 = (_plus_1 + ") ");
ModelHandler.LOGGER.info(_plus_2);
}
if (((!eClass.getEAttributes().isEmpty()) && (!eClass.getEReferences().isEmpty()))) {
ModelHandler.LOGGER.info(" References: ");
}
final EList<EReference> eReferences = eClass.getEReferences();
for (final EReference eReference : eReferences) {
String _name_3 = eReference.getName();
String _plus_3 = (_name_3 + "(");
EClass _eReferenceType = eReference.getEReferenceType();
String _name_4 = _eReferenceType.getName();
String _plus_4 = (_plus_3 + _name_4);
String _plus_5 = (_plus_4 + "[");
int _lowerBound = eReference.getLowerBound();
String _plus_6 = (_plus_5 + Integer.valueOf(_lowerBound));
String _plus_7 = (_plus_6 +
"..");
int _upperBound = eReference.getUpperBound();
String _plus_8 = (_plus_7 + Integer.valueOf(_upperBound));
String _plus_9 = (_plus_8 + "])");
ModelHandler.LOGGER.info(_plus_9);
}
EList<EOperation> _eOperations = eClass.getEOperations();
boolean _isEmpty = _eOperations.isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
ModelHandler.LOGGER.info(" Operations: ");
EList<EOperation> _eOperations_1 = eClass.getEOperations();
for (final EOperation eOperation : _eOperations_1) {
EClassifier _eType = eOperation.getEType();
String _plus_10 = (_eType + " ");
String _name_5 = eOperation.getName();
String _plus_11 = (_plus_10 + _name_5);
ModelHandler.LOGGER.info(_plus_11);
}
}
}
}
}
}
public void createAndSaveDockerMachineWithMetaModel() {
try {
Resource resource = this.loadModel();
resource.load(null);
EList<EObject> _contents = resource.getContents();
EObject _get = _contents.get(0);
final EPackage ePackage = ((EPackage) _get);
EClassifier _eClassifier = ePackage.getEClassifier("Machine");
final EClass dockerMachine = ((EClass) _eClassifier);
EStructuralFeature _eStructuralFeature = dockerMachine.getEStructuralFeature("contains");
final EReference eContains = ((EReference) _eStructuralFeature);
EStructuralFeature _eStructuralFeature_1 = dockerMachine.getEStructuralFeature("name");
final EAttribute eName = ((EAttribute) _eStructuralFeature_1);
EFactory _eFactoryInstance = ePackage.getEFactoryInstance();
final EObject dockerMachineInstance = _eFactoryInstance.create(dockerMachine);
dockerMachineInstance.eSet(eName, "test-xx");
EClassifier _eClassifier_1 = ePackage.getEClassifier("Machine_VirtualBox");
final EClass evbox = ((EClass) _eClassifier_1);
EStructuralFeature _eStructuralFeature_2 = evbox.getEStructuralFeature("boot2docker_url");
final EAttribute eboot2docker_url = ((EAttribute) _eStructuralFeature_2);
EStructuralFeature _eStructuralFeature_3 = evbox.getEStructuralFeature("disk_size");
final EAttribute edisk_size = ((EAttribute) _eStructuralFeature_3);
EFactory _eFactoryInstance_1 = ePackage.getEFactoryInstance();
final EObject vboxInstance = _eFactoryInstance_1.create(evbox);
vboxInstance.eSet(eboot2docker_url, "link");
final ResourceSet resourceSet = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("xmi", _xMIResourceFactoryImpl);
File temp = File.createTempFile("tempfile", "dockerinstancesonlymodel.xmi");
String _absolutePath = temp.getAbsolutePath();
final URI uri = URI.createURI(_absolutePath);
String _string = uri.toString();
ModelHandler.LOGGER.info(_string);
final Resource r = resourceSet.createResource(uri);
boolean _equals = Objects.equal(r, null);
if (_equals) {
throw new NullPointerException("The resource is null.");
}
ModelHandler.LOGGER.info(("Resource: " + r));
EList<EObject> _contents_1 = r.getContents();
_contents_1.add(vboxInstance);
r.save(null);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public Resource loadModel() {
final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
final Map<String, Object> m = reg.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
m.put("ecore", _xMIResourceFactoryImpl);
final ResourceSet resourceSet = new ResourceSetImpl();
final URI fileURI = URI.createFileURI("model/Docker.ecore");
final Resource resource = resourceSet.getResource(fileURI, true);
return resource;
}
public Map<String, Machine> getmodelEClass() {
final Map<String, Machine> m = new HashMap<String, Machine>();
String _string = Provider.virtualbox.toString();
Machine_VirtualBox _createMachine_VirtualBox = DockerFactory.eINSTANCE.createMachine_VirtualBox();
m.put(_string, _createMachine_VirtualBox);
String _string_1 = Provider.amazonec2.toString();
Machine_Amazon_EC2 _createMachine_Amazon_EC2 = DockerFactory.eINSTANCE.createMachine_Amazon_EC2();
m.put(_string_1, _createMachine_Amazon_EC2);
String _string_2 = Provider.digitalocean.toString();
Machine_Digital_Ocean _createMachine_Digital_Ocean = DockerFactory.eINSTANCE.createMachine_Digital_Ocean();
m.put(_string_2, _createMachine_Digital_Ocean);
String _string_3 = Provider.google.toString();
Machine_Google_Compute_Engine _createMachine_Google_Compute_Engine = DockerFactory.eINSTANCE.createMachine_Google_Compute_Engine();
m.put(_string_3, _createMachine_Google_Compute_Engine);
String _string_4 = Provider.ibm.toString();
Machine_IBM_SoftLayer _createMachine_IBM_SoftLayer = DockerFactory.eINSTANCE.createMachine_IBM_SoftLayer();
m.put(_string_4, _createMachine_IBM_SoftLayer);
String _string_5 = Provider.azure.toString();
Machine_Microsoft_Azure _createMachine_Microsoft_Azure = DockerFactory.eINSTANCE.createMachine_Microsoft_Azure();
m.put(_string_5, _createMachine_Microsoft_Azure);
String _string_6 = Provider.microsofthyperv.toString();
Machine_Microsoft_Hyper_V _createMachine_Microsoft_Hyper_V = DockerFactory.eINSTANCE.createMachine_Microsoft_Hyper_V();
m.put(_string_6, _createMachine_Microsoft_Hyper_V);
String _string_7 = Provider.openstack.toString();
Machine_OpenStack _createMachine_OpenStack = DockerFactory.eINSTANCE.createMachine_OpenStack();
m.put(_string_7, _createMachine_OpenStack);
String _string_8 = Provider.rackspace.toString();
Machine_Rackspace _createMachine_Rackspace = DockerFactory.eINSTANCE.createMachine_Rackspace();
m.put(_string_8, _createMachine_Rackspace);
String _string_9 = Provider.vmwarefusion.toString();
Machine_VMware_Fusion _createMachine_VMware_Fusion = DockerFactory.eINSTANCE.createMachine_VMware_Fusion();
m.put(_string_9, _createMachine_VMware_Fusion);
String _string_10 = Provider.vmwarevcloudair.toString();
Machine_VMware_vCloud_Air _createMachine_VMware_vCloud_Air = DockerFactory.eINSTANCE.createMachine_VMware_vCloud_Air();
m.put(_string_10, _createMachine_VMware_vCloud_Air);
String _string_11 = Provider.vmwarevsphere.toString();
Machine_VMware_vSphere _createMachine_VMware_vSphere = DockerFactory.eINSTANCE.createMachine_VMware_vSphere();
m.put(_string_11, _createMachine_VMware_vSphere);
return m;
}
public void saveFromStream(final OutputStream output, final Machine machine) {
try {
final ResourceSetImpl rs = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = rs.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("*", _xMIResourceFactoryImpl);
EPackage.Registry _packageRegistry = rs.getPackageRegistry();
_packageRegistry.put(DockerPackage.eNS_URI, DockerPackage.eINSTANCE);
final URI uri = URI.createURI((DockerPackage.eNS_URI + "RAM"));
final Resource resource = rs.createResource(uri);
final XMIResource res = ((XMIResource) resource);
Map<Object, Object> _defaultLoadOptions = res.getDefaultLoadOptions();
_defaultLoadOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
Map<Object, Object> _defaultSaveOptions = res.getDefaultSaveOptions();
_defaultSaveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
EList<EObject> _contents = res.getContents();
_contents.add(machine);
HashMap<Object, Object> _hashMap = new HashMap<Object, Object>();
res.save(output, _hashMap);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public Machine loadFromStream(final InputStream input) {
try {
final ResourceSetImpl rs = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = rs.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("*", _xMIResourceFactoryImpl);
EPackage.Registry _packageRegistry = rs.getPackageRegistry();
_packageRegistry.put(DockerPackage.eNS_URI, DockerPackage.eINSTANCE);
URI _createURI = URI.createURI(DockerPackage.eNS_URI);
final Resource resource = rs.createResource(_createURI);
final XMIResource res = ((XMIResource) resource);
Map<Object, Object> _defaultLoadOptions = res.getDefaultLoadOptions();
_defaultLoadOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
Map<Object, Object> _defaultSaveOptions = res.getDefaultSaveOptions();
_defaultSaveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
HashMap<Object, Object> _hashMap = new HashMap<Object, Object>();
res.load(input, _hashMap);
EList<EObject> _contents = resource.getContents();
EObject _get = _contents.get(0);
return ((Machine) _get);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public Machine loadFromFile(final String xmiPath) {
Class<? extends ModelHandler> _class = this.getClass();
ClassLoader _classLoader = _class.getClassLoader();
final InputStream in = _classLoader.getResourceAsStream(xmiPath);
boolean _equals = Objects.equal(in, null);
if (_equals) {
throw new IllegalArgumentException(("Unable to locate resource " + xmiPath));
}
final ResourceSetImpl rs = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = rs.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("xmi", _xMIResourceFactoryImpl);
EPackage.Registry _packageRegistry = rs.getPackageRegistry();
_packageRegistry.put(DockerPackage.eNS_URI, DockerPackage.eINSTANCE);
final File inputFile = new File(xmiPath);
String _absolutePath = inputFile.getAbsolutePath();
final URI uri = URI.createURI(_absolutePath);
final Resource resource = rs.getResource(uri, true);
final XMIResource res = ((XMIResource) resource);
Map<Object, Object> _defaultLoadOptions = res.getDefaultLoadOptions();
_defaultLoadOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
Map<Object, Object> _defaultSaveOptions = res.getDefaultSaveOptions();
_defaultSaveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
boolean _equals_1 = Objects.equal(resource, null);
if (_equals_1) {
throw new NullPointerException("The resource is null.");
}
EList<EObject> _contents = resource.getContents();
EObject _get = _contents.get(0);
final Machine m = ((Machine) _get);
String _string = m.toString();
ModelHandler.LOGGER.info(_string);
return m;
}
public void saveFromFile(final Machine machine) {
try {
final ResourceSetImpl resourceSet = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("xmi", _xMIResourceFactoryImpl);
Class<? extends ModelHandler> _class = this.getClass();
ClassLoader _classLoader = _class.getClassLoader();
URL _resource = _classLoader.getResource(".");
final String basePath = _resource.getPath();
String _name = machine.getName();
String _plus = (basePath + _name);
String _plus_1 = (_plus + ".xmi");
File temp = new File(_plus_1);
String _absolutePath = temp.getAbsolutePath();
ModelHandler.LOGGER.info(_absolutePath);
String _absolutePath_1 = temp.getAbsolutePath();
final URI uri = URI.createURI(_absolutePath_1);
Resource resource = resourceSet.createResource(uri);
final XMIResource res = ((XMIResource) resource);
Map<Object, Object> _defaultLoadOptions = res.getDefaultLoadOptions();
_defaultLoadOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
Map<Object, Object> _defaultSaveOptions = res.getDefaultSaveOptions();
_defaultSaveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
boolean _equals = Objects.equal(resource, null);
if (_equals) {
throw new NullPointerException("The resource is null.");
}
EList<EObject> _contents = resource.getContents();
_contents.add(machine);
resource.save(null);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public boolean deleteAllOldModels() {
boolean _xblockexpression = false;
{
final File myFile = new File("Models");
boolean _xifexpression = false;
boolean _isDirectory = myFile.isDirectory();
if (_isDirectory) {
_xifexpression = myFile.delete();
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
}
public static Resource load(final URI uri, final ResourceSet resourceSet, final String data) throws IOException {
Resource.Factory.Registry _resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("*", _xMIResourceFactoryImpl);
ClassLoader _classLoader = ModelHandler.class.getClassLoader();
InputStream in = _classLoader.getResourceAsStream(data);
boolean _equals = Objects.equal(in, null);
if (_equals) {
FileInputStream _fileInputStream = new FileInputStream(data);
in = _fileInputStream;
boolean _equals_1 = Objects.equal(in, null);
if (_equals_1) {
throw new IllegalArgumentException(("Unable to locate resource " + data));
}
}
final Reader reader = new InputStreamReader(in);
final URIConverter.ReadableInputStream input = new URIConverter.ReadableInputStream(reader, "UTF-8");
final Resource resource = resourceSet.createResource(uri);
resource.load(input, null);
return resource;
}
public String loadResource(final String xmi) {
try {
Class<? extends ModelHandler> _class = this.getClass();
ClassLoader _classLoader = _class.getClassLoader();
InputStream in = _classLoader.getResourceAsStream(xmi);
boolean _equals = Objects.equal(in, null);
if (_equals) {
FileInputStream _fileInputStream = new FileInputStream(xmi);
in = _fileInputStream;
boolean _equals_1 = Objects.equal(in, null);
if (_equals_1) {
throw new IllegalArgumentException(("Unable to locate resource " + xmi));
}
}
String result = null;
try {
InputStreamReader _inputStreamReader = new InputStreamReader(in);
BufferedReader _bufferedReader = new BufferedReader(_inputStreamReader);
String _readContentAsString = this.readContentAsString(_bufferedReader);
result = _readContentAsString;
} catch (final Throwable _t) {
if (_t instanceof IOException) {
final IOException ex = (IOException)_t;
throw new IllegalArgumentException(("Unable to read resource " + xmi), ex);
} else {
throw Exceptions.sneakyThrow(_t);
}
}
return result;
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public Machine load(final String path) {
final ResourceSetImpl rs = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = rs.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("xmi", _xMIResourceFactoryImpl);
EPackage.Registry _packageRegistry = rs.getPackageRegistry();
_packageRegistry.put(DockerPackage.eNS_URI, DockerPackage.eINSTANCE);
final File inputFile = new File(path);
String _absolutePath = inputFile.getAbsolutePath();
final URI uri = URI.createURI(_absolutePath);
final Resource resource = rs.getResource(uri, true);
final XMIResource res = ((XMIResource) resource);
Map<Object, Object> _defaultLoadOptions = res.getDefaultLoadOptions();
_defaultLoadOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
Map<Object, Object> _defaultSaveOptions = res.getDefaultSaveOptions();
_defaultSaveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
boolean _equals = Objects.equal(resource, null);
if (_equals) {
throw new NullPointerException("The resource is null.");
}
EList<EObject> _contents = resource.getContents();
EObject _get = _contents.get(0);
final Machine m = ((Machine) _get);
String _string = m.toString();
ModelHandler.LOGGER.info(_string);
return m;
}
public String readContentAsString(final Reader reader) throws IOException {
StringBuffer result = new StringBuffer(1000);
char[] buf = new char[1024];
int numRead = 0;
while (((numRead = reader.read(buf)) != (-1))) {
result.append(buf, 0, numRead);
}
reader.close();
return result.toString();
}
public static EList<EObject> toEObject(final String xmi, final boolean unsetID) {
try {
Map<Object, Object> options = new HashMap<Object, Object>();
options.put(XMLResource.OPTION_ENCODING, "UTF-8");
options.put(XMLResource.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE);
options.put(XMLResource.OPTION_DEFER_ATTACHMENT, Boolean.TRUE);
ResourceSet resourceSet = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("*", _xMIResourceFactoryImpl);
EPackage.Registry _packageRegistry = resourceSet.getPackageRegistry();
_packageRegistry.put(DockerPackage.eNS_URI, DockerPackage.eINSTANCE);
StringReader _stringReader = new StringReader(xmi);
URIConverter.ReadableInputStream input = new URIConverter.ReadableInputStream(_stringReader,
"UTF-8");
URI _createURI = URI.createURI("");
Resource resource = resourceSet.createResource(_createURI);
resource.load(input, options);
if (((!resource.getErrors().isEmpty()) || (!resource.getWarnings().isEmpty()))) {
EList<Resource.Diagnostic> _errors = resource.getErrors();
String _plus = ("Unable to load the EObject. Errors:" + _errors);
String _plus_1 = (_plus + "Warnings:");
EList<Resource.Diagnostic> _warnings = resource.getWarnings();
String _plus_2 = (_plus_1 + _warnings);
throw new IllegalArgumentException(_plus_2);
}
EList<EObject> result = resource.getContents();
if (((!Objects.equal(result, null)) && unsetID)) {
Map<EObject, Boolean> preventCycles = new IdentityHashMap<EObject, Boolean>();
ArrayList<EObject> rootList = new ArrayList<EObject>();
for (final EObject eObj : result) {
ModelHandler.readReferences(eObj, preventCycles, rootList);
}
for (final EObject eobj : rootList) {
{
EClass _eClass = eobj.eClass();
EAttribute _eIDAttribute = _eClass.getEIDAttribute();
boolean _notEquals = (!Objects.equal(_eIDAttribute, null));
if (_notEquals) {
EClass _eClass_1 = eobj.eClass();
EAttribute _eIDAttribute_1 = _eClass_1.getEIDAttribute();
eobj.eSet(_eIDAttribute_1, null);
}
Iterator<EObject> iterator = eobj.eAllContents();
while (iterator.hasNext()) {
{
EObject dependentEObject = iterator.next();
EClass _eClass_2 = dependentEObject.eClass();
EAttribute _eIDAttribute_2 = _eClass_2.getEIDAttribute();
boolean _notEquals_1 = (!Objects.equal(_eIDAttribute_2, null));
if (_notEquals_1) {
EClass _eClass_3 = dependentEObject.eClass();
EAttribute _eIDAttribute_3 = _eClass_3.getEIDAttribute();
dependentEObject.eSet(_eIDAttribute_3, null);
}
}
}
}
}
}
return result;
} catch (final Throwable _t) {
if (_t instanceof IOException) {
final IOException e = (IOException)_t;
throw new IllegalArgumentException(e);
} else {
throw Exceptions.sneakyThrow(_t);
}
}
}
public static String toXMI(final EObject object) {
try {
Map<Object, Object> options = new HashMap<Object, Object>();
options.put(XMLResource.OPTION_ENCODING, "UTF-8");
options.put(XMLResource.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE);
options.put(XMLResource.OPTION_DEFER_ATTACHMENT, Boolean.TRUE);
final StringWriter sw = new StringWriter();
final URIConverter.WriteableOutputStream uws = new URIConverter.WriteableOutputStream(sw, "UTF-8");
final ResourceSet resourceSet = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("*", _xMIResourceFactoryImpl);
EPackage.Registry _packageRegistry = resourceSet.getPackageRegistry();
_packageRegistry.put(DockerPackage.eNS_URI, DockerPackage.eINSTANCE);
URI _createURI = URI.createURI("");
Resource resource = resourceSet.createResource(_createURI);
Map<EObject, Boolean> preventCycles = new IdentityHashMap<EObject, Boolean>();
ArrayList<EObject> rootList = new ArrayList<EObject>();
ModelHandler.readReferences(object, preventCycles, rootList);
for (final EObject obj : rootList) {
EList<EObject> _contents = resource.getContents();
_contents.add(obj);
}
resource.save(uws, options);
return sw.toString();
} catch (final Throwable _t) {
if (_t instanceof IOException) {
final IOException e = (IOException)_t;
throw new IllegalArgumentException(e);
} else {
throw Exceptions.sneakyThrow(_t);
}
}
}
public static void readReferences(final EObject eobject, final Map<EObject, Boolean> preventCycles, final List<EObject> rootList) {
boolean _containsKey = preventCycles.containsKey(eobject);
if (_containsKey) {
return;
}
preventCycles.put(eobject, null);
EObject _eContainer = eobject.eContainer();
boolean _notEquals = (!Objects.equal(_eContainer, null));
if (_notEquals) {
EObject _eContainer_1 = eobject.eContainer();
ModelHandler.readReferences(_eContainer_1, preventCycles, rootList);
} else {
rootList.add(eobject);
}
EClass _eClass = eobject.eClass();
EList<EReference> _eAllReferences = _eClass.getEAllReferences();
for (final Object erefObj : _eAllReferences) {
{
EReference eref = ((EReference) erefObj);
final Object value = eobject.eGet(eref);
boolean _equals = Objects.equal(value, null);
if (_equals) {
}
if ((value instanceof List)) {
for (final Object obj : ((List<?>) value)) {
ModelHandler.readReferences(((EObject) obj), preventCycles, rootList);
}
} else {
ModelHandler.readReferences(((EObject) value), preventCycles, rootList);
}
}
}
}
public Machine getModel(final String machine, final String state, final boolean machineExists) {
final DockerContainerManager instance = new DockerContainerManager();
Runtime _runtime = Runtime.getRuntime();
String _inspectHostCmd = DockerMachineManager.inspectHostCmd(_runtime, machine);
final JsonNode node = DockerUtil.jsonify(_inspectHostCmd);
boolean _notEquals = (!Objects.equal(node, null));
if (_notEquals) {
Map<String, Machine> _modelEClass = this.getmodelEClass();
JsonNode _get = node.get("DriverName");
String _string = _get.toString();
String _replaceAll = _string.replaceAll("\"", "");
Machine vbox = _modelEClass.get(_replaceAll);
if ((vbox instanceof Machine_VirtualBox)) {
Machine_VirtualBox newvbox = ((Machine_VirtualBox) vbox);
this.machineFactory_VBOX(newvbox, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox));
} else {
if ((vbox instanceof Machine_Amazon_EC2)) {
Machine_Amazon_EC2 newvbox_1 = ((Machine_Amazon_EC2) vbox);
this.machineFactory(newvbox_1, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_1));
} else {
if ((vbox instanceof Machine_Digital_Ocean)) {
Machine_Digital_Ocean newvbox_2 = ((Machine_Digital_Ocean) vbox);
this.machineFactory(newvbox_2, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_2));
} else {
if ((vbox instanceof Machine_VMware_Fusion)) {
Machine_VMware_Fusion newvbox_3 = ((Machine_VMware_Fusion) vbox);
this.machineFactory_Fusion(newvbox_3, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_3));
} else {
if ((vbox instanceof Machine_Google_Compute_Engine)) {
Machine_Google_Compute_Engine newvbox_4 = ((Machine_Google_Compute_Engine) vbox);
this.machineFactory(newvbox_4, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_4));
} else {
if ((vbox instanceof Machine_IBM_SoftLayer)) {
Machine_IBM_SoftLayer newvbox_5 = ((Machine_IBM_SoftLayer) vbox);
this.machineFactory(newvbox_5, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_5));
} else {
if ((vbox instanceof Machine_Microsoft_Azure)) {
Machine_Microsoft_Azure newvbox_6 = ((Machine_Microsoft_Azure) vbox);
this.machineFactory(newvbox_6, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_6));
} else {
if ((vbox instanceof Machine_Microsoft_Hyper_V)) {
Machine_Microsoft_Hyper_V newvbox_7 = ((Machine_Microsoft_Hyper_V) vbox);
this.machineFactory(newvbox_7, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_7));
} else {
if ((vbox instanceof Machine_OpenStack)) {
Machine_OpenStack newvbox_8 = ((Machine_OpenStack) vbox);
this.machineFactory_OpenStack(newvbox_8, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_8));
} else {
if ((vbox instanceof Machine_Rackspace)) {
Machine_Rackspace newvbox_9 = ((Machine_Rackspace) vbox);
this.machineFactory(newvbox_9, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_9));
} else {
if ((vbox instanceof Machine_VMware_vSphere)) {
Machine_VMware_vSphere newvbox_10 = ((Machine_VMware_vSphere) vbox);
this.machineFactory(newvbox_10, node, state);
ModelHandler.LOGGER.info(("Model setting: " + newvbox_10));
}
}
}
}
}
}
}
}
}
}
}
if ((!machineExists)) {
ComputeStatus _state = vbox.getState();
String _string_1 = _state.toString();
boolean _equalsIgnoreCase = _string_1.equalsIgnoreCase("active");
if (_equalsIgnoreCase) {
String _name = vbox.getName();
final List<Container> containers = instance.listContainer(_name);
boolean _notEquals_1 = (!Objects.equal(containers, null));
if (_notEquals_1) {
List<org.occiware.clouddesigner.occi.docker.Container> modelContainers = this.buildContainer(vbox, containers);
for (final org.occiware.clouddesigner.occi.docker.Container container : modelContainers) {
{
HashSet<String> existingLinks = new HashSet<String>();
this.linkContainerToMachine(container, vbox);
String _id = container.getId();
final InspectContainerResponse inspectContainer = instance.inspectContainer(vbox, _id);
HostConfig _hostConfig = inspectContainer.getHostConfig();
Link[] _links = _hostConfig.getLinks();
boolean _isEmpty = ((List<Link>)Conversions.doWrapArray(_links)).isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
HostConfig _hostConfig_1 = inspectContainer.getHostConfig();
Link[] _links_1 = _hostConfig_1.getLinks();
for (final Link link : _links_1) {
String _name_1 = link.getName();
boolean _contains = existingLinks.contains(_name_1);
boolean _not_1 = (!_contains);
if (_not_1) {
String _name_2 = link.getName();
org.occiware.clouddesigner.occi.docker.Container _containerByName = this.getContainerByName(modelContainers, _name_2);
this.linkContainerToContainer(container, _containerByName);
String _name_3 = link.getName();
existingLinks.add(_name_3);
}
}
}
}
}
}
}
}
return vbox;
}
return null;
}
public org.occiware.clouddesigner.occi.docker.Container getContainerByName(final List<org.occiware.clouddesigner.occi.docker.Container> containers, final String containerName) {
for (final org.occiware.clouddesigner.occi.docker.Container c : containers) {
String _name = c.getName();
boolean _equals = Objects.equal(_name, containerName);
if (_equals) {
return c;
}
}
return null;
}
public void machineFactory(final Machine vbox, final JsonNode node, final String state) {
JsonNode _get = node.get("Driver");
JsonNode _get_1 = _get.get("MachineName");
String _string = _get_1.toString();
String _replaceAll = _string.replaceAll("\"", "");
vbox.setName(_replaceAll);
JsonNode _get_2 = node.get("Driver");
JsonNode _get_3 = _get_2.get("Memory");
String _string_1 = _get_3.toString();
float _parseFloat = Float.parseFloat(_string_1);
vbox.setMemory(_parseFloat);
JsonNode _get_4 = node.get("Driver");
JsonNode _get_5 = _get_4.get("CPU");
String _string_2 = _get_5.toString();
int _parseInt = Integer.parseInt(_string_2);
vbox.setCores(_parseInt);
boolean _equals = Objects.equal(state, "Running");
if (_equals) {
ComputeStatus _get_6 = ComputeStatus.get(0);
vbox.setState(_get_6);
}
boolean _equals_1 = Objects.equal(state, "Stopped");
if (_equals_1) {
ComputeStatus _get_7 = ComputeStatus.get(1);
vbox.setState(_get_7);
}
}
public void machineFactory_VBOX(final Machine_VirtualBox vbox, final JsonNode node, final String state) {
JsonNode _get = node.get("Driver");
JsonNode _get_1 = _get.get("MachineName");
String _string = _get_1.toString();
String _replaceAll = _string.replaceAll("\"", "");
vbox.setName(_replaceAll);
JsonNode _get_2 = node.get("Driver");
JsonNode _get_3 = _get_2.get("Memory");
String _string_1 = _get_3.toString();
float _parseFloat = Float.parseFloat(_string_1);
vbox.setMemory(_parseFloat);
JsonNode _get_4 = node.get("Driver");
JsonNode _get_5 = _get_4.get("DiskSize");
String _string_2 = _get_5.toString();
int _parseInt = Integer.parseInt(_string_2);
vbox.setDisk_size(_parseInt);
JsonNode _get_6 = node.get("Driver");
JsonNode _get_7 = _get_6.get("CPU");
String _string_3 = _get_7.toString();
int _parseInt_1 = Integer.parseInt(_string_3);
vbox.setCores(_parseInt_1);
JsonNode _get_8 = node.get("Driver");
JsonNode _get_9 = _get_8.get("Boot2DockerURL");
String _string_4 = _get_9.toString();
String _replaceAll_1 = _string_4.replaceAll("\"", "");
vbox.setBoot2docker_url(_replaceAll_1);
boolean _equals = Objects.equal(state, "Running");
if (_equals) {
ComputeStatus _get_10 = ComputeStatus.get(0);
vbox.setState(_get_10);
}
boolean _equals_1 = Objects.equal(state, "Stopped");
if (_equals_1) {
ComputeStatus _get_11 = ComputeStatus.get(1);
vbox.setState(_get_11);
}
}
public void machineFactory_Fusion(final Machine_VMware_Fusion vbox, final JsonNode node, final String state) {
JsonNode _get = node.get("Driver");
JsonNode _get_1 = _get.get("MachineName");
String _string = _get_1.toString();
String _replaceAll = _string.replaceAll("\"", "");
vbox.setName(_replaceAll);
JsonNode _get_2 = node.get("Driver");
JsonNode _get_3 = _get_2.get("Memory");
String _string_1 = _get_3.toString();
float _parseFloat = Float.parseFloat(_string_1);
vbox.setMemory(_parseFloat);
JsonNode _get_4 = node.get("Driver");
JsonNode _get_5 = _get_4.get("DiskSize");
String _string_2 = _get_5.toString();
int _parseInt = Integer.parseInt(_string_2);
vbox.setDisk_size(_parseInt);
try {
JsonNode _get_6 = node.get("Driver");
JsonNode _get_7 = _get_6.get("CPU");
String _string_3 = _get_7.toString();
int _parseInt_1 = Integer.parseInt(_string_3);
vbox.setCores(_parseInt_1);
} catch (final Throwable _t) {
if (_t instanceof NullPointerException) {
final NullPointerException e = (NullPointerException)_t;
JsonNode _get_8 = node.get("Driver");
JsonNode _get_9 = _get_8.get("CPUs");
String _string_4 = _get_9.toString();
int _parseInt_2 = Integer.parseInt(_string_4);
vbox.setCores(_parseInt_2);
} else {
throw Exceptions.sneakyThrow(_t);
}
}
JsonNode _get_10 = node.get("Driver");
JsonNode _get_11 = _get_10.get("Boot2DockerURL");
String _string_5 = _get_11.toString();
String _replaceAll_1 = _string_5.replaceAll("\"", "");
vbox.setBoot2docker_url(_replaceAll_1);
boolean _equals = Objects.equal(state, "Running");
if (_equals) {
ComputeStatus _get_12 = ComputeStatus.get(0);
vbox.setState(_get_12);
}
boolean _equals_1 = Objects.equal(state, "Stopped");
if (_equals_1) {
ComputeStatus _get_13 = ComputeStatus.get(1);
vbox.setState(_get_13);
}
}
public void machineFactory_OpenStack(final Machine_OpenStack vbox, final JsonNode node, final String state) {
JsonNode _get = node.get("Driver");
JsonNode _get_1 = _get.get("MachineName");
String _string = _get_1.toString();
String _replaceAll = _string.replaceAll("\"", "");
vbox.setName(_replaceAll);
JsonNode _get_2 = node.get("Driver");
JsonNode _get_3 = _get_2.get("AuthUrl");
String _string_1 = _get_3.toString();
String _replaceAll_1 = _string_1.replaceAll("\"", "");
vbox.setAuth_url(_replaceAll_1);
JsonNode _get_4 = node.get("Driver");
JsonNode _get_5 = _get_4.get("Username");
String _string_2 = _get_5.toString();
String _replaceAll_2 = _string_2.replaceAll("\"", "");
vbox.setUsername(_replaceAll_2);
JsonNode _get_6 = node.get("Driver");
JsonNode _get_7 = _get_6.get("Password");
String _string_3 = _get_7.toString();
String _replaceAll_3 = _string_3.replaceAll("\"", "");
vbox.setPassword(_replaceAll_3);
JsonNode _get_8 = node.get("Driver");
JsonNode _get_9 = _get_8.get("TenantName");
String _string_4 = _get_9.toString();
String _replaceAll_4 = _string_4.replaceAll("\"", "");
vbox.setTenant_name(_replaceAll_4);
JsonNode _get_10 = node.get("Driver");
JsonNode _get_11 = _get_10.get("TenantId");
String _string_5 = _get_11.toString();
String _replaceAll_5 = _string_5.replaceAll("\"", "");
vbox.setTenant_id(_replaceAll_5);
JsonNode _get_12 = node.get("Driver");
JsonNode _get_13 = _get_12.get("Region");
String _string_6 = _get_13.toString();
String _replaceAll_6 = _string_6.replaceAll("\"", "");
vbox.setRegion(_replaceAll_6);
JsonNode _get_14 = node.get("Driver");
JsonNode _get_15 = _get_14.get("EndpointType");
String _string_7 = _get_15.toString();
String _replaceAll_7 = _string_7.replaceAll("\"", "");
vbox.setEndpoint_type(_replaceAll_7);
JsonNode _get_16 = node.get("Driver");
JsonNode _get_17 = _get_16.get("FlavorId");
String _string_8 = _get_17.toString();
String _replaceAll_8 = _string_8.replaceAll("\"", "");
vbox.setFlavor_id(_replaceAll_8);
JsonNode _get_18 = node.get("Driver");
JsonNode _get_19 = _get_18.get("FloatingIpPool");
String _string_9 = _get_19.toString();
String _replaceAll_9 = _string_9.replaceAll("\"", "");
vbox.setFloatingip_pool(_replaceAll_9);
JsonNode _get_20 = node.get("Driver");
JsonNode _get_21 = _get_20.get("ImageId");
String _string_10 = _get_21.toString();
String _replaceAll_10 = _string_10.replaceAll("\"", "");
vbox.setImage_id(_replaceAll_10);
JsonNode _get_22 = node.get("Driver");
JsonNode _get_23 = _get_22.get("NetworkId");
String _string_11 = _get_23.toString();
String _replaceAll_11 = _string_11.replaceAll("\"", "");
vbox.setNet_id(_replaceAll_11);
JsonNode _get_24 = node.get("Driver");
JsonNode _get_25 = _get_24.get("SecurityGroups");
String _string_12 = _get_25.toString();
String _replaceAll_12 = _string_12.replaceAll("\\[\"", "");
String _replaceAll_13 = _replaceAll_12.replaceAll("\"\\]",
"");
String _replaceAll_14 = _replaceAll_13.replaceAll("\"", "");
vbox.setSec_groups(_replaceAll_14);
boolean _equals = Objects.equal(state, "Running");
if (_equals) {
ComputeStatus _get_26 = ComputeStatus.get(0);
vbox.setState(_get_26);
}
boolean _equals_1 = Objects.equal(state, "Stopped");
if (_equals_1) {
ComputeStatus _get_27 = ComputeStatus.get(1);
vbox.setState(_get_27);
}
}
public org.occiware.clouddesigner.occi.docker.Container getModel(final Container container) {
DockerFactory.eINSTANCE.eClass();
org.occiware.clouddesigner.occi.docker.Container modelContainer = DockerFactory.eINSTANCE.createContainer();
String _id = container.getId();
modelContainer.setId(_id);
String[] _names = container.getNames();
String _get = _names[0];
modelContainer.setName(_get);
String _image = container.getImage();
modelContainer.setImage(_image);
String _command = container.getCommand();
modelContainer.setCommand(_command);
String _id_1 = container.getId();
modelContainer.setContainerid(_id_1);
return modelContainer;
}
public org.occiware.clouddesigner.occi.docker.Container buildContainer(final Container container) {
org.occiware.clouddesigner.occi.docker.Container modelContainer = DockerFactory.eINSTANCE.createContainer();
String _id = container.getId();
modelContainer.setId(_id);
String[] _names = container.getNames();
String _get = _names[0];
boolean _notEquals = (!Objects.equal(_get, null));
if (_notEquals) {
String[] _names_1 = container.getNames();
String _get_1 = _names_1[0];
String _replace = _get_1.replace("/", "");
modelContainer.setName(_replace);
}
String _image = container.getImage();
modelContainer.setImage(_image);
String _command = container.getCommand();
modelContainer.setCommand(_command);
String _id_1 = container.getId();
modelContainer.setContainerid(_id_1);
return modelContainer;
}
public List<org.occiware.clouddesigner.occi.docker.Container> buildContainer(final List<Container> containers) {
List<org.occiware.clouddesigner.occi.docker.Container> containerList = CollectionLiterals.<org.occiware.clouddesigner.occi.docker.Container>newArrayList();
for (final Container c : containers) {
{
org.occiware.clouddesigner.occi.docker.Container modelContainer = DockerFactory.eINSTANCE.createContainer();
String _id = c.getId();
modelContainer.setId(_id);
String[] _names = c.getNames();
String _get = _names[0];
boolean _notEquals = (!Objects.equal(_get, null));
if (_notEquals) {
String[] _names_1 = c.getNames();
String _get_1 = _names_1[0];
String _replace = _get_1.replace("/", "");
modelContainer.setName(_replace);
}
String _image = c.getImage();
modelContainer.setImage(_image);
String _command = c.getCommand();
modelContainer.setCommand(_command);
String _id_1 = c.getId();
modelContainer.setContainerid(_id_1);
containerList.add(modelContainer);
}
}
return containerList;
}
public List<org.occiware.clouddesigner.occi.docker.Container> buildContainer(final Machine machine, final List<Container> containers) {
final DockerContainerManager instance = new DockerContainerManager(machine);
List<org.occiware.clouddesigner.occi.docker.Container> containerList = CollectionLiterals.<org.occiware.clouddesigner.occi.docker.Container>newArrayList();
for (final Container c : containers) {
{
String _id = c.getId();
final InspectContainerResponse currentContainer = instance.inspectContainer(machine, _id);
currentContainer.getId();
org.occiware.clouddesigner.occi.docker.Container modelContainer = DockerFactory.eINSTANCE.createContainer();
String _id_1 = c.getId();
modelContainer.setId(_id_1);
String _name = currentContainer.getName();
String _replace = _name.replace("/", "");
modelContainer.setName(_replace);
String _imageId = currentContainer.getImageId();
modelContainer.setImage(_imageId);
ContainerConfig _config = currentContainer.getConfig();
String[] _cmd = _config.getCmd();
String _string = Arrays.toString(_cmd);
String _replace_1 = _string.replace("[", "");
String _replace_2 = _replace_1.replace("]", "");
modelContainer.setCommand(_replace_2);
String _id_2 = currentContainer.getId();
modelContainer.setContainerid(_id_2);
try {
ContainerConfig _config_1 = currentContainer.getConfig();
ExposedPort[] _exposedPorts = _config_1.getExposedPorts();
String _string_1 = Arrays.toString(_exposedPorts);
String _replace_3 = _string_1.replace("[", "");
String _replace_4 = _replace_3.replace("]", "");
modelContainer.setPorts(_replace_4);
} catch (final Throwable _t) {
if (_t instanceof NullPointerException) {
final NullPointerException exception = (NullPointerException)_t;
} else {
throw Exceptions.sneakyThrow(_t);
}
}
ContainerConfig _config_2 = currentContainer.getConfig();
String _macAddress = _config_2.getMacAddress();
modelContainer.setMac_address(_macAddress);
ContainerConfig _config_3 = currentContainer.getConfig();
String _domainName = _config_3.getDomainName();
modelContainer.setDomainname(_domainName);
ContainerConfig _config_4 = currentContainer.getConfig();
String _hostName = _config_4.getHostName();
modelContainer.setHostname(_hostName);
ContainerConfig _config_5 = currentContainer.getConfig();
String _workingDir = _config_5.getWorkingDir();
modelContainer.setWorking_dir(_workingDir);
ContainerConfig _config_6 = currentContainer.getConfig();
String[] _entrypoint = _config_6.getEntrypoint();
String _string_2 = Arrays.toString(_entrypoint);
modelContainer.setEntrypoint(_string_2);
ContainerConfig _config_7 = currentContainer.getConfig();
String[] _env = _config_7.getEnv();
String _string_3 = Arrays.toString(_env);
String _replace_5 = _string_3.replace("[", "");
String _replace_6 = _replace_5.replace("]", "");
modelContainer.setEnvironment(_replace_6);
ContainerConfig _config_8 = currentContainer.getConfig();
Boolean _tty = _config_8.getTty();
modelContainer.setTty((_tty).booleanValue());
ContainerConfig _config_9 = currentContainer.getConfig();
Boolean _stdinOpen = _config_9.getStdinOpen();
modelContainer.setStdin_open((_stdinOpen).booleanValue());
String _processLabel = currentContainer.getProcessLabel();
modelContainer.setPid(_processLabel);
InspectContainerResponse.ContainerState _state = currentContainer.getState();
Boolean _running = _state.getRunning();
if ((_running).booleanValue()) {
ComputeStatus _get = ComputeStatus.get(0);
modelContainer.setState(_get);
}
containerList.add(modelContainer);
}
}
return containerList;
}
public org.occiware.clouddesigner.occi.docker.Container buildContainer(final Machine machine, final String containerId) {
final DockerContainerManager instance = new DockerContainerManager(machine);
final InspectContainerResponse currentContainer = instance.inspectContainer(machine, containerId);
org.occiware.clouddesigner.occi.docker.Container modelContainer = DockerFactory.eINSTANCE.createContainer();
String _id = currentContainer.getId();
modelContainer.setId(_id);
String _name = currentContainer.getName();
String _replace = _name.replace("/", "");
modelContainer.setName(_replace);
ContainerConfig _config = currentContainer.getConfig();
String _image = _config.getImage();
modelContainer.setImage(_image);
ContainerConfig _config_1 = currentContainer.getConfig();
String[] _cmd = _config_1.getCmd();
boolean _isEmpty = ((List<String>)Conversions.doWrapArray(_cmd)).isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
ContainerConfig _config_2 = currentContainer.getConfig();
String[] _cmd_1 = _config_2.getCmd();
String _string = Arrays.toString(_cmd_1);
String _replace_1 = _string.replace("[", "");
String _replace_2 = _replace_1.replace("]", "");
String _deleteWhitespace = StringUtils.deleteWhitespace(_replace_2);
modelContainer.setCommand(_deleteWhitespace);
}
String _id_1 = currentContainer.getId();
modelContainer.setContainerid(_id_1);
ContainerConfig _config_3 = currentContainer.getConfig();
String _macAddress = _config_3.getMacAddress();
modelContainer.setMac_address(_macAddress);
ContainerConfig _config_4 = currentContainer.getConfig();
String _domainName = _config_4.getDomainName();
modelContainer.setDomainname(_domainName);
ContainerConfig _config_5 = currentContainer.getConfig();
String _hostName = _config_5.getHostName();
modelContainer.setHostname(_hostName);
ContainerConfig _config_6 = currentContainer.getConfig();
String _workingDir = _config_6.getWorkingDir();
modelContainer.setWorking_dir(_workingDir);
ContainerConfig _config_7 = currentContainer.getConfig();
String[] _entrypoint = _config_7.getEntrypoint();
String _string_1 = Arrays.toString(_entrypoint);
modelContainer.setEntrypoint(_string_1);
ContainerConfig _config_8 = currentContainer.getConfig();
String[] _env = _config_8.getEnv();
String _string_2 = Arrays.toString(_env);
String _replace_3 = _string_2.replace("[", "");
String _replace_4 = _replace_3.replace("]", "");
modelContainer.setEnvironment(_replace_4);
ContainerConfig _config_9 = currentContainer.getConfig();
Boolean _tty = _config_9.getTty();
modelContainer.setTty((_tty).booleanValue());
ContainerConfig _config_10 = currentContainer.getConfig();
Boolean _stdinOpen = _config_10.getStdinOpen();
modelContainer.setStdin_open((_stdinOpen).booleanValue());
String _processLabel = currentContainer.getProcessLabel();
modelContainer.setPid(_processLabel);
InspectContainerResponse.ContainerState _state = currentContainer.getState();
Boolean _running = _state.getRunning();
if ((_running).booleanValue()) {
modelContainer.setState(ComputeStatus.ACTIVE);
} else {
modelContainer.setState(ComputeStatus.INACTIVE);
}
return modelContainer;
}
public String saveMachine(final Machine machine) {
try {
final ResourceSetImpl resourceSet = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("xmi", _xMIResourceFactoryImpl);
Class<? extends ModelHandler> _class = this.getClass();
ClassLoader _classLoader = _class.getClassLoader();
URL _resource = _classLoader.getResource(".");
final String basePath = _resource.getPath();
String _name = machine.getName();
String _plus = (basePath + _name);
String _plus_1 = (_plus + ".xmi");
File temp = new File(_plus_1);
String _absolutePath = temp.getAbsolutePath();
ModelHandler.LOGGER.info(_absolutePath);
String _absolutePath_1 = temp.getAbsolutePath();
final URI uri = URI.createURI(_absolutePath_1);
Resource resource = resourceSet.createResource(uri);
final XMIResource res = ((XMIResource) resource);
Map<Object, Object> _defaultLoadOptions = res.getDefaultLoadOptions();
_defaultLoadOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
Map<Object, Object> _defaultSaveOptions = res.getDefaultSaveOptions();
_defaultSaveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
boolean _equals = Objects.equal(resource, null);
if (_equals) {
throw new NullPointerException("The resource is null.");
}
EList<EObject> _contents = resource.getContents();
_contents.add(machine);
resource.save(Collections.EMPTY_MAP);
return temp.getAbsolutePath();
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public void saveContainer(final org.occiware.clouddesigner.occi.docker.Container container) {
try {
final ResourceSetImpl resourceSet = new ResourceSetImpl();
Resource.Factory.Registry _resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("xmi", _xMIResourceFactoryImpl);
Class<? extends ModelHandler> _class = this.getClass();
ClassLoader _classLoader = _class.getClassLoader();
URL _resource = _classLoader.getResource(".");
final String basePath = _resource.getPath();
String _name = container.getName();
String _plus = (basePath + _name);
String _plus_1 = (_plus + ".xmi");
File temp = new File(_plus_1);
String _absolutePath = temp.getAbsolutePath();
ModelHandler.LOGGER.info(_absolutePath);
String _absolutePath_1 = temp.getAbsolutePath();
final URI uri = URI.createURI(_absolutePath_1);
Resource resource = resourceSet.createResource(uri);
final XMIResource res = ((XMIResource) resource);
Map<Object, Object> _defaultLoadOptions = res.getDefaultLoadOptions();
_defaultLoadOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
Map<Object, Object> _defaultSaveOptions = res.getDefaultSaveOptions();
_defaultSaveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
boolean _equals = Objects.equal(resource, null);
if (_equals) {
throw new NullPointerException("The resource is null.");
}
EList<EObject> _contents = resource.getContents();
_contents.add(container);
resource.save(Collections.EMPTY_MAP);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public void linkContainerToMachine(final org.occiware.clouddesigner.occi.docker.Container container, final Machine machine) {
Contains contains = DockerFactory.eINSTANCE.createContains();
contains.setTarget(container);
EList<org.occiware.clouddesigner.occi.Link> _links = machine.getLinks();
_links.add(contains);
}
public Machine linkContainerToMachine(final List<org.occiware.clouddesigner.occi.docker.Container> containers, final Machine machine) {
Contains contains = DockerFactory.eINSTANCE.createContains();
for (final org.occiware.clouddesigner.occi.docker.Container c : containers) {
{
contains.setTarget(c);
EList<org.occiware.clouddesigner.occi.Link> _links = machine.getLinks();
_links.add(contains);
}
}
return machine;
}
public void linkContainerToContainer(final org.occiware.clouddesigner.occi.docker.Container left, final org.occiware.clouddesigner.occi.docker.Container right) {
org.occiware.clouddesigner.occi.docker.Link links = DockerFactory.eINSTANCE.createLink();
links.setTarget(right);
EList<org.occiware.clouddesigner.occi.Link> _links = left.getLinks();
_links.add(links);
}
public void removeContainerFromMachine(final org.occiware.clouddesigner.occi.docker.Container container, final Machine machine) {
Contains contains = DockerFactory.eINSTANCE.createContains();
contains.setTarget(container);
EList<org.occiware.clouddesigner.occi.Link> _links = machine.getLinks();
_links.remove(contains);
}
public boolean isSimilar(final Notifier left, final Notifier right) {
EMFCompare.Builder _builder = EMFCompare.builder();
EMFCompare _build = _builder.build();
DefaultComparisonScope _defaultComparisonScope = new DefaultComparisonScope(left, right, null);
Comparison _compare = _build.compare(_defaultComparisonScope);
EList<Diff> _differences = _compare.getDifferences();
return _differences.isEmpty();
}
public boolean isSimilar(final Machine machine1, final Machine machine2) {
final ResourceSet resourceSet1 = new ResourceSetImpl();
final ResourceSet resourceSet2 = new ResourceSetImpl();
final String xmi1 = this.saveMachine(machine1);
final String xmi2 = this.saveMachine(machine2);
this.load(xmi1, resourceSet1);
this.load(xmi2, resourceSet2);
final IEObjectMatcher matcher = DefaultMatchEngine.createDefaultEObjectMatcher(UseIdentifiers.NEVER);
DefaultEqualityHelperFactory _defaultEqualityHelperFactory = new DefaultEqualityHelperFactory();
final IComparisonFactory comparisonFactory = new DefaultComparisonFactory(_defaultEqualityHelperFactory);
final IMatchEngine.Factory matchEngineFactory = new MatchEngineFactoryImpl(matcher, comparisonFactory);
matchEngineFactory.setRanking(20);
final IMatchEngine.Factory.Registry matchEngineRegistry = new MatchEngineFactoryRegistryImpl();
matchEngineRegistry.add(matchEngineFactory);
EMFCompare.Builder _builder = EMFCompare.builder();
EMFCompare.Builder _setMatchEngineFactoryRegistry = _builder.setMatchEngineFactoryRegistry(matchEngineRegistry);
final EMFCompare comparator = _setMatchEngineFactoryRegistry.build();
final IComparisonScope scope = EMFCompare.createDefaultScope(resourceSet1, resourceSet2);
Comparison _compare = comparator.compare(scope);
EList<Diff> _differences = _compare.getDifferences();
return _differences.isEmpty();
}
public void load(final String absolutePath, final ResourceSet resourceSet) {
final URI uri = URI.createFileURI(absolutePath);
Resource.Factory.Registry _resourceFactoryRegistry = resourceSet.getResourceFactoryRegistry();
Map<String, Object> _extensionToFactoryMap = _resourceFactoryRegistry.getExtensionToFactoryMap();
XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
_extensionToFactoryMap.put("xmi", _xMIResourceFactoryImpl);
resourceSet.getResource(uri, true);
}
}