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
CloudML: Transparent deployment of cloud applications
License: GNU Lesser General Public License v3.0
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
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.
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
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.
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?
This message shows up when deploying the model from shell:
"monitoringPlatform.properties not found monitoring platform not in use"
It is probably a relic from the past version.
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.
In Openstack, servers are not created with the name defined in the model.
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
the deployer does not compile anymore with maven 3.1.1 (it works with maven 3.0.5)
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
"~" character is not supported when specifying a path in a deployment model.
From Marco M:
2 points:
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:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<!-- reset all previous level configurations of all j.u.l. loggers -->
<resetJUL>true</resetJUL>
</contextListener>
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).
To be able to demonstrate autoscaling using a CloudML deployment we need to be able to:
If there are errors in the .json file and parsing fails, the shell will output:
"Info: Will wait until completion"
and goes back to CloudML command line:
CloudML >
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
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.
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]"
}
]
}
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
Hello,
It would be great to have the possibility to use on spot instances on Amazon other than the classic on demand ones.
Best regards,
Riccardo
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.
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.
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.
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.
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
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
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
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?
When serializing, the client and server elements within binding types disappear
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.
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 ?
The Uninstall action does not delete the related execution binding
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.
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)
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)
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.
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.
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());
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
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>
The default port for the websocket ui does not reflect the one specified in the doc. Now it is 9030.
Support for the new eu-central region is missing.
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
Deployer crashes when trying to provision a VM but a VM with same name already exist on AWS and is in state terminated
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
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.