Inservice post-install script
Adding a post-install for an inservice patch to restart all services during host install to make the changes live. If it is the active controller, the software-controller cannot be restarted at this time, so leaves a flag for it to be restarted during activate step. Test-Plan SX/DX: PASS: Run an inservice patch with this script and check if the changes are applied PASS: Apply an inservice patch pre-bootstrap Story: 2010676 Task: 52804 Change-Id: Id5b853cea0f80af6124c45aab231c44c34d65576 Signed-off-by: Lindley Vieira <lindley.vieira@windriver.com>
This commit is contained in:
85
patch-scripts/install-scripts/24.09.400/post-install.sh
Normal file
85
patch-scripts/install-scripts/24.09.400/post-install.sh
Normal file
@@ -0,0 +1,85 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2025 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
# Source platform.conf, for nodetype and subfunctions
|
||||
. /etc/platform/platform.conf
|
||||
|
||||
PATCH_STATUS_OK=0
|
||||
PATCH_STATUS_FAILED=1
|
||||
|
||||
logfile="/var/log/software.log"
|
||||
NAME=$(basename "$0")
|
||||
|
||||
CREDENTIAL_FILE="/opt/platform/.keyring/24.09/.CREDENTIAL"
|
||||
BOOTSTRAP_COMPLETED_FLAG="/etc/platform/.bootstrap_completed"
|
||||
INITIAL_CONFIG_COMPLETE_FLAG="/etc/platform/.initial_config_complete"
|
||||
RESTART_SERVICES_FLAG="/run/software/.activate.restart-services.flag"
|
||||
|
||||
loginfo() {
|
||||
echo "$(date "+%FT%T.%3N"): $NAME: $*" >> "$logfile"
|
||||
}
|
||||
|
||||
is_active_controller() {
|
||||
[[ "$nodetype" == "controller" && -f "$CREDENTIAL_FILE" ]]
|
||||
}
|
||||
|
||||
is_standby_controller() {
|
||||
[[ "$nodetype" == "controller" && ! -f "$CREDENTIAL_FILE" ]]
|
||||
}
|
||||
|
||||
not_controller() {
|
||||
[[ "$nodetype" != "controller" ]]
|
||||
}
|
||||
|
||||
# Check if /etc is a bind mount
|
||||
BIND_SOURCE=$(findmnt /etc -n -o SOURCE)
|
||||
if [[ -z "$BIND_SOURCE" ]]; then
|
||||
loginfo "Not an inservice patch, exiting"
|
||||
exit "$PATCH_STATUS_OK"
|
||||
fi
|
||||
|
||||
# Pre-bootstrap does not need to restart services since it will be unlocked later
|
||||
if [ ! -f "$BOOTSTRAP_COMPLETED_FLAG" ] && [ ! -f "$INITIAL_CONFIG_COMPLETE_FLAG"]; then
|
||||
loginfo "Pre-bootstrap, exiting"
|
||||
exit "$PATCH_STATUS_OK"
|
||||
fi
|
||||
|
||||
### Services to restart in all nodes
|
||||
# Set flag to restart software-agent
|
||||
touch /run/software/.restart.software-agent
|
||||
|
||||
### Services to restart only in the active controller
|
||||
if is_active_controller; then
|
||||
loginfo "Running in the active controller"
|
||||
|
||||
# Let a flag for vim, vim-api, and software-controller
|
||||
# services to be restarted during activate
|
||||
touch "$RESTART_SERVICES_FLAG"
|
||||
|
||||
sm-restart-safe service sysinv-conductor
|
||||
|
||||
exit "$PATCH_STATUS_OK"
|
||||
fi
|
||||
|
||||
### Services to restart only in the standby controller
|
||||
if is_standby_controller; then
|
||||
loginfo "Running in the standby controller"
|
||||
|
||||
# It is safe to restart software-controller in the standby controller
|
||||
pmon-restart software-controller-daemon
|
||||
|
||||
exit "$PATCH_STATUS_OK"
|
||||
fi
|
||||
|
||||
### Services to restart only in non-controller nodes
|
||||
if not_controller; then
|
||||
loginfo "Running in non-controller node"
|
||||
|
||||
exit "$PATCH_STATUS_OK"
|
||||
fi
|
||||
|
||||
exit "$PATCH_STATUS_OK"
|
73
patch-scripts/install-scripts/README.md
Normal file
73
patch-scripts/install-scripts/README.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# Install Scripts Management
|
||||
|
||||
This repository manages **pre-install** and **post-install** shell scripts used in the patch deployment process.
|
||||
They run for each patch at the beginning and at the end of `software deploy host` for both inservice and reboot required patches.
|
||||
|
||||
## Folder Structure
|
||||
|
||||
```
|
||||
install-scripts/
|
||||
├── boilerplate/
|
||||
│ ├── pre-install.sh
|
||||
│ └── post-install.sh
|
||||
├── 24.09.400/
|
||||
│ ├── pre-install.sh
|
||||
│ └── post-install.sh
|
||||
├── examples/
|
||||
└── ...
|
||||
```
|
||||
|
||||
- `boilerplate/`:
|
||||
Contains the **default scripts**. These are the standard versions used for most software releases.
|
||||
|
||||
- `MM.mm.pp/`:
|
||||
Contains **version-specific scripts**, only when changes are required that differ from the boilerplate.
|
||||
|
||||
- `examples/`:
|
||||
Contains **previous scripts examples**. Scripts used in old releases.
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
### Default Case
|
||||
|
||||
If the pre and post install steps remain unchanged:
|
||||
- Use the scripts in the `boilerplate/` folder.
|
||||
- No need to create a version-specific directory.
|
||||
|
||||
### When Customization Is Needed
|
||||
|
||||
If any version of the software requires changes to the install scripts:
|
||||
|
||||
1. **Create a version folder** (e.g., `24.09.400/`):
|
||||
```bash
|
||||
mkdir install-scripts/24.09.400
|
||||
```
|
||||
|
||||
2. **Copy the boilerplate scripts**:
|
||||
```bash
|
||||
cp install-scripts/boilerplate/*.sh start-scripts/24.09.400/
|
||||
```
|
||||
|
||||
3. **Edit the scripts** in `24.09.400/` as needed.
|
||||
|
||||
> Always start from the boilerplate to ensure consistency.
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
- **Include comments** in versioned scripts, noting what the change is doing.
|
||||
- Use previous versions as examples of what these scripts can do.
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
Include the license in all scripts
|
||||
|
||||
```
|
||||
Copyright (c) 2025 Wind River Systems, Inc.
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
```
|
Reference in New Issue
Block a user