480107: Merging branch 'ceclipseMerging' to master

Bug: 480107

Change-Id: I7aa585c8dc79b41243e1a96362940ce7848011a9
Signed-off-by: Nicholas Loulloudes <loulloudes.n@cs.ucy.ac.cy>
diff --git a/plugins/org.eclipse.camf.connectors.aws.ui/icons/obj16/cp.gif b/plugins/org.eclipse.camf.connectors.aws.ui/icons/obj16/cp.gif
new file mode 100644
index 0000000..ad2371a
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.aws.ui/icons/obj16/cp.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.connectors.aws.ui/plugin.xml b/plugins/org.eclipse.camf.connectors.aws.ui/plugin.xml
index 57485e6..e17a4ae 100644
--- a/plugins/org.eclipse.camf.connectors.aws.ui/plugin.xml
+++ b/plugins/org.eclipse.camf.connectors.aws.ui/plugin.xml
@@ -23,5 +23,12 @@
             name="AWS Auth Token UI Factory">
       </factory>
    </extension>
+<extension
+      point="org.eclipse.camf.ui.cloudProviderIcon">
+   <icon
+         location="icons/obj16/cp.gif"
+         type="org.eclipse.camf.connectors.aws">
+   </icon>
+</extension>
 
 </plugin>
diff --git a/plugins/org.eclipse.camf.connectors.aws.ui/src/org/eclipse/camf/connectors/aws/ui/wizards/AWSCloudProviderWizardPage.java b/plugins/org.eclipse.camf.connectors.aws.ui/src/org/eclipse/camf/connectors/aws/ui/wizards/AWSCloudProviderWizardPage.java
index a1f0333..7061375 100644
--- a/plugins/org.eclipse.camf.connectors.aws.ui/src/org/eclipse/camf/connectors/aws/ui/wizards/AWSCloudProviderWizardPage.java
+++ b/plugins/org.eclipse.camf.connectors.aws.ui/src/org/eclipse/camf/connectors/aws/ui/wizards/AWSCloudProviderWizardPage.java
@@ -258,14 +258,14 @@
   protected void validateInput() {
     String name = this.cpNameText.getText().trim();
     if( name.length() == 0 ) {
-      setErrorMessage( Messages.getString( "AWSVoWizardPage.error_vo_name_required" ) ); //$NON-NLS-1$
+      setErrorMessage( Messages.getString( "AWSCloudProviderWizardPage.error_vo_name_required" ) ); //$NON-NLS-1$
       setPageComplete( false );
     } else if ( ( this.initialCloudProvider == null )
         && ( CloudModel.getCloudProviderManager().findChild( name ) != null ) ) {
-      setErrorMessage( Messages.getString( "AWSVoWizardPage.error_vo_already_exists" ) ); //$NON-NLS-1$
+      setErrorMessage( Messages.getString( "AWSCloudProviderWizardPage.error_vo_already_exists" ) ); //$NON-NLS-1$
       setPageComplete( false );
     } else if( this.awsAccessIdText.getText().trim().length() == 0 ) {
-      setErrorMessage( Messages.getString( "AWSVoWizardPage.error_acces_id_required" ) ); //$NON-NLS-1$
+      setErrorMessage( Messages.getString( "AWSCloudProviderWizardPage.error_acces_id_required" ) ); //$NON-NLS-1$
       setPageComplete( false );
     } else {
       setErrorMessage( null );
diff --git a/plugins/org.eclipse.camf.connectors.aws/META-INF/MANIFEST.MF b/plugins/org.eclipse.camf.connectors.aws/META-INF/MANIFEST.MF
index ef6151f..6306dd0 100644
--- a/plugins/org.eclipse.camf.connectors.aws/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.camf.connectors.aws/META-INF/MANIFEST.MF
@@ -19,7 +19,10 @@
  com.google.guava,
  jclouds-slf4j,
  jclouds-compute,
- cloudwatch;bundle-version="1.8.0"
+ cloudwatch;bundle-version="1.8.0",
+ org.eclipse.camf.infosystem,
+ jclouds-scriptbuilder;bundle-version="1.8.0",
+ org.json
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.camf.core,
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSApplicationDeploymentService.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSApplicationDeploymentService.java
index 6a1a331..7d98857 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSApplicationDeploymentService.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSApplicationDeploymentService.java
@@ -16,6 +16,8 @@
 
 import java.net.URI;
 
+import org.eclipse.camf.connectors.aws.operation.EC2OpDeployApplication;
+import org.eclipse.camf.connectors.aws.operation.OperationExecuter;
 import org.eclipse.camf.core.model.ICloudApplicationDescription;
 import org.eclipse.camf.core.model.ICloudContainer;
 import org.eclipse.camf.core.model.ICloudDeploymentID;
@@ -148,7 +150,23 @@
                                                final IProgressMonitor monitor )
     throws ProblemException
   {
-    // TODO Auto-generated method stub
+    EC2OpDeployApplication deployOperation = null;
+    try {
+      monitor.beginTask( "Deploying VMIs", 2 );
+      deployOperation = new EC2OpDeployApplication( EC2Client.getInstance(),
+                                                    description );
+      
+        if( deployOperation.getException() != null ) {
+        throw deployOperation.getException();
+      }
+      new OperationExecuter().execOp( deployOperation );
+    } catch( Exception e ) {
+      e.printStackTrace( );
+      
+    } finally {
+      monitor.done();
+    }
+    
     return null;
   }
 
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSCloudProviderProperties.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSCloudProviderProperties.java
index 0424dff..82d9e49 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSCloudProviderProperties.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/AWSCloudProviderProperties.java
@@ -27,6 +27,7 @@
 import org.eclipse.camf.core.ICoreProblems;
 import org.eclipse.camf.core.model.CloudModel;
 import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudProviderProperties;
 import org.eclipse.camf.core.model.ISerializableElement;
 import org.eclipse.camf.core.model.impl.AbstractCloudElement;
 import org.eclipse.camf.core.reporting.ProblemException;
@@ -55,7 +56,7 @@
  * @see AWSCloudProviderCreator
  */
 public class AWSCloudProviderProperties extends AbstractCloudElement
-  implements ISerializableElement
+  implements ISerializableElement, ICloudProviderProperties
 {
 
   /** Name to reference the properties in the {@link CloudModel}. */
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/EC2Client.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/EC2Client.java
index 4c04dfb..6aa8da7 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/EC2Client.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/EC2Client.java
@@ -48,7 +48,8 @@
 	private static ContextBuilder computeContextBuilder = null;
 	private static ContextBuilder cloudWatchContextBuilder = null;
 	private static ComputeService computeService = null;
-	private static String REGION = "eu-west-1";
+//	private static String REGION = "eu-west-1"; // IRELAND
+	private static String REGION = "us-west-2"; // OREGON
 
 	// public static AmazonEC2Client getInstance() {
 	// if( ec2 == null ) {
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/EC2InfoService.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/EC2InfoService.java
index a91ac27..5cd1af3 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/EC2InfoService.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/EC2InfoService.java
@@ -18,13 +18,20 @@
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 
+import org.eclipse.camf.connectors.aws.AWSApplicationDeploymentService;
 import org.eclipse.camf.connectors.aws.AWSCloudProvider;
 import org.eclipse.camf.connectors.aws.EC2Client;
 import org.eclipse.camf.connectors.aws.info.AWSInfoCache;
 import org.eclipse.camf.connectors.aws.internal.Activator;
+import org.eclipse.camf.connectors.aws.internal.JCatascopiaProbeRepo;
+import org.eclipse.camf.connectors.aws.internal.JCatascopiaProbeRepoException;
 import org.eclipse.camf.connectors.aws.internal.Messages;
 import org.eclipse.camf.connectors.aws.operation.AbstractEC2OpDescribeImages;
+import org.eclipse.camf.connectors.aws.operation.AbstractEC2OpDescribeKeypair;
+import org.eclipse.camf.connectors.aws.operation.AbstractEC2OpSecurityGroups;
 import org.eclipse.camf.connectors.aws.operation.EC2OpDescribeImages;
+import org.eclipse.camf.connectors.aws.operation.EC2OpDescribeKeypairs;
+import org.eclipse.camf.connectors.aws.operation.EC2OpDescribeSecurityGroups;
 import org.eclipse.camf.connectors.aws.operation.OperationExecuter;
 import org.eclipse.camf.core.model.CloudModel;
 import org.eclipse.camf.core.model.ICloudContainer;
@@ -33,12 +40,23 @@
 import org.eclipse.camf.core.model.ICloudProvider;
 import org.eclipse.camf.core.model.ICloudResource;
 import org.eclipse.camf.core.model.ICloudResourceCategory;
+import org.eclipse.camf.core.model.ICloudService;
 import org.eclipse.camf.core.model.impl.AbstractCloudInfoSystem;
 import org.eclipse.camf.core.model.impl.CloudResourceCategoryFactory;
 import org.eclipse.camf.core.reporting.ProblemException;
+import org.eclipse.camf.infosystem.InfoService;
 import org.eclipse.camf.infosystem.model.base.AbstractInfoCache;
+import org.eclipse.camf.infosystem.model.base.CloudProvider;
+import org.eclipse.camf.infosystem.model.base.Groups;
 import org.eclipse.camf.infosystem.model.base.IExtendedInfoService;
+import org.eclipse.camf.infosystem.model.base.Images;
 import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.Keys;
+import org.eclipse.camf.infosystem.model.base.Monitoring;
+import org.eclipse.camf.infosystem.model.base.MonitoringProbe;
+import org.eclipse.camf.infosystem.model.base.MonitoringService;
+import org.eclipse.camf.infosystem.model.base.Root;
+import org.eclipse.camf.infosystem.model.base.Security;
 import org.eclipse.camf.infosystem.model.base.VMI;
 import org.eclipse.camf.infosystem.model.base.VirtualMachineImage;
 import org.eclipse.core.filesystem.IFileStore;
@@ -46,7 +64,12 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.util.EList;
 import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.KeyPair;
+import org.jclouds.ec2.domain.SecurityGroup;
+import org.json.JSONArray;
+import org.json.JSONObject;
 
 /**
  * @author nickl
@@ -55,6 +78,7 @@
 
   /** The name of the file to save this cloud element in. */
   public static String STORAGE_NAME = ".ec2InfoService"; //$NON-NLS-1$
+  private static String CP_TYPE = "org.eclipse.camf.connectors.aws";
   private AWSCloudProvider awsCP;
   private EC2Service ec2Service;
   public static AWSInfoCache infoCache = null;
@@ -186,8 +210,35 @@
                             cp,
                             monitor,
                             new EC2OpDescribeImages( getEc2() ) );
-    }
+    } else if ( category.equals( CloudResourceCategoryFactory.getCategory( IEC2Categories.CATEGORY_EC2_SECURITY ) ) )
+    {
 
+      fetchKeyPairs( parent,
+                            cp,
+                            monitor,
+                            new EC2OpDescribeKeypairs( getEc2() ) );
+      fetchSecurityGroups( parent,
+                           cp,
+                           monitor,
+                           new EC2OpDescribeSecurityGroups( getEc2() ) );
+    } else if( category.equals( CloudResourceCategoryFactory.getCategory( CloudResourceCategoryFactory.ID_DEPLOYMENT_SERVICES ) ) )
+    {
+      result = fetchDeploymentServices( parent, cp, monitor );
+    } else if (category.equals( CloudResourceCategoryFactory.getCategory( CloudResourceCategoryFactory.ID_ALL ) )) {
+      fetchImages( parent,
+                   cp,
+                   monitor,
+                   new EC2OpDescribeImages( getEc2() ) );
+      fetchKeyPairs( parent,
+                     cp,
+                     monitor,
+                     new EC2OpDescribeKeypairs( getEc2() ) );
+      fetchSecurityGroups( parent,
+                     cp,
+                     monitor,
+                     new EC2OpDescribeSecurityGroups( getEc2() ) );
+      fetchJCatascopiaProbes( parent, cp, monitor );
+    }
 
     if (result == null)
       result = new ICloudResource[0];
@@ -243,7 +294,26 @@
       // transform answer into gEclipse format
       ArrayList<ICloudResource> resultCloudService = new ArrayList<ICloudResource>( operation.getResult()
         .size() );
-
+      
+      Root root = InfoService.getInstance().getRoot();
+      boolean newCP = false;
+      
+      CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+      if( infoCP == null ) {
+        infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+        infoCP.setName( cp.getName() );
+        infoCP.setType( CP_TYPE );
+        newCP = true;
+      }
+      
+      Images images = InfoService.getInstance().getFactory().createImages();
+      infoCP.setImages( images );      
+      
+      VirtualMachineImage vmCustom = InfoSystemFactory.eINSTANCE.createVirtualMachineImage();
+      vmCustom.setUID( "ami-13471c23" );
+      vmCustom.setName( "Ubuntu-12-04-precise" );
+      images.getVms().add(vmCustom);
+      
       for( Image ami : operation.getResult() ) {
         VirtualMachineImage vmi = InfoSystemFactory.eINSTANCE.createVirtualMachineImage();
         vmi.setUID( ami.getId() );
@@ -251,8 +321,14 @@
         vmi.setName( ami.getName() );
         vmi.setURL( ami.getImageLocation() );
         resultCloudService.add( new VMI( parent, vmi ) );
+        images.getVms().add( vmi );
       }
-
+      
+      
+            
+      if (newCP)
+        root.getCloudProviders().add( infoCP );
+      
       monitor.worked( 2 );
       monitor.done();
       return resultCloudService.toArray( new ICloudResource[ resultCloudService.size() ] );
@@ -260,6 +336,231 @@
     return null;
   }
   
+  /**
+   * Fetches the available KeyPairs of the EC2 service using the owner as a filter.
+   * 
+   * @param parent the parent of this {@link IGridInfoService}
+   * @param vo the vo initiating the query
+   * @param monitor the monitor to notify of progress
+   * @param operation the operation to execute
+   * @return an array of {@link EC2AMIImage}s.
+   */
+  public ICloudResource[] fetchKeyPairs( final ICloudContainer parent,
+                                      final ICloudProvider cp,
+                                      IProgressMonitor monitor,
+                                      final AbstractEC2OpDescribeKeypair operation )
+  {
+    if( monitor == null ) {
+      monitor = new NullProgressMonitor();
+    }
+
+    // fetch existing AMI images from EC2 service
+    monitor.beginTask( Messages.getString( "EC2InfoService.monitor_task_description" ), //$NON-NLS-1$
+                       2 );
+
+    new OperationExecuter().execOp( operation );
+
+    monitor.worked( 1 );
+    if( operation.getException() == null ) {
+      
+      Root root = InfoService.getInstance().getRoot();
+      boolean newCP = false;
+      
+      CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+      if( infoCP == null ) {
+        infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+        infoCP.setName( cp.getName() );
+        infoCP.setType( CP_TYPE );
+        newCP = true;
+      }
+             
+      Security security = InfoService.getInstance().getFactory().createSecurity();
+      Keys keys = InfoService.getInstance().getFactory().createKeys();
+      security.setKeys( keys );
+      infoCP.setSecurity( security );      
+      
+      for( KeyPair remoteKeyPair : operation.getResult() ) {
+        org.eclipse.camf.infosystem.model.base.KeyPair kp = InfoSystemFactory.eINSTANCE.createKeyPair();
+        kp.setName( remoteKeyPair.getKeyName() );        
+        kp.setUID( remoteKeyPair.getFingerprint() );
+        keys.getKeypairs().add( kp );
+      }
+      
+      if (newCP)
+        root.getCloudProviders().add( infoCP );
+
+      monitor.worked( 2 );
+      monitor.done();
+      return null;
+    }
+    return null;
+  }
+  
+  public ICloudResource[] fetchSecurityGroups( final ICloudContainer parent,
+                                         final ICloudProvider cp,
+                                         IProgressMonitor monitor,
+                                         final AbstractEC2OpSecurityGroups operation )
+     {
+       if( monitor == null ) {
+         monitor = new NullProgressMonitor();
+       }
+
+       // fetch existing AMI images from EC2 service
+       monitor.beginTask( Messages.getString( "EC2InfoService.monitor_task_description" ), //$NON-NLS-1$
+                          2 );
+
+       new OperationExecuter().execOp( operation );
+
+       monitor.worked( 1 );
+       if( operation.getException() == null ) {
+         
+         Root root = InfoService.getInstance().getRoot();
+         boolean newCP = false;
+         
+         CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+         if( infoCP == null ) {
+           infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+           infoCP.setName( cp.getName() );
+           infoCP.setType( CP_TYPE );
+           newCP = true;
+         }
+                
+         Security security = null;
+         if (infoCP.getSecurity() == null) {
+           security = InfoService.getInstance().getFactory().createSecurity();           
+         } else {
+           security = infoCP.getSecurity();
+         }
+         Groups groups = InfoService.getInstance().getFactory().createGroups();
+         security.setGroups( groups );
+         infoCP.setSecurity( security );      
+         
+         for( SecurityGroup remoteSG : operation.getResult() ) {
+           org.eclipse.camf.infosystem.model.base.SecurityGroup sg = InfoSystemFactory.eINSTANCE.createSecurityGroup();
+           sg.setName( remoteSG.getName() );        
+           sg.setUID( remoteSG.getId() );
+           groups.getSecurityGroups().add( sg );
+         }
+         
+         if (newCP)
+           root.getCloudProviders().add( infoCP );
+
+         monitor.worked( 2 );
+         monitor.done();
+         return null;
+       }
+       return null;
+     }
+  
+  private ICloudService[] fetchJCatascopiaProbes( final ICloudContainer parent,
+                                                            final ICloudProvider cp,
+                                                            IProgressMonitor monitor )
+  {
+    ICloudService[] result = null;
+    if( monitor == null ) {
+      monitor = new NullProgressMonitor();
+    }
+    monitor.beginTask( "Fetching JCatascopia Probes ...", 1 ); //$NON-NLS-1$
+    
+    
+    Root root = InfoService.getInstance().getRoot();
+    boolean newCP = false;
+    
+    CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+    if( infoCP == null ) {
+      infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+      infoCP.setName( cp.getName() );
+      infoCP.setType( CP_TYPE );
+      newCP = true;
+    }
+    
+    Monitoring monitoring = null;
+    MonitoringService jCatascopiaService = null;
+    if (infoCP.getMonitoring() != null){
+      monitoring = infoCP.getMonitoring();
+    } else {
+      monitoring = InfoService.getInstance().getFactory().createMonitoring();
+      infoCP.setMonitoring( monitoring );
+      jCatascopiaService = InfoService.getInstance().getFactory().createMonitoringService();
+      jCatascopiaService.setName( "jCatascopia" );
+      monitoring.getMonitoringService().add( jCatascopiaService );
+    }
+    
+    
+    try {
+      
+    
+    //CELAR Manager call : Get Monitoring Probes
+    String probes = getJCatascopiaProbes();
+    
+    if ( probes.equals( "" ) == false ) {
+      
+      probes = "{\"probes\":" + probes + "}";
+      String output_json = probes;
+      JSONObject obj = new JSONObject( output_json );
+      JSONArray probes_array = obj.getJSONArray( "probes" ); //$NON-NLS-1$
+      
+      if ( probes_array != null ){
+        for (int i=0; i < probes_array.length(); i++){
+          MonitoringProbe mp = InfoSystemFactory.eINSTANCE.createMonitoringProbe();
+          /*
+           * get the necessary mp fields
+           */
+          mp.setName( probes_array.getJSONObject( i ).getString( "probe" )); //$NON-NLS-1$ );
+          mp.setMetrics( probes_array.getJSONObject( i ).getString( "metrics" ) );
+          mp.setDescription( probes_array.getJSONObject( i ).getString( "desc" ) );
+                    
+          //add new monitor probe to probes list
+          jCatascopiaService.getProbes().add(mp);
+          //instance.monitor_probes.add( mp ); 
+        }
+        
+      }
+    }  
+    } catch( Exception e ) {
+      Activator.log( e );
+    }
+    
+    return result;
+  }
+  
+  String getJCatascopiaProbes(){
+    JCatascopiaProbeRepo repo = new JCatascopiaProbeRepo();
+    String probes = null;
+    try {
+      probes = repo.getProbes();
+
+    } catch( JCatascopiaProbeRepoException e ) {
+      // TODO Auto-generated catch block
+      e.printStackTrace();
+    }
+    //System.out.println(probes);
+    return probes;
+  }
+  
+  private ICloudService[] fetchDeploymentServices( final ICloudContainer parent,
+                                           final ICloudProvider cp,
+                                           IProgressMonitor monitor )
+  {
+    ArrayList<ICloudService> totalJobDeploymentServicesArray = new ArrayList<ICloudService>();
+    ICloudService[] result = null;
+    
+    if( monitor == null ) {
+      monitor = new NullProgressMonitor();
+    }
+    
+    monitor.beginTask( "Fetching Deployment Services ...", 1 ); //$NON-NLS-1$
+
+    AWSApplicationDeploymentService ads = new AWSApplicationDeploymentService( parent );
+    totalJobDeploymentServicesArray.add( ads );
+    
+    monitor.done();
+        
+    result = totalJobDeploymentServicesArray.toArray(new ICloudService[totalJobDeploymentServicesArray.size()]);
+    return result;
+    
+  }
+  
   private EC2Client getEc2() {
     return EC2Client.getInstance();
  }
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/IEC2Categories.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/IEC2Categories.java
index 8aec31a..2f71d59 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/IEC2Categories.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/ec2/IEC2Categories.java
@@ -36,7 +36,7 @@
 //  public static final String CATEGORY_EC2_IMAGES_ALL = "org.eclipse.camf.connectors.aws.ec2.allImages"; //$NON-NLS-1$
 //
   /** A category to contain security groups. */
-  public static final String CATEGORY_EC2_SECURITY_GROUPS = "org.eclipse.camf.connectors.aws.ec2.securityGroups"; //$NON-NLS-1$
+  public static final String CATEGORY_EC2_SECURITY = "org.eclipse.camf.connectors.aws.ec2.security"; //$NON-NLS-1$
 
   /** A category to contain keypairs. */
   public static final String CATEGORY_EC2_KEYPAIRS = "org.eclipse.camf.connectors.aws.ec2.keypairs"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/internal/JCatascopiaProbeRepo.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/internal/JCatascopiaProbeRepo.java
new file mode 100644
index 0000000..673821d
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/internal/JCatascopiaProbeRepo.java
@@ -0,0 +1,120 @@
+package org.eclipse.camf.connectors.aws.internal;

+

+import java.io.BufferedReader;

+import java.io.InputStreamReader;

+import java.net.HttpURLConnection;

+import java.net.URL;

+

+import org.json.JSONArray;

+import org.json.JSONObject;

+

+public class JCatascopiaProbeRepo {

+    

+    private static final String DEFAULT_REPO_HOST = "https://api.github.com/";

+    private static final String DEFAULT_REPO = "JCatascopia-Probe-Repo";

+    private static final String DEFAULT_OWNER = "dtrihinas";

+    

+    private String repo;

+    private String owner;

+    private String initURL;

+    

+    JCatascopiaProbeRepo(String repo, String owner) {

+        this.repo = repo;

+        this.owner = owner;

+        this.initURL = DEFAULT_REPO_HOST + "repos/" + this.owner + "/" + this.repo;

+    }

+    

+   public JCatascopiaProbeRepo() {

+        this(DEFAULT_REPO, DEFAULT_OWNER);

+    }

+    

+    public String getProbes() throws JCatascopiaProbeRepoException {

+        String probeList = null;

+        try{

+            String lastCommit = this.getLastCommit();

+            probeList = getProbeList(lastCommit);

+        }

+        catch (Exception e){

+            throw new JCatascopiaProbeRepoException("Fail to retrieve available JCatascopia Probes");

+        }

+        

+        return probeList;

+    }

+    

+    private String getProbeList(String sha){

+        JSONArray probeList = new JSONArray();

+        try{

+            String raw = this.getURLResponse(this.initURL + "/git/trees/" + sha + "?recursive=1");

+            JSONArray arr = new JSONObject(raw).getJSONArray("tree");

+            for (int i = 0; i < arr.length(); i++) {

+                JSONObject obj = arr.getJSONObject(i);

+                String p = obj.get("path").toString();

+                if (p.contains(".probe")) {

+                    String probe = this.getProbeJSON(p);

+                    if (probe != null)

+                        probeList.put(new JSONObject(probe));

+                }

+            }

+        }

+        catch(Exception e){

+            e.printStackTrace();

+            probeList = null;

+        }

+        return probeList.toString();

+    }

+    

+    private String getProbeJSON(String path) {

+        String resp = null;

+        try{

+            resp = this.getURLResponse("https://raw.githubusercontent.com/" + this.owner + "/" + this.repo + "/master/" + path);

+        }

+        catch(Exception e){

+            e.printStackTrace();

+        }

+        return resp;

+    }

+    

+    private String getLastCommit(){

+        String resp = null;

+        try{

+            String raw = this.getURLResponse(this.initURL + "/commits");

+            resp = new JSONArray(raw).getJSONObject(0).getJSONObject("commit").getJSONObject("tree").get("sha").toString(); 

+        }

+        catch(Exception e){

+            e.printStackTrace();

+        }

+        return resp;

+    }

+

+    private String getURLResponse(String url) { 

+        String resp = null;

+        try{    

+            URL obj = new URL(url);

+            HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

+            conn.setRequestMethod("GET");       

+            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

+            String line;

+            StringBuilder sb = new StringBuilder();

+            if(conn.getResponseCode() == 200){

+                while ((line = in.readLine()) != null)

+                    sb.append(line);

+                resp = sb.toString();

+            }

+                    

+            return resp;

+        }

+        catch(Exception e){

+            e.printStackTrace();

+            return null;

+        }       

+    }

+    

+    public static void main(String[] args) throws JCatascopiaProbeRepoException {

+        JCatascopiaProbeRepo repo;

+        if (args.length >= 2)

+            repo = new JCatascopiaProbeRepo(args[0],args[1]);

+        else

+            repo = new JCatascopiaProbeRepo();

+        System.out.println(repo.getProbes());

+    }

+}

diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/internal/JCatascopiaProbeRepoException.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/internal/JCatascopiaProbeRepoException.java
new file mode 100644
index 0000000..4f6bf32
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/internal/JCatascopiaProbeRepoException.java
@@ -0,0 +1,33 @@
+package org.eclipse.camf.connectors.aws.internal;

+

+

+public class JCatascopiaProbeRepoException extends Exception {

+

+    private static final long serialVersionUID = 1L;

+

+    private String message = null;

+     

+    public JCatascopiaProbeRepoException() {

+        super();

+    }

+     

+    public JCatascopiaProbeRepoException (String message) {

+        super(message);

+        this.message = "JCatascopia: " + message;

+    }

+     

+    public JCatascopiaProbeRepoException(Throwable cause) {

+        super(cause);

+    }

+    

+     

+    @Override

+    public String toString() {

+        return message;

+    }

+     

+    @Override

+    public String getMessage() {

+        return message;

+    }

+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/AbstractEC2OpDescribeKeypair.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/AbstractEC2OpDescribeKeypair.java
new file mode 100644
index 0000000..ccfa8e4
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/AbstractEC2OpDescribeKeypair.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Laboratory for Internet Computing, University of Cyprus.
+ * 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
+ *
+ * Initial development of the original code was made for the 
+ * CELAR project founded by European Union
+ * project number: FP7-317790  http://www.celarcloud.eu
+ *
+ * Contributors:
+ * 	Nicholas Loulloudes - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.camf.connectors.aws.operation;
+
+import java.util.List;
+
+import org.jclouds.ec2.domain.KeyPair;
+
+
+
+/**
+ * This base class provides some common functionality for classes wanting to
+ * fetch the list or available Keypair.
+ * 
+ * @author Nicholas Loulloudes
+ */
+public abstract class AbstractEC2OpDescribeKeypair implements IOperation {
+
+  /** The resulting list of AMIs */
+  private List<KeyPair> result;
+
+  /** Any exception which came up during the inquiry. */
+  private Exception exception;
+
+  abstract public void run();
+
+  public List<KeyPair> getResult() {
+    return this.result;
+  }
+
+  public Exception getException() {
+    return this.exception;
+  }
+
+  /**
+   * A setter for {@link #result}.
+   * 
+   * @param describeImagesByOwner the param to set
+   */
+  protected void setResult( final List<KeyPair> describeKeyPairs )
+  {
+    this.result = describeKeyPairs;
+  }
+
+  /**
+   * A setter for {@link #exception}.
+   * 
+   * @param ex the exception to set
+   */
+  protected void setException( final Exception ex ) {
+    this.exception = ex;
+  }
+}
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/AbstractEC2OpSecurityGroups.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/AbstractEC2OpSecurityGroups.java
new file mode 100644
index 0000000..2cb7c2f
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/AbstractEC2OpSecurityGroups.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Laboratory for Internet Computing, University of Cyprus.
+ * 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
+ *
+ * Initial development of the original code was made for the 
+ * CELAR project founded by European Union
+ * project number: FP7-317790  http://www.celarcloud.eu
+ *
+ * Contributors:
+ * 	Nicholas Loulloudes - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.camf.connectors.aws.operation;
+
+import java.util.List;
+
+import org.jclouds.ec2.domain.SecurityGroup;
+
+
+/**
+ * This base class provides some common functionality for classes wanting to
+ * fetch the list of available SecurityGroups.
+ *
+ * @author Nicholas Loulloudes
+ */
+public abstract class AbstractEC2OpSecurityGroups implements IOperation {
+
+	/** The resulting list of Instances */
+	private List<SecurityGroup> result;
+
+	/** Any exception which came up during the inquiry. */
+	private Exception exception;
+
+	abstract public void run();
+
+	public List<SecurityGroup> getResult() {
+		return this.result;
+	}
+
+	public Exception getException() {
+		return this.exception;
+	}
+
+	/**
+	 * A setter for {@link #result}.
+	 * 
+	 * @param describedInstances
+	 *            the param to set
+	 */
+	protected void setResult(final List<SecurityGroup> describedSecurityGroups) {
+		this.result = describedSecurityGroups;
+	}
+
+	/**
+	 * A setter for {@link #exception}.
+	 * 
+	 * @param ex
+	 *            the exception to set
+	 */
+	protected void setException(final Exception ex) {
+		this.exception = ex;
+	}
+}
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDeployApplication.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDeployApplication.java
index 181727e..ee94b2b 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDeployApplication.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDeployApplication.java
@@ -10,156 +10,182 @@
  * project number: FP7-317790  http://www.celarcloud.eu
  *
  * Contributors:
- * 	Nicholas Loulloudes - initial API and implementation
+ *  Nicholas Loulloudes - initial API and implementation
  *******************************************************************************/
 package org.eclipse.camf.connectors.aws.operation;
 
 
+import static org.jclouds.compute.options.TemplateOptions.Builder.runScript;
+import static org.jclouds.scriptbuilder.domain.Statements.exec;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.math.BigInteger;
+
+import org.eclipse.camf.connectors.aws.EC2Client;
+import org.eclipse.camf.core.model.ICloudApplicationDescription;
+import org.eclipse.camf.core.model.ICloudProject;
+import org.eclipse.camf.tosca.TDeploymentArtifact;
+import org.eclipse.camf.tosca.TDeploymentArtifacts;
+import org.eclipse.camf.tosca.TNodeTemplate;
+import org.eclipse.camf.tosca.TServiceTemplate;
+import org.eclipse.camf.tosca.TTopologyTemplate;
+import org.eclipse.camf.tosca.core.TOSCAModel;
+import org.eclipse.camf.tosca.core.TOSCAResource;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.EList;
+import org.jclouds.ec2.domain.InstanceType;
+import org.jclouds.ec2.features.InstanceApi;
+import org.jclouds.ec2.options.RunInstancesOptions;
+import org.jclouds.scriptbuilder.ScriptBuilder;
+import org.jclouds.scriptbuilder.domain.OsFamily;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Optional;
+import com.google.common.io.Files;
+
+import org.jclouds.compute.options.TemplateOptions;
+
 
 
 /**
  * @author Nicholas Loulloudes
  *
  */
-//public class EC2OpDeployApplication extends AbstractEC2OpDeployApplication {
-//  
-//  private final AmazonEC2 ec2;
-//  private final TOSCAResource toscaResource;
-//  private final ICloudProject project;
-//  private RunInstancesResult result;
-//  
-//  
-//  public EC2OpDeployApplication(final AmazonEC2 ec2, final TOSCAResource tosca ) {
-//    this.ec2 = ec2;
-//    this.toscaResource = tosca;
-//    this.project = this.toscaResource.getProject();
-//  }
-//
-//  /* (non-Javadoc)
-//   * @see org.eclipse.camf.connectors.aws.operation.AbstractEC2OpDeployApplication#run()
-//   */
-//  @Override
-//  public void run() {
-//    setResult( null );
-//    setException( null );
-//    try {
-// 
-//      TOSCAModel toscaModel = this.toscaResource.getTOSCAModel();
-//      TServiceTemplate serviceTemplate = toscaModel.getServiceTemplate();
-//      if( serviceTemplate != null ) {
-//        TTopologyTemplate topologyTemplate = serviceTemplate.getTopologyTemplate();
-//        if( topologyTemplate != null ) {
-//          EList<TNodeTemplate> nodeTemplateList = topologyTemplate.getNodeTemplate();
-//          if( nodeTemplateList != null ) {
-//            // Instantiate each node in the topology
-//            for( TNodeTemplate node : nodeTemplateList ) {              
-//              RunInstancesRequest runRequest = new RunInstancesRequest();
-//              
-//              int minCount = node.getMinInstances();
-//              int maxCount =  ((BigInteger) node.getMaxInstances()).intValue();
-//              // Get Deployment Artifacts
-//              TDeploymentArtifacts deploymentArtifacts = node.getDeploymentArtifacts();
-//              
-//              String amiID = null;
-//              String keypair = null;
-//              String keypairName = null;
-//              
-//                        
-//              for( TDeploymentArtifact artifact : deploymentArtifacts.getDeploymentArtifact() )
-//              {
-//                // Find the VMI or Keypair artifacts 
-//                String artifactType = artifact.getArtifactType().toString();
-//                if( artifactType.equals( "VMI" ) ) { //$NON-NLS-1$
-//                  amiID = artifact.getName();
-//                } else if( artifactType.equals( "KeyPair" ) ) { //$NON-NLS-1$
-//                  keypair = artifact.getName();
-//                }
-//                
-//                if (keypair != null) {
-//                  String encodedPublicKey = importKeyPair(keypair, this.project);         
-//                  //Strip extension. - Get file name only
-//                  keypairName = keypair.substring( 0, keypair.indexOf( "." ) ); //$NON-NLS-1$
-//                  try {
-//                    /* Get current key pair in Amazon */
-//                    DescribeKeyPairsRequest describeKeyPairsRequest = new DescribeKeyPairsRequest();
-//                    DescribeKeyPairsResult describeKeyPairsResult = this.ec2.describeKeyPairs( describeKeyPairsRequest.withKeyNames( keypairName ) );
-//
-//                    if (describeKeyPairsResult.getKeyPairs().size() == 0) {
-//                      ImportKeyPairRequest importKeyRequest = new ImportKeyPairRequest( keypairName, encodedPublicKey );
-//                      this.ec2.importKeyPair( importKeyRequest );    
-//                    }
-//                    
-//                  } catch( AmazonServiceException ase ) {
-//                    throw ase;
-//                  }
-//                  
-//                }
-//                
-//              }
-//              
-//              runRequest.withImageId( amiID );              
-//              runRequest.withInstanceType( InstanceType.C1Medium );
-//              runRequest.withMinCount( Integer.valueOf( minCount ) );
-//              runRequest.withMaxCount( Integer.valueOf( maxCount ) );
-//              runRequest.withAdditionalInfo( node.getName() );
-//              if( keypairName != null ) {
-//                runRequest.withKeyName( keypairName );
-//              }
-//              
-//              this.result = this.ec2.runInstances(runRequest);
-//              
-//            }
-//          }
-//        }
-//      }
-//
-//    } catch (AmazonServiceException aws) {
-//      this.setException( aws );
-//      aws.printStackTrace();
-//    } catch( Exception e ) {
-//      e.printStackTrace();
-//    } 
-//
-//  }
-//  
-//  
-//  public RunInstancesResult getResult() {
-//    return this.result;
-//  }
-//  
-//  /**
-//   * @param project 
-//   * @param ec2 
-//   * @param keyp
-//   * @throws IOException 
-//   */
-//  private static String importKeyPair( final String publicKeyFile, final ICloudProject project) throws IOException {    
-//    /* Read Public Key */
-//    String encodedPublicKey = null;
-//    BufferedReader br = null;
-//    try {
-//     
-////      ICloudElement element = CloudModel.getRoot().findChildWithResource( publicKeyFile );
-//      
-//      // For now get the File 
-//      // TODO - Incorporate Keypairs in CloudModel
-//      File file = new File(Platform.getLocation() + "/" + project.getName() + "/Artifacts/Deployment Scripts/" + publicKeyFile); //$NON-NLS-1$ //$NON-NLS-2$
-//           
-//      br = new BufferedReader( new FileReader( file ) );
-//      encodedPublicKey = br.readLine();
-//      
-//    } catch (IOException ioe) {
-//        throw ioe;
-//    } finally {
-//        if (br != null) {
-//            try {
-//                br.close();
-//                br = null;
-//            } catch (IOException ioe) {
-//                throw ioe;
-//            }
-//        }
-//    }
-//    return encodedPublicKey.trim();
-//  }
-//}
+public class EC2OpDeployApplication extends AbstractEC2OpDeployApplication {
+  
+  private final EC2Client ec2;
+  private TOSCAResource toscaResource = null;
+  private ICloudProject project = null;
+  private TOSCAModel toscaModel = null; 
+  
+  
+  public EC2OpDeployApplication(final EC2Client ec2, final ICloudApplicationDescription description ) {
+    this.ec2 = ec2;    
+    if( description instanceof TOSCAResource ) {
+      this.toscaResource = ( TOSCAResource ) description;
+      this.toscaModel = this.toscaResource.getTOSCAModel();
+      this.project = this.toscaResource.getProject();
+    } else if (description instanceof TOSCAModel) {
+      this.toscaModel = (TOSCAModel) description;    
+      this.project = this.toscaModel.getProject();
+    } else {
+      this.toscaResource = null;
+      this.toscaModel = null;
+    }
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.camf.connectors.aws.operation.AbstractEC2OpDeployApplication#run()
+   */
+  @Override
+  public void run() {
+    setResult( null );
+    setException( null );
+    
+    if (this.toscaModel == null){
+      return;
+    }
+
+    TServiceTemplate serviceTemplate = toscaModel.getServiceTemplate();
+    if( serviceTemplate != null ) {
+      TTopologyTemplate topologyTemplate = serviceTemplate.getTopologyTemplate();
+      if( topologyTemplate != null ) {
+        EList<TNodeTemplate> nodeTemplateList = topologyTemplate.getNodeTemplate();
+        if( nodeTemplateList != null ) {
+          // Instantiate each node in the topology
+          for( TNodeTemplate node : nodeTemplateList ) {
+            int minCount = node.getMinInstances();
+            int maxCount = ( ( BigInteger )node.getMaxInstances() ).intValue();
+            // Get Deployment Artifacts
+            TDeploymentArtifacts deploymentArtifacts = node.getDeploymentArtifacts();
+            String amiID = null;
+            String keypair = null;
+            String scriptFile = null;
+            String keypairName = null;
+            String script = null;
+            for( TDeploymentArtifact artifact : deploymentArtifacts.getDeploymentArtifact() )
+            {
+              // Find the VMI or Keypair artifacts
+              String artifactType = artifact.getArtifactType().toString();
+              if( artifactType.equals( "VMI" ) ) { //$NON-NLS-1$
+                amiID = artifact.getName();
+              } else if( artifactType.equals( "KeyPair" ) ) { //$NON-NLS-1$
+                keypair = artifact.getName();
+              } else if (artifactType.equals( "SD" )) {//                
+                try {
+                  scriptFile = artifact.getName();
+                  String string = Files.toString(importScript( artifact.getName(), project ), Charsets.UTF_8 );
+                  script = new ScriptBuilder().addStatement( exec (string ) ).render( OsFamily.UNIX );
+                } catch( IOException e ) {
+                  // TODO Auto-generated catch block
+                  e.printStackTrace();
+                }
+                
+              }
+
+            }
+                        
+             Optional<? extends InstanceApi> instanceApi =
+             this.ec2.getEC2Api().getInstanceApiForRegion(
+             this.ec2.getRegion() );             
+             RunInstancesOptions options = RunInstancesOptions.Builder.asType(InstanceType.M1_SMALL).withKeyName(keypair).withSecurityGroup( "sg-16bd5e72" ).withUserData( script.getBytes() );             
+             instanceApi.get().runInstancesInRegion( this.ec2.getRegion(),
+             null, amiID, minCount, maxCount, options );
+               
+          }
+        }
+      }
+    }
+
+
+  }
+  
+  private static File importScript (final String file, final ICloudProject project) throws IOException {
+    File f = null;
+   
+    f = new File(Platform.getLocation() + "/" + project.getName() + "/Artifacts/Deployment Scripts/" + file); //$NON-NLS-1$ //$NON-NLS-2$
+    
+    return f;
+  }
+  
+  
+  
+  /**
+   * @param project 
+   * @param ec2 
+   * @param keyp
+   * @throws IOException 
+   */
+  private static String importKeyPair( final String publicKeyFile, final ICloudProject project) throws IOException {    
+    /* Read Public Key */
+    String encodedPublicKey = null;
+    BufferedReader br = null;
+    try {
+     
+//      ICloudElement element = CloudModel.getRoot().findChildWithResource( publicKeyFile );
+      
+      // For now get the File 
+      // TODO - Incorporate Keypairs in CloudModel
+      File file = new File(Platform.getLocation() + "/" + project.getName() + "/Artifacts/Deployment Scripts/" + publicKeyFile); //$NON-NLS-1$ //$NON-NLS-2$
+           
+      br = new BufferedReader( new FileReader( file ) );
+      encodedPublicKey = br.readLine();
+      
+    } catch (IOException ioe) {
+        throw ioe;
+    } finally {
+        if (br != null) {
+            try {
+                br.close();
+                br = null;
+            } catch (IOException ioe) {
+                throw ioe;
+            }
+        }
+    }
+    return encodedPublicKey.trim();
+  }
+}
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeImages.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeImages.java
index ad9e68b..87c207f 100644
--- a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeImages.java
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeImages.java
@@ -56,8 +56,8 @@
     	
     	Optional<? extends AMIApi> amiApi = ec2.getEC2Api().getAMIApi();
     	Builder<String, String> filter = ImmutableMultimap.<String, String>builder();
-//    	filter.put("name","ubuntu");
-    	filter.put("name","*apache*");
+    	filter.put("name","ubuntu-precise*");
+//    	filter.put("name","*apache*");
     	
 			Set<? extends Image> images = amiApi.get()
 					.describeImagesInRegionWithFilter(ec2.getRegion(),
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeKeypairs.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeKeypairs.java
new file mode 100644
index 0000000..3fcf76f
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeKeypairs.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Laboratory for Internet Computing, University of Cyprus.
+ * 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
+ *
+ * Initial development of the original code was made for the 
+ * CELAR project founded by European Union
+ * project number: FP7-317790  http://www.celarcloud.eu
+ *
+ * Contributors:
+ *  Nicholas Loulloudes - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.camf.connectors.aws.operation;
+
+import java.util.ArrayList;
+import java.util.Set;
+
+import org.eclipse.camf.connectors.aws.EC2Client;
+import org.jclouds.ec2.domain.KeyPair;
+import org.jclouds.ec2.features.KeyPairApi;
+
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.ImmutableMultimap.Builder;
+
+
+public class EC2OpDescribeKeypairs extends AbstractEC2OpDescribeKeypair {
+
+  private final EC2Client ec2;
+  /**
+   * Creates a new {@link EC2OpDescribeKeypairs} with the given owners as
+   * parameter.
+   * 
+   * @param ec2 the {@link AmazonEC2} to obtain data from
+   */
+  public EC2OpDescribeKeypairs( final EC2Client ec2 ) {
+    this.ec2 = ec2;
+  }
+ 
+
+  @Override
+  public void run() {
+    setResult( null );
+    setException( null );
+    try {
+    	
+    	Optional<? extends KeyPairApi> keyPairApi = ec2.getEC2Api().getKeyPairApi();    	
+    	Builder<String, String> filter = ImmutableMultimap.<String, String>builder();
+    	Set<? extends KeyPair> keypairs = keyPairApi.get().describeKeyPairsInRegionWithFilter( ec2.getRegion(), filter.build() );
+
+      setResult( new ArrayList<KeyPair>(keypairs) );
+    } catch( Exception ex ) {
+      setException( ex );
+    }
+
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeSecurityGroups.java b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeSecurityGroups.java
new file mode 100644
index 0000000..b29116e
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.aws/src/org/eclipse/camf/connectors/aws/operation/EC2OpDescribeSecurityGroups.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Laboratory for Internet Computing, University of Cyprus.
+ * 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
+ *
+ * Initial development of the original code was made for the 
+ * CELAR project founded by European Union
+ * project number: FP7-317790  http://www.celarcloud.eu
+ *
+ * Contributors:
+ * 	Andreas Kastanas - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.camf.connectors.aws.operation;
+
+import java.util.ArrayList;
+import java.util.Set;
+
+import org.eclipse.camf.connectors.aws.EC2Client;
+import org.jclouds.ec2.domain.SecurityGroup;
+
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.ImmutableMultimap.Builder;
+
+
+/**
+ * This {@link IOperation} implementation uses the {@link nova} to send a query
+ * to OpenStack. It fetches all available Security Groups
+ * 
+ * @author Andreas Kastanas
+ */
+
+public class EC2OpDescribeSecurityGroups extends
+		AbstractEC2OpSecurityGroups {
+
+  private Optional<? extends org.jclouds.ec2.features.SecurityGroupApi> securityGroupApi;
+  private final EC2Client ec2;
+
+  /**
+   * Creates a new {@link EC2OpDescribeSecurityGroups} to fetch available
+   * data
+   */
+  public EC2OpDescribeSecurityGroups( final EC2Client client ) {
+    this.ec2 = client;
+    securityGroupApi = client.getEC2Api().getSecurityGroupApi();
+  }
+
+  public EC2OpDescribeSecurityGroups() {
+    this.ec2 = EC2Client.getInstance();
+    this.securityGroupApi = this.ec2.getEC2Api().getSecurityGroupApi();
+  }
+
+	@Override
+	public void run() {
+		setResult(null);
+		setException(null);
+		try {
+
+		  Builder<String, String> filter = ImmutableMultimap.<String, String>builder();
+		  Set<? extends SecurityGroup> securityGroups = this.securityGroupApi.get().describeSecurityGroupsInRegionWithFilter( this.ec2.getRegion(), filter.build() );
+
+			setResult(new ArrayList<SecurityGroup>(securityGroups));
+		} catch (Exception ex) {
+			setException(ex);
+		}
+	}
+}
diff --git a/plugins/org.eclipse.camf.connectors.openstack.ui/icons/obj16/cp.gif b/plugins/org.eclipse.camf.connectors.openstack.ui/icons/obj16/cp.gif
new file mode 100644
index 0000000..1d80db1
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.openstack.ui/icons/obj16/cp.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.connectors.openstack.ui/plugin.xml b/plugins/org.eclipse.camf.connectors.openstack.ui/plugin.xml
index 6693437..5d698b5 100644
--- a/plugins/org.eclipse.camf.connectors.openstack.ui/plugin.xml
+++ b/plugins/org.eclipse.camf.connectors.openstack.ui/plugin.xml
@@ -23,4 +23,11 @@
             name="OpenStack Auth Token UI Factory">
       </factory>
    </extension>
+<extension
+      point="org.eclipse.camf.ui.cloudProviderIcon">
+   <icon
+         location="/icons/obj16/cp.gif"
+         type="org.eclipse.camf.connectors.openstack">
+   </icon>
+</extension>
 </plugin>
diff --git a/plugins/org.eclipse.camf.connectors.openstack.ui/src/org/eclipse/camf/connectors/openstack/ui/wizards/OpenStackCloudProviderWizardPage.java b/plugins/org.eclipse.camf.connectors.openstack.ui/src/org/eclipse/camf/connectors/openstack/ui/wizards/OpenStackCloudProviderWizardPage.java
index 10ad9c5..1d5c913 100644
--- a/plugins/org.eclipse.camf.connectors.openstack.ui/src/org/eclipse/camf/connectors/openstack/ui/wizards/OpenStackCloudProviderWizardPage.java
+++ b/plugins/org.eclipse.camf.connectors.openstack.ui/src/org/eclipse/camf/connectors/openstack/ui/wizards/OpenStackCloudProviderWizardPage.java
@@ -286,10 +286,10 @@
       setErrorMessage( Messages.getString( "OpenStackWizardPage.error_cp_already_exists" ) ); //$NON-NLS-1$
       setPageComplete( false );
     } else if( this.openstackAccessIdText.getText().trim().length() == 0 ) {
-      setErrorMessage( Messages.getString( "OpenStackWizardPage.error_acces_id_required" ) ); //$NON-NLS-1$
+      setErrorMessage( Messages.getString( "OpenStackCloudProviderWizardPage.error_acces_id_required" ) ); //$NON-NLS-1$
       setPageComplete( false );
     } else if( this.openstackEndPointText.getText().trim().length() == 0 ) {
-      setErrorMessage( Messages.getString( "OpenStackWizardPage.error_access_endpoint_required" ) ); //$NON-NLS-1$
+      setErrorMessage( Messages.getString( "OpenStackCloudProviderWizardPage.error_access_endpoint_required" ) ); //$NON-NLS-1$
       setPageComplete( false );
     } else {
       setErrorMessage( null );
diff --git a/plugins/org.eclipse.camf.connectors.openstack/META-INF/MANIFEST.MF b/plugins/org.eclipse.camf.connectors.openstack/META-INF/MANIFEST.MF
index acd28bd..f6ad110 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.camf.connectors.openstack/META-INF/MANIFEST.MF
@@ -4,6 +4,7 @@
 Bundle-SymbolicName: org.eclipse.camf.connectors.openstack;singleton:=true
 Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.camf.connectors.openstack.internal.Activator
+Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.core.resources;bundle-version="3.8.101",
@@ -16,7 +17,9 @@
  openstack-keystone,
  openstack-nova,
  openstack-neutron-custom;bundle-version="1.8.0",
- org.json;bundle-version="1.0.0"
+ org.json;bundle-version="1.0.0",
+ org.eclipse.camf.infosystem,
+ jclouds-scriptbuilder;bundle-version="1.8.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Import-Package: com.google.inject,
diff --git a/plugins/org.eclipse.camf.connectors.openstack/plugin.properties b/plugins/org.eclipse.camf.connectors.openstack/plugin.properties
new file mode 100644
index 0000000..21b5c16
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.openstack/plugin.properties
@@ -0,0 +1,29 @@
+###############################################################################
+# Copyright (c) 2008 g-Eclipse Consortium 
+# 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
+# 
+# Initial development of the original code was made for the
+# g-Eclipse project founded by European Union
+# project number: FP6-IST-034327  http://www.geclipse.eu/
+# 
+# Contributors:
+#    Nicholas Loulloudes - initial API and implementation
+###############################################################################
+
+Bundle-Name = OpenStack Connector Plug-in
+Bundle-Vendor = EU FP7 CELAR
+
+osServiceCreator.service.name = OpenStack
+osServiceCreator.source.pattern = http://www.openstack.org/
+
+problem.auth.authFailed.description = Could not authenticate with the provided credentials
+problem.net.os.error.description = Could not interact with the OpenStack service
+solution.auth.authFailed.falseOpenStackUrl.description = Check the specified OpenSTack URL
+solution.auth.authFailed.falseOpenStackCredentials.description = Check the provided OpenStack credentials
+category.images = Images
+category.networking = Networking
+category.storage = Storage
+category.security = Security
diff --git a/plugins/org.eclipse.camf.connectors.openstack/plugin.xml b/plugins/org.eclipse.camf.connectors.openstack/plugin.xml
index ae3651b..8b2df64 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/plugin.xml
+++ b/plugins/org.eclipse.camf.connectors.openstack/plugin.xml
@@ -33,6 +33,20 @@
                class="org.eclipse.core.filesystem.IFileStore">
          </source>
       </creator>
+      <creator
+            class="org.eclipse.camf.connectors.openstack.OpenStackServiceCreator"
+            id="org.eclipse.camf.connectors.openstack.service.osServiceCreator"
+            name="%osServiceCreator.service.name">
+         <source
+               class="java.net.URL"
+               default="true"
+               pattern="%osServiceCreator.source.pattern">
+         </source>
+         <target
+               class="org.eclipse.camf.connectors.openstack.IOpenStackService"
+               name="OpenStack Service">
+         </target>
+      </creator>
    </extension>
    <extension
          point="org.eclipse.camf.core.authTokens">
@@ -43,4 +57,24 @@
             wizard="org.eclipse.camf.connectors.openstack.ui.wizards.openstackAuthTokenWizard">
       </token>
    </extension>
+         <extension
+         point="org.eclipse.camf.core.cloudResourceCategory">
+      <category
+            id="org.eclipse.camf.connectors.openstack.images"
+            name="%category.images"
+            parent="org.eclipse.camf.connectors.openstack.service">
+      </category>
+      <category
+            id="org.eclipse.camf.connectors.openstack.networking"
+            name="%category.networking">
+      </category>
+      <category
+            id="org.eclipse.camf.connectors.openstack.storage"
+            name="%category.storage">
+      </category>
+	  <category
+            id="org.eclipse.camf.connectors.openstack.security"
+            name="%category.security">
+      </category>
+   </extension>
 </plugin>
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/IOpenStackService.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/IOpenStackService.java
index 44cd8cb..e409b02 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/IOpenStackService.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/IOpenStackService.java
@@ -15,11 +15,14 @@
 package org.eclipse.camf.connectors.openstack;
 
 import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudInfoService;
 import org.eclipse.camf.core.model.ICloudResourceCategory;
+import org.eclipse.camf.core.model.ICloudService;
 
 
-public interface IOpenStackService extends ICloudContainer {
+public interface IOpenStackService extends ICloudService, ICloudContainer {
 
+  public ICloudInfoService getInfoService(); 
 
   /**
    * Provides an array of categories contributing to the OpenStack Cloud Provider subfolders.
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackApplicationDeploymentService.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackApplicationDeploymentService.java
index 6cd616d..c13ca20 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackApplicationDeploymentService.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackApplicationDeploymentService.java
@@ -16,6 +16,8 @@
 
 import java.net.URI;
 
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDeployApplication;
+import org.eclipse.camf.connectors.openstack.operation.OperationExecuter;
 import org.eclipse.camf.core.model.ICloudApplicationDescription;
 import org.eclipse.camf.core.model.ICloudContainer;
 import org.eclipse.camf.core.model.ICloudDeploymentID;
@@ -24,6 +26,7 @@
 import org.eclipse.camf.core.model.ICloudProvider;
 import org.eclipse.camf.core.model.impl.AbstractCloudElement;
 import org.eclipse.camf.core.reporting.ProblemException;
+import org.eclipse.camf.tosca.core.TOSCAModel;
 import org.eclipse.camf.tosca.core.TOSCAResource;
 import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.core.resources.IResource;
@@ -148,7 +151,23 @@
                                                final IProgressMonitor monitor )
     throws ProblemException
   {
-    // TODO Auto-generated method stub
+    OpenStackOpDeployApplication deployOperation = null;
+    try {
+      monitor.beginTask( "Deploying VMIs", 2 );
+      deployOperation = new OpenStackOpDeployApplication( OpenStackClient.getInstance(),
+                                                   description );
+      
+        if( deployOperation.getException() != null ) {
+        throw deployOperation.getException();
+      }
+      new OperationExecuter().execOp( deployOperation );
+    } catch( Exception e ) {
+      e.printStackTrace( );
+      
+    } finally {
+      monitor.done();
+    }
+    
     return null;
   }
 
@@ -165,7 +184,28 @@
                                                final IProgressMonitor monitor )
     throws ProblemException
   {
-    // TODO Auto-generated method stub
+    OpenStackOpDeployApplication deployOperation = null;
+    try {
+      monitor.beginTask( "Deploying VMIs", 2 );
+      TOSCAModel model;
+      if (description instanceof TOSCAModel){
+        model = (TOSCAModel) description;
+      }
+
+      deployOperation = new OpenStackOpDeployApplication( OpenStackClient.getInstance(),
+                                                   (TOSCAResource) description );
+      
+        if( deployOperation.getException() != null ) {
+        throw deployOperation.getException();
+      }
+      new OperationExecuter().execOp( deployOperation );
+    } catch( Exception e ) {
+      e.printStackTrace( );
+      
+    } finally {
+      monitor.done();
+    }
+    
     return null;
   }
 
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProvider.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProvider.java
index 9ea5177..4877b5c 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProvider.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProvider.java
@@ -18,6 +18,7 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.camf.connectors.openstack.info.IOpenStackCategories;
 import org.eclipse.camf.connectors.openstack.info.OpenStackInfoService;
 import org.eclipse.camf.connectors.openstack.internal.Activator;
 import org.eclipse.camf.connectors.openstack.internal.Messages;
@@ -30,6 +31,7 @@
 import org.eclipse.camf.core.model.ICloudResourceCategory;
 import org.eclipse.camf.core.model.ISerializableElement;
 import org.eclipse.camf.core.model.impl.AbstractCloudProvider;
+import org.eclipse.camf.core.model.impl.CloudResourceCategoryFactory;
 import org.eclipse.camf.core.reporting.ProblemException;
 import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileStore;
@@ -57,6 +59,14 @@
    * Name of this Cloud Provider used in the {@link IFileStore}.
    */
   private String cpName;
+  
+  /** The categories published by this {@link IVirtualOrganization}. */
+  public static ICloudResourceCategory[] STANDARD_RESOURCE_CATEGORIES = new ICloudResourceCategory[]{
+    CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_IMAGES ),
+    CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_NETWORKING ),
+    CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_SECURITY),
+    CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_STORAGE )
+  };
 
 
   /**
@@ -186,8 +196,8 @@
                      problemEx );
     }
 
-//    Collections.addAll( categoriesList,
-//                        OSCloudProvider.STANDARD_RESOURCE_CATEGORIES );
+    Collections.addAll( categoriesList,
+                        OpenStackCloudProvider.STANDARD_RESOURCE_CATEGORIES );
     return categoriesList.toArray( new ICloudResourceCategory[ categoriesList.size() ] );
   }
 
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProviderProperties.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProviderProperties.java
index 0c5b9c9..d5f88df 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProviderProperties.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackCloudProviderProperties.java
@@ -27,6 +27,7 @@
 import org.eclipse.camf.core.ICoreProblems;
 import org.eclipse.camf.core.model.CloudModel;
 import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudProviderProperties;
 import org.eclipse.camf.core.model.ISerializableElement;
 import org.eclipse.camf.core.model.impl.AbstractCloudElement;
 import org.eclipse.camf.core.reporting.ProblemException;
@@ -55,7 +56,7 @@
  * @see OpenStackCloudProviderCreator
  */
 public class OpenStackCloudProviderProperties extends AbstractCloudElement
-  implements ISerializableElement
+  implements ISerializableElement, ICloudProviderProperties
 {
 
   /** Name to reference the properties in the {@link CloudModel}. */
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackService.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackService.java
new file mode 100644
index 0000000..3a042cc
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackService.java
@@ -0,0 +1,274 @@
+package org.eclipse.camf.connectors.openstack;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.eclipse.camf.connectors.openstack.info.OpenStackInfoService;
+import org.eclipse.camf.connectors.openstack.internal.Activator;
+import org.eclipse.camf.core.ICoreProblems;
+import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudElement;
+import org.eclipse.camf.core.model.ICloudInfoService;
+import org.eclipse.camf.core.model.ICloudResourceCategory;
+import org.eclipse.camf.core.model.ISerializableElement;
+import org.eclipse.camf.core.model.impl.AbstractCloudContainer;
+import org.eclipse.camf.core.reporting.ProblemException;
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+public class OpenStackService extends AbstractCloudContainer
+  implements IOpenStackService, ISerializableElement
+{
+  /** Name to reference the service. */
+  public static final String STORAGE_NAME = "org.eclipse.camf.connectors.openstack.service.osServiceCreator"; //$NON-NLS-1$
+
+  /** The {@link OpenStackCloudProvider} this service is based on. */
+  private OpenStackCloudProvider osCP;
+
+  /** The categories introduced by this {@link IosService}. */
+  public static ICloudResourceCategory[] standardResources = new ICloudResourceCategory[]{
+//    CloudResourceCategoryFactory.getCategory( IEC2Categories.CATEGORY_EC2_IMAGES ),
+//    CloudResourceCategoryFactory.getCategory( IEC2Categories.CATEGORY_EC2_IMAGES_ALL ),
+//    CloudResourceCategoryFactory.getCategory( IEC2Categories.CATEGORY_EC2_IMAGES_MY_OWNED ),
+//    CloudResourceCategoryFactory.getCategory( IEC2Categories.CATEGORY_EC2_IMAGES_MY_ACCESSIBLE ),
+//    CloudResourceCategoryFactory.getCategory( IEC2Categories.CATEGORY_EC2_SECURITY_GROUPS ),
+//    CloudResourceCategoryFactory.getCategory( IEC2Categories.CATEGORY_EC2_KEYPAIRS ),
+//    CloudResourceCategoryFactory.getCategory( IEC2Categories.CATEGORY_EC2_ELASTIC_IP )
+  };
+
+  /**
+   * Create a new {@link OpenStackService} with the service creator acting as the
+   * source of initial configuration directives.
+   * 
+   * @param serviceCreator the initial configuration
+   * @param cp the Vo to use for authentication
+   */
+  public OpenStackService( final OpenStackServiceCreator serviceCreator,
+                     final OpenStackCloudProvider cp )
+  {
+    this.osCP = cp;
+    try {
+      addElement( new OpenStackInfoService( cp  ) );
+      apply( serviceCreator );
+    } catch( ProblemException problemEx ) {
+      Activator.log( "Could not populate OpenStackService with data from provided EC2 service creator and the infoservice", //$NON-NLS-1$
+                     problemEx );
+    }
+  }
+
+  /**
+   * Creates a new {@link OpenStackService} where the properties are loaded from the
+   * local storage.
+   * 
+   * @param cp the Vo to use for authentication
+   */
+  public OpenStackService( final OpenStackCloudProvider cp ) {
+    this.osCP = cp;
+    try {
+      OpenStackServiceProperties serviceProperties = new OpenStackServiceProperties( this );
+      serviceProperties.deserialize();
+      addElement( serviceProperties );
+      addElement( new OpenStackInfoService( cp ) );
+    } catch( ProblemException e ) {
+      Activator.log( "Could not load the ec2 service details from the filestore", //$NON-NLS-1$
+                     e );
+    }
+  }
+
+  @Override
+  public boolean canContain( final ICloudElement element ) {
+    return element instanceof OpenStackServiceProperties
+           || element instanceof OpenStackInfoService;
+  }
+
+  /**
+   * This Method transfers the name and the properties of the
+   * {@link OpenStackServiceCreator} to the {@link OpenStackService}.
+   * 
+   * @param serviceCreator the {@link OpenStackServiceCreator} to apply the data from
+   * @throws ProblemException
+   */
+  public void apply( final OpenStackServiceCreator serviceCreator )
+    throws ProblemException
+  {
+    OpenStackServiceProperties properties = new OpenStackServiceProperties( this,
+                                                                serviceCreator );
+    // add properties to this service, replacing the existing properties
+    addElement( properties );
+  }
+
+  public ICloudResourceCategory[] getSupportedResources() {
+    return OpenStackService.standardResources;
+  }
+
+  public String getHostName() {
+    OpenStackServiceProperties properties = null;
+    try {
+      properties = getProperties();
+    } catch( ProblemException e ) {
+      Activator.log( "Could not load the properties of the ec2 service", e ); //$NON-NLS-1$
+    }
+    if( properties != null ) {
+      return properties.getOpenStackUrl();
+    }
+    return null;
+  }
+
+  public URI getURI() {
+    String hostName = getHostName();
+    try {
+      if( hostName != null ) {
+        return new URI( hostName );
+      }
+    } catch( URISyntaxException e ) {
+      Activator.log( "Could not create EC2 service URI from " + hostName, e ); //$NON-NLS-1$
+    }
+    return null;
+  }
+
+  public IFileStore getFileStore() {
+    return getParent().getFileStore().getChild( OpenStackService.STORAGE_NAME );
+  }
+
+  public String getName() {
+    OpenStackServiceProperties properties = null;
+    try {
+      properties = getProperties();
+    } catch( ProblemException gridModelEx ) {
+      Activator.log( "Could not load the properties of the ec2 service", gridModelEx ); //$NON-NLS-1$
+    }
+    if( properties != null ) {
+      return properties.getServiceName();
+    }
+    return null;
+  }
+
+  public ICloudContainer getParent() {
+    return this.osCP;
+  }
+
+  public IPath getPath() {
+    return getParent().getPath().append( OpenStackService.STORAGE_NAME );
+  }
+
+  public IResource getResource() {
+    return null;
+  }
+
+  public boolean isLocal() {
+    return true;
+  }
+
+  public boolean isLazy() {
+    return false;
+  }
+
+  @Override
+  public boolean equals( final Object obj ) {
+    boolean result = false;
+    if( obj instanceof OpenStackService ) {
+      result = equals( ( OpenStackService )obj );
+    }
+    return result;
+  }
+
+  /**
+   * A comparison method using the {@link OpenStackService#voName} as comparison
+   * criteria.
+   * 
+   * @param service the {@link OpenStackService} to compare with
+   * @return if the two services are equal in regards to their name
+   */
+  private boolean equals( final OpenStackService service ) {
+    return getName().equals( service.getName() );
+  }
+
+  /**
+   * Find the {@link OpenStackServiceProperties} in the list of children of this
+   * service.
+   * 
+   * @return this services properties or <code>null</code> if no properties
+   *         could be retrieved
+   * @throws ProblemException if an error occurs while fetching the properties.
+   */
+  public OpenStackServiceProperties getProperties() throws ProblemException {
+    OpenStackServiceProperties properties = null;
+    ICloudElement[] children = getChildren( null );
+
+    for( ICloudElement child : children ) {
+      if( child instanceof OpenStackServiceProperties ) {
+        properties = ( OpenStackServiceProperties )child;
+        break;
+      }
+    }
+    return properties;
+  }
+
+  public ICloudInfoService getInfoService() {
+    ICloudInfoService infoService = null;
+    try {
+      ICloudElement[] children = getChildren( null );
+      for( ICloudElement child : children ) {
+        if( child instanceof ICloudInfoService ) {
+          infoService = ( OpenStackInfoService )child;
+          break;
+        }
+      }
+    } catch( ProblemException cloudModelEx ) {
+      Activator.log( "Could not get info service from OpenStackService", cloudModelEx ); //$NON-NLS-1$
+    }
+    return infoService;
+  }
+
+  public void deserialize() throws ProblemException {
+    deleteAll();
+    addElement( new OpenStackInfoService( this.osCP ) );
+    IFileStore fileStore = getFileStore();
+    try {
+      IFileStore[] childStores = fileStore.childStores( EFS.NONE, null );
+      for( IFileStore child : childStores ) {
+
+        if( child.getName().equals( OpenStackServiceProperties.STORAGE_NAME ) ) {
+          OpenStackServiceProperties serviceProperties = new OpenStackServiceProperties( this );
+          serviceProperties.deserialize();
+          addElement( serviceProperties );
+        }
+      }
+    } catch( CoreException cExc ) {
+      throw new ProblemException( ICoreProblems.MODEL_ELEMENT_LOAD_FAILED,
+                                  cExc,
+                                  Activator.PLUGIN_ID );
+    }
+  }
+
+  public void serialize() throws ProblemException {
+    // create own storage directory
+    IFileStore fileStore = getFileStore();
+    if( !fileStore.fetchInfo().exists() ) {
+      try {
+        fileStore.mkdir( EFS.NONE, new NullProgressMonitor() );
+      } catch( CoreException e ) {
+        Activator.log( "Could not create storage dir for OpenStackService", e ); //$NON-NLS-1$
+        return;
+      }
+    }
+
+    // save children
+    ICloudElement[] children = getChildren( null );
+    for( ICloudElement child : children ) {
+      if( child instanceof ISerializableElement ) {
+        ( ( ISerializableElement )child ).serialize();
+      }
+    }
+  }
+
+  @Override
+  public void share() throws ProblemException {
+    // TODO Auto-generated method stub
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackServiceCreator.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackServiceCreator.java
new file mode 100644
index 0000000..4260b34
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackServiceCreator.java
@@ -0,0 +1,76 @@
+package org.eclipse.camf.connectors.openstack;
+
+import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudElement;
+import org.eclipse.camf.core.model.ICloudElementCreator;
+import org.eclipse.camf.core.model.impl.AbstractCloudElementCreator;
+import org.eclipse.camf.core.reporting.ProblemException;
+import org.eclipse.core.filesystem.IFileStore;
+
+public class OpenStackServiceCreator extends AbstractCloudElementCreator
+  implements IOpenStackServiceCreator
+{
+
+  /** The creators extension ID. */
+  private static final String EXTENSION_ID = "org.eclipse.camf.connectors.openstack.service.osServiceCreator"; //$NON-NLS-1$
+  /**
+   * An {@link IFileStore} handle containing this {@link AWSVoCreator} and its
+   * children.
+   */
+  private IFileStore osServiceCreatorFileStore;
+  /** The URL to the OpenStack Computing Cloud service. */
+  private String osUrl;
+  /**
+   * The name of the service which this {@link ICloudElementCreator} can create.
+   */
+  private String serviceName;
+
+  public ICloudElement create( final ICloudContainer parent )
+    throws ProblemException
+  {
+    OpenStackService ec2Service = null;
+    if( parent instanceof OpenStackCloudProvider ) {
+      OpenStackCloudProvider awsCP = ( OpenStackCloudProvider )parent;
+      if( this.osServiceCreatorFileStore == null ) {
+        ec2Service = new OpenStackService( this, awsCP );
+      } else {
+        ec2Service = new OpenStackService( awsCP );
+      }
+    }
+    return ec2Service;
+  }
+
+  public String getExtensionID() {
+    return OpenStackServiceCreator.EXTENSION_ID;
+  }
+
+  /**
+   * @return the serviceName
+   */
+  public String getServiceName() {
+    return this.serviceName;
+  }
+
+  /**
+   * @param serviceName the serviceName to set
+   */
+  public void setServiceName( final String serviceName ) {
+    this.serviceName = serviceName;
+  }
+
+  public String getName() {
+    return this.serviceName;
+  }
+
+  public String getServiceURL() {
+    return this.osUrl;
+  }
+
+  public void setName( final String name ) {
+    this.serviceName = name;
+  }
+
+  public void setServiceURL( final String url ) {
+    this.osUrl = url;
+  }
+}
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackServiceProperties.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackServiceProperties.java
new file mode 100644
index 0000000..87cb1df
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/OpenStackServiceProperties.java
@@ -0,0 +1,227 @@
+/*****************************************************************************
+ * Copyright (c) 2008 g-Eclipse Consortium 
+ * 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
+ *
+ * Initial development of the original code was made for the
+ * g-Eclipse project founded by European Union
+ * project number: FP6-IST-034327  http://www.geclipse.eu/
+ *
+ * Contributors:
+ *    Moritz Post - initial API and implementation
+ *    Nicholas Loulloudes - code adapter for CELAR project, 2013
+ *****************************************************************************/
+package org.eclipse.camf.connectors.openstack;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+
+import org.eclipse.camf.connectors.openstack.internal.Activator;
+import org.eclipse.camf.core.ICoreProblems;
+import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ISerializableElement;
+import org.eclipse.camf.core.model.impl.AbstractCloudElement;
+import org.eclipse.camf.core.reporting.ProblemException;
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+
+
+
+
+/**
+ * The {@link OpenStackServiceProperties} hold the various properties specific to the
+ * OpenStack infrastructure. Both in terms of OpenStack specific as well as CAMF
+ * specific means. The currently kept properties are:
+ * <ul>
+ * <li>{@link #ec2Url}</li>
+ * <li>{@link #serviceName}</li>
+ * </ul>
+ * These properties are kept on persistent storage under the key provided by
+ * {@link #STORAGE_NAME}.
+ * 
+ * @author Nicholas Loulloudes
+ * @see OpenStackService
+ */
+public class OpenStackServiceProperties extends AbstractCloudElement
+  implements ISerializableElement
+{
+
+  /** Name to reference the properties. */
+  public static final String STORAGE_NAME = ".os_service_properties"; //$NON-NLS-1$
+
+  /** The parent {@link IGridElement}. */
+  private OpenStackService osService;
+
+  /** The url to access OpenStack webservices. */
+  private String osUrl;
+
+  /** The name of this {@link IOpenStackService} */
+  private String serviceName;
+
+  /**
+   * Create a new properties object with the given {@link OpenStackService} as parent.
+   * 
+   * @param osService the parent {@link ICloudElement}
+   */
+  public OpenStackServiceProperties( final OpenStackService osService ) {
+    this.osService = osService;
+  }
+
+  /**
+   * Create a new properties object with the given {@link EC2Service} as parent.
+   * The {@link OpenStackServiceCreator} provides the initial properties.
+   * 
+   * @param osService the parent {@link IGridElement}
+   * @param serviceCreator the provider for configuration directives
+   */
+  public OpenStackServiceProperties( final OpenStackService osService,
+                               final OpenStackServiceCreator serviceCreator )
+  {
+    this.osService = osService;
+    this.osUrl = serviceCreator.getServiceURL();
+    this.serviceName = serviceCreator.getServiceName();
+  }
+
+  public void deserialize() throws ProblemException {
+    BufferedReader bufferedReader = null;
+    try {
+      IFileStore fileStore = getFileStore();
+      InputStream iStream = fileStore.openInputStream( EFS.NONE, null );
+      InputStreamReader iReader = new InputStreamReader( iStream );
+      bufferedReader = new BufferedReader( iReader );
+
+      String serviceName = bufferedReader.readLine();
+      if ( serviceName != null && serviceName.trim().length() != 0 ) {
+        this.serviceName = serviceName;
+      }
+
+      String url = bufferedReader.readLine();
+      if ( url != null && url.trim().length() != 0 ) {
+        this.osUrl = url;
+      }
+    } catch ( IOException ioExc ) {
+      throw new ProblemException( ICoreProblems.MODEL_ELEMENT_LOAD_FAILED,
+                                  ioExc,
+                                  Activator.PLUGIN_ID );
+    } catch ( CoreException cExc ) {
+      throw new ProblemException( ICoreProblems.MODEL_ELEMENT_LOAD_FAILED,
+                                  cExc,
+                                  Activator.PLUGIN_ID );
+    } finally {
+      if ( bufferedReader != null ) {
+        try {
+          bufferedReader.close();
+        } catch ( IOException ioExc ) {
+          throw new ProblemException( ICoreProblems.MODEL_ELEMENT_LOAD_FAILED,
+                                    ioExc,
+                                    Activator.PLUGIN_ID );
+        }
+      }
+    }
+  }
+
+  public void serialize() throws ProblemException {
+    IFileStore fileStore = getFileStore();
+    BufferedWriter bWriter = null;
+    try {
+      OutputStream oStream = fileStore.openOutputStream( EFS.NONE, null );
+      OutputStreamWriter osWriter = new OutputStreamWriter( oStream );
+      bWriter = new BufferedWriter( osWriter );
+
+      if ( this.serviceName != null ) {
+        bWriter.write( this.serviceName );
+      }
+      bWriter.write( '\n' );
+
+      if ( this.osUrl != null ) {
+        bWriter.write( this.osUrl );
+      }
+      bWriter.write( '\n' );
+    } catch ( IOException ioExc ) {
+      throw new ProblemException( ICoreProblems.MODEL_ELEMENT_LOAD_FAILED,
+                                  ioExc,
+                                  Activator.PLUGIN_ID );
+    } catch ( CoreException cExc ) {
+      throw new ProblemException( ICoreProblems.MODEL_ELEMENT_SAVE_FAILED,
+                                  cExc,
+                                  Activator.PLUGIN_ID );
+    } finally {
+      try {
+        if ( bWriter != null ) {
+          bWriter.close();
+        }
+      } catch ( IOException ioExc ) {
+        throw new ProblemException( ICoreProblems.MODEL_ELEMENT_SAVE_FAILED,
+                                    ioExc,
+                                    Activator.PLUGIN_ID );
+      }
+    }
+  }
+
+  public IFileStore getFileStore() {
+    return getParent().getFileStore().getChild( getName() );
+  }
+
+  public String getName() {
+    return OpenStackServiceProperties.STORAGE_NAME;
+  }
+
+  public ICloudContainer getParent() {
+    return this.osService;
+  }
+
+  public IPath getPath() {
+    return getParent().getPath().append( getName() );
+  }
+
+  public IResource getResource() {
+    return null;
+  }
+
+  public boolean isLocal() {
+    return true;
+  }
+
+  /**
+   * A getter for the OpenStack {@link URL}.
+   * 
+   * @return the {@link URL} to the OpenStack service.
+   */
+  public String getOpenStackUrl() {
+    return this.osUrl;
+  }
+
+  /**
+   * A setter for the OpenStack {@link URL}
+   * 
+   * @param osUrl the url to set
+   */
+  public void getOpenStackUrl( final String osUrl ) {
+    this.osUrl = osUrl;
+  }
+
+  /**
+   * @return the serviceName
+   */
+  public String getServiceName() {
+    return this.serviceName;
+  }
+
+  /**
+   * @param serviceName the serviceName to set
+   */
+  public void setServiceName( final String serviceName ) {
+    this.serviceName = serviceName;
+  }
+}
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/IOpenStackCategories.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/IOpenStackCategories.java
new file mode 100644
index 0000000..b7e1906
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/IOpenStackCategories.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Laboratory for Internet Computing, University of Cyprus.
+ * 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
+ *
+ * Initial development of the original code was made for the 
+ * CELAR project founded by European Union
+ * project number: FP7-317790  http://www.celarcloud.eu
+ *
+ * Contributors:
+ * 	Nicholas Loulloudes - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.camf.connectors.openstack.info;
+
+public interface IOpenStackCategories {
+	
+	public static final String CATEGORY_OPENSTACK_IMAGES = "org.eclipse.camf.connectors.openstack.images";
+	
+	public static final String CATEGORY_OPENSTACK_NETWORKING = "org.eclipse.camf.connectors.openstack.networking";
+	
+	public static final String CATEGORY_OPENSTACK_STORAGE = "org.eclipse.camf.connectors.openstack.storage";
+	
+	public static final String CATEGORY_OPENSTACK_SECURITY = "org.eclipse.camf.connectors.openstack.security";
+}
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/IOpenStackServiceCreator.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/IOpenStackServiceCreator.java
new file mode 100644
index 0000000..0f47721
--- /dev/null
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/IOpenStackServiceCreator.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Laboratory for Internet Computing, University of Cyprus.
+ * 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
+ *
+ * Initial development of the original code was made for the 
+ * CELAR project founded by European Union
+ * project number: FP7-317790  http://www.celarcloud.eu
+ *
+ * Contributors:
+ * 	Nicholas Loulloudes - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.camf.connectors.openstack.info;
+
+import org.eclipse.camf.core.model.ICloudElementCreator;
+
+/**
+ * @author nickl
+ *
+ */
+public interface IOpenStackServiceCreator extends ICloudElementCreator {
+
+	public void setName(String name);
+
+	public String getName();
+
+	/**
+	 * Set the url the service interacts with.
+	 * 
+	 * @param url
+	 * the url to set
+	 */
+	public void setServiceURL(String url);
+
+	/**
+	 * Gets the service url of the service to be created.
+	 * 
+	 * @return the service url to get
+	 */
+	public String getServiceURL();
+
+}
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/OpenStackInfoService.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/OpenStackInfoService.java
index 8284080..462397c 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/OpenStackInfoService.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/info/OpenStackInfoService.java
@@ -10,7 +10,7 @@
  * project number: FP7-317790  http://www.celarcloud.eu
  *
  * Contributors:
- * 	Nicholas Loulloudes - initial API and implementation
+ *  Nicholas Loulloudes - initial API and implementation
  *******************************************************************************/
 package org.eclipse.camf.connectors.openstack.info;
 
@@ -18,8 +18,23 @@
 import java.util.ArrayList;
 
 import org.eclipse.camf.connectors.openstack.OpenStackApplicationDeploymentService;
+import org.eclipse.camf.connectors.openstack.OpenStackClient;
 import org.eclipse.camf.connectors.openstack.OpenStackCloudProvider;
+import org.eclipse.camf.connectors.openstack.internal.Messages;
+import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpDescribeImages;
+import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpDescribeNetworks;
+import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpFlavors;
+import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpKeyPairs;
+import org.eclipse.camf.connectors.openstack.operation.AbstractOpenStackOpSecurityGroups;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeFlavors;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeImages;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeKeyPairs;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeNetworks;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpDescribeSecurityGroups;
+import org.eclipse.camf.connectors.openstack.operation.OpenStackOpExceptions;
+import org.eclipse.camf.connectors.openstack.operation.OperationExecuter;
 import org.eclipse.camf.core.model.ICloudContainer;
+import org.eclipse.camf.core.model.ICloudInfoService;
 import org.eclipse.camf.core.model.ICloudProvider;
 import org.eclipse.camf.core.model.ICloudResource;
 import org.eclipse.camf.core.model.ICloudResourceCategory;
@@ -27,90 +42,121 @@
 import org.eclipse.camf.core.model.impl.AbstractCloudInfoSystem;
 import org.eclipse.camf.core.model.impl.CloudResourceCategoryFactory;
 import org.eclipse.camf.core.reporting.ProblemException;
+import org.eclipse.camf.infosystem.InfoService;
+import org.eclipse.camf.infosystem.model.base.AbstractInfoCache;
+import org.eclipse.camf.infosystem.model.base.CloudProvider;
+import org.eclipse.camf.infosystem.model.base.Flavors;
+import org.eclipse.camf.infosystem.model.base.Groups;
+import org.eclipse.camf.infosystem.model.base.IExtendedInfoService;
+import org.eclipse.camf.infosystem.model.base.Images;
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.Keys;
+import org.eclipse.camf.infosystem.model.base.Networks;
+import org.eclipse.camf.infosystem.model.base.Root;
+import org.eclipse.camf.infosystem.model.base.Security;
+import org.eclipse.camf.infosystem.model.base.VMI;
+import org.eclipse.camf.infosystem.model.base.VirtualMachineImage;
+import org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor;
+import org.eclipse.camf.infosystem.model.base.VirtualNetwork;
 import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
-
+import org.jclouds.compute.domain.Image;
+import org.jclouds.openstack.neutron.v2.domain.Network;
+import org.jclouds.openstack.nova.v2_0.domain.Flavor;
+import org.jclouds.openstack.nova.v2_0.domain.KeyPair;
+import org.jclouds.openstack.nova.v2_0.domain.SecurityGroup;
 
 /**
  * @author Nicholas Loulloudes
- *
  */
-public class OpenStackInfoService extends AbstractCloudInfoSystem {
-  
+public class OpenStackInfoService extends AbstractCloudInfoSystem
+  implements IExtendedInfoService
+{
+
+  /** The name of the file to save this grid element in. */
+  public static String STORAGE_NAME = ".osInfoService"; //$NON-NLS-1$
+  private static String CP_TYPE = "org.eclipse.camf.connectors.openstack";
   private OpenStackCloudProvider osCP;
-  
-  
-  public OpenStackInfoService (final OpenStackCloudProvider cp) {
+
+  public OpenStackInfoService( final OpenStackCloudProvider cp ) {
     this.osCP = cp;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudResource#getURI()
    */
   @Override
   public URI getURI() throws ProblemException {
-    // TODO Auto-generated method stub
-    return null;
+    return this.osCP.getProperties().getOpenStackEndpoint(); //$NON-NLS-1$
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getName()
    */
   @Override
   public String getName() {
-    // TODO Auto-generated method stub
-    return null;
+    String result = "OpenStack @ ";
+    try {
+      result += getURI();
+    } catch( ProblemException e ) {
+      e.printStackTrace();
+    } //$NON-NLS-1$
+    return result;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getFileStore()
    */
   @Override
   public IFileStore getFileStore() {
-    // TODO Auto-generated method stub
-    return null;
+    return getParent().getFileStore()
+      .getChild( OpenStackInfoService.STORAGE_NAME );
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getPath()
    */
   @Override
   public IPath getPath() {
-    // TODO Auto-generated method stub
-    return null;
+    return getParent().getPath().append( OpenStackInfoService.STORAGE_NAME );
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getResource()
    */
   @Override
   public IResource getResource() {
-    // TODO Auto-generated method stub
     return null;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#getParent()
    */
   @Override
   public ICloudContainer getParent() {
-    // TODO Auto-generated method stub
-    return null;
+    return this.osCP;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.ICloudElement#isLocal()
    */
   @Override
   public boolean isLocal() {
-    // TODO Auto-generated method stub
-    return false;
+    return true;
   }
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
    * @see org.eclipse.camf.core.model.IShareableElement#share()
    */
   @Override
@@ -118,8 +164,13 @@
     // TODO Auto-generated method stub
   }
 
-  /* (non-Javadoc)
-   * @see org.eclipse.camf.core.model.ICloudInfoService#fetchResources(org.eclipse.camf.core.model.ICloudContainer, org.eclipse.camf.core.model.ICloudProvider, boolean, java.lang.Class, org.eclipse.core.runtime.IProgressMonitor)
+  /*
+   * (non-Javadoc)
+   * @see
+   * org.eclipse.camf.core.model.ICloudInfoService#fetchResources(org.eclipse
+   * .camf.core.model.ICloudContainer,
+   * org.eclipse.camf.core.model.ICloudProvider, boolean, java.lang.Class,
+   * org.eclipse.core.runtime.IProgressMonitor)
    */
   @Override
   public ICloudResource[] fetchResources( final ICloudContainer parent,
@@ -131,49 +182,385 @@
     throws ProblemException
   {
     ICloudResource[] result = null;
-    
-    IProgressMonitor lMonitor
-      = monitor == null
-      ? new NullProgressMonitor()
-      : monitor;
-    
-    
-    if (!lMonitor.isCanceled())
+    if( category.equals( CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_IMAGES ) ) )
     {
-      if ( category.equals( CloudResourceCategoryFactory.
-                            getCategory( CloudResourceCategoryFactory.ID_DEPLOYMENT_SERVICES ) ) ) {
-        result = fetchDeploymentServices( parent, cp, lMonitor );
-      }  
-    }
-    
-    if ( ( result != null ) && ( typeFilter != null ) ) {
-      result = filterResources( result, typeFilter, false );
-    }
-    
-    if (result == null)
-      result = new ICloudResource[0];
+      result = fetchImages( parent,
+                            cp,
+                            monitor,
+                            new OpenStackOpDescribeImages( getClient() ) );
+      fetchFlavors( parent,
+                    cp,
+                    monitor,
+                    new OpenStackOpDescribeFlavors( getClient() ) );    
+    } else if( category.equals( CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_SECURITY ) ) )
+    {
+      fetchKeyPairs( parent,
+                              cp,
+                              monitor,
+                              new OpenStackOpDescribeKeyPairs( getClient() ) );
       
+      result = fetchSecurityGroups( parent,
+                              cp,
+                              monitor,
+                              new OpenStackOpDescribeSecurityGroups( getClient() ) );
+    } else if( category.equals( CloudResourceCategoryFactory.getCategory( IOpenStackCategories.CATEGORY_OPENSTACK_NETWORKING ) ) )
+    {
+      result = fetchNetworks( parent,
+                              cp,
+                              monitor,
+                              new OpenStackOpDescribeNetworks( getClient() ) );
+    } else if( category.equals( CloudResourceCategoryFactory.getCategory( CloudResourceCategoryFactory.ID_DEPLOYMENT_SERVICES ) ) )
+    {
+      result = fetchDeploymentServices( parent, cp, monitor );
+    } else if (category.equals( CloudResourceCategoryFactory.getCategory( CloudResourceCategoryFactory.ID_ALL ) )) {
+      fetchImages( parent,
+                   cp,
+                   monitor,
+                   new OpenStackOpDescribeImages( getClient() ) );
+      
+      fetchKeyPairs( parent,
+                     cp,
+                     monitor,
+                     new OpenStackOpDescribeKeyPairs( getClient() ) );
+      fetchSecurityGroups( parent,
+                          cp,
+                          monitor,
+                          new OpenStackOpDescribeSecurityGroups( getClient() ) );
+      fetchNetworks( parent,
+                     cp,
+                     monitor,
+                     new OpenStackOpDescribeNetworks( getClient() ) );
+      fetchFlavors( parent,
+                     cp,
+                     monitor,
+                     new OpenStackOpDescribeFlavors( getClient() ) );
+    }
+    if( result == null )
+      result = new ICloudResource[ 0 ];
     return result;
   }
-  
-  private ICloudService[] fetchDeploymentServices( final ICloudContainer parent,
-                                            final ICloudProvider cp,
-                                            IProgressMonitor monitor )
+
+  /**
+   * Fetches the available AMIs of the OpenStack service using the owner as a
+   * filter.
+   * 
+   * @param parent the parent of this {@link IGridInfoService}
+   * @param cp the cp initiating the query
+   * @param monitor the monitor to notify of progress
+   * @param operation the operation to execute
+   * @return an array of {@link OpenStackAMIImage}s.
+   */
+  public ICloudResource[] fetchImages( final ICloudContainer parent,
+                                       final ICloudProvider cp,
+                                       IProgressMonitor monitor,
+                                       final AbstractOpenStackOpDescribeImages operation )
   {
-    ArrayList<ICloudService> servicesList = new ArrayList<ICloudService>();
-        
     if( monitor == null ) {
       monitor = new NullProgressMonitor();
     }
-    
+    try {
+      // fetch existing AMI images from OpenStack service
+      monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
+                         2 );
+      new OperationExecuter().execOp( operation );
+      monitor.worked( 1 );
+      if( operation.getException() == null ) {
+        // transform answer into gEclipse format
+        ArrayList<ICloudResource> resultCloudService = new ArrayList<ICloudResource>( operation.getResult()
+          .size() );
+        Root root = InfoService.getInstance().getRoot();
+        boolean newCP = false;
+        CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+        if( infoCP == null ) {
+          infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+          infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
+          newCP = true;
+        }
+        Images images = InfoService.getInstance().getFactory().createImages();
+        infoCP.setImages( images );
+        for( Image ami : operation.getResult() ) {
+          VirtualMachineImage vmi = InfoSystemFactory.eINSTANCE.createVirtualMachineImage();
+          vmi.setUID( ami.getId() );
+          vmi.setDescription( ami.getDescription() );
+          vmi.setName( ami.getName() );
+          vmi.setURL( ami.getLocation().toString() );
+          resultCloudService.add( new VMI( parent, vmi ) );
+          images.getVms().add( vmi );
+        }
+        if( newCP )
+          root.getCloudProviders().add( infoCP );
+        monitor.worked( 2 );
+        monitor.done();
+        return resultCloudService.toArray( new ICloudResource[ resultCloudService.size() ] );
+      } else {
+        throw new OpenStackOpExceptions( "Failed to get images  list. Please contact your system administrator",
+                                         OpenStackOpExceptions.ExceptionType.IMAGES );
+      }
+    } catch( Exception e ) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+
+  /**
+   * Fetches the available Keypairs of the OpenStack service using the owner as
+   * a filter.
+   * 
+   * @param parent the parent of this {@link ICloudInfoService}
+   * @param cp the cp initiating the query
+   * @param monitor the monitor to notify of progress
+   * @param operation the operation to execute
+   * @return an array of {@link org.eclipse.camf.infosystem.model.base.KeyPair}s.
+   */
+  public ICloudResource[] fetchKeyPairs( final ICloudContainer parent,
+                                         final ICloudProvider cp,
+                                         IProgressMonitor monitor,
+                                         final AbstractOpenStackOpKeyPairs operation )
+  {
+    try {
+      if( monitor == null ) {
+        monitor = new NullProgressMonitor();
+      }
+      // fetch existing AMI images from OpenStack service
+      monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
+                         2 );
+      new OperationExecuter().execOp( operation );
+      monitor.worked( 1 );
+      if( operation.getException() == null ) {
+        Root root = InfoService.getInstance().getRoot();
+        boolean newCP = false;
+        CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+        if( infoCP == null ) {
+          infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+          infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
+          newCP = true;
+        }
+        
+        Security security;
+        if (infoCP.getSecurity() == null) {
+          security = InfoService.getInstance().getFactory().createSecurity();
+          infoCP.setSecurity( security );
+        } else {
+          security = infoCP.getSecurity();
+        }
+        
+        Keys keys = InfoService.getInstance().getFactory().createKeys();
+        security.setKeys( keys );
+
+        for( KeyPair remoteKeyPair : operation.getResult() ) {
+          org.eclipse.camf.infosystem.model.base.KeyPair kp = InfoSystemFactory.eINSTANCE.createKeyPair();
+          kp.setName( remoteKeyPair.getName() );
+          kp.setUID( remoteKeyPair.getFingerprint() );
+          keys.getKeypairs().add( kp );
+        }
+        if( newCP )
+          root.getCloudProviders().add( infoCP );
+        monitor.worked( 2 );
+        monitor.done();
+        return null;
+      } else {
+        throw new OpenStackOpExceptions( "Failed to get keypairs. Please contact your system administrator",
+                                         OpenStackOpExceptions.ExceptionType.KEYPAIR );
+      }
+    } catch( Exception e ) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+  
+  
+  /**
+   * Fetches the available Networks of the OpenStack service using the owner as
+   * a filter.
+   * 
+   * @param parent the parent of this {@link ICloudInfoService}
+   * @param cp the cp initiating the query
+   * @param monitor the monitor to notify of progress
+   * @param operation the operation to execute
+   * @return an array of {@link Networks}s.
+   */
+  public ICloudResource[] fetchSecurityGroups( final ICloudContainer parent,
+                                               final ICloudProvider cp,
+                                               IProgressMonitor monitor,
+                                               final AbstractOpenStackOpSecurityGroups operation )
+  {
+    try {
+      if( monitor == null ) {
+        monitor = new NullProgressMonitor();
+      }
+      // fetch existing AMI images from OpenStack service
+      monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
+                         2 );
+      new OperationExecuter().execOp( operation );
+      monitor.worked( 1 );
+      if( operation.getException() == null ) {
+        Root root = InfoService.getInstance().getRoot();
+        boolean newCP = false;
+        CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+        if( infoCP == null ) {
+          infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+          infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
+          newCP = true;
+        }
+        
+        Security security;
+        if (infoCP.getSecurity() == null) {
+          security = InfoService.getInstance().getFactory().createSecurity();
+          infoCP.setSecurity( security );
+        } else {
+          security = infoCP.getSecurity();
+        }
+        
+        
+        Groups groups = InfoService.getInstance().getFactory().createGroups();
+        security.setGroups( groups );
+        
+        for( SecurityGroup securitygroup : operation.getResult() ) {
+           org.eclipse.camf.infosystem.model.base.SecurityGroup sg = InfoSystemFactory.eINSTANCE
+              .createSecurityGroup();
+          sg.setName( securitygroup.getName() );
+          sg.setUID( securitygroup.getId() );
+          sg.setDescription(securitygroup.getDescription());
+          groups.getSecurityGroups().add( sg );
+        }
+        if( newCP )
+          root.getCloudProviders().add( infoCP );
+        monitor.worked( 2 );
+        monitor.done();
+        return null;
+      } else {
+        throw new OpenStackOpExceptions( "Failed to get keypairs. Please contact your system administrator",
+                                         OpenStackOpExceptions.ExceptionType.KEYPAIR );
+      }
+    } catch( Exception e ) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+  
+  public ICloudResource[] fetchNetworks( final ICloudContainer parent,
+                                         final ICloudProvider cp,
+                                         IProgressMonitor monitor,
+                                         final AbstractOpenStackOpDescribeNetworks operation )
+  {
+    try {
+      if( monitor == null ) {
+        monitor = new NullProgressMonitor();
+      }
+      // fetch existing AMI images from OpenStack service
+      monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
+                         2 );
+      new OperationExecuter().execOp( operation );
+      monitor.worked( 1 );
+      if( operation.getException() == null ) {
+        Root root = InfoService.getInstance().getRoot();
+        boolean newCP = false;
+        CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+        if( infoCP == null ) {
+          infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+          infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
+          newCP = true;
+        }
+        Networks networks = InfoService.getInstance().getFactory().createNetworks();
+        infoCP.setNetworks( networks );
+        for( Network network : operation.getResult() ) {
+          VirtualNetwork vn = InfoSystemFactory.eINSTANCE.createVirtualNetwork();
+          vn.setName( network.getName() );
+          vn.setUID( network.getId() );
+          networks.getNets().add( vn );
+        }
+        if( newCP )
+          root.getCloudProviders().add( infoCP );
+        monitor.worked( 2 );
+        monitor.done();
+        return null;
+      } else {
+        throw new OpenStackOpExceptions( "Failed to get networks list. Please contact your system administrator",
+                                         OpenStackOpExceptions.ExceptionType.NETWORK );
+      }
+    } catch( Exception e ) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+  
+  public ICloudResource[] fetchFlavors( final ICloudContainer parent,
+                                         final ICloudProvider cp,
+                                         IProgressMonitor monitor,
+                                         final AbstractOpenStackOpFlavors operation )
+  {
+    try {
+      if( monitor == null ) {
+        monitor = new NullProgressMonitor();
+      }
+      // fetch existing AMI images from OpenStack service
+      monitor.beginTask( Messages.getString( "OpenStackInfoService.monitor_task_description" ), //$NON-NLS-1$
+                         2 );
+      new OperationExecuter().execOp( operation );
+      monitor.worked( 1 );
+      if( operation.getException() == null ) {
+        Root root = InfoService.getInstance().getRoot();
+        boolean newCP = false;
+        CloudProvider infoCP = InfoService.getInstance().getCloudProvider( cp );
+        if( infoCP == null ) {
+          infoCP = InfoService.getInstance().getFactory().createCloudProvider();
+          infoCP.setName( cp.getName() );
+          infoCP.setType( CP_TYPE );
+          newCP = true;
+        }
+        Flavors flavors = InfoService.getInstance().getFactory().createFlavors();
+        infoCP.setFlavors( flavors );
+        for( Flavor flavor : operation.getResult() ) {
+          VirtualMachineImageFlavor vmFlavor = InfoSystemFactory.eINSTANCE.createVirtualMachineImageFlavor();
+          vmFlavor.setName(flavor.getName());
+          vmFlavor.setUID(flavor.getId());
+          vmFlavor.setHdd(String.valueOf(flavor.getDisk()));
+          vmFlavor.setRam(String.valueOf(flavor.getRam()));
+          vmFlavor.setVCPU(String.valueOf(flavor.getVcpus()));
+          flavors.getFlavors().add(vmFlavor);
+        }
+        if( newCP )
+          root.getCloudProviders().add( infoCP );
+        monitor.worked( 2 );
+        monitor.done();
+        return null;
+      } else {
+        throw new OpenStackOpExceptions( "Failed to get networks list. Please contact your system administrator",
+                                         OpenStackOpExceptions.ExceptionType.NETWORK );
+      }
+    } catch( Exception e ) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+
+  private ICloudService[] fetchDeploymentServices( final ICloudContainer parent,
+                                                   final ICloudProvider cp,
+                                                   IProgressMonitor monitor )
+  {
+    ArrayList<ICloudService> servicesList = new ArrayList<ICloudService>();
+    if( monitor == null ) {
+      monitor = new NullProgressMonitor();
+    }
     monitor.beginTask( "Fetching OpenStack Deployment Service", 1 );
     OpenStackApplicationDeploymentService deploymentService = new OpenStackApplicationDeploymentService( parent );
     servicesList.add( deploymentService );
     monitor.worked( 2 );
     monitor.done();
-    
-    return servicesList.toArray( new ICloudService[servicesList.size()] );
-    
+    return servicesList.toArray( new ICloudService[ servicesList.size() ] );
   }
-  
+
+  private OpenStackClient getClient() {
+    return OpenStackClient.getInstance();
+  }
+
+  @Override
+  public AbstractInfoCache getInfoCache() {
+    // TODO Auto-generated method stub
+    return null;
+  }
 }
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDeployApplication.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDeployApplication.java
index 0313781..ac4219f 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDeployApplication.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDeployApplication.java
@@ -16,6 +16,9 @@
  *******************************************************************************/
 package org.eclipse.camf.connectors.openstack.operation;
 
+import static org.jclouds.compute.options.TemplateOptions.Builder.runScript;
+import static org.jclouds.scriptbuilder.domain.Statements.exec;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
@@ -30,6 +33,7 @@
 import java.util.UUID;
 
 import org.eclipse.camf.connectors.openstack.OpenStackClient;
+import org.eclipse.camf.core.model.ICloudApplicationDescription;
 import org.eclipse.camf.core.model.ICloudProject;
 import org.eclipse.camf.infosystem.model.base.Deployment;
 import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
@@ -57,10 +61,14 @@
 import org.jclouds.openstack.nova.v2_0.features.FlavorApi;
 import org.jclouds.openstack.nova.v2_0.features.ServerApi;
 import org.jclouds.openstack.nova.v2_0.options.CreateServerOptions;
+import org.jclouds.scriptbuilder.ScriptBuilder;
+import org.jclouds.scriptbuilder.domain.OsFamily;
 
+import com.google.common.base.Charsets;
 import com.google.common.collect.ComparisonChain;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Ordering;
+import com.google.common.io.Files;
 
 /**
  * Main class that gathers the necessary elements from the TOSCA description and
@@ -73,8 +81,8 @@
 public class OpenStackOpDeployApplication extends
 		AbstractOpenStackOpDeployApplication {
 
-	private final TOSCAResource toscaResource;
-	private final ICloudProject project;
+	private TOSCAResource toscaResource;
+	private ICloudProject project;
 	private final static String DEP_SCRIPTS = "/Artifacts/Deployment Scripts/";
 
 	public enum ActionToDo {
@@ -94,11 +102,21 @@
 	private KeyPairApi keyPairApi = nova.getKeyPairExtensionForZone(this.zone)
 			.get();
 	private ServerApi serverApi = nova.getServerApiForZone(this.zone);
+	private TOSCAModel toscaModel = null;
 
 	public OpenStackOpDeployApplication(final OpenStackClient client,
-			final TOSCAResource tosca) {
-		this.toscaResource = tosca;
-		this.project = this.toscaResource.getProject();
+	                                    final ICloudApplicationDescription description) {
+	  if( description instanceof TOSCAResource ) {
+	      this.toscaResource = ( TOSCAResource ) description;
+	      this.toscaModel = this.toscaResource.getTOSCAModel();
+	      this.project = this.toscaResource.getProject();
+	    } else if (description instanceof TOSCAModel) {
+	      this.toscaModel = (TOSCAModel) description;
+	      this.project = this.toscaModel.getProject();
+	    } else {
+	      this.toscaResource = null;
+	      this.toscaModel = null;
+	    }		
 	}
 
 	public OpenStackOpDeployApplication(final OpenStackClient client,
@@ -125,7 +143,8 @@
 			String start_time = new SimpleDateFormat("dd/M/yyyy hh:mm:ss")
 					.format(Calendar.getInstance().getTime());
 
-			TOSCAModel toscaModel = this.toscaResource.getTOSCAModel();
+	
+//			TOSCAModel toscaModel = this.toscaResource.getTOSCAModel();
 			TServiceTemplate serviceTemplate = toscaModel.getServiceTemplate();
 			List<HashMap<String, String>> xmlinfo = new ArrayList<HashMap<String, String>>();
 			HashMap<String, String> array = null;
@@ -180,6 +199,7 @@
 							KeyPair keyPair = null;
 							boolean keyPairExists = false;
 							String networks = null;
+							String scriptName = null;
 							String script = null;
 							String vID = null;
 
@@ -202,8 +222,12 @@
 									keyPairArtifact = artifact.getName();
 								} else if (artifactType.equals("Network")) {
 									networks = artifact.getName();
-								} else if (artifactType.equals("Script")) {
-									script = artifact.getName();
+								} else if (artifactType.equals("SD")) {
+									scriptName = artifact.getName();
+									if (artifact.getName().endsWith( ".sh" )){
+									  String string = Files.toString(importScript( artifact.getName(), project ), Charsets.UTF_8 );
+					                  script = new ScriptBuilder().addStatement( exec (string ) ).render( OsFamily.UNIX );
+									}
 								}
 
 								// get Key Pair
@@ -237,11 +261,11 @@
 									flavorID = "3";
 								}
 
-								String statements = null;
-								if (script != null) {
-									statements = importScript(script,
-											this.project);
-								}
+//								String statements = null;
+//								if (scriptName != null) {
+//									statements = importScript(scriptName,
+//											this.project);
+//								}
 							}
 
 							CreateServerOptions sv;
@@ -259,6 +283,10 @@
 							} else {
 								sv.keyPairName(keypairName);
 							}
+							
+							if (script != null) {
+							  sv.userData( script.getBytes() );
+							}
 
 							// create each instance for each module
 							// based on the initInstance parameter
@@ -420,47 +448,55 @@
 		}
 		return encodedPublicKey;
 	}
+	
+	  private static File importScript (final String file, final ICloudProject project) throws IOException {
+	    File f = null;
+	   
+	    f = new File(Platform.getLocation() + "/" + project.getName() + "/Artifacts/Deployment Scripts/" + file); //$NON-NLS-1$ //$NON-NLS-2$
+	    
+	    return f;
+	  }
 
-	/**
-	 * 
-	 * @param scriptFile
-	 * @param project
-	 * @return
-	 * @throws IOException
-	 */
-	private static String importScript(final String scriptFile,
-			final ICloudProject project) throws IOException {
-
-		/* Read Script */
-		String scriptContent = null;
-		BufferedReader br = null;
-		try {
-			// ICloudElement element =
-			// CloudModel.getRoot().findChildWithResource(
-			// publicKeyFile );
-			// For now get the File
-			// TODO - Incorporate Keypairs in CloudModel
-			File file = new File(Platform.getLocation()
-					+ "/" + project.getName() + DEP_SCRIPTS + scriptFile); //$NON-NLS-1$ //$NON-NLS-2$
-			if (file.exists()) {
-				br = new BufferedReader(new FileReader(file));
-				scriptContent = br.readLine();
-				scriptContent.trim();
-			}
-		} catch (IOException ioe) {
-			throw ioe;
-		} finally {
-			if (br != null) {
-				try {
-					br.close();
-					br = null;
-				} catch (IOException ioe) {
-					throw ioe;
-				}
-			}
-		}
-		return scriptContent;
-	}
+//	/**
+//	 * 
+//	 * @param scriptFile
+//	 * @param project
+//	 * @return
+//	 * @throws IOException
+//	 */
+//	private static String importScript(final String scriptFile,
+//			final ICloudProject project) throws IOException {
+//
+//		/* Read Script */
+//		String scriptContent = null;
+//		BufferedReader br = null;
+//		try {
+//			// ICloudElement element =
+//			// CloudModel.getRoot().findChildWithResource(
+//			// publicKeyFile );
+//			// For now get the File
+//			// TODO - Incorporate Keypairs in CloudModel
+//			File file = new File(Platform.getLocation()
+//					+ "/" + project.getName() + DEP_SCRIPTS + scriptFile); //$NON-NLS-1$ //$NON-NLS-2$
+//			if (file.exists()) {
+//				br = new BufferedReader(new FileReader(file));
+//				scriptContent = br.readLine();
+//				scriptContent.trim();
+//			}
+//		} catch (IOException ioe) {
+//			throw ioe;
+//		} finally {
+//			if (br != null) {
+//				try {
+//					br.close();
+//					br = null;
+//				} catch (IOException ioe) {
+//					throw ioe;
+//				}
+//			}
+//		}
+//		return scriptContent;
+//	}
 
 	/**
 	 * Creates a deployment object
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeFlavors.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeFlavors.java
index aecf490..473354f 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeFlavors.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeFlavors.java
@@ -19,7 +19,6 @@
 import java.util.Set;
 
 import org.eclipse.camf.connectors.openstack.OpenStackClient;
-import org.jclouds.compute.ComputeService;
 import org.jclouds.openstack.nova.v2_0.domain.Flavor;
 import org.jclouds.openstack.nova.v2_0.features.FlavorApi;
 
@@ -39,6 +38,10 @@
 	 * 
 	 * 
 	 */
+	
+	public OpenStackOpDescribeFlavors( final OpenStackClient client ) {
+      this.flavorApi = client.getFlavorApi();
+    }
 
 	public OpenStackOpDescribeFlavors() {
 		this.flavorApi = OpenStackClient.getInstance().getFlavorApi();
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeImages.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeImages.java
index 8a46880..8e80d23 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeImages.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeImages.java
@@ -18,6 +18,7 @@
 import java.util.ArrayList;
 import java.util.Set;
 
+import org.eclipse.camf.connectors.openstack.OpenStackClient;
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.domain.Image;
 
@@ -43,6 +44,10 @@
 	public OpenStackOpDescribeImages(final ComputeService computeService) {
 		this.computeService = computeService;
 	}
+	
+    public OpenStackOpDescribeImages( final OpenStackClient client ) {
+      this.computeService = client.getComputeService();
+    }
 
 	@Override
 	public void run() {
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeKeyPairs.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeKeyPairs.java
index 32b8ec6..ed7249d 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeKeyPairs.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeKeyPairs.java
@@ -19,7 +19,6 @@
 import java.util.Set;
 
 import org.eclipse.camf.connectors.openstack.OpenStackClient;
-import org.jclouds.compute.ComputeService;
 import org.jclouds.openstack.nova.v2_0.domain.KeyPair;
 import org.jclouds.openstack.nova.v2_0.extensions.KeyPairApi;
 
@@ -27,7 +26,7 @@
  * This {@link IOperation} implementation uses the {@link nova} to send a query
  * to OpenStack. It fetches all available Key Pairs.
  * 
- * @author Nicholas Loulloudes
+ * @author Nicholas Loulloudes, Andreas Kastanas
  */
 public class OpenStackOpDescribeKeyPairs extends AbstractOpenStackOpKeyPairs {
 
@@ -38,9 +37,13 @@
 	 * 
 	 */
 
-	public OpenStackOpDescribeKeyPairs() {
-		this.keyApi = OpenStackClient.getInstance().getKeyPairApi();
-	}
+  public OpenStackOpDescribeKeyPairs() {
+    this.keyApi = OpenStackClient.getInstance().getKeyPairApi();
+  }
+
+  public OpenStackOpDescribeKeyPairs( final OpenStackClient client ) {
+    this.keyApi = client.getKeyPairApi();
+  }
 
 	@Override
 	public void run() {
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeNetworks.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeNetworks.java
index a68c1ad..2a1cd0f 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeNetworks.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeNetworks.java
@@ -19,7 +19,6 @@
 import java.util.Set;
 
 import org.eclipse.camf.connectors.openstack.OpenStackClient;
-import org.jclouds.openstack.neutron.v2.NeutronApi;
 import org.jclouds.openstack.neutron.v2.domain.Network;
 import org.jclouds.openstack.neutron.v2.features.NetworkApi;
 
@@ -39,6 +38,9 @@
 	 * networks.
 	 * 
 	 */
+    public OpenStackOpDescribeNetworks( final OpenStackClient client ) {
+      this.networkApi = client.getNetworkApi();
+    }
 
 	public OpenStackOpDescribeNetworks() {
 		this.networkApi = OpenStackClient.getInstance().getNetworkApi();
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeSecurityGroups.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeSecurityGroups.java
index 914e2a3..4ed0cfa 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeSecurityGroups.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpDescribeSecurityGroups.java
@@ -33,16 +33,17 @@
 
 	private final SecurityGroupApi SecurityGroupApi;
 
-	/**
-	 * Creates a new {@link OpenStackOpDescribeSecurityGroups} to fetch
-	 * available data
-	 *
-	 */
+  /**
+   * Creates a new {@link OpenStackOpDescribeSecurityGroups} to fetch available
+   * data
+   */
+  public OpenStackOpDescribeSecurityGroups( final OpenStackClient client ) {
+    this.SecurityGroupApi = client.getSecurityGroupApi();
+  }
 
-	public OpenStackOpDescribeSecurityGroups() {
-		this.SecurityGroupApi = OpenStackClient.getInstance()
-				.getSecurityGroupApi();
-	}
+  public OpenStackOpDescribeSecurityGroups() {
+    this.SecurityGroupApi = OpenStackClient.getInstance().getSecurityGroupApi();
+  }
 
 	@Override
 	public void run() {
diff --git a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpTerminateApplication.java b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpTerminateApplication.java
index 3330292..73b25e8 100644
--- a/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpTerminateApplication.java
+++ b/plugins/org.eclipse.camf.connectors.openstack/src/org/eclipse/camf/connectors/openstack/operation/OpenStackOpTerminateApplication.java
@@ -200,6 +200,9 @@
 		return false;
 	}
 
+	public boolean terminateModuleInstance(String vID){
+		return terminateInstance(vID);
+	}
 	/**
 	 * Terminates a deployment based on the deployment ID
 	 * 
@@ -243,4 +246,4 @@
 				mod.getInstances().remove(i);
 		}
 	}
-}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.camf.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.camf.core/META-INF/MANIFEST.MF
index b4a699e..07cad32 100644
--- a/plugins/org.eclipse.camf.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.camf.core/META-INF/MANIFEST.MF
@@ -11,7 +11,8 @@
  org.eclipse.camf.core.reporting;bundle-version="1.0.0",
  org.eclipse.core.resources;bundle-version="3.8.1",
  org.eclipse.core.net;bundle-version="1.2.200",
- org.eclipse.equinox.security;bundle-version="1.2.0"
+ org.eclipse.equinox.security;bundle-version="1.2.0",
+ org.json;bundle-version="1.0.0"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Export-Package: org.eclipse.camf.core,
diff --git a/plugins/org.eclipse.camf.core/plugin.xml b/plugins/org.eclipse.camf.core/plugin.xml
index 7390da2..5560f46 100644
--- a/plugins/org.eclipse.camf.core/plugin.xml
+++ b/plugins/org.eclipse.camf.core/plugin.xml
@@ -172,6 +172,10 @@
             id="org.eclipse.camf.core.model.category.services.deployment"
             name="Cloud Application Deployment Services">
       </category>
+      <category
+            id="org.eclipse.camf.core.model.category.all"
+            name="All Cloud Resources">
+      </category>
    </extension>
    
 </plugin>
diff --git a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/PreferenceConstants.java b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/PreferenceConstants.java
index 4d8f617..3e04a17 100644
--- a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/PreferenceConstants.java
+++ b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/PreferenceConstants.java
@@ -19,7 +19,7 @@
 package org.eclipse.camf.core;
 
 /**
- * Preference Constants that will be used throughout the c-Eclipse framework.
+ * Preference Constants that will be used throughout the CAMF framework.
  */
 public class PreferenceConstants {
 
diff --git a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/Preferences.java b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/Preferences.java
index f78bc67..1fb2475 100644
--- a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/Preferences.java
+++ b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/Preferences.java
@@ -84,9 +84,76 @@
 	 *            The deployment JSON value.
 	 */
 	static public void setDeploymentStatus(final String deploymentValue) {
+		
 		org.eclipse.core.runtime.Preferences preferenceStore = getPreferenceStore();
-		preferenceStore.setValue(PreferenceConstants.DEPLOYMENTS,
-				deploymentValue);
+		String deploymentsString = preferenceStore
+				.getString(PreferenceConstants.DEPLOYMENTS);
+
+	    if (deploymentsString.equals( "" )){
+			preferenceStore.setValue(PreferenceConstants.DEPLOYMENTS,
+					deploymentValue);
+			save();
+	    }
+	    else{
+	      try {
+	    	  
+	    	  JSONObject newDeploymentValue = new JSONObject(deploymentValue);
+	    	  JSONArray newDeploymentsArray = newDeploymentValue.getJSONArray("Deployments");
+	    	  JSONObject newDeploymentObject = newDeploymentsArray.getJSONObject(0);
+	    	
+	    	  JSONObject preferencesDeployments = new JSONObject(deploymentsString);
+	    	  JSONArray preferencesDeploymentsArray = preferencesDeployments.getJSONArray("Deployments");
+	    	  preferencesDeploymentsArray.put(newDeploymentObject);
+	    	  
+				preferenceStore.setValue(PreferenceConstants.DEPLOYMENTS,
+						preferencesDeployments.toString());
+				save();
+	      } catch( JSONException e ) {
+	        // TODO Auto-generated catch block
+	        e.printStackTrace();
+	      }
+	    }
+	    
+	}
+	
+	/**
+	 * Remove the value of the Deployment JSON string.
+	 * 
+	 * @param deploymentValue
+	 *            The deployment JSON value.
+	 */
+	static public void removeDeploymentStatus(final String deploymentName) {
+		
+		org.eclipse.core.runtime.Preferences preferenceStore = getPreferenceStore();
+		String deploymentsString = preferenceStore
+				.getString(PreferenceConstants.DEPLOYMENTS);
+
+	    if (deploymentsString.equals( "" )){
+			return;
+	    }
+	    else{
+	      try {
+	    	  	    	
+	    	  JSONObject preferencesDeployments = new JSONObject(deploymentsString);
+	    	  JSONArray preferencesDeploymentsArray = preferencesDeployments.getJSONArray("Deployments");
+	    	  for (int i=0; i<preferencesDeploymentsArray.length(); i++){
+	    		  JSONObject deployment  = preferencesDeploymentsArray.getJSONObject(i);
+	    		  if (deployment.get("appName").equals(deploymentName)){
+	    			  preferencesDeploymentsArray.remove((i));
+	    	    	  
+	  				preferenceStore.setValue(PreferenceConstants.DEPLOYMENTS,
+	  						preferencesDeployments.toString());
+	  				save();
+	  				return;
+	    		  }
+	    	  }
+	    	  
+	      } catch( JSONException e ) {
+	        // TODO Auto-generated catch block
+	        e.printStackTrace();
+	      }
+	    }
+	    
 	}
 
 	/**
diff --git a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/internal/model/ResourceCategoryContainer.java b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/internal/model/ResourceCategoryContainer.java
index 04f9321..ddf9f0d 100644
--- a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/internal/model/ResourceCategoryContainer.java
+++ b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/internal/model/ResourceCategoryContainer.java
@@ -32,7 +32,7 @@
 
 
 /**
- * Internal implementation of the {@link IGridResourceContainer} interface.
+ * Internal implementation of the {@link ICloudResourceContainer} interface.
  */
 public class ResourceCategoryContainer
     extends VirtualCloudContainer
@@ -56,7 +56,7 @@
    * @param parent The parent container of this container.
    * @param category The category corresponding to this container.
    */
-  protected ResourceCategoryContainer( final ICloudContainer parent,
+  public ResourceCategoryContainer( final ICloudContainer parent,
                                        final ICloudResourceCategory category ) {
     super( parent, category.getName() );
     this.category = category;
diff --git a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/ICloudProviderProperties.java b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/ICloudProviderProperties.java
new file mode 100644
index 0000000..1804309
--- /dev/null
+++ b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/ICloudProviderProperties.java
@@ -0,0 +1,5 @@
+package org.eclipse.camf.core.model;
+
+
+public interface ICloudProviderProperties {
+}
diff --git a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/impl/CloudResourceCategoryFactory.java b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/impl/CloudResourceCategoryFactory.java
index 937fce3..c8a300c 100644
--- a/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/impl/CloudResourceCategoryFactory.java
+++ b/plugins/org.eclipse.camf.core/src/org/eclipse/camf/core/model/impl/CloudResourceCategoryFactory.java
@@ -1,12 +1,12 @@
 /*****************************************************************************
- * Copyright (c) 2006-2008 g-Eclipse Consortium 
+ * Copyright (c) 2006-2008 CAMF Consortium 
  * 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
  *
  * Initial development of the original code was made for the
- * g-Eclipse project founded by European Union
+ * CAMF project founded by European Union
  * project number: FP6-IST-034327  http://www.geclipse.eu/
  *
  * Contributors:
@@ -32,55 +32,60 @@
 public class CloudResourceCategoryFactory {
   
   /**
-   * Unique ID for the default applications category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default applications category as defined by the CAMF core plug-in.
+   */
+  public static final String ID_ALL = "org.eclipse.camf.core.model.category.all"; //$NON-NLS-1$
+  
+  /**
+   * Unique ID for the default applications category as defined by the CAMF core plug-in.
    */
   public static final String ID_APPLICATIONS = "org.eclipse.camf.core.model.category.applications"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default computing category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default computing category as defined by the CAMF core plug-in.
    */
   public static final String ID_COMPUTING = "org.eclipse.camf.core.model.category.computing"; //$NON-NLS-1$
  
   
   /**
-   * Unique ID for the default data services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default data services category as defined by the CAMF core plug-in.
    */
   public static final String ID_DATA_SERVICES = "org.eclipse.camf.core.model.category.services.data"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default info services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default info services category as defined by the CAMF core plug-in.
    */
   public static final String ID_INFO_SERVICES = "org.eclipse.camf.core.model.category.services.info"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default job services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default job services category as defined by the CAMF core plug-in.
    */
   public static final String ID_JOB_SERVICES = "org.eclipse.camf.core.model.category.services.jobs"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default instrumentation services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default instrumentation services category as defined by the CAMF core plug-in.
    */
   public static final String ID_INSTRUMENTATION_SERVICES = "org.eclipse.camf.core.model.category.services.instrumentation"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default other services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default other services category as defined by the CAMF core plug-in.
    */
   public static final String ID_OTHER_SERVICES = "org.eclipse.camf.core.model.category.services.others"; //$NON-NLS-1$
   
   /**
-   * Unique ID for the default storage category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default storage category as defined by the CAMF core plug-in.
    */
   public static final String ID_STORAGE = "org.eclipse.camf.core.model.category.storage"; //$NON-NLS-1$
   
   
   
   /**
-   * Unique ID for the default services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default services category as defined by the CAMF core plug-in.
    */
   public static final String ID_SERVICES = "org.eclipse.camf.core.model.category.services"; //$NON-NLS-1$
  
   /**
-   * Unique ID for the default job services category as defined by the g-Eclipse core plug-in.
+   * Unique ID for the default job services category as defined by the CAMF core plug-in.
    */
   public static final String ID_DEPLOYMENT_SERVICES = "org.eclipse.camf.core.model.category.services.deployment"; //$NON-NLS-1$
   
diff --git a/plugins/org.eclipse.camf.feature/feature.xml b/plugins/org.eclipse.camf.feature/feature.xml
index 203cd7b..1109910 100644
--- a/plugins/org.eclipse.camf.feature/feature.xml
+++ b/plugins/org.eclipse.camf.feature/feature.xml
@@ -47,10 +47,13 @@
       <import plugin="jclouds-slf4j"/>
       <import plugin="jclouds-compute"/>
       <import plugin="cloudwatch" version="1.8.0" match="greaterOrEqual"/>
+      <import plugin="jclouds-scriptbuilder" version="1.8.0" match="greaterOrEqual"/>
+      <import plugin="org.json"/>
       <import plugin="org.eclipse.emf.common"/>
       <import plugin="openstack-keystone" version="1.8.0" match="greaterOrEqual"/>
       <import plugin="openstack-nova" version="1.8.0" match="greaterOrEqual"/>
       <import plugin="openstack-neutron-custom" version="1.8.0" match="greaterOrEqual"/>
+      <import plugin="org.json" version="1.0.0" match="greaterOrEqual"/>
       <import plugin="org.eclipse.core.filesystem" version="1.3.200" match="greaterOrEqual"/>
       <import plugin="org.eclipse.core.resources" version="3.8.1" match="greaterOrEqual"/>
       <import plugin="org.eclipse.core.net" version="1.2.200" match="greaterOrEqual"/>
@@ -64,9 +67,10 @@
       <import plugin="org.apache.httpcomponents.httpcore"/>
       <import plugin="org.eclipse.emf.ecore"/>
       <import plugin="org.eclipse.emf.ecore.xmi"/>
+      <import plugin="org.eclipse.emf.edit"/>
+      <import plugin="org.eclipse.emf.edit.ui"/>
       <import plugin="org.eclipse.graphiti" version="0.11.1" match="greaterOrEqual"/>
       <import plugin="org.eclipse.graphiti.ui" version="0.11.1" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.emf.edit.ui"/>
       <import plugin="org.eclipse.wst.sse.ui" version="1.3.102" match="greaterOrEqual"/>
       <import plugin="org.eclipse.ui.views.properties.tabbed" version="3.5.300" match="greaterOrEqual"/>
       <import plugin="org.eclipse.emf.transaction" version="1.4.0" match="greaterOrEqual"/>
@@ -177,4 +181,25 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.camf.infosystem.model.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.camf.connectors.celar"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.camf.connectors.celar.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/plugins/org.eclipse.camf.infosystem.mockup/META-INF/MANIFEST.MF b/plugins/org.eclipse.camf.infosystem.mockup/META-INF/MANIFEST.MF
index d26c88c..869a100 100644
--- a/plugins/org.eclipse.camf.infosystem.mockup/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.camf.infosystem.mockup/META-INF/MANIFEST.MF
@@ -22,7 +22,8 @@
  openstack-nova;bundle-version="1.8.0",
  openstack-keystone;bundle-version="1.8.0",
  ec2;bundle-version="1.8.0",
- cloudwatch
+ cloudwatch,
+ org.json;bundle-version="1.0.0"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Export-Package: org.eclipse.camf.infosystem.mockup.info;
diff --git a/plugins/org.eclipse.camf.infosystem.mockup/src/org/eclipse/camf/infosystem/mockup/info/JCatascopiaProbeRepo.java b/plugins/org.eclipse.camf.infosystem.mockup/src/org/eclipse/camf/infosystem/mockup/info/JCatascopiaProbeRepo.java
index b0c74ab..38821fc 100644
--- a/plugins/org.eclipse.camf.infosystem.mockup/src/org/eclipse/camf/infosystem/mockup/info/JCatascopiaProbeRepo.java
+++ b/plugins/org.eclipse.camf.infosystem.mockup/src/org/eclipse/camf/infosystem/mockup/info/JCatascopiaProbeRepo.java
@@ -24,7 +24,7 @@
         this.initURL = DEFAULT_REPO_HOST + "repos/" + this.owner + "/" + this.repo;

     }

     

-    JCatascopiaProbeRepo() {

+   public JCatascopiaProbeRepo() {

         this(DEFAULT_REPO, DEFAULT_OWNER);

     }

     

diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/.classpath b/plugins/org.eclipse.camf.infosystem.model.edit/.classpath
new file mode 100644
index 0000000..0b1bcf9
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/.gitignore b/plugins/org.eclipse.camf.infosystem.model.edit/.gitignore
new file mode 100644
index 0000000..09e3bc9
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/target/
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/.project b/plugins/org.eclipse.camf.infosystem.model.edit/.project
new file mode 100644
index 0000000..90a2b53
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.camf.infosystem.model.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..69c31cd
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.m2e.core.prefs b/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.camf.infosystem.model.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4469a03
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.camf.infosystem.model.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.camf.infosystem.model.base.provider.InfoSystemEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.camf.infosystem.model.base.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.camf.infosystem.model;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.jface,
+ org.eclipse.ui.workbench
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/build.properties b/plugins/org.eclipse.camf.infosystem.model.edit/build.properties
new file mode 100644
index 0000000..6e3e902
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_Flavors.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_Flavors.gif
new file mode 100644
index 0000000..c213999
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_Flavors.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_VirtualMachineImageFlavor.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_VirtualMachineImageFlavor.gif
new file mode 100644
index 0000000..2e8ec2d
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_flavors_VirtualMachineImageFlavor.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_images_Images.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_images_Images.gif
new file mode 100644
index 0000000..22caf47
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_images_Images.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_monServices_Monitoring.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_monServices_Monitoring.gif
new file mode 100644
index 0000000..0e34563
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_monServices_Monitoring.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_monitoring_Monitoring.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_monitoring_Monitoring.gif
new file mode 100644
index 0000000..0e34563
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_monitoring_Monitoring.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_networks_Networks.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_networks_Networks.gif
new file mode 100644
index 0000000..a2c8584
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_networks_Networks.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_security_Security.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_security_Security.gif
new file mode 100644
index 0000000..ebe40ea
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_security_Security.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_virtualMachineImages_VirtualMachineImage.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_virtualMachineImages_VirtualMachineImage.gif
new file mode 100644
index 0000000..41eefa2
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateCloudProvider_virtualMachineImages_VirtualMachineImage.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateFlavors_flavors_VirtualMachineImageFlavor.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateFlavors_flavors_VirtualMachineImageFlavor.gif
new file mode 100644
index 0000000..961acc5
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateFlavors_flavors_VirtualMachineImageFlavor.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateGroups_securityGroups_SecurityGroup.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateGroups_securityGroups_SecurityGroup.gif
new file mode 100644
index 0000000..842360a
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateGroups_securityGroups_SecurityGroup.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateImages_vms_VirtualMachineImage.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateImages_vms_VirtualMachineImage.gif
new file mode 100644
index 0000000..9ff2342
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateImages_vms_VirtualMachineImage.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateKeys_keypairs_KeyPair.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateKeys_keypairs_KeyPair.gif
new file mode 100644
index 0000000..5a655f5
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateKeys_keypairs_KeyPair.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoringService_probes_MonitoringProbe.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoringService_probes_MonitoringProbe.gif
new file mode 100644
index 0000000..cbcbf59
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoringService_probes_MonitoringProbe.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoring_monitoringService_MonitoringService.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoring_monitoringService_MonitoringService.gif
new file mode 100644
index 0000000..9fff14a
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoring_monitoringService_MonitoringService.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoring_probes_MonitoringProbe.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoring_probes_MonitoringProbe.gif
new file mode 100644
index 0000000..974a35b
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateMonitoring_probes_MonitoringProbe.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateNetworks_nets_VirtualNetwork.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateNetworks_nets_VirtualNetwork.gif
new file mode 100644
index 0000000..49d948b
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateNetworks_nets_VirtualNetwork.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateRoot_cloudProviders_CloudProvider.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateRoot_cloudProviders_CloudProvider.gif
new file mode 100644
index 0000000..dc3ca18
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateRoot_cloudProviders_CloudProvider.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_groups_Groups.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_groups_Groups.gif
new file mode 100644
index 0000000..ffad5c5
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_groups_Groups.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_KeyPair.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_KeyPair.gif
new file mode 100644
index 0000000..86ec735
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_KeyPair.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_Keys.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_Keys.gif
new file mode 100644
index 0000000..3677024
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/ctool16/CreateSecurity_keys_Keys.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/CloudProvider.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/CloudProvider.gif
new file mode 100644
index 0000000..7bac4fd
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/CloudProvider.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Deployment.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Deployment.gif
new file mode 100644
index 0000000..d3dc5a9
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Deployment.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Flavors.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Flavors.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Flavors.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Groups.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Groups.gif
new file mode 100644
index 0000000..203bb1a
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Groups.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Images.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Images.gif
new file mode 100644
index 0000000..5215457
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Images.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/KeyPair.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/KeyPair.gif
new file mode 100644
index 0000000..c4a8af4
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/KeyPair.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Keys.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Keys.gif
new file mode 100644
index 0000000..e3964e7
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Keys.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Module.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Module.gif
new file mode 100644
index 0000000..c414fe9
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Module.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Monitoring.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Monitoring.gif
new file mode 100644
index 0000000..0ce8708
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Monitoring.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/MonitoringProbe.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/MonitoringProbe.gif
new file mode 100644
index 0000000..e4b530e
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/MonitoringProbe.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/MonitoringService.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/MonitoringService.gif
new file mode 100644
index 0000000..8a5c70c
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/MonitoringService.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Networks.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Networks.gif
new file mode 100644
index 0000000..2b5e3aa
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Networks.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/ResizingAction.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/ResizingAction.gif
new file mode 100644
index 0000000..caf2804
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/ResizingAction.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Root.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Root.gif
new file mode 100644
index 0000000..cb1755a
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Root.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Security.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Security.gif
new file mode 100644
index 0000000..a911183
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/Security.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/SecurityGroup.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/SecurityGroup.gif
new file mode 100644
index 0000000..7b7c428
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/SecurityGroup.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/SoftwareDependency.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/SoftwareDependency.gif
new file mode 100644
index 0000000..db7414e
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/SoftwareDependency.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/UserApplication.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/UserApplication.gif
new file mode 100644
index 0000000..a17dc7d
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/UserApplication.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualInstance.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualInstance.gif
new file mode 100644
index 0000000..420eee1
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualInstance.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualMachineImage.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualMachineImage.gif
new file mode 100644
index 0000000..be22463
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualMachineImage.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualMachineImageFlavor.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualMachineImageFlavor.gif
new file mode 100644
index 0000000..badaab0
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualMachineImageFlavor.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualNetwork.gif b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualNetwork.gif
new file mode 100644
index 0000000..b3643da
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/icons/full/obj16/VirtualNetwork.gif
Binary files differ
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/plugin.properties b/plugins/org.eclipse.camf.infosystem.model.edit/plugin.properties
new file mode 100644
index 0000000..3291902
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/plugin.properties
@@ -0,0 +1,126 @@
+#
+
+pluginName = InfoSystem Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_MonitoringProbe_type = Monitoring Probe
+_UI_ResizingAction_type = Resizing Action
+_UI_SoftwareDependency_type = Software Dependency
+_UI_UserApplication_type = User Application
+_UI_KeyPair_type = Key Pair
+_UI_VirtualMachineImageFlavor_type = Virtual Machine Image Flavor
+_UI_VirtualNetwork_type = Virtual Network
+_UI_CloudProvider_type = Cloud Provider
+_UI_VirtualMachineImage_type = Virtual Machine Image
+_UI_Root_type = Root
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_MonitoringProbe_uID_feature = UID
+_UI_MonitoringProbe_name_feature = Name
+_UI_MonitoringProbe_description_feature = Description
+_UI_MonitoringProbe_uRL_feature = URL
+_UI_ResizingAction_uID_feature = UID
+_UI_ResizingAction_name_feature = Name
+_UI_ResizingAction_description_feature = Description
+_UI_ResizingAction_uRL_feature = URL
+_UI_SoftwareDependency_uID_feature = UID
+_UI_SoftwareDependency_name_feature = Name
+_UI_SoftwareDependency_description_feature = Description
+_UI_SoftwareDependency_uRL_feature = URL
+_UI_SoftwareDependency_type_feature = Type
+_UI_UserApplication_uID_feature = UID
+_UI_UserApplication_name_feature = Name
+_UI_UserApplication_description_feature = Description
+_UI_UserApplication_uRL_feature = URL
+_UI_UserApplication_type_feature = Type
+_UI_KeyPair_uID_feature = UID
+_UI_KeyPair_name_feature = Name
+_UI_KeyPair_description_feature = Description
+_UI_KeyPair_uRL_feature = URL
+_UI_VirtualMachineImageFlavor_name_feature = Name
+_UI_VirtualMachineImageFlavor_uID_feature = UID
+_UI_VirtualNetwork_uID_feature = UID
+_UI_VirtualNetwork_name_feature = Name
+_UI_VirtualNetwork_description_feature = Description
+_UI_VirtualNetwork_uRL_feature = URL
+_UI_CloudProvider_virtualMachineImages_feature = Virtual Machine Images
+_UI_CloudProvider_name_feature = Name
+_UI_VirtualMachineImage_uID_feature = UID
+_UI_VirtualMachineImage_name_feature = Name
+_UI_VirtualMachineImage_description_feature = Description
+_UI_VirtualMachineImage_type_feature = Type
+_UI_VirtualMachineImage_uRL_feature = URL
+_UI_Root_cloudProviders_feature = Cloud Providers
+_UI_Unknown_feature = Unspecified
+
+_UI_VirtualMachineImageType_BaseImage_literal = Base Image
+_UI_VirtualMachineImageType_CustomImage_literal = Custom Image
+_UI_Images_type = Images
+_UI_CloudProvider_images_feature = Images
+_UI_CloudProvider_vms_feature = Vms
+_UI_Images_vms_feature = Vms
+_UI_CloudProvider_Name_feature = Name
+_UI_Images_Test_feature = Test
+_UI_Networks_type = Networks
+_UI_Security_type = Security
+_UI_CloudProvider_networks_feature = Networks
+_UI_Networks_nets_feature = Nets
+_UI_Security_keys_feature = Keys
+_UI_CloudProvider_security_feature = Security
+_UI_Security_test_feature = Test
+_UI_Deployment_type = Deployment
+_UI_Module_type = Module
+_UI_VirtualInstance_type = Virtual Instance
+_UI_SecurityGroup_type = Security Group
+_UI_KeyPair_publicKey_feature = Public Key
+_UI_KeyPair_Description_feature = Description
+_UI_KeyPair_URL_feature = URL
+_UI_VirtualMachineImageFlavor_ram_feature = Ram
+_UI_VirtualMachineImageFlavor_hdd_feature = Hdd
+_UI_VirtualMachineImageFlavor_vCPU_feature = VCPU
+_UI_Deployment_depID_feature = Dep ID
+_UI_Deployment_deploymentName_feature = Deployment Name
+_UI_Deployment_modules_feature = Modules
+_UI_Deployment_Status_feature = Status
+_UI_Module_modID_feature = Mod ID
+_UI_Module_moduleName_feature = Module Name
+_UI_Module_instances_feature = Instances
+_UI_Module_initInstances_feature = Init Instances
+_UI_VirtualInstance_uID_feature = UID
+_UI_VirtualInstance_name_feature = Name
+_UI_VirtualInstance_status_feature = Status
+_UI_VirtualInstance_IPs_feature = IPs
+_UI_VirtualInstance_URI_feature = URI
+_UI_SecurityGroup_uID_feature = UID
+_UI_SecurityGroup_name_feature = Name
+_UI_SecurityGroup_description_feature = Description
+_UI_Keys_type = Keys
+_UI_Groups_type = Groups
+_UI_Security_groups_feature = Groups
+_UI_Keys_keypairs_feature = Keypairs
+_UI_Groups_securityGroups_feature = Security Groups
+_UI_CloudProvider_type_feature = Type
+_UI_CloudProvider_flavors_feature = Flavors
+_UI_Flavors_type = Flavors
+_UI_Flavors_flavors_feature = Flavors
+_UI_MonitoringProbe_metrics_feature = Metrics
+_UI_Monitoring_type = Monitoring
+_UI_CloudProvider_monServices_feature = Mon Services
+_UI_Monitoring_name_feature = Name
+_UI_Monitoring_probes_feature = Probes
+_UI_MonitoringService_type = Monitoring Service
+_UI_Monitoring_monitoringService_feature = Monitoring Service
+_UI_MonitoringService_name_feature = Name
+_UI_MonitoringService_probes_feature = Probes
+_UI_CloudProvider_monitoring_feature = Monitoring
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/plugin.xml b/plugins/org.eclipse.camf.infosystem.model.edit/plugin.xml
new file mode 100644
index 0000000..8cc16fc
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated InfoSystem -->
+      <factory
+            uri="http://www.example.org/InfoSystem"
+            class="org.eclipse.camf.infosystem.model.base.provider.InfoSystemItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/pom.xml b/plugins/org.eclipse.camf.infosystem.model.edit/pom.xml
new file mode 100644
index 0000000..dcabcde
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/pom.xml
@@ -0,0 +1,24 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.camf.infosystem.model.edit</artifactId>
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <source/>
+          <target/>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.camf.tycho</groupId>
+  	<artifactId>parent</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+  	<relativePath>../org.eclipse.camf.tycho</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/CloudProviderItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/CloudProviderItemProvider.java
new file mode 100644
index 0000000..00fafda
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/CloudProviderItemProvider.java
@@ -0,0 +1,292 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.CloudProvider;
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.CloudProvider} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CloudProviderItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public CloudProviderItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addNamePropertyDescriptor(object);
+      addTypePropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_CloudProvider_Name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_CloudProvider_Name_feature", "_UI_CloudProvider_type"),
+         InfoSystemPackage.Literals.CLOUD_PROVIDER__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Type feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addTypePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_CloudProvider_type_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_CloudProvider_type_feature", "_UI_CloudProvider_type"),
+         InfoSystemPackage.Literals.CLOUD_PROVIDER__TYPE,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__IMAGES);
+      childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__NETWORKS);
+      childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__SECURITY);
+      childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__FLAVORS);
+      childrenFeatures.add(InfoSystemPackage.Literals.CLOUD_PROVIDER__MONITORING);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns CloudProvider.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated NOT
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    IExtensionRegistry registry = Platform.getExtensionRegistry();
+    IExtensionPoint extensionPoint = registry.getExtensionPoint( "org.eclipse.camf.ui.cloudProviderIcon" );
+    if (extensionPoint != null) {
+      IExtension[] extensions = extensionPoint.getExtensions();
+      for( IExtension extension : extensions ) {
+        IConfigurationElement[] elements = extension.getConfigurationElements();
+        for( IConfigurationElement element : elements ) {
+          if( element.getAttribute( "type" ).equals( ( (CloudProvider) object).getType() ) ) {
+            String location = element.getAttribute( "location" );
+            Image icon = null;
+            ImageDescriptor iconDesc = null;
+            if( location != null ) {
+              String pluginId = element.getContributor().getName();
+              iconDesc = AbstractUIPlugin.imageDescriptorFromPlugin( pluginId, location );
+              return iconDesc;
+            }
+          }
+        }
+      }
+      return overlayImage(object, getResourceLocator().getImage("full/obj16/CloudProvider"));
+    } else {
+      return overlayImage(object, getResourceLocator().getImage("full/obj16/CloudProvider"));      
+    }
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated NOT
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((CloudProvider)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_CloudProvider_type") :
+      label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(CloudProvider.class))
+    {
+      case InfoSystemPackage.CLOUD_PROVIDER__NAME:
+      case InfoSystemPackage.CLOUD_PROVIDER__TYPE:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+      case InfoSystemPackage.CLOUD_PROVIDER__IMAGES:
+      case InfoSystemPackage.CLOUD_PROVIDER__NETWORKS:
+      case InfoSystemPackage.CLOUD_PROVIDER__SECURITY:
+      case InfoSystemPackage.CLOUD_PROVIDER__FLAVORS:
+      case InfoSystemPackage.CLOUD_PROVIDER__MONITORING:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.CLOUD_PROVIDER__IMAGES,
+         InfoSystemFactory.eINSTANCE.createImages()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.CLOUD_PROVIDER__NETWORKS,
+         InfoSystemFactory.eINSTANCE.createNetworks()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.CLOUD_PROVIDER__SECURITY,
+         InfoSystemFactory.eINSTANCE.createSecurity()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.CLOUD_PROVIDER__FLAVORS,
+         InfoSystemFactory.eINSTANCE.createFlavors()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.CLOUD_PROVIDER__MONITORING,
+         InfoSystemFactory.eINSTANCE.createMonitoring()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/DeploymentItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/DeploymentItemProvider.java
new file mode 100644
index 0000000..44e948f
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/DeploymentItemProvider.java
@@ -0,0 +1,243 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.Deployment;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Deployment} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeploymentItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public DeploymentItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addDepIDPropertyDescriptor(object);
+      addDeploymentNamePropertyDescriptor(object);
+      addModulesPropertyDescriptor(object);
+      addStatusPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the Dep ID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDepIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_Deployment_depID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_Deployment_depID_feature", "_UI_Deployment_type"),
+         InfoSystemPackage.Literals.DEPLOYMENT__DEP_ID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Deployment Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDeploymentNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_Deployment_deploymentName_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_Deployment_deploymentName_feature", "_UI_Deployment_type"),
+         InfoSystemPackage.Literals.DEPLOYMENT__DEPLOYMENT_NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Modules feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addModulesPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_Deployment_modules_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_Deployment_modules_feature", "_UI_Deployment_type"),
+         InfoSystemPackage.Literals.DEPLOYMENT__MODULES,
+         true,
+         false,
+         true,
+         null,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Status feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addStatusPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_Deployment_Status_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_Deployment_Status_feature", "_UI_Deployment_type"),
+         InfoSystemPackage.Literals.DEPLOYMENT__STATUS,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns Deployment.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Deployment"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((Deployment)object).getDeploymentName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_Deployment_type") :
+      getString("_UI_Deployment_type") + " " + label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Deployment.class))
+    {
+      case InfoSystemPackage.DEPLOYMENT__DEP_ID:
+      case InfoSystemPackage.DEPLOYMENT__DEPLOYMENT_NAME:
+      case InfoSystemPackage.DEPLOYMENT__STATUS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/FlavorsItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/FlavorsItemProvider.java
new file mode 100644
index 0000000..50db7c2
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/FlavorsItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.Flavors;
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Flavors} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlavorsItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public FlavorsItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.FLAVORS__FLAVORS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Flavors.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Flavors"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Flavors_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Flavors.class))
+    {
+      case InfoSystemPackage.FLAVORS__FLAVORS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.FLAVORS__FLAVORS,
+         InfoSystemFactory.eINSTANCE.createVirtualMachineImageFlavor()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/GroupsItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/GroupsItemProvider.java
new file mode 100644
index 0000000..6732868
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/GroupsItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.Groups;
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Groups} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GroupsItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public GroupsItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.GROUPS__SECURITY_GROUPS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Groups.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Groups"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Groups_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Groups.class))
+    {
+      case InfoSystemPackage.GROUPS__SECURITY_GROUPS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.GROUPS__SECURITY_GROUPS,
+         InfoSystemFactory.eINSTANCE.createSecurityGroup()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ImagesItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ImagesItemProvider.java
new file mode 100644
index 0000000..135bb5e
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ImagesItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.Images;
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Images} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImagesItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ImagesItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.IMAGES__VMS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Images.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Images"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Images_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Images.class))
+    {
+      case InfoSystemPackage.IMAGES__VMS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.IMAGES__VMS,
+         InfoSystemFactory.eINSTANCE.createVirtualMachineImage()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemEditPlugin.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemEditPlugin.java
new file mode 100644
index 0000000..c48b79d
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemEditPlugin.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the InfoSystem edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class InfoSystemEditPlugin extends EMFPlugin
+{
+  /**
+   * Keep track of the singleton.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final InfoSystemEditPlugin INSTANCE = new InfoSystemEditPlugin();
+
+  /**
+   * Keep track of the singleton.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static Implementation plugin;
+
+  /**
+   * Create the instance.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public InfoSystemEditPlugin()
+  {
+    super
+      (new ResourceLocator [] 
+       {
+       });
+  }
+
+  /**
+   * Returns the singleton instance of the Eclipse plugin.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the singleton instance.
+   * @generated
+   */
+  @Override
+  public ResourceLocator getPluginResourceLocator()
+  {
+    return plugin;
+  }
+
+  /**
+   * Returns the singleton instance of the Eclipse plugin.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the singleton instance.
+   * @generated
+   */
+  public static Implementation getPlugin()
+  {
+    return plugin;
+  }
+
+  /**
+   * The actual implementation of the Eclipse <b>Plugin</b>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static class Implementation extends EclipsePlugin
+  {
+    /**
+     * Creates an instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Implementation()
+    {
+      super();
+
+      // Remember the static instance.
+      //
+      plugin = this;
+    }
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemItemProviderAdapterFactory.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemItemProviderAdapterFactory.java
new file mode 100644
index 0000000..1cbd964
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/InfoSystemItemProviderAdapterFactory.java
@@ -0,0 +1,761 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.camf.infosystem.model.base.util.InfoSystemAdapterFactory;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InfoSystemItemProviderAdapterFactory extends InfoSystemAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable
+{
+  /**
+   * This keeps track of the root adapter factory that delegates to this adapter factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ComposedAdapterFactory parentAdapterFactory;
+
+  /**
+   * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+  /**
+   * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+  /**
+   * This constructs an instance.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public InfoSystemItemProviderAdapterFactory()
+  {
+    supportedTypes.add(IEditingDomainItemProvider.class);
+    supportedTypes.add(IStructuredItemContentProvider.class);
+    supportedTypes.add(ITreeItemContentProvider.class);
+    supportedTypes.add(IItemLabelProvider.class);
+    supportedTypes.add(IItemPropertySource.class);
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.MonitoringProbe} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected MonitoringProbeItemProvider monitoringProbeItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.MonitoringProbe}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createMonitoringProbeAdapter()
+  {
+    if (monitoringProbeItemProvider == null)
+    {
+      monitoringProbeItemProvider = new MonitoringProbeItemProvider(this);
+    }
+
+    return monitoringProbeItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.ResizingAction} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ResizingActionItemProvider resizingActionItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.ResizingAction}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createResizingActionAdapter()
+  {
+    if (resizingActionItemProvider == null)
+    {
+      resizingActionItemProvider = new ResizingActionItemProvider(this);
+    }
+
+    return resizingActionItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.SoftwareDependency} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SoftwareDependencyItemProvider softwareDependencyItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.SoftwareDependency}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createSoftwareDependencyAdapter()
+  {
+    if (softwareDependencyItemProvider == null)
+    {
+      softwareDependencyItemProvider = new SoftwareDependencyItemProvider(this);
+    }
+
+    return softwareDependencyItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.UserApplication} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected UserApplicationItemProvider userApplicationItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.UserApplication}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createUserApplicationAdapter()
+  {
+    if (userApplicationItemProvider == null)
+    {
+      userApplicationItemProvider = new UserApplicationItemProvider(this);
+    }
+
+    return userApplicationItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.KeyPair} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected KeyPairItemProvider keyPairItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.KeyPair}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createKeyPairAdapter()
+  {
+    if (keyPairItemProvider == null)
+    {
+      keyPairItemProvider = new KeyPairItemProvider(this);
+    }
+
+    return keyPairItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected VirtualMachineImageFlavorItemProvider virtualMachineImageFlavorItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createVirtualMachineImageFlavorAdapter()
+  {
+    if (virtualMachineImageFlavorItemProvider == null)
+    {
+      virtualMachineImageFlavorItemProvider = new VirtualMachineImageFlavorItemProvider(this);
+    }
+
+    return virtualMachineImageFlavorItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.VirtualNetwork} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected VirtualNetworkItemProvider virtualNetworkItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.VirtualNetwork}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createVirtualNetworkAdapter()
+  {
+    if (virtualNetworkItemProvider == null)
+    {
+      virtualNetworkItemProvider = new VirtualNetworkItemProvider(this);
+    }
+
+    return virtualNetworkItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.CloudProvider} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected CloudProviderItemProvider cloudProviderItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.CloudProvider}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createCloudProviderAdapter()
+  {
+    if (cloudProviderItemProvider == null)
+    {
+      cloudProviderItemProvider = new CloudProviderItemProvider(this);
+    }
+
+    return cloudProviderItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected VirtualMachineImageItemProvider virtualMachineImageItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createVirtualMachineImageAdapter()
+  {
+    if (virtualMachineImageItemProvider == null)
+    {
+      virtualMachineImageItemProvider = new VirtualMachineImageItemProvider(this);
+    }
+
+    return virtualMachineImageItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Deployment} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected DeploymentItemProvider deploymentItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Deployment}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createDeploymentAdapter()
+  {
+    if (deploymentItemProvider == null)
+    {
+      deploymentItemProvider = new DeploymentItemProvider(this);
+    }
+
+    return deploymentItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Module} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ModuleItemProvider moduleItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Module}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createModuleAdapter()
+  {
+    if (moduleItemProvider == null)
+    {
+      moduleItemProvider = new ModuleItemProvider(this);
+    }
+
+    return moduleItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.VirtualInstance} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected VirtualInstanceItemProvider virtualInstanceItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.VirtualInstance}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createVirtualInstanceAdapter()
+  {
+    if (virtualInstanceItemProvider == null)
+    {
+      virtualInstanceItemProvider = new VirtualInstanceItemProvider(this);
+    }
+
+    return virtualInstanceItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.SecurityGroup} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SecurityGroupItemProvider securityGroupItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.SecurityGroup}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createSecurityGroupAdapter()
+  {
+    if (securityGroupItemProvider == null)
+    {
+      securityGroupItemProvider = new SecurityGroupItemProvider(this);
+    }
+
+    return securityGroupItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Root} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RootItemProvider rootItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Root}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createRootAdapter()
+  {
+    if (rootItemProvider == null)
+    {
+      rootItemProvider = new RootItemProvider(this);
+    }
+
+    return rootItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Images} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ImagesItemProvider imagesItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Images}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createImagesAdapter()
+  {
+    if (imagesItemProvider == null)
+    {
+      imagesItemProvider = new ImagesItemProvider(this);
+    }
+
+    return imagesItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Networks} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected NetworksItemProvider networksItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Networks}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createNetworksAdapter()
+  {
+    if (networksItemProvider == null)
+    {
+      networksItemProvider = new NetworksItemProvider(this);
+    }
+
+    return networksItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Security} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SecurityItemProvider securityItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Security}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createSecurityAdapter()
+  {
+    if (securityItemProvider == null)
+    {
+      securityItemProvider = new SecurityItemProvider(this);
+    }
+
+    return securityItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Keys} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected KeysItemProvider keysItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Keys}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createKeysAdapter()
+  {
+    if (keysItemProvider == null)
+    {
+      keysItemProvider = new KeysItemProvider(this);
+    }
+
+    return keysItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Groups} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected GroupsItemProvider groupsItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Groups}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createGroupsAdapter()
+  {
+    if (groupsItemProvider == null)
+    {
+      groupsItemProvider = new GroupsItemProvider(this);
+    }
+
+    return groupsItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Flavors} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected FlavorsItemProvider flavorsItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Flavors}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createFlavorsAdapter()
+  {
+    if (flavorsItemProvider == null)
+    {
+      flavorsItemProvider = new FlavorsItemProvider(this);
+    }
+
+    return flavorsItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.Monitoring} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected MonitoringItemProvider monitoringItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.Monitoring}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createMonitoringAdapter()
+  {
+    if (monitoringItemProvider == null)
+    {
+      monitoringItemProvider = new MonitoringItemProvider(this);
+    }
+
+    return monitoringItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.eclipse.camf.infosystem.model.base.MonitoringService} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected MonitoringServiceItemProvider monitoringServiceItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.eclipse.camf.infosystem.model.base.MonitoringService}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createMonitoringServiceAdapter()
+  {
+    if (monitoringServiceItemProvider == null)
+    {
+      monitoringServiceItemProvider = new MonitoringServiceItemProvider(this);
+    }
+
+    return monitoringServiceItemProvider;
+  }
+
+  /**
+   * This returns the root adapter factory that contains this factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComposeableAdapterFactory getRootAdapterFactory()
+  {
+    return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+  }
+
+  /**
+   * This sets the composed adapter factory that contains this factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
+  {
+    this.parentAdapterFactory = parentAdapterFactory;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean isFactoryForType(Object type)
+  {
+    return supportedTypes.contains(type) || super.isFactoryForType(type);
+  }
+
+  /**
+   * This implementation substitutes the factory itself as the key for the adapter.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter adapt(Notifier notifier, Object type)
+  {
+    return super.adapt(notifier, this);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object adapt(Object object, Object type)
+  {
+    if (isFactoryForType(type))
+    {
+      Object adapter = super.adapt(object, type);
+      if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter)))
+      {
+        return adapter;
+      }
+    }
+
+    return null;
+  }
+
+  /**
+   * This adds a listener.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void addListener(INotifyChangedListener notifyChangedListener)
+  {
+    changeNotifier.addListener(notifyChangedListener);
+  }
+
+  /**
+   * This removes a listener.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void removeListener(INotifyChangedListener notifyChangedListener)
+  {
+    changeNotifier.removeListener(notifyChangedListener);
+  }
+
+  /**
+   * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void fireNotifyChanged(Notification notification)
+  {
+    changeNotifier.fireNotifyChanged(notification);
+
+    if (parentAdapterFactory != null)
+    {
+      parentAdapterFactory.fireNotifyChanged(notification);
+    }
+  }
+
+  /**
+   * This disposes all of the item providers created by this factory. 
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void dispose()
+  {
+    if (monitoringProbeItemProvider != null) monitoringProbeItemProvider.dispose();
+    if (resizingActionItemProvider != null) resizingActionItemProvider.dispose();
+    if (softwareDependencyItemProvider != null) softwareDependencyItemProvider.dispose();
+    if (userApplicationItemProvider != null) userApplicationItemProvider.dispose();
+    if (keyPairItemProvider != null) keyPairItemProvider.dispose();
+    if (virtualMachineImageFlavorItemProvider != null) virtualMachineImageFlavorItemProvider.dispose();
+    if (virtualNetworkItemProvider != null) virtualNetworkItemProvider.dispose();
+    if (cloudProviderItemProvider != null) cloudProviderItemProvider.dispose();
+    if (virtualMachineImageItemProvider != null) virtualMachineImageItemProvider.dispose();
+    if (deploymentItemProvider != null) deploymentItemProvider.dispose();
+    if (moduleItemProvider != null) moduleItemProvider.dispose();
+    if (virtualInstanceItemProvider != null) virtualInstanceItemProvider.dispose();
+    if (securityGroupItemProvider != null) securityGroupItemProvider.dispose();
+    if (rootItemProvider != null) rootItemProvider.dispose();
+    if (imagesItemProvider != null) imagesItemProvider.dispose();
+    if (networksItemProvider != null) networksItemProvider.dispose();
+    if (securityItemProvider != null) securityItemProvider.dispose();
+    if (keysItemProvider != null) keysItemProvider.dispose();
+    if (groupsItemProvider != null) groupsItemProvider.dispose();
+    if (flavorsItemProvider != null) flavorsItemProvider.dispose();
+    if (monitoringItemProvider != null) monitoringItemProvider.dispose();
+    if (monitoringServiceItemProvider != null) monitoringServiceItemProvider.dispose();
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeyPairItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeyPairItemProvider.java
new file mode 100644
index 0000000..d931f36
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeyPairItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.KeyPair;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.KeyPair} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class KeyPairItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public KeyPairItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addPublicKeyPropertyDescriptor(object);
+      addDescriptionPropertyDescriptor(object);
+      addURLPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_KeyPair_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_KeyPair_uID_feature", "_UI_KeyPair_type"),
+         InfoSystemPackage.Literals.KEY_PAIR__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_KeyPair_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_KeyPair_name_feature", "_UI_KeyPair_type"),
+         InfoSystemPackage.Literals.KEY_PAIR__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Public Key feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addPublicKeyPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_KeyPair_publicKey_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_KeyPair_publicKey_feature", "_UI_KeyPair_type"),
+         InfoSystemPackage.Literals.KEY_PAIR__PUBLIC_KEY,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Description feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDescriptionPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_KeyPair_Description_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_KeyPair_Description_feature", "_UI_KeyPair_type"),
+         InfoSystemPackage.Literals.KEY_PAIR__DESCRIPTION,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the URL feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addURLPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_KeyPair_URL_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_KeyPair_URL_feature", "_UI_KeyPair_type"),
+         InfoSystemPackage.Literals.KEY_PAIR__URL,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns KeyPair.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/KeyPair"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated NOT
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((KeyPair)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_KeyPair_type") :
+      label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(KeyPair.class))
+    {
+      case InfoSystemPackage.KEY_PAIR__UID:
+      case InfoSystemPackage.KEY_PAIR__NAME:
+      case InfoSystemPackage.KEY_PAIR__PUBLIC_KEY:
+      case InfoSystemPackage.KEY_PAIR__DESCRIPTION:
+      case InfoSystemPackage.KEY_PAIR__URL:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeysItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeysItemProvider.java
new file mode 100644
index 0000000..0d31e6c
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/KeysItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.Keys;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Keys} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class KeysItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public KeysItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.KEYS__KEYPAIRS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Keys.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Keys"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Keys_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Keys.class))
+    {
+      case InfoSystemPackage.KEYS__KEYPAIRS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.KEYS__KEYPAIRS,
+         InfoSystemFactory.eINSTANCE.createKeyPair()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ModuleItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ModuleItemProvider.java
new file mode 100644
index 0000000..124b417
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ModuleItemProvider.java
@@ -0,0 +1,243 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.Module;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Module} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModuleItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ModuleItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addModIDPropertyDescriptor(object);
+      addModuleNamePropertyDescriptor(object);
+      addInstancesPropertyDescriptor(object);
+      addInitInstancesPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the Mod ID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addModIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_Module_modID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_Module_modID_feature", "_UI_Module_type"),
+         InfoSystemPackage.Literals.MODULE__MOD_ID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Module Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addModuleNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_Module_moduleName_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_Module_moduleName_feature", "_UI_Module_type"),
+         InfoSystemPackage.Literals.MODULE__MODULE_NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Instances feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addInstancesPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_Module_instances_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_Module_instances_feature", "_UI_Module_type"),
+         InfoSystemPackage.Literals.MODULE__INSTANCES,
+         true,
+         false,
+         true,
+         null,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Init Instances feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addInitInstancesPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_Module_initInstances_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_Module_initInstances_feature", "_UI_Module_type"),
+         InfoSystemPackage.Literals.MODULE__INIT_INSTANCES,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns Module.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Module"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((Module)object).getModuleName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_Module_type") :
+      getString("_UI_Module_type") + " " + label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Module.class))
+    {
+      case InfoSystemPackage.MODULE__MOD_ID:
+      case InfoSystemPackage.MODULE__MODULE_NAME:
+      case InfoSystemPackage.MODULE__INIT_INSTANCES:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringItemProvider.java
new file mode 100644
index 0000000..4526f6b
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringItemProvider.java
@@ -0,0 +1,183 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.Monitoring;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Monitoring} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MonitoringItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MonitoringItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.MONITORING__MONITORING_SERVICE);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Monitoring.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Monitoring"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Monitoring_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Monitoring.class))
+    {
+      case InfoSystemPackage.MONITORING__MONITORING_SERVICE:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.MONITORING__MONITORING_SERVICE,
+         InfoSystemFactory.eINSTANCE.createMonitoringService()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringProbeItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringProbeItemProvider.java
new file mode 100644
index 0000000..c152eac
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringProbeItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.MonitoringProbe;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.MonitoringProbe} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MonitoringProbeItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MonitoringProbeItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addDescriptionPropertyDescriptor(object);
+      addURLPropertyDescriptor(object);
+      addMetricsPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_MonitoringProbe_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_MonitoringProbe_uID_feature", "_UI_MonitoringProbe_type"),
+         InfoSystemPackage.Literals.MONITORING_PROBE__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_MonitoringProbe_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_MonitoringProbe_name_feature", "_UI_MonitoringProbe_type"),
+         InfoSystemPackage.Literals.MONITORING_PROBE__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Description feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDescriptionPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_MonitoringProbe_description_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_MonitoringProbe_description_feature", "_UI_MonitoringProbe_type"),
+         InfoSystemPackage.Literals.MONITORING_PROBE__DESCRIPTION,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the URL feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addURLPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_MonitoringProbe_uRL_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_MonitoringProbe_uRL_feature", "_UI_MonitoringProbe_type"),
+         InfoSystemPackage.Literals.MONITORING_PROBE__URL,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Metrics feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addMetricsPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_MonitoringProbe_metrics_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_MonitoringProbe_metrics_feature", "_UI_MonitoringProbe_type"),
+         InfoSystemPackage.Literals.MONITORING_PROBE__METRICS,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns MonitoringProbe.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/MonitoringProbe"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((MonitoringProbe)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_MonitoringProbe_type") :
+      label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(MonitoringProbe.class))
+    {
+      case InfoSystemPackage.MONITORING_PROBE__UID:
+      case InfoSystemPackage.MONITORING_PROBE__NAME:
+      case InfoSystemPackage.MONITORING_PROBE__DESCRIPTION:
+      case InfoSystemPackage.MONITORING_PROBE__URL:
+      case InfoSystemPackage.MONITORING_PROBE__METRICS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringServiceItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringServiceItemProvider.java
new file mode 100644
index 0000000..dd20408
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/MonitoringServiceItemProvider.java
@@ -0,0 +1,213 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.MonitoringService;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.MonitoringService} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MonitoringServiceItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MonitoringServiceItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addNamePropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_MonitoringService_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_MonitoringService_name_feature", "_UI_MonitoringService_type"),
+         InfoSystemPackage.Literals.MONITORING_SERVICE__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.MONITORING_SERVICE__PROBES);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns MonitoringService.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/MonitoringService"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((MonitoringService)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_MonitoringService_type") :
+      label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(MonitoringService.class))
+    {
+      case InfoSystemPackage.MONITORING_SERVICE__NAME:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+      case InfoSystemPackage.MONITORING_SERVICE__PROBES:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.MONITORING_SERVICE__PROBES,
+         InfoSystemFactory.eINSTANCE.createMonitoringProbe()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/NetworksItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/NetworksItemProvider.java
new file mode 100644
index 0000000..4659d33
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/NetworksItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.Networks;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Networks} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NetworksItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NetworksItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.NETWORKS__NETS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Networks.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Networks"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Networks_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Networks.class))
+    {
+      case InfoSystemPackage.NETWORKS__NETS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.NETWORKS__NETS,
+         InfoSystemFactory.eINSTANCE.createVirtualNetwork()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ResizingActionItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ResizingActionItemProvider.java
new file mode 100644
index 0000000..87fab84
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/ResizingActionItemProvider.java
@@ -0,0 +1,244 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.ResizingAction;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.ResizingAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResizingActionItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ResizingActionItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addDescriptionPropertyDescriptor(object);
+      addURLPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_ResizingAction_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_ResizingAction_uID_feature", "_UI_ResizingAction_type"),
+         InfoSystemPackage.Literals.RESIZING_ACTION__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_ResizingAction_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_ResizingAction_name_feature", "_UI_ResizingAction_type"),
+         InfoSystemPackage.Literals.RESIZING_ACTION__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Description feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDescriptionPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_ResizingAction_description_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_ResizingAction_description_feature", "_UI_ResizingAction_type"),
+         InfoSystemPackage.Literals.RESIZING_ACTION__DESCRIPTION,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the URL feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addURLPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_ResizingAction_uRL_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_ResizingAction_uRL_feature", "_UI_ResizingAction_type"),
+         InfoSystemPackage.Literals.RESIZING_ACTION__URL,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns ResizingAction.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/ResizingAction"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((ResizingAction)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_ResizingAction_type") :
+      getString("_UI_ResizingAction_type") + " " + label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(ResizingAction.class))
+    {
+      case InfoSystemPackage.RESIZING_ACTION__UID:
+      case InfoSystemPackage.RESIZING_ACTION__NAME:
+      case InfoSystemPackage.RESIZING_ACTION__DESCRIPTION:
+      case InfoSystemPackage.RESIZING_ACTION__URL:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/RootItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/RootItemProvider.java
new file mode 100644
index 0000000..ee87f04
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/RootItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+
+import org.eclipse.camf.infosystem.model.base.Root;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Root} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RootItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RootItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.ROOT__CLOUD_PROVIDERS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Root.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Root"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Root_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Root.class))
+    {
+      case InfoSystemPackage.ROOT__CLOUD_PROVIDERS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.ROOT__CLOUD_PROVIDERS,
+         InfoSystemFactory.eINSTANCE.createCloudProvider()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityGroupItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityGroupItemProvider.java
new file mode 100644
index 0000000..d03248b
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityGroupItemProvider.java
@@ -0,0 +1,219 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.SecurityGroup;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.SecurityGroup} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SecurityGroupItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public SecurityGroupItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addDescriptionPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_SecurityGroup_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_SecurityGroup_uID_feature", "_UI_SecurityGroup_type"),
+         InfoSystemPackage.Literals.SECURITY_GROUP__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_SecurityGroup_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_SecurityGroup_name_feature", "_UI_SecurityGroup_type"),
+         InfoSystemPackage.Literals.SECURITY_GROUP__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Description feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDescriptionPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_SecurityGroup_description_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_SecurityGroup_description_feature", "_UI_SecurityGroup_type"),
+         InfoSystemPackage.Literals.SECURITY_GROUP__DESCRIPTION,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns SecurityGroup.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/SecurityGroup"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated NOT
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((SecurityGroup)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_SecurityGroup_type") :
+      label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(SecurityGroup.class))
+    {
+      case InfoSystemPackage.SECURITY_GROUP__UID:
+      case InfoSystemPackage.SECURITY_GROUP__NAME:
+      case InfoSystemPackage.SECURITY_GROUP__DESCRIPTION:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityItemProvider.java
new file mode 100644
index 0000000..8c05962
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SecurityItemProvider.java
@@ -0,0 +1,190 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemFactory;
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.Security;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.Security} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SecurityItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public SecurityItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+   * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+   * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object)
+  {
+    if (childrenFeatures == null)
+    {
+      super.getChildrenFeatures(object);
+      childrenFeatures.add(InfoSystemPackage.Literals.SECURITY__KEYS);
+      childrenFeatures.add(InfoSystemPackage.Literals.SECURITY__GROUPS);
+    }
+    return childrenFeatures;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EStructuralFeature getChildFeature(Object object, Object child)
+  {
+    // Check the type of the specified child object and return the proper feature to use for
+    // adding (see {@link AddCommand}) it as a child.
+
+    return super.getChildFeature(object, child);
+  }
+
+  /**
+   * This returns Security.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/Security"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    return getString("_UI_Security_type");
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(Security.class))
+    {
+      case InfoSystemPackage.SECURITY__KEYS:
+      case InfoSystemPackage.SECURITY__GROUPS:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.SECURITY__KEYS,
+         InfoSystemFactory.eINSTANCE.createKeys()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (InfoSystemPackage.Literals.SECURITY__GROUPS,
+         InfoSystemFactory.eINSTANCE.createGroups()));
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SoftwareDependencyItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SoftwareDependencyItemProvider.java
new file mode 100644
index 0000000..57cf00e
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/SoftwareDependencyItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.SoftwareDependency;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.SoftwareDependency} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SoftwareDependencyItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public SoftwareDependencyItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addDescriptionPropertyDescriptor(object);
+      addURLPropertyDescriptor(object);
+      addTypePropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_SoftwareDependency_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_SoftwareDependency_uID_feature", "_UI_SoftwareDependency_type"),
+         InfoSystemPackage.Literals.SOFTWARE_DEPENDENCY__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_SoftwareDependency_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_SoftwareDependency_name_feature", "_UI_SoftwareDependency_type"),
+         InfoSystemPackage.Literals.SOFTWARE_DEPENDENCY__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Description feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDescriptionPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_SoftwareDependency_description_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_SoftwareDependency_description_feature", "_UI_SoftwareDependency_type"),
+         InfoSystemPackage.Literals.SOFTWARE_DEPENDENCY__DESCRIPTION,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the URL feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addURLPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_SoftwareDependency_uRL_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_SoftwareDependency_uRL_feature", "_UI_SoftwareDependency_type"),
+         InfoSystemPackage.Literals.SOFTWARE_DEPENDENCY__URL,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Type feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addTypePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_SoftwareDependency_type_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_SoftwareDependency_type_feature", "_UI_SoftwareDependency_type"),
+         InfoSystemPackage.Literals.SOFTWARE_DEPENDENCY__TYPE,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns SoftwareDependency.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/SoftwareDependency"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((SoftwareDependency)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_SoftwareDependency_type") :
+      getString("_UI_SoftwareDependency_type") + " " + label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(SoftwareDependency.class))
+    {
+      case InfoSystemPackage.SOFTWARE_DEPENDENCY__UID:
+      case InfoSystemPackage.SOFTWARE_DEPENDENCY__NAME:
+      case InfoSystemPackage.SOFTWARE_DEPENDENCY__DESCRIPTION:
+      case InfoSystemPackage.SOFTWARE_DEPENDENCY__URL:
+      case InfoSystemPackage.SOFTWARE_DEPENDENCY__TYPE:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/UserApplicationItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/UserApplicationItemProvider.java
new file mode 100644
index 0000000..687b01c
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/UserApplicationItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.UserApplication;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.UserApplication} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UserApplicationItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public UserApplicationItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addDescriptionPropertyDescriptor(object);
+      addURLPropertyDescriptor(object);
+      addTypePropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_UserApplication_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_UserApplication_uID_feature", "_UI_UserApplication_type"),
+         InfoSystemPackage.Literals.USER_APPLICATION__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_UserApplication_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_UserApplication_name_feature", "_UI_UserApplication_type"),
+         InfoSystemPackage.Literals.USER_APPLICATION__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Description feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDescriptionPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_UserApplication_description_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_UserApplication_description_feature", "_UI_UserApplication_type"),
+         InfoSystemPackage.Literals.USER_APPLICATION__DESCRIPTION,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the URL feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addURLPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_UserApplication_uRL_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_UserApplication_uRL_feature", "_UI_UserApplication_type"),
+         InfoSystemPackage.Literals.USER_APPLICATION__URL,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Type feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addTypePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_UserApplication_type_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_UserApplication_type_feature", "_UI_UserApplication_type"),
+         InfoSystemPackage.Literals.USER_APPLICATION__TYPE,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns UserApplication.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/UserApplication"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((UserApplication)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_UserApplication_type") :
+      getString("_UI_UserApplication_type") + " " + label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(UserApplication.class))
+    {
+      case InfoSystemPackage.USER_APPLICATION__UID:
+      case InfoSystemPackage.USER_APPLICATION__NAME:
+      case InfoSystemPackage.USER_APPLICATION__DESCRIPTION:
+      case InfoSystemPackage.USER_APPLICATION__URL:
+      case InfoSystemPackage.USER_APPLICATION__TYPE:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualInstanceItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualInstanceItemProvider.java
new file mode 100644
index 0000000..1723234
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualInstanceItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.VirtualInstance;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.VirtualInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VirtualInstanceItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public VirtualInstanceItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addStatusPropertyDescriptor(object);
+      addIPsPropertyDescriptor(object);
+      addURIPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualInstance_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualInstance_uID_feature", "_UI_VirtualInstance_type"),
+         InfoSystemPackage.Literals.VIRTUAL_INSTANCE__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualInstance_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualInstance_name_feature", "_UI_VirtualInstance_type"),
+         InfoSystemPackage.Literals.VIRTUAL_INSTANCE__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Status feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addStatusPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualInstance_status_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualInstance_status_feature", "_UI_VirtualInstance_type"),
+         InfoSystemPackage.Literals.VIRTUAL_INSTANCE__STATUS,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the IPs feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addIPsPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualInstance_IPs_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualInstance_IPs_feature", "_UI_VirtualInstance_type"),
+         InfoSystemPackage.Literals.VIRTUAL_INSTANCE__IPS,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the URI feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addURIPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualInstance_URI_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualInstance_URI_feature", "_UI_VirtualInstance_type"),
+         InfoSystemPackage.Literals.VIRTUAL_INSTANCE__URI,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns VirtualInstance.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/VirtualInstance"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((VirtualInstance)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_VirtualInstance_type") :
+      getString("_UI_VirtualInstance_type") + " " + label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(VirtualInstance.class))
+    {
+      case InfoSystemPackage.VIRTUAL_INSTANCE__UID:
+      case InfoSystemPackage.VIRTUAL_INSTANCE__NAME:
+      case InfoSystemPackage.VIRTUAL_INSTANCE__STATUS:
+      case InfoSystemPackage.VIRTUAL_INSTANCE__IPS:
+      case InfoSystemPackage.VIRTUAL_INSTANCE__URI:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageFlavorItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageFlavorItemProvider.java
new file mode 100644
index 0000000..bef65dd
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageFlavorItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VirtualMachineImageFlavorItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public VirtualMachineImageFlavorItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addNamePropertyDescriptor(object);
+      addUIDPropertyDescriptor(object);
+      addRamPropertyDescriptor(object);
+      addHddPropertyDescriptor(object);
+      addVCPUPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImageFlavor_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImageFlavor_name_feature", "_UI_VirtualMachineImageFlavor_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE_FLAVOR__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImageFlavor_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImageFlavor_uID_feature", "_UI_VirtualMachineImageFlavor_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE_FLAVOR__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Ram feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addRamPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImageFlavor_ram_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImageFlavor_ram_feature", "_UI_VirtualMachineImageFlavor_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE_FLAVOR__RAM,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Hdd feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addHddPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImageFlavor_hdd_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImageFlavor_hdd_feature", "_UI_VirtualMachineImageFlavor_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE_FLAVOR__HDD,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the VCPU feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addVCPUPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImageFlavor_vCPU_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImageFlavor_vCPU_feature", "_UI_VirtualMachineImageFlavor_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE_FLAVOR__VCPU,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns VirtualMachineImageFlavor.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/VirtualMachineImageFlavor"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((VirtualMachineImageFlavor)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_VirtualMachineImageFlavor_type") :
+      getString("_UI_VirtualMachineImageFlavor_type") + " " + label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(VirtualMachineImageFlavor.class))
+    {
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE_FLAVOR__NAME:
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE_FLAVOR__UID:
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE_FLAVOR__RAM:
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE_FLAVOR__HDD:
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE_FLAVOR__VCPU:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageItemProvider.java
new file mode 100644
index 0000000..72e0de5
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualMachineImageItemProvider.java
@@ -0,0 +1,269 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.VirtualMachineImage;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VirtualMachineImageItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public VirtualMachineImageItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addDescriptionPropertyDescriptor(object);
+      addTypePropertyDescriptor(object);
+      addURLPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImage_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImage_uID_feature", "_UI_VirtualMachineImage_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImage_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImage_name_feature", "_UI_VirtualMachineImage_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Description feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDescriptionPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImage_description_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImage_description_feature", "_UI_VirtualMachineImage_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE__DESCRIPTION,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Type feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addTypePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImage_type_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImage_type_feature", "_UI_VirtualMachineImage_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE__TYPE,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the URL feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addURLPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualMachineImage_uRL_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualMachineImage_uRL_feature", "_UI_VirtualMachineImage_type"),
+         InfoSystemPackage.Literals.VIRTUAL_MACHINE_IMAGE__URL,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns VirtualMachineImage.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/VirtualMachineImage"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated NOT
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((VirtualMachineImage)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_VirtualMachineImage_type") :
+      label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(VirtualMachineImage.class))
+    {
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE__UID:
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE__NAME:
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE__DESCRIPTION:
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE__TYPE:
+      case InfoSystemPackage.VIRTUAL_MACHINE_IMAGE__URL:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualNetworkItemProvider.java b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualNetworkItemProvider.java
new file mode 100644
index 0000000..251ef34
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model.edit/src/org/eclipse/camf/infosystem/model/base/provider/VirtualNetworkItemProvider.java
@@ -0,0 +1,244 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.camf.infosystem.model.base.InfoSystemPackage;
+import org.eclipse.camf.infosystem.model.base.VirtualNetwork;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.camf.infosystem.model.base.VirtualNetwork} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VirtualNetworkItemProvider 
+  extends ItemProviderAdapter
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public VirtualNetworkItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addUIDPropertyDescriptor(object);
+      addNamePropertyDescriptor(object);
+      addDescriptionPropertyDescriptor(object);
+      addURLPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the UID feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addUIDPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualNetwork_uID_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualNetwork_uID_feature", "_UI_VirtualNetwork_type"),
+         InfoSystemPackage.Literals.VIRTUAL_NETWORK__UID,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Name feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addNamePropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualNetwork_name_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualNetwork_name_feature", "_UI_VirtualNetwork_type"),
+         InfoSystemPackage.Literals.VIRTUAL_NETWORK__NAME,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the Description feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addDescriptionPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualNetwork_description_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualNetwork_description_feature", "_UI_VirtualNetwork_type"),
+         InfoSystemPackage.Literals.VIRTUAL_NETWORK__DESCRIPTION,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This adds a property descriptor for the URL feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addURLPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_VirtualNetwork_uRL_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_VirtualNetwork_uRL_feature", "_UI_VirtualNetwork_type"),
+         InfoSystemPackage.Literals.VIRTUAL_NETWORK__URL,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns VirtualNetwork.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/VirtualNetwork"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated NOT
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((VirtualNetwork)object).getName();
+    return label == null || label.length() == 0 ?
+      getString("_UI_VirtualNetwork_type") :
+      label;
+  }
+  
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(VirtualNetwork.class))
+    {
+      case InfoSystemPackage.VIRTUAL_NETWORK__UID:
+      case InfoSystemPackage.VIRTUAL_NETWORK__NAME:
+      case InfoSystemPackage.VIRTUAL_NETWORK__DESCRIPTION:
+      case InfoSystemPackage.VIRTUAL_NETWORK__URL:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return InfoSystemEditPlugin.INSTANCE;
+  }
+
+}
diff --git a/plugins/org.eclipse.camf.infosystem.model/model/infosystem.ecore b/plugins/org.eclipse.camf.infosystem.model/model/infosystem.ecore
index 6df2058..3225367 100644
--- a/plugins/org.eclipse.camf.infosystem.model/model/infosystem.ecore
+++ b/plugins/org.eclipse.camf.infosystem.model/model/infosystem.ecore
@@ -115,49 +115,6 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="VirtualMachineImage">

-    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

-      <details key="name" value="VirtualMachineImage"/>

-      <details key="kind" value="elementOnly"/>

-    </eAnnotations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

-        <details key="kind" value="element"/>

-        <details key="name" value="UID"/>

-        <details key="namespace" value="##targetNamespace"/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

-        <details key="kind" value="element"/>

-        <details key="name" value="Name"/>

-        <details key="namespace" value="##targetNamespace"/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" lowerBound="1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

-        <details key="kind" value="element"/>

-        <details key="name" value="Description"/>

-        <details key="namespace" value="##targetNamespace"/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//VirtualMachineImageType"

-        unsettable="true">

-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

-        <details key="kind" value="element"/>

-        <details key="name" value="Type"/>

-        <details key="namespace" value="##targetNamespace"/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uRL" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

-        <details key="kind" value="element"/>

-        <details key="name" value="URL"/>

-        <details key="namespace" value="##targetNamespace"/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

   <eClassifiers xsi:type="ecore:EEnum" name="VirtualMachineImageType">

     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

       <details key="name" value="VirtualMachineImageType"/>

@@ -237,7 +194,13 @@
         eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="Description" lowerBound="1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="URL" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="URL" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="URL"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="VirtualMachineImageFlavor">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

@@ -265,20 +228,78 @@
         <details key="namespace" value="##targetNamespace"/>

       </eAnnotations>

     </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="VirtualInstance">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="status" lowerBound="1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="IPs" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="URI" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="SecurityGroup">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" lowerBound="1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String" defaultValueLiteral=""/>

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="Description"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uRL" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="URL"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="CloudProvider">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="Name" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="images" lowerBound="1"

+        eType="#//Images" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="networks" lowerBound="1"

+        eType="#//Networks" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="security" lowerBound="1"

+        eType="#//Security" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="flavors" lowerBound="1"

+        eType="#//Flavors" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="monitoring" lowerBound="1"

+        eType="#//Monitoring" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="VirtualMachineImage">

+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+      <details key="name" value="VirtualMachineImage"/>

+      <details key="kind" value="elementOnly"/>

+    </eAnnotations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="UID"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="Name"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="Description"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//VirtualMachineImageType"

+        unsettable="true">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="Type"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uRL" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">

+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">

+        <details key="kind" value="element"/>

+        <details key="name" value="URL"/>

+        <details key="namespace" value="##targetNamespace"/>

+      </eAnnotations>

+    </eStructuralFeatures>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Deployment">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="depID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

@@ -298,4 +319,57 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="initInstances" lowerBound="1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="VirtualInstance">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="status" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="IPs" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="URI" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="SecurityGroup">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uID" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" lowerBound="1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String" defaultValueLiteral=""/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Root">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="cloudProviders" lowerBound="1"

+        upperBound="-1" eType="#//CloudProvider" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Images">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="vms" lowerBound="1" upperBound="-1"

+        eType="#//VirtualMachineImage" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Networks">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="nets" lowerBound="1" upperBound="-1"

+        eType="#//VirtualNetwork" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Security">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="keys" lowerBound="1" eType="#//Keys"

+        containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="groups" lowerBound="1"

+        eType="#//Groups" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Keys">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="keypairs" lowerBound="1"

+        upperBound="-1" eType="#//KeyPair" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Groups">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="securityGroups" lowerBound="1"

+        upperBound="-1" eType="#//SecurityGroup" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Flavors">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="flavors" lowerBound="1"

+        upperBound="-1" eType="#//VirtualMachineImageFlavor" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Monitoring">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="monitoringService" lowerBound="1"

+        upperBound="-1" eType="#//MonitoringService" containment="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MonitoringService">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="probes" lowerBound="1"

+        upperBound="-1" eType="#//MonitoringProbe" containment="true"/>

+  </eClassifiers>

 </ecore:EPackage>

diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/CloudProvider.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/CloudProvider.java
new file mode 100644
index 0000000..d58044d
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/CloudProvider.java
@@ -0,0 +1,214 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cloud Provider</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getImages <em>Images</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getNetworks <em>Networks</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getSecurity <em>Security</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getFlavors <em>Flavors</em>}</li>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getMonitoring <em>Monitoring</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider()
+ * @model
+ * @generated
+ */
+public interface CloudProvider extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Name</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Name()
+   * @model dataType="org.eclipse.emf.ecore.xml.type.String"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getName <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Name</em>' attribute.
+   * @see #getName()
+   * @generated
+   */
+  void setName(String value);
+
+  /**
+   * Returns the value of the '<em><b>Images</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Images</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Images</em>' containment reference.
+   * @see #setImages(Images)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Images()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  Images getImages();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getImages <em>Images</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Images</em>' containment reference.
+   * @see #getImages()
+   * @generated
+   */
+  void setImages(Images value);
+
+  /**
+   * Returns the value of the '<em><b>Networks</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Networks</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Networks</em>' containment reference.
+   * @see #setNetworks(Networks)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Networks()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  Networks getNetworks();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getNetworks <em>Networks</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Networks</em>' containment reference.
+   * @see #getNetworks()
+   * @generated
+   */
+  void setNetworks(Networks value);
+
+  /**
+   * Returns the value of the '<em><b>Security</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Security</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Security</em>' containment reference.
+   * @see #setSecurity(Security)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Security()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  Security getSecurity();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getSecurity <em>Security</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Security</em>' containment reference.
+   * @see #getSecurity()
+   * @generated
+   */
+  void setSecurity(Security value);
+
+  /**
+   * Returns the value of the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Type</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Type</em>' attribute.
+   * @see #setType(String)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Type()
+   * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getType();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getType <em>Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Type</em>' attribute.
+   * @see #getType()
+   * @generated
+   */
+  void setType(String value);
+
+  /**
+   * Returns the value of the '<em><b>Flavors</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Flavors</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Flavors</em>' containment reference.
+   * @see #setFlavors(Flavors)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Flavors()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  Flavors getFlavors();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getFlavors <em>Flavors</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Flavors</em>' containment reference.
+   * @see #getFlavors()
+   * @generated
+   */
+  void setFlavors(Flavors value);
+
+  /**
+   * Returns the value of the '<em><b>Monitoring</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Monitoring</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Monitoring</em>' containment reference.
+   * @see #setMonitoring(Monitoring)
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getCloudProvider_Monitoring()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  Monitoring getMonitoring();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getMonitoring <em>Monitoring</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Monitoring</em>' containment reference.
+   * @see #getMonitoring()
+   * @generated
+   */
+  void setMonitoring(Monitoring value);
+
+} // CloudProvider
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Deployment.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Deployment.java
index 50d79e3..f73feeb 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Deployment.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Deployment.java
@@ -39,97 +39,97 @@
  */

 public interface Deployment extends EObject {

 	/**

-	 * Returns the value of the '<em><b>Dep ID</b></em>' attribute.

-	 * <!-- begin-user-doc -->

+   * Returns the value of the '<em><b>Dep ID</b></em>' attribute.

+   * <!-- begin-user-doc -->

 	 * <p>

 	 * If the meaning of the '<em>Dep ID</em>' attribute isn't clear,

 	 * there really should be more of a description here...

 	 * </p>

 	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Dep ID</em>' attribute.

-	 * @see #setDepID(String)

-	 * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getDeployment_DepID()

-	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"

-	 * @generated

-	 */

+   * @return the value of the '<em>Dep ID</em>' attribute.

+   * @see #setDepID(String)

+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getDeployment_DepID()

+   * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"

+   * @generated

+   */

 	String getDepID();

 

 	/**

-	 * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.Deployment#getDepID <em>Dep ID</em>}' attribute.

-	 * <!-- begin-user-doc -->

+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.Deployment#getDepID <em>Dep ID</em>}' attribute.

+   * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Dep ID</em>' attribute.

-	 * @see #getDepID()

-	 * @generated

-	 */

+   * @param value the new value of the '<em>Dep ID</em>' attribute.

+   * @see #getDepID()

+   * @generated

+   */

 	void setDepID(String value);

 

 	/**

-	 * Returns the value of the '<em><b>Deployment Name</b></em>' attribute.

-	 * <!-- begin-user-doc -->

+   * Returns the value of the '<em><b>Deployment Name</b></em>' attribute.

+   * <!-- begin-user-doc -->

 	 * <p>

 	 * If the meaning of the '<em>Deployment Name</em>' attribute isn't clear,

 	 * there really should be more of a description here...

 	 * </p>

 	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Deployment Name</em>' attribute.

-	 * @see #setDeploymentName(String)

-	 * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getDeployment_DeploymentName()

-	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"

-	 * @generated

-	 */

+   * @return the value of the '<em>Deployment Name</em>' attribute.

+   * @see #setDeploymentName(String)

+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getDeployment_DeploymentName()

+   * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"

+   * @generated

+   */

 	String getDeploymentName();

 

 	/**

-	 * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.Deployment#getDeploymentName <em>Deployment Name</em>}' attribute.

-	 * <!-- begin-user-doc -->

+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.Deployment#getDeploymentName <em>Deployment Name</em>}' attribute.

+   * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Deployment Name</em>' attribute.

-	 * @see #getDeploymentName()

-	 * @generated

-	 */

+   * @param value the new value of the '<em>Deployment Name</em>' attribute.

+   * @see #getDeploymentName()

+   * @generated

+   */

 	void setDeploymentName(String value);

 

 	/**

-	 * Returns the value of the '<em><b>Modules</b></em>' reference list.

-	 * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.Module}.

-	 * <!-- begin-user-doc -->

+   * Returns the value of the '<em><b>Modules</b></em>' reference list.

+   * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.Module}.

+   * <!-- begin-user-doc -->

 	 * <p>

 	 * If the meaning of the '<em>Modules</em>' reference list isn't clear,

 	 * there really should be more of a description here...

 	 * </p>

 	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Modules</em>' reference list.

-	 * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getDeployment_Modules()

-	 * @model required="true"

-	 * @generated

-	 */

+   * @return the value of the '<em>Modules</em>' reference list.

+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getDeployment_Modules()

+   * @model required="true"

+   * @generated

+   */

 	EList<Module> getModules();

 

 	/**

-	 * Returns the value of the '<em><b>Status</b></em>' attribute.

-	 * <!-- begin-user-doc -->

+   * Returns the value of the '<em><b>Status</b></em>' attribute.

+   * <!-- begin-user-doc -->

 	 * <p>

 	 * If the meaning of the '<em>Status</em>' attribute isn't clear,

 	 * there really should be more of a description here...

 	 * </p>

 	 * <!-- end-user-doc -->

-	 * @return the value of the '<em>Status</em>' attribute.

-	 * @see #setStatus(String)

-	 * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getDeployment_Status()

-	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"

-	 * @generated

-	 */

+   * @return the value of the '<em>Status</em>' attribute.

+   * @see #setStatus(String)

+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getDeployment_Status()

+   * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"

+   * @generated

+   */

 	String getStatus();

 

 	/**

-	 * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.Deployment#getStatus <em>Status</em>}' attribute.

-	 * <!-- begin-user-doc -->

+   * Sets the value of the '{@link org.eclipse.camf.infosystem.model.base.Deployment#getStatus <em>Status</em>}' attribute.

+   * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * @param value the new value of the '<em>Status</em>' attribute.

-	 * @see #getStatus()

-	 * @generated

-	 */

+   * @param value the new value of the '<em>Status</em>' attribute.

+   * @see #getStatus()

+   * @generated

+   */

 	void setStatus(String value);

 

 } // Deployment

diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Flavors.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Flavors.java
new file mode 100644
index 0000000..61aa790
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Flavors.java
@@ -0,0 +1,43 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Flavors</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.Flavors#getFlavors <em>Flavors</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getFlavors()
+ * @model
+ * @generated
+ */
+public interface Flavors extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Flavors</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Flavors</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Flavors</em>' containment reference list.
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getFlavors_Flavors()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  EList<VirtualMachineImageFlavor> getFlavors();
+
+} // Flavors
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Groups.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Groups.java
new file mode 100644
index 0000000..191bd3f
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Groups.java
@@ -0,0 +1,43 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Groups</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.Groups#getSecurityGroups <em>Security Groups</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getGroups()
+ * @model
+ * @generated
+ */
+public interface Groups extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Security Groups</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.SecurityGroup}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Security Groups</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Security Groups</em>' containment reference list.
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getGroups_SecurityGroups()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  EList<SecurityGroup> getSecurityGroups();
+
+} // Groups
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Images.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Images.java
new file mode 100644
index 0000000..ef35c8f
--- /dev/null
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/Images.java
@@ -0,0 +1,43 @@
+/**
+ */
+package org.eclipse.camf.infosystem.model.base;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Images</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.camf.infosystem.model.base.Images#getVms <em>Vms</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getImages()
+ * @model
+ * @generated
+ */
+public interface Images extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Vms</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Vms</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Vms</em>' containment reference list.
+   * @see org.eclipse.camf.infosystem.model.base.InfoSystemPackage#getImages_Vms()
+   * @model containment="true" required="true"
+   * @generated
+   */
+  EList<VirtualMachineImage> getVms();
+
+} // Images
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemFactory.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemFactory.java
index 55bb653..3cebdf2 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemFactory.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemFactory.java
@@ -29,128 +29,218 @@
 public interface InfoSystemFactory extends EFactory
 {
   /**
-	 * The singleton instance of the factory.
-	 * <!-- begin-user-doc -->
+   * The singleton instance of the factory.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 */
+   * @generated
+   */
   InfoSystemFactory eINSTANCE = org.eclipse.camf.infosystem.model.base.impl.InfoSystemFactoryImpl.init();
 
   /**
-	 * Returns a new object of class '<em>Monitoring Probe</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Monitoring Probe</em>'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Monitoring Probe</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Monitoring Probe</em>'.
+   * @generated
+   */
   MonitoringProbe createMonitoringProbe();
 
   /**
-	 * Returns a new object of class '<em>Resizing Action</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Resizing Action</em>'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Resizing Action</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Resizing Action</em>'.
+   * @generated
+   */
   ResizingAction createResizingAction();
 
   /**
-	 * Returns a new object of class '<em>Software Dependency</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Software Dependency</em>'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Software Dependency</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Software Dependency</em>'.
+   * @generated
+   */
   SoftwareDependency createSoftwareDependency();
 
   /**
-	 * Returns a new object of class '<em>Virtual Machine Image</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Virtual Machine Image</em>'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Virtual Machine Image</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Virtual Machine Image</em>'.
+   * @generated
+   */
   VirtualMachineImage createVirtualMachineImage();
 
   /**
-	 * Returns a new object of class '<em>User Application</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>User Application</em>'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return a new object of class '<em>User Application</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>User Application</em>'.
+   * @generated
+   */
   UserApplication createUserApplication();
 
   /**
-	 * Returns a new object of class '<em>Key Pair</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Key Pair</em>'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Key Pair</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Key Pair</em>'.
+   * @generated
+   */
   KeyPair createKeyPair();
 
   /**
-	 * Returns a new object of class '<em>Virtual Machine Image Flavor</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Virtual Machine Image Flavor</em>'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Virtual Machine Image Flavor</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Virtual Machine Image Flavor</em>'.
+   * @generated
+   */
   VirtualMachineImageFlavor createVirtualMachineImageFlavor();
 
   /**
-	 * Returns a new object of class '<em>Virtual Network</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Virtual Network</em>'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Virtual Network</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Virtual Network</em>'.
+   * @generated
+   */
   VirtualNetwork createVirtualNetwork();
 
   /**
-	 * Returns a new object of class '<em>Virtual Instance</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Cloud Provider</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Cloud Provider</em>'.
+   * @generated
+   */
+  CloudProvider createCloudProvider();
+
+  /**
+   * Returns a new object of class '<em>Virtual Instance</em>'.
+   * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Virtual Instance</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Virtual Instance</em>'.
+   * @generated
+   */
 	VirtualInstance createVirtualInstance();
 
 		/**
-	 * Returns a new object of class '<em>Security Group</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Security Group</em>'.
+   * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Security Group</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Security Group</em>'.
+   * @generated
+   */
 	SecurityGroup createSecurityGroup();
 
 		/**
-	 * Returns a new object of class '<em>Deployment</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Root</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Root</em>'.
+   * @generated
+   */
+  Root createRoot();
+
+    /**
+   * Returns a new object of class '<em>Images</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Images</em>'.
+   * @generated
+   */
+  Images createImages();
+
+    /**
+   * Returns a new object of class '<em>Networks</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Networks</em>'.
+   * @generated
+   */
+  Networks createNetworks();
+
+    /**
+   * Returns a new object of class '<em>Security</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Security</em>'.
+   * @generated
+   */
+  Security createSecurity();
+
+    /**
+   * Returns a new object of class '<em>Keys</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Keys</em>'.
+   * @generated
+   */
+  Keys createKeys();
+
+    /**
+   * Returns a new object of class '<em>Groups</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Groups</em>'.
+   * @generated
+   */
+  Groups createGroups();
+
+    /**
+   * Returns a new object of class '<em>Flavors</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Flavors</em>'.
+   * @generated
+   */
+  Flavors createFlavors();
+
+    /**
+   * Returns a new object of class '<em>Monitoring</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Monitoring</em>'.
+   * @generated
+   */
+  Monitoring createMonitoring();
+
+    /**
+   * Returns a new object of class '<em>Monitoring Service</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Monitoring Service</em>'.
+   * @generated
+   */
+  MonitoringService createMonitoringService();
+
+    /**
+   * Returns a new object of class '<em>Deployment</em>'.
+   * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Deployment</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Deployment</em>'.
+   * @generated
+   */
 	Deployment createDeployment();
 
 		/**
-	 * Returns a new object of class '<em>Module</em>'.
-	 * <!-- begin-user-doc -->
+   * Returns a new object of class '<em>Module</em>'.
+   * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Module</em>'.
-	 * @generated
-	 */
+   * @return a new object of class '<em>Module</em>'.
+   * @generated
+   */
 	Module createModule();
 
 		/**
-	 * Returns the package supported by this factory.
-	 * <!-- begin-user-doc -->
+   * Returns the package supported by this factory.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the package supported by this factory.
-	 * @generated
-	 */
+   * @return the package supported by this factory.
+   * @generated
+   */
   InfoSystemPackage getInfoSystemPackage();
 
 } //InfoSystemFactory
diff --git a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemPackage.java b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemPackage.java
index d704eef..af0c0db 100644
--- a/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemPackage.java
+++ b/plugins/org.eclipse.camf.infosystem.model/src/org/eclipse/camf/infosystem/model/base/InfoSystemPackage.java
@@ -1,21 +1,6 @@
-/*******************************************************************************
- * Copyright (c) 2014 Laboratory for Internet Computing, University of Cyprus.
- * 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
- *
- * Initial development of the original code was made for the 
- * CELAR project founded by European Union
- * project number: FP7-317790  http://www.celarcloud.eu
- *
- * Contributors:
- * 	Nicholas Loulloudes - initial API and implementation
- *******************************************************************************/
-/**
- */
 package org.eclipse.camf.infosystem.model.base;
 
+
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
@@ -41,1459 +26,2149 @@
 public interface InfoSystemPackage extends EPackage
 {
   /**
-	 * The package name.
-	 * <!-- begin-user-doc -->
+   * The package name.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 */
+   * @generated
+   */
   String eNAME = "base";
 
   /**
-	 * The package namespace URI.
-	 * <!-- begin-user-doc -->
+   * The package namespace URI.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 */
+   * @generated
+   */
   String eNS_URI = "http://www.example.org/InfoSystem";
 
   /**
-	 * The package namespace name.
-	 * <!-- begin-user-doc -->
+   * The package namespace name.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 */
+   * @generated
+   */
   String eNS_PREFIX = "base";
 
   /**
-	 * The singleton instance of the package.
-	 * <!-- begin-user-doc -->
+   * The singleton instance of the package.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 */
+   * @generated
+   */
   InfoSystemPackage eINSTANCE = org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl.init();
 
   /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.MonitoringProbeImpl <em>Monitoring Probe</em>}' class.
-	 * <!-- begin-user-doc -->
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.MonitoringProbeImpl <em>Monitoring Probe</em>}' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.MonitoringProbeImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getMonitoringProbe()
-	 * @generated
-	 */
+   * @see org.eclipse.camf.infosystem.model.base.impl.MonitoringProbeImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getMonitoringProbe()
+   * @generated
+   */
   int MONITORING_PROBE = 0;
 
   /**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int MONITORING_PROBE__UID = 0;
 
   /**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int MONITORING_PROBE__NAME = 1;
 
   /**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Description</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int MONITORING_PROBE__DESCRIPTION = 2;
 
   /**
-	 * The feature id for the '<em><b>Metrics</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MONITORING_PROBE__METRICS = 3;
-
-		/**
-	 * The number of structural features of the '<em>Monitoring Probe</em>' class.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Metrics</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
+  int MONITORING_PROBE__METRICS = 3;
+
+  /**
+   * The number of structural features of the '<em>Monitoring Probe</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
   int MONITORING_PROBE_FEATURE_COUNT = 4;
 
   /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.ResizingActionImpl <em>Resizing Action</em>}' class.
-	 * <!-- begin-user-doc -->
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.ResizingActionImpl <em>Resizing Action</em>}' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.ResizingActionImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getResizingAction()
-	 * @generated
-	 */
+   * @see org.eclipse.camf.infosystem.model.base.impl.ResizingActionImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getResizingAction()
+   * @generated
+   */
   int RESIZING_ACTION = 1;
 
   /**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int RESIZING_ACTION__UID = 0;
 
   /**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int RESIZING_ACTION__NAME = 1;
 
   /**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Description</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int RESIZING_ACTION__DESCRIPTION = 2;
 
   /**
-	 * The feature id for the '<em><b>URL</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>URL</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int RESIZING_ACTION__URL = 3;
 
   /**
-	 * The number of structural features of the '<em>Resizing Action</em>' class.
-	 * <!-- begin-user-doc -->
+   * The number of structural features of the '<em>Resizing Action</em>' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int RESIZING_ACTION_FEATURE_COUNT = 4;
 
   /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.SoftwareDependencyImpl <em>Software Dependency</em>}' class.
-	 * <!-- begin-user-doc -->
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.SoftwareDependencyImpl <em>Software Dependency</em>}' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.SoftwareDependencyImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getSoftwareDependency()
-	 * @generated
-	 */
+   * @see org.eclipse.camf.infosystem.model.base.impl.SoftwareDependencyImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getSoftwareDependency()
+   * @generated
+   */
   int SOFTWARE_DEPENDENCY = 2;
 
   /**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int SOFTWARE_DEPENDENCY__UID = 0;
 
   /**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int SOFTWARE_DEPENDENCY__NAME = 1;
 
   /**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Description</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int SOFTWARE_DEPENDENCY__DESCRIPTION = 2;
 
   /**
-	 * The feature id for the '<em><b>URL</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>URL</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int SOFTWARE_DEPENDENCY__URL = 3;
 
   /**
-	 * The feature id for the '<em><b>Type</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int SOFTWARE_DEPENDENCY__TYPE = 4;
 
   /**
-	 * The number of structural features of the '<em>Software Dependency</em>' class.
-	 * <!-- begin-user-doc -->
+   * The number of structural features of the '<em>Software Dependency</em>' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int SOFTWARE_DEPENDENCY_FEATURE_COUNT = 5;
 
   /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualMachineImageImpl <em>Virtual Machine Image</em>}' class.
-	 * <!-- begin-user-doc -->
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.UserApplicationImpl <em>User Application</em>}' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.VirtualMachineImageImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImage()
-	 * @generated
-	 */
-  int VIRTUAL_MACHINE_IMAGE = 3;
+   * @see org.eclipse.camf.infosystem.model.base.impl.UserApplicationImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getUserApplication()
+   * @generated
+   */
+  int USER_APPLICATION = 3;
 
   /**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-  int VIRTUAL_MACHINE_IMAGE__UID = 0;
-
-  /**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-  int VIRTUAL_MACHINE_IMAGE__NAME = 1;
-
-  /**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-  int VIRTUAL_MACHINE_IMAGE__DESCRIPTION = 2;
-
-  /**
-	 * The feature id for the '<em><b>Type</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-  int VIRTUAL_MACHINE_IMAGE__TYPE = 3;
-
-  /**
-	 * The feature id for the '<em><b>URL</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-  int VIRTUAL_MACHINE_IMAGE__URL = 4;
-
-  /**
-	 * The number of structural features of the '<em>Virtual Machine Image</em>' class.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-  int VIRTUAL_MACHINE_IMAGE_FEATURE_COUNT = 5;
-
-  /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.UserApplicationImpl <em>User Application</em>}' class.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.UserApplicationImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getUserApplication()
-	 * @generated
-	 */
-  int USER_APPLICATION = 4;
-
-  /**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int USER_APPLICATION__UID = 0;
 
   /**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int USER_APPLICATION__NAME = 1;
 
   /**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Description</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int USER_APPLICATION__DESCRIPTION = 2;
 
   /**
-	 * The feature id for the '<em><b>URL</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>URL</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int USER_APPLICATION__URL = 3;
 
   /**
-	 * The feature id for the '<em><b>Type</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int USER_APPLICATION__TYPE = 4;
 
   /**
-	 * The number of structural features of the '<em>User Application</em>' class.
-	 * <!-- begin-user-doc -->
+   * The number of structural features of the '<em>User Application</em>' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int USER_APPLICATION_FEATURE_COUNT = 5;
 
   /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.KeyPairImpl <em>Key Pair</em>}' class.
-	 * <!-- begin-user-doc -->
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.KeyPairImpl <em>Key Pair</em>}' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.KeyPairImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getKeyPair()
-	 * @generated
-	 */
-  int KEY_PAIR = 5;
+   * @see org.eclipse.camf.infosystem.model.base.impl.KeyPairImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getKeyPair()
+   * @generated
+   */
+  int KEY_PAIR = 4;
 
   /**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int KEY_PAIR__UID = 0;
 
   /**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int KEY_PAIR__NAME = 1;
 
   /**
-	 * The feature id for the '<em><b>Public Key</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int KEY_PAIR__PUBLIC_KEY = 2;
-
-		/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int KEY_PAIR__DESCRIPTION = 3;
-
-		/**
-	 * The feature id for the '<em><b>URL</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int KEY_PAIR__URL = 4;
-
-		/**
-	 * The number of structural features of the '<em>Key Pair</em>' class.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Public Key</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
+  int KEY_PAIR__PUBLIC_KEY = 2;
+
+  /**
+   * The feature id for the '<em><b>Description</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int KEY_PAIR__DESCRIPTION = 3;
+
+  /**
+   * The feature id for the '<em><b>URL</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int KEY_PAIR__URL = 4;
+
+  /**
+   * The number of structural features of the '<em>Key Pair</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
   int KEY_PAIR_FEATURE_COUNT = 5;
 
   /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualMachineImageFlavorImpl <em>Virtual Machine Image Flavor</em>}' class.
-	 * <!-- begin-user-doc -->
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualMachineImageFlavorImpl <em>Virtual Machine Image Flavor</em>}' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.VirtualMachineImageFlavorImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImageFlavor()
-	 * @generated
-	 */
-  int VIRTUAL_MACHINE_IMAGE_FLAVOR = 6;
+   * @see org.eclipse.camf.infosystem.model.base.impl.VirtualMachineImageFlavorImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImageFlavor()
+   * @generated
+   */
+  int VIRTUAL_MACHINE_IMAGE_FLAVOR = 5;
 
   /**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int VIRTUAL_MACHINE_IMAGE_FLAVOR__NAME = 0;
 
   /**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int VIRTUAL_MACHINE_IMAGE_FLAVOR__UID = 1;
 
   /**
-	 * The feature id for the '<em><b>Ram</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_MACHINE_IMAGE_FLAVOR__RAM = 2;
-
-		/**
-	 * The feature id for the '<em><b>Hdd</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_MACHINE_IMAGE_FLAVOR__HDD = 3;
-
-		/**
-	 * The feature id for the '<em><b>VCPU</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_MACHINE_IMAGE_FLAVOR__VCPU = 4;
-
-		/**
-	 * The number of structural features of the '<em>Virtual Machine Image Flavor</em>' class.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Ram</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE_FLAVOR__RAM = 2;
+
+  /**
+   * The feature id for the '<em><b>Hdd</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE_FLAVOR__HDD = 3;
+
+  /**
+   * The feature id for the '<em><b>VCPU</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE_FLAVOR__VCPU = 4;
+
+  /**
+   * The number of structural features of the '<em>Virtual Machine Image Flavor</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
   int VIRTUAL_MACHINE_IMAGE_FLAVOR_FEATURE_COUNT = 5;
 
   /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualNetworkImpl <em>Virtual Network</em>}' class.
-	 * <!-- begin-user-doc -->
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualNetworkImpl <em>Virtual Network</em>}' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.VirtualNetworkImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualNetwork()
-	 * @generated
-	 */
-  int VIRTUAL_NETWORK = 7;
+   * @see org.eclipse.camf.infosystem.model.base.impl.VirtualNetworkImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualNetwork()
+   * @generated
+   */
+  int VIRTUAL_NETWORK = 6;
 
   /**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int VIRTUAL_NETWORK__UID = 0;
 
   /**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
+   * @generated
+   * @ordered
+   */
   int VIRTUAL_NETWORK__NAME = 1;
 
   /**
-	 * The number of structural features of the '<em>Virtual Network</em>' class.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>Description</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-  int VIRTUAL_NETWORK_FEATURE_COUNT = 2;
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_NETWORK__DESCRIPTION = 2;
 
   /**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualInstanceImpl <em>Virtual Instance</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.VirtualInstanceImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualInstance()
-	 * @generated
-	 */
-	int VIRTUAL_INSTANCE = 8;
-
-		/**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_INSTANCE__UID = 0;
-
-		/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_INSTANCE__NAME = 1;
-
-		/**
-	 * The feature id for the '<em><b>Status</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_INSTANCE__STATUS = 2;
-
-		/**
-	 * The feature id for the '<em><b>IPs</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_INSTANCE__IPS = 3;
-
-		/**
-	 * The feature id for the '<em><b>URI</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_INSTANCE__URI = 4;
-
-		/**
-	 * The number of structural features of the '<em>Virtual Instance</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VIRTUAL_INSTANCE_FEATURE_COUNT = 5;
-
-		/**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.SecurityGroupImpl <em>Security Group</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.SecurityGroupImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getSecurityGroup()
-	 * @generated
-	 */
-	int SECURITY_GROUP = 9;
-
-		/**
-	 * The feature id for the '<em><b>UID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SECURITY_GROUP__UID = 0;
-
-		/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SECURITY_GROUP__NAME = 1;
-
-		/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SECURITY_GROUP__DESCRIPTION = 2;
-
-		/**
-	 * The number of structural features of the '<em>Security Group</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SECURITY_GROUP_FEATURE_COUNT = 3;
-
-		/**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.DeploymentImpl <em>Deployment</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.DeploymentImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getDeployment()
-	 * @generated
-	 */
-	int DEPLOYMENT = 10;
-
-		/**
-	 * The feature id for the '<em><b>Dep ID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DEPLOYMENT__DEP_ID = 0;
-
-		/**
-	 * The feature id for the '<em><b>Deployment Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DEPLOYMENT__DEPLOYMENT_NAME = 1;
-
-		/**
-	 * The feature id for the '<em><b>Modules</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DEPLOYMENT__MODULES = 2;
-
-		/**
-	 * The feature id for the '<em><b>Status</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DEPLOYMENT__STATUS = 3;
-
-		/**
-	 * The number of structural features of the '<em>Deployment</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DEPLOYMENT_FEATURE_COUNT = 4;
-
-		/**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.ModuleImpl <em>Module</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.impl.ModuleImpl
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getModule()
-	 * @generated
-	 */
-	int MODULE = 11;
-
-		/**
-	 * The feature id for the '<em><b>Mod ID</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODULE__MOD_ID = 0;
-
-		/**
-	 * The feature id for the '<em><b>Module Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODULE__MODULE_NAME = 1;
-
-		/**
-	 * The feature id for the '<em><b>Instances</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODULE__INSTANCES = 2;
-
-		/**
-	 * The feature id for the '<em><b>Init Instances</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODULE__INIT_INSTANCES = 3;
-
-		/**
-	 * The number of structural features of the '<em>Module</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODULE_FEATURE_COUNT = 4;
-
-		/**
-	 * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageType <em>Virtual Machine Image Type</em>}' enum.
-	 * <!-- begin-user-doc -->
+   * The feature id for the '<em><b>URL</b></em>' attribute.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageType
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImageType()
-	 * @generated
-	 */
-  int VIRTUAL_MACHINE_IMAGE_TYPE = 12;
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_NETWORK__URL = 3;
 
   /**
-	 * The meta object id for the '<em>Virtual Machine Image Type Object</em>' data type.
-	 * <!-- begin-user-doc -->
+   * The number of structural features of the '<em>Virtual Network</em>' class.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageType
-	 * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImageTypeObject()
-	 * @generated
-	 */
-  int VIRTUAL_MACHINE_IMAGE_TYPE_OBJECT = 13;
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_NETWORK_FEATURE_COUNT = 4;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.CloudProviderImpl <em>Cloud Provider</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.CloudProviderImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getCloudProvider()
+   * @generated
+   */
+  int CLOUD_PROVIDER = 7;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__NAME = 0;
+
+  /**
+   * The feature id for the '<em><b>Images</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__IMAGES = 1;
+
+  /**
+   * The feature id for the '<em><b>Networks</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__NETWORKS = 2;
+
+  /**
+   * The feature id for the '<em><b>Security</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__SECURITY = 3;
+
+  /**
+   * The feature id for the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__TYPE = 4;
+
+  /**
+   * The feature id for the '<em><b>Flavors</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__FLAVORS = 5;
+
+  /**
+   * The feature id for the '<em><b>Monitoring</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER__MONITORING = 6;
+
+  /**
+   * The number of structural features of the '<em>Cloud Provider</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLOUD_PROVIDER_FEATURE_COUNT = 7;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualMachineImageImpl <em>Virtual Machine Image</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.VirtualMachineImageImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImage()
+   * @generated
+   */
+  int VIRTUAL_MACHINE_IMAGE = 8;
+
+  /**
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE__UID = 0;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE__NAME = 1;
+
+  /**
+   * The feature id for the '<em><b>Description</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE__DESCRIPTION = 2;
+
+  /**
+   * The feature id for the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE__TYPE = 3;
+
+  /**
+   * The feature id for the '<em><b>URL</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE__URL = 4;
+
+  /**
+   * The number of structural features of the '<em>Virtual Machine Image</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_MACHINE_IMAGE_FEATURE_COUNT = 5;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.DeploymentImpl <em>Deployment</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.DeploymentImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getDeployment()
+   * @generated
+   */
+  int DEPLOYMENT = 9;
+
+  /**
+   * The feature id for the '<em><b>Dep ID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DEPLOYMENT__DEP_ID = 0;
+
+  /**
+   * The feature id for the '<em><b>Deployment Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DEPLOYMENT__DEPLOYMENT_NAME = 1;
+
+  /**
+   * The feature id for the '<em><b>Modules</b></em>' reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DEPLOYMENT__MODULES = 2;
+
+  /**
+   * The feature id for the '<em><b>Status</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DEPLOYMENT__STATUS = 3;
+
+  /**
+   * The number of structural features of the '<em>Deployment</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DEPLOYMENT_FEATURE_COUNT = 4;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.ModuleImpl <em>Module</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.ModuleImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getModule()
+   * @generated
+   */
+  int MODULE = 10;
+
+  /**
+   * The feature id for the '<em><b>Mod ID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODULE__MOD_ID = 0;
+
+  /**
+   * The feature id for the '<em><b>Module Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODULE__MODULE_NAME = 1;
+
+  /**
+   * The feature id for the '<em><b>Instances</b></em>' reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODULE__INSTANCES = 2;
+
+  /**
+   * The feature id for the '<em><b>Init Instances</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODULE__INIT_INSTANCES = 3;
+
+  /**
+   * The number of structural features of the '<em>Module</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODULE_FEATURE_COUNT = 4;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.VirtualInstanceImpl <em>Virtual Instance</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.VirtualInstanceImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualInstance()
+   * @generated
+   */
+  int VIRTUAL_INSTANCE = 11;
+
+  /**
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_INSTANCE__UID = 0;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_INSTANCE__NAME = 1;
+
+  /**
+   * The feature id for the '<em><b>Status</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_INSTANCE__STATUS = 2;
+
+  /**
+   * The feature id for the '<em><b>IPs</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_INSTANCE__IPS = 3;
+
+  /**
+   * The feature id for the '<em><b>URI</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_INSTANCE__URI = 4;
+
+  /**
+   * The number of structural features of the '<em>Virtual Instance</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int VIRTUAL_INSTANCE_FEATURE_COUNT = 5;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.SecurityGroupImpl <em>Security Group</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.SecurityGroupImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getSecurityGroup()
+   * @generated
+   */
+  int SECURITY_GROUP = 12;
+
+  /**
+   * The feature id for the '<em><b>UID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SECURITY_GROUP__UID = 0;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SECURITY_GROUP__NAME = 1;
+
+  /**
+   * The feature id for the '<em><b>Description</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SECURITY_GROUP__DESCRIPTION = 2;
+
+  /**
+   * The number of structural features of the '<em>Security Group</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SECURITY_GROUP_FEATURE_COUNT = 3;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.RootImpl <em>Root</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.RootImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getRoot()
+   * @generated
+   */
+  int ROOT = 13;
+
+  /**
+   * The feature id for the '<em><b>Cloud Providers</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int ROOT__CLOUD_PROVIDERS = 0;
+
+  /**
+   * The number of structural features of the '<em>Root</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int ROOT_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.ImagesImpl <em>Images</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.ImagesImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getImages()
+   * @generated
+   */
+  int IMAGES = 14;
+
+  /**
+   * The feature id for the '<em><b>Vms</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int IMAGES__VMS = 0;
+
+  /**
+   * The number of structural features of the '<em>Images</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int IMAGES_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.NetworksImpl <em>Networks</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.NetworksImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getNetworks()
+   * @generated
+   */
+  int NETWORKS = 15;
+
+  /**
+   * The feature id for the '<em><b>Nets</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int NETWORKS__NETS = 0;
+
+  /**
+   * The number of structural features of the '<em>Networks</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int NETWORKS_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.SecurityImpl <em>Security</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.SecurityImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getSecurity()
+   * @generated
+   */
+  int SECURITY = 16;
+
+  /**
+   * The feature id for the '<em><b>Keys</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SECURITY__KEYS = 0;
+
+  /**
+   * The feature id for the '<em><b>Groups</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SECURITY__GROUPS = 1;
+
+  /**
+   * The number of structural features of the '<em>Security</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SECURITY_FEATURE_COUNT = 2;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.KeysImpl <em>Keys</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.KeysImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getKeys()
+   * @generated
+   */
+  int KEYS = 17;
+
+  /**
+   * The feature id for the '<em><b>Keypairs</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int KEYS__KEYPAIRS = 0;
+
+  /**
+   * The number of structural features of the '<em>Keys</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int KEYS_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.GroupsImpl <em>Groups</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.GroupsImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getGroups()
+   * @generated
+   */
+  int GROUPS = 18;
+
+  /**
+   * The feature id for the '<em><b>Security Groups</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int GROUPS__SECURITY_GROUPS = 0;
+
+  /**
+   * The number of structural features of the '<em>Groups</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int GROUPS_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.FlavorsImpl <em>Flavors</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.FlavorsImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getFlavors()
+   * @generated
+   */
+  int FLAVORS = 19;
+
+  /**
+   * The feature id for the '<em><b>Flavors</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FLAVORS__FLAVORS = 0;
+
+  /**
+   * The number of structural features of the '<em>Flavors</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FLAVORS_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.MonitoringImpl <em>Monitoring</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.MonitoringImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getMonitoring()
+   * @generated
+   */
+  int MONITORING = 20;
+
+  /**
+   * The feature id for the '<em><b>Monitoring Service</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MONITORING__MONITORING_SERVICE = 0;
+
+  /**
+   * The number of structural features of the '<em>Monitoring</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MONITORING_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.impl.MonitoringServiceImpl <em>Monitoring Service</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.impl.MonitoringServiceImpl
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getMonitoringService()
+   * @generated
+   */
+  int MONITORING_SERVICE = 21;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MONITORING_SERVICE__NAME = 0;
+
+  /**
+   * The feature id for the '<em><b>Probes</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MONITORING_SERVICE__PROBES = 1;
+
+  /**
+   * The number of structural features of the '<em>Monitoring Service</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MONITORING_SERVICE_FEATURE_COUNT = 2;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageType <em>Virtual Machine Image Type</em>}' enum.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageType
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImageType()
+   * @generated
+   */
+  int VIRTUAL_MACHINE_IMAGE_TYPE = 22;
+
+  /**
+   * The meta object id for the '<em>Virtual Machine Image Type Object</em>' data type.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageType
+   * @see org.eclipse.camf.infosystem.model.base.impl.InfoSystemPackageImpl#getVirtualMachineImageTypeObject()
+   * @generated
+   */
+  int VIRTUAL_MACHINE_IMAGE_TYPE_OBJECT = 23;
 
 
   /**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe <em>Monitoring Probe</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe <em>Monitoring Probe</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Monitoring Probe</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe
-	 * @generated
-	 */
+   * @return the meta object for class '<em>Monitoring Probe</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe
+   * @generated
+   */
   EClass getMonitoringProbe();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe#getUID()
-	 * @see #getMonitoringProbe()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe#getUID()
+   * @see #getMonitoringProbe()
+   * @generated
+   */
   EAttribute getMonitoringProbe_UID();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe#getName()
-	 * @see #getMonitoringProbe()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe#getName()
+   * @see #getMonitoringProbe()
+   * @generated
+   */
   EAttribute getMonitoringProbe_Name();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe#getDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe#getDescription <em>Description</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe#getDescription()
-	 * @see #getMonitoringProbe()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Description</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe#getDescription()
+   * @see #getMonitoringProbe()
+   * @generated
+   */
   EAttribute getMonitoringProbe_Description();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe#getMetrics <em>Metrics</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Metrics</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe#getMetrics()
-	 * @see #getMonitoringProbe()
-	 * @generated
-	 */
-	EAttribute getMonitoringProbe_Metrics();
-
-		/**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.ResizingAction <em>Resizing Action</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.MonitoringProbe#getMetrics <em>Metrics</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Resizing Action</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.ResizingAction
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Metrics</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.MonitoringProbe#getMetrics()
+   * @see #getMonitoringProbe()
+   * @generated
+   */
+  EAttribute getMonitoringProbe_Metrics();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.ResizingAction <em>Resizing Action</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Resizing Action</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.ResizingAction
+   * @generated
+   */
   EClass getResizingAction();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.ResizingAction#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.ResizingAction#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.ResizingAction#getUID()
-	 * @see #getResizingAction()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.ResizingAction#getUID()
+   * @see #getResizingAction()
+   * @generated
+   */
   EAttribute getResizingAction_UID();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.ResizingAction#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.ResizingAction#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.ResizingAction#getName()
-	 * @see #getResizingAction()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.ResizingAction#getName()
+   * @see #getResizingAction()
+   * @generated
+   */
   EAttribute getResizingAction_Name();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.ResizingAction#getDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.ResizingAction#getDescription <em>Description</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.ResizingAction#getDescription()
-	 * @see #getResizingAction()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Description</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.ResizingAction#getDescription()
+   * @see #getResizingAction()
+   * @generated
+   */
   EAttribute getResizingAction_Description();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.ResizingAction#getURL <em>URL</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.ResizingAction#getURL <em>URL</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>URL</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.ResizingAction#getURL()
-	 * @see #getResizingAction()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>URL</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.ResizingAction#getURL()
+   * @see #getResizingAction()
+   * @generated
+   */
   EAttribute getResizingAction_URL();
 
   /**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency <em>Software Dependency</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency <em>Software Dependency</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Software Dependency</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency
-	 * @generated
-	 */
+   * @return the meta object for class '<em>Software Dependency</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency
+   * @generated
+   */
   EClass getSoftwareDependency();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getUID()
-	 * @see #getSoftwareDependency()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getUID()
+   * @see #getSoftwareDependency()
+   * @generated
+   */
   EAttribute getSoftwareDependency_UID();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getName()
-	 * @see #getSoftwareDependency()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getName()
+   * @see #getSoftwareDependency()
+   * @generated
+   */
   EAttribute getSoftwareDependency_Name();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getDescription <em>Description</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getDescription()
-	 * @see #getSoftwareDependency()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Description</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getDescription()
+   * @see #getSoftwareDependency()
+   * @generated
+   */
   EAttribute getSoftwareDependency_Description();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getURL <em>URL</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getURL <em>URL</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>URL</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getURL()
-	 * @see #getSoftwareDependency()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>URL</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getURL()
+   * @see #getSoftwareDependency()
+   * @generated
+   */
   EAttribute getSoftwareDependency_URL();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getType <em>Type</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SoftwareDependency#getType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Type</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getType()
-	 * @see #getSoftwareDependency()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Type</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.SoftwareDependency#getType()
+   * @see #getSoftwareDependency()
+   * @generated
+   */
   EAttribute getSoftwareDependency_Type();
 
   /**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage <em>Virtual Machine Image</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.UserApplication <em>User Application</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Virtual Machine Image</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage
-	 * @generated
-	 */
-  EClass getVirtualMachineImage();
-
-  /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getUID()
-	 * @see #getVirtualMachineImage()
-	 * @generated
-	 */
-  EAttribute getVirtualMachineImage_UID();
-
-  /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getName()
-	 * @see #getVirtualMachineImage()
-	 * @generated
-	 */
-  EAttribute getVirtualMachineImage_Name();
-
-  /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getDescription()
-	 * @see #getVirtualMachineImage()
-	 * @generated
-	 */
-  EAttribute getVirtualMachineImage_Description();
-
-  /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getType <em>Type</em>}'.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Type</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getType()
-	 * @see #getVirtualMachineImage()
-	 * @generated
-	 */
-  EAttribute getVirtualMachineImage_Type();
-
-  /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getURL <em>URL</em>}'.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>URL</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getURL()
-	 * @see #getVirtualMachineImage()
-	 * @generated
-	 */
-  EAttribute getVirtualMachineImage_URL();
-
-  /**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.UserApplication <em>User Application</em>}'.
-	 * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>User Application</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.UserApplication
-	 * @generated
-	 */
+   * @return the meta object for class '<em>User Application</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.UserApplication
+   * @generated
+   */
   EClass getUserApplication();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.UserApplication#getUID()
-	 * @see #getUserApplication()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.UserApplication#getUID()
+   * @see #getUserApplication()
+   * @generated
+   */
   EAttribute getUserApplication_UID();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.UserApplication#getName()
-	 * @see #getUserApplication()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.UserApplication#getName()
+   * @see #getUserApplication()
+   * @generated
+   */
   EAttribute getUserApplication_Name();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getDescription <em>Description</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.UserApplication#getDescription()
-	 * @see #getUserApplication()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Description</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.UserApplication#getDescription()
+   * @see #getUserApplication()
+   * @generated
+   */
   EAttribute getUserApplication_Description();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getURL <em>URL</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getURL <em>URL</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>URL</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.UserApplication#getURL()
-	 * @see #getUserApplication()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>URL</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.UserApplication#getURL()
+   * @see #getUserApplication()
+   * @generated
+   */
   EAttribute getUserApplication_URL();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getType <em>Type</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.UserApplication#getType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Type</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.UserApplication#getType()
-	 * @see #getUserApplication()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Type</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.UserApplication#getType()
+   * @see #getUserApplication()
+   * @generated
+   */
   EAttribute getUserApplication_Type();
 
   /**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.KeyPair <em>Key Pair</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.KeyPair <em>Key Pair</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Key Pair</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.KeyPair
-	 * @generated
-	 */
+   * @return the meta object for class '<em>Key Pair</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.KeyPair
+   * @generated
+   */
   EClass getKeyPair();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.KeyPair#getUID()
-	 * @see #getKeyPair()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.KeyPair#getUID()
+   * @see #getKeyPair()
+   * @generated
+   */
   EAttribute getKeyPair_UID();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.KeyPair#getName()
-	 * @see #getKeyPair()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.KeyPair#getName()
+   * @see #getKeyPair()
+   * @generated
+   */
   EAttribute getKeyPair_Name();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getPublicKey <em>Public Key</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Public Key</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.KeyPair#getPublicKey()
-	 * @see #getKeyPair()
-	 * @generated
-	 */
-	EAttribute getKeyPair_PublicKey();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.KeyPair#getDescription()
-	 * @see #getKeyPair()
-	 * @generated
-	 */
-	EAttribute getKeyPair_Description();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getURL <em>URL</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>URL</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.KeyPair#getURL()
-	 * @see #getKeyPair()
-	 * @generated
-	 */
-	EAttribute getKeyPair_URL();
-
-		/**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor <em>Virtual Machine Image Flavor</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getPublicKey <em>Public Key</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Virtual Machine Image Flavor</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Public Key</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.KeyPair#getPublicKey()
+   * @see #getKeyPair()
+   * @generated
+   */
+  EAttribute getKeyPair_PublicKey();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getDescription <em>Description</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Description</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.KeyPair#getDescription()
+   * @see #getKeyPair()
+   * @generated
+   */
+  EAttribute getKeyPair_Description();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.KeyPair#getURL <em>URL</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>URL</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.KeyPair#getURL()
+   * @see #getKeyPair()
+   * @generated
+   */
+  EAttribute getKeyPair_URL();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor <em>Virtual Machine Image Flavor</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Virtual Machine Image Flavor</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor
+   * @generated
+   */
   EClass getVirtualMachineImageFlavor();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getName()
-	 * @see #getVirtualMachineImageFlavor()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getName()
+   * @see #getVirtualMachineImageFlavor()
+   * @generated
+   */
   EAttribute getVirtualMachineImageFlavor_Name();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getUID()
-	 * @see #getVirtualMachineImageFlavor()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getUID()
+   * @see #getVirtualMachineImageFlavor()
+   * @generated
+   */
   EAttribute getVirtualMachineImageFlavor_UID();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getRam <em>Ram</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Ram</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getRam()
-	 * @see #getVirtualMachineImageFlavor()
-	 * @generated
-	 */
-	EAttribute getVirtualMachineImageFlavor_Ram();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getHdd <em>Hdd</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Hdd</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getHdd()
-	 * @see #getVirtualMachineImageFlavor()
-	 * @generated
-	 */
-	EAttribute getVirtualMachineImageFlavor_Hdd();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getVCPU <em>VCPU</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>VCPU</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getVCPU()
-	 * @see #getVirtualMachineImageFlavor()
-	 * @generated
-	 */
-	EAttribute getVirtualMachineImageFlavor_VCPU();
-
-		/**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualNetwork <em>Virtual Network</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getRam <em>Ram</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Virtual Network</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualNetwork
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Ram</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getRam()
+   * @see #getVirtualMachineImageFlavor()
+   * @generated
+   */
+  EAttribute getVirtualMachineImageFlavor_Ram();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getHdd <em>Hdd</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Hdd</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getHdd()
+   * @see #getVirtualMachineImageFlavor()
+   * @generated
+   */
+  EAttribute getVirtualMachineImageFlavor_Hdd();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getVCPU <em>VCPU</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>VCPU</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageFlavor#getVCPU()
+   * @see #getVirtualMachineImageFlavor()
+   * @generated
+   */
+  EAttribute getVirtualMachineImageFlavor_VCPU();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualNetwork <em>Virtual Network</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Virtual Network</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualNetwork
+   * @generated
+   */
   EClass getVirtualNetwork();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualNetwork#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualNetwork#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualNetwork#getUID()
-	 * @see #getVirtualNetwork()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualNetwork#getUID()
+   * @see #getVirtualNetwork()
+   * @generated
+   */
   EAttribute getVirtualNetwork_UID();
 
   /**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualNetwork#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualNetwork#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualNetwork#getName()
-	 * @see #getVirtualNetwork()
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualNetwork#getName()
+   * @see #getVirtualNetwork()
+   * @generated
+   */
   EAttribute getVirtualNetwork_Name();
 
   /**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance <em>Virtual Instance</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Virtual Instance</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualInstance
-	 * @generated
-	 */
-	EClass getVirtualInstance();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getUID()
-	 * @see #getVirtualInstance()
-	 * @generated
-	 */
-	EAttribute getVirtualInstance_UID();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getName()
-	 * @see #getVirtualInstance()
-	 * @generated
-	 */
-	EAttribute getVirtualInstance_Name();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getStatus <em>Status</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Status</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getStatus()
-	 * @see #getVirtualInstance()
-	 * @generated
-	 */
-	EAttribute getVirtualInstance_Status();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getIPs <em>IPs</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>IPs</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getIPs()
-	 * @see #getVirtualInstance()
-	 * @generated
-	 */
-	EAttribute getVirtualInstance_IPs();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getURI <em>URI</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>URI</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getURI()
-	 * @see #getVirtualInstance()
-	 * @generated
-	 */
-	EAttribute getVirtualInstance_URI();
-
-		/**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.SecurityGroup <em>Security Group</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Security Group</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SecurityGroup
-	 * @generated
-	 */
-	EClass getSecurityGroup();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SecurityGroup#getUID <em>UID</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>UID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SecurityGroup#getUID()
-	 * @see #getSecurityGroup()
-	 * @generated
-	 */
-	EAttribute getSecurityGroup_UID();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SecurityGroup#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SecurityGroup#getName()
-	 * @see #getSecurityGroup()
-	 * @generated
-	 */
-	EAttribute getSecurityGroup_Name();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.SecurityGroup#getDescription <em>Description</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.SecurityGroup#getDescription()
-	 * @see #getSecurityGroup()
-	 * @generated
-	 */
-	EAttribute getSecurityGroup_Description();
-
-		/**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.Deployment <em>Deployment</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Deployment</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Deployment
-	 * @generated
-	 */
-	EClass getDeployment();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Deployment#getDepID <em>Dep ID</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Dep ID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Deployment#getDepID()
-	 * @see #getDeployment()
-	 * @generated
-	 */
-	EAttribute getDeployment_DepID();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Deployment#getDeploymentName <em>Deployment Name</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Deployment Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Deployment#getDeploymentName()
-	 * @see #getDeployment()
-	 * @generated
-	 */
-	EAttribute getDeployment_DeploymentName();
-
-		/**
-	 * Returns the meta object for the reference list '{@link org.eclipse.camf.infosystem.model.base.Deployment#getModules <em>Modules</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference list '<em>Modules</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Deployment#getModules()
-	 * @see #getDeployment()
-	 * @generated
-	 */
-	EReference getDeployment_Modules();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Deployment#getStatus <em>Status</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Status</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Deployment#getStatus()
-	 * @see #getDeployment()
-	 * @generated
-	 */
-	EAttribute getDeployment_Status();
-
-		/**
-	 * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.Module <em>Module</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Module</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Module
-	 * @generated
-	 */
-	EClass getModule();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Module#getModID <em>Mod ID</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Mod ID</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Module#getModID()
-	 * @see #getModule()
-	 * @generated
-	 */
-	EAttribute getModule_ModID();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Module#getModuleName <em>Module Name</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Module Name</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Module#getModuleName()
-	 * @see #getModule()
-	 * @generated
-	 */
-	EAttribute getModule_ModuleName();
-
-		/**
-	 * Returns the meta object for the reference list '{@link org.eclipse.camf.infosystem.model.base.Module#getInstances <em>Instances</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference list '<em>Instances</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Module#getInstances()
-	 * @see #getModule()
-	 * @generated
-	 */
-	EReference getModule_Instances();
-
-		/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Module#getInitInstances <em>Init Instances</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Init Instances</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.Module#getInitInstances()
-	 * @see #getModule()
-	 * @generated
-	 */
-	EAttribute getModule_InitInstances();
-
-		/**
-	 * Returns the meta object for enum '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImageType <em>Virtual Machine Image Type</em>}'.
-	 * <!-- begin-user-doc -->
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualNetwork#getDescription <em>Description</em>}'.
+   * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-	 * @return the meta object for enum '<em>Virtual Machine Image Type</em>'.
-	 * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImageType
-	 * @generated
-	 */
+   * @return the meta object for the attribute '<em>Description</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualNetwork#getDescription()
+   * @see #getVirtualNetwork()
+   * @generated
+   */
+  EAttribute getVirtualNetwork_Description();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualNetwork#getURL <em>URL</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>URL</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualNetwork#getURL()
+   * @see #getVirtualNetwork()
+   * @generated
+   */
+  EAttribute getVirtualNetwork_URL();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.CloudProvider <em>Cloud Provider</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Cloud Provider</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider
+   * @generated
+   */
+  EClass getCloudProvider();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getName()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EAttribute getCloudProvider_Name();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getImages <em>Images</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Images</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getImages()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EReference getCloudProvider_Images();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getNetworks <em>Networks</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Networks</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getNetworks()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EReference getCloudProvider_Networks();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getSecurity <em>Security</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Security</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getSecurity()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EReference getCloudProvider_Security();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Type</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getType()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EAttribute getCloudProvider_Type();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getFlavors <em>Flavors</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Flavors</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getFlavors()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EReference getCloudProvider_Flavors();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.camf.infosystem.model.base.CloudProvider#getMonitoring <em>Monitoring</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Monitoring</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.CloudProvider#getMonitoring()
+   * @see #getCloudProvider()
+   * @generated
+   */
+  EReference getCloudProvider_Monitoring();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage <em>Virtual Machine Image</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Virtual Machine Image</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage
+   * @generated
+   */
+  EClass getVirtualMachineImage();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getUID()
+   * @see #getVirtualMachineImage()
+   * @generated
+   */
+  EAttribute getVirtualMachineImage_UID();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getName()
+   * @see #getVirtualMachineImage()
+   * @generated
+   */
+  EAttribute getVirtualMachineImage_Name();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getDescription <em>Description</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Description</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getDescription()
+   * @see #getVirtualMachineImage()
+   * @generated
+   */
+  EAttribute getVirtualMachineImage_Description();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Type</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getType()
+   * @see #getVirtualMachineImage()
+   * @generated
+   */
+  EAttribute getVirtualMachineImage_Type();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getURL <em>URL</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>URL</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualMachineImage#getURL()
+   * @see #getVirtualMachineImage()
+   * @generated
+   */
+  EAttribute getVirtualMachineImage_URL();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.Deployment <em>Deployment</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Deployment</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Deployment
+   * @generated
+   */
+  EClass getDeployment();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Deployment#getDepID <em>Dep ID</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Dep ID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Deployment#getDepID()
+   * @see #getDeployment()
+   * @generated
+   */
+  EAttribute getDeployment_DepID();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Deployment#getDeploymentName <em>Deployment Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Deployment Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Deployment#getDeploymentName()
+   * @see #getDeployment()
+   * @generated
+   */
+  EAttribute getDeployment_DeploymentName();
+
+  /**
+   * Returns the meta object for the reference list '{@link org.eclipse.camf.infosystem.model.base.Deployment#getModules <em>Modules</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the reference list '<em>Modules</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Deployment#getModules()
+   * @see #getDeployment()
+   * @generated
+   */
+  EReference getDeployment_Modules();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Deployment#getStatus <em>Status</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Status</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Deployment#getStatus()
+   * @see #getDeployment()
+   * @generated
+   */
+  EAttribute getDeployment_Status();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.Module <em>Module</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Module</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Module
+   * @generated
+   */
+  EClass getModule();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Module#getModID <em>Mod ID</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Mod ID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Module#getModID()
+   * @see #getModule()
+   * @generated
+   */
+  EAttribute getModule_ModID();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Module#getModuleName <em>Module Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Module Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Module#getModuleName()
+   * @see #getModule()
+   * @generated
+   */
+  EAttribute getModule_ModuleName();
+
+  /**
+   * Returns the meta object for the reference list '{@link org.eclipse.camf.infosystem.model.base.Module#getInstances <em>Instances</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the reference list '<em>Instances</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Module#getInstances()
+   * @see #getModule()
+   * @generated
+   */
+  EReference getModule_Instances();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.Module#getInitInstances <em>Init Instances</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Init Instances</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.Module#getInitInstances()
+   * @see #getModule()
+   * @generated
+   */
+  EAttribute getModule_InitInstances();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance <em>Virtual Instance</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Virtual Instance</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualInstance
+   * @generated
+   */
+  EClass getVirtualInstance();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getUID <em>UID</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>UID</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getUID()
+   * @see #getVirtualInstance()
+   * @generated
+   */
+  EAttribute getVirtualInstance_UID();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getName()
+   * @see #getVirtualInstance()
+   * @generated
+   */
+  EAttribute getVirtualInstance_Name();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getStatus <em>Status</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Status</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getStatus()
+   * @see #getVirtualInstance()
+   * @generated
+   */
+  EAttribute getVirtualInstance_Status();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getIPs <em>IPs</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>IPs</em>'.
+   * @see org.eclipse.camf.infosystem.model.base.VirtualInstance#getIPs()
+   * @see #getVirtualInstance()
+   * @generated
+   */
+  EAttribute getVirtualInstance_IPs();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.camf.infosystem.model.base.VirtualInstance#getURI <em>URI</em>}'.
+   * <!-- begin-user-do