SINTEF-9012 / cloudml

CloudML: Transparent deployment of cloud applications
GNU Lesser General Public License v3.0
27 stars 8 forks source link

Could not unescaped chain:&& loop #51

Closed mmiglier closed 8 years ago

mmiglier commented 8 years ago

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]"
}
]
}
nicolasferry commented 8 years ago

Hi Marco,

Unfortunately it is not allowed to use the character '&' in the models. For now, modifying this would require too important changes in the serialization mechanism.

Cheers, Nicolas