diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 06:48:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 06:48:59 +0000 |
commit | d835b2cae8abc71958b69362162e6a70c3d7ef63 (patch) | |
tree | 81052e3d2ce3e1bcda085f73d925e9d6257dec15 /test/unittests/scripts | |
parent | Initial commit. (diff) | |
download | crmsh-d835b2cae8abc71958b69362162e6a70c3d7ef63.tar.xz crmsh-d835b2cae8abc71958b69362162e6a70c3d7ef63.zip |
Adding upstream version 4.6.0.upstream/4.6.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/unittests/scripts')
-rw-r--r-- | test/unittests/scripts/inc1/main.yml | 22 | ||||
-rw-r--r-- | test/unittests/scripts/inc2/main.yml | 26 | ||||
-rw-r--r-- | test/unittests/scripts/legacy/main.yml | 52 | ||||
-rw-r--r-- | test/unittests/scripts/templates/apache.xml | 36 | ||||
-rw-r--r-- | test/unittests/scripts/templates/virtual-ip.xml | 62 | ||||
-rw-r--r-- | test/unittests/scripts/unified/main.yml | 26 | ||||
-rw-r--r-- | test/unittests/scripts/v2/main.yml | 46 | ||||
-rw-r--r-- | test/unittests/scripts/vip/main.yml | 28 | ||||
-rw-r--r-- | test/unittests/scripts/vipinc/main.yml | 14 | ||||
-rw-r--r-- | test/unittests/scripts/workflows/10-webserver.xml | 50 |
10 files changed, 362 insertions, 0 deletions
diff --git a/test/unittests/scripts/inc1/main.yml b/test/unittests/scripts/inc1/main.yml new file mode 100644 index 0000000..8c290d3 --- /dev/null +++ b/test/unittests/scripts/inc1/main.yml @@ -0,0 +1,22 @@ +version: 2.2 +shortdesc: Include test script 1 +longdesc: Test if includes work ok +parameters: + - name: foo + type: boolean + shortdesc: An optional feature + - name: bar + type: string + shortdesc: A string of characters + value: the name is the game + - name: is-required + type: int + required: true +actions: + - call: ls /tmp + when: foo + shortdesc: ls + - call: "echo '{{foo}}'" + shortdesc: foo + - call: "echo '{{bar}}'" + shortdesc: bar diff --git a/test/unittests/scripts/inc2/main.yml b/test/unittests/scripts/inc2/main.yml new file mode 100644 index 0000000..4910696 --- /dev/null +++ b/test/unittests/scripts/inc2/main.yml @@ -0,0 +1,26 @@ +--- +- version: 2.2 + shortdesc: Includes another script + longdesc: This one includes another script + parameters: + - name: wiz + type: string + - name: foo + type: boolean + shortdesc: A different foo + include: + - script: inc1 + name: included-script + parameters: + - name: is-required + value: 33 + actions: + - call: "echo 'before {{wiz}}'" + shortdesc: before wiz + - include: included-script + - call: "echo 'after {{foo}}'" + shortdesc: after foo + - cib: | + {{included-script:is-required}} + - cib: | + {{wiz}} diff --git a/test/unittests/scripts/legacy/main.yml b/test/unittests/scripts/legacy/main.yml new file mode 100644 index 0000000..ef5d35b --- /dev/null +++ b/test/unittests/scripts/legacy/main.yml @@ -0,0 +1,52 @@ +--- +- name: Initialize a new cluster + description: > + Initializes a new cluster on the nodes provided. Will try to + configure SSH if not already configured, and install missing + packages. + + A more user-friendly interface to this script is provided by the + cluster init command. + parameters: + - name: iface + description: "Use the given interface. Try to auto-detect interface by default." + default: "" + + - name: transport + description: "Corosync transport (mcast or udpu)" + default: "udpu" + + - name: bindnetaddr + description: "Network address to bind to (e.g.: 192.168.1.0)" + default: "" + + - name: mcastaddr + description: "Multicast address (e.g.: 239.x.x.x)" + default: "" + + - name: mcastport + description: "Multicast port" + default: 5405 + + steps: + - name: Configure SSH + apply_local: configure.py ssh + + - name: Check state of nodes + collect: collect.py + + - name: Verify parameters + validate: verify.py + + - name: Install packages + apply: configure.py install + + - name: Generate corosync authkey + apply_local: authkey.py + + - name: Configure cluster nodes + apply: configure.py corosync + + - name: Initialize cluster + apply_local: init.py + diff --git a/test/unittests/scripts/templates/apache.xml b/test/unittests/scripts/templates/apache.xml new file mode 100644 index 0000000..faf3ef0 --- /dev/null +++ b/test/unittests/scripts/templates/apache.xml @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<template name="apache"> + +<shortdesc lang="en">Apache Web Server</shortdesc> +<longdesc lang="en"> +Create a single primitive resource of type apache. +</longdesc> + +<parameters> + +<parameter name="id" required="1"> +<shortdesc lang="en">Resource ID</shortdesc> +<longdesc lang="en"> +Unique ID for this Apache resource in the cluster. +</longdesc> +<content type="string" default="apache"/> +</parameter> + +<parameter name="configfile" required="1"> +<shortdesc lang="en">Apache config file</shortdesc> +<longdesc lang="en"> +Full pathname of the Apache configuration file</longdesc> +<content type="string" default="/etc/apache2/httpd.conf"/> +</parameter> + +</parameters> + +<crm_script> +primitive <insert param="id"/> ocf:heartbeat:apache + params + configfile="<insert param="configfile"/>" + op start timeout="40" op stop timeout="60" + op monitor interval="10" timeout="20" +</crm_script> + +</template> diff --git a/test/unittests/scripts/templates/virtual-ip.xml b/test/unittests/scripts/templates/virtual-ip.xml new file mode 100644 index 0000000..22ab5bf --- /dev/null +++ b/test/unittests/scripts/templates/virtual-ip.xml @@ -0,0 +1,62 @@ +<?xml version="1.0"?> +<template name="virtual-ip"> + +<shortdesc lang="en">Virtual IP Address</shortdesc> +<longdesc lang="en"> +Create a single primitive resource of type IPaddr2. +</longdesc> + +<parameters> + +<parameter name="id" required="1"> +<shortdesc lang="en">Resource ID</shortdesc> +<longdesc lang="en"> +Unique ID for this virtual IP address resource in the cluster. +</longdesc> +<content type="string" default="virtual-ip"/> +</parameter> + +<parameter name="ip" required="1"> +<shortdesc lang="en">IP address</shortdesc> +<longdesc lang="en"> +The IPv4 address to be configured in dotted quad notation, +for example "192.168.1.1". +</longdesc> +<content type="string" default=""/> +</parameter> + +<parameter name="netmask"> +<shortdesc lang="en">Netmask</shortdesc> +<longdesc lang="en"> +The netmask for the interface in CIDR format +(e.g., 24 and not 255.255.255.0). + +If unspecified, it will be determined automatically. +</longdesc> +<content type="string"/> +</parameter> + +<parameter name="lvs_support"> +<shortdesc lang="en">LVS support</shortdesc> +<longdesc lang="en"> +Enable support for LVS Direct Routing configurations. In case a IP +address is stopped, only move it to the loopback device to allow the +local node to continue to service requests, but no longer advertise it +on the network. +</longdesc> +<content type="boolean"/> +</parameter> + +</parameters> + +<crm_script> +primitive <insert param="id"/> ocf:heartbeat:IPaddr2 + params + ip="<insert param="ip"/>" + <if set="netmask">cidr_netmask="<insert param="netmask"/>"</if> + <if set="lvs_support">lvs_support="<insert param="lvs_support"/>"</if> + op start timeout="20" op stop timeout="20" + op monitor interval="10" timeout="20" +</crm_script> + +</template> diff --git a/test/unittests/scripts/unified/main.yml b/test/unittests/scripts/unified/main.yml new file mode 100644 index 0000000..29f5d07 --- /dev/null +++ b/test/unittests/scripts/unified/main.yml @@ -0,0 +1,26 @@ +version: 2.2 +shortdesc: Unified Script +longdesc: > + Test if we can define multiple steps in a single script +category: test +steps: + - parameters: + - name: id + type: resource + required: true + shortdesc: Identifier + - name: vip + shortdesc: Configure the virtual IP + parameters: + - name: id + type: resource + required: true + shortdesc: IP Identifier + - name: ip + type: ip_address + required: true + shortdesc: The IP Address +actions: + - cib: | + primitive {{vip:id}} IPaddr2 ip={{vip:ip}} + group g-{{id}} {{id}} {{vip:id}} diff --git a/test/unittests/scripts/v2/main.yml b/test/unittests/scripts/v2/main.yml new file mode 100644 index 0000000..41822a2 --- /dev/null +++ b/test/unittests/scripts/v2/main.yml @@ -0,0 +1,46 @@ +--- +- version: 2.2 + shortdesc: Apache Webserver + longdesc: > + Configure a resource group containing a virtual IP address and + an instance of the Apache web server. + category: Server + parameters: + - name: id + shortdesc: The ID specified here is for the web server resource group. + - name: install + type: boolean + value: true + shortdesc: Disable if no installation should be performed + include: + - agent: test:apache + parameters: + - name: id + value: "{{id}}-server" + - name: configfile + type: file + ops: | + op monitor interval=20s timeout=20s + - agent: test:virtual-ip + name: virtual-ip + parameters: + - name: id + value: "{{id}}-ip" + - name: ip + type: ip_address + ops: | + op monitor interval=20s timeout=20s + actions: + - install: + - apache2 + when: install + - call: a2enable mod_status + shortdesc: Enable status module + nodes: all + when: install + - cib: | + {{virtual-ip}} + {{apache}} + group {{id}} + {{virtual-ip:id}} + {{apache:id}} diff --git a/test/unittests/scripts/vip/main.yml b/test/unittests/scripts/vip/main.yml new file mode 100644 index 0000000..4f3bde1 --- /dev/null +++ b/test/unittests/scripts/vip/main.yml @@ -0,0 +1,28 @@ +--- +- version: 2.2 + shortdesc: Virtual IP + category: Basic + include: + - agent: test:virtual-ip + name: virtual-ip + parameters: + - name: id + type: resource + required: true + - name: ip + type: ip_address + required: true + - name: cidr_netmask + type: integer + required: false + - name: broadcast + type: ipaddress + required: false + - name: lvs_support + required: false + type: boolean + ops: | + op start timeout="20" op stop timeout="20" + op monitor interval="10" timeout="20" + actions: + - include: virtual-ip diff --git a/test/unittests/scripts/vipinc/main.yml b/test/unittests/scripts/vipinc/main.yml new file mode 100644 index 0000000..6741885 --- /dev/null +++ b/test/unittests/scripts/vipinc/main.yml @@ -0,0 +1,14 @@ +version: 2.2 +category: Test +shortdesc: Test script include +include: + - script: vip + parameters: + - name: id + value: vip1 + - name: ip + value: 192.168.200.100 +actions: + - include: vip + - cib: | + clone c-{{vip:id}} {{vip:id}} diff --git a/test/unittests/scripts/workflows/10-webserver.xml b/test/unittests/scripts/workflows/10-webserver.xml new file mode 100644 index 0000000..f18d55a --- /dev/null +++ b/test/unittests/scripts/workflows/10-webserver.xml @@ -0,0 +1,50 @@ +<?xml version="1.0"?> +<workflow name="10-webserver"> + +<shortdesc lang="en">Web Server</shortdesc> +<longdesc lang="en"> +Configure a resource group containing a virtual IP address and +an instance of the Apache web server. You may wish to use this +in conjunction with a filesystem resource; in this case you will +need to separately configure the filesystem then add colocation +and ordering constraints to have it start before the resource +group you create here. +</longdesc> + +<parameters> +<stepdesc lang="en"> +The ID specified here is for the web server resource group. +</stepdesc> +<parameter name="id" required="1"> +<shortdesc lang="en">Group ID</shortdesc> +<longdesc lang="en"> +Unique ID for the web server resource group in the cluster. +</longdesc> +<content type="string" default="web-server"/> +</parameter> +</parameters> + +<templates> +<template name="virtual-ip" required="1"> +<stepdesc lang="en"> +The IP address configured here will start before the Apache instance. +</stepdesc> +</template> +<template name="apache" required="1"> +<stepdesc lang="en"> +The Apache configuration file specified here must be available via the +same path on all cluster nodes, and Apache must be configured with +mod_status enabled. If in doubt, try running Apache manually via +its init script first, and ensure http://localhost:80/server-status is +accessible. +</stepdesc> +</template> +</templates> + +<crm_script> +group <insert param="id"/> + <insert param="id" from_template="virtual-ip"/> + <insert param="id" from_template="apache"/> +</crm_script> + +</workflow> |