public synchronized void commitModifications(List<String> modifications) { for (String modi : modifications) { String[] parsed = modi.split("\\s+"); if ("add".equals(parsed[0])) { if ("in".equals(parsed[4]) && "root".equals(parsed[5]) && "nodeTypes".equals(parsed[6])) { // FIXME: We should know which provider is responsible for the new VM we add! final Provider provider = new Provider("Missing Provider"); repo.getRoot().getProviders().add(provider); repo.getRoot().getComponents().add(new VM(parsed[3], provider)); } } } }
protected Provider findProvider(Deployment container) { final Provider provider = container.getProviders().firstNamed(providerName); if (provider == null) { final String error = String.format("Unable to find the provider named '%s'", providerName); throw new IllegalStateException(error); } return provider; }
/** * Convert a Deployment model from CloudMl in a format * compatible with MODAClouds Monitoring Platform's APIs * * @param deployment the deployment model to convert */ public static Model fromCloudmlToModaMP(Deployment deployment) { //get the relevant part of the model //create a new list for avoid changes in the original one ComponentInstanceGroup instances = new ComponentInstanceGroup(); instances.addAll(deployment.getComponentInstances()); ProviderGroup providers = new ProviderGroup(); providers.addAll(deployment.getProviders()); //call the actual translator return getModelUpdates(instances, providers); }
public Deployment clone(){ Deployment tmp=new Deployment(); tmp.getComponents().addAll(this.getComponents()); tmp.getComponentInstances().addAll(this.getComponentInstances()); tmp.getExecuteInstances().addAll(this.getExecuteInstances()); tmp.getProviders().addAll(this.getProviders()); tmp.getRelationshipInstances().addAll(this.getRelationshipInstances()); tmp.getClouds().addAll(this.getClouds()); tmp.getRelationships().addAll(this.getRelationships()); tmp.setName(this.getName()); return tmp; }
@Override public boolean remove(Object o) { if (o instanceof Provider) { final Provider provider = (Provider) o; if (provider.isUsed()) { final String error = String.format("Unable to remove provider '5s' as it is still in use", provider.getName()); throw new IllegalStateException(error); } provider.getOwner().discard(); } return super.remove(o); } }
@Override public void validate(Report report) { if (providers.isEmpty() && components.isEmpty() && componentInstances.isEmpty() && relationships.isEmpty() && relationshipInstances.isEmpty()) { report.addWarning("empty deployment model"); } }
public Deployment merge(String path){ InputStream instream = null; try { instream = new FileInputStream(path); } catch (FileNotFoundException e) { e.printStackTrace(); } Deployment target = (Deployment) new JsonCodec().load(instream); if (isDeploymentLoaded()) { deploy.getComponents().replaceAll(target.getComponents()); deploy.getRelationships().replaceAll(target.getRelationships()); //TODO: Check if names are unique deploy.getComponentInstances().replaceAll(target.getComponentInstances()); deploy.getExecuteInstances().replaceAll(target.getExecuteInstances()); deploy.getProviders().replaceAll(target.getProviders()); deploy.getRelationshipInstances().replaceAll(target.getRelationshipInstances()); }else{ deploy=target; } initCoordinator(); return deploy; }
public net.cloudml.core.CloudMLModel toKMF(Deployment deploy) { kDeploy.setName(deploy.getName()); convertProperties(deploy,kDeploy,factory); providersToKmf(deploy.getProviders().toList()); externalComponentToKmf(deploy.getComponents().onlyExternals().toList()); internalComponentsToKmf(deploy.getComponents().onlyInternals().toList()); externalComponentInstanceToKmf(deploy.getComponentInstances().onlyExternals().toList()); internalComponentInstancesToKmf(deploy.getComponentInstances().onlyInternals().toList()); executesToKmf(deploy.getExecuteInstances().toList()); relationshipsToKmf(deploy.getRelationships()); relationshipInstancesToKmf(deploy.getRelationshipInstances().toList()); return kDeploy; }
public static Deployment createCloudBeesDeployment(){ DeploymentBuilder dmb = org.cloudml.core.samples.PaasCloudBees.completeCloudBeesPaaS(); Deployment dm = dmb.build(); dm.getProviders().firstNamed("CloudBees").setCredentials(new FileCredentials("c:\\temp\\cloudbees.credential")); ExternalComponent c = dm.getComponents().onlyExternals().firstNamed("cbdb"); c.setLogin("sintef"); c.setPasswd("password123"); System.out.println(dm); return dm; }
@Override public boolean add(Provider e) { if (firstNamed(e.getName()) != null) { final String error = String.format("Provider name must be unique! There is already a provider named '%s'", e.getName()); throw new IllegalStateException(error); } e.getOwner().set(Deployment.this); return super.add(e); }
public static Deployment createCloudBeesDeployment(){ DeploymentBuilder dmb = org.cloudml.core.samples.PaasCloudBees.completeCloudBeesPaaS(); Deployment dm = dmb.build(); dm.getProviders().firstNamed("CloudBees").setName("beanstalk"); dm.getProviders().firstNamed("beanstalk").setCredentials(new FileCredentials("c:\\temp\\aws.credential")); ExternalComponent c = dm.getComponents().onlyExternals().firstNamed("cbdb"); c.setServiceType("database"); c.setLogin("sintef"); c.setPasswd("password123"); c.getProperties().add(new Property("DB-Engine","MySQL")); c.getProperties().add(new Property("DB-Version","5.6.17")); c.getProperties().add(new Property("DB-Name","cbdb")); System.out.println(dm); return dm; }
public void providersToPOJO(Collection<net.cloudml.core.Provider> kproviders) { checkForNull(kproviders, "Cannot iterate on null!"); Provider p; for (net.cloudml.core.Provider kProvider: kproviders) { if(kProvider.getCredentials() == null || kProvider.getCredentials().equals("")){ if((kProvider.getLogin() != null && kProvider.getPassword() != null) || (kProvider.getLogin().equals("") && !kProvider.getPassword().equals(""))){ p = new Provider(kProvider.getName(), new MemoryCredentials(kProvider.getLogin(), kProvider.getPassword())); }else{ throw new IllegalArgumentException("No credentials"); } }else{ p = new Provider(kProvider.getName(), new FileCredentials(kProvider.getCredentials())); } convertProperties(kProvider, p); model.getProviders().add(p); providers.put(p.getName(), p); } assert kproviders.isEmpty() == providers.isEmpty(); }
public static Deployment createBeanstalkDeployment(){ DeploymentBuilder dmb = PaasCloudBees.completeCloudBeesPaaS(); Deployment dm = dmb.build(); dm.getProviders().firstNamed("CloudBees").setName("beanstalk"); dm.getProviders().firstNamed("beanstalk").setCredentials(new FileCredentials("c:\\temp\\aws.credential")); ExternalComponent c = dm.getComponents().onlyExternals().firstNamed("cbdb"); c.setServiceType("database"); c.setLogin("sintef"); c.setPasswd("password123"); c.getProperties().add(new Property("DB-Engine","MySQL")); c.getProperties().add(new Property("DB-Version","5.6.17")); c.getProperties().add(new Property("DB-Name","cbdb")); return dm; }
@Override public Deployment build() { Deployment model = new Deployment(getName()); super.prepare(model); for(ProviderBuilder provider: providers) { model.getProviders().add(provider.build()); } for (ComponentBuilder<? extends Component, ? extends ComponentBuilder<?, ?>> builder : components) { builder.integrateIn(model); } for(ComponentInstanceBuilder<? extends ComponentInstance<? extends Component>, ? extends ComponentInstanceBuilder<?,?>> builder: componentInstances) { builder.integrateIn(model); } for (RelationshipBuilder relationship: relationships) { relationship.integrateIn(model); } for (RelationshipInstanceBuilder builder: relationshipInstances) { builder.integrateIn(model); } return model; }
@Override public void handle(Burst command){ dispatch(new Message(command, Category.INFORMATION, "Bursting out External Component: " + command.getEcId()+" to "+ command.getProviderID())); VMInstance vmi = deploy.getComponentInstances().onlyVMs().withID(command.getEcId()); Provider p=deploy.getProviders().firstNamed(command.getProviderID()); if(p == null){ dispatch(new Message(command, Category.ERROR, "Cannot find a Provider with this ID!")); return; } if (vmi == null) { ExternalComponentInstance eci=deploy.getComponentInstances().onlyExternals().firstNamed(command.getEcId()); if(eci == null){ dispatch(new Message(command, Category.ERROR, "Cannot find a External component with this ID!")); }else{ deployer.scaleOut(eci,p); } } else { deployer.scaleOut(vmi,p); } }