Merge "Add new services PostgreSQL and Tomcat"
This commit is contained in:
commit
6cedf3aa6a
@ -0,0 +1,23 @@
|
|||||||
|
FormatVersion: 2.0.0
|
||||||
|
Version: 1.0.0
|
||||||
|
Name: Configure database access credentails
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
database: $database
|
||||||
|
username: $username
|
||||||
|
password: $password
|
||||||
|
host: $databaseHost
|
||||||
|
|
||||||
|
Body: |
|
||||||
|
return configure('{0} {1} {2} {3}'.format(args.database, args.username, args.password, args.host)).stdout
|
||||||
|
|
||||||
|
Scripts:
|
||||||
|
configure:
|
||||||
|
Type: Application
|
||||||
|
Version: 1.0.0
|
||||||
|
EntryPoint: Linux/configureAccessToPostgreSql.sh
|
||||||
|
Files:
|
||||||
|
- <Linux/common.sh>
|
||||||
|
Options:
|
||||||
|
captureStdout: true
|
||||||
|
captureStderr: false
|
@ -0,0 +1,22 @@
|
|||||||
|
FormatVersion: 2.0.0
|
||||||
|
Version: 1.0.0
|
||||||
|
Name: Add database and user to PostgreSql
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
database: $database
|
||||||
|
username: $username
|
||||||
|
password: $password
|
||||||
|
|
||||||
|
Body: |
|
||||||
|
return configure('{0} {1} {2}'.format(args.database, args.username, args.password)).stdout
|
||||||
|
|
||||||
|
Scripts:
|
||||||
|
configure:
|
||||||
|
Type: Application
|
||||||
|
Version: 1.0.0
|
||||||
|
EntryPoint: Linux/configurePostgreSqlDatabase.sh
|
||||||
|
Files:
|
||||||
|
- <Linux/common.sh>
|
||||||
|
Options:
|
||||||
|
captureStdout: true
|
||||||
|
captureStderr: false
|
@ -0,0 +1,21 @@
|
|||||||
|
FormatVersion: 2.0.0
|
||||||
|
Version: 1.0.0
|
||||||
|
Name: Deploy PostgreSql
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
appName: $appName
|
||||||
|
|
||||||
|
Body: |
|
||||||
|
return deploy(args.appName).stdout
|
||||||
|
|
||||||
|
Scripts:
|
||||||
|
deploy:
|
||||||
|
Type: Application
|
||||||
|
Version: 1.0.0
|
||||||
|
EntryPoint: Linux/deployPostgreSql.sh
|
||||||
|
Files:
|
||||||
|
- <Linux/installer.sh>
|
||||||
|
- <Linux/common.sh>
|
||||||
|
Options:
|
||||||
|
captureStdout: true
|
||||||
|
captureStderr: false
|
@ -0,0 +1,21 @@
|
|||||||
|
FormatVersion: 2.0.0
|
||||||
|
Version: 1.0.0
|
||||||
|
Name: Deploy Tomcat
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
appName: $appName
|
||||||
|
|
||||||
|
Body: |
|
||||||
|
return deploy(args.appName).stdout
|
||||||
|
|
||||||
|
Scripts:
|
||||||
|
deploy:
|
||||||
|
Type: Application
|
||||||
|
Version: 1.0.0
|
||||||
|
EntryPoint: Linux/deployTomcat.sh
|
||||||
|
Files:
|
||||||
|
- <Linux/installer.sh>
|
||||||
|
- <Linux/common.sh>
|
||||||
|
Options:
|
||||||
|
captureStdout: true
|
||||||
|
captureStderr: false
|
@ -0,0 +1,21 @@
|
|||||||
|
FormatVersion: 2.0.0
|
||||||
|
Version: 1.0.0
|
||||||
|
Name: Deploy Tomcat
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
repository: $repository
|
||||||
|
|
||||||
|
Body: |
|
||||||
|
return installApp(args.repository).stdout
|
||||||
|
|
||||||
|
Scripts:
|
||||||
|
installApp:
|
||||||
|
Type: Application
|
||||||
|
Version: 1.0.0
|
||||||
|
EntryPoint: Linux/deployTomcatApp.sh
|
||||||
|
Files:
|
||||||
|
- <Linux/installer.sh>
|
||||||
|
- <Linux/common.sh>
|
||||||
|
Options:
|
||||||
|
captureStdout: true
|
||||||
|
captureStderr: false
|
19
muranorepository/Services/agent_templates/GetIP.template
Normal file
19
muranorepository/Services/agent_templates/GetIP.template
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
FormatVersion: 2.0.0
|
||||||
|
Version: 1.0.0
|
||||||
|
Name: Deploy Tomcat
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
appName: $appName
|
||||||
|
|
||||||
|
Body: |
|
||||||
|
return getIp(args.appName).stdout
|
||||||
|
|
||||||
|
Scripts:
|
||||||
|
getIp:
|
||||||
|
Type: Application
|
||||||
|
Version: 1.0.0
|
||||||
|
EntryPoint: Linux/getIp.sh
|
||||||
|
Files: []
|
||||||
|
Options:
|
||||||
|
captureStdout: true
|
||||||
|
captureStderr: false
|
@ -1,22 +1,22 @@
|
|||||||
{
|
{
|
||||||
"Resources": {
|
"Resources": {
|
||||||
"${instanceName}-FloatingIP": {
|
"${lbName}-FloatingIP": {
|
||||||
"Type": "OS::Neutron::FloatingIP",
|
"Type": "OS::Neutron::FloatingIP",
|
||||||
"Properties": {
|
"Properties": {
|
||||||
"floating_network_id": "$externalNetworkId"
|
"floating_network_id": "$externalNetworkId"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"${instanceName}-FloatingIpAssoc": {
|
"${lbName}-FloatingIpAssoc": {
|
||||||
"Type": "OS::Neutron::FloatingIPAssociation",
|
"Type": "OS::Neutron::FloatingIPAssociation",
|
||||||
"Properties": {
|
"Properties": {
|
||||||
"floatingip_id": { "Ref" : "${instanceName}-FloatingIP" },
|
"floatingip_id": { "Ref" : "${lbName}-FloatingIP" },
|
||||||
"port_id": {"Fn::Select": ["port_id", {"Fn::GetAtt": ["${lbName}-Pool", "vip"]}]}
|
"port_id": {"Fn::Select": ["port_id", {"Fn::GetAtt": ["${lbName}-Pool", "vip"]}]}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Outputs": {
|
"Outputs": {
|
||||||
"${instanceName}-FloatingIPaddress": {
|
"${lbName}-FloatingIPaddress": {
|
||||||
"Value": {"Fn::GetAtt": ["${instanceName}-FloatingIP", "floating_ip_address"]},
|
"Value": {"Fn::GetAtt": ["${lbName}-FloatingIP", "floating_ip_address"]},
|
||||||
"Description": "Floating IP assigned"
|
"Description": "Floating IP assigned"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"Resources": {
|
||||||
|
"$MuranoSecurityGroup-{envName}": {
|
||||||
|
"Type": "AWS::EC2::SecurityGroup",
|
||||||
|
"Properties": {
|
||||||
|
"SecurityGroupIngress": [
|
||||||
|
{
|
||||||
|
"ToPort": "5432",
|
||||||
|
"IpProtocol": "tcp",
|
||||||
|
"FromPort": "5432",
|
||||||
|
"CidrIp": "0.0.0.0/0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"Resources": {
|
||||||
|
"$MuranoSecurityGroup-{envName}": {
|
||||||
|
"Type": "AWS::EC2::SecurityGroup",
|
||||||
|
"Properties": {
|
||||||
|
"SecurityGroupIngress": [
|
||||||
|
{
|
||||||
|
"ToPort": "8080",
|
||||||
|
"IpProtocol": "tcp",
|
||||||
|
"FromPort": "8080",
|
||||||
|
"CidrIp": "0.0.0.0/0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
49
muranorepository/Services/postgreSql-manifest.yaml
Normal file
49
muranorepository/Services/postgreSql-manifest.yaml
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
version: 0.1
|
||||||
|
service_display_name: PostgreSQL
|
||||||
|
|
||||||
|
description: >-
|
||||||
|
<strong> PostgreSQL database
|
||||||
|
|
||||||
|
full_service_name: postgreSql
|
||||||
|
author: Mirantis Inc.
|
||||||
|
service_version: 1
|
||||||
|
enabled: True
|
||||||
|
|
||||||
|
ui:
|
||||||
|
- PostgreSql.yaml
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
- PostgreSql.xml
|
||||||
|
- Networking.xml
|
||||||
|
|
||||||
|
heat:
|
||||||
|
- Linux.template
|
||||||
|
- LinuxSecurity.template
|
||||||
|
- PostgreSqlSecurity.template
|
||||||
|
- InstancePort.template
|
||||||
|
- InstancePortWSubnet.template
|
||||||
|
- Network.template
|
||||||
|
- NNSecurity.template
|
||||||
|
- Param.template
|
||||||
|
- RouterInterface.template
|
||||||
|
- Subnet.template
|
||||||
|
- DefaultSecurity.template
|
||||||
|
- Keypair.template
|
||||||
|
- LoadBalancer.template
|
||||||
|
- FloatingIP.template
|
||||||
|
- FloatingIPwithLB.template
|
||||||
|
|
||||||
|
agent:
|
||||||
|
- DeployPostgreSql.template
|
||||||
|
- ConfigurePostgreSqlDatabase.template
|
||||||
|
- ConfigureAccessToPostgreSql.template
|
||||||
|
- GetIP.template
|
||||||
|
|
||||||
|
|
||||||
|
scripts:
|
||||||
|
- Linux/common.sh
|
||||||
|
- Linux/installer.sh
|
||||||
|
- Linux/deployPostgreSql.sh
|
||||||
|
- Linux/configurePostgreSqlDatabase.sh
|
||||||
|
- Linux/configureAccessToPostgreSql.sh
|
||||||
|
- Linux/getIp.sh
|
@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function include(){
|
||||||
|
curr_dir=$(cd $(dirname "$0") && pwd)
|
||||||
|
inc_file_path=$curr_dir/$1
|
||||||
|
if [ -f "$inc_file_path" ]; then
|
||||||
|
. $inc_file_path
|
||||||
|
else
|
||||||
|
echo -e "$inc_file_path not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
include "common.sh"
|
||||||
|
|
||||||
|
get_os
|
||||||
|
[[ $? -ne 0 ]] && exit 1
|
||||||
|
if [[ "$DistroBasedOn" != "redhat" ]]; then
|
||||||
|
DEBUGLVL=4
|
||||||
|
log "ERROR: We are sorry, only \"redhat\" based distribution of Linux supported for this service type, exiting!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed -e "s/YOURUSERNAMEHERE/$2/" -i /usr/share/tomcat/webapps/app/META-INF/context.xml
|
||||||
|
sed -e "s/YOURPASSWORDHERE/$3/" -i /usr/share/tomcat/webapps/app/META-INF/context.xml
|
||||||
|
sed -e "s/YOURHOSTHERE/$4/" -i /usr/share/tomcat/webapps/app/META-INF/context.xml
|
||||||
|
sed -e "s/YOURDATABASEHERE/$1/" -i /usr/share/tomcat/webapps/app/META-INF/context.xml
|
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function include(){
|
||||||
|
curr_dir=$(cd $(dirname "$0") && pwd)
|
||||||
|
inc_file_path=$curr_dir/$1
|
||||||
|
if [ -f "$inc_file_path" ]; then
|
||||||
|
. $inc_file_path
|
||||||
|
else
|
||||||
|
echo -e "$inc_file_path not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
include "common.sh"
|
||||||
|
|
||||||
|
get_os
|
||||||
|
[[ $? -ne 0 ]] && exit 1
|
||||||
|
if [[ "$DistroBasedOn" != "redhat" ]]; then
|
||||||
|
DEBUGLVL=4
|
||||||
|
log "ERROR: We are sorry, only \"redhat\" based distribution of Linux supported for this service type, exiting!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
su -c "psql -d postgres -c \"CREATE DATABASE $1\"" -s /bin/sh postgres
|
||||||
|
su -c "psql -d postgres -c \"CREATE USER $2 WITH PASSWORD '$3'\"" -s /bin/sh postgres
|
||||||
|
su -c "psql -d postgres -c \"GRANT ALL PRIVILEGES ON DATABASE $1 to $2;\"" -s /bin/sh postgres
|
||||||
|
echo "host $1 $2 all md5" >> /var/lib/pgsql/data/pg_hba.conf
|
||||||
|
|
||||||
|
systemctl restart postgresql.service
|
31
muranorepository/Services/scripts/Linux/deployPostgreSql.sh
Normal file
31
muranorepository/Services/scripts/Linux/deployPostgreSql.sh
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function include(){
|
||||||
|
curr_dir=$(cd $(dirname "$0") && pwd)
|
||||||
|
inc_file_path=$curr_dir/$1
|
||||||
|
if [ -f "$inc_file_path" ]; then
|
||||||
|
. $inc_file_path
|
||||||
|
else
|
||||||
|
echo -e "$inc_file_path not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
include "common.sh"
|
||||||
|
|
||||||
|
get_os
|
||||||
|
[[ $? -ne 0 ]] && exit 1
|
||||||
|
if [[ "$DistroBasedOn" != "redhat" ]]; then
|
||||||
|
DEBUGLVL=4
|
||||||
|
log "ERROR: We are sorry, only \"redhat\" based distribution of Linux supported for this service type, exiting!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
bash installer.sh -p sys -i "postgresql-server postgresql-contrib"
|
||||||
|
|
||||||
|
postgresql-setup initdb
|
||||||
|
|
||||||
|
sed -e "s/^#listen_addresses =.*$/listen_addresses = \'*\'/" -i /var/lib/pgsql/data/postgresql.conf
|
||||||
|
add_fw_rule '-I INPUT 1 -p tcp -m tcp --dport 5432 -j ACCEPT -m comment --comment "by murano, PostgreSQL"'
|
||||||
|
|
||||||
|
systemctl enable postgresql.service
|
||||||
|
systemctl start postgresql.service
|
29
muranorepository/Services/scripts/Linux/deployTomcat.sh
Normal file
29
muranorepository/Services/scripts/Linux/deployTomcat.sh
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function include(){
|
||||||
|
curr_dir=$(cd $(dirname "$0") && pwd)
|
||||||
|
inc_file_path=$curr_dir/$1
|
||||||
|
if [ -f "$inc_file_path" ]; then
|
||||||
|
. $inc_file_path
|
||||||
|
else
|
||||||
|
echo -e "$inc_file_path not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
include "common.sh"
|
||||||
|
|
||||||
|
get_os
|
||||||
|
[[ $? -ne 0 ]] && exit 1
|
||||||
|
if [[ "$DistroBasedOn" != "redhat" ]]; then
|
||||||
|
DEBUGLVL=4
|
||||||
|
log "ERROR: We are sorry, only \"redhat\" based distribution of Linux supported for this service type, exiting!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
bash installer.sh -p sys -i "tomcat tomcat-webapps tomcat-admin-webapps"
|
||||||
|
|
||||||
|
add_fw_rule '-I INPUT 1 -p tcp -m tcp --dport 8080 -j ACCEPT -m comment --comment "by murano, Tomcat"'
|
||||||
|
|
||||||
|
systemctl enable tomcat.service
|
||||||
|
systemctl start tomcat.service
|
||||||
|
|
30
muranorepository/Services/scripts/Linux/deployTomcatApp.sh
Normal file
30
muranorepository/Services/scripts/Linux/deployTomcatApp.sh
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function include(){
|
||||||
|
curr_dir=$(cd $(dirname "$0") && pwd)
|
||||||
|
inc_file_path=$curr_dir/$1
|
||||||
|
if [ -f "$inc_file_path" ]; then
|
||||||
|
. $inc_file_path
|
||||||
|
else
|
||||||
|
echo -e "$inc_file_path not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
include "common.sh"
|
||||||
|
|
||||||
|
get_os
|
||||||
|
[[ $? -ne 0 ]] && exit 1
|
||||||
|
if [[ "$DistroBasedOn" != "redhat" ]]; then
|
||||||
|
DEBUGLVL=4
|
||||||
|
log "ERROR: We are sorry, only \"redhat\" based distribution of Linux supported for this service type, exiting!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
bash installer.sh -p sys -i "java-devel"
|
||||||
|
|
||||||
|
cd /usr/share/tomcat/webapps
|
||||||
|
git clone $1 app
|
||||||
|
cd app/WEB-INF/classes
|
||||||
|
for f in $(find . -name "*.java"); do
|
||||||
|
javac -cp /usr/share/tomcat/lib/tomcat-servlet-3.0-api.jar "$f"
|
||||||
|
done
|
2
muranorepository/Services/scripts/Linux/getIp.sh
Normal file
2
muranorepository/Services/scripts/Linux/getIp.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
curl -s http://169.254.169.254/latest/meta-data/local-ipv4
|
44
muranorepository/Services/tomcat-manifest.yaml
Normal file
44
muranorepository/Services/tomcat-manifest.yaml
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
version: 0.1
|
||||||
|
service_display_name: Tomcat
|
||||||
|
|
||||||
|
description: >-
|
||||||
|
<strong> Tomcat application
|
||||||
|
|
||||||
|
full_service_name: tomcat
|
||||||
|
author: Mirantis Inc.
|
||||||
|
service_version: 1
|
||||||
|
enabled: True
|
||||||
|
|
||||||
|
ui:
|
||||||
|
- Tomcat.yaml
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
- Tomcat.xml
|
||||||
|
- Networking.xml
|
||||||
|
|
||||||
|
heat:
|
||||||
|
- Linux.template
|
||||||
|
- LinuxSecurity.template
|
||||||
|
- TomcatSecurity.template
|
||||||
|
- InstancePort.template
|
||||||
|
- InstancePortWSubnet.template
|
||||||
|
- Network.template
|
||||||
|
- NNSecurity.template
|
||||||
|
- Param.template
|
||||||
|
- RouterInterface.template
|
||||||
|
- Subnet.template
|
||||||
|
- DefaultSecurity.template
|
||||||
|
- Keypair.template
|
||||||
|
- LoadBalancer.template
|
||||||
|
- FloatingIP.template
|
||||||
|
- FloatingIPwithLB.template
|
||||||
|
|
||||||
|
agent:
|
||||||
|
- DeployTomcat.template
|
||||||
|
- DeployTomcatApp.template
|
||||||
|
|
||||||
|
scripts:
|
||||||
|
- Linux/common.sh
|
||||||
|
- Linux/installer.sh
|
||||||
|
- Linux/deployTomcat.sh
|
||||||
|
- Linux/deployTomcatApp.sh
|
93
muranorepository/Services/ui_forms/PostgreSql.yaml
Normal file
93
muranorepository/Services/ui_forms/PostgreSql.yaml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
unitTemplates:
|
||||||
|
- {}
|
||||||
|
|
||||||
|
forms:
|
||||||
|
- serviceConfiguration:
|
||||||
|
fields:
|
||||||
|
- name: name
|
||||||
|
type: string
|
||||||
|
label: Service Name
|
||||||
|
description: >-
|
||||||
|
To identify your service in logs please specify a service name
|
||||||
|
- name: database
|
||||||
|
type: string
|
||||||
|
label: Database
|
||||||
|
description: >-
|
||||||
|
Please, provide database name that is going to be created
|
||||||
|
- name: username
|
||||||
|
type: string
|
||||||
|
label: Username
|
||||||
|
description: >-
|
||||||
|
Please, provide username that is going to be used to connect to the database
|
||||||
|
- name: password
|
||||||
|
type: password
|
||||||
|
label: Password
|
||||||
|
descriptionTitle: Password
|
||||||
|
description: >-
|
||||||
|
Please, provide password that is going to be used to connect to the database
|
||||||
|
- name: dcInstances
|
||||||
|
type: instance
|
||||||
|
hidden: true
|
||||||
|
attributeNames: units
|
||||||
|
initial: 1
|
||||||
|
- name: assignFloatingIP
|
||||||
|
type: floatingip
|
||||||
|
label: Assign Floating IP
|
||||||
|
description: >-
|
||||||
|
Select to true to assign floating IP automatically
|
||||||
|
initial: false
|
||||||
|
required: false
|
||||||
|
widgetMedia:
|
||||||
|
css: {all: [muranodashboard/css/checkbox.css]}
|
||||||
|
- name: unitNamingPattern
|
||||||
|
type: string
|
||||||
|
label: Hostname template
|
||||||
|
description: >-
|
||||||
|
For your convenience all instance hostnames can be named
|
||||||
|
in the same way. Enter a name and use # character for incrementation.
|
||||||
|
For example, host# turns into host1, host2, etc. Please follow Windows
|
||||||
|
hostname restrictions.
|
||||||
|
required: false
|
||||||
|
regexpValidator: '^(([a-zA-Z0-9#][a-zA-Z0-9-#]*[a-zA-Z0-9#])\.)*([A-Za-z0-9#]|[A-Za-z0-9#][A-Za-z0-9-#]*[A-Za-z0-9#])$'
|
||||||
|
# FIXME: does not work for # turning into 2-digit numbers
|
||||||
|
maxLength: 15
|
||||||
|
helpText: Optional field for a machine hostname template
|
||||||
|
# temporaryHack
|
||||||
|
widgetMedia:
|
||||||
|
js: [muranodashboard/js/support_placeholder.js]
|
||||||
|
css: {all: [muranodashboard/css/support_placeholder.css]}
|
||||||
|
- instanceConfiguration:
|
||||||
|
fields:
|
||||||
|
- name: title
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
hidden: true
|
||||||
|
attributeNames: false
|
||||||
|
descriptionTitle: Instance Configuration
|
||||||
|
description: Specify some instance parameters on which service would be created.
|
||||||
|
- name: flavor
|
||||||
|
type: flavor
|
||||||
|
label: Instance flavor
|
||||||
|
description: >-
|
||||||
|
Select registered in Openstack flavor. Consider that service performance
|
||||||
|
depends on this parameter.
|
||||||
|
required: false
|
||||||
|
- name: osImage
|
||||||
|
type: image
|
||||||
|
imageType: linux
|
||||||
|
label: Instance image
|
||||||
|
description: >-
|
||||||
|
Select valid image for a service. Image should already be prepared and
|
||||||
|
registered in glance.
|
||||||
|
- name: keyPair
|
||||||
|
type: keypair
|
||||||
|
label: Key Pair
|
||||||
|
description: >-
|
||||||
|
Select the Key Pair to control access to instances. You can login to
|
||||||
|
instances using this KeyPair after the deployment of service.
|
||||||
|
required: false
|
||||||
|
- name: availabilityZone
|
||||||
|
type: azone
|
||||||
|
label: Availability zone
|
||||||
|
description: Select availability zone where service would be installed.
|
||||||
|
required: false
|
101
muranorepository/Services/ui_forms/Tomcat.yaml
Normal file
101
muranorepository/Services/ui_forms/Tomcat.yaml
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
unitTemplates:
|
||||||
|
- {}
|
||||||
|
|
||||||
|
forms:
|
||||||
|
- serviceConfiguration:
|
||||||
|
fields:
|
||||||
|
- name: name
|
||||||
|
type: string
|
||||||
|
label: Service Name
|
||||||
|
description: >-
|
||||||
|
To identify your service in logs please specify a service name
|
||||||
|
- name: repository
|
||||||
|
type: string
|
||||||
|
label: Git repository
|
||||||
|
description: >-
|
||||||
|
URL of a git repository with the application you want to deploy.
|
||||||
|
regexpValidator: '/(\w+://)(.+@)*([\w\d\.]+)(:[\d]+)?/*(.*)/i'
|
||||||
|
errorMessages:
|
||||||
|
invalid: Enter correct git repository url
|
||||||
|
helpText: Enter a valid git repository URL
|
||||||
|
- name: psqlDatabase
|
||||||
|
type: psqlDatabase
|
||||||
|
label: Database
|
||||||
|
description: >-
|
||||||
|
Select database to connect with
|
||||||
|
- name: dcInstances
|
||||||
|
type: instance
|
||||||
|
label: Instance Count
|
||||||
|
description: >-
|
||||||
|
Several instances with application running on Tomcat can be created at one time.
|
||||||
|
attributeNames: units
|
||||||
|
minValue: 1
|
||||||
|
maxValue: 100
|
||||||
|
initial: 1
|
||||||
|
helpText: Enter an integer value between 2 and 100
|
||||||
|
- name: loadBalancerPort
|
||||||
|
type: integer
|
||||||
|
label: Load Balancer port
|
||||||
|
initial: 8080
|
||||||
|
hidden: true
|
||||||
|
- name: assignFloatingIP
|
||||||
|
type: floatingip
|
||||||
|
label: Assign Floating IP
|
||||||
|
description: >-
|
||||||
|
Select to true to assign floating IP automatically
|
||||||
|
initial: false
|
||||||
|
required: false
|
||||||
|
widgetMedia:
|
||||||
|
css: {all: [muranodashboard/css/checkbox.css]}
|
||||||
|
- name: unitNamingPattern
|
||||||
|
type: string
|
||||||
|
label: Hostname template
|
||||||
|
description: >-
|
||||||
|
For your convenience all instance hostnames can be named
|
||||||
|
in the same way. Enter a name and use # character for incrementation.
|
||||||
|
For example, host# turns into host1, host2, etc. Please follow Windows
|
||||||
|
hostname restrictions.
|
||||||
|
required: false
|
||||||
|
regexpValidator: '^(([a-zA-Z0-9#][a-zA-Z0-9-#]*[a-zA-Z0-9#])\.)*([A-Za-z0-9#]|[A-Za-z0-9#][A-Za-z0-9-#]*[A-Za-z0-9#])$'
|
||||||
|
# FIXME: does not work for # turning into 2-digit numbers
|
||||||
|
maxLength: 15
|
||||||
|
helpText: Optional field for a machine hostname template
|
||||||
|
# temporaryHack
|
||||||
|
widgetMedia:
|
||||||
|
js: [muranodashboard/js/support_placeholder.js]
|
||||||
|
css: {all: [muranodashboard/css/support_placeholder.css]}
|
||||||
|
- instanceConfiguration:
|
||||||
|
fields:
|
||||||
|
- name: title
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
hidden: true
|
||||||
|
attributeNames: false
|
||||||
|
descriptionTitle: Instance Configuration
|
||||||
|
description: Specify some instance parameters on which service would be created.
|
||||||
|
- name: flavor
|
||||||
|
type: flavor
|
||||||
|
label: Instance flavor
|
||||||
|
description: >-
|
||||||
|
Select registered in Openstack flavor. Consider that service performance
|
||||||
|
depends on this parameter.
|
||||||
|
required: false
|
||||||
|
- name: osImage
|
||||||
|
type: image
|
||||||
|
imageType: linux
|
||||||
|
label: Instance image
|
||||||
|
description: >-
|
||||||
|
Select valid image for a service. Image should already be prepared and
|
||||||
|
registered in glance.
|
||||||
|
- name: keyPair
|
||||||
|
type: keypair
|
||||||
|
label: Key Pair
|
||||||
|
description: >-
|
||||||
|
Select the Key Pair to control access to instances. You can login to
|
||||||
|
instances using this KeyPair after the deployment of service.
|
||||||
|
required: false
|
||||||
|
- name: availabilityZone
|
||||||
|
type: azone
|
||||||
|
label: Availability zone
|
||||||
|
description: Select availability zone where service would be installed.
|
||||||
|
required: false
|
@ -22,7 +22,7 @@
|
|||||||
</rule>
|
</rule>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule match="$[?(@.networking.state.ready_for_cf and @.networking.topology == 'routed')].services[?(@.type not in ('webServerFarm', 'aspNetAppFarm') and @.assignFloatingIP)].units[?(not @.temp.floatingIpAssigned)]"
|
<rule match="$[?(@.networking.state.ready_for_cf and @.networking.topology == 'routed')].services[?(@.type not in ('webServerFarm', 'aspNetAppFarm', 'tomcat') and @.assignFloatingIP)].units[?(not @.temp.floatingIpAssigned)]"
|
||||||
desc="Units of non-farms services which have no floating assigned yet">
|
desc="Units of non-farms services which have no floating assigned yet">
|
||||||
<report entity="unit">
|
<report entity="unit">
|
||||||
<parameter name="id"><select path="id"/></parameter>
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
269
muranorepository/Services/workflows/PostgreSql.xml
Normal file
269
muranorepository/Services/workflows/PostgreSql.xml
Normal file
@ -0,0 +1,269 @@
|
|||||||
|
<workflow>
|
||||||
|
|
||||||
|
<rule match="$[?(@.networking.state.ready_for_cf)].services[?(@.type == 'postgreSql' and @.keyPair)].units[?(@.state.hostname and not @.temp.KeyPairMapping)]"
|
||||||
|
desc="This rule allows to set Key Pair for all VMs with this service">
|
||||||
|
<update-cf-stack template="Keypair" error="exception">
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="instanceName"><select path="state.hostname"/></mapping>
|
||||||
|
<mapping name="keyName"><select path="::keyPair"/></mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="temp.KeyPairMapping"><true/></set>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Unable to assign Key Pair on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</update-cf-stack>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Provisioning rules -->
|
||||||
|
<rule match="$.services[?(@.type == 'postgreSql' and not @.securityTemplates)]">
|
||||||
|
<set path="securityTemplates">
|
||||||
|
<list>
|
||||||
|
<text>LinuxSecurity</text>
|
||||||
|
<text>PostgreSqlSecurity</text>
|
||||||
|
</list>
|
||||||
|
</set>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
|
||||||
|
<rule match="$[?(@.networking.state.ready_for_cf)].services[?(@.type == 'postgreSql')].units[?(@.state.hostname and not @.temp.instanceName)]"
|
||||||
|
desc="Units of PostgreSql service having hostname and image names assigned but without instances">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Creating Linux instance <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<!-- HEAT rules definitions -->
|
||||||
|
<!-- Rule #1 -->
|
||||||
|
<update-cf-stack template="Linux" error="exception">
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="instanceName">
|
||||||
|
<select path="state.hostname"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="userData">
|
||||||
|
<prepare-user-data template="Linux" initFile="linux_init.sh">
|
||||||
|
<parameter name="hostname">
|
||||||
|
<select path="state.hostname"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
</prepare-user-data>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="instanceType">
|
||||||
|
<select path="::flavor" default="m1.medium"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="imageName">
|
||||||
|
<select path="::osImage.name"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="availabilityZone">
|
||||||
|
<select path="::availabilityZone" default="nova"/>
|
||||||
|
</mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="temp.instanceName">
|
||||||
|
<select path="name"/>
|
||||||
|
</set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Linux instance <select path="state.hostname"/> (<select path="name"/>) created
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Unable to deploy Linux instance <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/>
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</update-cf-stack>
|
||||||
|
<!-- Rule #2 -->
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Configuring security groups on <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</rule>
|
||||||
|
<!-- Agent rules -->
|
||||||
|
<rule match="$.services[?(@.type == 'postgreSql')].units[?(@.temp.instanceName and not @.state.PostgreSQLInstalled)]"
|
||||||
|
desc="Units of PostgreSql service which have got an instance deployed but have not got PostgreSQL service installed">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Installing PostgreSql on unit <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<!-- Commands sequence -->
|
||||||
|
<!-- Command #1-->
|
||||||
|
<send-command template="DeployPostgreSql" error="exception">
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="state.PostgreSQLInstalled"><true/></set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
PostgreSql deployed on <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Unable to deploy PostgreSql on <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/>
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</send-command>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
|
||||||
|
<rule match="$.services[?(@.type == 'postgreSql')].units[?(@.state.PostgreSQLInstalled and not @.state.databaseConfigured)]"
|
||||||
|
desc="Units of PostgreSQL which have got PostgreSQL installed but database is not yet created">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Configuring database <select path="::database"/> on unit <select path="state.hostname"/> (<select path="name"/>)</parameter>
|
||||||
|
</report>
|
||||||
|
<send-command template="ConfigurePostgreSqlDatabase" error="exception">
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="database">
|
||||||
|
<select path="::database"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="username">
|
||||||
|
<select path="::username"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="password">
|
||||||
|
<select path="::password"/>
|
||||||
|
</mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="state.databaseConfigured"><true/></set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Database <select path="::database"/> has been configured on unit <select path="state.hostname"/> (<select path="name"/>)</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Unable to configure database on <select path="state.hostname"/> (<select path="name"/>) <format-error error="exception"/></parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</send-command>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule match="$.services[?(@.type == 'postgreSql')].units[?(@.temp.instanceName and not @.state.unitIp)]"
|
||||||
|
desc="Units of PostgreSql service which have got an instance deployed">
|
||||||
|
<send-command template="GetIP" result="ip" error="exception">
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="state.unitIp"><select source="ip" path="0" /></set>
|
||||||
|
<set path="::databaseHost"><select source="ip" path="0" /></set>
|
||||||
|
</success>
|
||||||
|
</send-command>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule match="$.services[?(@.type == 'tomcat' and @.psqlDatabase)].units[?(not @.database)]"
|
||||||
|
desc="Reinitialize units with database">
|
||||||
|
<set path="database">
|
||||||
|
<select path="::psqlDatabase"/>
|
||||||
|
</set>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule match="$.services[?(@.type == 'postgreSql')].units[?(@.state.unitIp and @.state.PostgreSQLInstalled and @.state.databaseConfigured)]">
|
||||||
|
<set path="#currentDatabase">
|
||||||
|
<select path="::"/>
|
||||||
|
</set>
|
||||||
|
<rule>
|
||||||
|
<parameter name="match">/$.services[?(@.type == 'tomcat' and @.psqlDatabase == '<select path="id" source="currentDatabase"/>')].units[?(@.temp.instanceName and not @.state.database)]</parameter>
|
||||||
|
<send-command template="ConfigureAccessToPostgreSql" error="exception">
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="database">
|
||||||
|
<select path="database" source="currentDatabase"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="username">
|
||||||
|
<select path="username" source="currentDatabase"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="password">
|
||||||
|
<select path="password" source="currentDatabase"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="databaseHost">
|
||||||
|
<select path="databaseHost" source="currentDatabase"/>
|
||||||
|
</mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="state.database"><select path="database" source="currentDatabase"/></set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Unit <select path="state.hostname"/> has been configured to work with database <select path="database"/></parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Unable to configure unit <select path="state.hostname"/> to work with database <select path="database"/> due to <format-error error="exception"/></parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</send-command>
|
||||||
|
</rule>
|
||||||
|
</rule>
|
||||||
|
</workflow>
|
246
muranorepository/Services/workflows/Tomcat.xml
Normal file
246
muranorepository/Services/workflows/Tomcat.xml
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
<workflow>
|
||||||
|
|
||||||
|
<rule match="$[?(@.networking.state.ready_for_cf)].services[?(@.type == 'tomcat' and @.keyPair)].units[?(@.state.hostname and not @.temp.KeyPairMapping)]"
|
||||||
|
desc="This rule allows to set Key Pair for all VMs with this service">
|
||||||
|
<update-cf-stack template="Keypair" error="exception">
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="instanceName"><select path="state.hostname"/></mapping>
|
||||||
|
<mapping name="keyName"><select path="::keyPair"/></mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="temp.KeyPairMapping"><true/></set>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Unable to assign Key Pair on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</update-cf-stack>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Provisioning rules -->
|
||||||
|
<rule match="$.services[?(@.type == 'tomcat' and not @.securityTemplates)]">
|
||||||
|
<set path="securityTemplates">
|
||||||
|
<list>
|
||||||
|
<text>LinuxSecurity</text>
|
||||||
|
<text>TomcatSecurity</text>
|
||||||
|
</list>
|
||||||
|
</set>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
|
||||||
|
<rule match="$[?(@.networking.state.ready_for_cf)].services[?(@.type == 'tomcat')].units[?(@.state.hostname and not @.temp.instanceName)]"
|
||||||
|
desc="Units of Tomcat service having hostname and image names assigned but without instances">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Creating Linux instance <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<!-- HEAT rules definitions -->
|
||||||
|
<!-- Rule #1 -->
|
||||||
|
<update-cf-stack template="Linux" error="exception">
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="instanceName">
|
||||||
|
<select path="state.hostname"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="userData">
|
||||||
|
<prepare-user-data template="Linux" initFile="linux_init.sh">
|
||||||
|
<parameter name="hostname">
|
||||||
|
<select path="state.hostname"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
</prepare-user-data>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="instanceType">
|
||||||
|
<select path="::flavor" default="m1.medium"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="imageName">
|
||||||
|
<select path="::osImage.name"/>
|
||||||
|
</mapping>
|
||||||
|
<mapping name="availabilityZone">
|
||||||
|
<select path="::availabilityZone" default="nova"/>
|
||||||
|
</mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="temp.instanceName">
|
||||||
|
<select path="name"/>
|
||||||
|
</set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Linux instance <select path="state.hostname"/> (<select path="name"/>) created
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Unable to deploy Linux instance <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/>
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</update-cf-stack>
|
||||||
|
<!-- Rule #2 -->
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Configuring security groups on <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</rule>
|
||||||
|
<!-- Agent rules -->
|
||||||
|
<rule match="$.services[?(@.type == 'tomcat')].units[?(@.temp.instanceName and not @.state.tomcatInstalled)]"
|
||||||
|
desc="Units of Tomcat service which have got an instance deployed but have not got Tomcat service installed">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Installing Tomcat on unit <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<!-- Commands sequence -->
|
||||||
|
<!-- Command #1-->
|
||||||
|
<send-command template="DeployTomcat" error="exception">
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="state.tomcatInstalled"><true/></set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Tomcat deployed on <select path="state.hostname"/> (<select path="name"/>)
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="text">
|
||||||
|
Unable to deploy Tomcat on <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/>
|
||||||
|
</parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</send-command>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule match="$.services[?(@.type == 'tomcat')].units[?(@.state.tomcatInstalled and not @.state.appDeployed)]"
|
||||||
|
desc="Units of Tomcat app services which have got Tomcat installed but not the WebApplication deployed">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Deploying WebApp <select path="::name"/> on unit <select path="state.hostname"/> (<select path="name"/>)</parameter>
|
||||||
|
</report>
|
||||||
|
<send-command template="DeployTomcatApp" error="exception">
|
||||||
|
<parameter name="unit">
|
||||||
|
<select path="id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="service">
|
||||||
|
<select path="::id"/>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="repository">
|
||||||
|
<select path="::repository"/>
|
||||||
|
</mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="state.appDeployed"><true/></set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">App <select path="::name"/> has been deployed on unit <select path="state.hostname"/> (<select path="name"/>)</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Unable to deploy WebApp on <select path="state.hostname"/> (<select path="name"/>) <format-error error="exception"/></parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</send-command>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule match="$[?(@.networking.state.ready_for_cf)].services[?(@.type == 'tomcat')].units[?(@.state.hostname and not @.temp.registeredWithLB)]"
|
||||||
|
desc="Units of Tomcat services which have a hostname assigned but are not registered with LB">
|
||||||
|
<update-cf-stack template="LoadBalancer" result="outputs" error="exception">
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="instanceName"><select path="state.hostname"/></mapping>
|
||||||
|
<mapping name="lbPort"><select path="::loadBalancerPort"/></mapping>
|
||||||
|
<mapping name="lbName"><select path="::name"/></mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="temp.registeredWithLB"><true/></set>
|
||||||
|
<set path="::uri">http://<select source="outputs"><parameter name="path"><select path="::name"/>-loadBalancerIp</parameter></select>:<select path="::loadBalancerPort"/></set>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Unable to create a Server Farm load balancer on unit <select path="state.hostname"/> (<select path="name"/>) due to <format-error error="exception"/></parameter>
|
||||||
|
</report>
|
||||||
|
<stop/>
|
||||||
|
</failure>
|
||||||
|
</update-cf-stack>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule match="$[?(@.networking.state.ready_for_cf and @.networking.topology == 'routed')].services[?(@.type == 'tomcat' and @.assignFloatingIP and not @.floatingip)]"
|
||||||
|
desc="Tomcat services which have no floating assigned yet">
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Assigning Floating IP to the to LB</parameter>
|
||||||
|
</report>
|
||||||
|
<update-cf-stack template="FloatingIPwithLB" result="outputs" error="exception">
|
||||||
|
<parameter name="mappings">
|
||||||
|
<map>
|
||||||
|
<mapping name="lbName"><select path="name"/></mapping>
|
||||||
|
<mapping name="externalNetworkId"><select path="/networking.floatingId"/></mapping>
|
||||||
|
</map>
|
||||||
|
</parameter>
|
||||||
|
<success>
|
||||||
|
<set path="floatingip"><select source="outputs"><parameter name="path"><select path="name"/>-FloatingIPaddress</parameter></select></set>
|
||||||
|
<report entity="unit">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Floating IP has been assigned to LB</parameter>
|
||||||
|
</report>
|
||||||
|
</success>
|
||||||
|
<failure>
|
||||||
|
<report entity="unit" level="error">
|
||||||
|
<parameter name="id"><select path="id"/></parameter>
|
||||||
|
<parameter name="text">Unable to assign floating IP to <select path="name"/> due to <format-error error="exception"/></parameter>
|
||||||
|
</report>
|
||||||
|
</failure>
|
||||||
|
</update-cf-stack>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
</workflow>
|
Loading…
x
Reference in New Issue
Block a user