GithubHelp home page GithubHelp logo

sintef-9012 / cloudml Goto Github PK

View Code? Open in Web Editor NEW
27.0 18.0 8.0 4.25 MB

CloudML: Transparent deployment of cloud applications

License: GNU Lesser General Public License v3.0

Java 85.95% PowerShell 0.21% CSS 1.00% HTML 1.39% JavaScript 11.27% ANTLR 0.18%

cloudml's Introduction

alt text

Transparent provisioning of cloud resources and deployment of cloud applications

For more details on how to use CloudML please have a look at our Wiki page.

##License## Licensed under the GNU LESSER GENERAL PUBLIC LICENSE

[1] http://www.gnu.org/licenses/lgpl-3.0.en.html

cloudml's People

Contributors

alessandrorossini avatar bitdeli-chef avatar brice-morin avatar difo avatar fchauvel avatar lorenzocianciaruso avatar nicolasferry avatar nvnikolov avatar paxti avatar songhui avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudml's Issues

Feature request: UploadCommand

It would be very useful if there would also be a upload command or action that could be defined in the model, which would work similar to the Upload command in the shell. It could be executed concurrently with the retrievingCommand, but should result in a scp from the local machine.

This would allow uploading credentials.properties, keypair.pem and other files securely over scp.

[UI:shell] Exception when trying to store model with puppet resources

Hi Nicolas,

when loading a model containing PuppetResources from a file and trying to store it back to another file I get the following exception:

CloudML > load deployment from AGU_1.json
Info: Will wait until completion
Info: Loading Complete.

CloudML > store deployment in x.json
line 1:17 mismatched input 'in' expecting 'to'
Info: Will wait until completion
[Ljava.lang.StackTraceElement;@ad6f5f2
2015-09-21 07:33:03 net.cloudml.core.impl.ResourceImpl cannot be cast to net.cloudml.core.PuppetResource
java.lang.ClassCastException: net.cloudml.core.impl.ResourceImpl cannot be cast to net.cloudml.core.PuppetResource
at org.cloudml.codecs.BridgeToKmf.convertResources(BridgeToKmf.java:117)
at org.cloudml.codecs.BridgeToKmf.internalComponentToKmf(BridgeToKmf.java:325)
at org.cloudml.codecs.BridgeToKmf.internalComponentsToKmf(BridgeToKmf.java:280)
at org.cloudml.codecs.BridgeToKmf.toKMF(BridgeToKmf.java:74)
at org.cloudml.codecs.KMFBridge.toKMF(KMFBridge.java:52)
at org.cloudml.codecs.JsonCodec.save(JsonCodec.java:86)
at org.cloudml.facade.Facade.handle(Facade.java:499)
at org.cloudml.facade.commands.StoreDeployment.execute(StoreDeployment.java:45)
at org.cloudml.facade.Execution.run(Execution.java:75)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Error: Error while saving model: java.lang.ClassCastException: net.cloudml.core.impl.ResourceImpl cannot be cast to net.cloudml.core.PuppetResource

Br,
Stepan

CloudAppDeployerr.setCurrentModel() does not populate NodeInstance IP addresses

Rather than an issue, it is a feature request.

As a result of loading the already deployed model to deployer, using:
CloudAppDeployer deployer = new CloudAppDeployer();
deployer.setCurrentModel(cloudMLModel);

the IP addresses of the existing Node Instances are not populated and thus can not accessed remotely if needed.

Also, as a result, xml file created by Bridge.toXML() does not have ip addresses filled wither.

Provide a better handling of clients disconnections

I'm using CloudML using the WebSocket interface. Whenever I start a daemon with

org.cloudml.websocket.Daemon.main(new String[] { "9000" });

if I connect to it, then disconnect from it and reconnect again, every-time something happens the daemon will throw a

org.java_websocket.exceptions.WebsocketNotConnectedException
    at org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:566)
    at org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:543)
    at org.cloudml.websocket.WsPeerStub.sendMessage(WsPeerStub.java:59)
    at org.cloudml.mrt.NodificationCentre.checkAndNotify(NodificationCentre.java:54)
    at org.cloudml.mrt.NodificationCentre$1.run(NodificationCentre.java:88)

as if the previous instance wasn't correctly disconnected, even when using the closeBlocking() method of the WebSocketClient class (thus disconnecting correctly from the server). Also the message

/127.0.0.1:60326 left.

was shown, so the server knows that I disconnected from it.

Did I forget anything? Is there a cleaner way for disconnecting?

CloudML facade won't return the current deployment model

Using the CloudML facade, after a correct deploy of the model, using:

CloudML cml = Factory.getInstance().getCloudML(serverUri)
CommandFactory fcommand = new CommandFactory();
CloudMlCommand cmd = fcommand.loadDeployment(pathToModel);
cml.fireAndWait(cmd);
cmd = fcommand.deploy();
cml.fireAndWait(cmd);
// wait some time until the instances are running...

it doesn't return the actual deployment model or the list of instances via

CloudMlCommand cmd = fcommand.snapshot("/");
cml.fireAndWait(cmd);
// or
cmd = fcommand.listInstances();
cml.fireAndWait(cmd);

where both of those commands return the error

No deployment model. Please first load a deployment model

The error occurs while using Amazon services.

Can't find "cloudml-library.jar"

Hi, I can't find "cloudml-library.jar" in 'facade\target' folder but all other jars are generated: cloudml-WebSocket.jar, cloudml-rest.jar and even facade-2.0-SNAPSHOT.jar etc. Please let me know if there is changes in the procedure of getting "cloudml-library.jar" compared to Wiki page?

P.S. This is really great project, wish you all the best.

Best regards, Iurii

Maven 3.1.1

the deployer does not compile anymore with maven 3.1.1 (it works with maven 3.0.5)

Creator4clouds repository index is missing

Hi,

_Please intimate if It is not the right venue to raise an issue related to Creator4cloud._
I am trying to create a deployment model using the graphical editor: a modelio plugin. I cannot successfully add creator4cloud module into modelio, it is giving an error of missing repository index.
Any help is very much appreciable.

OS: Ubuntu 16.04,
modelio version 3.7.
Reference site: https://forge.modelio.org/projects/creator-4clouds/wiki/Creator4Clouds-Tutorial-CML4C

Thanks,
Faiza

Reset of server and Webpage

From Marco M:
2 points:

  • add a button to reset the server
  • reset the webpage when disconnected from the server

Use SLF4J instead of java.util.logging

I've noticed that in the project it is the java.util.logging service that is used directly for, well, logging. It would be better to just use SLF4J, so that it is easier to handle the log for example with logback.

At the moment, this is a viable workaround for users like me:

  • add this dependency to your pom.xml:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jul-to-slf4j</artifactId>
    <version>1.7.12</version>
</dependency>
  • add this to your logback.xml:
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
    <!-- reset all previous level configurations of all j.u.l. loggers -->
    <resetJUL>true</resetJUL>
</contextListener>
  • put this code somewhere, I've put it in a static box:
static {
    // Optionally remove existing handlers attached to j.u.l root logger
    SLF4JBridgeHandler.removeHandlersForRootLogger();  // (since SLF4J 1.6.5)

    // add SLF4JBridgeHandler to j.u.l's root logger, should be done once during
    // the initialization phase of your application
    SLF4JBridgeHandler.install();
}

This workaround works perfectly, but it could worsen the performances of the application (it adds a starting delay for sure).

[UI:Shell] Storing a deployment -> information loss

Hi Nicolas,

when loading a deployment in the shell and storing it back, the endpoint property of the ExternalComponent for the load balancer gets lost. Unfortunately github does not let me attach the JSONs. I will email them.

Regards,
Stepan

After an image is created during a scale out the startCommand script should be called again

While scaling out a machine, the tool first creates an image of the running machine and then starts the new instance using that image.

The thing is that, at least on Amazon, when creating an image of a virtual machine the service restarts it. This is a problem when running for example a web server which is started via a startCommand script, as it won't be running anymore after the reboot.

The best thing to do (in my opinion) should be calling the stopCommand first before creating the image and the startCommand right after it starts again.

A workaround is obviously messing around with the run levels of the machine, but this should be considered as a possible "bug" or "feature request" for CloudML.

Could not unescaped chain:&& loop

When trying to load the following deployment model from the shell ui I get a loop of errors saying "Could not unescaped chain:&&".

{
"eClass" : "net.cloudml.core:CloudMLModel",
"name" : "Generated_Single Node",
"providers" : [{
"eClass" : "net.cloudml.core:Provider",
"name" : "aws-ec2",
"credentials"  : "/Users/miglie/.aws/credentials-for-cloudml"
}
],
"internalComponents" : [{
"eClass" : "net.cloudml.core:InternalComponent",
"name" : "Java"
,"resources" : [{
"eClass" : "net.cloudml.core:Resource",
"name" : "JavaInstallPackage",
"installCommand" : "sudo apt-get update -y && sudo apt-get install openjdk-7-jdk -y",
"requireCredentials" : false,
"executeLocally" : false}]
,"requiredExecutionPlatform" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatform",
"name" : "OSRequired",
"owner" : "internalComponents[Java]"
,"demands" : [{
"eClass" : "net.cloudml.core:Property",
"name" : "",
"value" : ""
}
]
}
,"providedExecutionPlatforms" : [{
"eClass" : "net.cloudml.core:ProvidedExecutionPlatform",
"name" : "JavaProvided",
"owner" : "internalComponents[Java]"
,"offers" : [{
"eClass" : "net.cloudml.core:Property",
"name" : "",
"value" : ""
}
]
}]
},
{
"eClass" : "net.cloudml.core:InternalComponent",
"name" : "WebContainer"
,"resources" : [{
"eClass" : "net.cloudml.core:Resource",
"name" : "JBossInstallPackage",
"installCommand" : "sudo bash -c \"$(curl -fsSL https://gist.github.com/mmiglier/8db76069313d512df0da/raw/wildfly-install.sh)\"",
"requireCredentials" : false,
"executeLocally" : false}]
,"requiredPorts" : [{
"eClass" : "net.cloudml.core:RequiredPort",
"name" : "ClientPort",
"portNumber" : "0",
"isLocal" :false,
"isMandatory" : false ,
"component" : "internalComponents[WebContainer]"
}
]
,"requiredExecutionPlatform" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatform",
"name" : "JavaRequired",
"owner" : "internalComponents[WebContainer]"
,"demands" : [{
"eClass" : "net.cloudml.core:Property",
"name" : "",
"value" : ""
}
]
}
,"providedExecutionPlatforms" : [{
"eClass" : "net.cloudml.core:ProvidedExecutionPlatform",
"name" : "WCProvided",
"owner" : "internalComponents[WebContainer]"
,"offers" : [{
"eClass" : "net.cloudml.core:Property",
"name" : "",
"value" : ""
}
]
}]
},
{
"eClass" : "net.cloudml.core:InternalComponent",
"name" : "MySQL DB"
,"resources" : [{
"eClass" : "net.cloudml.core:Resource",
"name" : "MySQLInstall",
"installCommand" : "sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password password' && sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password password' && sudo apt-get -y install mysql-server",
"configureCommand" : "mysql -uroot -ppassword -e \"CREATE DATABASE ticketmonster ; GRANT ALL ON ticketmonster.* TO sa@localhost IDENTIFIED BY 'sa' ;\"",
"requireCredentials" : false,
"executeLocally" : false}]
,"providedPorts" : [{
"eClass" : "net.cloudml.core:ProvidedPort",
"name" : "Server",
"isLocal" : false,
"portNumber" : "0",
"component" : "internalComponents[MySQL DB]"
}]
,"requiredExecutionPlatform" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatform",
"name" : "WCRequired",
"owner" : "internalComponents[MySQL DB]"
,"demands" : [{
"eClass" : "net.cloudml.core:Property",
"name" : "",
"value" : ""
}
]
}
,"requiredExecutionPlatform" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatform",
"name" : "RequiredExecutionPlatform",
"owner" : "internalComponents[MySQL DB]"
,"demands" : [{
"eClass" : "net.cloudml.core:Property",
"name" : "",
"value" : ""
}
]
}
},
{
"eClass" : "net.cloudml.core:InternalComponent",
"name" : "WebApp"
,"resources" : [{
"eClass" : "net.cloudml.core:Resource",
"name" : "War",
"downloadCommand" : "sudo apt-get install git maven -y && git clone https://github.com/mmiglier/ticket-monster.git && cd ticket-monster/demo && git checkout modaclouds",
"installCommand" : "mvn install",
"requireCredentials" : false,
"executeLocally" : false}]
,"requiredExecutionPlatform" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatform",
"name" : "WCRequired",
"owner" : "internalComponents[WebApp]"
,"demands" : [{
"eClass" : "net.cloudml.core:Property",
"name" : "",
"value" : ""
}
]
}
}
],
"vms" : [{
"eClass" : "net.cloudml.core:VM",
"name" : "CloudNodeInstance_WebVM",
"minRam" : "3840",
"maxRam" : "0",
"minCores" : "1",
"maxCores" : "0",
"minStorage" : "410",
"maxStorage" : "50",
"os" : "ubuntu",
"location" : "",
"sshKey" : "",
"securityGroup" : "",
"groupName" : "",
"privateKey" : "",
"is64os" : true,
"provider" : "providers[aws-ec2]",
"imageId" : ""
,"providedExecutionPlatforms" : [{
"eClass" : "net.cloudml.core:ProvidedExecutionPlatform",
"name" : "OSProvided",
"owner" : "vms[CloudNodeInstance_WebVM]"
,"offers" : [{
"eClass" : "net.cloudml.core:Property",
"name" : "",
"value" : ""
}
]
}]
}
],
"relationships" : [{
"eClass" : "net.cloudml.core:Relationship",
"name" : "name_b706b66c-6c7b-4496-be94-b2ec243dcc2f"
,"providedPort" : "internalComponents[MySQL DB]/providedPorts[Server]"
,"requiredPort" : "internalComponents[WebContainer]/requiredPorts[ClientPort]"
}
],
"internalComponentInstances" : [ {
"eClass" : "net.cloudml.core:InternalComponentInstance",
"name" : "WebApp",
"type" : "internalComponents[WebApp]"
,"requiredExecutionPlatformInstance" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatformInstance",
"name" : "WCRequired",
"owner" : "internalComponentInstances[WebApp]",
"type" : "internalComponents[WebApp]/requiredExecutionPlatform[WCRequired]"
}
}
,
  {
"eClass" : "net.cloudml.core:InternalComponentInstance",
"name" : "WebContainer",
"type" : "internalComponents[WebContainer]"
,"requiredPortInstances" : [{
"eClass" : "net.cloudml.core:RequiredPortInstance",
"name" : "ClientPort",
"type" : "internalComponents[WebContainer]/requiredPorts[ClientPort]"
}
]
,"requiredExecutionPlatformInstance" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatformInstance",
"name" : "JavaRequired",
"owner" : "internalComponentInstances[WebContainer]",
"type" : "internalComponents[WebContainer]/requiredExecutionPlatform[JavaRequired]"
}
}
,
  {
"eClass" : "net.cloudml.core:InternalComponentInstance",
"name" : "Java",
"type" : "internalComponents[Java]"
,"requiredExecutionPlatformInstance" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatformInstance",
"name" : "OSRequired",
"owner" : "internalComponentInstances[Java]",
"type" : "internalComponents[Java]/requiredExecutionPlatform[OSRequired]"
}
}
,
  {
"eClass" : "net.cloudml.core:InternalComponentInstance",
"name" : "MySQL DB",
"type" : "internalComponents[MySQL DB]"
,"providedPortInstances" : [{
"eClass" : "net.cloudml.core:ProvidedPortInstance",
"name" : "Server",
"type" : "internalComponents[MySQL DB]/providedPorts[Server]"
}
]
,"requiredExecutionPlatformInstance" : {
"eClass" : "net.cloudml.core:RequiredExecutionPlatformInstance",
"name" : "WCRequired",
"owner" : "internalComponentInstances[MySQL DB]",
"type" : "internalComponents[MySQL DB]/requiredExecutionPlatform[WCRequired]"
}
}
],
"externalComponentInstances" : [],
"vmInstances" : [ {
"eClass" : "net.cloudml.core:VMInstance",
"name" : "CloudNodeInstance",
"publicAddress" : "",
"type" : "vms[CloudNodeInstance_WebVM]"
,"providedExecutionPlatformInstances" : [{
"eClass" : "net.cloudml.core:ProvidedExecutionPlatformInstance",
"name" : "OSProvided",
"owner" : "vmInstances[CloudNodeInstance]",
"type" : "vms[CloudNodeInstance_WebVM]/providedExecutionPlatforms[OSProvided]"
}]
}
],
"relationshipInstances" : [{
"eClass" : "net.cloudml.core:RelationshipInstance",
"name" : "name_bd88952b-1b6e-4417-80c6-432d389cf078",
"type" : "relationships[name_b706b66c-6c7b-4496-be94-b2ec243dcc2f]",
"requiredPortInstance" : "internalComponentInstances[WebContainer]/requiredPortInstances[ClientPort]",
"providedPortInstance" : "internalComponentInstances[MySQL DB]/providedPortInstances[Server]"
}
],
"executesInstances" : [{
"eClass" : "net.cloudml.core:ExecuteInstance",
"name" : "name_caa0a991-55f3-422a-978b-3469bd1f558a",
"requiredExecutionPlatformInstance" : "internalComponentInstances[WebApp]/requiredExecutionPlatformInstance[WCRequired]",
"providedExecutionPlatformInstance" : "vmInstances[CloudNodeInstance]/providedExecutionPlatformInstances[OSProvided]"
},
{
"eClass" : "net.cloudml.core:ExecuteInstance",
"name" : "name_b1ef77f1-8923-4330-b9ff-083157a25a8f",
"requiredExecutionPlatformInstance" : "internalComponentInstances[WebContainer]/requiredExecutionPlatformInstance[JavaRequired]",
"providedExecutionPlatformInstance" : "vmInstances[CloudNodeInstance]/providedExecutionPlatformInstances[OSProvided]"
},
{
"eClass" : "net.cloudml.core:ExecuteInstance",
"name" : "name_4ba40d75-a777-4bb1-bf59-46c9075662e7",
"requiredExecutionPlatformInstance" : "internalComponentInstances[Java]/requiredExecutionPlatformInstance[OSRequired]",
"providedExecutionPlatformInstance" : "vmInstances[CloudNodeInstance]/providedExecutionPlatformInstances[OSProvided]"
},
{
"eClass" : "net.cloudml.core:ExecuteInstance",
"name" : "name_1fa9b90b-5c30-4822-b290-3b2f0330c673",
"requiredExecutionPlatformInstance" : "internalComponentInstances[MySQL DB]/requiredExecutionPlatformInstance[WCRequired]",
"providedExecutionPlatformInstance" : "vmInstances[CloudNodeInstance]/providedExecutionPlatformInstances[OSProvided]"
}
]
}

Question about Relationship

Hi again,

I have a question, for example I want to start server and client, and client need to know IP of server to connect to it. I believe "Relationship" was designed to solve this problem somehow. But what is the strategy if connection to the server is actually described in .sh file. Is there is a way pass an IP of the server to script while deploying ?

Best regards, Iurii

Reduce the dependencies

If possible, try to reduce the dependencies of the project.

When attaching the dependencies in a zip for distribution, a staggering 77MB are needed, and thus the generated file is enormous even for very small applications.

Impossible to get the status even after a correct deploy

Hello, I'm having some problems while asking the status of the system right after the deploy (which did go well).

Asking a

!getSnapshot { path : / }

won't return anything, and will only show in the CloudML-Shell.log file as a

Jul 13, 2015 2:04:58 PM org.cloudml.codecs.JsonCodec save
SEVERE: null

with no other data returned. Waiting (also minutes) after a deploy won't help me here, and this is happening multiple times now. It did work only the 7th time after 6 consecutive failed attempts.

It's impossible to get the correct status of an instance

While using the web socket client, it is often impossible to get correctly the status of the instances when using Amazon. This query:

!getSnapshot
path : /componentInstances[id='eu-west-1/i-f80eea1e']
multimaps : { status : status }

will very often return a { status : null } for no particular reasons. For the tests, the deploy was performed correctly via:

!extended { name : LoadDeployment }
!additional json-string: { ..... }
!extended { name : Deploy }

and I've also tried starting and stopping the instances before asking for the instance status by using:

!extended { name: StartComponent, params: [eu-west-1/i-f80eea1e] }

or

!extended { name: StopComponent, params: [eu-west-1/i-f80eea1e] }

but still that status variable is often wrong.

Reading the "updates" received when these operations are completed works, but sometimes it is useful to know the actual status of the network when first connected to it, and there seems to be no safe option for this at the moment.

Deployment validation detects false issues

The SensApp example raises the following error:

java.lang.IllegalArgumentException: Invalid model: Warning: Internal component 'SensApp::JettySC' has no port (neither required or provided) 
 => No given advice

Which is not an error, as a Jetty servlet container does not provide services in addition of being an execution platform.

SSH error

Hi I have strange error, basically when CloudML tries to execute SSH command I am getting error

java.lang.NoClassDefFoundError: org/bouncycastle/openssl/PEMReade

and this class is missing from CloudML lib. Can you take a look, is linking is correct or it's something in my side.

Best regards, Iurii

Build Failure

My system config:
Apache-maven: 3.2.1, Java version 1.7.0_51, Vendor: Oracle Corporation, OS: Windows 7.

Compilation error:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
5.1:compile (default-compile) on project codecs.kmf: Compilation failure: Compilation failure:
[ERROR] C:...\cloudml-master\codecs\kmf\src\main
\java\org\cloudml\codecs\BridgeToKmf.java:[504,34] error: cannot find symbol
[ERROR] symbol: method getHostname()
[ERROR] location: variable ni of type VMInstance

I have tried looking for similar errors on web but no luck. Any useful insight/help is very much appreciated.

Thanks,
Faiza

Provide periodical stable (or "more stable") releases

Hello,
as the title suggests, it should be possible to use a stabilized version of the tool, as using a "rolling release" version is definitely prone to errors: if I test something with the version x.y.z of a tool, it should keep working in the same way with such version, and not break (as in change behavior) for some update/fix.

Thanks!
Riccardo

Trying to deploy using CloudML facade returns a missing credentials error

As in the title, if I try to deploy the model of my infrastructure using the org.cloudml.facade.CloudML class, even though I specify the full path of the credentials file it still laments a "Missing credentials" error (as produced by this line).

This is the beginning part of my model:

{
    "eClass": "net.cloudml.core:CloudMLModel",
    "name": "MiC2AWS",
    "providers": [
        {
            "credentials": "/tmp/scalingrulestests/2406151219/credentialsAmazon.properties",
            "eClass": "net.cloudml.core:Provider",
            "name": "aws-ec2"
        }
    ],
...

I've tried putting the file in the folder in which there's the executable starting the CloudML daemon, but still nothing changed.

This problem doesn't happen when using the web socket client directly with the same model.

As an alternative and good-enough solution for testing purposes, could it be possible to just put the login and password in the model? And if yes, what's the syntax for that?

Serialization

When serializing, the client and server elements within binding types disappear

jaxws-maven-plugin incompatible with java 8

Hello,
I'm using Oracle Java 8 and Apache maven 3.0.5. It seems that there are problem trying to build "deployer" with jaxws-maven-plugin version 2.3 using java 8. Downgrading to openjdk 7 worked fine.

Management of EBS backed image

From FLORIN:
I have an image(us-east-1/ami-35dbde5c) that has already an EBS provided. If I’m using the CloudML as I use right now, it will create me another EBS with the specified size in the vms.minstorage attribute. How can I specified that I don’t need any (extra-)storage ?

Removing a property on an a model element crashes

While trying to remove a property on a model element, I got a null pointer exception.
The faulty line is:

component.getProperties().remove(new Property("Killed", "true"));

I suspect the the remove operation on PropertyGroup has not been tested properly.

Upload command in the cloudML shell does not seem to work.

When using an upload command in the cloudML shell after deploying I get an error.

Can you confirm that this functionality works?

upload credentials.properties on autoscaler1 at credentials.properties
Info: Will wait until completion
Aug 23, 2013 2:21:37 PM org.cloudml.deployer.JCloudsConnector
INFO: >> Connecting to aws-ec2 ...
Aug 23, 2013 2:21:37 PM org.cloudml.deployer.JCloudsConnector
INFO: >> Authenticating ...
Aug 23, 2013 2:21:48 PM org.cloudml.facade.Facade fireAndWait
SEVERE: null
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.cloudml.facade.Facade.fireAndWait(Facade.java:118)
at org.cloudml.ui.shell.Shell.forward(Shell.scala:241)
at org.cloudml.ui.shell.FacadeCommand.execute(Commands.scala:128)
at org.cloudml.ui.shell.Shell.execute(Shell.scala:100)
at org.cloudml.ui.shell.Shell.start(Shell.scala:79)
at org.cloudml.ui.shell.Runner$.main(Shell.scala:269)
at org.cloudml.ui.shell.Runner.main(Shell.scala)
Caused by: java.lang.NullPointerException
at org.cloudml.facade.Facade.handle(Facade.java:295)
at org.cloudml.facade.commands.Upload.execute(Upload.java:66)
at org.cloudml.facade.commands.CloudMlCommand.run(CloudMlCommand.java:44)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)

Determine relationship with Apache Brooklyn

Hi @nicolasferry @songhui @fungi-fungi - I'm curious if you've looked at Apache Brooklyn [1]. There is some overlap but more importantly I think we share many of the same goals, and not duplicating effort is a good thing! Maybe there would be some synergies using that as a deployment engine for Cloud ML models?

Best
Alex
(committer on Apache Brooklyn)

[1] http://brooklyn.io

Removing an ArtefactInstance without destination fails

When updating the currently running deployment with a down-scaled model (one nodeInstance and all involved artefactInstances and bindingInstances removed) I get the following error:

java.lang.NullPointerException
at org.cloudml.deployer.CloudAppDeployer.stopArtefact(CloudAppDeployer.java:342)
at org.cloudml.deployer.CloudAppDeployer.stopArtefacts(CloudAppDeployer.java:331)
at org.cloudml.deployer.CloudAppDeployer.deploy(CloudAppDeployer.java:90)

if an ArtefactInstance does not have a destination specified!

In particular it happens with the jboss1 artefactInstance in the dome model:

{ 
    "eClass" : "net.cloudml.core:ArtefactInstance",
    "name" : "jboss1",
    "type" : "artefactTypes[jboss]",
    "properties" : [],
    "provided" : [{
        "eClass" : "net.cloudml.core:ServerPortInstance",
        "name" : "wc1",
        "type" : "artefactTypes[jboss]/provided[wcProvided]",
        "properties" : []
    }
    ], 
    "required" : [] 
},

For now I will modify the ArtefactInstance to have a destination, but as I understand it it is not required to deploy it as long as it provides a service to another artefactInstance that has a destination (and is not remote).

If you have any questions about this issue, let me know.

maven version, facade Factory missing

Which maven version should we use? Maven 2 results to build failure whilst maven 3 is not working with maven plugin 2.3. If we change the plugin to version 2.2 in the pom.xml in the deployer folder, build completes successfully but there is an error when trying to start the cloudML shell stating that facade Factory is missing.

JSON codec does not serialize offering /demanding of execution platforms

When serializing a deployment model in JSON, and reloading it, we loose the information placed in the required/provided execution platform, and in turn the ability to check that deployment are legal.

Example with SensApp from diversify, which passes only if the model is built in memory!

final Deployment sensapp = SensApp.completeSensApp().build();

final Extinction sequence =  new Simulator(new TypeLevel(sensapp)).run(
        reviveAll(), 
        kill("SL"), 
        kill("ML"));

assertThat(sequence + " should have no survivor", !sequence.hasSurvivors());

Name of the port instances

Currently the name of the ports have to be unique within the scope of the overall deployment model, this should not be the case, the name should only be unique within the scope of the component

Problems buliding the project with Java 7u40 or higher

If you are trying to build the project with Java 7u40 or higher you will face the following error:
[ERROR] Failed to execute goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsimport (default) on project connectors

This is a result of more restrictive JAXP (v1.5) which is included in JDK 7u40 or higher.

You can fix this issue by adding the follwoing snippet to the configuration tag of to the pom.xml in the connectors folder:

<vmArgs>
   <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>

Create an instance of specific type

Hi,

Is there is a way to create Amazon instance of specific type rather than to control amount of cores, RAM and storage?

Best regards, Iurii Tverezovskyi

Question about scaleOut

Hello again,

I was trying to use functionality of scaleOut function from Scaler class, but I was not able to make it work. So i have a question does it work at all, or this part is still in development? And one more question, what is the idea behind your decision to not include cloudml-library.jar generation in latest version of CloudML?

Best regards, Iurii

Question about resource ordering

Hi again,

I have a question regarding ordering resource execution. For example I have few resources in InternalComponent and few in Relationship (which are set with .setClientResource()). Right now for some reason resource in Relationship executing first, Is there is way to set what is the order should be? Or at least how to execute all resources in InternalComponent before resources in Relationship.

Exaple :

InternalComponent client = new InternalComponent("client", platform);
client.getProvidedPorts().add(clientProvided);

Relationship connection = new Relationship("connection", cleintRequired, serverProvided);
connection.setClientResource(connectionRes);

Best regards, Iurii

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.