Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: SUSE/SAPHanaSR
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: a1.001.5-TP
Choose a base ref
...
head repository: SUSE/SAPHanaSR
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Jul 7, 2023

  1. Copy the full SHA
    2d13f78 View commit details
  2. Copy the full SHA
    ab8f5c4 View commit details
  3. Copy the full SHA
    fad8fdc View commit details
  4. Copy the full SHA
    1c3ea02 View commit details

Commits on Jul 11, 2023

  1. Copy the full SHA
    aa41b85 View commit details
  2. Copy the full SHA
    7b0b447 View commit details
  3. Copy the full SHA
    24224e0 View commit details

Commits on Jul 13, 2023

  1. angi: tester: cs_ssh-new - try to get cs_ssh more simply import only …

    …python modules included in the product
    fmherschel committed Jul 13, 2023
    Copy the full SHA
    148a344 View commit details

Commits on Jul 14, 2023

  1. Copy the full SHA
    62e6366 View commit details

Commits on Jul 19, 2023

  1. Copy the full SHA
    2378ccf View commit details

Commits on Jul 21, 2023

  1. angi: tester: SAPHanaSR-testCluster-html - main tiles with live data;…

    … cmds improved; local + remote call-outs
    fmherschel committed Jul 21, 2023
    Copy the full SHA
    781ab1b View commit details
  2. Copy the full SHA
    56b6f09 View commit details
  3. Copy the full SHA
    8660cf5 View commit details
  4. remove temp files

    fmherschel committed Jul 21, 2023
    Copy the full SHA
    4e22838 View commit details

Commits on Jul 25, 2023

  1. Copy the full SHA
    5da9c26 View commit details
  2. test - gitignore updated

    fmherschel committed Jul 25, 2023
    Copy the full SHA
    5906b77 View commit details
  3. Copy the full SHA
    90f0d96 View commit details
  4. Copy the full SHA
    123247a View commit details
  5. SAPHanaSR.7 - fixed typo

    fmherschel committed Jul 25, 2023
    Copy the full SHA
    f0dcd53 View commit details
  6. angi: tester: SAPHanaSR-testCluster-html - preparing tasks; use speci…

    …fic html file for output and not static 'testgrid.html any more; this allows multiple SAPHanaSR-testCluster-html to run in parallel for different test scenarious'
    fmherschel committed Jul 25, 2023
    Copy the full SHA
    83834e9 View commit details
  7. angi: tester: SAPHanaSR-testCluster-html - loop by i'ts own - not lon…

    …ger by repeatet call via bash script
    fmherschel committed Jul 25, 2023
    Copy the full SHA
    c51b4c8 View commit details
  8. Copy the full SHA
    95100fa View commit details
  9. Copy the full SHA
    9d0bb23 View commit details
  10. angi: tester: SAPHanaSR-testCluster-html - sleep time in loop now tun…

    …able; fixed times in tile-header-messages
    fmherschel committed Jul 25, 2023
    Copy the full SHA
    770cdcc View commit details

Commits on Jul 26, 2023

  1. Copy the full SHA
    780f1f8 View commit details
  2. angi: tester: SAPHanaSR-testCluster-html - added statistics for 4 tes…

    …t-cases with highest failcounts
    fmherschel committed Jul 26, 2023
    Copy the full SHA
    6f733f2 View commit details
  3. angi: tester: SAPHanaSR-testCluster-html - added last- test ids for m…

    …ailed tests to the statistics
    fmherschel committed Jul 26, 2023
    Copy the full SHA
    c27e31b View commit details
  4. angi: tester: www/testgrid.html.in - added last- test ids for mailed …

    …tests to the statistics area in html template
    fmherschel committed Jul 26, 2023
    Copy the full SHA
    649eb10 View commit details

Commits on Jul 28, 2023

  1. angi: tester: www/testgrid.html.in - statistics - failcounts of max 4…

    … errors at the right of ain table
    fmherschel committed Jul 28, 2023
    Copy the full SHA
    ba1dc3d View commit details
  2. angi: infra: ra/SAPHanaFilesystem, ra/saphana-filesystem-lib - new RA…

    … to track (not control) HANA filesystem(s)
    fmherschel committed Jul 28, 2023
    Copy the full SHA
    10e4f4a View commit details
  3. Copy the full SHA
    e788e73 View commit details
  4. Copy the full SHA
    83b1091 View commit details

Commits on Jul 31, 2023

  1. Copy the full SHA
    be297b1 View commit details

Commits on Aug 1, 2023

  1. angi: infra: SAPHanaFilesystem, saphana-filesystem-lib - using ha_pse…

    …udo_resource instead of bind-mount as resource
    fmherschel committed Aug 1, 2023
    Copy the full SHA
    25cba57 View commit details
  2. Copy the full SHA
    7704bcd View commit details
  3. Copy the full SHA
    5eb6bcd View commit details

Commits on Aug 2, 2023

  1. angi: infra: saphana-filesystem-lib - added parameters DIRECTORY and …

    …HANA_CALL_TIMEOUT; added function shfs_test_directory()
    fmherschel committed Aug 2, 2023
    Copy the full SHA
    4d107fc View commit details
  2. angi: infra: minimized SAP HANA interaction for monitor only; solved …

    …hanging RA in frozen filesystemsx
    fmherschel committed Aug 2, 2023
    Copy the full SHA
    b99e442 View commit details
  3. angi: infra: saphana-filesystem-lib - time critical fs test (hung) on…

    …ly on primary, if secondary is in sync
    fmherschel committed Aug 2, 2023
    Copy the full SHA
    53de0c3 View commit details

Commits on Aug 3, 2023

  1. Copy the full SHA
    b943214 View commit details
  2. angi: tester: test_block_sap_hana_sr, test_unblock_sap_hana_sr - set …

    …shell script execuable bit
    fmherschel committed Aug 3, 2023
    Copy the full SHA
    45eff97 View commit details
  3. angi: tester: json/angi-ScaleUp/block_sr.json - block+unblock sap han…

    …a sr to check NO takeover is triggered
    fmherschel committed Aug 3, 2023
    Copy the full SHA
    e7e38bd View commit details
  4. angi: tester: test_freeze_prim_fs, json/angi-ScaleUp/freeze_prim_fs.j…

    …son - new test case for frozen fs on primary master node
    fmherschel committed Aug 3, 2023
    Copy the full SHA
    97d52dd View commit details
  5. Copy the full SHA
    c0eb2a7 View commit details
  6. angi: test: json/angi-ScaleUp/block_sr_and_freeze_prim_fs.json - test…

    …-case to block+freeze then unfreeze+unblock
    fmherschel committed Aug 3, 2023
    Copy the full SHA
    e185f37 View commit details

Commits on Aug 4, 2023

  1. Copy the full SHA
    2aff8f3 View commit details
  2. Copy the full SHA
    8e6a173 View commit details
  3. fix git merge problem

    fmherschel committed Aug 4, 2023
    Copy the full SHA
    2b4efa3 View commit details
  4. Copy the full SHA
    605e5b3 View commit details
  5. Copy the full SHA
    27c3a69 View commit details
Showing 387 changed files with 26,288 additions and 7,195 deletions.
15 changes: 10 additions & 5 deletions .github/workflows/ChecksAndLinters.yml
Original file line number Diff line number Diff line change
@@ -17,7 +17,12 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"

- name: Install needed packages
run: |
@@ -33,8 +38,8 @@ jobs:
which flake8
echo "Pylint"
echo "Install pylint..."
id -a
sudo apt-get -y install pylint
python -m pip install --upgrade pip
pip install --force-reinstall pylint==2.17.4
which pylint
continue-on-error: true

@@ -60,13 +65,13 @@ jobs:
run: |
echo "Running flake8..."
find . -type f -name '*.py' ! -path './test/*' | xargs flake8 --ignore=E501,E722,E126 && echo "Everything is OK!"
continue-on-error: false
continue-on-error: true

# Runs pylint
- name: Running pylint
shell: bash
run: |
echo "Running pylint..."
find . -type f -name '*.py' ! -path './test/*' | xargs pylint --disable=duplicate-code && echo "Everything is OK!"
continue-on-error: false
continue-on-error: true

4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
*.tgz
*.tar.gz
osc
ibs
test.log
misc
10 changes: 10 additions & 0 deletions .pylintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[BASIC]
module-rgx=([a-zA-Z0-9_-]+)$

[FORMAT]
max-line-length=240

[REFACTORING]
# Maximum number of nested blocks for function / method body
max-nested-blocks=8
max-branches=20
6 changes: 6 additions & 0 deletions 00_files_to_osc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
make copy REL=15 OBSPROJ=./osc/SAPHanaSR-angi
make -f Makefile-tester copy REL=15 OBSPROJ=./osc/SAPHanaSR-tester

make -f Makefile-tester copy REL=15 OBSPROJ='./ibs/home:fmherschel/SAPHanaSR-tester'


4 changes: 3 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -5,15 +5,17 @@

FILE_LIST = LICENSE \
README.md \
alert \
crm_cfg \
icons \
man \
ra \
srHook \
test \
tools \
wizard

#TAR_EXTRAS = -X tools/SAPHanaSR-testDriver
TAR_EXTRAS = --exclude="man/*adoc"

PKG = SAPHanaSR-angi
SPECFILE = ${PKG}.spec
68 changes: 68 additions & 0 deletions Makefile-tester
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Makefile for SAPHanaSR package
# Author: Ilya Manyugin
# License: GPL v 2.0+
# make tarball

FILE_LIST = LICENSE \
README.md \
crm_cfg \
man-tester \
man-tester-client \
test \
tools \

PKG = SAPHanaSR-tester
SPECFILE = ${PKG}.spec
VERSION = $(strip $(patsubst Version:,,$(shell grep '^Version:' $(SPECFILE))))

# OBS local project path: set it as a command line argument or as an ENV variable
OBSPROJ ?= "placeholder"
# OBS target platform
OBSTARG ?= "SLE_12_SP2"

tarball:
@echo -e "\e[33mMaking ${PKG}-${VERSION}.tgz\e[0m"
tar zcf ${PKG}-${VERSION}.tgz ${TAR_EXTRAS} ${FILE_LIST}
@echo -e "\e[32mDone\e[0m"

.ONESHELL:
copy: tarball

@if [ $(OBSPROJ) = "placeholder" ]; then
echo -e "\e[31mProject directory is missing. Set it via 'OBSPROJ=/path/to/project'\e[0m";
exit 1;
fi
@echo -e "\e[33mCopying the SPEC file, CHANGES file and the tarball to ${OBSPROJ}\e[0m"
@cp ${PKG}.changes ${OBSPROJ}
@cp ${PKG}.spec ${OBSPROJ}
@cp ${PKG}-${VERSION}.tgz ${OBSPROJ}
@echo -e "\e[32mDone\e[0m"

.ONESHELL:
build: copy
@echo -e "\e[33mInitiating the build\e[0m"
@cd ${OBSPROJ}
osc -A https://api.suse.de build ${OBSTARG}
@echo -e "\e[32mDone\e[0m"


.ONESHELL:
commit: copy
@echo -e "\e[33mCommiting the code\e[0m"
@cd ${OBSPROJ}
osc -A https://api.suse.de addremove
osc -A https://api.suse.de commit
@echo -e "\e[32mDone\e[0m"

.phony: tarball

.PHONY: checkstyle
checkstyle:
ifneq ($(CHECKSTYLE),0)
find . -type f -exec awk ' /^#!.*bash/{print FILENAME} {nextfile}' {} + | xargs shellcheck -s bash || :
find . -type f -exec awk ' /^#!.*perl/{print FILENAME} {nextfile}' {} + | grep -v .git | xargs perlcritic --gentle || :
find . -name '*.py' | xargs flake8 --ignore=E501 || :
endif

PHONY: test
test: checkstyle
17 changes: 11 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
# <div align="center"> SAPHanaSR-angi - SAP HANA System Replication <br> A New Generation Interface </div>
# <div align="center"> SAPHanaSR-angi - SAP HANA System Replication <br> A Next Generation Interface </div>

The SUSE resource agents to control the SAP HANA database in system replication setups

[![Build Status](https://github.com/SUSE/SAPHanaSR/actions/workflows/ChecksAndLinters.yml/badge.svg?branch=angi)](https://github.com/SUSE/SAPHanaSR/actions/workflows/ChecksAndLinters.yml/badge.svg?branch=angi)
[![Build Status](https://github.com/SUSE/SAPHanaSR/actions/workflows/ChecksAndLinters.yml/badge.svg)](https://github.com/SUSE/SAPHanaSR/actions/workflows/ChecksAndLinters.yml/badge.svg)


## Introduction

SAPHanaSR-angi provides an automatic failover between SAP HANA nodes with configured System Replication in HANA. Currently Scale-Up setups are targeted.
SAPHanaSR-angi is "SAP HANA SR - An Next Generation Interface" for SUSE high availabilty clusters to manage SAP HANA databases with system replication.
It provides an automatic failover between SAP HANA nodes with configured System Replication in HANA. The current version of SAPHanaSR-angi is targeting SAP HANA SR scale-up and scale-out setups.

CIB attributes are not backward compatible between SAPHanaSR-angi and SAPHanaSR. So there is currently no easy migration path.
CIB attributes are not backward compatible between SAPHanaSR-angi and the classic SAPHanaSR. Nevertheless, SAPHanaSR and SAPHanaSR-ScaleOut can be upgraded to SAPHanaSR-angi by following the documented procedure.

This technology is included in the SUSE Linux Enterprise Server for SAP Applications 15 (as technology preview), via the RPM package with the same name.
This technology is included in the SUSE Linux Enterprise Server for SAP Applications 15, via the RPM package with the same name.

System replication will help to replicate the database data from one node to another node in order to compensate for database failures. With this mode of operation, internal SAP HANA high-availability (HA) mechanisms and the Linux cluster have to work together.

@@ -27,8 +28,12 @@ Only if the HANA landscape status indicates that HANA can not recover from the f
An important task of the resource agent is to check the synchronisation status of the two SAP HANA databases. If the synchronisation is not "SOK", then the
cluster avoids to take over to the secondary side, if the primary fails. This is to improve the data consistency.

For more information, refer to the ["Supported High Availability Solutions by SLES for SAP Applications](https://documentation.suse.com/sles-sap/sap-ha-support/html/sap-ha-support/article-sap-ha-support.html) and all the manual pages shipped with the package.
For more information, refer to the ["Supported High Availability Solutions by SLES for SAP Applications"](https://documentation.suse.com/sles-sap/sap-ha-support/html/sap-ha-support/article-sap-ha-support.html) and all the manual pages shipped with the package.

For SAP HANA Databases in System Replication only the listed scenarios at ["Supported High Availability Solutions by SLES for SAP Applications"](https://documentation.suse.com/sles-sap/sap-ha-support/html/sap-ha-support/article-sap-ha-support.html) are supported. For any scenario not matching the scenarios named or referenced in our setup guides please contact SUSE services.

The following SUSE blog series gives a good overview about running SAP HANA in System Replication in the SUSE cluster:
["towardszerodowntime"](https://www.suse.com/c/tag/towardszerodowntime/)

## File structure of installed package

140 changes: 139 additions & 1 deletion SAPHanaSR-angi.changes
Original file line number Diff line number Diff line change
@@ -1,3 +1,141 @@
-------------------------------------------------------------------
Wed Nov 6 09:50:15 UTC 2024 - abriel@suse.com

- Version bump to 1.2.9
* add SAPHanaSR-alert-fencing, an alert agent for cluster fencing
alerts.
* enhance SAPHanaController with the feature ON_FAIL_ACTION=fence
This is part of the 'FAST-STOP' feature of the resource agents.
(jsc#SAPSOL-196)
* Improve handling of timeout return values for the resource
agents
* SAPHanaSR-showAttr - adding new option 'sitelist' and new
output format 'csv' and 'cache'
* new man page:
SAPHanaSR-angi-scenarios.7
SAPHanaSR-alert-fencing.8
* update man pages:
SAPHanaSR-angi.7
SAPHanaSR.7
SAPHanaSR_basic_cluster.7
SAPHanaSR-ScaleOut.7
SAPHanaSR-ScaleOut_basic_cluster.7
SAPHanaController-scale-up.7
SAPHanaController-scale-out.7
SAPHanaTopology.7
SAPHanaFilesystem.7
SAPHanaSR_maintenance_examples.7
SAPHanaSR_upgrade_to_angi.7
SAPHanaSR-upgrade-to-angi-demo.8
ocf_suse_SAPHana.7
ocf_suse_SAPHanaController.7
ocf_suse_SAPHanaTopology.7
ocf_suse_SAPHanaFilesystem.7
susHanaSR.py.7
susHanaSrMultiTarget.py.7
susChkSrv.py.7
susCostOpt.py.7
SAPHanaSR-showAttr.8

- add additional requires for SLE16
/usr/bin/sudo and /usr/bin/logger

-------------------------------------------------------------------
Tue May 7 17:55:56 UTC 2024 - abriel@suse.com

- Version bump to 1.2.7
* package SAPHanaSR-angi and SAPHanaFilesystem RA are now
in state 'supported'
(jsc#PED-6403)
* add feature HANA 'FAST-STOP' and parameter 'ON_FAIL_ACTION'
(jsc#SAPSOL-133)
* new demo script SAPHanaSR-upgrade-to-angi-demo
* added crm config examples
* susHanaSR.py adapt syntax
* Fix the hexdump log for empty node states
* catch monitor calls for non-cloned resources and report them as
unsupported instead of 'command not found'
(bsc#1218333)
* susChkSrv.py - relocate function logTimestamp()
* susHanaSR.py - catch possible I/O error
* security improvements
(bsc#1218696, bsc#1218698 and bsc#1218699)
* remove instance parameter "REMOVE_SAP_SOCKETS", no longer
supported
* add detailed timing log messages for runtime information
* add cache/live value optimization
* new man page:
SAPHanaSR_upgrade_to_angi.7
SAPHanaSR-upgrade-to-angi-demo.8
* update man pages:
SAPHanaSR.7
SAPHanaSR-ScaleOut.7
SAPHanaSR_basic_cluster.7
SAPHanaSR-ScaleOut_basic_cluster.7
SAPHanaSR_maintenance_examples.7
ocf_suse_SAPHana.7
ocf_suse_SAPHanaController.7
ocf_suse_SAPHanaFilesystem.7
susChkSrv.py.7
susHanaSR.py.7
susHanaSrMultiTarget.py.7
SAPHanaSR-manageProvider.8
SAPHanaSR-showAttr.8
SAPHanaSR-replay-archive.8

-------------------------------------------------------------------
Fri Dec 15 16:18:36 UTC 2023 - abriel@suse.com

- Version bump to 1.2.3
* package is still in status 'technical preview'
* SAPHanaFilesystem RA has still POC status
* add parameter 'ON_FAIL_ACTION' to SAPHanaFilesystem RA (POC)
* improve the usage of SAP virtual hostnames
* if the susHanaSR.py hook has successfully reported a SR event
to the cluster a still existing fall-back state file will be
removed to prevent an override of an already reported
SR state.
(bsc#1215693)
* improve supportability by providing the current process ID of
the RA, which is logged in the RA outputs, to HANA tracefiles
too.
This allows a mapping of the SAP related command invocations
from the RA and the HANA executions which might have a delay
in between.
(bsc#1214613)
* avoid explicid and implicid usage of /tmp filesystem to keep
the SAPHanaSR resource agents working even in situations with
/tmp filesystem full.
(bsc#1210728)
* SAPHanaController: change default stop timeout from 3600 to 600
* SAPHanaController: change default promote timeout from 3600 to
900
* try to make set_ and get_hana_attribute function more reliable
by monitoring the result of the crm_attribute calls
* fix typo in example srHook/global.ini_susHanaSR
* fix missing trace section in example srHook/global.ini_susChkSrv
* update man pages:
SAPHanaSR-angi.7
SAPHanaSR.7
SAPHanaSR-ScaleOut.7
SAPHanaSR_basic_cluster.7
SAPHanaSR-ScaleOut_basic_cluster.7
SAPHanaSR_maintenance_examples.7
ocf_suse_SAPHana.7
ocf_suse_SAPHanaController.7
ocf_suse_SAPHanaTopology.7
ocf_suse_SAPHanaFilesystem.7
susChkSrv.py.7
susHanaSR.py.7
susTkOver.py.7
SAPHanaSR-showAttr.8

-------------------------------------------------------------------
Tue Aug 8 13:33:00 UTC 2023 - fabian.herschel@suse.com

- Version bump to 1.2.0
* SAPHanaFilesystem RA added (poc status)

-------------------------------------------------------------------
Wed Jul 5 15:36:16 UTC 2023 - abriel@suse.com

@@ -23,7 +161,7 @@ Mon Apr 17 07:44:23 UTC 2023 - abriel@suse.com
- New package name and new version 1.001.4
* New package SAPHanaSR-angi
SAP HANA System Replication - A New Generation Interface
(jsc#PED-3876)
(jsc#PED-6402)
* support SAPHana ScaleUp and ScaleOut environments with one
set of resource agents
- conflicting with the 'old' packages SAPHanaSR and
46 changes: 19 additions & 27 deletions SAPHanaSR-angi.spec
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#
# spec file for package SAPHanaSR
# spec file for package SAPHanaSR-angi
#
# Copyright (c) 2013-2014 SUSE Linux Products GmbH, Nuernberg, Germany.
# Copyright (c) 2014-2016 SUSE Linux GmbH, Nuernberg, Germany.
# Copyright (c) 2017-2023 SUSE LLC.
# Copyright (c) 2017-2024 SUSE LLC.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -21,7 +21,7 @@ License: GPL-2.0
Group: Productivity/Clustering/HA
AutoReqProv: on
Summary: Resource agents to control the HANA database in system replication setup
Version: 1.001.5
Version: 1.2.9
Release: 0
Url: https://www.suse.com/c/fail-safe-operation-of-sap-hana-suse-extends-its-high-availability-solution/

@@ -36,27 +36,25 @@ Requires: pacemaker > 2.1.2
Requires: resource-agents
Requires: perl

# Require crmsh-scripts on SLES 12 SP1+ for the new HAWK wizards
%if 0%{?sle_version} >= 120100
# Require crmsh-scripts for the HAWK2 wizards
Requires: crmsh >= 4.4.0
Requires: crmsh-scripts >= 4.4.0
Requires: python3
Requires: /usr/bin/xmllint
%if 0%{?suse_version} >= 1600
Requires: /usr/bin/sudo
Requires: /usr/bin/logger
%endif
BuildRequires: resource-agents >= 4.1.0
BuildRequires: crmsh
BuildRequires: crmsh-scripts
%endif

%description
SAPHanaSR-angi is "SAP HANA SR - An Next Generation Interface" for SUSE high availabilty clusters to manage SAP HANA databases with system replication.

The current version of SAPHanaSR-angi is targeting SAP HANA SR scale-up setups.

CIB attributes are not backward compatible between SAPHanaSR-angi and SAPHanaSR. So there is currently no easy migration path.

SAPHanaSR-angi is shipped as technology preview.
The current version of SAPHanaSR-angi is targeting SAP HANA SR scale-up and scale-out setups.

The resource agents SAPHanaController and SAPHanaTopology are responsible for controlling a SAP HANA Database which is running in system replication (SR) configuration.
CIB attributes are not backward compatible between SAPHanaSR-angi and SAPHanaSR. Nevertheless, SAPHanaSR and SAPHanaSR-ScaleOut can be upgraded to SAPHanaSR-angi by following the documented procedure.

For SAP HANA Databases in System Replication only the listed scenarios at https://documentation.suse.com/sles-sap/sap-ha-support/html/sap-ha-support/article-sap-ha-support.html are supported. For any scenario not matching the scenarios named or referenced in our setup guides please contact SUSE services.

@@ -71,7 +69,6 @@ Authors:

%prep
tar xf %{S:0}
%define crmscr_path /usr/share/crmsh/scripts/

%build
gzip man/*
@@ -80,8 +77,8 @@ gzip man/*
mkdir -p %{buildroot}/usr/bin
mkdir -p %{buildroot}%{_docdir}/%{name}
mkdir -p %{buildroot}/usr/share/%{name}/icons
mkdir -p %{buildroot}/usr/share/%{name}/tests
mkdir -p %{buildroot}/usr/share/%{name}/samples
mkdir -p %{buildroot}/usr/share/%{name}/samples/crm_cfg/angi-ScaleUp
mkdir -p %{buildroot}/usr/lib/ocf/resource.d/suse
mkdir -p %{buildroot}/usr/lib/%{name}
mkdir -p %{buildroot}%{_mandir}/man7
@@ -99,6 +96,12 @@ install -m 0644 srHook/susCostOpt.py %{buildroot}/usr/share/%{name}/
install -m 0644 srHook/susChkSrv.py %{buildroot}/usr/share/%{name}/
install -m 0444 srHook/global.ini_* %{buildroot}/usr/share/%{name}/samples

# alert manager
install -m 0755 alert/SAPHanaSR-alert-fencing %{buildroot}/usr/bin

# crm config templates
install -m 0644 crm_cfg/angi-ScaleUp/[0-9]*_* %{buildroot}/usr/share/%{name}/samples/crm_cfg/angi-ScaleUp

# icons for SAPHanaSR-monitor
install -m 0444 icons/* %{buildroot}/usr/share/%{name}/icons

@@ -115,14 +118,10 @@ install -m 0555 tools/SAPHanaSR-replay-archive-legacy %{buildroot}/usr/bin
install -m 0555 tools/SAPHanaSR-filter-legacy %{buildroot}/usr/bin
install -m 0555 tools/SAPHanaSR-hookHelper %{buildroot}/usr/bin
install -m 0555 tools/SAPHanaSR-manageProvider %{buildroot}/usr/bin
install -m 0555 tools/SAPHanaSR-upgrade-to-angi-demo %{buildroot}/usr/share/%{name}/samples
install -m 0444 tools/SAPHanaSRTools.pm %{buildroot}/usr/lib/%{name}
install -m 0444 tools/saphana_sr_tools.py %{buildroot}/usr/lib/%{name}

# wizard files for hawk2
install -D -m 0644 wizard/hawk2/saphanasr.yaml %{buildroot}%{crmscr_path}/saphanasr/main.yml
install -D -m 0644 wizard/hawk2/saphanasr_su_po.yaml %{buildroot}%{crmscr_path}/saphanasr-su-po/main.yml
install -D -m 0644 wizard/hawk2/saphanasr_su_co.yaml %{buildroot}%{crmscr_path}/saphanasr-su-co/main.yml

%files
%defattr(-,root,root)
%dir /usr/lib/ocf
@@ -142,14 +141,7 @@ install -D -m 0644 wizard/hawk2/saphanasr_su_co.yaml %{buildroot}%{crmscr_path}/
/usr/bin/SAPHanaSR-filter-legacy
/usr/bin/SAPHanaSR-hookHelper
/usr/bin/SAPHanaSR-manageProvider

## HAWK2 wizard
%dir %{crmscr_path}/saphanasr/
%dir %{crmscr_path}/saphanasr-su-po/
%dir %{crmscr_path}/saphanasr-su-co/
%{crmscr_path}/saphanasr/main.yml
%{crmscr_path}/saphanasr-su-po/main.yml
%{crmscr_path}/saphanasr-su-co/main.yml
/usr/bin/SAPHanaSR-alert-fencing

%license LICENSE
%dir %{_docdir}/%{name}
9 changes: 9 additions & 0 deletions SAPHanaSR-tester.changes
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-------------------------------------------------------------------
Fri Oct 18 09:36:32 UTC 2024 - abriel@suse.com

- update to version 1.2.14

-------------------------------------------------------------------
Mon Nov 13 11:43:23 UTC 2023 - Fabian Herschel <fabian.herschel@suse.com>

- version 1.2.4 as base for test package
126 changes: 126 additions & 0 deletions SAPHanaSR-tester.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
#
# spec file for package SAPHanaSR-tester
#
# Author: Fabian Herschel
# Copyright (c) 2023-2024 SUSE LLC.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/

Name: SAPHanaSR-tester
License: GPL-2.0
Group: Productivity/Clustering/HA
AutoReqProv: on
Summary: Test suite for SAPHanaSR clusters
Version: 1.3.5
Release: 0
Url: https://www.suse.com/c/fail-safe-operation-of-sap-hana-suse-extends-its-high-availability-solution/

BuildArch: noarch

Source0: %{name}-%{version}.tgz

BuildRoot: %{_tmppath}/%{name}-%{version}-build

Requires: python3

%package client
Group: Productivity/Clustering/HA
Summary: Test suite for SAPHanaSR clusters - SAPHanaSR-tester-client is to be installed on all SAPHanaSR classic nodes
Conflicts: SAPHanaSR-angi

%description
SAPHanaSR-tester is a suite for semi-automated tests of SAPHanaSR clusters. First focussed test-scenarios are angi-ScaleUp and angi-ScaleOut (e.g. for ERP systems).

The test cases are described in JSON files. Each test is separated into one ore multiple steps. For each step there is an expectation about the SAPHanaSR attributes, which needs to match.
Additionally each step defines the 'next' step and an optional action to be triggered if the step status has been reached (all expectations match).

The following SUSE blog series gives a good overview about running SAP HANA in System Replication in the SUSE cluster:
https://www.suse.com/c/tag/towardszerodowntime/

Authors:
--------
Fabian Herschel

%description client
SAPHanaSR-tester-client is to be installed on all SAPHanaSR classic nodes to allow SAPHanaSR-tester to check the cluster attributes with the same method.

%prep
tar xf %{S:0}
#%define crmscr_path /usr/share/crmsh/scripts/

%build
gzip man-tester/*
gzip man-tester-client/*

%install
mkdir -p %{buildroot}/usr/bin
#mkdir -p %{buildroot}%{_docdir}/%{name}
mkdir -p %{buildroot}/usr/share/%{name}
mkdir -p %{buildroot}/usr/share/%{name}/samples/crm_cfg/angi-ScaleUp
mkdir -p %{buildroot}/usr/lib/%{name}
mkdir -p %{buildroot}%{_mandir}/man5
mkdir -p %{buildroot}%{_mandir}/man7
mkdir -p %{buildroot}%{_mandir}/man8

# test engine itself
mkdir -p %{buildroot}/usr/lib/%{name}
install -m 0755 test/tester/SAPHanaSR-* %{buildroot}/usr/bin
install -m 0644 test/tester/saphana_sr_test.py %{buildroot}/usr/lib/%{name}

# test help programs, test loops and test calls
install -m 0755 test/bin/cs_* %{buildroot}/usr/bin
install -m 0755 test/bin/callTest* %{buildroot}/usr/bin
install -m 0755 test/bin/loopTests* %{buildroot}/usr/bin
install -m 0755 test/bin/sct_* %{buildroot}/usr/bin

# client files
install -m 0755 tools/SAPHanaSR-showAttr %{buildroot}/usr/bin
mkdir -p %{buildroot}/usr/lib/SAPHanaSR-angi
install -m 0755 tools/saphana_sr_tools.py %{buildroot}/usr/lib/SAPHanaSR-angi

# test definitions
pwd
ls test/json
cp -a test/json %{buildroot}/usr/share/%{name}
cp -a test/www %{buildroot}/usr/share/%{name}
install -m 0644 crm_cfg/angi-ScaleUp/[0-9]*_* %{buildroot}/usr/share/%{name}/samples/crm_cfg/angi-ScaleUp

# manual pages
install -m 0444 man-tester/*.5.gz %{buildroot}%{_mandir}/man5
install -m 0444 man-tester/*.7.gz %{buildroot}%{_mandir}/man7
install -m 0444 man-tester/*.8.gz %{buildroot}%{_mandir}/man8

# man pages for client package
install -m 0444 man-tester-client/*.7.gz %{buildroot}%{_mandir}/man7

%files
%defattr(-,root,root)
/usr/share/%{name}
%dir /usr/lib/%{name}
/usr/lib/%{name}/saphana_sr_*.py
/usr/bin/SAPHanaSR-testCluster
/usr/bin/SAPHanaSR-checkJson
/usr/bin/SAPHanaSR-testSelect
/usr/bin/sct_*
/usr/bin/callTest*
/usr/bin/loopTests*
/usr/bin/cs_ssh
/usr/bin/SAPHanaSR-testCluster-html
%license LICENSE
%doc README.md
%doc %{_mandir}/man*/*

%files client
/usr/bin/SAPHanaSR-showAttr
/usr/lib/SAPHanaSR-angi

%changelog
101 changes: 101 additions & 0 deletions alert/SAPHanaSR-alert-fencing
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
#!/bin/bash
#
# SAPHanaSR-alert-fencing
# Author: Lars Pinne Fabian Herschel, June 2024
# Support: linux@sap.com
# License: GNU General Public License (GPL)
# Copyright: (c) 2024 SUSE LLC
# Version: 2024-08-09-14:35
#
# crm configure alert nodes-1 "/usr/bin/SAPHanaSR-alert-fencing" select nodes
# crm configure alert fencing-1 "/usr/bin/SAPHanaSR-alert-fencing" select fencing attributes alert_uptime_threshold=300
#

logger_tag="SAPHanaSR-alert-fencing"
logger="/usr/bin/logger"

# ON_FAIL_ACTION="${OCF_RESKEY_ON_FAIL_ACTION:-proceed}"
CRM_alert_recipient="${CRM_alert_recipient:-/dev/null}"
crm_alert_kind="${CRM_alert_kind:-manual call}"
crm_alert_node="${CRM_alert_node:-$HOSTNAME}"
crm_alert_desc="${CRM_alert_desc:-no description provided}"

cache_file="/run/crm/SAPHanaSR_site_cache"

alert_uptime_threshold="${alert_uptime_threshold:-300}"

IFS=. read -r sys_uptime REST </proc/uptime
$logger -t "$logger_tag" "AH: begin event '$crm_alert_kind' (uptime=$sys_uptime, alert_uptime_threshold=$alert_uptime_threshold)"


function process_fencing()
{
# SAPHanaSR_site_cache has format (each line) host:site_name
# figure out fenced site

if [[ "$sys_uptime" -ge "$alert_uptime_threshold" ]]; then
if [[ -e "$cache_file" ]]; then
fenced_site_name=$(awk -F: '$1 == host { print $2 }' host="${crm_alert_node}" "$cache_file")
local_site_name=$(awk -F: '$1 == host { print $2 }' host="${HOSTNAME}" "$cache_file")
$logger -t "$logger_tag" "INFO: cache_file=$cache_file, crm_alert_node=$crm_alert_node"
$logger -t "$logger_tag" "INFO: fenced_site_name=$fenced_site_name, local_site_name=$local_site_name"
if [[ "$local_site_name" != "" && "$fenced_site_name" == "$local_site_name" ]]; then
$logger -t "$logger_tag" "DEC: FENCE ($fenced_site_name == $local_site_name)"
sleep 10
sudo /usr/sbin/crm --force node fence "${HOSTNAME}"; rc="$?"
if [[ "$rc" != "0" ]]; then
$logger -t "$logger_tag" "ACT: sudo /usr/sbin/crm --force node fence ${HOSTNAME}; rc=$rc"
fi
else
$logger -t "$logger_tag" "DEC: NO FENCE ($fenced_site_name != $local_site_name)"
fi
else
$logger -t "$logger_tag" "DEC: NO FENCE (no cache)"
fi
else
$logger -t "$logger_tag" "DEC: NO FENCE (uptime < alert_uptime_threshold)"
fi
}

function check_fencing()
{
# SAPHanaSR_site_cache has format (each line) host:site_name
# figure out fenced site

if [[ -e "$cache_file" ]]; then
fenced_site_name=$(awk -F: '$1 == host { print $2 }' host="${crm_alert_node}" "$cache_file")
local_site_name=$(awk -F: '$1 == host { print $2 }' host="${HOSTNAME}" "$cache_file")
$logger -t "$logger_tag" "INFO: cache_file=$cache_file"
$logger -t "$logger_tag" "INFO: fenced_site_name=$fenced_site_name, local_site_name=$local_site_name"
if [[ "$local_site_name" != "" && "$fenced_site_name" == "$local_site_name" ]]; then
$logger -t "$logger_tag" "DEC: FENCE ($fenced_site_name == $local_site_name)"
else
$logger -t "$logger_tag" "DEC: NO FENCE ($fenced_site_name != $local_site_name)"
fi
else
$logger -t "$logger_tag" "DEC: NO FENCE (no cache)"
fi
}

case "$crm_alert_kind" in
node|nodes)
msg="Node '${crm_alert_node}' is now '${crm_alert_desc}'"
$logger -t "$logger_tag" "INFO: $msg"
;;
fencing)
msg="Fencing for '${crm_alert_node}': ${crm_alert_desc}"
$logger -t "$logger_tag" "INFO: $msg"
process_fencing
;;
check)
msg="Checking for '${crm_alert_node}': ${crm_alert_desc}"
$logger -t "$logger_tag" "INFO: $msg"
check_fencing
;;
*)
msg="Unhandled '$crm_alert_kind' alert (${crm_alert_desc})"
$logger -t "$logger_tag" "INFO: $msg"
;;
esac
$logger -t "$logger_tag" "AH: end event '$crm_alert_kind'"
#
15 changes: 15 additions & 0 deletions crm_cfg/angi-ScaleUp/010_basics_crm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#
# base config (1)
#
property cib-bootstrap-options: \
cluster-name=SAP@@SID@@_@@INO@@ \
stonith-enabled=true \
stonith-action=reboot \
stonith-timeout=150 \
priority-fencing-delay=30
rsc_defaults rsc-options: \
migration-threshold=5000 \
resource-stickiness=1000
op_defaults op-options: \
timeout=600 \
record-pending=true
5 changes: 5 additions & 0 deletions crm_cfg/angi-ScaleUp/020_resource_sbd_crm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#
# primitive sbd (2)
#
primitive rsc_stonith_sbd stonith:external/sbd \
params pcmk_delay_base=15
14 changes: 14 additions & 0 deletions crm_cfg/angi-ScaleUp/030_clone_top_crm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#
# clone TOP (3)
#
primitive rsc_SAPHanaTop_@@SID@@_HDB@@INO@@ ocf:suse:SAPHanaTopology \
op monitor interval=50 timeout=600 \
op start interval=0 timeout=3600 \
op stop interval=0 timeout=300 \
params SID=@@SID@@ InstanceNumber=@@INO@@
#
clone cln_SAPHanaTop_@@SID@@_HDB@@INO@@ rsc_SAPHanaTop_@@SID@@_HDB@@INO@@ \
meta clone-node-max=1 interleave=true
#
####################################################################
#
14 changes: 14 additions & 0 deletions crm_cfg/angi-ScaleUp/040_clone_fil_crm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#
# clone FIL (4)
#
primitive rsc_SAPHanaFil_@@SID@@_HDB@@INO@@ ocf:suse:SAPHanaFilesystem \
op monitor interval=60 timeout=60 \
op start interval=0 timeout=10 \
op stop interval=0 timeout=20 on-fail=fence \
params SID=@@SID@@ InstanceNumber=@@INO@@
#
clone cln_SAPHanaFil_@@SID@@_HDB@@INO@@ rsc_SAPHanaFil_@@SID@@_HDB@@INO@@ \
meta clone-node-max=1 interleave=true
#
####################################################################
#
17 changes: 17 additions & 0 deletions crm_cfg/angi-ScaleUp/050_clone_con_crm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#
# promotable clone (5)
#
primitive rsc_SAPHanaCon_@@SID@@_HDB@@INO@@ ocf:suse:SAPHanaController \
op start interval=0 timeout=3600 \
op stop interval=0 timeout=3600 \
op promote interval=0 timeout=900 \
op monitor interval=60 role=Promoted timeout=700 \
op monitor interval=61 role=Unpromoted timeout=700 \
params SID=@@SID@@ InstanceNumber=@@INO@@ PREFER_SITE_TAKEOVER=yes DUPLICATE_PRIMARY_TIMEOUT=600 AUTOMATED_REGISTER=yes \
meta priority=100
#
clone mst_SAPHanaCon_@@SID@@_HDB@@INO@@ rsc_SAPHanaCon_@@SID@@_HDB@@INO@@ \
meta clone-max=2 clone-node-max=1 interleave=true promotable=true maintenance=true
#
####################################################################
#
17 changes: 17 additions & 0 deletions crm_cfg/angi-ScaleUp/050_clone_con_fence_crm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#
# promotable clone (5)
#
primitive rsc_SAPHanaCon_@@SID@@_HDB@@INO@@ ocf:suse:SAPHanaController \
op start interval=0 timeout=3600 \
op stop interval=0 timeout=3600 \
op promote interval=0 timeout=900 \
op monitor interval=60 role=Promoted timeout=700 \
op monitor interval=61 role=Unpromoted timeout=700 \
params SID=@@SID@@ InstanceNumber=@@INO@@ PREFER_SITE_TAKEOVER=yes DUPLICATE_PRIMARY_TIMEOUT=600 AUTOMATED_REGISTER=yes ON_FAIL_ACTION=fence\
meta priority=100
#
clone mst_SAPHanaCon_@@SID@@_HDB@@INO@@ rsc_SAPHanaCon_@@SID@@_HDB@@INO@@ \
meta clone-max=2 clone-node-max=1 interleave=true promotable=true maintenance=true
#
####################################################################
#
7 changes: 7 additions & 0 deletions crm_cfg/angi-ScaleUp/060_resource_ip_crm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#
# primitive IP (6)
#
primitive rsc_ip_@@SID@@ IPaddr2 \
params ip=@@IP@@ \
op monitor interval=60 timeout=20 \
op_params on_fail=restart
6 changes: 6 additions & 0 deletions crm_cfg/angi-ScaleUp/070_constraints_crm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#
# constraints (7)
#
colocation col_ip_prim_SAPHana_@@SID@@_HDB@@INO@@ 2000: rsc_ip_@@SID@@:Started mst_SAPHanaCon_@@SID@@_HDB@@INO@@:Promoted
#
order ord_SAPHana_@@SID@@_HDB@@INO@@ Optional: cln_SAPHanaTop_@@SID@@_HDB@@INO@@ mst_SAPHanaCon_@@SID@@_HDB@@INO@@
42 changes: 42 additions & 0 deletions crm_cfg/angi-ScaleUp/alternative-names.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#
# sle15 hana ScaleUp perfopt:
#
crm-bs.txt
crm-sbd.txt
crm-saphanatop.txt
crm-saphana.txt
crm-vip.txt
crm-cs.txt

#
# sle15 hana ScaleUp costopt:
#
crm-bs.txt
crm-saphanatop.txt
crm-saphana.txt
crm-vip.txt
crm-cs.txt
crm-si.txt
crm-con.txt

#
# sle15 hana ScaleOut
#
crm-bs.txt
crm-fencing.txt
crm-saphanatop.txt
crm-saphanacon.txt
crm-vip.txt
crm-cs.txt

#
# sle15 hana ScaleOut Multi-Target
#
crm-bs.txt
crm-fencing.txt
crm-saphanatop.txt
crm-saphanacon.txt
crm-vip.txt
crm-cs.txt


68 changes: 68 additions & 0 deletions man-tester-client/SAPHanaSR-tester-client.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
.\" Version: 1.001
.\"
.TH SAPHanaSR-tester-client 7 "27 Jan 2024" "" "SAPHanaSR"
.\"
.SH NAME
SAPHanaSR-tester-client \- Client for functional testing SAPHanaSR clusters.
.PP
.\"
.DESCRIPTION
.\"
SAPHanaSR-tester-client is a package that allows to use SAPHanaSR-tester for
testing classical SAPHanaSR and SAPHanaSR-ScaleOut HA clusters.

.B SAPHanaSR-tester is shipped as technology preview.

The package provides a specific version of SAPHanaSR-shwoAttr, compatible to
SAPHanaSR-angi and SAPHanaSR-tester.
.PP
.\"
.SH EXAMPLES
.\"
\fB*\fR Checking the SAPHanaSR-showAttr.
.PP
The specific SAPHanaSR-showAttr is called to show the output format needed for
testing. See manual page SAPHanaSR-showAttr(8) from package SAPHanaSR-angi for
details.
.PP
.RS 2
# /usr/bin/SAPHanaSR-showAttr --format=tester
.RE
.PP
.\"
.SH FILES
.\"
.TP
/usr/bin/SAPHanaSR-showAttr
specific SAPHanaSR-showAttr, compatible to SAPHanaSR-angi and SAPHanaSR-tester
.PP
.\"
.SH REQUIREMENTS
See SAPHanaSR-tester(7), SAPHanaSR-tests-classic-ScaleUp(7) and SAPHanaSR(7).
.\"
.SH BUGS
The SAPHanaSR-tester-client is under development. Syntax and formats are
subject to change.
.br
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-tests-classic-ScaleUp\fP(7) ,
\fBSAPHanaSR-showAttr\fP(8), \fBSAPHanaSR\fP(7)
.PP
.\"
.SH AUTHORS
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
96 changes: 96 additions & 0 deletions man-tester/SAPHanaSR-checkJson.8
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-checkJson 8 "26 Nov 2024" "" "SAPHanaSR-angi"
.\" TODO SAPHanaSR-testJson ?
.\"
.SH NAME
SAPHanaSR-checkJson \- Check syntax of SAPHanaSR-tester JSON file.
.PP
.\"
.SH SYNOPSIS
.PP
\fBSAPHanaSR-checkJson\fR [ --help | --version ]
.br
\fBSAPHanaSR-checkJson\fR --file \fIFILE\fR [ --quiet ]
.PP
.\"
.SH DESCRIPTION
.PP
SAPHanaSR-checkJson is a tool for checking SAPHanaSR-tester JSON files for
formally correct syntax.
.PP
.\"
.SH OPTIONS
.TP
--help
print help message and exit.
.TP
--file \fIFILE\fP
specify the JSON file to check.
.TP
--quiet
do not output JSON data on success.
.TP
--version
print version and exit.
.PP
.\"
.SH RETURN CODES
.PP
.B 0
Successful program execution.
.br
.B >0
Usage, syntax or execution errors.
.PP
.\"
.PP
.\"
.SH EXAMPLES
.PP
\fB*\fP Check one of the predefined files.
.PP
.RS 2
# SAPHanaSR-checkJson --file /usr/share/SAPHanaSR-tester/json/angi-ScaleUp/maintenance_cluster_hana_running.json
.RE
.PP
.\"
.SH FILES
.TP
/usr/bin/SAPHanaSR-checkJson
the program itself.
.PP
.\"
.SH REQUIREMENTS
.PP
See REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR-tests-syntax(5).
.PP
.\"
.SH BUGS
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-tests-syntax\fP(5) ,
\fBSAPHanaSR-tests-classic-ScaleUp\fP(7) ,
\fBSAPHanaSR-tests-angi-ScaleUp\fP(7) , \fBSAPHanaSR-tests-angi-ScaleOut\fP(7)
.PP
.\"
.SH AUTHORS
.PP
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.PP
(c) 2023-2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
190 changes: 190 additions & 0 deletions man-tester/SAPHanaSR-testCluster.8
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-testCluster 8 "24 Nov 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-testCluster \- Run functional tests for SAPHanaSR clusters.
.PP
.\"
.SH SYNOPSIS
.PP
\fBSAPHanaSR-testCluster\fR [ --help | --version ]
.br
\fBSAPHanaSR-testCluster\fR \fIOPTION\fR [ \fIOPTION\fR ... ]
.PP
.\"
.SH DESCRIPTION
.PP
SAPHanaSR-testCluster is a tool to run one of the predefined test cases on a
given test cluster. For that purpose it is called with options specifying the
test case and the properties of the cluster to be tested.
SAPHanaSR-testCluster can be seen as low-level command to be used in scripts
and test automation frameworks.
.PP
.\"
.SH OPTIONS
.TP
--help
print help message and exit.
.TP
--defaultsFile \fIFILE\fP
path to defaults file.
.TP
--dumpFailures
print failed checks per loop.
.TP
--debug
print and log debug messages.
.TP
--logFile \fIFILE\fP
path to log file.
.TP
--password \fIPASSWORD\fP
remote root user´s password (for debugging only).
.TP
--printTestProperties
print test properties and exit.
.TP
--properties \fIFILE\fP
path to poperties file.
.TP
--remoteNode \fINODE\fP [ \fINODE\fP ... ]
cluster nodes to use for ssh connection, must not be last option in cmdline.
.TP
--repeat \fIINTEGER\fP
how often to repeat the test.
.TP
--simulate
only simulate, dont call actions.
.TP
--testFile \fIFILE\fP
path to testcase description file.
.TP
--version
print version and exit.
.PP
.\"
.SH RETURN CODES
.PP
.B 0
Successful program execution.
.br
.B >0
Usage, syntax or execution errors.
.PP
.\"
.SH EXAMPLES
.PP
\fB*\fR Running a very basic functional test.
.PP
The functional test "nop" is performed on the Linux cluster defined in
properties_q42.json, nodes are node1 and node2.
A dedicated working directory and logfile for this test is used.
See also manual page SAPHanaSR-tester(7), SAPHanaSR-tests-syntax(5),
SAPHanaSR-tests-angi-ScaleUp(7) and SAPHanaSR-tests-description(7).
.PP
.RS 2
# mkdir ~/test_nop; cd ~/test_nop
.br
# export TROOT=/usr/share/SAPHanaSR-tester/json/angi-ScaleUp/
.br
# SAPHanaSR-testCluster \\
.br
--testFile $TROOT/nop.json \\
.br
--remoteNodes node1 node2 \\
.br
--defaultsFile $TROOT/defaults.json \\
.br
--properties ~/properties_q42.json \\
.br
--logFile test.log
.RE
.PP
\fB*\fR Showing failed tests from logfile.
.PP
Logfile is test.log, shown are time, test ID, test case.
.PP
.RS 2
# grep "TEST:.*FAILED" test.log | awk '{print $2,$3,$5}'
.RE
.PP
\fB*\fR Showing details for a single test.
.PP
Test ID is 8585, logfile is test.log, debug output is omitted.
.PP
.RS 2
# grep "\\[8585\\]" test.log | grep -v "DEBUG:"
.RE
.PP
.\"
.SH FILES
.TP
/usr/bin/SAPHanaSR-testCluster
the program itself.
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleUp/
functional tests for SAPHanaSR-angi scale-up scenarios.
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleOut/
functional tests for SAPHanaSR-angi scale-out ERP scenarios, without HANA host auto-failover.
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleOut-BW/
functional tests for SAPHanaSR-angi scale-out BW scenarios, with HANA host auto-failover. Not yet implemented.
.TP
/usr/share/SAPHanaSR-tester/json/classic-ScaleUp/
functional tests for SAPHanaSR classic scale-up scenarios.
.TP
/usr/share/SAPHanaSR-tester/json/classic-ScaleOut/
not yet implemented.
.TP
/usr/share/SAPHanaSR-tester/json/classic-ScaleOut-BW/
not yet implemented.
.TP
$PWD/.test_properties
auto-generated properties file for called shell scripts. No need to touch.
.TP
/usr/bin/SAPHanaSR-showAttr
script SAPHanaSR-showAttr from SAPHanaSR-angi.
.TP
/usr/bin/sct_test_*
shell scripts for un-easy tasks on the cluster nodes.
.PP
.\"
.SH REQUIREMENTS
.PP
See the REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR-angi(7).
Of course, HANA database and Linux cluster have certain requirements.
Please refer to the product documentation.
.PP
.\"
.SH BUGS
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-tests-syntax\fP(5) ,
\fBSAPHanaSR-tests-description\fP(7) , \fBSAPHanaSR-tests-classic-ScaleUp\fP(7) ,
\fBSAPHanaSR-tests-angi-ScaleUp\fP(7) , \fBSAPHanaSR-tests-angi-ScaleOut\fP(7) ,
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-showAttr\fP(8) ,
\fBcrm_mon\fP(8) , \fBcrm\fP(8) , \fBcs_clusterstate\fP(8) , \fBcs_show_cluster_actions\fP(8) ,
.PP
.\"
.SH AUTHORS
.PP
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.PP
(c) 2023-2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
291 changes: 291 additions & 0 deletions man-tester/SAPHanaSR-tester.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,291 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-tester 7 "20 Nov 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-tester \- Functional testing for SAPHanaSR clusters.
.PP
.\"
.SH DESCRIPTION
.PP
SAPHanaSR-tester is a suite of tools for automating functional tests of SAP HANA
system replication HA clusters.
.PP
.B SAPHanaSR-tester is shipped as technology preview.
.PP
The package is focussing on functional tests for the SAPHanaSR resource agents,
alert agents, HA/DR provider hook scripts, the related configuration of the Linux
cluster and the SAP HANA database pair.
In addition to this functional tests, specific tests for the underlying
infrastructure, Linux OS and cluster as well as the database need to be done.
See manual page SAPHanaSR-tests-basic-cluster(7).
.PP
SAPHanaSR-tester provides predefined functional tests for scale-up and scale-out
scenarios. This tests could be run out-of-the-box. The predefined tests also
can be used for creating new test definitions. So parameters for timing and
expected attributes can be customised.
.PP
The test cases are defined in dedicated files. Each test is separated into
steps. For each step there is an expectation for SAPHanaSR attributes, which
need to match. Additionally each step defines the 'next' step and an optional
action to be triggered if the step status has been reached (all expectations
match).
.PP
The tests usually are self-contained and can run in any order. Entry point
always is a clean and idle Linux cluster and a clean HANA pair in sync. Same
is true for the final state. Of course the HANA sites may change during the
test. Consequently, each predefined test starts and ends with checking the
clean status of the HANA pair.
.PP
For tests involving complex actions on the cluster nodes, predefined shell
scripts are executed remotely.
.PP
Input - Processing - Output
.\" TODO
.PP
\fB*\fP Input: Test cases and test system properties
.PP
a. Test cases are defined in JSON files. Each case is described in one file.
It also can reference to defaults.json for common status definitions.
Each step contains an expectation for SAPHanaSR attributes, which need to
match.
Each test step status is described by one or more conditions. Each condition
is described by one comparision.
See manual page SAPHanaSR-tests-syntax(5) for details, see also the EXAMPLES
section in SAPHanaSR-tests-angi-ScaleUp(7) and SAPHanaSR-tests-angi-ScaleOut(7).
.PP
b. Test system properties are defined in JSON files.
This properties are decribing the test system. The properties are separated from
the test cases, because they need to be adapted for each system. The values are
static during test run and common for all test on one system.
The test cases on the other hand are mostly similar for all test systems.
See manual page SAPHanaSR-tests-syntax(5) for details, see also example below.
.PP
\fB*\fP Processing:
.PP
.\" TODO SAPHanaSR-testCluster
.\" TODO shell scripts shiped with SAPhanaSR-tester, e.g. sct_test_
.\" TODO custom scripts and test automation frameworks
See manual page SAPHanaSR-testCluster(8) and SAPHanaSR-tests-description(7).
.PP
\fB*\fP Output: Test results
.PP
.\" TODO output of SAPHanaSR-testCluster
See manual page SAPHanaSR-testCluster(8) and SAPHanaSR-tests-description(7).
.PP
.\"
.SH EXAMPLES
.\"
\fB*\fR Installing SAPHanaSR-tester.
.PP
The SAPHanaSR-tester is installed on an node outside the Linux cluster.
Password-less login for user root is prepared. The tester properties are
adapted to the SAPHanaSR scale-up cluster. Example scale-up cluster nodes are
node1 and node2, SID is Q42, instance number is 85, HANA´s virtual IP address is
192.168.178.85, database user key is TESTER.
.PP
.RS 2
# zypper in SAPHanaSR-tester
.br
# zypper in python3-paramiko
.br
# ssh-keygen -t rsa -b 4096
.br
# ssh-copy-id root@node1
.br
# ssh-copy-id root@node2
.br
# ssh-copy-id root@localhost
.br
# cp /usr/share/SAPHanaSR-tester/json/angi-ScaleUp/properties.json ~/properties_q42.json
.br
# vi ~/properties_q42.json
.br
{
.br
"sid": "Q42",
.br
"instNo": "85",
.br
"mstResource": "mst_SAPHanaCon_Q42_HDB85",
.br
"clnResource": "cln_SAPHanaTop_Q42_HDB85",
.br
"ipAddr": "192.168.178.85",
.br
"userKey": "TESTER"
.br
}
.br
:wq
.RE
.PP
\fB*\fR Creating an userkey for database access.
.PP
An userkey for user <sid>admin is created to allow password-less login as user
SYSTEM to the HANA database. This is needed for some test cases, e.g.
free_log_backup. The example user is q42admin, key is TESTER, instance number
is 85, database user SYSTEM´s password is SuSE12345. Do this on both nodes.
.br
Refer to SAP HANA documentation for further information on database users,
permissions and the user keystore.
.br
Note: Never do this on production systems.
.PP
.RS 2
# su - q42admin
.br
~> cd
.br
~> hdbuserstore set TESTER localhost:38513 SYSTEM SuSE12345
.br
~> hdbuserstore list TESTER
.br
~> hdbsql -U TESTER "select * from dummy"
.br
~> exit
.RE
.PP
\fB*\fR Showing predefined functional scale-up test cases.
.PP
The predefined functional tests for the SAPHanaSR-angi scale-up scenario are
shown. See also manual page SAPHanaSR-tests-angi-ScaleUp(7). See manual page
SAPHanaSR-tests-description(7) and SAPHanaSR-testCluster(8) for how to run this
tests.
.PP
.RS 2
# ls /usr/share/SAPHanaSR-tester/json/angi-ScaleUp/*.json | \\
.br
while read; do echo $REPLY; grep "name" $REPLY | head -1; done
.RE
.PP
.\"
.SH FILES
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleUp/
functional tests for SAPHanaSR-angi scale-up scenarios.
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleOut/
functional tests for SAPHanaSR-angi scale-out ERP scenarios, without HANA host auto-failover.
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleOut-BW/
functional tests for SAPHanaSR-angi scale-out BW scenarios, with HANA host auto-failover. Not yet implemented.
.TP
/usr/share/SAPHanaSR-tester/json/classic-ScaleUp/
functional tests for SAPHanaSR classic scale-up scenarios.
.TP
/usr/share/SAPHanaSR-tester/json/classic-ScaleOut/
not yet implemented.
.TP
/usr/share/SAPHanaSR-tester/json/classic-ScaleOut-BW/
not yet implemented.
.TP
$PWD/.test_properties
auto-generated properties file for called shell scripts. No need to touch.
.TP
/usr/bin/SAPHanaSR-testCluster
program to run a predefined testcase.
.TP
/usr/bin/SAPHanaSR-showAttr
SAPHanaSR-showAttr, compatible to SAPHanaSR-angi and SAPHanaSR-tester
.PP
.\"
.SH REQUIREMENTS
.PP
For the current version of the SAPHanaSR-tester, the capabilities are limited
to the following:
.PP
\fB*\fP SLES-for-SAP 15 SP4 or newer.
.PP
\fB*\fP Resource agents and configuration of SAPHanaSR-angi 1.2 or newer is supported.
.PP
\fB*\fP Resource agents and configuration of SAPHanaSR or SAPHanaSR-ScaleOut
with additional package SAPHanaSR-tester-client is supported.
.PP
\fB*\fP Scale-up setups with or without multi-target replication.
No scale-up multi-SID (MCOS) setups.
.PP
\fB*\fP The tester checks cluster attributes via SAPHanaSR-showAttr. It only
detects an status represented by those attributes.
.PP
\fB*\fP Scale-out setups with or without multi-target replication.
No HANA host auto-failover.
.PP
\fB*\fP SAPHanaSR-tester is installed and used on an node outside the Linux
cluster.
.PP
\fB*\fP User root needs password-less access to the Linux cluster nodes.
.PP
\fB*\fP On the cluster nodes, user <sid>adm has a userkey for password-less
login as database user SYSTEM into the HANA database. This is only needed for
some test cases.
.PP
\fB*\fP Package python3-paramiko is needed on the tester machine for the
tester´s multi-node feature. The cluster nodes need to run an openssh-server
compatible to that python3-paramiko.
.PP
\fB*\fP Package ClusterTools2 is needed on the cluster nodes.
.PP
\fB*\fP Strict time synchronization between the cluster nodes and the tester
node, e.g. NTP. All nodes have configured the same timezone.
.PP
\fB*\fP The services pacemaker and corosync need to be enabled for this tests.
If disk-based SBD is used, then service sbd enabled and SBD_STARTMODE=always
is needed for this tests. The stonith-action=reboot is needed in any case.
This cluster basics might be different for production.
.PP
\fB*\fP In some cases the various timings for stonith and service startup might
need alignement to prevent fenced nodes from re-joining the cluster before the
resource takeover has been finished. This most likely applies if stonith-timeout
is long, but the cluster nodes are booting very fast.
.PP
\fB*\fP Sufficient disk space, particularly for HANA transaction logs, e.g.
/hana/log/. Depending on the backup implementation, also space for log backups
might be needed, e.g. /hana/shared/<SID>/HDB<nr>/backup/. Strict housekeeping
might help as well.
.PP
\fB*\fP The tester must not be used for production systems.
Most tests are disruptive.
.PP
.\"
.SH BUGS
.PP
The SAPHanaSR-tester is under development. Syntax and formats are subject to
change.
.br
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-testCluster\fP(8) , \fBSAPHanaSR-tests-syntax\fP(5) ,
\fBSAPHanaSR-tests-description\fP(7) ,
\fBSAPHanaSR-tests-description_on-fail-fence\fP(7) ,
\fBSAPHanaSR-tests-angi-ScaleUp\fP(7) , \fBSAPHanaSR-tests-angi-ScaleOut\fP(7) ,
\fBSAPHanaSR-tests-classic-ScaleUp\fP(7) ,
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-showAttr\fP(8) , \fBcrm_mon\fP(8) ,
\fBssh-keygen\fP(1) , \fBssh-copy-id\fP(1) ,
.br
https://documentation.suse.com/sbp/sap/ ,
.br
https://documentation.suse.com/sles-sap/ ,
.br
https://www.suse.com/releasenotes/
.PP
.\"
.SH AUTHORS
.PP
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.PP
(c) 2023-2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
215 changes: 215 additions & 0 deletions man-tester/SAPHanaSR-tests-angi-ScaleOut.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-tests-angi-ScaleOut 7 "30 Sep 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-tests-angi-ScaleOut \- Functional tests for SAPHanaSR Scale-Out.
.PP
.\"
.SH DESCRIPTION
.PP
Functional test are shipped for the scale-out ERP scenario. This tests could
be run out-of-the-box. The test cases are defined in dedicated files.
See manual page SAPHanaSR-tests-syntax(5) for syntax details. Details like
performed steps or expected behaviour of cluster and HANA are explained in
SAPHanaSR-tests-description(7).
.PP
Each test can be executed by running the command SAPHanaSR-testCluster with
appropriate parameters. See manual page SAPHanaSR-testCluster(8).
.PP
Overview on predefined functional tests for scale-out ERP:
.TP
\fBblock_manual_takeover\fP
Blocked manual takeover, for susTkOver.py.
.TP
\fBblock_sr\fP
Block HANA SR between master nodes and check SFAIL attribute, unblock to recover, for susHanaSR.py.
.TP
\fBblock_sr_and_freeze_prim_master_nfs\fP
Block HANA SR and freeze HANA NFS on primary master node.
.TP
\fBblock_sr_and_freeze_prim_site_nfs\fP
Block HANA SR and freeze HANA NFS on primary site. Not yet implemented.
.TP
\fBfree_log_area\fP
Free HANA log area on primary site.
.TP
\fBfreeze_prim_master_nfs\fP
Freeze HANA NFS on primary master node.
.TP
\fBfreeze_prim_site_nfs\fP
Freeze HANA NFS on primary site.
.TP
\fBfreeze_secn_site_nfs\fP
Freeze HANA NFS on secondary site.
.TP
\fBkill_prim_indexserver\fP
Kill primary master indexserver, for susChkSrv.py (action_on_lost=kill).
.TP
\fBkill_prim_inst\fP
Kill primary master instance.
.TP
\fBkill_prim_ipaddr\fP
Kill primary HANA´s IP address once.
.TP
\fBkill_prim_nameserver\fP
Kill primary master nameserver. Not yet implemented.
.TP
\fBkill_prim_node\fP
Kill primary master node.
.TP
\fBkill_prim_pacemakerd\fP
Kill primary master node´s pacemakerd (PCMK_fail_fast=yes).
.TP
\fBkill_prim_pacemkr-ctrld\fP
Kill primary master node´s pacemaker-controld (PCMK_fail_fast=yes).
.TP
\fBkill_prim_worker_indexserver\fP
Kill primary worker indexserver, for susChkSrv.py (action_on_lost=kill).
.TP
\fBkill_prim_worker_inst\fP
Kill primary worker instance.
.TP
\fBkill_prim_worker_node\fP
Kill primary worker node.
.TP
\fBkill_prim_worker_pacemakerd\fP
Kill primary worker node´s pacemakerd (PCMK_fail_fast=yes).
.TP
\fBkill_prim_worker_pacemkr-ctrld\fP
Kill primary worker node´s pacemaker-controld (PCMK_fail_fast=yes).
.TP
\fBkill_prim_site\fP
Kill primary site nodes. Not yet implemented.
.TP
\fBkill_secn_indexserver\fP
Kill secondary master indexserver, for susChkSrv.py (action_on_lost=kill).
.TP
\fBkill_secn_inst\fP
Kill secondary master instance.
.TP
\fBkill_secn_nameserver\fP
Kill secondary master nameserver. Not yet implemented.
.TP
\fBkill_secn_node\fP
Kill secondary master node.
.TP
\fBkill_secn_pacemakerd\fP
Kill secondary master node´s pacemakerd (PCMK_fail_fast=yes).
.TP
\fBkill_secn_pacemkr-ctrld\fP
Kill secondary master node´s pacemaker-controld (PCMK_fail_fast=yes).
.TP
\fBkill_secn_site\fP
Kill secondary site nodes. Not yet implemented.
.TP
\fBkill_secn_worker_inst\fP
Kill secondary worker instance.
.TP
\fBkill_secn_worker_node\fP
Kill secondary worker node.
.TP
\fBkill_secn_worker_pacemakerd\fP
Kill secondary worker node´s pacemakerd (PCMK_fail_fast=yes).
.TP
\fBkill_secn_worker_pacemkr-ctrld\fP
Kill secondary worker node´s pacemaker-controld (PCMK_fail_fast=yes).
.TP
\fBmaintenance_cluster_bootstrap\fP
Maintenance procedure, initially configuring cluster resources. Not yet implemented.
.TP
\fBmaintenance_cluster_hana_running\fP
Maintenance procedure with stopping and restarting cluster, keep HANA running.
.TP
\fBmaintenance_cluster_turn_hana\fP
Maintenance procedure, manually turning HANA sites.
.TP
\fBmaintenance_with_standby_nodes\fP
Maintenance procedure, standby+online secondary then standby+online primary. Not yet implemented.
.TP
\fBnop\fP
No operation - check, wait and check again (stability check).
.TP
\fBone_stable_hour\fP
Check regulary for one hour that there is no failure, like nop.
.TP
\fBregister_prim_cold_hana\fP
Stop cluster, do manual takeover, leave former primary down and unregistered, start cluster. Not yet implemented.
.TP
\fBrestart_cluster\fP
Stop and restart cluster and HANA
.TP
\fBrestart_cluster_hana_running\fP
Stop and restart cluster, keep HANA running. Slightly differs from maintenance.
.TP
\fBrestart_cluster_turn_hana\fP
Stop cluster and HANA, takeover HANA, start cluster.
.TP
\fBstandby_prim_node\fP
Standby primary master node and online again.
.TP
\fBstandby_secn_node\fP
Standby secondary master node and online again.
.TP
\fBstandby_secn_worker_node\fP
Standby secondary worker node and online again.
.RE
.PP
.\"
.SH EXAMPLES
.PP
* List tests for SAPHanaSR-angi scale-out ERP scenarios
.PP
.RS 2
# ls /usr/share/SAPHanaSR-tester/json/angi-ScaleOut/
.RE
.PP
.\"
.SH FILES
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleOut/
functional tests for SAPHanaSR-angi scale-out ERP scenarios.
.TP
/usr/bin/sct_test_*
shell scripts for un-easy tasks on the cluster nodes.
.PP
.\"
.SH REQUIREMENTS
.PP
See the REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR-angi(7).
Further, HANA database and Linux cluster are configured according to the SUSE
setup guide for the scale-out ERP style scenario (two nodes per site, no standby).
No immediate fencing is configured, except for the SAPHanaFilesystem RA.
Of course, HANA database and Linux cluster have certain requirements.
Please refer to the product documentation.
.\"
.SH BUGS
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-testCluster\fP(8) ,
\fBSAPHanaSR-tests-description\fP(7) , \fBSAPHanaSR-tests-syntax\fP(5) ,
\fBSAPHanaSR-tests-angi-ScaleOut_on-fail-fence\fP(7) ,
\fBSAPHanaSR-tests-angi-ScaleUp\fP(7) ,
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-showAttr\fP(8)
.PP
.\"
.SH AUTHORS
.PP
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.PP
(c) 2023-2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
132 changes: 132 additions & 0 deletions man-tester/SAPHanaSR-tests-angi-ScaleOut_on-fail-fence.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-tests-angi-ScaleOut_on-fail-fence 7 "30 Sep 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-tests-angi-ScaleOut_on-fail-fence \- Functional tests for SAPHanaSR Scale-Out with immediate fencing.
.PP
.\"
.SH DESCRIPTION
.PP
Functional test are shipped for the scale-out ERP scenario when configured for
immediate fencing. See manual page ocf_suse_SAPHanaController(7), susChkSrv.py(7)
and SAPHanaSR-alert-fencing(8) for the respective configuration details. This
tests could be run out-of-the-box. The test cases are defined in dedicated files.
See manual page SAPHanaSR-tests-syntax(5) for syntax details. Details like
performed steps or expected behaviour of cluster and HANA are explained in
SAPHanaSR-tests-description(7).
.PP
Each test can be executed by running the command SAPHanaSR-testCluster with
appropriate parameters. See manual page SAPHanaSR-testCluster(8).
.PP
Overview on predefined functional tests specific for scale-out ERP with immediate fencing:
.TP
\fBfreeze_prim_master_nfs_fencing_alert\fP
Freeze HANA NFS on primary master node, for SAPHanaFilesystem (fencing alert agent configured).
.TP
\fBkill_prim_indexserver_fencing_alert\fP
Kill primary master indexserver, for susChkSrv.py (action_on_lost=fence and fencing alert agent configured).
.TP
\fBkill_prim_inst_fencing_alert\fP
Kill primary master instance, for SAPHanaController (ON_FAIL_ACTION=fence and fencing alert agent configured).
.TP
\fBkill_prim_nic_fencing_alert\fP
Kill primary HANA network interface (IPAddr2 start on-fail=fence, fencing alert agent configured). Not yet implemented.
.TP
\fBkill_prim_node_fencing_alert\fP
Kill primary master node (fencing alert agent configured).
.TP
\fBkill_prim_pacemakerd_fencing_alert\fP
Kill primary master node´s pacemakerd (PCMK_fail_fast=yes and fencing alert agent configured).
.TP
\fBkill_prim_pacemkr-ctrld_fencing_alert\fP
Kill primary master node´s pacemaker-controld (PCMK_fail_fast=yes and fencing alert agent configured).
.TP
\fBkill_prim_worker_indexserver_fencing_alert\fP
Kill primary worker indexserver, for susChkSrv.py (action_on_lost=fence and fencing alert agent configured).
.TP
\fBkill_prim_worker_inst_fencing_alert\fP
Kill primary worker instance, for SAPHanaController (ON_FAIL_ACTION=fence and fencing alert agent configured).
.TP
\fBkill_prim_worker_node_fencing_alert\fP
Kill primary worker node (fencing alert agent configured).
.TP
\fBkill_secn_indexserver_fencing_alert\fP
Kill secondary master indexserver, for susChkSrv.py (action_on_lost=fence and fencing alert agent configured).
.TP
\fBkill_secn_node_fencing_alert\fP
Kill secondary master node (fencing alert agent configured).
.TP
\fBkill_secn_pacemakerd_fencing_alert\fP
Kill secondary master node´s pacemakerd (PCMK_fail_fast=yes and fencing alert agent configured).
.TP
\fBkill_secn_pacemkr-ctrld_fencing_alert\fP
Kill secondary master node´s pacemaker-controld (PCMK_fail_fast=yes and fencing alert agent configured).
.TP
\fBkill_secn_worker_indexserver_fencing_alert\fP
Kill secondary worker indexserver, for susChkSrv.py (action_on_lost=fence and fencing alert agent configured).
.TP
\fBkill_secn_worker_node_fencing_alert\fP
Kill secondary worker node (fencing alert agent configured).
.PP
More recommended tests, but not specific to immediate fencing, are listed in
manual page SAPHanaSR-tests-angi-ScaleOut(7).
.PP
.\"
.SH EXAMPLES
.PP
* List tests for SAPHanaSR-angi scale-out ERP with immediate fencing scenarios
.PP
.RS 2
# ls /usr/share/SAPHanaSR-tester/json/angi-ScaleOut/*fenc*
.RE
.PP
.\"
.SH FILES
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleOut/
functional tests for SAPHanaSR-angi scale-out ERP scenarios.
.TP
/usr/bin/sct_test_*
shell scripts for un-easy tasks on the cluster nodes.
.PP
.\"
.SH REQUIREMENTS
.PP
See the REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR-angi(7).
Further, HANA database and Linux cluster are configured almost according to the
SUSE setup guide for the scale-out ERP style scenario (two nodes per site, no
standby). In opposite to that guide, immediate fencing is configured.
See ocf_suse_SAPHanaController(7), susChkSrv.py(7) and
SAPHanaSR-alert-fencing(8).
Of course, HANA database and Linux cluster have certain requirements.
Please refer to the product documentation.
.\"
.SH BUGS
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-testCluster\fP(8) ,
\fBSAPHanaSR-tests-description_on-fail-fence\fP(7) ,
\fBSAPHanaSR-tests-description\fP(7) , \fBSAPHanaSR-tests-syntax\fP(5) ,
\fBSAPHanaSR-tests-angi-ScaleOut\fP(7) ,
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-showAttr\fP(8) ,
\fBocf_suse_SAPHanaController\fP(7) , \fBsusChkSrv.py\fP(7) ,
\fBSAPHanaSR-alert-fencing\fP(8)
.PP
.\"
.SH AUTHORS
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
178 changes: 178 additions & 0 deletions man-tester/SAPHanaSR-tests-angi-ScaleUp.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-tests-angi-ScaleUp 7 "18 Sep 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-tests-angi-ScaleUp \- Functional tests for SAPHanaSR Scale-Up.
.PP
.\"
.SH DESCRIPTION
.PP
Functional test are shipped for scale-up scenarios. This tests could be run
out-of-the-box. The test cases are defined in dedicated files.
See manual page SAPHanaSR-tests-syntax(5) for syntax details. Details like
performed steps or expected behaviour of cluster and HANA are explained in
SAPHanaSR-tests-description(7).
.PP
Each test can be executed by running the command SAPHanaSR-testCluster with
appropriate parameters. See manual page SAPHanaSR-testCluster(8).
.PP
Overview on predefined functional tests for scale-up:
.TP
\fBblock_manual_takeover\fP
Blocked manual takeover, for susTkOver.py.
.TP
\fBblock_sr\fP
Block HANA SR and check SFAIL attribute, unblock to recover, for susHanaSR.py.
.TP
\fBblock_sr_and_freeze_prim_fs\fP
Block HANA SR and freeze HANA FS on primary master node.
.TP
\fBflup\fP
Like nop but very short sleep, just checking the test engine.
.TP
\fBfree_log_area\fP
Free HANA log area on primary site.
.TP
\fBfreeze_prim_fs\fP
Freeze HANA FS on primary master node.
.TP
\fBfreeze_secn_fs\fP
Freeze HANA FS on secondary master node.
.TP
\fBkill_prim_indexserver\fP
Kill primary indexserver, for susChkSrv.py (action_on_lost=kill).
.TP
\fBkill_prim_inst\fP
Kill primary instance.
.TP
\fBkill_prim_ipaddr\fP
Kill primary HANA IP address once.
.TP
\fBkill_prim_nameserver\fP
Kill primary nameserver.
.TP
\fBkill_prim_nic\fP
Kill primary HANA network interface (IPAddr2 start on-fail=fence). Not yet implemented.
.TP
\fBkill_prim_node\fP
Kill primary node.
.TP
\fBkill_prim_pacemakerd\fP
Kill primary pacemakerd (PCMK_fail_fast=yes).
.TP
\fBkill_prim_pacemkr-ctrld\fP
Kill primary pacemaker-controld (PCMK_fail_fast=yes).
.TP
\fBkill_secn_indexserver\fP
Kill secondary indexserver, for susChkSrv.py (action_on_lost=kill).
.TP
\fBkill_secn_inst\fP
Kill secondary instance.
.TP
\fBkill_secn_nameserver\fP
Kill secondary nameserver.
.TP
\fBkill_secn_node\fP
Kill secondary node.
.TP
\fBkill_secn_pacemakerd\fP
Kill secondary pacemakerd (PCMK_fail_fast=yes).
.TP
\fBkill_secn_pacemkr-ctrld\fP
Kill secondary pacemaker-controld (PCMK_fail_fast=yes).
.TP
\fBmaintenance_cluster_bootstrap\fP
Maintenance procedure, initially configuring cluster resources.
.TP
\fBmaintenance_cluster_hana_running\fP
Maintenance procedure with stopping and restarting cluster, keep HANA running.
.TP
\fBmaintenance_cluster_turn_hana\fP
Maintenance procedure, manually turning HANA sites.
.TP
\fBmaintenance_with_standby_nodes\fP
Maintenance procedure, standby+online secondary then standby+online primary.
.TP
\fBnop\fP
No operation - check, wait and check again (stability check).
.TP
\fBone_stable_hour\fP
Check regulary for one hour that there is no failure, like nop.
.TP
\fBregister_prim_cold_hana\fP
Stop cluster, do manual takeover, leave former primary down and unregistered, start cluster. Not yet implemented.
.TP
\fBrestart_cluster_hana_running\fP
Stop and restart cluster, keep HANA running. Slightly differs from maintenance.
.TP
\fBrestart_cluster\fP
Stop and restart cluster and HANA.
.TP
\fBrestart_cluster_turn_hana\fP
Stop cluster and HANA, manually start and takeover HANA, start cluster.
.TP
\fBsplit_brain_prio\fP
Network split-brain with priority fencing.
.TP
\fBstandby_prim_node\fP
Set primary node standby and online again.
.TP
\fBstandby_secn_node\fP
Set secondary node standby and online again.
.PP
.\"
.SH EXAMPLES
.PP
* List tests for SAPHanaSR-angi scale-up scenarios
.PP
.RS 2
# ls /usr/share/SAPHanaSR-tester/json/angi-ScaleUp/
.RE
.PP
.\"
.SH FILES
.\"
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleUp/
functional tests for SAPHanaSR-angi scale-up scenarios.
.TP
/usr/bin/sct_test_*
shell scripts for un-easy tasks on the cluster nodes.
.PP
.\"
.SH REQUIREMENTS
.\"
See the REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR-angi(7).
Further, HANA database and Linux cluster are configured according to the SUSE
setup guide for the scale-up performance-optimised scenario.
No immediate fencing is configured, except for the SAPHanaFilesystem RA.
Of course, HANA database and Linux cluster have certain requirements.
Please refer to the product documentation.
.PP
.\"
.SH BUGS
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-testCluster\fP(8) ,
\fBSAPHanaSR-tests-description\fP(7) , \fBSAPHanaSR-tests-syntax\fP(5) ,
\fBSAPHanaSR-tests-angi-ScaleOut\fP(7) ,
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-showAttr\fP(8)
.PP
.\"
.SH AUTHORS
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2023-2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
94 changes: 94 additions & 0 deletions man-tester/SAPHanaSR-tests-angi-ScaleUp_on-fail-fence.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
.\" Version: 1.001
.\"
.TH SAPHanaSR-tests-angi-ScaleUp_on-fail-fence 7 "30 Sep 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-tests-angi-ScaleUp_on-fail-fence \- Functional tests for SAPHanaSR Scale-Up with immediate fencing.
.PP
.\"
.SH DESCRIPTION
.PP
Functional test are shipped for scale-up scenarios when configured for immediate
fencing. See manual page ocf_suse_SAPHanaController(7) and susChkSrv.py(7) for
the respective configuration details. This tests could be run
out-of-the-box. The test cases are defined in dedicated files.
See manual page SAPHanaSR-tests-syntax(5) for syntax details. Details like
performed steps or expected behaviour of cluster and HANA are explained in
SAPHanaSR-tests-description(7).
.PP
Each test can be executed by running the command SAPHanaSR-testCluster with
appropriate parameters. See manual page SAPHanaSR-testCluster(8).
.PP
Overview on predefined functional tests specific for scale-up with immediate fencing:
.TP
\fBkill_prim_indexserver_fencing\fP
Kill primary indexserver, for susChkSrv.py (action_on_lost=fence).
.TP
\fBkill_prim_inst_fencing\fP
Kill primary instance, for SAPHanaController (ON_FAIL_ACTION=fence).
.TP
\fBkill_secn_indexserver_fencing\fP
Kill secondary indexserver, for susChkSrv.py (action_on_lost=fence).
.PP
More recommended tests, but not specific to immediate fencing, are listed in
manual page SAPHanaSR-tests-angi-ScaleUp(7).
.PP
.\"
.SH EXAMPLES
.PP
* List tests for SAPHanaSR-angi scale-up with immediate fencing scenarios
.PP
.RS 2
# ls /usr/share/SAPHanaSR-tester/json/angi-ScaleUp/*fenc*
.RE
.PP
.\"
.SH FILES
.\"
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleUp/
functional tests for SAPHanaSR-angi scale-up scenarios.
.TP
/usr/bin/sct_test_*
shell scripts for un-easy tasks on the cluster nodes.
.PP
.\"
.SH REQUIREMENTS
.\"
See the REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR-angi(7).
Further, HANA database and Linux cluster are configured almost according to the
SUSE setup guide for the scale-up performance-optimised scenario.
In opposite to that guide, immediate fencing is configured.
See ocf_suse_SAPHanaController(7), susChkSrv.py(7) and
SAPHanaSR-alert-fencing(8).
Of course, HANA database and Linux cluster have certain requirements.
Please refer to the product documentation.
.PP
.\"
.SH BUGS
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-testCluster\fP(8) ,
\fBSAPHanaSR-tests-description_on-fail-fence\fP(7) ,
\fBSAPHanaSR-tests-description\fP(7) , \fBSAPHanaSR-tests-syntax\fP(5) ,
\fBSAPHanaSR-tests-angi-ScaleUp\fP(7) ,
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-showAttr\fP(8) ,
\fBocf_suse_SAPHanaController\fP(7) , \fBsusChkSrv.py\fP(7)
.PP
.\"
.SH AUTHORS
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
243 changes: 243 additions & 0 deletions man-tester/SAPHanaSR-tests-basic-cluster.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-tests-basic-cluster 7 "30 Sep 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-tests-basic-cluster \- Checking SAPHanaSR clusters basics.
.PP
.\"
.SH DESCRIPTION
.\"
The Linux HA cluster relies on a sane OS setup and adequate infrastructure. For
the SAP HANA database certain conditions have to match. The cluster nodes need
to be checked for this prerequisites before performing functional tests.
See manual page SAPHanaSR_basic_cluster(7), SAPHanaSR-ScaleOut_basic_cluster(7)
and REQUIREMENTS section of SAPHanaSR-tester(7) and SAPHanaSR-angi(7).
In addition specific tests for the underlying infrastructure and the database
need to be done.
.PP
.\"
.SH EXAMPLES
.\"
The checks outlined here are by no means complete.
Neverteless, at least this checks should be performed before doing functional
tests.
.PP
\fB*\fR Checking access to update channels and pending patches.
.PP
The accessible update channels are shown. Also pending patches are listed.
Do this on all Linux cluster nodes.
See manual page zypper(8).
.PP
.RS 2
# zypper lr
.br
# zypper lp
.RE
.PP
\fB*\fR Checking systemd integration and OS settings for SAP HANA.
.PP
Basic OS features time and name resolution as well as HANA disk space are
checked. Integration of SAP hostagent and SAP HANA database with systemd are
checked. OS settings for HANA are checked. Do this on all Linux cluster nodes.
Cluster nodes are "node1" and "node2", HANA SID is "HA1", instance
number is "85". Do this on all Linux cluster nodes.
See manual page chronyc(8) and saptune(8).
.PP
.RS 2
# chronyc sources | grep "\\^\\*"
. br
# grep -e node1 -e node2 /etc/hosts
.br
# df -h /hana/log/HA1 /hana/shared/HA1/HDB85/backup
.br
# systemd-cgls -u SAP.slice
.br
# saptune solution verify HANA
.RE
.PP
\fB*\fR Checking for errors in the system logs.
.PP
Known error patterns are looked up in the system log.
Do this on all Linux cluster nodes.
See manual page cs_show_error_patterns(8).
.PP
.RS 2
# cs_show_error_patterns | grep -v "=.0"
.RE
.PP
\fB*\fR Checking Linux cluster SBD basic setup.
.PP
For the basic Linux cluster components watchdog driver, SBD disks and service,
it is checked if they are configured and running. Do this on all Linux cluster
nodes. See manual page sbd(8) and stonith_sbd(7).
.PP
.RS 2
# grep -v "#" /etc/sysconfig/sbd
.br
# lsmod | grep -e wdt -e dog
.br
# lsof /dev/watchdog* | grep sbd
.br
# cs_show_sbd_devices
.br
# systemctl status sbd | grep -e Loaded -e Active
.RE
.PP
If the Linux cluster already has been configured, show the SBD resource.
Resource name is rsc_stonith_sbd.
.PP
.RS 2
# crm_mon -1r | grep stonith:external
.br
# crm configure show rsc_stonith_sbd
.RE
.PP
\fB*\fR Checking Linux cluster basic components.
.PP
For the basic Linux cluster services corosync and pacemaker, it is checked if
they are activated and running. The registered STONITH device and CIB bootstrap
options are shown. See manual page systemctl(8) and stonith_admin(8).
.PP
.RS 2
# systemctl status corosync pacemaker | grep -e Loaded -e Active
.br
# stonith_admin --list-registered
.br
# crm cluster status
.br
# crm configure show cib-bootstrap-options
.br
# crm_mon -1rA
.RE
.PP
\fB*\fR Checking Linux cluster basic functionality.
.PP
For the basic Linux cluster components watchdog driver, SBD disks and service,
corosync service as well as pacemaker service, it is checked if they are
working. The cluster node "node2" will be fenced and should re-join
automatically. Hopefully this is the other one. Do this on all Linux cluster
nodes. See manual page crm(8).
.br
Note: Never do this on production systems.
.PP
.\" TODO one line short description per test
.RS 2
# crm cluster crash_test --kill-corosync
.br
# crm cluster crash_test --kill-pacemakerd
.br
# crm cluster crash_test --kill-sbd
.br
# crm cluster crash_test --fence-node node2
.RE
.PP
\fB*\fR Checking HANA HA/DR hook script integration.
.PP
The Linux sudo rules are checked for needed permissions.
The HANA global.ini is checked for SUSE HA/DR provider hook scripts. The HANA
nameserver tracefiles are checked whether the hook scripts have been loaded.
SID is HA1, instance number is 85. Do this on all Linux cluster nodes. See
manual page susHanaSR.py(7), susTkOver.py(7), susChkSrv.py(7) and
SAPHanaSR-hookHelper(8).
.PP
.RS 2
# sudo -U ha1adm -l | \\
.br
grep -e "NOPASSWD.*crm_attribute" -e "NOPASSWD.*SAPHanaSR-hookHelper"
.br
# su - ha1adm
.br
~> cdcoc
.br
~> grep -e "ha_dr_provider_sus" -e "provider.*sus" \\
.br
-e "path.*/SAPHanaSR-angi" global.ini
.\" TODO SAPHanaSR-manageProvider
.br
~> cdtrace
.br
~> grep "HADR.*load.*sus" nameserver_*.38501.???.trc
.RE
.PP
.\"
.SH FILES
.TP
/etc/hosts
local hostname resolution
.TP
/etc/chrony.d/*
config files for chrony daemon
.TP
/etc/modprobe.d/*

.TP
/etc/sysconfig/sbd
config file for SBD daemon
.TP
/etc/sysconfig/pacemaker
config file for pacemaker daemon
.TP
/etc/corosync/corosync.conf
config file for corosync daemon
.TP
/etc/sudoers, /etc/sudoers.d/*
the sudo permissions configuration
.TP
/hana/shared/$SID/global/hdb/custom/config/global.ini
the on-disk representation of HANA global system configuration
.TP
/var/log/messages
the Linux syslog messages
.TP
/usr/sap/$SID/HDB$nr/$HOST/trace
path to HANA tracefiles
.PP
.\"
.SH REQUIREMENTS
.PP
See the REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR-angi(7).
Of course, the Linux cluster has certain requirements.
Please refer to the product documentation.
.PP
.\"
.SH BUGS
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-angi\fP(7) ,
\fBSAPHanaSR_basic_cluster\fP(7) , \fBSAPHanaSR-ScaleOut_basic_cluster\fP(7) ,
\fBsusHanaSR.py\fP(7) , \fBsusTkOver.py\fP(7) , \fBsusChkSrv.py\fP(7) ,
\fBcrm\fP(8) , \fBcrm_verify\fP(8) , \fBcrm_mon\fP(8) , \fBstonith_admin\fP(8) ,
\fBcs_show_error_patterns\fP(8) , \fBcs_sum_base_config\fP(8) ,
\fBcs_show_sbd_devices\fP(8) , \fBsbd\fP(8) , \fBstonith_sbd\fP(8) ,
\fBsaptune\fP(8) , \fBchronyc\fP(8) , \fBsystemctl\fP(8) , \fBhosts\fP(5) ,
.br
https://documentation.suse.com/sbp/sap/ ,
.br
https://documentation.suse.com/sles-sap/ ,
.br
https://documentation.suse.com/sle-ha/ ,
.br
https://www.suse.com/releasenotes/
.PP
.\"
.SH AUTHORS
.PP
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.PP
(c) 2023-2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
173 changes: 173 additions & 0 deletions man-tester/SAPHanaSR-tests-classic-ScaleUp.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-tests-classic-ScaleUp 7 "26 Nov 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-tests-classic-ScaleUp \- Functional tests for SAPHanaSR Scale-Up.
.PP
.\"
.SH DESCRIPTION
.PP
Functional test are shipped for scale-up scenarios. This tests could be run
out-of-the-box. The test cases are defined in dedicated files.
See manual page SAPHanaSR-tests-syntax(5) for syntax details. Details like
performed steps or expected behaviour of cluster and HANA are explained in
SAPHanaSR-tests-description(7).
.PP
Overview on predefined functional tests for classical SAPHanaSR scale-up:
.TP
\fBblock_manual_takeover\fP
Blocked manual takeover, for susTkOver.py.
.TP
\fBblock_sr\fP
Block HANA SR and check SFAIL attribute; unblock to recover, for SAPHanaSR.py.
.TP
\fBflup\fP
Like nop but very short sleep, just checking the test engine.
.TP
\fBfree_log_area\fP
Free HANA log area on primary site.
.TP
\fBkill_prim_indexserver\fP
Kill primary indexserver, for susChkSrv.py (action_on_lost=kill).
.TP
\fBkill_prim_inst\fP
Kill primary instance.
.TP
\fBkill_prim_ipaddr\fP
Kill primary HANA IP address once.
.TP
\fBkill_prim_nameserver\fP
Kill primary nameserver.
.TP
\fBkill_prim_nic\fP
Kill primary HANA network interface (IPAddr2 start on-fail=fence).
.TP
\fBkill_prim_node\fP
Kill primary node.
.TP
\fBkill_prim_pacemakerd\fP
Kill primary pacemakerd (PCMK_fail_fast=yes).
.TP
\fBkill_prim_pacemkr-ctrld\fP
Kill primary pacemaker-controld (PCMK_fail_fast=yes).
.TP
\fBkill_secn_indexserver\fP
Kill secondary indexserver, for susChkSrv.py (action_on_lost=kill).
.TP
\fBkill_secn_inst\fP
Kill secondary instance.
.TP
\fBkill_secn_nameserver\fP
Kill secondary nameserver.
.TP
\fBkill_secn_node\fP
Kill secondary node.
.TP
\fBkill_secn_pacemakerd\fP
Kill secondary pacemakerd (PCMK_fail_fast=yes).
.TP
\fBkill_secn_pacemkr-ctrld\fP
Kill secondary pacemaker-controld (PCMK_fail_fast=yes).
.TP
\fBmaintenance_cluster_bootstrap\fP
Maintenance procedure, initially configuring cluster resources. Not yet implemented.
.TP
\fBmaintenance_cluster_hana_running\fP
Maintenance procedure with stopping and restarting cluster, keep HANA running.
.TP
\fBmaintenance_cluster_turn_hana\fP
Maintenance procedure, manually turning HANA sites.
.TP
\fBmaintenance_cluster_with_standby_nodes\fP
Maintenance procedure, standby+online secondary then standby+online primary.
.TP
\fBnop\fP
No operation - check, wait and check again (stability check).
.TP
\fBone_stable_hour\fP
Check regulary for one hour that there is no failure, like nop.
.TP
\fBrestart_cluster\fP
Stop and restart cluster and HANA.
.TP
\fBsplit_brain_prio\fP
Network split-brain with priority fencing.
.TP
\fBstandby_prim_node\fP
Set primary node standby and online again.
.TP
\fBstandby_secn_node\fP
Set secondary node standby and online again.
.PP
.\"
.SH EXAMPLES
.PP
* List tests for SAPHanaSR scale-up scenarios
.PP
.RS 2
# ls /usr/share/SAPHanaSR-tester/json/classic-ScaleUp/
.RE
.PP
* Check for new SAPHanaSR-showAttr
.PP
.RS 2
/usr/bin/SAPHanaSR-showAttr --format=tester
.RE
.PP
.\"
.SH FILES
.TP
/usr/share/SAPHanaSR-tester/json/classic-ScaleUp/
functional tests for SAPHanaSR classic scale-up scenarios.
.TP
/usr/bin/sct_test_*
shell scripts for un-easy tasks on the cluster nodes.
.TP
/usr/bin/SAPHanaSR-showAttr
script SAPHanaSR-showAttr from SAPHanaSR-angi.
.PP
.\"
.SH REQUIREMENTS
.PP
* The package SAPHanaSR-tester-client is needed on the cluster nodes.
.PP
* See also the REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR(7).
.PP
* HANA database and Linux cluster are configureded according to the SUSE setup
guide for scale-up performance-optimised scenario (classical SAPHanaSR).
.PP
* Of course, HANA database and Linux cluster have certain requirements.
Please refer to the product documentation.
.PP
.\"
.SH BUGS
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-testCluster\fP(8) ,
\fBSAPHanaSR-tests-description\fP(7) , \fBSAPHanaSR-tests-syntax\fP(5) ,
\fBSAPHanaSR-tests-ScaleOut\fP(7) ,
\fBSAPHanaSR\fP(7) , \fBSAPHanaSR-showAttr\fP(8) ,
\fBSAPHanaSR-tester-client\fP(7)
.PP
.\"
.SH AUTHORS
.PP
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.PP
(c) 2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
1,000 changes: 1,000 additions & 0 deletions man-tester/SAPHanaSR-tests-description.7

Large diffs are not rendered by default.

333 changes: 333 additions & 0 deletions man-tester/SAPHanaSR-tests-description_on-fail-fence.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,333 @@
.\" Version: 1.001
.\"
.TH SAPHanaSR-tests-description_on-fail-fence 7 "30 Sep 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-tests-description_on-fail-fence \- Functional tests for SAPHanaSR with immediate fencing.
.PP
.\"
.SH DESCRIPTION
.PP
Functional test are shipped for different scenarios. This tests could be run
out-of-the-box. The test cases are defined in dedicated files.
See manual page SAPHanaSR-tests-syntax(5) for syntax details. Tests for
SAPHanaSR-angi scale-up scenarios are listed in
SAPHanaSR-tests-angi-ScaleUp_on-fail-fence(7), for SAPHanaSR-angi scale-out ERP
scenarios in SAPHanaSR-tests-angi-ScaleOut_on-fail-fence(7).
.PP
Entry point for all predefined tests is a clean and idle Linux cluster and a
clean HANA pair in sync. Same is true for the final state.
See manual page SAPHanaSR_maintenance_examples(7) for detecting the correct
status and watching changes near real-time.
.PP
Each test can be executed by running the command SAPHanaSR-testCluster with
appropriate parameters. See manual page SAPHanaSR-testCluster(8).
.PP
Predefined functional tests with immediate fencing:
.PP
\fBfreeze_prim_master_nfs_fencing_alert\fP
.RS 2
Descr: Freeze HANA NFS on primary master node.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: See ocf_suse_SAPHanaFilesystem(7).
.br
Expect: Primary nodes fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced.
.br
Comment: Infrastructure failure, main cluster case.
.RE
.PP
\fBkill_prim_indexserver_fencing\fP
.RS 2
Descr: Kill primary indexserver, for susChkSrv.py.
.br
Topology: ScaleUp (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: See susChkSrv.py(7).
.br
Expect: Primary node fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. One fencing (for action_on_lost=fence).
.br
Comment: Application failure, main cluster case
.RE
.PP
\fBkill_prim_indexserver_fencing_alert\fP
.RS 2
Descr: Kill primary master indexserver, for susChkSrv.py.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: See susChkSrv.py(7).
.br
Expect: All primary nodes fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced (for action_on_lost=fence).
.br
Comment: Application failure, main cluster case.
.RE
.PP
\fBkill_prim_inst_fencing\fP
.RS 2
Descr: Kill primary instance.
.br
Topology: ScaleUp (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: HDB kill
.br
Expect: Primary node fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. One fencing.
.br
Comment: Application failure, main cluster case.
.RE
.PP
\fBkill_prim_inst_fencing_alert\fP
.RS 2
Descr: Kill primary master instance.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: HDB kill
.br
Expect: All primary nodes fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced.
.br
Comment: Application failure, main cluster case.
.RE
.PP
\fBkill_prim_node_fencing_alert\fP
.RS 2
Descr: Kill primary master node. (fencing alert agent configured).
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: systemctl reboot --force
.br
Expect: All primary nodes fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced.
.br
Comment: Node failure, main cluster case.
.RE
.PP
\fBkill_prim_pacemkr-ctrld_fencing_alert\fP
.RS 2
Descr: Kill primary master node´s pacemaker-controld.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: killall -9 pacemaker-controld
.br
Expect: Primary master node fenced (for PCMK_fast_fail=yes).
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced.
.br
Comment: Cluster failure.
.RE
.PP
\fBkill_prim_worker_indexserver_fencing_alert\fP
.RS 2
Descr: Kill primary worker indexserver, for susChkSrv.py.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: See susChkSrv.py(7).
.br
Expect: All primary nodes fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced (for action_on_lost=fence).
.br
Comment: Application failure, main cluster case.
.RE
.PP
\fBkill_prim_worker_inst_fencing_alert\fP
.RS 2
Descr: Kill primary worker instance.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: HDB kill
.br
Expect: All primary nodes fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced.
.br
Comment: Application failure, main cluster case.
.RE
.PP
\fBkill_prim_worker_node_fencing_alert\fP
.RS 2
Descr: Kill primary worker node.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: systemctl reboot --force
.br
Expect: All primary nodes fenced.
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced.
.br
Comment: Node failure, main cluster case.
.RE
.PP
\fBkill_prim_worker_pacemkr-ctrld_fencing_alert\fP
.RS 2
Descr: Kill primary worker node´s pacemaker-controld.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: killall -9 pacemaker-controld
.br
Expect: Primary worker node fenced (for PCMK_fast_fail=yes).
HANA primary killed and finally started as secondary.
HANA secondary becomes finally primary.
SR SFAIL and finally SOK.
One takeover. All primary nodes fenced.
.br
Comment: Cluster failure.
.RE
.PP
\fBkill_secn_indexserver_fencing\fP
.RS 2
Descr: Kill secondary indexserver, for susChkSrv.py.
.br
Topology: ScaleUp.
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: See susChkSrv.py(7).
.br
Expect: Secondary node fenced.
HANA secondary killed and finally restarted.
SR SFAIL and finally SOK.
No takeover. All secondary nodes fenced (for action_on_lost=fence).
.br
Comment: Application failure, main cluster case
.RE
.PP
\fBkill_secn_worker_indexserver_fencing_alert\fP
.RS 2
Descr: Kill secondary worker indexserver, for susChkSrv.py.
.br
Topology: ScaleOut (angi only).
.br
Prereq: Cluster and HANA are up and running, all good.
.br
Test: See susChkSrv.py(7).
.br
Expect: Secondary nodes fenced.
HANA secondary finally restarted.
SR SFAIL and finally SOK.
No takeover. All secondary nodes fenced (for action_on_lost=fence).
.br
Comment: Application failure, main cluster case
.RE
.PP
.\"
.SH EXAMPLES
.PP
* List all shipped tests for immediate fencing
.PP
.RS 2
# find /usr/share/SAPHanaSR-tester/json/ -name "*fenc*.json" -exec basename {} \\; | sort -u
.RE
.PP
.\"
.SH FILES
.\"
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleUp/
functional tests for SAPHanaSR-angi scale-up scenarios.
.TP
/usr/share/SAPHanaSR-tester/json/angi-ScaleOut/
functional tests for SAPHanaSR-angi scale-out ERP scenarios.
.TP
/usr/bin/sct_test_*
shell scripts for un-easy tasks on the cluster nodes.
.PP
.\"
.SH REQUIREMENTS
.\"
See the REQUIREMENTS section in SAPHanaSR-tester(7) and SAPHanaSR-angi(7).
Further, HANA database and Linux cluster are configured almost according to the
SUSE setup guide for the scale-up performance-optimised scenario or the scale-out
ERP style scenario (two nodes per site, no standby).
In opposite to that guide, immediate fencing is configured.
See ocf_suse_SAPHanaController(7), susChkSrv.py(7) and SAPHanaSR-alert-fencing(8).
Of course, HANA database and Linux cluster also have certain requirements.
Please refer to the product documentation.
.PP
.\"
.SH BUGS
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
\fBSAPHanaSR-tester\fP(7) , \fBSAPHanaSR-testCluster\fP(8) ,
\fBSAPHanaSR-tests-syntax\fP(5) , \fBSAPHanaSR-tests-description\fP(7) ,
\fBSAPHanaSR-tests-angi-ScaleOut_on-fail-fence\fP(7) ,
\fBSAPHanaSR-tests-angi-ScaleUp_on-fail-fence\fP(7) ,
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-showAttr\fP(8)
.PP
.\"
.SH AUTHORS
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2024 SUSE LLC
.br
The package SAPHanaSR-tester comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
458 changes: 458 additions & 0 deletions man-tester/SAPHanaSR-tests-syntax.5

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions man/SAPHanaController-scale-out.7
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.so man7/ocf_suse_SAPHanaController.7
1 change: 1 addition & 0 deletions man/SAPHanaController-scale-up.7
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.so man7/ocf_suse_SAPHana.7
1 change: 1 addition & 0 deletions man/SAPHanaFilesystem.7
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.so man7/ocf_suse_SAPHanaFilesystem.7
85 changes: 51 additions & 34 deletions man/SAPHanaSR-ScaleOut.7
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
.\" Version: 1.001
.\" Version: 1.2
.\"
.TH SAPHanaSR-ScaleOut 7 "09 May 2023" "" "SAPHanaSR-angi"
.TH SAPHanaSR-ScaleOut 7 "02 Dec 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-ScaleOut \- Tools for automating SAP HANA system replication in
scale-out setups.
SAPHanaSR-ScaleOut \- Automating SAP HANA system replication in scale-out setups.
.PP
.\"
.SH DESCRIPTION
.\"
.PP
\fBOverview\fR
.PP
This manual page SAPHanaSR-ScaleOut provides information for setting up
and managing automation of SAP HANA system replication (SR) in scale-out setups.
For scale-up, please refer to SAPHanaSR(7).
For scale-up, please refer to SAPHanaSR(7), see also SAPHanaSR-angi(7).
.PP
System replication will help to replicate the database data from one site to
another site in order to compensate for database failures. With this mode of
@@ -74,7 +73,7 @@ A primary absolutely must never be started, if the cluster does not know
anything about the other site.
On initial cluster start, the cluster needs to detect a valid HANA system
replication setup, including system replication status (SOK) and last primary
timestamp (LPT). This is neccessary to ensure data integrity.
timestamp (LPT). This is necessary to ensure data integrity.
.PP
The rational behind this is shown in the following scenario:
.br
@@ -140,7 +139,7 @@ to repair a local failure.
5. \fBRecovering from failure of master nameserver\fR
.br
If the master nameserver of an HANA database system fails, the HANA will start
the nameserver on another node. Therefore usually up to two nodes are
the nameserver on another node. Therefor usually up to two nodes are
configured as additional nameserver candidates. At least one of them should be
a standby node to optimize failover time. The Linux cluster will detect the
change and move the IP address to the new active master nameserver.
@@ -210,14 +209,14 @@ cluster tests.
.PP
\fB*\fR Be patient. For detecting the overall HANA status, the Linux cluster
needs a certain amount of time, depending on the HANA and the configured
intervalls and timeouts.
intervals and timeouts.
.PP
\fB*\fR Before doing anything, always check for the Linux cluster's idle status,
left-over migration constraints, and resource failures as well as the HANA
landscape status, and the HANA SR status.
.PP
\fB*\fR Manually activating an HANA primary creates risk of a dual-primary
situation. The user is responsible for data integrity.
situation. The user is responsible for data integrity. See also susTkOver.py(7).
.PP
.\"
.SH REQUIREMENTS
@@ -236,22 +235,24 @@ leads to a Linux cluster in either one site or across three sites.
.PP
2. Technical users and groups such as sidadm should be defined locally in
the Linux system. If users are resolved by remote service, local caching is
neccessary. Substitute user (su) to sidadm needs to work reliable and without
necessary. Substitute user (su) to sidadm needs to work reliable and without
customized actions or messages. Supported shell is bash.
.PP
3. Strict time synchronization between the cluster nodes, e.g. NTP.
3. Strict time synchronization between the cluster nodes, e.g. NTP. All nodes of
the Linux cluster have configured the same timezone.
.PP
4. For scale-out there is no other SAP HANA system (like QA) on the nodes
which needs to be stopped during takeover. Both HANA database systems are
running memory-preload. Also MCOS is currently not supported for scale-out.
.PP
5. Only one system replication between the two SAP HANA database systems in
the Linux cluster. Maximum one system replication to an HANA database outside
the Linux cluster.
5. Only one system replication between the two SAP HANA databases in the Linux
cluster. Maximum one system replication to an HANA database outside the Linux
cluster.
.PP
6. The replication mode is either sync or syncmem. Replication mode async is
not supported. The operation modes delta_datashipping, logreplay and
logreplay_readaccess are supported.
6. The replication mode is either sync or syncmem for the controlled replication.
Replication mode async is not supported. The operation modes delta_datashipping,
logreplay and logreplay_readaccess are supported. The operation mode logreplay
is default.
.PP
7. Both SAP HANA database systems have the same SAP Identifier (SID) and
Instance Number (INO).
@@ -275,18 +276,19 @@ that one does not interfere with the Linux cluster. All three clusters
12. The RAs SAPHanaController and SAPHanaToplogy need to be installed on all
cluster nodes, even the majority maker.
.PP
13. Colocation constraints between the SAPHanaController or SAPHana RA and
13. Colocation constraints between the SAPHanaController RA and
other resources are allowed only if they do not affect the RA's scoring.
The location scoring finally depends on system replication status an must not
be over-ruled by additional constraints. Thus it is not allowed to define rules
forcing a SAPHanaController or SAPHana master to follow another resource.
forcing a SAPHanaController promoted instance to follow another resource.
.PP
14. The Linux cluster needs to be up and running to allow HA/DR provider events
being written into CIB attributes. The current HANA SR status might differ
from CIB srHook attribute after cluster maintenance.
.PP
15. Once an HANA system replication site is known to the Linux cluster, that
exact site name has to be used whenever the site is registered manually.
exact site name has to be used whenever the site is registered manually. At any
time only one site is configured as primary replication source.
.PP
16. In two-node HANA scale-out systems only one master nameserver candidate is
configured.
@@ -301,7 +303,7 @@ Tennant-specific takeover groups are not supported. Sharing standby nodes
across sites is not supported.
.PP
20. In MDC configurations the HANA database is treated as a single system
including all database containers. Therefore, cluster takeover decisions are
including all database containers. Therefor, cluster takeover decisions are
based on the complete status independent of the status of individual containers.
.PP
21. If a third HANA site is connected by system replication, that HANA is not
@@ -312,21 +314,37 @@ of a fall-back HA cluster in DR case, that HA cluster needs to be in standby.
resources, OS and Linux cluster. The infrastructure needs to allow these call-outs
to return in time.
.PP
23. The SAP HANA Fast Restart feature on RAM-tmfps as well as HANA on persistent
23. The SAP HANA Fast Restart feature on RAM-tmpfs as well as HANA on persistent
memory can be used, as long as they are transparent to SUSE HA.
.PP
24. The SAPHanaController RA, the SUSE HA cluster and several SAP components
24. The SAP HANA hostname or virtual hostname should follow RFC-952.
.PP
25. The SAP HANA site name is from 2 up to 32 characters long. It starts with a
character or number. Subsequent characters may contain dash and underscore.
.PP
26. The SAPHanaController RA, the SUSE HA cluster and several SAP components
need read/write access and sufficient space in the Linux /tmp filesystem.
.PP
.PP
27. SAP HANA Native Storage Extension (NSE) is supported.
Important is that this feature does not change the HANA topology or interfaces.
In opposite to Native Storage Extension, the HANA Extension Nodes are changing
the topology and thus currently are not supported.
Please refer to SAP documentation for details.
.PP
28. No manual actions must be performed on the HANA database while it is controlled
by the Linux cluster. All administrative actions need to be aligned with the cluster.
See also SAPHanaSR_maintenance_examples(7).
.PP
.\"
.SH BUGS
.\" TODO
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR\fP(7) ,
\fBocf_suse_SAPHanaTopology\fP(7) , \fBocf_suse_SAPHanaController\fP(7) ,
\fBocf_heartbeat_IPaddr2\fP(7) , \fBSAPHanaSR-ScaleOut_basic_cluster\fP(7) ,
@@ -344,10 +362,6 @@ https://documentation.suse.com/sles-sap/ ,
.br
https://www.suse.com/releasenotes/ ,
.br
https://www.susecon.com/doc/2015/sessions/TUT19921.pdf ,
.br
https://www.susecon.com/doc/2016/sessions/TUT90846.pdf ,
.br
https://www.susecon.com/archive-2020.html ,
.br
https://www.susecon.com/archive-2021.html ,
@@ -356,18 +370,21 @@ https://archive.sap.com/documents/docs/DOC-60334 ,
.br
http://scn.sap.com/community/hana-in-memory/blog/2015/12/14/sap-hana-sps-11-whats-new-ha-and-dr--by-the-sap-hana-academy ,
.br
https://blogs.sap.com/2020/01/30/sap-hana-and-persistent-memory/
https://blogs.sap.com/2020/01/30/sap-hana-and-persistent-memory/ ,
.\" TODO SAP notes 3007062 ...
.br
https://www.rfc-editor.org/rfc/rfc952
.PP
.SH AUTHORS
.br
.PP
A.Briel, F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2015-2018 SUSE Linux GmbH, Germany.
.PP
(c) 2015-2017 SUSE Linux GmbH, Germany.
.br
(c) 2019-2023 SUSE LLC
(c) 2018-2024 SUSE LLC
.br
The package SAPHanaSR-angi comes with ABSOLUTELY NO WARRANTY.
.br
247 changes: 146 additions & 101 deletions man/SAPHanaSR-ScaleOut_basic_cluster.7

Large diffs are not rendered by default.

199 changes: 199 additions & 0 deletions man/SAPHanaSR-alert-fencing.8
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
.\" Version: 1.2.4
.\"
.TH SAPHanaSR-alert-fencing 7 "18 Sep 2024" "" "SAPHanaSR"
.\"
.SH NAME
SAPHanaSR-alert-fencing \- Alert agent for cluster fencing alerts.
.PP
.\"
.SH DESCRIPTION
SAPHanaSR-alert-fencing can be used to react on Linux cluster fencing alerts.
.PP
The Linux cluster provides an interface to initiate external actions when a
cluster event occurs (alert). Than the cluster calls an external program (an
alert agent) to handle that alert.
.PP
When the Linux cluster has performed an node fencing, it can call
SAPHanaSR-alert-fencing on each active cluster node. The agent checks whether
the local node belongs to the same HANA site as the fenced node. If so, it asks
the cluster to fence the local node as well.
.PP
This improves four use cases for HANA scale-out:
.br
- HA/DR provider hook script susChkSrv.py action_on_lost=fence
.br
- resource agent SAPHanaController ON_FAIL_ACTION=fence
.br
- resource agent SAPHanaFilesystem ON_FAIL_ACTION=fence
.br
- pacemaker service PCMK_fail_fast=yes
.br
See also manual pages ocf_suse_SAPHanaController(7), ocf_suse_SAPHanaFilesystem(7),
SAPHanaSR-ScaleOut_basic_cluster(7) and susChkSrv.py(7).
.PP
.\"
.SH SUPPORTED PARAMETERS
.TP
\fBtimeout\fR
If the alert agent does not complete within this amount of time, it will be terminated. Optional, default "30s". Example "meta timeout=30s".
.\" .TP
.\" \fBenabled\fR
.\" If false for an alert, the alert will not be used. If true for an alert and false for a particular recipient of that alert, that recipient will not be used. Optional, default "true".
.TP
\fBalert_uptime_threshold\fR
How long a node must be up and running (uptime) before fencing alerts will be processed. This avoids fencing loops. Optional, default "300". Example "attributes alert_uptime_threshold=300".
.\"
.PP
.\"
.SH RETURN CODES
.B 0
Successful program execution.
.br
.B >0
Usage, syntax or execution errors.
.br
In addition log entries are written, which can be scanned by using a pattern
like "SAPHanaSR-alert-fencing".
.PP
.\"
.SH EXAMPLES
.PP
\fB*\fR Example configuration for the fencing alert handler.
.PP
The following lines needs to be added to the cluster´s CIB:
.PP
.RS 2
alert fencing-1 "/usr/bin/SAPHanaSR-alert-fencing" \\
.br
select fencing \\
.br
attributes alert_uptime_threshold=300
.RE
.PP
\fB*\fR Example for configuring the alert agent by using crm.
.PP
Alternate way for configuring the alert agent.
.PP
.RS 2
# crm configure alert fencing-1 "/usr/bin/SAPHanaSR-alert-fencing" select fencing
.RE
.PP
\fB*\fR Showing all configured alert agents.
.PP
.RS 2
# crm configure show type:alert
.RE
.PP
\fB*\fR Showing agent messages.
.PP
.RS 2
# grep SAPHanaSR-alert-fencing /var/log/messages
.RE
.PP
\fB*\fR Showing history of fence actions and cleaning it up.
.PP
Example node with failed fencing action is node22.
.PP
.RS 2
# crm_mon -1 --include=none,fencing
.br
# stonith_admin --cleanup --history node22
.RE
.PP
\fB*\fR Example for manually fencing an node.
.PP
This could be done for testing the SAPHanaSR-alert-fencing agent integration.
This test should not be done on production systems.
See manual page crm(8) for details.
Fenced node is node1.
.br
Note: Understand the impact before trying.
.PP
.RS 2
# crm node fence node1
.RE
.PP
\fB*\fR Example for sudo permissions in /etc/sudoers.d/SAPHanaSR .
.PP
See also manual page sudoers(5).
.PP
.RS 2
# SAPHanaSR-alert-fencing needs
.br
hacluster ALL=(ALL) NOPASSWD: /usr/sbin/crm --force node fence *
.RE
.PP
.\"
.SH FILES
.TP
/usr/bin/SAPHanaSR-alert-fencing
the alert agent
.TP
/run/crm/SAPHanaSR_site_cache
the internal cache for host to site relation - do not touch this file
.TP
/etc/sysconfig/sbd
config file for SBD daemon
.TP
/etc/sysconfig/pacermaker
config file for pacemaker daemon
.PP
.\"
.SH REQUIREMENTS
1. Pacemaker 2.1.2 or newer.
.PP
2. SAP HANA scale-out performance-optimized scenario. No HANA host auto-failover,
thus no standby nodes.
.PP
3. Only one SID is controlled by the Linux cluster.
.PP
4. Site names and host names should not be changed.
.PP
5. No other alert agent should be configured for the fencing alert.
.PP
6. User hacluster is member of group haclient. Both are defined locally on each cluster nodes.
.PP
7. User hacluster needs password-less sudo permission on "/usr/sbin/crm --force node fence *".
.PP
8. Concurrent fencing is configured, see manual page SAPHanaSR-ScaleOut_basic_cluster(7).
.PP
9. SAPHanaFilesystem RA with monitor operations is active.
.PP
10. Automatic restart of just fenced nodes should be disabled by adapting
SBD_START_MODE. In case of automatic restart of just fenced nodes, it might be
necessary to adapt SBD_START_DELAY in order to avoid fencing loops. See manual
page sbd(8).
.PP
11. The alert agent unconditionally executes fencing. The alert agent relies on
the preceding fencing decision. Neither site role nor SR state is checked.
.PP
12. The alert agent runtime almost completely depends on call-outs to OS and
Linux cluster.
.\"
.SH BUGS
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-ScaleOut\fP(7) ,
\fBocf_suse_SAPHanaController\fP(7) , \fBocf_suse_SAPHanaFilesystem\fP(7) ,
\fBsusChkSrv.py\fP(7) , \fBcrm\fP(8) , \fBsbd\fP(8) , \fBsudoers\fP(5) ,
.br
https://clusterlabs.org/pacemaker/doc/2.1/Pacemaker_Administration/singlehtml/#alert-agents
.PP
.\"
.SH AUTHORS
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.br
(c) 2024 SUSE LLC
.br
SAPHanaSR-alert-fencing comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
189 changes: 189 additions & 0 deletions man/SAPHanaSR-angi-scenarios.7
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
.\" Version: 1.2
.\"
.TH SAPHanaSR-angi-scenarios 7 "05 Nov 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-angi-scenarios \- SAP HANA system replication scenarios.
.PP
.\"
.SH DESCRIPTION
.PP
SAPHanaSR-angi covers two topologies, scale-up and scale-out. On each topology,
several scenarios are supported. Finally, for most scenarios, two variants are
possible.
.PP
\fB* Scenarios overview\fB
.PP
The table shows the known SAPHanaSR-angi HA scenarios for HANA system replication
for the two HANA topologies. The current support status is also shown.
.PP
.\" see man tbl and https://technicallywewrite.com/2023/09/23/tblexample
.TS
tab(@) allbox center;
cb cb cb
c c c
^ c ^
^ c ^
^ c c
^ c ^
^ c ^
^ c ^
^ c c
^ c ^
c c c
^ c ^
^ c ^
^ c c
^ c c
^ c ^
^ c ^
^ c ^.
Topology@Scenario@Status
Scale-Up@perf-opt@Supported
@perf-opt, 2nd site read-enabled@Supported
@perf-opt, multi-target, 3rd site outside cluster@Supported
@perf-opt, multi-SID@Undocumented
@perf-opt, w. S/4 ENSA2 in same cluster@Undocumented
@cost-opt@Undocumented
@cost-opt, multi-target@Non-supported
@perf-opt, multi-target, 3rd site inside cluster@Non-supported
@two perf-opt clusters connected@Non-supported
Scale-Out@perf-opt, up to 12 nodes, no standby (BW)@Supported
@perf-opt, 4 nodes, 2nd site read-enabled (ERP)@Supported
@perf-opt, multi-target, 3rd site outside cluster@Supported
@perf-opt, up to 30 nodes w. standby (BW)@Undocumented
@perf-opt, multi-target, 3rd site inside cluster@Non-supported
@perf-opt, multi-SID@Non-supported
@cost-opt@Non-supported
@two perf-opt clusters connected@Non-supported
.TE
.PP
.RS 4
Note: One additional Linux cluster node at 3rd site is needed for all scale-out scenarios.
.RE
.\" TODO align wording with "Supported HA Solutions"
.PP
\fBSupported\fP - the scenario is known to work for the given topology. The
setup has been tested and is documented in a setup guide. It is supported by
SUSE.
.PP
\fBUndocumented\fP - the scenario is expected to work for the given topology.
The setup is currently not documented in a setup guide. SUSE services are
prepared to help with implementation. Once the setutp is working, it could be
supported by SUSE.
.PP
\fBNon-supported\fP - the scenario is expected not to work. It is not supported
by SUSE.
.PP
For details on requirements and configuration of the scenarios, please refer to manual pages SAPHanaSR-angi(7), SAPHanaSR(7) and SAPHanaSR-ScaleOut(7), as well as the respective setup guides.
.PP
\fB* Scenario notation\fB
.PP
It might help to describe scenarios in a pseudo-visualising notation.
.PP
.TS
tab(@) allbox center;
cb cb
c c
c c
c c
c c
c c
c c
c c
c c.
Symbol@Meaning
[ ]@Linux cluster
A B C@master nameserver node
a b c@worker node
_ @ standby node
=>@syncronous replication
->@asyncronous replication
'@primary IP address
"@secondary (read-enabled) IP address
.TE

.PP
The scale-up performance-optimised multi-target scenario can be noted as:
.br
[ A' => B ] -> C
.PP
\fB* Variants overview\fB
.PP
.\" TODO variants conservative, progressive
SAPHanaSR-angi allows to define different variants of reaction on failures.
.PP
\fBConservative\fR – default configuration
.br
The cluster is patient, it prefers stopping HANA over fencing nodes. It does
not react on filesystem failures.
.PP
\fBProgressive\fR – alternative configuration
.br
The cluster reacts on failures of HANA or filesystem with fencing all nodes
of the affected site. Takeover time might be further reduced by using diskless SBD.
.PP
For details on configuration of the variants, please refer to manual pages
ocf_suse_SAPHanaController(7), ocf_suse_SAPHana(7), ocf_suse_SAPHanaFilesystem(7), SAPHanaSR-alert-fencing(8), susChkSrv.py(7),
SAPHanaSR_basic_cluster(7), SAPHanaSR-ScaleOut_basic_cluster(7).
.PP
.\"
.SH EXAMPLES
.PP
\fB* Examples for supported scenarios\fR
.TP
Scale-up performance-optimised multi-target
[ A' => B ] -> C
.TP
Scale-up cost-optimised
[ A' => B,Q ]
.TP
Scale-out performance-optimised multi-target read-enabled (ERP)
[ 'Aa => "Bb ] -> Cc -> Dd
.TP
Scale-out performance-optimised 8-node w. standby (BW)
[ 'Aaaaaaa_ => Bbbbbbb_ ]
.PP
\fB* Examples for non-supported scenarios\fR
.TP
Scale-up performance-optimised multi-target 3rd site in cluster
[ A' => B => C ]
.TP
Scale-out performance-optimised two clusters connected
[ 'Aa => Bb ] -> [ 'Cc => Dd ]
.PP
.\"
.SH BUGS
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR\fP(7) , \fBSAPHanaSR-ScaleOut\fP(7) ,
\fBocf_suse_SAPHanaController\fP(7) , \fBocf_suse_SAPHana\fP(7) ,
\fBocf_suse_SAPHanaFilesystem\fP(7) , \fBSAPHanaSR-alert-fencing\fP(8) ,
\fBsusChkSrv.py\fP(7) , \fBSAPHanaSR_basic_cluster\fP(7) ,
\fBSAPHanaSR-ScaleOut_basic_cluster\fP(7) ,
.br
https://documentation.suse.com/sles-sap/sap-ha-support/html/sap-ha-support/article-sap-ha-support.html ,
.br
https://documentation.suse.com/sbp/sap-15/
.PP
.\"
.SH AUTHORS
.PP
A.Briel, F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.PP
(c) 2024 SUSE LLC
.br
The package SAPHanaSR-angi comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
26 changes: 13 additions & 13 deletions man/SAPHanaSR-angi.7
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.\" Version: 1.001
.\" Version: 1.2
.\"
.TH SAPHanaSR 7 "08 May 2023" "" "SAPHanaSR-angi"
.TH SAPHanaSR 7 "04 Nov 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR-angi \- SAP HANA SR - Advanced Next Generation Interface.
@@ -37,13 +37,15 @@ The following SAP HANA SR scenarios are possible with SAPHanaSR-angi:
* scale-out single-tenant or multi-tenant (MDC low isolation) for all the above
.RE
.PP
.B SAPHanaSR-angi is shipped as technology preview.
See manual page SAPHanaSR-angi-scenarios(7) for details.
.PP
.\"
.SH REQUIREMENTS
.\"
Please find information on specific requirements of Linux HA scenarios for SAP HANA
SR scale-up and scale-out setups in the REQUIREMENTS section of SAPHanaSR(7) and
SAPHanaSR-ScaleOut(7). For the HA/DR provider hooks scripts details are provided in
SAPHanaSR-ScaleOut(7). For the HA/DR provider hooks scripts details are provided
in
their respective manual pages susHanaSR.py(7), susTkOver.py(7), susChkSrv.py(7),
susCostOpt.py(7) et al.
.PP
@@ -53,14 +55,17 @@ least Linux cluster CIB attributes, sudoers permissions and HANA global.ini.
.PP
.\"
.SH BUGS
.\"
.\" TODO
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.\"
\fBSAPHanaSR\fP(7) , \fBSAPHanaSR-ScaleOut\fP(7) ,
\fBSAPHanaSR-angi-scenarios\fP(7) ,
\fBocf_suse_SAPHanaTopology\fP(7) , \fBocf_suse_SAPHanaController\fP(7) ,
\fBocf_heartbeat_IPaddr2\fP(7) ,
\fBSAPHanaSR_basic_cluster\fP(7) ,
@@ -78,12 +83,6 @@ https://documentation.suse.com/sles-sap/ ,
.br
https://www.suse.com/releasenotes/ ,
.br
https://www.susecon.com/doc/2015/sessions/TUT19921.pdf ,
.br
https://www.susecon.com/doc/2016/sessions/TUT90846.pdf ,
.br
https://www.suse.com/media/presentation/TUT90846_towards_zero_downtime%20_how_to_maintain_sap_hana_system_replication_clusters.pdf ,
.br
http://scn.sap.com/community/hana-in-memory/blog/2014/04/04/fail-safe-operation-of-sap-hana-suse-extends-its-high-availability-solution ,
.br
http://scn.sap.com/docs/DOC-60334 ,
@@ -94,14 +93,15 @@ https://wiki.scn.sap.com/wiki/display/ATopics/HOW+TO+SET+UP+SAPHanaSR+IN+THE+COS
.br
https://blogs.sap.com/2020/01/30/sap-hana-and-persistent-memory/
.PP
.\"
.SH AUTHORS
.br
.\"
A.Briel, F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.br
(c) 2022-2023 SUSE LLC
.\"
(c) 2022-2024 SUSE LLC
.br
The package SAPHanaSR-angi comes with ABSOLUTELY NO WARRANTY.
.br
10 changes: 3 additions & 7 deletions man/SAPHanaSR-filter.8
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.\" Version: 1.001
.\" Version: 1.2
.\"
.TH SAPHanaSR-filter 8 "13 Apr 2023" "" "SAPHanaSR"
.TH SAPHanaSR-filter 8 "02 Dec 2024" "" "SAPHanaSR"
.\"
.SH NAME
SAPHanaSR-filter \- Filter for output of SAPHanaSR-showAttr and SAPHanaSR-replay-archive.
@@ -71,18 +71,14 @@ https://documentation.suse.com/sbp/all/?context=sles-sap ,
.br
https://documentation.suse.com/sles-sap/ ,
.br
https://www.susecon.com/doc/2015/sessions/TUT19921.pdf ,
.br
https://www.susecon.com/doc/2016/sessions/TUT90846.pdf ,
.br
https://www.susecon.com/archive-2020.html
.\"
.SH AUTHORS
F.Herschel, L.Pinne.
.\"
.SH COPYRIGHT
.br
(c) 2018-2023 SUSE LLC
(c) 2018-2024 SUSE LLC
.br
SAPHanaSR-filter comes with ABSOLUTELY NO WARRANTY.
.br
19 changes: 15 additions & 4 deletions man/SAPHanaSR-manageProvider.8
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.\" Version: 1.001
.\"
.TH SAPHanaSR-manageProvider 8 "13 Apr 2023" "" "SAPHanaSR"
.TH SAPHanaSR-manageProvider 8 "13 Jan 2024" "" "SAPHanaSR"
.\"
.SH NAME
SAPHanaSR-manageProvider \- adds, updates, removes or shows HADR provider sections for SAP HANA
@@ -39,7 +39,7 @@ add the section given in the template file to configuration.
remove the section given in the template file from configuration.
.TP 4
\fB --reconfigure\fR
not implemented yet, use 'hdbnsutil -reloadHADRProviders' instead.
apply change to running HANA, like 'hdbnsutil -reloadHADRProviders'.
.TP 4
\fB --show --provider\fR=<provider>
show the section for given provider from configuration.
@@ -56,6 +56,14 @@ Successful program execution.
Usage, syntax or execution errors.
.\"
.SH EXAMPLES
\fB*\fR Show names of all HA/DR provider sections in global.ini.

Might be useful to see whether sections are named lower/upper/camel-case.
SID is HA1.
.PP
.RS 2
# su - ha1adm -c "cdcoc; grep ^\\[ha_dr_provider_\ global.ini"
.RE
.PP
\fB*\fR Show the global.ini section ha_dr_provider_suschksrv, if available.

@@ -133,7 +141,10 @@ the SAP python script to interact with global.ini.
.SH BUGS
Command hangs, if it needs an input file and you do not specify the file.
.br
\-\-reconfiure does not work yet.
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
\fBSAPHanaSR-ScaleOut\fP(7) , \fBSAPHanaSR\fP(7) ,
@@ -156,7 +167,7 @@ https://www.susecon.com/archive-2021.html
F.Herschel, L.Pinne.
.\"
.SH COPYRIGHT
(c) 2022-2023 SUSE LLC
(c) 2022-2024 SUSE LLC
.br
SAPHanaSR-manageProvider comes with ABSOLUTELY NO WARRANTY.
.br
16 changes: 6 additions & 10 deletions man/SAPHanaSR-monitor.8
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.\" Version: 0.180.0
.\" Version: 1.2
.\"
.TH SAPHanaSR-monitor 8 "27 May 2022" "" "SAPHanaSR"
.TH SAPHanaSR-monitor 8 "02 Dec 2023" "" "SAPHanaSR"
.\"
.SH NAME
SAPHanaSR-monitor \- Display status of SAP HANA system replication automation (SAPHanaSR).
@@ -66,7 +66,7 @@ show status of SAP HANA system replication one time.
/usr/bin/SAPHanaSR-monitor
the program itself.
.TP
/usr/lib/SAPHanaSR or /usr/lib/SAPHanaSR-ScaleOut
/usr/lib/SAPHanaSR-angi/
directory with function libraries.
.TP
/srv/www/hawk/public/SAPHanaSR/index.html
@@ -81,17 +81,13 @@ script is under development.
Feedback is welcome, please mail to feedback@suse.com.
.\"
.SH SEE ALSO
\fBocf_suse_SAPHana\fP(7) or \fBocf_suse_SAPHanaController\fP(7) , \fBocf_suse_SAPHanaTopology\fP(7) ,
\fBocf_suse_SAPHanaController\fP(7) , \fBocf_suse_SAPHanaTopology\fP(7) ,
\fBSAPHanaSR-showAttr\fP(8) , \fBSAPHanaSR-filter\fP(8) , \fBcibadmin\fP(8) ,
.br
https://documentation.suse.com/sbp/sap ,
https://documentation.suse.com/sbp/sap/ ,
.br
https://documentation.suse.com/sles-sap/ ,
.br
https://www.susecon.com/doc/2015/sessions/TUT19921.pdf ,
.br
https://www.susecon.com/doc/2016/sessions/TUT90846.pdf ,
.br
https://www.susecon.com/archive-2020.html ,
.br
https://www.susecon.com/archive-2021.html
@@ -104,7 +100,7 @@ F.Herschel, L.Pinne.
.br
(c) 2015-2017 SUSE Linux GmbH, Germany.
.br
(c) 2018-2022 SUSE LLC.
(c) 2018-2024 SUSE LLC.
.br
SAPHanaSR-monitor comes with ABSOLUTELY NO WARRANTY.
.br
101 changes: 59 additions & 42 deletions man/SAPHanaSR-replay-archive.8
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
.\" Version: 1.001
.\"
.TH SAPHanaSR-replay-archive 8 "13 Apr 2023" "" "SAPHanaSR"
.TH SAPHanaSR-replay-archive 8 "09 Feb 2024" "" "SAPHanaSR"
.\"
.SH SYNOPSIS
\fBSAPHanaSR-replay-archive\fR [ --help | --version ]
.br
\fBSAPHanaSR-replay-archive\fR [--sid=LIST_OF_SIDS] CRM_REPORT_ARCHIVE
\fBSAPHanaSR-replay-archive\fR --sid \fISID\fR --cib \fICIB\fR [\fICIB\fR [...]]
[--format \fIFORMAT\fR] [--select \fICOLUMN\fR] [--sort \fISORT\fR]
[--properties \fIPROPERTIES\fR] [--from \fIFROM\fR] [--to \fITO\fR]
.br
\fBSAPHanaSR-replay-archive\fR [--sid=LIST_OF_SIDS] --pengine=PATH_TO_PENGINE_FILES

.\"
.SH DESCRIPTION
SAPHanaSR-replay-archive can be used to re-play SAPHanaSR status changes info
@@ -18,18 +20,36 @@ files and shows status information in historical order. Basically SAPHanaSR-show
is called for each pe-input file.
.\"
.SH OPTIONS
.HP
\fB --help\fR
show help.
.HP
\fB --version\fR
show version.
.HP
\fB --sid=\fRLIST_OF_SIDS
Option to specify a list of SIDs
.HP
\fB --format=\fRFORMAT
Output format (tables, book or script).
.TP
\fB--help\fR
show help
.TP
\fB--version\fR
show version
.TP
\fB--sid\fR \fISID\fR
specify the SID to check for
.TP
\fB--cib\fR [ \fICIB\fR [\fICIB\fR [...]] | ./pengine/* ]
specify the path to CIB file(s)
.TP
\fB--format\fR [ table | path | script | json ]
output format, default is table.
.TP
\fB--from\fR "\fIYYYY-MM-DD HH:MM:SS\fR"
from which point in time to show
.TP
\fB--to\fR "\fIYYYY-MM-DD HH:MM:SS\fR"
to which point in time to show
.TP
\fB--sort\fR \fICOLUMN\fR
specify the column name to sort by
.TP
\fB--select\fR [ default | test | minimal | sr | all ]
selecton of attributes to be printed, default is default
.TP
\fB--properties\fR \fIPROPERTIES\fR
specify the properties file
.\"
.SH RETURN CODES
.B 0
@@ -39,25 +59,25 @@ Successful program execution.
Usage, syntax or execution errors.
.\"
.SH EXAMPLES
.TP
* Replay SAPHanaSR-showAttr data from all pe-input files in hb_report-06-06-2019.tar.bz2 .
# SAPHanaSR-replay-archive hb_report-06-06-2019.tar.bz2
.TP
* Show system replication status history from an HANA scale-out cluster.
# SAPHanaSR-replay-archive hb_report-06-06-2019.tar.bz2 | grep ^global
.\".TP
.\"* Show system replication status history from an HANA scale-up cluster.
.\"# SAPHanaSR-replay-archive hb_report-08-05-2019.tar.bz2 | grep -A13 ^global SAPHanaSR-replay-archive.txt | awk '$1=="global"{print "@",$0}; $11=="SOK"||$11=="SFAIL"||$11=="SWAIT"||$11=="WAIT4PRIM"{print $11}' | tr -d "\\n" | tr "@" "\\n"
.\".TP
.\"* Show system replication primary from an HANA scale-up cluster.
.\"# SAPHanaSR-showAttr hb_report-08-05-2019.tar.bz2 | grep -A13 ^global SAPHanaSR-replay-archive.txt | awk '$1=="global"{print "@",$0}; $2=="PROMOTED"{print $1,$2}' | tr -d "\\n" | tr "@" "\\n"
.TP
* Filter replay of SAPHanaSR actions from hb_report for a specific host.
# SAPHanaSR-replay-archive --format=script hb_suse.tar.bz2 |\\
SAPHanaSR-filter --search='Hosts/lv9054/role' --filterDouble
.TP
* Replay SAPHanaSR-showAttr data from all pe-input files in local directory /var/lib/pacemaker/pengine/.
# SAPHanaSR-replay-archive --pengine=/var/lib/pacemaker/pengine/
.PP
* Replay SAPHanaSR-showAttr data from crm_report.
.PP
Report has been extracted into directory crm_report-08-05-2024, SID is EVA,
DC node is node01.
.PP
.RS 2
# SAPHanaSR-replay-archive --sid EVA --cib crm_report-08-05-2024/node1/pengine/*
.RE
.PP
* Replay SAPHanaSR-showAttr data from crm_report, use parseable output format.
.PP
Report has been extracted into directory crm_report-08-05-2024, SID is EVA,
DC node is node01, output format is "script".
.PP
.RS 2
# SAPHanaSR-replay-archive --sid EVA --cib crm_report-08-05-2024/node1/pengine/* --format script
.RE
.PP
.\"
.SH FILES
.TP
@@ -70,26 +90,23 @@ the working horse.
/var/lib/pacemaker/pengine/
usual local pengine log directory.
.TP
<CRM_REPORT_ARCHIVE>-tmp/
per call created working directory.
.TP
<CRM_REPORT_ARCHIVE>-tmp/hb_report_log/<NODE>/pengine/pe-input-<NUM>.bz2
<CRM_REPORT_DIR>/<DC_NODE>/pengine/pe-input-<NUM>.bz2
extracted pe-input files.
.TP
<CRM_REPORT_ARCHIVE>-tmp/hb_report_log/<NODE>/cib.xml
<CRM_REPORT_DIR><DC_NODE>/cib.xml
extracted CIB file.
.\"
.SH BUGS
Feedback is welcome, please mail to feedback@suse.com.
.SH SEE ALSO
\fBSAPHanaSR\fP(7), \fBSAPHanaSR-ScaleOut\fP(7) , \fBSAPHanaSR-showAttr\fP(8) ,
\fBSAPHanaSR-filter\fP(8) , \fBcrm_report\fP(8) , \fBcrm_simulate\fP(8)
\fBSAPHanaSR-angi\fP(7), \fBSAPHanaSR-showAttr\fP(8) ,
\fBcrm_report\fP(8) , \fBcrm_simulate\fP(8)
.\"
.SH AUTHORS
A.Briel, F.Herschel, L.Pinne.
.\"
.SH COPYRIGHT
(c) 2019-2023 SUSE LLC
(c) 2019-2024 SUSE LLC
.br
SAPHanaSR-replay-archive comes with ABSOLUTELY NO WARRANTY.
.br
99 changes: 65 additions & 34 deletions man/SAPHanaSR-showAttr.8
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
.\" Version: 1.001
.\" Version: 1.2
.\"
.TH SAPHanaSR-showAttr 8 "08 May 2023" "" "SAPHanaSR"
.TH SAPHanaSR-showAttr 8 "02 Dec 2024" "" "SAPHanaSR"
.\"
.SH NAME
SAPHanaSR-showAttr \- Shows Linux cluster attributes for SAP HANA system replication.
.\"
.SH SYNOPSIS
\fBSAPHanaSR-showAttr\fR [ --help | --version | --path2table ]
\fBSAPHanaSR-showAttr\fR [ --help | --version ]
.br
\fBSAPHanaSR-showAttr\fR [ --sid=SID[:INO] ] [ --select=SELECTION ] [ --sort=FIELD ] [ --format=FORMAT ] [ --cib=OFFLINE_CIB_FILE ]
\fBSAPHanaSR-showAttr\fR [ --sid \fISID\fR ] [ --select \fISELECT\fR ]
[ --sort \fISORT\fR ] [ --format \fIFORMAT\fR ] [ --cib \fIOFFLINE_CIB_FILE\fR ]
.\"
.SH DESCRIPTION
SAPHanaSR-showAttr shows Linux cluster attributes for SAP HANA system replication automation.
@@ -27,14 +28,16 @@ Global section
.br
global (\fBGlobal\fP)
.br
date and time of record (\fBcib-time\fP)
sequence number of record (\fBcib-update\fP)
.br
maintenance status of Linux cluster (\fBmaintenance\fP)
.br
filter for resource agent logging (\fBfilter\fP)
.br
.\" TODO Linux cluster scale-out multi-target support (\fBmts\fP)
.\" .br
designated coordinater node id (\fBdcid\fP)
.br
HANA primary replication site (\fBprim\fP)
.br
HANA secondary replication site (\fBsec\fP)
@@ -50,6 +53,10 @@ Resources section
name of Linux cluster resources (\fBResources\fP)
.br
maintenance status of Linux cluster resources (\fBmaintenance\fP)
.br
promotability of Linux cluster clone resources (\fBpromotable\fP)
.br
target role of the Linux cluster resources (\fBtarget-role\fP)
.TP
Sites section
HANA site name (\fBSites\fP)
@@ -62,7 +69,7 @@ HANA current master nameserver for that site (\fBmns\fP)
.br
HANA replication operation mode (\fBopMode\fP)
.br
HANA system replication status from HA/DR provider hook (\fBsrHook\fP)
HANA system replication status from srConnectionChanged() (\fBsrHook\fP)
.br
HANA system replication mode (\fBsrMode\fP)
.br
@@ -90,9 +97,9 @@ HANA site where the host sits (\fBsite\fP)
.br
maintenance state of Linux cluster node (\fBstandby\fP)
.br
HANA system replication takeover action, indicated by preTakeover() (\fBsra\fP)
HANA system replication takeover action from preTakeover() (\fBsra\fP)
.br
HANA system replication takeover action history, (\fBsrah\fP)
HANA system replication takeover action history (\fBsrah\fP)
.br
Linux cluster node fence status (\fBterminate\fP)
.br
@@ -124,6 +131,8 @@ Hostnames of HANA nodes managed by the Linux cluster.
The hostname has to follow UNIX RFC 1178. Additional rules specific to SAP
apply. E.g. length of hostname is limited to 13 characters.
.\" TODO SAP note.
,\" TODO HANA installation guide says: 64 chars
.\" https://help.sap.com/docs/SAP_HANA_PLATFORM/2c1988d620e04368aa4103bf26f17727/a11bb836086748ae98d7d4bc1efdc79f.html
.\" TODO still using remoteHost?
See also the fields remoteHost and vhost.
The Hosts section shows one line per host, containing details on that host and
@@ -234,6 +243,25 @@ The attribute is shown after it has been changed from the default.
The field might appear or disappear, depending on cluster maintenance tasks.
See also the standby attribute below.
.PP
.B promotable
- promotability of Linux cluster clone resource

Value: [ true ]

This is a Linux cluster clone resource attribute. It is set as resource configuration
meta attribute. The attribute is shown after it has been changed from the default.
For the SAPHanaController multi-state clone resource this has to be "true". See
also ocf_suse_SAPHanaController(7).
.PP
.B target-role
- target role of the Linux cluster promotable clone resources

Value: [ started | disabled ]

Should the resource be started or stopped (disabled) by the Linux cluster.
The attribute is shown after it has been changed from the default.
The field might appear or disappear, depending on cluster maintenance tasks.
.PP
.B filter
- SAPHanaController filter for logging

@@ -267,12 +295,14 @@ Value: [ 4 | 3 | 2 | 1 | 0 ]
This field contains the return code of landscapHostConfiguration.py. The
parameter does not tell you if the secondary system is ready for a takeover.
The meaning is different from common Linux return codes.
The SAPHanaController and SAPHanaTopology RAs will interpret return code 0 as
FATAL, 1 as NOT-RUNNING (or ERROR) and return codes 2+3+4 as RUNNING.
.br
4 = OK - Everything looks perfect on the HANA primary.
.br
3 = WARNING - A HANA Host Auto-Failover is taking place.
3 = WARNING - An internal HANA action is ongoing, e.g. host auto-failover.
.br
2 = INFO - The landscape is completely functional, but the actual role of the host differs from the configured role.
2 = INFO - The landscape is completely functional, but the actual host role differs from the configured role.
.br
1 = DOWN - There are not enough active hosts.
.br
@@ -425,7 +455,7 @@ The 4th value (PRIM) just indicates an HANA SR primary.
.B sra
- HANA system replication action

Value: [ T | R | - ]
Value: [ T | R | F | - ]

The node attribute system replication action is checked by the HA/DR provider susTkOver.py using the API
method preTakeover(). It is set by the SAPHanaController resource agent.
@@ -436,12 +466,14 @@ T = Takeover on new primary (sr_takeover) ongoing.
.br
R = Registration on new secondary (sr_register) ongoing.
.br
F = Takeover failed.
.br
- = No action pending.
.PP
.B srah
- HANA system replication action history

Value: [ T | R | - ]
Value: [ T | R | F | - ]

The node attribute system replication action history stores actions in CIB
attributes for later use, for root cause analysis.
@@ -500,24 +532,21 @@ show help.
\fB --version\fR
show version.
.TP 4
\fB --path2table\fR
convert script-style input pipe back into normal output.
.TP 4
.\fB --select=\fISELECTION\fR
\fB --select\fR \fISELECT\fR
.\" TODO explain meaning of values
show selected information only. Allowed values: [ all | default | minimal | sr ]. Default is default.
show selected information only. Allowed values: [ all | default | minimal | sr | cluster | cluster2 | cluster3 | sitelist ]. Default is default.
.TP 4
\fB --sid=\fISID\fR[:\fIINO\fR]
\fB --sid\fR \fISID\fR
use SAP system ID \fISID\fR. Should be autodetected, if there is only one SAP HANA instance installed on the local cluster node. The SAP system ID is a 3 alphanum string with a valid SAP system name like SLE, HAE, FH1, C11, or P42.
Optional: Use SAP instance number \fIINO\fR. Should be autodetected, if there is only one SAP HANA instance installed on the local cluster node. The SAP instance number must be represented by a two digit numer like 00, 05 or 42. Some numbers ares not allowed, e.g. 98.
\." Optional: Use SAP instance number \fIINO\fR. Should be autodetected, if there is only one SAP HANA instance installed on the local cluster node. The SAP instance number must be represented by a two digit numer like 00, 05 or 42. Some numbers ares not allowed, e.g. 98.
.TP 4
--sort=\fIFIELD\fR
\fB --sort\fR \fIFIELD\fR
sort Hosts section table by field. Allowed values: [ roles | site ]. Default is sort by hostnames.
.TP 4
\fB --format=\fIFORMAT\fR
output format. Allowed values: [ script | tables ]. Default is tables.
\fB --format\fR \fIFORMAT\fR
output format. Allowed values: [ script | tables | json | tester | csv | cache ]. Default is tables.
.TP 4
\fB --cib=\fIOFFLINE_CIB_FILE\fR
\fB --cib\fR \fIOFFLINE_CIB_FILE\fR
read data from given offline CIB file.
.\"
.SH RETURN CODES
@@ -532,27 +561,33 @@ Usage, syntax or execution errors.
# SAPHanaSR-showAttr
show all SAPHanaSR attributes and relevant cluster maintenance states.
.br
If the roles sub-fields are 1:P:::: landscapeHostConfiguration.py has not been able to detect the HANA roles during last recent RA monitor operation. Likely HANA was down or sudo <sid>adm failed.
If the roles sub-fields are :::: landscapeHostConfiguration.py has not been able to detect the HANA roles during last recent RA monitor operation. Likely HANA was down or sudo <sid>adm failed.
.TP 4
# SAPHanaSR-showAttr --sort=roles
# SAPHanaSR-showAttr --sort roles
show all SAPHanaSR attributes in the cluster and sort host table output by roles.
.TP 4
# SAPHanaSR-showAttr --sid=HA1:10 --cib=./hb_report-17-07-2019/grauenstein01/cib.xml
# SAPHanaSR-showAttr --sid HA1 --cib ./hb_report-17-07-2019/grauenstein01/cib.xml
show all SAPHanaSR attributes for SAP System ID HA1 and instance number 10 from given CIB file.
.TP 4
# SAPHanaSR-showAttr | grep -e master: -e worker: -e slave:
show SAPHanaSR promotion scores on running nodes.
.TP 4
# SAPHanaSR-showAttr --format=script | egrep -v '/(version|op_mode|vhost|remoteHost|node_state|site)=' | SAPHanaSR-showAttr --path2table
# SAPHanaSR-showAttr --format script | egrep -v '/(version|op_mode|vhost|remoteHost|node_state|site)=' | SAPHanaSR-showAttr --path2table
reduce output to selected fields.
.TP 4
# watch -n9 "crm_mon -1r --include=none,nodes,resources,failures;echo; \\
.br
SAPHanaSR-showAttr;cs_clusterstate -i|grep -v '#'"
.br
display comprehensive overview on Linux cluster and HANA resources, update every nine seconds.
.\"
.SH FILES
.TP
/usr/bin/SAPHanaSR-showAttr
the program itself.
.TP
/usr/lib/SAPHanaSR-angi/SAPHanaSRTools.pm
needed functions.
/usr/lib/SAPHanaSR-angi/
needed libraries.
.TP
/usr/sap/hostctrl/exe/saphostctrl
the SAP host control command.
@@ -579,10 +614,6 @@ https://documentation.suse.com/sbp/sap/ ,
.br
https://documentation.suse.com/sles-sap/ ,
.br
https://www.susecon.com/doc/2015/sessions/TUT19921.pdf ,
.br
https://www.susecon.com/doc/2016/sessions/TUT90846.pdf ,
.br
https://www.susecon.com/archive-2020.html
.\"
.SH AUTHORS
@@ -593,7 +624,7 @@ A.Briel, F.Herschel, L.Pinne.
.br
(c) 2015-2017 SUSE Linux GmbH, Germany.
.br
(c) 2018-2023 SUSE LLC
(c) 2018-2024 SUSE LLC
.br
SAPHanaSR-showAttr comes with ABSOLUTELY NO WARRANTY.
.br
284 changes: 284 additions & 0 deletions man/SAPHanaSR-upgrade-to-angi-demo.8
Original file line number Diff line number Diff line change
@@ -0,0 +1,284 @@
.\" Version: 1.001
.\"
.TH SAPHanaSR-upgrade-to-angi-demo 8 "08 Mar 2024" "" "SAPHanaSR"
.\"
.SH NAME
SAPHanaSR-upgrade-to-angi-demo \- How to upgrade from SAPHanaSR to SAPHanaSR-angi.
.PP
.\"
.SH SYNOPSIS
\fBSAPHanaSR-upgrade-to-angi-demo\fR [ --help | --version | --list | --check | --erase | --upgrade ]
.br
\fBSAPHanaSR-upgrade-to-angi-demo\fR --run \fIFUNCTION\fP [ \fIFUNCTION\fP [ ... ]]
.\"
.SH DESCRIPTION
.PP
SAPHanaSR-upgrade-to-angi-demo demonstrates how to upgrade from SAPHanaSR to
SAPHanaSR-angi. The script collects information from an Linux HA cluster with
SAPHanaSR. Based on that data it suggests step by step the commands to upgrade
the cluster. The running configuration is not changed. See also manual page
SAPHanaSR_upgrade_to_angi(7).
.PP
.B SAPHanaSR-upgrade-to-angi-demo is shipped as technology preview.
.PP
.\"
.SH OPTIONS
.TP 4
\fB --help\fP
show help.
.TP 4
\fB --version\fP
show version.
.TP 4
\fB --check\fP
do some basic checks on configuration and status of Linux cluster.
.TP 4
\fB --erase\fP
show demo for removing SAPHanaSR.
.TP 4
\fB --list\fP
list SAPHanaSR-upgrade-to-angi-demo functions.
.TP 4
\fB --run \fP \fIFUNCTION\fP [ \fIFUNCTION\fP [ ... ]]
run given function(s). Not all functions will work, once CIB attributes have been deleted.
.TP 4
\fB --upgrade\fP
show demo for upgrading from SAPHanaSR to SAPHanaSR-angi.
.\"
.PP
.SH RETURN CODES
.B 0
Successful program execution.
.br
.B >0
Usage, syntax or execution errors.
.PP
.\"
.SH EXAMPLES
.PP
\fB*\fP Copying the script to outside the package.
.PP
The script needs to be still available on both cluster nodes after the SAPHanaSR
RPM has been removed. Needs to be done on all cluster nodes.
.PP
.RS 2
# cp -a /usr/share/SAPHanaSR/samples/SAPHanaSR-upgrade-to-angi-demo /root/bin/
.br
# chmod 755 /root/bin/SAPHanaSR-upgrade-to-angi-demo
.br
# SAPHanaSR-upgrade-to-angi-demo --help
.RE
.PP
\fB*\fP Example for finding the HANA primary node.
.PP
.RS 2
# SAPHanaSR-showAttr --format=script |\\
.br
awk -F/ '$3=="clone_state=\\"PROMOTED\\"" {print $2}'
.br
# crm_mon -1r | grep "* Masters: \\["
.RE
.PP
\fB*\fP Checking sane state of cluster.
.PP
This steps should be performed before doing anything with the cluster, and after
something has been done.
See also SAPHanaSR_upgrade_to_angi(7) and SAPHanaSR_maintenance_examples(7).
.PP
.RS 2
# cs_clusterstate -i
.br
# crm_mon -1r
.br
# crm configure show type:location | grep cli-
.br
# SAPHanaSR-showAttr
.RE
.PP
\fB*\fP Checking pre-requisites for the upgrade.
.PP
The scripts should be run on the HANA primary node before the upgrade. It also
could be run on the HANA secondary. Any error message should be investigated.
The check covers several requirements for the upgrade, but not all. On the other
hand, some of the pre-requisites are caused by limitations of the script
SAPHanaSR-upgrade-to-angi-demo itself. Those might not be needed for doing the
real upgrade manually. See also SAPHanaSR_upgrade_to_angi(7),
cs_show_error_patterns(8) and cs_show_cluster_patterns(8).
.PP
.RS 2
# SAPHanaSR-upgrade-to-angi-demo --check
.RE
.PP
\fB*\fP Demonstrating an upgrade.
.PP
HANA´s SID and instance number will be detected, as well as the names of both
cluster nodes. The names of cluster resources and constraints will be derived
from the CIB. Based on that information, command sequences will be proposed for
performing an upgrade:
.br
- Collecting needed data.
.br
- Backing up old CIB, sudoers file and global.ini.
.br
- Setting HANA resource into maintenance mode.
.br
- Removing old rules from sudoers file on both nodes.
.br
- Removing old hook scripts from global.ini on both nodes.
.br
- Removing old cluster resources and constraints from CIB.
.br
- Removing old node attributes and SAPHanaSR properties from CIB.
.br
- Removing old SAPHanaSR package.
.br
- Adding new SAPHanaSR-angi package.
.br
- Adding new rules to sudoers file on both nodes.
.br
- Adding new hook scripts to global.ini on both nodes.
.br
- Adding new cluster resources and constraints to CIB.
.br
- Probing HANA resource status.
.br
- Setting HANA resource back to managed.
.PP
The script needs to be copied to all cluster nodes upfront. It should be called
on the HANA primary node. Before doing this, you should check and prepare
pre-requisites, see example above. The proposed commands need to be checked.
Sometimes adaptions are necessary.
See also SAPHanaSR_upgrade_to_angi(7).
.PP
.RS 2
# SAPHanaSR-upgrade-to-angi-demo --upgrade
.RE
.PP
\fB*\fP Drafting a runbook for the manual upgrade.
.PP
The script should be used on the HANA primary node.
Before doing this, you should check and prepare pre-requisites, see example
above. The runbook draft is stored as file "SAPHanaSR-upgrade-draft.txt".
This draft can be used for preparing details for the upgrade procedure.
The proposed commands need to be checked. Sometimes adaptions are
necessary. Of course the result needs to be checked finally as well.
See also SAPHanaSR_upgrade_to_angi(7) and tee(1).
.PP
.RS 2
# SAPHanaSR-upgrade-to-angi-demo --upgrade | tee SAPHanaSR-upgrade-draft.txt
.br
# less SAPHanaSR-upgrade-draft.txt
.RE
.PP
\fB*\fP Demonstrating removal of package SAPHanaSR and its configuration.
.PP
Removing the old SAPHanaSR without performing the complete upgrade manually
might be useful, if installation and configuration of the new SAPHanaSR-angi
should be done by deploymant automation tools.
.PP
HANA´s SID and instance number will be detected, as well as the names of both
cluster nodes. The names of cluster resources and constraints will be derived
from the CIB. Based on that information, command sequences will be proposed for
performing the removal of SAPHanaSR:
.br
- Collecting needed data.
.br
- Backing up old CIB, sudoers file and global.ini.
.br
- Setting HANA resource into maintenance mode.
.br
- Removing old rules from sudoers file on both nodes.
.br
- Removing old hook scripts from global.ini on both nodes.
.br
- Removing old cluster resources and constraints from CIB.
.br
- Removing old node attributes and SAPHanaSR properties from CIB.
.br
- Removing old SAPHanaSR package.
.PP
The script needs to be copied to all cluster nodes beforehand. It should be
called on the HANA primary node. Before doing this, you should check and prepare
pre-requisites, see example above. The proposed commands need to be checked.
Sometimes adaptions are necessary. Of course the result needs to be checked
finally as well. See also SAPHanaSR_upgrade_to_angi(7).
.PP
.RS 2
# SAPHanaSR-upgrade-to-angi-demo --erase
.RE
.PP
.\"
.SH FILES
.TP
/usr/share/SAPHanaSR-angi/samples/SAPHanaSR-upgrade-to-angi-demo
unsupported script for demonstrating the procedure on a test cluster
.TP
/etc/sudoers.d/SAPHanaSR
recommended place for sudo permissions of HADR provider hook scripts
.TP
/hana/shared/$SID/global/hdb/custom/config/global.ini
on-disk representation of HANA global system configuration
.TP
SAPHanaSR-upgrade-to-angi-demo.<timestamp>
directory with backup of old configuration
.PP
.\"
.SH REQUIREMENTS
.PP
* The initial configuration matches SUSE´s documented setup of the SAPHanaSR
scale-up performance-optimised scenario.
.br
* Linux cluster, HANA and system replication are in sane state before the
upgrade. All cluster nodes are online.
.br
* Package libxml2-tools is installed on both cluster nodes. Package ClusterTools2
is recommended.
.br
* SAPHanaSR-upgrade-to-angi-demo is copied into /root/bin/ and made executable
on both cluster nodes.
.br
* SAPHanaSR-upgrade-to-angi-demo is executed on the HANA primary node.
.br
* SAPHanaSR-upgrade-to-angi-demo should be run on test systems.
.br
* A backup has been made for the cluster nodes.
.br
* The commands suggested by SAPHanaSR-upgrade-to-angi-demo have been checked before
they will be applied.
.br
* For further requirements see manual page SAPHanaSR_upgrade_to_angi(7).
.PP
.\"
.SH BUGS
.br
In case of any problem, please use your favourite SAP support process to open a request for the component BC-OP-LNX-SUSE. Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.br
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR\fP(7) ,
\fBocf_suse_SAPHana\fP(7) , \fBocf_suse_SAPHanaController\fP(7) ,
\fBSAPHanaSR.py\fP(7) , \fBsusHanaSR.py\fP(7) , \fBSAPHanaSR_upgrade_to_angi\fP(7) ,
\fBSAPHanaSR_maintenance_examples\fP(7) , \fBSAPHanaSR-showAttr\fP(8) ,
\fBcrm\fP(8) , \fBcrm_mon\fP(8) , \fBcrm_attribute\fP(8) , \fBcibadmin\fP(8) ,
\fBcs_wait_for_idle\fP(8) ,
.br
https://documentation.suse.com/sbp/sap/ ,
.br
https://www.suse.com/c/tag/towardszerodowntime/
.PP
.\"
.SH AUTHORS
.br
A.Briel, F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.br
(c) 2024 SUSE LLC
.br
SAPHanaSR-upgrade-to-angi-demo comes with ABSOLUTELY NO WARRANTY.
.br
For details see the GNU General Public License at
http://www.gnu.org/licenses/gpl.html
.\"
74 changes: 47 additions & 27 deletions man/SAPHanaSR.7
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
.\" Version: 1.001
.\" Version: 1.2
.\"
.TH SAPHanaSR 7 "08 May 2023" "" "SAPHanaSR-angi"
.TH SAPHanaSR 7 "02 Dec 2024" "" "SAPHanaSR-angi"
.\"
.SH NAME
SAPHanaSR \- Tools for automating SAP HANA system replication in scale-up setups.
SAPHanaSR \- Automating SAP HANA system replication in scale-up setups.
.PP
.\"
.SH DESCRIPTION
@@ -12,7 +12,7 @@ SAPHanaSR \- Tools for automating SAP HANA system replication in scale-up setups
.PP
This manual page SAPHanaSR provides information for setting up
and managing automation of SAP HANA system replication (SR) in scale-up setups.
For scale-out, please refer to SAPHanaSR-ScaleOut(7).
For scale-out, please refer to SAPHanaSR-ScaleOut(7), see also SAPHanaSR-angi(7).
.PP
System replication will help to replicate the database data from one site to
another site in order to compensate for database failures. With this mode of
@@ -193,10 +193,11 @@ best practices.
.PP
2. Technical users and groups such as sidadm are defined locally in the
Linux system. If users are resolved by remote service, local caching is
neccessary. Substitute user (su) to sidadm needs to work reliable and without
necessary. Substitute user (su) to sidadm needs to work reliable and without
customized actions or messages. Supported shell is bash.
.PP
3. Strict time synchronization between the cluster nodes, e.g. NTP.
3. Strict time synchronization between the cluster nodes, e.g. NTP. All nodes of
the Linux cluster have configured the same timezone.
.PP
4. For scale-up the following SAP HANA SR scenarios are possible with the
SAPHanaSR-angi package:
@@ -215,13 +216,14 @@ SAPHanaSR-angi package:
.br
Note: For MCOS, there must be no constraints between HANA SR pairs.
.PP
5. Only one system replication between the two SAP HANA database in the Linux cluster.
Maximum one system replication to an HANA database outside the Linux cluster.
See also item 12 below.
5. Only one system replication between the two SAP HANA databases in the Linux
cluster. Maximum one system replication to an HANA database outside the Linux
cluster. See also item 12 below.
.PP
6. The replication mode is either sync or syncmem for the controlled replication.
Replication mode async is not supported. The operation modes delta_datashipping,
logreplay and logreplay_readaccess are supported.
logreplay and logreplay_readaccess are supported. The operation mode logreplay
is default.
.PP
7. Both SAP HANA database systems have the same SAP Identifier (SID) and
Instance Number (INO).
@@ -237,7 +239,7 @@ However, all nodes in one Linux cluster have to use the same style.
9. Automated start of SAP HANA database systems during system boot must be switched
off.
.PP
10. The RA's monitoring operations have to be active.
10. The RAs' monitoring operations have to be active.
.PP
11. Using HA/DR provider hook for srConnectionChanged() by enabling susHanaSR.py
or susHanaSrMultiTarget.py is mandatory.
@@ -256,15 +258,16 @@ being written into CIB attributes. The current HANA SR status might differ
from CIB srHook attribute after cluster maintenance.
.PP
15. Once an HANA system replication site is known to the Linux cluster, that
exact site name has to be used whenever the site is registered manually.
exact site name has to be used whenever the site is registered manually. At any
time only one site is configured as primary replication source.
.PP
16. Reliable access to the /hana/shared/ filesystem is crucial for HANA and the
Linux cluster.
.PP
17. HANA feature Secondary Time Travel is not supported.
.PP
18. In MDC configurations the HANA database is treated as a single system
including all database containers. Therefore, cluster takeover decisions are
including all database containers. Therefor, cluster takeover decisions are
based on the complete status independent of the status of individual containers.
.PP
19. If a third HANA site is connected by system replication, that HANA is not
@@ -275,24 +278,43 @@ of a fall-back HA cluster in DR case, that HA cluster needs to be in standby.
resources, OS and Linux cluster. The infrastructure needs to allow these call-outs
to return in time.
.PP
21. The SAP HANA Fast Restart feature on RAM-tmfps as well as HANA on persistent
21. The SAP HANA Fast Restart feature on RAM-tmpfs as well as HANA on persistent
memory can be used, as long as they are transparent to SUSE HA.
.PP
22. The SAP HANA site name is from 2 up to 32 characters long. It starts with a
22. The SAP HANA hostname or virtual hostname should follow RFC-952.
.PP
23. The SAP HANA site name is from 2 up to 32 characters long. It starts with a
character or number. Subsequent characters may contain dash and underscore.
.PP
23. The SAPHanaController RA, the SUSE HA cluster and several SAP components
24. The SAPHanaController RA, the SUSE HA cluster and several SAP components
need read/write access and sufficient space in the Linux /tmp filesystem.
.PP
25. SAP HANA Native Storage Extension (NSE) is supported.
Important is that this feature does not change the HANA topology or interfaces.
In opposite to Native Storage Extension, the HANA Extension Nodes are changing
the topology and thus currently are not supported.
Please refer to SAP documentation for details.
.PP
26. The Linux user root´s shell is /bin/bash, or completely compatible.
.PP
27. No manual actions must be performed on the HANA database while it is controlled
by the Linux cluster. All administrative actions need to be aligned with the cluster.
See also SAPHanaSR_maintenance_examples(7).
.PP
26. No manual actions must be performed on the HANA database while it is controlled
by the Linux cluster. All administrative actions need to be aligned with the cluster.
See also SAPHanaSR_maintenance_examples(7).
.PP
.\"
.SH BUGS
.\" TODO
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
.PP
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR-ScaleOut\fP(7) ,
\fBocf_suse_SAPHanaTopology\fP(7) , \fBocf_suse_SAPHanaController\fP(7) ,
\fBocf_heartbeat_IPaddr2\fP(7) , \fBSAPHanaSR_basic_cluster\fP(7) ,
@@ -311,12 +333,6 @@ https://documentation.suse.com/sles-sap/ ,
.br
https://www.suse.com/releasenotes/ ,
.br
https://www.susecon.com/doc/2015/sessions/TUT19921.pdf ,
.br
https://www.susecon.com/doc/2016/sessions/TUT90846.pdf ,
.br
https://www.suse.com/media/presentation/TUT90846_towards_zero_downtime%20_how_to_maintain_sap_hana_system_replication_clusters.pdf ,
.br
http://scn.sap.com/community/hana-in-memory/blog/2014/04/04/fail-safe-operation-of-sap-hana-suse-extends-its-high-availability-solution ,
.br
http://scn.sap.com/docs/DOC-60334 ,
@@ -325,17 +341,21 @@ http://scn.sap.com/community/hana-in-memory/blog/2015/12/14/sap-hana-sps-11-what
.br
https://wiki.scn.sap.com/wiki/display/ATopics/HOW+TO+SET+UP+SAPHanaSR+IN+THE+COST+OPTIMIZED+SAP+HANA+SR+SCENARIO+-+PART+I
.br
https://blogs.sap.com/2020/01/30/sap-hana-and-persistent-memory/
https://blogs.sap.com/2020/01/30/sap-hana-and-persistent-memory/ ,
.br
https://www.rfc-editor.org/rfc/rfc952
.PP
.\"
.SH AUTHORS
.br
.PP
A.Briel, F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2015-2018 SUSE Linux GmbH, Germany.
.PP
(c) 2015-2017 SUSE Linux GmbH, Germany.
.br
(c) 2019-2023 SUSE LLC
(c) 2018-2024 SUSE LLC
.br
The package SAPHanaSR-angi comes with ABSOLUTELY NO WARRANTY.
.br
208 changes: 136 additions & 72 deletions man/SAPHanaSR_basic_cluster.7

Large diffs are not rendered by default.

188 changes: 132 additions & 56 deletions man/SAPHanaSR_maintenance_examples.7

Large diffs are not rendered by default.

607 changes: 607 additions & 0 deletions man/SAPHanaSR_upgrade_to_angi.7

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions man/SAPHanaTopology.7
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.so man7/ocf_suse_SAPHanaTopology.7
66 changes: 25 additions & 41 deletions man/ocf_suse_SAPHana.7
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
.\" Version: 0.160.1
.\"
.TH ocf_suse_SAPHana 7 "27 Jun 2022" "" "OCF resource agents"
.TH ocf_suse_SAPHana 7 "18 Oct 2024" "" "OCF resource agents"
.\"
.SH NAME
SAPHana \- Manages takeover between two SAP HANA databases with system replication.
.PP
.\"
.SH SYNOPSIS
\fBSAPHana\fP [start | stop | status | monitor | promote | demote | notify | meta\-data | validate\-all | methods | usage ]
\fBSAPHana\fP [start | stop | status | monitor | promote | demote | meta\-data | validate\-all | methods | usage ]
.PP
.\"
.SH DESCRIPTION

\fBSAPHana\fP is a resource agent for SAP HANA databases in scale-up setups.
It manages takeover for a SAP HANA database with system replication in an OCF multi-state configuration.
It manages takeover for a SAP HANA database with system replication in an OCF promotable clone configuration.
.PP
System replication will help to replicate the database data from one computer
to another computer in order to compensate for database failures.
With this mode of operation, internal SAP HANA high-availability (HA) mechanisms
and the resource agent must work together.
The SAPHana resource agent (RA) performs the actual check of the SAP HANA
database instances and is configured as a multi-state resource.
database instances and is configured as promotable clone resource.
Managing the two SAP HANA instances means that the resource agent controls
the start/stop of the instances. In addition the resource agent is able to monitor
the SAP HANA databases on landscape host configuration level.
@@ -46,7 +46,7 @@ landscapeHostConfiguration.py has some detailed output about HANA system status
and node roles. For our monitor the overall status is relevant. This overall
status is reported by the return code of the script:
0: Internal Fatal, 1: ERROR, 2: WARNING, 3: INFO, 4: OK
The SAPHana resource agent will interpret return code 0 as FATAL, 1 as not-running
The SAPHana resource agent will interpret return code 0 as FATAL, 1 as NOT-RUNNING
(or ERROR) and return codes 2+3+4 as RUNNING.
.PP
3. \fBhdbnsutil\fR
@@ -119,7 +119,7 @@ Optional, well known directories will be searched by default.
.RS 4
Define timeout how long a call to HANA to receive information can take. This could be e.g. landscapeHostConfiguration.py. There are some specific calls to HANA which have their own timeout values. For example the sr_takeover command does not timeout (inf). If the timeout is reached, the return code will be 124. If you increase the timeouts for HANA calls you should also adjust the operation timeouts of your Linux cluster resources.
.br
Optional, experimental. Default value: 60.
Optional. Default value: 60.
.RE
.PP
\fBINSTANCE_PROFILE\fR
@@ -145,10 +145,10 @@ Optional. Default value: false\&.
.RS 4
Time difference needed between two primary time stamps (LPTs), in case
a dual-primary situation occurs. If the difference between both node's
last primary time stamps is less than DUPLICATE_PRIMARY_TIMESTAMP,
last primary time stamps is less than DUPLICATE_PRIMARY_TIMEOUT,
then the cluster holds one or both instances in a "WAITING" status.
This is to give an admin the chance to react on a takeover.
Note: How the cluster proceeds after the DUPLICATE_PRIMARY_TIMESTAMP
Note: How the cluster proceeds after the DUPLICATE_PRIMARY_TIMEOUT
has passed, depends on the parameter AUTOMATED_REGISTER.
See also the examples section below.
.br
@@ -165,16 +165,6 @@ Example: "AUTOMATED_REGISTER=true".
Default value: false\&.
.RE
.PP
\fBREMOVE_SAP_SOCKETS\fR
.RS 4
Defines whether the RA removes the UNIX domain sockets related to sapstartsrv
before (re-)starting sapstartsrv.
.br
Example: "REMOVE_SAP_SOCKETS=true".
.br
Optional. Default value: true\&.
.RE
.PP
\fBSAPHanaFilter\fR
.RS 4
Outdated parameter. Please do not use it any longer.
@@ -204,8 +194,12 @@ Suggested minimum timeout: 3600\&.
.PP
\fBstop\fR
.RS 4
Stops the HANA instance.
Suggested minimum timeout: 3600\&.
Stops the HANA instance.
The correct value depends on factors like database size.
If HANA database internal timeouts have been tuned for fast shutdown, the RA timeout
might be reduced.
.\" TODO point to HANA parameters
Suggested minimum timeout: 600\&.
.RE
.PP
\fBpromote\fR
@@ -220,26 +214,20 @@ Nearly does nothing and just mark the instance as demoted.
Suggested minimum timeout: 320\&.
.RE
.PP
\fBnotify\fR
.RS 4
Always returns SUCCESS.
Suggested minimum timeout: 10\&.
.RE
.PP
\fBstatus\fR
.RS 4
Reports whether the HANA instance is running.
Suggested minimum timeout: 60\&.
.RE
.PP
\fBmonitor (Master role)\fR
\fBmonitor (promoted role)\fR
.RS 4
Reports whether the HANA instance seems to be working in multi-state it also needs to check the system replication status. Suggested minimum timeout: 700\&. Suggested interval: 60\&.
Reports whether the HANA instance seems to be working in replication primary mode. It also checks the system replication status. Suggested minimum timeout: 700\&. Suggested interval: 60\&.
.RE
.PP
\fBmonitor (demoted role)\fR
.RS 4
Reports whether the HANA instance seems to be working in multi-state it also needs to check the system replication status. The slave role's monitor interval has to be different from the master role. Suggested minimum timeout: 700\&. Suggested interval: 61\&.
Reports whether the HANA instance seems to be working inreplication secondary mode. It also checks the system replication status. The slave role's monitor interval has to be different from the promoted role. Suggested minimum timeout: 700\&. Suggested interval: 61\&.
.RE
.PP
\fBvalidate\-all\fR
@@ -433,21 +421,17 @@ property $id="SAPHanaSR" \\
.\" TODO: output
.RE
.PP
* Show failcount for resource rsc_SAPHanaCon_HA1_HDB00 .
* Show and delete failcount for resource.

Resource is rsc_SAPHanaCon_HA1_HDB00, node is node22. Useful after a failure
has been fixed and for testing.
See also cluster properties migration-threshold, failure-timeout and
SAPHana parameter PREFER_SITE_TAKEOVER.
.PP
.RS 2
# cibadmin -Ql | grep rsc_SAPHanaCon_HA1_HDB00.*fail-count
.\" TODO: crm_mon --failcounts
.RE
.PP
* Check for working NTP service on SLE-HA 12:
.PP
.RS 2
# ntpq -p
.\" TODO: ntp output
# crm resource failcount rsc_SAPHanaCon_HA1_HDB00 show node22
.br
# crm resource failcount rsc_SAPHanaCon_HA1_HDB00 delete node22
.RE
.PP
* Check for working NTP service on SLE-HA 15:
@@ -610,9 +594,9 @@ F.Herschel, L.Pinne.
.SH COPYRIGHT
(c) 2014 SUSE Linux Products GmbH, Germany.
.br
(c) 2015-2018 SUSE Linux GmbH, Germany.
(c) 2015-2017 SUSE Linux GmbH, Germany.
.br
(c) 2019-2023 SUSE LLC
(c) 2018-2024 SUSE LLC
.br
The resource agent SAPHana comes with ABSOLUTELY NO WARRANTY.
.br
200 changes: 129 additions & 71 deletions man/ocf_suse_SAPHanaController.7

Large diffs are not rendered by default.

467 changes: 467 additions & 0 deletions man/ocf_suse_SAPHanaFilesystem.7

Large diffs are not rendered by default.

144 changes: 99 additions & 45 deletions man/ocf_suse_SAPHanaTopology.7
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
.\" Version: 0.180.0
.\" Version: 1.2
.\"
.TH ocf_suse_SAPHanaTopology 7 "30 Jun 2022" "" "OCF resource agents"
.TH ocf_suse_SAPHanaTopology 7 "02 Dec 2024" "" "OCF resource agents"
.\"
.SH NAME
.\"
SAPHanaTopology \- Helps to manage two SAP HANA databases with system replication.
.PP
.\"
.SH SYNOPSIS
\fBSAPHanaTopology\fP [start | stop | status | monitor | meta\-data | validate\-all | methods | usage ]
.\"
\fBSAPHanaTopology\fP [start | stop | status | monitor | meta\-data | validate\-all | reload | methods | usage ]
.PP
.\"
.SH DESCRIPTION
.\"
SAPHanaTopology is a resource agent (RA) that analyzes the SAP HANA topology
and "sends" all findings via the node status attributes to all nodes in the
cluster. These attributes are taken by the SAPHanaController RA to control the
SAP HANA databases. In addition it starts and monitors the local saphostagent.
and "sends" all findings via cluster information base (CIB) attributes to all
nodes in the cluster. These attributes are taken by the SAPHanaController RA to
control the SAP HANA databases. In addition SAPHanaTopology starts and monitors
the local saphostagent.
.PP
The resource agent uses the following interfaces provided by SAP:
.PP
@@ -23,14 +27,15 @@ The resource agent uses the following interfaces provided by SAP:
landscapeHostConfiguration.py has some detailed output about HANA system
status and node roles. For our monitor the overall status is relevant. This
overall status is reported by the return code of the script:
0: Internal Fatal 1: ERROR 2: WARNING 3: INFO (maybe a switch of the resource
running) 4: OK
0: Internal Fatal, 1: ERROR, 2: WARNING, 3: INFO (e.g. host auto-failover happened), 4: OK
.br
The SAPHanaTopology resource agent will interpret return codes 1 as
NOT-RUNNING (or 1 failure) and return codes 2+3+4 as RUNNING.
SAPHanaTopology scans the output table of landscapeHostConfiguration.py to
identify the roles of the cluster node. Roles means configured and current
role of the nameserver as well as the indexserver.
The SAPHanaTopology resource agent will interpret return code 0 as FATAL,
1 as NOT-RUNNING (or ERROR) and return codes 2+3+4 as RUNNING. FATAL means the
status can not be determined.
.br
SAPHanaTopology scans the output of landscapeHostConfiguration.py to identify
the roles of the cluster node. Roles means configured and current role of the
nameserver as well as the indexserver.
.PP
2. \fBhdbnsutil\fP
.br
@@ -40,7 +45,7 @@ SAP HANA database. A second task of the interface is the posibility to run
a system replication takeover (sr_takeover) or to register a former primary
to a newer one (sr_register). In scale-out setups, hdbnsutil sometimes
might take some time. SAPHanaTopology uses only task one. SAPHanaController
or SAPHana are using all three tasks.
is using all three tasks.
.PP
3. \fBsaphostctrl\fP
.br
@@ -58,6 +63,7 @@ Please see also the REQUIREMENTS section below.
.PP
.\"
.SH SUPPORTED PARAMETERS
.\"
This resource agent supports the following parameters:
.PP
\fBSID\fR
@@ -83,11 +89,12 @@ If the timeout is reached, the return code will be 124. If you increase the
timeouts for HANA calls you should also adjust the operation timeouts of your
Linux cluster resources.
.br
Optional. Default value: 60 for scale-up, 120 for scale-out.
Optional. Default value: 120
.RE
.PP
.\"
.SH SUPPORTED PROPERTIES
.\"
\fBhana_${sid}_glob_filter\fR
.RS 4
Global cluster property \fBhana_${sid}_glob_filter\fR . This property defines which messages are logged by the RA. It should only be set if requested by support engineers. The default is sufficient for normal operation.
@@ -134,7 +141,7 @@ Suggested minimum timeout: 60\&.
.RS 4
Analyses the nodes HANA roles and landscape status.
Suggested minimum timeout: 600\&.
Suggested interval: 10\&.
Suggested interval: 50\&.
.RE
.PP
\fBvalidate\-all\fR
@@ -151,19 +158,31 @@ Suggested minimum timeout: 5\&.
.PP
\fBmethods\fR
.RS 4
Reports which methods (operations) the resource agent supports.
Suggested minimum timeout: 5\&.
.RE
.PP
\fBreload\fR
.RS 4
Changes parameters without forcing a recover of the resource. Suggested minimum timeout: 5.
.RE
.PP
.\"
.SH RETURN CODES
.\"
The return codes are defined by the OCF cluster framework.
Please refer to the OCF definition on the website mentioned below.
.br
In addition return code 124 is used if HANA_CALL_TIMEOUT has been exceeded.
.PP
.\"
.SH EXAMPLES
* This is an example configuration for a SAPHanaTopology resource for HANA scale-up.
.\"
* Example configuration of SAPHanaTopology resource for HANA scale-up.
.br
In addition, a SAPHana resource is needed to make this work.
In addition, a SAPHanaController resource is needed to make this work.
The SAPHanaTopology monitoring intervall should be shorter than the one of that
SAPHanaController.
.RE
.PP
.RS 4
@@ -173,20 +192,23 @@ op start interval="0" timeout="600" \\
.br
op stop interval="0" timeout="600" \\
.br
op monitor interval="10" timeout="600" \\
.\" TODO check interval
op monitor interval="50" timeout="600" \\
.br
params SID="SLE" InstanceNumber="00"
.PP
clone cln_SAPHanaTop_SLE_HDB00 rsc_SAPHanaTop_SLE_HDB00 \\
.br
notify="true" interleave="true" clone-node-max="1"
meta clone-node-max="1" interleave="true"
.RE
.PP
* Below is an example configuration for a SAPHanaTopology resource for HANA scale-out.
* Example configuration of SAPHanaTopology resource for HANA scale-out.
.br
The HANA consists of two sites with five nodes each. An additional cluster node
is used as majority maker for split brain situations.
In addition, a SAPHanaController resource is needed to make this work.
The SAPHanaTopology monitoring intervall should be shorter than the one of that
SAPHanaController.
.RE
.PP
.RS 4
@@ -196,61 +218,91 @@ op start interval="0" timeout="600" \\
.br
op stop interval="0" timeout="600" \\
.br
op monitor interval="10" timeout="600" \\
op monitor interval="50" timeout="600" \\
.br
params SID="SLE" InstanceNumber="00"
.PP
clone cln_SAPHanaTop_SLE_HDB00 rsc_SAPHanaTop_SLE_HDB00 \\
.br
notify="true" interleave="true" clone-node-max="1"
meta clone-node-max="1" interleave="true"
.PP
location SAPHanaTop_not_on_majority_maker cln_SAPHanaTop_HAE_HDB00 -inf: vm-majority
location SAPHanaTop_not_on_majority_maker cln_SAPHanaTop_SLE_HDB00 -inf: vm-majority
.PP
order SAPHanaTop_first Optional: cln_SAPHanaTop_SLE_HDB00 mst_SAPHanaCon_SLE_HDB00
.RE
.PP
order SAPHanaTop_first Optional: cln_SAPHanaTop_SLE_HDB00 mst_SAPHC_SLE_HDB00
* Showing the current SAPHanaTopology resource configuration on scale-up.
.br
The primitive is "rsc_SAPHanaTop_SLE_HDB00" and clone is "cln_SAPHanaTop_SLE_HDB00".
The constraints´ names are starting with "SAPHanaTop".
.RE
.PP
.RS 4
# crm configure show | grep SAPHanaTop
.br
# crm configure show rsc_SAPHanaTop_SLE_HDB00
.br
# crm configure show cln_SAPHanaTop_SLE_HDB00
.br
# crm configure show SAPHanaTop_first
.RE
.PP
* Correlating SAPHanaTopology syslog entry with HANA nameserver trace entry.
.br
.RS 4
# grep "SAPHanaTop.*16933.*monitor_clone" /var/log/messages | awk '{print $1,$3,$7,$11,$12,$13}'
.br
# su - hxeadm
.br
~> cdtrace
.br
~> grep "2023-11-01.*parent.*16933" nameserver_*trc | awk '{print $2,$3,$22,$23,$24,$25}'
.br
~> exit
.RE
.PP
.\"
.SH FILES
.TP
/usr/lib/ocf/resource.d/suse/SAPHana
the resource agent for scale-up
.TP
/usr/lib/ocf/resource.d/suse/SAPHanaController
the resource agent for scale-out
the controller resource agent
.TP
/usr/lib/ocf/resource.d/suse/SAPHanaTopology
the topology resource agent itself
the topology resource agent
.TP
/usr/lib/ocf/resource.d/suse/SAPHanaFilesystem
the filesystem monitoring resource agent
.TP
/usr/lib/SAPHanaSR-angi/
directory with function libraries
.TP
$HA_RSCTMP/SAPHana/SAPTopologyON.$SID
the RA's status file (subject to change)
the RA's status file (subject to change)
.TP
/usr/sap/$SID/$InstanceName/exe
default path for DIR_EXECUTABLE
default path for DIR_EXECUTABLE
.TP
/usr/sap/$SID/SYS/profile
default path for DIR_PROFILE
default path for DIR_PROFILE
.\"
.\" TODO: INSTANCE_PROFILE
.\"
.PP
.SH REQUIREMENTS
.\"
For the current version of the SAPHanaTopology resource agent that comes with
the software package SAPHanaSR or SAPHanaSR-ScaleOut, the support is limited
the software package SAPHanaSR-angi, the support is limited
to the scenarios and parameters described in the respective manual page
SAPHanaSR(7) or SAPHanaSR-ScaleOut(7).
SAPHanaSR-angi(7) and its references.
.PP
.\"
.SH SEE ALSO
\fBocf_suse_SAPHana\fP(7) , \fBocf_suse_SAPHanaController\fP(7) ,
\fBSAPHanaSR-monitor\fP(8) , \fBSAPHanaSR-showAttr\fP(8) ,
\fBSAPHanaSR\fP(7) , \fBSAPHanaSR-ScaleOut\fP(7) ,
\fBntp.conf\fP(5) , \fBchrony.conf\fP(5) , \fBstonith\fP(8)
.br
https://documentation.suse.com/sbp/all/?context=sles-sap ,
.br
https://www.susecon.com/doc/2015/sessions/TUT19921.pdf ,
.\"
\fBocf_suse_SAPHanaController\fP(7) , \fBocf_suse_SAPHanaFilesystem\fP(7) ,
\fBSAPHanaSR-showAttr\fP(8) , \fBcrm\fP(8),
\fBSAPHanaSR-angi\fP(7) , \fBSAPHanaSR\fP(7) , \fBSAPHanaSR-ScaleOut\fP(7) ,
.br
https://www.susecon.com/doc/2016/sessions/TUT90846.pdf ,
https://documentation.suse.com/sbp/sap/ ,
.br
http://clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Pacemaker_Explained/s-ocf-return-codes.html ,
.br
@@ -260,15 +312,17 @@ http://scn.sap.com/community/hana-in-memory/blog/2015/12/14/sap-hana-sps-11-what
.PP
.\"
.SH AUTHORS
.\"
F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
.\"
(c) 2014 SUSE Linux Products GmbH, Germany.
.br
(c) 2015-2017 SUSE Linux GmbH, Germany.
.br
(c) 2018-2022 SUSE LLC
(c) 2018-2024 SUSE LLC
.br
SAPHanaTopology comes with ABSOLUTELY NO WARRANTY.
.br
82 changes: 54 additions & 28 deletions man/susChkSrv.py.7
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.\" Version: 1.001
.\"
.TH susChkSrv.py 7 "13 Apr 2023" "" "SAPHanaSR"
.TH susChkSrv.py 7 "24 Jun 2024" "" "SAPHanaSR"
.\"
.SH NAME
susChkSrv.py \- Provider for SAP HANA srHook method srServiceStateChanged().
@@ -56,7 +56,7 @@ Mandatory. Must not be changed.
\fBpath = /usr/share/SAPHanaSR-angi\fP
Mandatory. Delivered within RPM package. Please change only if requested.
.TP
\fBexecution_order = [ INTEGER ]\fP
\fBexecution_order = [ \fIINTEGER\fB ]\fP
Mandatory. Order might depend on other hook scripts.
.TP
\fBaction_on_lost = [ ignore | stop | kill | fence ]\fP
@@ -70,21 +70,21 @@ If this is combined with SAPHana or SAPHanaController RA parameter 'AUTOMATED_RE
HANA needs to release all OS resources prior to the automated registering. See
also manual page ocf_suse_SAPHanaController(7).
.br
- \fBkill\fP: do 'HDB kill-<signal>'. The signal can be defined by parameter 'kill_signal'.
- \fBkill\fP: do 'HDB kill-<\fIsignal\fR>'. The signal can be defined by parameter 'kill_signal'.
If this is combined with SAPHanaController RA parameter 'AUTOMATED_REGISTER=true',
HANA needs to release all OS resources prior to the automated registering.
.br
- \fBfence\fP: do 'crm node fence <host>'. This needs a Linux cluster STONITH
method and sudo permission. This action is primarily meant for scale-up. If
it happens on a scale-out worker node, the remaining master needs to time out
before the Linux cluster will react.
- \fBfence\fP: do 'crm node fence <\fIhost\fR>'. This needs a Linux cluster
STONITH method and sudo permission. This action is primarily meant for scale-up.
For scale-out, SAPHanaSR-agent-fencing should be configured additionally, see
manual page SAPHanaSR-agent-fencing(8) for details.
.br
.\" TODO - suicide: do 'systemctl reboot'. Do NOT use this!
.\" .br
Optional. Default is ignore.
.TP
\fBkill_signal = [ INTEGER ]\fP
Signal to be used with 'HDB kill-<signal>'.
\fBkill_signal = [ \fIINTEGER\fB ]\fP
Signal to be used with 'HDB kill-<\fIsignal\fR>'.
.br
Optional. Default is 9.
.\" TODO
@@ -106,14 +106,14 @@ Optional. Default is 9.
.\" .br
.\" Optional. Default is tenant TODO.
.TP
\fBstop_timeout = [ INTEGER ]\fP
How many seconds to wait for 'sapcontrol ... StopSystem' to return?
Should be greater than value of daemon.ini parameter 'forcedtimeout'.
.\" TODO what is "forcedtimeout" ?
\fBstop_timeout = [ \fIINTEGER\fB ]\fP
How many seconds to wait for 'sapcontrol ... StopSystem' to return.
Should be greater than value of HANA parameter 'forcedterminationtimeout'.
See also SAPHanaSR_basic_cluster(7).
.br
Optional. Default is 20 seconds.
.TP
* The "HA/DR providers" API accepts the following parameter for the trace section in globnal.ini:
* The "HA/DR providers" API accepts the following parameter for the trace section in global.ini:
.TP
\fB[trace]\fP
.TP
@@ -122,25 +122,25 @@ Optional. Default is info. Will be added automatically if not set.
.PP
* The HANA daemon TODO for the daemon section of daemon.ini:
.\" TODO check the below values with SAP
.TP
.PP
\fB[daemon]\fP
.TP
\fBterminationtimeout = [ INTEGER ]\fP
TODO Should be 45000.
\fBterminationtimeout = [ \fIINTEGER\fB ]\fP
.br
Optional. Timeout in milliseconds. Default is TODO.
See also SAPHanaSR_basic_cluster(7).
Optional. Timeout in milliseconds. Default is 30000.
.TP
\fBforcedterminationtimeout = [ INTEGER ]\fP
TODO Should be 15000.
\fBforcedterminationtimeout = [ \fIINTEGER\fB ]\fP
.br
Optional. Timeout in milliseconds. Default is TODO.
See also SAPHanaSR_basic_cluster(7).
Optional. Timeout in milliseconds. Default is 270000.
.PP
* The HANA daemon TODO for the indexserver.<tenant> section of daemon.ini:
.\" TODO check the below values with cloud partner
.TP
\fB[indexserver.<tenant>]\fP
\fB[indexserver.<\fItenant\fR>]\fP
.TP
\fBgracetime = [ INTEGER ]\fP
\fBgracetime = [ \fIINTEGER\fB ]\fP
TODO Should be 6000.
.br
Optional. Timeout in milliseconds. Default is 2000.
@@ -241,6 +241,7 @@ Example SID is HA1, tenant is HA1.
.br
The sections daemon and indexserver.HA1 are needed on all HANA nodes.
The HANA has to be stopped before the file can be changed.
Please refer to SAP documentation before setting this parameters.
.PP
.RS 2
[daemon]
@@ -351,6 +352,27 @@ It does not touch any fencing device.
# crm_attribute -t status -N 'node2' -G -n terminate
.RE
.PP
\fB*\fR Example for killing HANA hdbindexserver process.
.PP
This could be done for testing the HA/DR provider hook script integration.
Killing HANA processes is dangerous. This test should not be done
on production systems.
Please refer to SAP HANA documentation. See also manual page killall(1).
.br
Note: Understand the impact before trying.
.PP
1. Check HANA and Linux cluster for clean idle state.
.PP
2. On secondary master name server, kill the hdbindexserver process.
.RS 2
# killall -9 hdbindexserver
.RE
.PP
3. Check the nameserver tracefile for srServiceStateChanged() events.
.PP
4. Check HANA and Linux cluster for clean idle state.
.RE
.PP
.\"
.SH FILES
.TP
@@ -406,7 +428,10 @@ susChkSrv.py parameter 'action_on_lost=fence' is set.
SAPHanaController parameter 'AUTOMATED_REGISTER=true' is set, it depends on HANA
to release all OS resources prior to the registering attempt.
.PP
10. If the hook provider should be pre-compiled, the particular Python version
10. For HANA scale-out, the susChkSrv.py parameter 'action_on_lost=fence' should
be used only, if the SAPHanaSR-alert-fencing is configured.
.PP
11. If the hook provider should be pre-compiled, the particular Python version
that comes with SAP HANA has to be used.
.\"
.SH BUGS
@@ -418,9 +443,10 @@ Please report any other feedback and suggestions to feedback@suse.com.
.SH SEE ALSO
\fBSAPHanaSR\fP(7) , \fBSAPHanaSR-ScaleOut\fP(7) , \fBSAPHanaSR.py\fP(7) ,
\fBocf_suse_SAPHanaTopology\fP(7) , \fBocf_suse_SAPHanaController\fP(7) ,
\fBSAPHanaSR-hookHelper\fP(8) ,
\fBSAPHanaSR-manageProvider\fP(8) , \fBcrm\fP(8) , \fBcrm_attribute\fP(8) ,
\fBpython3\fP(8) ,
\fBSAPHanaSR-hookHelper\fP(8) , \fBSAPHanaSR-manageProvider\fP(8) ,
\fBSAPHanaSR-alert-fencing\fP(8) ,
\fBcrm\fP(8) , \fBcrm_attribute\fP(8) ,
\fBpython3\fP(8) , \fBkillall\fP(1) ,
.br
https://help.sap.com/docs/SAP_HANA_PLATFORM?locale=en-US
.br
@@ -436,7 +462,7 @@ A.Briel, F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2022-2023 SUSE LLC
(c) 2022-2024 SUSE LLC
.br
susChkSrv.py comes with ABSOLUTELY NO WARRANTY.
.br
4 changes: 2 additions & 2 deletions man/susCostOpt.py.7
Original file line number Diff line number Diff line change
@@ -150,10 +150,10 @@ Please refer to SAP documentation for details on HANA commands.
* Overview on recovery procedure for reverting to normal operation after takeover.
.PP
On postTakeover() the hook script changes configuration in memory and in
persistence. It is neccessary to recover the initial settings on secondary site
persistence. It is necessary to recover the initial settings on secondary site
(step 7) before the fully operational state can be re-established (steps 8-11).
Futher the HANA cluster resource default is AUTOMATED_REGISTER=false. This also
makes administrative interaction neccessary (steps 1-4).
makes administrative interaction necessary (steps 1-4).
If AUTOMATED_REGISTER=true is set, the Linux cluster will do that automatically.
See manual page ocf_suse_SAPHanaController(7) for details on cluster resource settings.
Use exact same site names as known to the Linux cluster. See manual page
147 changes: 124 additions & 23 deletions man/susHanaSR.py.7
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.\" Version: 1.001
.\"
.TH susHanaSR.py 7 "13 Apr 2023" "" "SAPHanaSR"
.TH susHanaSR.py 7 "24 Sep 2024" "" "SAPHanaSR"
.\"
.SH NAME
susHanaSR.py \- Provider for SAP HANA srHook method srConnectionChanged().
@@ -66,15 +66,15 @@ Usage, syntax or execution errors.
.\"
.SH EXAMPLES
.PP
* Example for entry in sudo permissions /etc/sudoers
\fB*\fR Example for entry in sudo permissions /etc/sudoers.d/SAPHanaSR
.PP
.RS 2
# SAPHanaSR (Scale-Up) needs for srHook
# SAPHanaSR needs for srHook
.br
ha1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_ha1_site_srHook_*
.RE
.PP
* Example for looking up the sudo permission for the srHook script.
\fB*\fR Example for looking up the sudo permission for the srHook script.
.br
All related files (/etc/sudoers and /etc/sudoers.d/*) are scanned.
Example SID is HA1.
@@ -83,7 +83,15 @@ Example SID is HA1.
# sudo -U ha1adm -l | grep "NOPASSWD.*crm_attribute.*hana_ha1"
.RE
.PP
* Example for entry in SAP HANA global configuration
\fB*\fR Example for checking HANA´s python version.
.br
This might be done before installing HADR provider hook scripts. SID is HA1.
.PP
.RS 2
# su - ha1adm -c "python --version"
.RE
.PP
\fB*\fR Example for entry in SAP HANA global configuration
/hana/shared/$SID/global/hdb/custom/config/global.ini
.br
This file is needed at both sites. The HANA has to be stopped before the files
@@ -101,8 +109,9 @@ execution_order = 1
[trace]
.br
ha_dr_sushanasr = info
.RE
.PP
* Example for entry in SAP HANA 2.0 global configuration
\fB*\fR Example for entry in SAP HANA 2.0 global configuration
/hana/shared/$SID/global/hdb/custom/config/global.ini to enable multi-target aware third site.
.br
This entry is needed to allow ocf_suse_SAPHanaController(7) parameter
@@ -120,13 +129,44 @@ register_secondaries_on_takeover = true
...
.RE
.PP
* Example for checking the system log for srHook setting HANA system replication status in the CIB properties section. To be executed on respective HANA primary site's master nameserver.
* Example for entry in SAP HANA 2.0 nameserver configuration
/hana/shared/$SID/global/hdb/custom/config/nameserver.ini for two-node scale-out HANA without standby nodes.
.br
This entry is needed at both sites that are managed by the Linux cluster.
The HANA has to be stopped before the files can be edited. Do not copy the file
between nodes. It might be necessary to un-register and re-register the secondary
to make the change effective on the secondary site.
Please check SAP HANA documentation for details. In this example the master node
is suse11, the worker is suse12, the instance number is 00. See also
SAPHanaSR-ScaleOut_basic_cluster(7).
.PP
.RS 2
[landscape]
...
.br
master = suse11:31001
.br
worker = suse11 suse12
.br
active_master = suse11:31001
.br
roles_suse11 = worker
.br
roles_suse12 = worker
...
.RE
.PP
\fB*\fR Example for checking the system log for srHook setting HANA system replication status in the CIB properties section.
.br
To be executed on respective HANA primary site's master nameserver.
.PP
.RS 2
# grep "sudo.*crm_attribute.*srHook" /var/log/messages
.RE
.PP
* Example for checking the HANA tracefiles for srConnectionChanged() events. To be executed on respective HANA primary site's master nameserver.
\fB*\fR Example for checking the HANA tracefiles for srConnectionChanged() events.
.br
To be executed on respective HANA primary site's master nameserver.
.PP
.RS 2
# su - sleadm
@@ -135,12 +175,14 @@ register_secondaries_on_takeover = true
.br
~> grep susHanaSR.srConnectionChanged.*called nameserver_*.trc
.br
~> grep crm_attribute.*susHanaSR nameserver_*.trc
~> grep susHanaSR.*crm_attribute nameserver_*.trc
.br
# exit
.RE
.PP
* Example for checking the HANA tracefiles for when the hook script has been loaded. To be executed on both sites' master nameservers.
\fB*\fR Example for checking the HANA tracefiles for when the hook script has been loaded.
.br
To be executed on both sites' master nameservers.
.PP
.RS 2
# su - sleadm
@@ -150,18 +192,21 @@ register_secondaries_on_takeover = true
~> grep HADR.*load.*susHanaS nameserver_*.trc
.RE
.PP
* Example for comparing Linux cluster srHook attribute with current HANA SR state. SID is HA1. To be executed on current HANA primary site.
\fB*\fR Example for comparing Linux cluster srHook attribute with current HANA SR state.
.br
SID is HA1. To be executed on current HANA primary site.
.PP
.RS 2
# SAPHanaSR-showAttr | grep -A4 srHook
.br
# su - ha1adm -c "HDBSettings.sh systemReplicationStatus.py"
.RE
.PP
* Potentially dangerous example for manually changing Linux cluster srHook
attribute according to current HANA SR state. This might be desired if the
HANA SR state has changed while the Linux cluster was completely down.
SID is ICE, site is BERG, current HANA SR state is SFAIL.
\fB*\fR Potentially dangerous example for manually changing Linux cluster srHook
attribute according to current HANA SR state.
.br
This might be desired if the HANA SR state has changed while the Linux cluster
was completely down. SID is ICE, site is BERG, current HANA SR state is SFAIL.
.br
Note: Understand the impact before trying.
.PP
@@ -176,6 +221,7 @@ Note: Understand the impact before trying.
.RE
.PP
\fB*\fR Example for removing orphaned global srHook attribute.
.br
This might be done after upgrading from old-style srHook, to avoid confusion
caused by different HANA HADR provider API versions.
SID is HA1.
@@ -197,6 +243,46 @@ SID is HA1.
# SAPHanaSR-showAttr
.RE
.PP
\fB*\fR Example for temporarily blocking HANA system replication.
.br
This could be done for testing the HA/DR provider hook script integration.
Blocking the HANA system replication is dangerous. This test should not be done
on production systems.
Instance number is 00, the resulting network ports are depending on the HANA
setup. Please refer to SAP HANA documentation. See also manual page iptables(8).
.br
Note: Understand the impact before trying.
.PP
1. Check HANA and Linux cluster for clean idle state.
.PP
2. On secondary, check for used network ports.
.RS 2
# ss -tulpan | grep hdb.*server | grep -v 127.0.0.1 |\\
.br
grep -v "\\*" | awk '{print $6}' | awk -F: '{print $2}'
.RE
.PP
3. On secondary, block HANA system replication, example ports are 4000[123].
.RS 2
# iptables -I INPUT -p tcp -m multiport --ports 40001,40002,40003 -j ACCEPT
.RE
Note: The ACCEPT needs to be replaced by appropriate action.
.PP
4. Check the nameserver tracefile for srConnectionChanged() events, check the
system log for crm_attribute calls, check the Linux cluster attributes for srHook
status.
.PP
5. On secondary, unblock HANA system replication.
.RS 2
# iptables -D INPUT -p tcp -m multiport --ports 40001,40002,40003 -j DROP
.RE
.PP
6. Check the nameserver tracefile for srConnectionChanged() events, check the
system log for crm_attribute calls, check the Linux cluster attributes for srHook
status.
.PP
7. Check HANA and Linux cluster for clean idle state.
.PP
.\"
.SH FILES
.TP
@@ -206,20 +292,24 @@ the hook provider, delivered with the RPM
/hana/shared/$SID/global/hdb/custom/config/global.ini
the on-disk representation of HANA global system configuration
.TP
/hana/shared/$SID/global/hdb/custom/config/nameserver.ini
the on-disk representation of HANA nameserver configuration
.TP
/etc/sudoers , /etc/sudoers.d/*
the sudo permissions configuration
.TP
/usr/sap/$SID/HDB$nr/$HOST/trace
path to HANA tracefiles
.TP
/usr/sap/$SID/HDB$nr/.crm_attribute.$SITE
the internal cache for srHook status changes while Linux cluster is down, file is owned by ${SID}adm and must never be touched
the internal cache for srHook status changes while Linux cluster is down, file is owned and read/write by ${sid}adm and must never be touched
.PP
.\"
.SH REQUIREMENTS
1. SAP HANA 2.0 SPS04 or later provides the HA/DR provider hook method
srConnectionChanged() with multi-target aware parameters.
The multi-target aware parameters are needed for the SAPHanaSR scale-up
.PP
1. SAP HANA 2.0 SPS05 rev.059.04 or later provides Python 3 as well as the HA/DR
provider hook method srConnectionChanged() with multi-target aware parameters.
The Python 3 and multi-target aware parameters are needed for the SAPHanaSR-angi
package.
.PP
2. No other HADR provider hook script should be configured for the
@@ -230,37 +320,48 @@ contradictingly.
3. The user ${sid}adm needs execution permission as user root for the command
crm_attribute.
.PP
4. The hook provider needs to be added to the HANA global configuration,
4. The user ${sid}adm needs ownership and read/write permission on the internal
cache file /usr/sap/$SID/HDB$nr/.crm_attribute.$SITE and its parent directory.
.PP
5. The hook provider needs to be added to the HANA global configuration,
in memory and on disk (in persistence).
.PP
6. The srHook script runtime almost completely depends on call-outs to OS and
Linux cluster.
.\"
.SH BUGS
.PP
In case of any problem, please use your favourite SAP support process to open
a request for the component BC-OP-LNX-SUSE.
Please report any other feedback and suggestions to feedback@suse.com.
.PP
.\"
.SH SEE ALSO
\fBSAPHanaSR\fP(7) ,
.PP
\fBSAPHanaSR-angi\fP(7) ,
\fBocf_suse_SAPHanaTopology\fP(7) , \fBocf_suse_SAPHanaController\fP(7) ,
\fBocf_heartbeat_IPaddr2\fP(7) ,
\fBsusCostOpt.py\fP(7) , \fBsusTkOver.py\fP(7) , \fBsusChkSrv.py\fP (7) ,
\fBSAPHanaSR-monitor\fP(8) , \fBSAPHanaSR-showAttr\fP(8) ,
\fBSAPHanaSR-manageProvider\fP(8) , \fBSAPHanaSR-hookHelper\fP(8) ,
\fBcrm_attribute\fP(8) , \fBsudo\fP(8) , \fBsudoers\fP(5), \fBpython\fP(8) ,
\fBiptables\fP(8) , \fBss\fP(8) ,
.br
https://help.sap.com/docs/SAP_HANA_PLATFORM?locale=en-US
.br
https://help.sap.com/docs/SAP_HANA_PLATFORM/6b94445c94ae495c83a19646e7c3fd56/5df2e766549a405e95de4c5d7f2efc2d.html?locale=en-US
.PP
.\"
.SH AUTHORS
.PP
A.Briel, F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2015-2018 SUSE Linux GmbH, Germany.
.PP
(c) 2015-2017 SUSE Linux GmbH, Germany.
.br
(c) 2019-2023 SUSE LLC
(c) 2018-2024 SUSE LLC
.br
susHanaSR.py comes with ABSOLUTELY NO WARRANTY.
.br
19 changes: 9 additions & 10 deletions man/susHanaSrMultiTarget.py.7
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.\" Version: 1.001
.\" Version: 1.2
.\"
.TH susHanaSrMultiTarget.py 7 "18 Apr 2023" "" "SAPHanaSR-ScaleOut"
.TH susHanaSrMultiTarget.py 7 "02 Dec 2024" "" "SAPHanaSR-ScaleOut"
.\"
.SH NAME
susHanaSrMultiTarget.py \- Provider for multi-target aware SAP HANA srHook
@@ -167,8 +167,11 @@ register_secondaries_on_takeover = true
/hana/shared/$SID/global/hdb/custom/config/nameserver.ini for two-node scale-out HANA without standby nodes.
.br
This entry is needed at both sites that are managed by the Linux cluster.
The HANA has to be stopped before the files can be edited.
Do not copy the file between nodes. Please check SAP HANA documentation for details. In this example the master node is suse11, the worker is suse12.
The HANA has to be stopped before the files can be edited. Do not copy the file
between nodes. It might be necessary to un-register and re-register the secondary
to make the change effective on the secondary site.
Please check SAP HANA documentation for details. In this example the master node
is suse11, the worker is suse12.
.PP
.RS 2
[landscape]
@@ -283,7 +286,7 @@ the sudo permission configuration
the directory with HANA trace files
.TP
/usr/sap/$SID/HDB$nr/.crm_attribute.$SITE
the internal cache for srHook status changes while Linux cluster is down, file is owned by ${SID}adm and must never be touched
the internal cache for srHook status changes while Linux cluster is down, file is owned and read/write by ${sid}adm and must never be touched
.PP
.\"
.SH REQUIREMENTS
@@ -333,10 +336,6 @@ https://documentation.suse.com/sbp/sap/ ,
.br
https://documentation.suse.com/sles-sap/ ,
.br
https://www.susecon.com/doc/2015/sessions/TUT19921.pdf ,
.\" .br
.\"https://www.susecon.com/doc/2016/sessions/TUT90846.pdf ,
.br
https://www.susecon.com/archive-2019.html ,
.br
https://www.susecon.com/archive-2020.html ,
@@ -357,7 +356,7 @@ A.Briel, F.Herschel, L.Pinne.
.PP
.\"
.SH COPYRIGHT
(c) 2020-2023 SUSE LLC
(c) 2020-2024 SUSE LLC
.br
susHanaSrMultiTarget.py comes with ABSOLUTELY NO WARRANTY.
.br
8 changes: 5 additions & 3 deletions man/susTkOver.py.7
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.\" Version: 1.001
.\"
.TH susTkOver.py 7 "13 Apr 2023" "" "SAPHanaSR"
.TH susTkOver.py 7 "20 Nov 2023" "" "SAPHanaSR"
.\"
.SH NAME
susTkOver.py \- Provider for SAP HANA srHook method preTakeover().
@@ -54,7 +54,7 @@ Optional. Default is info. Will be added automatically, if not set.
* The SAPHanaController RA is recognizing the pending takeover
request via the following cluster attributes:
.TP
\fBsra = [ T | R | - ]\fP
\fBsra = [ T | R | F | - ]\fP
.PP
HANA system replication takeover action, indicated by preTakeover().
.PP
@@ -66,9 +66,11 @@ T = Takeover on new primary (sr_takeover) ongoing.
.br
R = Registration on new secondary (sr_register) ongoing.
.br
F = Takeover failed.
.br
- = No action pending.
.TP
\fBsrah = [ T | R | - ]\fP
\fBsrah = [ T | R | F | - ]\fP
.PP
HANA system replication action history

3 changes: 3 additions & 0 deletions ra/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
old
backup

2 changes: 2 additions & 0 deletions ra/.shellcheckrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#external-sources=true
#check-sourced=true
11 changes: 7 additions & 4 deletions ra/SAPHanaController
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@
# Support: linux@sap.com
# License: GNU General Public License (GPL)
# Copyright: (c) 2013,2014 SUSE Linux Products GmbH
# (c) 2015-2023 SUSE LLC
# (c) 2015-2024 SUSE LLC
#
# An example usage:
# See usage() function below for more details...
@@ -27,7 +27,6 @@
# OCF_RESKEY_INSTANCE_PROFILE (optional, well known directories will be searched by default)
# OCF_RESKEY_PREFER_SITE_TAKEOVER (optional, default is no)
# OCF_RESKEY_DUPLICATE_PRIMARY_TIMEOUT (optional, time difference needed between two last-primary-tiemstampe (lpt))
# OCF_RESKEY_REMOVE_SAP_SOCKETS (optional, default is true)
#
# HANA must support the following commands:
# hdbnsutil -sr_stateConfiguration
@@ -37,7 +36,7 @@
# systemReplicationStatus.py
#
#######################################################################
SAPHanaControllerVersion="1.001.7"
SAPHanaControllerVersion="1.2.8"
#
# Initialization:
timeB=$(date '+%s')
@@ -106,6 +105,7 @@ case "$ACTION" in
;;
esac
"${raType}"init
super_ocf_log info "RUNTIME finished ${raType}init"

if ! ocf_is_root
then
@@ -126,6 +126,7 @@ then
exit "$OCF_ERR_ARGS"
fi

super_ocf_log info "RUNTIME ready to process action '$ACTION'"
ra_rc="$OCF_ERR_UNIMPLEMENTED"
case "$ACTION" in
start|stop|monitor|promote|demote) # Standard controlling actions
@@ -150,6 +151,8 @@ case "$ACTION" in
esac
timeE="$(date '+%s')"
(( timeR = timeE - timeB ))
super_ocf_log info "RA ==== end action $ACTION$CLACT with rc=${ra_rc} ($SAPHanaControllerVersion) (${timeR}s)===="
set_g_times
super_ocf_log info "RUNTIME ==== end action $ACTION$CLACT with rc=${ra_rc} ($SAPHanaControllerVersion) (${timeR}s)===="
super_ocf_log info "RA ==== end action $ACTION$CLACT with rc=${ra_rc} ($SAPHanaControllerVersion) (${timeR}s; times=$g_time_proc $g_time_chld)===="
exit "${ra_rc}"
# set ts=4 sw=4 sts=4 et
127 changes: 127 additions & 0 deletions ra/SAPHanaFilesystem
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#!/bin/bash
#
# SAPHanaFilesystem
#
# Description: Analyses FSt for SAPHanaTopology and/or SAPHanaController resources
#
##############################################################################
#
# SAPHanaFilesystem: (short shfs)
# Author: Fabian Herschel, February 2023
# Support: linux@sap.com
# License: GNU General Public License (GPL)
# Copyright: (c) 2023-2024 SUSE LLC
#
# An example usage:
# See usage() function below for more details...
#
# OCF instance parameters:
# OCF_RESKEY_SID
# OCF_RESKEY_InstanceNumber
# OCF_RESKEY_DIR_EXECUTABLE (optional, well known directories will be searched by default)
#
#######################################################################
SAPHanaFilesystemVersion="1.2.8"
#
# Initialization:
timeB=$(date '+%s')

raType="shfs_"
OCF_FUNCTIONS_DIR="${OCF_FUNCTIONS_DIR:-${OCF_ROOT}/lib/heartbeat}"
# shellcheck source=/dev/null
source "${OCF_FUNCTIONS_DIR}/ocf-shellfuncs"
# shellcheck source=./ra/saphana-common-lib
source /usr/lib/SAPHanaSR-angi/saphana-common-lib
# shellcheck source=./ra/saphana-controller-common-lib
source /usr/lib/SAPHanaSR-angi/saphana-controller-common-lib
# shellcheck source=./ra/saphana-filesystem-lib
source /usr/lib/SAPHanaSR-angi/saphana-filesystem-lib

#
#######################################################################
#
# KNOWN PROBLEMS TO BE FIXED:

#
# function: main - main function to operate
# params: ACTION
# globals: OCF_*(r), CLACT(w), ra_rc(rw), $0(r)
#


if [ "$#" != "1" ]
then
"${raType}"usage
exit "$OCF_ERR_ARGS"
fi

ACTION="$1"
if [ "$ACTION" = "status" ]; then
ACTION=monitor
fi

if is_clone
then
CLACT=_clone
else
if [[ "$ACTION" = "promote" || "$ACTION" = "demote" ]]
then
super_ocf_log err "ACT: $ACTION called in a non clone environment"
exit "$OCF_ERR_ARGS"
fi
fi

# These operations don't require OCF parameters to be set
case "$ACTION" in
usage|methods) "${raType}""$ACTION"
exit "$OCF_SUCCESS";;
meta-data) "${raType}"meta_data
exit "$OCF_SUCCESS";;
notify) # just ignore
exit "$OCF_SUCCESS";;
*)
super_ocf_log info "RA ==== begin action $ACTION$CLACT ($SAPHanaFilesystemVersion) ===="
core_init "$SAPHanaFilesystemVersion" "$timeB"
;;
esac
"${raType}"init

if ! ocf_is_root
then
super_ocf_log err "ACT: $0 must be run as root"
exit "$OCF_ERR_PERM"
fi

# parameter check
if [ -z "$OCF_RESKEY_SID" ]
then
super_ocf_log err "ACT: Please set parameter SID!"
exit "$OCF_ERR_ARGS"
fi

if [ -z "$OCF_RESKEY_InstanceNumber" ]
then
super_ocf_log err "ACT: Please set parameter InstanceNumber!"
exit "$OCF_ERR_ARGS"
fi

ra_rc="$OCF_ERR_UNIMPLEMENTED"
case "$ACTION" in
start|stop|monitor) # Standard controlling actions
"${raType}""$ACTION$CLACT"; ra_rc="$?"
;;
validate-all)
"${raType}"validate; ra_rc="$?"
;;
reload)
ra_rc="$OCF_SUCCESS"
;;
*) # seems to be an unknown request
"${raType}"methods; ra_rc="$OCF_ERR_UNIMPLEMENTED"
;;
esac
timeE="$(date '+%s')"
(( timeR = timeE - timeB ))
super_ocf_log info "RA ==== end action $ACTION$CLACT with rc=${ra_rc} ($SAPHanaFilesystemVersion) (${timeR}s)===="
exit "${ra_rc}"
# set ts=4 sw=4 sts=4 et
10 changes: 6 additions & 4 deletions ra/SAPHanaTopology
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@
# Support: linux@sap.com
# License: GNU General Public License (GPL)
# Copyright: (c) 2014 SUSE Linux Products GmbH
# (c) 2015-2023 SUSE LLC
# (c) 2015-2024 SUSE LLC
#
# An example usage:
# See usage() function below for more details...
@@ -32,7 +32,7 @@
# systemReplicationStatus.py
#
#######################################################################
SAPHanaTopologyVersion="1.001.7"
SAPHanaTopologyVersion="1.2.8"
#
# Initialization:
timeB=$(date '+%s')
@@ -86,7 +86,7 @@ case "$ACTION" in
usage|methods) "${raType}""$ACTION"
exit "$OCF_SUCCESS";;
meta-data) "${raType}"meta_data
exit "$OCF_SUCCESS";;
exit "$OCF_SUCCESS";;
notify) # just ignore
exit "$OCF_SUCCESS";;
*)
@@ -135,6 +135,8 @@ case "$ACTION" in
esac
timeE="$(date '+%s')"
(( timeR = timeE - timeB ))
super_ocf_log info "RA ==== end action $ACTION$CLACT with rc=${ra_rc} ($SAPHanaTopologyVersion) (${timeR}s)===="
set_g_times
super_ocf_log info "RUNTIME ==== end action $ACTION$CLACT with rc=${ra_rc} ($SAPHanaTopologyVersion) (${timeR}s)===="
super_ocf_log info "RA ==== end action $ACTION$CLACT with rc=${ra_rc} ($SAPHanaTopologyVersion) (${timeR}s; times=$g_time_proc $g_time_chld)===="
exit "${ra_rc}"
# set ts=4 sw=4 sts=4 et
229 changes: 152 additions & 77 deletions ra/saphana-common-lib
141 changes: 65 additions & 76 deletions ra/saphana-controller-common-lib
358 changes: 177 additions & 181 deletions ra/saphana-controller-lib
456 changes: 456 additions & 0 deletions ra/saphana-filesystem-lib
82 changes: 56 additions & 26 deletions ra/saphana-topology-lib
3 changes: 3 additions & 0 deletions srHook/global.ini_susChkSrv
10 changes: 10 additions & 0 deletions srHook/global.ini_susChkSrv_fence
2 changes: 1 addition & 1 deletion srHook/global.ini_susHanaSR
107 changes: 54 additions & 53 deletions srHook/susChkSrv.py
41 changes: 34 additions & 7 deletions srHook/susHanaSR.py
262 changes: 262 additions & 0 deletions srHook/susHanaSrMultiTarget.py.to-be-integrated
11 changes: 10 additions & 1 deletion test/.gitignore
22 changes: 0 additions & 22 deletions test/00_ship_test_to_alpen

This file was deleted.

126 changes: 0 additions & 126 deletions test/SAPHanaSR-testCluster

This file was deleted.

126 changes: 0 additions & 126 deletions test/SAPHanaSR-testCluster-multiNode

This file was deleted.

23 changes: 16 additions & 7 deletions test/callTest-multiNode → test/bin/callTest-multiNode
111 changes: 111 additions & 0 deletions test/bin/cs_ssh
147 changes: 101 additions & 46 deletions test/disp_sql_counter → test/bin/disp_sql_counter
45 changes: 45 additions & 0 deletions test/bin/filter_sap_trc_by_time
73 changes: 73 additions & 0 deletions test/bin/loopTests01
71 changes: 71 additions & 0 deletions test/bin/loopTests02
28 changes: 14 additions & 14 deletions test/loopTests03 → test/bin/loopTests03
38 changes: 15 additions & 23 deletions test/callTest → test/bin/loopTests04
16 changes: 16 additions & 0 deletions test/bin/loopTests04.json
39 changes: 39 additions & 0 deletions test/bin/runtest
7 changes: 7 additions & 0 deletions test/bin/sct_showlog
20 changes: 20 additions & 0 deletions test/bin/sct_test_block_sap_hana_sr
29 changes: 29 additions & 0 deletions test/bin/sct_test_create_cluster_config
49 changes: 49 additions & 0 deletions test/bin/sct_test_delete_cluster_config
9 changes: 4 additions & 5 deletions test/test_free_log_area → test/bin/sct_test_free_log_area
15 changes: 15 additions & 0 deletions test/bin/sct_test_freeze_prim_fs
15 changes: 15 additions & 0 deletions test/bin/sct_test_freeze_prim_master_nfs
16 changes: 16 additions & 0 deletions test/bin/sct_test_freeze_prim_site_nfs
15 changes: 15 additions & 0 deletions test/bin/sct_test_freeze_secn_fs
16 changes: 16 additions & 0 deletions test/bin/sct_test_freeze_secn_site_nfs
24 changes: 24 additions & 0 deletions test/bin/sct_test_kill_prim_ipaddr
21 changes: 21 additions & 0 deletions test/bin/sct_test_kill_prim_nic
13 changes: 13 additions & 0 deletions test/bin/sct_test_kill_prim_pacemakerd
13 changes: 13 additions & 0 deletions test/bin/sct_test_kill_prim_pacemkr-ctrld
13 changes: 13 additions & 0 deletions test/bin/sct_test_kill_prim_worker_pacemakerd
13 changes: 13 additions & 0 deletions test/bin/sct_test_kill_prim_worker_pacemkr-ctrld
13 changes: 13 additions & 0 deletions test/bin/sct_test_kill_secn_pacemakerd
13 changes: 13 additions & 0 deletions test/bin/sct_test_kill_secn_pacemkr-ctrld
13 changes: 13 additions & 0 deletions test/bin/sct_test_kill_secn_worker_pacemakerd
13 changes: 13 additions & 0 deletions test/bin/sct_test_kill_secn_worker_pacemkr-ctrld
47 changes: 47 additions & 0 deletions test/bin/sct_test_maintenance_cluster_hana_running
75 changes: 75 additions & 0 deletions test/bin/sct_test_maintenance_cluster_turn_hana
18 changes: 18 additions & 0 deletions test/bin/sct_test_move_ip
2 changes: 1 addition & 1 deletion test/test_properties → test/bin/sct_test_properties
54 changes: 54 additions & 0 deletions test/bin/sct_test_restart_cluster
114 changes: 114 additions & 0 deletions test/bin/sct_test_restart_cluster_turn_hana
19 changes: 19 additions & 0 deletions test/bin/sct_test_unblock_sap_hana_sr
13 changes: 13 additions & 0 deletions test/bin/sct_test_unfreeze_prim_fs
15 changes: 15 additions & 0 deletions test/bin/sct_test_unfreeze_prim_master_nfs
16 changes: 16 additions & 0 deletions test/bin/sct_test_unfreeze_prim_site_nfs
13 changes: 13 additions & 0 deletions test/bin/sct_test_unfreeze_secn_fs
124 changes: 0 additions & 124 deletions test/cs_ssh

This file was deleted.

42 changes: 42 additions & 0 deletions test/json/angi-ScaleOut-BW/block_manual_takeover.json
42 changes: 0 additions & 42 deletions test/json/angi-ScaleOut-BW/bmt.json

This file was deleted.

66 changes: 0 additions & 66 deletions test/json/angi-ScaleOut-BW/defaultChecks+newComparators.json

This file was deleted.

57 changes: 0 additions & 57 deletions test/json/angi-ScaleOut-BW/defaultChecks.json

This file was deleted.

59 changes: 59 additions & 0 deletions test/json/angi-ScaleOut-BW/defaults.json
72 changes: 36 additions & 36 deletions test/json/angi-ScaleOut-BW/free_log_area.json
140 changes: 70 additions & 70 deletions test/json/angi-ScaleOut-BW/kill_prim_indexserver.json
144 changes: 72 additions & 72 deletions test/json/angi-ScaleOut-BW/kill_prim_inst.json
144 changes: 72 additions & 72 deletions test/json/angi-ScaleOut-BW/kill_prim_worker_inst.json
138 changes: 69 additions & 69 deletions test/json/angi-ScaleOut-BW/kill_prim_worker_node.json
140 changes: 70 additions & 70 deletions test/json/angi-ScaleOut-BW/kill_secn_indexserver.json
138 changes: 69 additions & 69 deletions test/json/angi-ScaleOut-BW/kill_secn_inst.json
126 changes: 63 additions & 63 deletions test/json/angi-ScaleOut-BW/kill_secn_node.json
138 changes: 69 additions & 69 deletions test/json/angi-ScaleOut-BW/kill_secn_worker_inst.json
132 changes: 66 additions & 66 deletions test/json/angi-ScaleOut-BW/kill_secn_worker_node.json
52 changes: 26 additions & 26 deletions test/json/angi-ScaleOut-BW/maintenance_cluster_turn_hana.json
135 changes: 135 additions & 0 deletions test/json/angi-ScaleOut-BW/maintenance_with_standby_nodes.json
46 changes: 23 additions & 23 deletions test/json/angi-ScaleOut-BW/nop-false.json
42 changes: 21 additions & 21 deletions test/json/angi-ScaleOut-BW/nop.json
50 changes: 25 additions & 25 deletions test/json/angi-ScaleOut-BW/restart_cluster.json
50 changes: 25 additions & 25 deletions test/json/angi-ScaleOut-BW/restart_cluster_hana_running.json
52 changes: 26 additions & 26 deletions test/json/angi-ScaleOut-BW/restart_cluster_turn_hana.json
135 changes: 0 additions & 135 deletions test/json/angi-ScaleOut-BW/sap.json

This file was deleted.

97 changes: 0 additions & 97 deletions test/json/angi-ScaleOut-BW/spn.json

This file was deleted.

98 changes: 0 additions & 98 deletions test/json/angi-ScaleOut-BW/ssn.json

This file was deleted.

97 changes: 97 additions & 0 deletions test/json/angi-ScaleOut-BW/standby_prim_node.json
98 changes: 98 additions & 0 deletions test/json/angi-ScaleOut-BW/standby_secn_node.json
55 changes: 55 additions & 0 deletions test/json/angi-ScaleOut/block_manual_takeover.json
61 changes: 61 additions & 0 deletions test/json/angi-ScaleOut/block_sr.json
111 changes: 111 additions & 0 deletions test/json/angi-ScaleOut/block_sr_and_freeze_prim_master_nfs.json
42 changes: 0 additions & 42 deletions test/json/angi-ScaleOut/bmt.json

This file was deleted.

66 changes: 0 additions & 66 deletions test/json/angi-ScaleOut/defaultChecks+newComparators.json

This file was deleted.

57 changes: 0 additions & 57 deletions test/json/angi-ScaleOut/defaultChecks.json

This file was deleted.

74 changes: 74 additions & 0 deletions test/json/angi-ScaleOut/defaults.json
77 changes: 77 additions & 0 deletions test/json/angi-ScaleOut/fatal1.json
83 changes: 83 additions & 0 deletions test/json/angi-ScaleOut/fatal2.json
49 changes: 49 additions & 0 deletions test/json/angi-ScaleOut/flap.json
50 changes: 50 additions & 0 deletions test/json/angi-ScaleOut/flop.json
42 changes: 42 additions & 0 deletions test/json/angi-ScaleOut/flup.json
87 changes: 50 additions & 37 deletions test/json/angi-ScaleOut/free_log_area.json
105 changes: 105 additions & 0 deletions test/json/angi-ScaleOut/freeze_prim_master_nfs.json
108 changes: 108 additions & 0 deletions test/json/angi-ScaleOut/freeze_prim_master_nfs_fencing_alert.json
103 changes: 103 additions & 0 deletions test/json/angi-ScaleOut/freeze_prim_site_nfs.json
88 changes: 88 additions & 0 deletions test/json/angi-ScaleOut/freeze_secn_site_nfs.json
171 changes: 93 additions & 78 deletions test/json/angi-ScaleOut/kill_prim_indexserver.json
117 changes: 117 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_indexserver_fencing_alert.json
170 changes: 91 additions & 79 deletions test/json/angi-ScaleOut/kill_prim_inst.json
102 changes: 102 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_inst_fencing_alert.json
49 changes: 49 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_ipaddr.json
70 changes: 70 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_nameserver.json
153 changes: 82 additions & 71 deletions test/json/angi-ScaleOut/kill_prim_node.json
110 changes: 110 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_node_fencing_alert.json
56 changes: 56 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_pacemakerd.json
109 changes: 109 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_worker_indexserver.json
166 changes: 88 additions & 78 deletions test/json/angi-ScaleOut/kill_prim_worker_inst.json
102 changes: 102 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_worker_inst_fencing_alert.json
158 changes: 85 additions & 73 deletions test/json/angi-ScaleOut/kill_prim_worker_node.json
128 changes: 128 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_worker_node_fencing_alert.json
56 changes: 56 additions & 0 deletions test/json/angi-ScaleOut/kill_prim_worker_pacemakerd.json
152 changes: 74 additions & 78 deletions test/json/angi-ScaleOut/kill_secn_indexserver.json
112 changes: 112 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_indexserver_fencing_alert.json
148 changes: 71 additions & 77 deletions test/json/angi-ScaleOut/kill_secn_inst.json
70 changes: 70 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_nameserver.json
150 changes: 81 additions & 69 deletions test/json/angi-ScaleOut/kill_secn_node.json
113 changes: 113 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_node_fencing_alert.json
56 changes: 56 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_pacemakerd.json
91 changes: 91 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_pacemkr-ctrld.json
112 changes: 112 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_pacemkr-ctrld_fencing_alert.json
146 changes: 70 additions & 76 deletions test/json/angi-ScaleOut/kill_secn_worker_inst.json
142 changes: 68 additions & 74 deletions test/json/angi-ScaleOut/kill_secn_worker_node.json
110 changes: 110 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_worker_node_fencing_alert.json
56 changes: 56 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_worker_pacemakerd.json
91 changes: 91 additions & 0 deletions test/json/angi-ScaleOut/kill_secn_worker_pacemkr-ctrld.json
40 changes: 40 additions & 0 deletions test/json/angi-ScaleOut/maintenance_cluster_hana_running.json
69 changes: 42 additions & 27 deletions test/json/angi-ScaleOut/maintenance_cluster_turn_hana.json
147 changes: 147 additions & 0 deletions test/json/angi-ScaleOut/maintenance_with_standby_nodes.json
59 changes: 36 additions & 23 deletions test/json/angi-ScaleOut/nop-false.json
55 changes: 34 additions & 21 deletions test/json/angi-ScaleOut/nop.json
10 changes: 8 additions & 2 deletions test/json/angi-ScaleOut/properties.json
5 changes: 5 additions & 0 deletions test/json/angi-ScaleOut/properties_ha1_hdb10.json
66 changes: 40 additions & 26 deletions test/json/angi-ScaleOut/restart_cluster.json
66 changes: 40 additions & 26 deletions test/json/angi-ScaleOut/restart_cluster_hana_running.json
68 changes: 41 additions & 27 deletions test/json/angi-ScaleOut/restart_cluster_turn_hana.json
135 changes: 0 additions & 135 deletions test/json/angi-ScaleOut/sap.json

This file was deleted.

97 changes: 0 additions & 97 deletions test/json/angi-ScaleOut/spn.json

This file was deleted.

98 changes: 0 additions & 98 deletions test/json/angi-ScaleOut/ssn.json

This file was deleted.

101 changes: 101 additions & 0 deletions test/json/angi-ScaleOut/standby_prim_node.json
91 changes: 91 additions & 0 deletions test/json/angi-ScaleOut/standby_secn_node.json
82 changes: 82 additions & 0 deletions test/json/angi-ScaleOut/standby_secn_worker_node.json
51 changes: 51 additions & 0 deletions test/json/angi-ScaleUp/block_manual_takeover.json
57 changes: 57 additions & 0 deletions test/json/angi-ScaleUp/block_sr.json
100 changes: 100 additions & 0 deletions test/json/angi-ScaleUp/block_sr_and_freeze_prim_fs.json
42 changes: 0 additions & 42 deletions test/json/angi-ScaleUp/bmt.json

This file was deleted.

70 changes: 0 additions & 70 deletions test/json/angi-ScaleUp/defaultChecks.json

This file was deleted.

77 changes: 77 additions & 0 deletions test/json/angi-ScaleUp/defaults.json
163 changes: 85 additions & 78 deletions test/json/angi-ScaleUp/demo_kill_prim_inst.json
73 changes: 73 additions & 0 deletions test/json/angi-ScaleUp/fatal1.json
79 changes: 79 additions & 0 deletions test/json/angi-ScaleUp/fatal2.json
60 changes: 60 additions & 0 deletions test/json/angi-ScaleUp/fatal_ip_move.json
47 changes: 47 additions & 0 deletions test/json/angi-ScaleUp/flap.json
46 changes: 46 additions & 0 deletions test/json/angi-ScaleUp/flop.json
38 changes: 38 additions & 0 deletions test/json/angi-ScaleUp/flup.json
81 changes: 44 additions & 37 deletions test/json/angi-ScaleUp/free_log_area.json
97 changes: 97 additions & 0 deletions test/json/angi-ScaleUp/freeze_long_secn_fs.json
97 changes: 97 additions & 0 deletions test/json/angi-ScaleUp/freeze_prim_fs.json
100 changes: 100 additions & 0 deletions test/json/angi-ScaleUp/freeze_short_secn_fs.json
162 changes: 85 additions & 77 deletions test/json/angi-ScaleUp/kill_prim_indexserver.json
86 changes: 86 additions & 0 deletions test/json/angi-ScaleUp/kill_prim_indexserver_fencing.json
162 changes: 84 additions & 78 deletions test/json/angi-ScaleUp/kill_prim_inst.json
77 changes: 77 additions & 0 deletions test/json/angi-ScaleUp/kill_prim_inst_fencing.json
49 changes: 49 additions & 0 deletions test/json/angi-ScaleUp/kill_prim_ipaddr.json
69 changes: 69 additions & 0 deletions test/json/angi-ScaleUp/kill_prim_nameserver.json
100 changes: 100 additions & 0 deletions test/json/angi-ScaleUp/kill_prim_node.json
50 changes: 50 additions & 0 deletions test/json/angi-ScaleUp/kill_prim_pacemakerd.json
99 changes: 99 additions & 0 deletions test/json/angi-ScaleUp/kill_prim_pacemkr-ctrld.json
145 changes: 67 additions & 78 deletions test/json/angi-ScaleUp/kill_secn_indexserver.json
83 changes: 83 additions & 0 deletions test/json/angi-ScaleUp/kill_secn_indexserver_fencing.json
139 changes: 63 additions & 76 deletions test/json/angi-ScaleUp/kill_secn_inst.json
69 changes: 69 additions & 0 deletions test/json/angi-ScaleUp/kill_secn_nameserver.json
80 changes: 80 additions & 0 deletions test/json/angi-ScaleUp/kill_secn_node.json
49 changes: 49 additions & 0 deletions test/json/angi-ScaleUp/kill_secn_pacemakerd.json
78 changes: 78 additions & 0 deletions test/json/angi-ScaleUp/kill_secn_pacemkr-ctrld.json
105 changes: 105 additions & 0 deletions test/json/angi-ScaleUp/maintenance_cluster_bootstrap.json
41 changes: 41 additions & 0 deletions test/json/angi-ScaleUp/maintenance_cluster_hana_running.json
62 changes: 36 additions & 26 deletions test/json/angi-ScaleUp/maintenance_cluster_turn_hana.json
142 changes: 142 additions & 0 deletions test/json/angi-ScaleUp/maintenance_with_standby_nodes.json
49 changes: 29 additions & 20 deletions test/json/angi-ScaleUp/nop.json
99 changes: 99 additions & 0 deletions test/json/angi-ScaleUp/one_stable_hour.json
9 changes: 8 additions & 1 deletion test/json/angi-ScaleUp/properties.json
1 change: 1 addition & 0 deletions test/json/angi-ScaleUp/register_prim_cold_hana.json
59 changes: 33 additions & 26 deletions test/json/angi-ScaleUp/restart_cluster.json
59 changes: 33 additions & 26 deletions test/json/angi-ScaleUp/restart_cluster_hana_running.json
61 changes: 34 additions & 27 deletions test/json/angi-ScaleUp/restart_cluster_turn_hana.json
135 changes: 0 additions & 135 deletions test/json/angi-ScaleUp/sap.json

This file was deleted.

99 changes: 99 additions & 0 deletions test/json/angi-ScaleUp/split_brain_prio.json
97 changes: 0 additions & 97 deletions test/json/angi-ScaleUp/spn.json

This file was deleted.

48 changes: 48 additions & 0 deletions test/json/angi-ScaleUp/sshtimeout.json
98 changes: 0 additions & 98 deletions test/json/angi-ScaleUp/ssn.json

This file was deleted.

90 changes: 90 additions & 0 deletions test/json/angi-ScaleUp/standby_prim_node.json
84 changes: 84 additions & 0 deletions test/json/angi-ScaleUp/standby_secn_node.json
42 changes: 42 additions & 0 deletions test/json/classic-ScaleOut-BW/block_manual_takeover.json
59 changes: 59 additions & 0 deletions test/json/classic-ScaleOut-BW/defaults.json
42 changes: 42 additions & 0 deletions test/json/classic-ScaleOut-BW/free_log_area.json
97 changes: 97 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_prim_indexserver.json
99 changes: 99 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_prim_inst.json
90 changes: 90 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_prim_node.json
95 changes: 95 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_prim_worker_indexserver.json
97 changes: 97 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_prim_worker_inst.json
93 changes: 93 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_prim_worker_node.json
95 changes: 95 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_secn_indexserver.json
94 changes: 94 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_secn_inst.json
89 changes: 89 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_secn_node.json
74 changes: 74 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_secn_worker_inst.json
72 changes: 72 additions & 0 deletions test/json/classic-ScaleOut-BW/kill_secn_worker_node.json
32 changes: 32 additions & 0 deletions test/json/classic-ScaleOut-BW/maintenance_cluster_turn_hana.json
136 changes: 136 additions & 0 deletions test/json/classic-ScaleOut-BW/maintenance_with_standby_nodes.json
33 changes: 33 additions & 0 deletions test/json/classic-ScaleOut-BW/nop-false.json
31 changes: 31 additions & 0 deletions test/json/classic-ScaleOut-BW/nop.json
6 changes: 6 additions & 0 deletions test/json/classic-ScaleOut-BW/properties.json
5 changes: 5 additions & 0 deletions test/json/classic-ScaleOut-BW/properties_ha1_hdb10.json
31 changes: 31 additions & 0 deletions test/json/classic-ScaleOut-BW/restart_cluster.json
31 changes: 31 additions & 0 deletions test/json/classic-ScaleOut-BW/restart_cluster_hana_running.json
32 changes: 32 additions & 0 deletions test/json/classic-ScaleOut-BW/restart_cluster_turn_hana.json
97 changes: 97 additions & 0 deletions test/json/classic-ScaleOut-BW/standby_prim_node.json
98 changes: 98 additions & 0 deletions test/json/classic-ScaleOut-BW/standby_secn_node.json
45 changes: 45 additions & 0 deletions test/json/classic-ScaleOut/block_manual_takeover.json
74 changes: 74 additions & 0 deletions test/json/classic-ScaleOut/defaults.json
32 changes: 32 additions & 0 deletions test/json/classic-ScaleOut/flup.json
45 changes: 45 additions & 0 deletions test/json/classic-ScaleOut/free_log_area.json
96 changes: 96 additions & 0 deletions test/json/classic-ScaleOut/kill_prim_indexserver.json
95 changes: 95 additions & 0 deletions test/json/classic-ScaleOut/kill_prim_inst.json
90 changes: 90 additions & 0 deletions test/json/classic-ScaleOut/kill_prim_node.json
50 changes: 50 additions & 0 deletions test/json/classic-ScaleOut/kill_prim_pacemakerd.json
95 changes: 95 additions & 0 deletions test/json/classic-ScaleOut/kill_prim_worker_indexserver.json
95 changes: 95 additions & 0 deletions test/json/classic-ScaleOut/kill_prim_worker_inst.json
93 changes: 93 additions & 0 deletions test/json/classic-ScaleOut/kill_prim_worker_node.json
95 changes: 95 additions & 0 deletions test/json/classic-ScaleOut/kill_secn_indexserver.json
94 changes: 94 additions & 0 deletions test/json/classic-ScaleOut/kill_secn_inst.json
89 changes: 89 additions & 0 deletions test/json/classic-ScaleOut/kill_secn_node.json
49 changes: 49 additions & 0 deletions test/json/classic-ScaleOut/kill_secn_pacemakerd.json
76 changes: 76 additions & 0 deletions test/json/classic-ScaleOut/kill_secn_worker_inst.json
74 changes: 74 additions & 0 deletions test/json/classic-ScaleOut/kill_secn_worker_node.json
34 changes: 34 additions & 0 deletions test/json/classic-ScaleOut/maintenance_cluster_turn_hana.json
140 changes: 140 additions & 0 deletions test/json/classic-ScaleOut/maintenance_with_standby_nodes.json
34 changes: 34 additions & 0 deletions test/json/classic-ScaleOut/nop-false.json
32 changes: 32 additions & 0 deletions test/json/classic-ScaleOut/nop.json
6 changes: 6 additions & 0 deletions test/json/classic-ScaleOut/properties.json
5 changes: 5 additions & 0 deletions test/json/classic-ScaleOut/properties_ha1_hdb10.json
33 changes: 33 additions & 0 deletions test/json/classic-ScaleOut/restart_cluster.json
33 changes: 33 additions & 0 deletions test/json/classic-ScaleOut/restart_cluster_hana_running.json
34 changes: 34 additions & 0 deletions test/json/classic-ScaleOut/restart_cluster_turn_hana.json
97 changes: 97 additions & 0 deletions test/json/classic-ScaleOut/standby_prim_node.json
98 changes: 98 additions & 0 deletions test/json/classic-ScaleOut/standby_secn_node.json
51 changes: 51 additions & 0 deletions test/json/classic-ScaleUp/block_manual_takeover.json
62 changes: 62 additions & 0 deletions test/json/classic-ScaleUp/block_sr.json
42 changes: 0 additions & 42 deletions test/json/classic-ScaleUp/bmt.json

This file was deleted.

47 changes: 0 additions & 47 deletions test/json/classic-ScaleUp/defaultChecks.json

This file was deleted.

48 changes: 48 additions & 0 deletions test/json/classic-ScaleUp/defaults.json
34 changes: 34 additions & 0 deletions test/json/classic-ScaleUp/flup.json
81 changes: 44 additions & 37 deletions test/json/classic-ScaleUp/free_log_area.json
157 changes: 78 additions & 79 deletions test/json/classic-ScaleUp/kill_prim_indexserver.json
155 changes: 76 additions & 79 deletions test/json/classic-ScaleUp/kill_prim_inst.json
49 changes: 49 additions & 0 deletions test/json/classic-ScaleUp/kill_prim_ipaddr.json
64 changes: 64 additions & 0 deletions test/json/classic-ScaleUp/kill_prim_nameserver.json
92 changes: 92 additions & 0 deletions test/json/classic-ScaleUp/kill_prim_nic.json
92 changes: 92 additions & 0 deletions test/json/classic-ScaleUp/kill_prim_node.json
50 changes: 50 additions & 0 deletions test/json/classic-ScaleUp/kill_prim_pacemakerd.json
93 changes: 93 additions & 0 deletions test/json/classic-ScaleUp/kill_prim_pacemkr-ctrld.json
151 changes: 76 additions & 75 deletions test/json/classic-ScaleUp/kill_secn_indexserver.json
149 changes: 74 additions & 75 deletions test/json/classic-ScaleUp/kill_secn_inst.json
65 changes: 65 additions & 0 deletions test/json/classic-ScaleUp/kill_secn_nameserver.json
77 changes: 77 additions & 0 deletions test/json/classic-ScaleUp/kill_secn_node.json
49 changes: 49 additions & 0 deletions test/json/classic-ScaleUp/kill_secn_pacemakerd.json
76 changes: 76 additions & 0 deletions test/json/classic-ScaleUp/kill_secn_pacemkr-ctrld.json
37 changes: 37 additions & 0 deletions test/json/classic-ScaleUp/maintenance_cluster_hana_running.json
59 changes: 33 additions & 26 deletions test/json/classic-ScaleUp/maintenance_cluster_turn_hana.json
135 changes: 135 additions & 0 deletions test/json/classic-ScaleUp/maintenance_with_standby_nodes.json
40 changes: 20 additions & 20 deletions test/json/classic-ScaleUp/nop.json
90 changes: 90 additions & 0 deletions test/json/classic-ScaleUp/one_stable_hour.json
4 changes: 2 additions & 2 deletions test/json/classic-ScaleUp/properties.json
57 changes: 31 additions & 26 deletions test/json/classic-ScaleUp/restart_cluster.json
31 changes: 0 additions & 31 deletions test/json/classic-ScaleUp/restart_cluster_hana_running.json

This file was deleted.

58 changes: 32 additions & 26 deletions test/json/classic-ScaleUp/restart_cluster_turn_hana.json
135 changes: 0 additions & 135 deletions test/json/classic-ScaleUp/sap.json

This file was deleted.

85 changes: 85 additions & 0 deletions test/json/classic-ScaleUp/split_brain_prio.json
97 changes: 0 additions & 97 deletions test/json/classic-ScaleUp/spn.json

This file was deleted.

98 changes: 0 additions & 98 deletions test/json/classic-ScaleUp/ssn.json

This file was deleted.

88 changes: 88 additions & 0 deletions test/json/classic-ScaleUp/standby_prim_node.json
79 changes: 79 additions & 0 deletions test/json/classic-ScaleUp/standby_secn_node.json
37 changes: 37 additions & 0 deletions test/json/faults/faulty-syntax-flep.json
71 changes: 0 additions & 71 deletions test/loopTests

This file was deleted.

73 changes: 0 additions & 73 deletions test/loopTests-multiNode

This file was deleted.

71 changes: 0 additions & 71 deletions test/loopTests02

This file was deleted.

File renamed without changes.
File renamed without changes.
10 changes: 10 additions & 0 deletions test/misc/fix_indent
6 changes: 6 additions & 0 deletions test/misc/fix_indent.txt
File renamed without changes.
1 change: 0 additions & 1 deletion test/properties.json

This file was deleted.

Loading