Refactor/central substitutions #70
@@ -7,26 +7,22 @@ echo "=========================================="
|
||||
echo "Deploying service: $SERVICE_NAME (${AGEBD_ENV})"
|
||||
echo "=========================================="
|
||||
|
||||
SERVICE_NAME_LOWER=$(echo "$SERVICE_NAME" | tr '[:upper:]' '[:lower:]')
|
||||
SERVICE_NAME_UPPER=$(echo "$SERVICE_NAME" | tr '[:lower:]' '[:upper:]')
|
||||
SERVICE_DIR=/sls/bd/hla/${AGEBD_ENV}/services/${SERVICE_NAME_LOWER}/current
|
||||
SYSTEMD_UNIT_NAME=AGEBD-SERVICE-${SERVICE_NAME_UPPER}.service
|
||||
# Name forms and the systemd naming convention come from
|
||||
# agebd.names.ServiceName, so this script carries no copy of them.
|
||||
if ! SERVICE_NAMES=$(uv run --directory scripts ci/service_names.py "${SERVICE_NAME}"); then
|
||||
echo "Could not derive names for '${SERVICE_NAME}' -- aborting deploy" >&2
|
||||
exit 1
|
||||
fi
|
||||
eval "${SERVICE_NAMES}"
|
||||
|
||||
SERVICE_DIR=/sls/bd/hla/${AGEBD_ENV}/services/${SERVICE_DIR_NAME}/current
|
||||
SYSTEMD_UNIT_FILE_PATH=${SERVICE_DIR}/systemd/${SYSTEMD_UNIT_NAME}
|
||||
IOC_DIR=${SERVICE_DIR}/ioc
|
||||
IOC_PORT=$(uv run --directory scripts ci/get_ioc_port.py ${SERVICE_NAME_LOWER})
|
||||
|
||||
if [ "${AGEBD_ENV}" = "dev" ]; then
|
||||
AGEBD_ENV_SUFFIX_UPPER="-DEV"
|
||||
AGEBD_ENV_SUFFIX_LOWER="-dev"
|
||||
else
|
||||
AGEBD_ENV_SUFFIX_UPPER=""
|
||||
AGEBD_ENV_SUFFIX_LOWER=""
|
||||
fi
|
||||
|
||||
# TODO: see https://gitea.psi.ch/sls/hla_framework_bd/issues/50
|
||||
# rm -rf "${SERVICE_DIR}"
|
||||
# mkdir -p ${SERVICE_DIR}
|
||||
# cp -r ./services/${SERVICE_NAME_LOWER}/current/* ${SERVICE_DIR}/
|
||||
# cp -r ./services/${SERVICE_DIR_NAME}/current/* ${SERVICE_DIR}/
|
||||
|
||||
rsync -avz --delete \
|
||||
--exclude='.nfs*' \
|
||||
@@ -35,17 +31,18 @@ rsync -avz --delete \
|
||||
--exclude='__pycache__/' \
|
||||
--exclude='*.pyc' \
|
||||
--exclude='.pytest_cache/' \
|
||||
./services/${SERVICE_NAME_LOWER}/current/* ${SERVICE_DIR}/
|
||||
./services/${SERVICE_DIR_NAME}/current/* ${SERVICE_DIR}/
|
||||
|
||||
### SUBSTITUTIONS
|
||||
### IOC
|
||||
sed -i "s/{{ *agebd_env_suffix_upper* }}/${AGEBD_ENV_SUFFIX_UPPER}/g" "${IOC_DIR}/"*
|
||||
sed -i "s/{{ *agebd_env_suffix_lower* }}/${AGEBD_ENV_SUFFIX_LOWER}/g" "${IOC_DIR}/"*
|
||||
sed -i "s/{{ *ioc_port* }}/${IOC_PORT}/g" "${IOC_DIR}/"*
|
||||
|
||||
### SYSTEMD
|
||||
if [ -f "${SYSTEMD_UNIT_FILE_PATH}" ]; then
|
||||
sed -i "s/{{ *agebd_env* }}/${AGEBD_ENV}/g" "${SYSTEMD_UNIT_FILE_PATH}"
|
||||
# Every @@token@@ is resolved from config/environments.yml and
|
||||
# config/services_registry.yml. An unknown or misspelled token aborts the
|
||||
# deploy instead of leaving the placeholder in a file the IOC will read.
|
||||
if ! uv run --directory scripts ci/render_subs.py \
|
||||
--env "${AGEBD_ENV}" \
|
||||
--service "${SERVICE_DIR_NAME}" \
|
||||
"${IOC_DIR}" "${SERVICE_DIR}/systemd"; then
|
||||
echo "Substitution failed -- aborting deploy of ${SERVICE_NAME}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,12 @@ jobs:
|
||||
echo $UV_CACHE_DIR
|
||||
uv run --directory cli pytest
|
||||
|
||||
# Includes check_subs: every @@token@@ the new service brought in must be
|
||||
# declared in config/environments.yml and live in a rendered path.
|
||||
- name: Run scripts tests
|
||||
run: |
|
||||
uv run --directory scripts pytest
|
||||
|
||||
- name: Parse Service Directory Name
|
||||
id: parse_branch
|
||||
# Uses bash shell parameter elimination to strip 'feature/add-service-' from the front
|
||||
|
||||
@@ -116,6 +116,11 @@ jobs:
|
||||
--exclude='.pytest_cache/' \
|
||||
./qt/* "${DEST_DIR}/"
|
||||
|
||||
# Resolve @@token@@ in the deployed UI files. qt/ holds no
|
||||
# per-service token, so no --service is needed; a file that
|
||||
# acquired one would fail here rather than ship the placeholder.
|
||||
uv run --directory scripts ci/render_subs.py --env "${AGEBD_ENV}" "${DEST_DIR}"
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Services Detection, Testing, and Deployment
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
[defaults]
|
||||
remote_tmp = /tmp/ansible-$USER
|
||||
|
||||
# some responses of 'ioc ...' cli are non-utf8
|
||||
module_strict_utf8_response = False
|
||||
|
||||
# ./ refers to dir in which this file is located
|
||||
collections_path = ./installed-collections
|
||||
@@ -1,3 +0,0 @@
|
||||
collections:
|
||||
- name: ansible.posix
|
||||
version: 1.6.0
|
||||
@@ -1,19 +0,0 @@
|
||||
all:
|
||||
vars:
|
||||
agebd_env: "dev"
|
||||
env_suffix_upper: "-DEV"
|
||||
env_suffix_lower: "-dev"
|
||||
|
||||
children:
|
||||
lc:
|
||||
hosts:
|
||||
sls-lc:
|
||||
ansible_remote_tmp: /tmp/.ansible_${ansible_user}_tmp
|
||||
vserv:
|
||||
hosts:
|
||||
sls-vserv-bd-01-dev:
|
||||
ansible_ssh_pipelining: true
|
||||
ansible_ssh_common_args: '-o ForwardAgent=yes'
|
||||
vserv-hla:
|
||||
hosts:
|
||||
sls-vserv-bd-hla01-dev:
|
||||
@@ -1,18 +0,0 @@
|
||||
all:
|
||||
vars:
|
||||
agebd_env: "prod"
|
||||
env_suffix_upper: ""
|
||||
env_suffix_lower: ""
|
||||
|
||||
children:
|
||||
lc:
|
||||
hosts:
|
||||
sls-lca:
|
||||
ansible_remote_tmp: /tmp/.ansible_${ansible_user}_tmp
|
||||
vserv:
|
||||
hosts:
|
||||
sls-vserv-bd-01:
|
||||
ansible_ssh_pipelining: true
|
||||
vserv-hla:
|
||||
hosts:
|
||||
sls-vserv-bd-hla01:
|
||||
@@ -1,42 +0,0 @@
|
||||
---
|
||||
- name: Add a new service
|
||||
hosts: vserv-hla
|
||||
connection: local
|
||||
gather_facts: true # Gather once here, available to all included tasks!
|
||||
|
||||
vars:
|
||||
repo_root: "{{ playbook_dir }}/../.."
|
||||
|
||||
tasks:
|
||||
# - name: Install Master IOC
|
||||
# vars:
|
||||
# preferred_service_name_lower: master
|
||||
# branch_name: "feature/add-service-{{ service_name_lower }}"
|
||||
# import_tasks: ../tasks/ioc/ioc-install.yml
|
||||
|
||||
# - name: Restart Master IOC
|
||||
# vars:
|
||||
# preferred_service_name_lower: master
|
||||
# branch_name: "feature/add-service-{{ service_name_lower }}"
|
||||
# import_tasks: ../tasks/ioc/ioc-restart.yml
|
||||
|
||||
- name: Deploy and Restart Master Service
|
||||
vars:
|
||||
preferred_service_name_lower: master
|
||||
branch_name: "feature/add-service-{{ service_name_lower }}"
|
||||
import_tasks: ../tasks/service/service-deploy-and-restart.yml
|
||||
|
||||
# - name: Install New IOC
|
||||
# vars:
|
||||
# branch_name: "feature/add-service-{{ service_name_lower }}"
|
||||
# import_tasks: ../tasks/ioc/ioc-install.yml
|
||||
|
||||
# - name: Start New IOC
|
||||
# vars:
|
||||
# branch_name: "feature/add-service-{{ service_name_lower }}"
|
||||
# import_tasks: ../tasks/ioc/ioc-start.yml
|
||||
|
||||
- name: Deploy and Restart New Service
|
||||
vars:
|
||||
branch_name: "feature/add-service-{{ service_name_lower }}"
|
||||
import_tasks: ../tasks/service/service-deploy-and-restart.yml
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
- name: Deploy and Restart Modified Services
|
||||
hosts: vserv-hla
|
||||
connection: local
|
||||
|
||||
vars:
|
||||
# Passed from the Gitea workflow, e.g., "master playground"
|
||||
changed_services_raw: ""
|
||||
agebd_env: "dev"
|
||||
repo_root: "{{ playbook_dir }}/../.."
|
||||
|
||||
tasks:
|
||||
# Fail early if no services were modified
|
||||
- name: Check if there are services to deploy
|
||||
ansible.builtin.meta: end_play
|
||||
when: changed_services_raw | trim == ""
|
||||
|
||||
# Main Loop: loop through the list of modified service names
|
||||
- name: Deploy and Restart Modified Services
|
||||
include_tasks: ../tasks/service/service-deploy-and-restart.yml
|
||||
loop: "{{ changed_services_raw.split() }}"
|
||||
loop_control:
|
||||
loop_var: service_name_lower
|
||||
extended: yes
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
- name: Install an IOC
|
||||
hosts: lc
|
||||
gather_facts: false
|
||||
|
||||
vars:
|
||||
workspace_dir: "/tmp/hla_framework_bd"
|
||||
|
||||
tasks:
|
||||
- name: Run ioc install tasks
|
||||
ansible.builtin.import_tasks: ../tasks/ioc/ioc-install.yml
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
- name: Restart an IOC
|
||||
hosts: lc
|
||||
gather_facts: false
|
||||
|
||||
vars:
|
||||
workspace_dir: "/tmp/hla_framework_bd"
|
||||
|
||||
tasks:
|
||||
- name: Run ioc restart tasks
|
||||
ansible.builtin.include_tasks: ../tasks/ioc/ioc-restart.yml
|
||||
@@ -1,14 +0,0 @@
|
||||
# TODO: ansible seems to be very slow on this machine
|
||||
# each step takes quite a while (e.g. cloning repo, which
|
||||
# is significantly faster on other machines).
|
||||
---
|
||||
- name: Start an IOC
|
||||
hosts: vserv
|
||||
gather_facts: false
|
||||
|
||||
vars:
|
||||
workspace_dir: "/tmp/hla_framework_bd"
|
||||
|
||||
tasks:
|
||||
- name: Run ioc start tasks
|
||||
ansible.builtin.import_tasks: ../tasks/ioc/ioc-start.yml
|
||||
@@ -1,63 +0,0 @@
|
||||
---
|
||||
- name: Init service name
|
||||
ansible.builtin.import_tasks: ../utils/init-service-name.yml
|
||||
|
||||
- name: Clone repo
|
||||
ansible.builtin.import_tasks: ../utils/clone-repo.yml
|
||||
|
||||
- name: Get and set ioc_port
|
||||
ansible.builtin.import_tasks: ../utils/get-ioc-port.yml
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Establish environment naming conventions"
|
||||
ansible.builtin.set_fact:
|
||||
service_name_upper: "{{ target_service_name_lower | upper }}"
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Define file paths"
|
||||
ansible.builtin.set_fact:
|
||||
ioc_base_dir: "{{ workspace_dir }}/services/{{ target_service_name_lower }}/current/ioc"
|
||||
orig_subs_name: "AGEBD-CPCL-{{ service_name_upper }}_main.subs"
|
||||
target_subs_name: "AGEBD-CPCL-{{ service_name_upper }}{{ env_suffix_upper }}_main.subs"
|
||||
orig_params_name: "AGEBD-CPCL-{{ service_name_upper }}_parameters.yaml"
|
||||
target_params_name: "AGEBD-CPCL-{{ service_name_upper }}{{ env_suffix_upper }}_parameters.yaml"
|
||||
|
||||
# Rename the subs file if we are in DEV
|
||||
- name: "[{{ target_service_name_lower }}] Rename substitution file for environment"
|
||||
ansible.builtin.command:
|
||||
cmd: "mv {{ ioc_base_dir }}/{{ orig_subs_name }} {{ ioc_base_dir }}/{{ target_subs_name }}"
|
||||
removes: "{{ ioc_base_dir }}/{{ orig_subs_name }}" # Only runs if the original file exists
|
||||
|
||||
# Rename the paramters file if we are in DEV
|
||||
- name: "[{{ target_service_name_lower }}] Rename parameters file for environment"
|
||||
ansible.builtin.command:
|
||||
cmd: "mv {{ ioc_base_dir }}/{{ orig_params_name }} {{ ioc_base_dir }}/{{ target_params_name }}"
|
||||
removes: "{{ ioc_base_dir }}/{{ orig_params_name }}" # Only runs if the original file exists
|
||||
|
||||
# Replace {{ agebd_env_suffix_upper }} inside the newly renamed subs file
|
||||
- name: "[{{ target_service_name_lower }}] Substitute environment tokens inside subs file"
|
||||
ansible.builtin.replace:
|
||||
path: "{{ ioc_base_dir }}/{{ target_subs_name }}"
|
||||
regexp: '\{\{\s*agebd_env_suffix_upper\s*\}\}'
|
||||
replace: "{{ env_suffix_upper }}"
|
||||
|
||||
# Replace {{ agebd_env_suffix_lower }} and {{ ioc_port }} inside the newly renamed params file
|
||||
- name: "[{{ target_service_name_lower }}] Substitute environment token inside params file"
|
||||
ansible.builtin.replace:
|
||||
path: "{{ ioc_base_dir }}/{{ target_params_name }}"
|
||||
regexp: "{{ item.regexp }}"
|
||||
replace: "{{ item.replace | string }}"
|
||||
with_items:
|
||||
- { regexp: '\{\{\s*agebd_env_suffix_lower\s*\}\}', replace: "{{ env_suffix_lower }}" }
|
||||
- { regexp: '\{\{\s*ioc_port\s*\}\}', replace: "{{ ioc_port }}" }
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Run ioc install"
|
||||
ansible.builtin.shell:
|
||||
cmd: "ioc install -V --facility sls --ioc AGEBD-CPCL-{{ service_name_upper }}{{ env_suffix_upper }} --clean"
|
||||
chdir: "{{ ioc_base_dir }}"
|
||||
changed_when: true
|
||||
register: ioc_install_result
|
||||
# Force a pipeline failure if the command output contains error keywords
|
||||
# (ioc install ... returns exit code 0 even on failure...)
|
||||
failed_when: >
|
||||
ioc_install_result.rc != 0 or
|
||||
"[error]" in ioc_install_result.stderr or
|
||||
"Unable to write" in ioc_install_result.stderr
|
||||
@@ -1,20 +0,0 @@
|
||||
---
|
||||
- name: Init service name
|
||||
ansible.builtin.import_tasks: ../utils/init-service-name.yml
|
||||
|
||||
- name: Clone repo
|
||||
ansible.builtin.import_tasks: ../utils/clone-repo.yml
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Establish environment naming conventions"
|
||||
ansible.builtin.set_fact:
|
||||
service_name_upper: "{{ target_service_name_lower | upper }}"
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Define file paths"
|
||||
ansible.builtin.set_fact:
|
||||
ioc_base_dir: "{{ workspace_dir }}/services/{{ target_service_name_lower }}/current/ioc"
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Restart IOC"
|
||||
ansible.builtin.shell:
|
||||
cmd: "ioc restart AGEBD-CPCL-{{ service_name_upper }}{{ env_suffix_upper }}"
|
||||
chdir: "{{ ioc_base_dir }}"
|
||||
changed_when: true
|
||||
@@ -1,17 +0,0 @@
|
||||
---
|
||||
- name: Init service name
|
||||
ansible.builtin.import_tasks: ../utils/init-service-name.yml
|
||||
|
||||
- name: Clone repo
|
||||
ansible.builtin.import_tasks: ../utils/clone-repo.yml
|
||||
|
||||
- name: Get and set ioc_port
|
||||
ansible.builtin.import_tasks: ../utils/get-ioc-port.yml
|
||||
|
||||
- name: "[{{ ioc_port }}] Start IOC"
|
||||
ansible.builtin.shell: |
|
||||
sudo shellbox status
|
||||
sudo shellbox reload
|
||||
sudo shellbox status
|
||||
sudo shellbox start {{ ioc_port }}
|
||||
changed_when: true
|
||||
@@ -1,53 +0,0 @@
|
||||
---
|
||||
- name: Initialize service name
|
||||
ansible.builtin.set_fact:
|
||||
# Uses preferred_service_name_lower if defined in vars, otherwise falls back to the CLI extra-vars
|
||||
target_service_name_lower: "{{ preferred_service_name_lower | default(service_name_lower) }}"
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Define service specific paths and names"
|
||||
ansible.builtin.set_fact:
|
||||
svc_current_dir: "/sls/bd/hla/{{ agebd_env }}/services/{{ target_service_name_lower }}/current"
|
||||
service_unit_name: "AGEBD-SERVICE-{{ target_service_name_lower | upper }}.service"
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Ensure target directory structure exists"
|
||||
ansible.builtin.file:
|
||||
path: "{{ svc_current_dir }}"
|
||||
state: directory
|
||||
# ansible.builtin.shell: |
|
||||
# mkdir -p "{{ svc_current_dir }}"
|
||||
|
||||
# TODO: make sure this is what we want (essentially wipes existing dest dir). Does it remove .venv?
|
||||
- name: "[{{ target_service_name_lower }}] Sync service deployment files"
|
||||
ansible.posix.synchronize:
|
||||
src: "{{ repo_root }}/services/{{ target_service_name_lower }}/current/"
|
||||
dest: "{{ svc_current_dir }}/"
|
||||
delete: yes # This removes stale files on the target that no longer exist locally
|
||||
recursive: yes
|
||||
|
||||
- name: "[{{ target_service_name_lower }}] Substitute environment variable inline"
|
||||
ansible.builtin.replace:
|
||||
path: "{{ svc_current_dir }}/systemd/{{ service_unit_name }}"
|
||||
regexp: '\{\{\s*agebd_env\s*\}\}'
|
||||
replace: "{{ agebd_env }}"
|
||||
|
||||
# systemctl --user link --force "./{{ service_unit_name }}"
|
||||
- name: "[{{ target_service_name_lower }}] Symlink systemd unit file (Absolute Path)"
|
||||
ansible.builtin.file:
|
||||
src: "{{ svc_current_dir }}/systemd/{{ service_unit_name }}"
|
||||
dest: "~/.config/systemd/user/{{ service_unit_name }}"
|
||||
state: link
|
||||
force: yes # This overwrites the broken/existing symlink cleanly without error
|
||||
|
||||
# export XDG_RUNTIME_DIR=/run/user/$(id -u)
|
||||
# systemctl --user daemon-reload
|
||||
# systemctl --user enable "{{ service_unit_name }}"
|
||||
# systemctl --user restart "{{ service_unit_name }}"
|
||||
- name: "[{{ target_service_name_lower }}] Enable and Restart Systemd Service"
|
||||
ansible.builtin.systemd_service:
|
||||
name: "{{ service_unit_name }}"
|
||||
scope: user
|
||||
daemon_reload: yes
|
||||
enabled: yes
|
||||
state: restarted
|
||||
environment:
|
||||
XDG_RUNTIME_DIR: "/run/user/{{ ansible_user_uid }}"
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
- name: Clone this repository
|
||||
ansible.builtin.git:
|
||||
repo: "git@gitea.psi.ch:sls/hla_framework_bd.git"
|
||||
dest: "{{ workspace_dir }}"
|
||||
accept_hostkey: true
|
||||
version: "{{ branch_name }}"
|
||||
force: true
|
||||
@@ -1,18 +0,0 @@
|
||||
---
|
||||
- name: Read the service registry file
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ workspace_dir }}/config/services_registry.yml"
|
||||
register: remote_registry_file
|
||||
|
||||
- name: Parse the service registry YAML content into a fact
|
||||
ansible.builtin.set_fact:
|
||||
services_registry: "{{ remote_registry_file.content | b64decode | from_yaml }}"
|
||||
|
||||
- name: Extract the port from the services registry and save it as a persistent fact
|
||||
ansible.builtin.set_fact:
|
||||
ioc_port: "{{ services_registry.services | selectattr('name', 'equalto', target_service_name_lower) | map(attribute='ioc_port') | first | default(none) }}"
|
||||
|
||||
- name: Fail if the service or port wasn't found in the registry
|
||||
ansible.builtin.fail:
|
||||
msg: "Service '{{ target_service_name_lower }}' not found in services registry or port not set"
|
||||
when: ioc_port | trim == "" or ioc_port is none
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
- name: Initialize service name
|
||||
ansible.builtin.set_fact:
|
||||
# Uses preferred_service_name_lower if defined in vars, otherwise falls back to the CLI extra-vars
|
||||
target_service_name_lower: "{{ preferred_service_name_lower | default(service_name_lower) }}"
|
||||
@@ -4,12 +4,13 @@ UI_FILENAME=$1
|
||||
AGEBD_ENV=$2 # 'dev' for dev environment, any other string launches prod.
|
||||
REMAINING_ARGS=( "${@:3}" )
|
||||
|
||||
# The environment suffix is baked into the UI files when qt/ is rendered at
|
||||
# deploy time, from config/environments.yml. Launching from
|
||||
# /sls/bd/hla/${AGEBD_ENV}/qt therefore already targets the right devices, so
|
||||
# no AGEBD_ENV_SUFFIX macro is passed here.
|
||||
if [ "$AGEBD_ENV" = "dev" ]; then
|
||||
AGEBD_ENV_SUFFIX="-DEV"
|
||||
EPICS_CA_ADDR_LIST="$EPICS_CA_ADDR_LIST 129.129.146.255"
|
||||
else
|
||||
AGEBD_ENV_SUFFIX=""
|
||||
fi
|
||||
|
||||
export EPICS_CA_ADDR_LIST
|
||||
caqtdm -macro "AGEBD_ENV_SUFFIX=${AGEBD_ENV_SUFFIX}" "${REMAINING_ARGS[@]}" "${UI_FILENAME}"
|
||||
caqtdm "${REMAINING_ARGS[@]}" "${UI_FILENAME}"
|
||||
|
||||
@@ -7,6 +7,10 @@ set --
|
||||
# PSI_FACILITY=SLS
|
||||
|
||||
SERVICES_DIR=/sls/bd/hla/${AGEBD_ENV}/services
|
||||
# These two derivations are the one place that deliberately does not use
|
||||
# agebd.names.ServiceName: this runs on the deploy host before any Python
|
||||
# environment for the service exists (the venv is built further down), so it
|
||||
# cannot import agebd. Keep the rules here in step with agebd/names.py.
|
||||
SVC_NAME_LOWER=${SVC_NAME,,}
|
||||
SVC_NAME_LOWER_UNDERSCORES="${SVC_NAME_LOWER//-/_}"
|
||||
SVC_DIR=${SERVICES_DIR}/${SVC_NAME_LOWER}
|
||||
|
||||
@@ -9,8 +9,6 @@ authors = [
|
||||
|
||||
dependencies = [
|
||||
"agebd",
|
||||
"ansible>=8.7.0",
|
||||
"ansible-runner>=2.4.3",
|
||||
"copier>=9.10.3",
|
||||
"pydantic>=2.13.4",
|
||||
"pydantic-settings>=2.14.2",
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
import ansible_runner
|
||||
import typer
|
||||
|
||||
from agebd.utils import get_git_root
|
||||
from core.enums import IOC_ENV
|
||||
|
||||
ioc = typer.Typer(no_args_is_help=True)
|
||||
|
||||
REPO_ROOT = get_git_root(__file__)
|
||||
|
||||
|
||||
def run_playbook(playbook: str, env: IOC_ENV, vars: list[str]):
|
||||
env_str = str(env)
|
||||
if env_str not in ["dev", "prod"]:
|
||||
raise ValueError("env must be 'dev' or 'prod'")
|
||||
|
||||
current_env = os.environ.copy()
|
||||
current_env["ANSIBLE_CONFIG"] = f"{REPO_ROOT}/ansible/ansible.cfg"
|
||||
|
||||
extra_vars = [f"--extra-vars={var}" for var in vars]
|
||||
out, err, rc = ansible_runner.run_command(
|
||||
executable_cmd=f"ansible-playbook",
|
||||
cmdline_args=[
|
||||
playbook,
|
||||
"-i",
|
||||
f"{REPO_ROOT}/ansible/inventories/{env_str}/hosts.yml",
|
||||
*extra_vars,
|
||||
"-v",
|
||||
],
|
||||
envvars=current_env,
|
||||
input_fd=sys.stdin,
|
||||
output_fd=sys.stdout,
|
||||
error_fd=sys.stderr,
|
||||
)
|
||||
print("rc: {}".format(rc))
|
||||
print("out: {}".format(out))
|
||||
print("err: {}".format(err))
|
||||
@@ -6,14 +6,6 @@ class ServiceStatus(str, Enum):
|
||||
DISABLED = "disabled"
|
||||
|
||||
|
||||
class IOC_ENV(str, Enum):
|
||||
PROD = "prod"
|
||||
DEV = "dev"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.value
|
||||
|
||||
|
||||
class GuiOption(str, Enum):
|
||||
NEW = "new"
|
||||
EXISTING = "existing"
|
||||
|
||||
-112
@@ -1,112 +0,0 @@
|
||||
import typer
|
||||
|
||||
from agebd.utils import get_git_root
|
||||
from config.paths import Paths
|
||||
from core.ansible import run_playbook
|
||||
from core.enums import IOC_ENV
|
||||
from models import ServiceRegistry
|
||||
|
||||
ioc = typer.Typer(no_args_is_help=True)
|
||||
|
||||
REPO_ROOT = get_git_root(__file__)
|
||||
|
||||
ANSIBLE_PLAYBOOKS_DIR = REPO_ROOT / "ansible" / "playbooks"
|
||||
IOC_PLAYBOOK_INSTALL = ANSIBLE_PLAYBOOKS_DIR / "ioc-install.yml"
|
||||
IOC_PLAYBOOK_RESTART = ANSIBLE_PLAYBOOKS_DIR / "ioc-restart.yml"
|
||||
IOC_PLAYBOOK_START = ANSIBLE_PLAYBOOKS_DIR / "ioc-start.yml"
|
||||
|
||||
SERVICE_NAME_HELP = "Service name in lower case"
|
||||
|
||||
|
||||
def _resolve_branch_name(branch_name: str | None, service_name_lower: str) -> str:
|
||||
return branch_name or f"feature/add-service-{service_name_lower}"
|
||||
|
||||
|
||||
def _get_registry_services():
|
||||
paths = Paths()
|
||||
registry = ServiceRegistry.read_from_file(paths.service_registry_file)
|
||||
return registry.get_services()
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def install(
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
service_name_lower: str = typer.Option(..., "--service-name", "-s", help=SERVICE_NAME_HELP),
|
||||
branch_name: str | None = typer.Option(
|
||||
None, "--branch-name", "-b", help="Default is 'feature/add-service-{service-name}'"
|
||||
),
|
||||
):
|
||||
branch_name = _resolve_branch_name(branch_name, service_name_lower)
|
||||
run_playbook(
|
||||
playbook=str(IOC_PLAYBOOK_INSTALL),
|
||||
env=env,
|
||||
vars=[f"branch_name={branch_name}", f"service_name_lower={service_name_lower}"],
|
||||
)
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def install_all(
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
):
|
||||
for service in _get_registry_services():
|
||||
run_playbook(
|
||||
playbook=str(IOC_PLAYBOOK_INSTALL),
|
||||
env=env,
|
||||
vars=["branch_name=main", f"service_name_lower={service.name_lower}"],
|
||||
)
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def start(
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
service_name_lower: str = typer.Option(..., "--service-name", "-s", help=SERVICE_NAME_HELP),
|
||||
branch_name: str | None = typer.Option(
|
||||
None, "--branch-name", "-b", help="Default is 'feature/add-service-{service-name}'"
|
||||
),
|
||||
):
|
||||
branch_name = _resolve_branch_name(branch_name, service_name_lower)
|
||||
run_playbook(
|
||||
playbook=str(IOC_PLAYBOOK_START),
|
||||
env=env,
|
||||
vars=[f"service_name_lower={service_name_lower}", f"branch_name={branch_name}"],
|
||||
)
|
||||
|
||||
|
||||
@ioc.command()
|
||||
def start_all(
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
):
|
||||
for service in _get_registry_services():
|
||||
run_playbook(
|
||||
playbook=str(IOC_PLAYBOOK_START),
|
||||
env=env,
|
||||
vars=[f"service_name_lower={service.name_lower}"],
|
||||
)
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def restart(
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
service_name_lower: str = typer.Option(..., "--service-name", "-s", help=SERVICE_NAME_HELP),
|
||||
branch_name: str | None = typer.Option(
|
||||
None, "--branch-name", "-b", help="Default is 'feature/add-service-{service-name}'"
|
||||
),
|
||||
):
|
||||
branch_name = _resolve_branch_name(branch_name, service_name_lower)
|
||||
run_playbook(
|
||||
playbook=str(IOC_PLAYBOOK_RESTART),
|
||||
env=env,
|
||||
vars=[f"branch_name={branch_name}", f"service_name_lower={service_name_lower}"],
|
||||
)
|
||||
|
||||
|
||||
@ioc.command(no_args_is_help=True)
|
||||
def restart_all(
|
||||
env: IOC_ENV = typer.Option(..., "--env"),
|
||||
):
|
||||
for service in _get_registry_services():
|
||||
run_playbook(
|
||||
playbook=str(IOC_PLAYBOOK_RESTART),
|
||||
env=env,
|
||||
vars=["branch_name=main", f"service_name_lower={service.name_lower}"],
|
||||
)
|
||||
@@ -2,7 +2,6 @@ import logging
|
||||
|
||||
import typer
|
||||
|
||||
import ioc
|
||||
import service
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -10,7 +9,6 @@ logger = logging.getLogger(__name__)
|
||||
cli = typer.Typer(no_args_is_help=True, add_completion=False)
|
||||
|
||||
cli.add_typer(service.service, name="service")
|
||||
cli.add_typer(ioc.ioc, name="ioc")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -24,7 +24,7 @@ class MasterIocSubs(BaseModel):
|
||||
Parses the configuration text and appends a new row before the closing bracket.
|
||||
"""
|
||||
quoted_service = f'"{service_name}"'
|
||||
new_row = f' {{ "{{{{ agebd_env_suffix_upper }}}}", {quoted_service:<22} , "{starton}", "{autooff}" }}'
|
||||
new_row = f' {{ "@@agebd_env_suffix_upper@@", {quoted_service:<22} , "{starton}", "{autooff}" }}'
|
||||
|
||||
# Use regex to find the last closing curly brace of the configuration block
|
||||
# This targets the line that contains only a lone closing brace, optional spaces, and maybe a comma/semicolon.
|
||||
|
||||
+22
-11
@@ -1,34 +1,48 @@
|
||||
import re
|
||||
|
||||
from agebd.names import ServiceName
|
||||
from pydantic import BaseModel, field_validator
|
||||
|
||||
from core.enums import ServiceStatus
|
||||
|
||||
|
||||
class Service(BaseModel):
|
||||
"""
|
||||
A service's registry entry.
|
||||
|
||||
Every spelling of the name is delegated to agebd.names.ServiceName, which
|
||||
is also what the CI and deploy scripts use.
|
||||
"""
|
||||
|
||||
name: str
|
||||
ioc_port: int
|
||||
status: ServiceStatus
|
||||
|
||||
@property
|
||||
def service_name(self) -> ServiceName:
|
||||
return ServiceName(self.name)
|
||||
|
||||
@property
|
||||
def name_camel(self):
|
||||
return self.name
|
||||
return self.service_name.camel
|
||||
|
||||
@property
|
||||
def name_upper(self):
|
||||
return self.name.upper()
|
||||
return self.service_name.upper
|
||||
|
||||
@property
|
||||
def name_lower(self):
|
||||
return self.name.lower()
|
||||
return self.service_name.lower
|
||||
|
||||
@property
|
||||
def name_lower_underscores(self):
|
||||
return self.name.replace("-", "_").lower()
|
||||
return self.service_name.lower_underscores
|
||||
|
||||
@property
|
||||
def dir_name(self):
|
||||
return self.name.lower()
|
||||
return self.service_name.dir_name
|
||||
|
||||
@property
|
||||
def ioc_name(self):
|
||||
return self.service_name.ioc_name
|
||||
|
||||
def to_dict(self):
|
||||
return {"name": self.name_camel, "ioc_port": self.ioc_port, "status": str(self.status)}
|
||||
@@ -39,8 +53,5 @@ class Service(BaseModel):
|
||||
@field_validator("name")
|
||||
@classmethod
|
||||
def validate_name_chars(cls, value: str) -> str:
|
||||
if not re.match(r"^[a-zA-Z0-9-]+$", value):
|
||||
raise ValueError(
|
||||
"name can only contain uppercase and lowercase letters, numbers, and dashes"
|
||||
)
|
||||
ServiceName(value)
|
||||
return value
|
||||
|
||||
@@ -133,8 +133,11 @@ class _ServiceManagerUIMacroElement(BaseModel):
|
||||
ui_filename: str
|
||||
|
||||
def to_string(self) -> str:
|
||||
# The IOC macro is used as a PV prefix inside the included UI
|
||||
# ($(IOC):STATUS, $(IOC):RESTART), so it carries the environment
|
||||
# suffix token and is resolved when qt/ is rendered at deploy time.
|
||||
return (
|
||||
f"IOC=AGEBD-CPCL-{self.service_name_upper},"
|
||||
f"IOC=AGEBD-CPCL-{self.service_name_upper}@@agebd_env_suffix_upper@@,"
|
||||
f"service={self.service_name_upper},"
|
||||
f"name={self.service_name_camel},"
|
||||
f"panel={self.panel},"
|
||||
|
||||
@@ -3,6 +3,8 @@ from pathlib import Path
|
||||
import yaml
|
||||
from pydantic import BaseModel
|
||||
|
||||
from agebd.subs import find_service_entry
|
||||
|
||||
from core.enums import ServiceStatus
|
||||
from models.service import Service
|
||||
|
||||
@@ -26,12 +28,15 @@ class ServiceRegistry(BaseModel):
|
||||
return [Service(**svc_data) for svc_data in self.services]
|
||||
|
||||
def assert_service_exists(self, name: str) -> Service:
|
||||
for svc_data in self.services:
|
||||
service = Service(**svc_data)
|
||||
if name == service.name_camel:
|
||||
return service
|
||||
|
||||
raise ValueError(f"Could not find service with name: {name}")
|
||||
"""
|
||||
Look a service up by name. Matching goes through
|
||||
agebd.subs.find_service_entry so that the CLI, the CI scripts and the
|
||||
deploy scripts all agree on what "the service named X" means.
|
||||
"""
|
||||
entry = find_service_entry(self.services, name)
|
||||
if entry is None:
|
||||
raise ValueError(f"Could not find service with name: {name}")
|
||||
return Service(**entry)
|
||||
|
||||
def add_service(self, name: str) -> Service:
|
||||
svc = Service(
|
||||
|
||||
+17
-17
@@ -71,7 +71,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -106,7 +106,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">!A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
@@ -138,7 +138,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="macro">
|
||||
<string>IOC=AGEBD-CPCL-DBPM3CURR,service=DBPM3CURR,name=DBPM3Curr,panel=1,svc_exist=1,panelcmd=A_BD_DBPM3Curr.ui;IOC=AGEBD-CPCL-TAUBPM,service=TAUBPM,name=TauBPM,panel=1,svc_exist=1,panelcmd=A_BD_TauBPM.ui;IOC=AGEBD-CPCL-TAUPCT,service=TAUPCT,name=TauPCT,panel=1,svc_exist=1,panelcmd=A_BD_TauPCT.ui;IOC=AGEBD-CPCL-TIMING,service=TIMING,name=Timing,panel=1,svc_exist=1,panelcmd=A_BD_Timing.ui;IOC=AGEBD-CPCL-SCRUBBING,service=SCRUBBING,name=Scrubbing,panel=1,svc_exist=1,panelcmd=A_BD_Scrubbing.ui;IOC=AGEBD-CPCL-INJECTIONGUARD,service=INJECTIONGUARD,name=InjectionGuard,panel=1,svc_exist=1,panelcmd=A_BD_InjectionGuard.ui;IOC=AGEBD-CPCL-POSTMORTEMLOG,service=POSTMORTEMLOG,name=PostMortemLog,panel=1,svc_exist=1,panelcmd=A_BD_PostMortemLog.ui;IOC=AGEBD-CPCL-TUNEBUMP,service=TUNEBUMP,name=TuneBump,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-PLOTS,service=PLOTS,name=Plots,panel=0,svc_exist=1,panelcmd=A_BD_Plots.ui;IOC=AGEBD-CPCL-ORBITBUMP,service=ORBITBUMP,name=OrbitBump,panel=1,svc_exist=0,panelcmd=A_BD_OrbitBump.ui;IOC=AGEBD-CPCL-TUNEFBX,service=TUNEFBX,name=Hor. Tune Feedback,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-TUNEFBY,service=TUNEFBY,name=Ver. Tune Feedback,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-TESTSERVICE99-X00,service=TESTSERVICE99-X00,name=TestService99-X00,panel=1,svc_exist=1,panelcmd=A_BD_TestService99-X00.ui</string>
|
||||
<string>IOC=AGEBD-CPCL-DBPM3CURR@@agebd_env_suffix_upper@@,service=DBPM3CURR,name=DBPM3Curr,panel=1,svc_exist=1,panelcmd=A_BD_DBPM3Curr.ui;IOC=AGEBD-CPCL-TAUBPM@@agebd_env_suffix_upper@@,service=TAUBPM,name=TauBPM,panel=1,svc_exist=1,panelcmd=A_BD_TauBPM.ui;IOC=AGEBD-CPCL-TAUPCT@@agebd_env_suffix_upper@@,service=TAUPCT,name=TauPCT,panel=1,svc_exist=1,panelcmd=A_BD_TauPCT.ui;IOC=AGEBD-CPCL-TIMING@@agebd_env_suffix_upper@@,service=TIMING,name=Timing,panel=1,svc_exist=1,panelcmd=A_BD_Timing.ui;IOC=AGEBD-CPCL-SCRUBBING@@agebd_env_suffix_upper@@,service=SCRUBBING,name=Scrubbing,panel=1,svc_exist=1,panelcmd=A_BD_Scrubbing.ui;IOC=AGEBD-CPCL-INJECTIONGUARD@@agebd_env_suffix_upper@@,service=INJECTIONGUARD,name=InjectionGuard,panel=1,svc_exist=1,panelcmd=A_BD_InjectionGuard.ui;IOC=AGEBD-CPCL-POSTMORTEMLOG@@agebd_env_suffix_upper@@,service=POSTMORTEMLOG,name=PostMortemLog,panel=1,svc_exist=1,panelcmd=A_BD_PostMortemLog.ui;IOC=AGEBD-CPCL-TUNEBUMP@@agebd_env_suffix_upper@@,service=TUNEBUMP,name=TuneBump,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-PLOTS@@agebd_env_suffix_upper@@,service=PLOTS,name=Plots,panel=0,svc_exist=1,panelcmd=A_BD_Plots.ui;IOC=AGEBD-CPCL-ORBITBUMP@@agebd_env_suffix_upper@@,service=ORBITBUMP,name=OrbitBump,panel=1,svc_exist=0,panelcmd=A_BD_OrbitBump.ui;IOC=AGEBD-CPCL-TUNEFBX@@agebd_env_suffix_upper@@,service=TUNEFBX,name=Hor. Tune Feedback,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-TUNEFBY@@agebd_env_suffix_upper@@,service=TUNEFBY,name=Ver. Tune Feedback,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-TESTSERVICE99-X00@@agebd_env_suffix_upper@@,service=TESTSERVICE99-X00,name=TestService99-X00,panel=1,svc_exist=1,panelcmd=A_BD_TestService99-X00.ui</string>
|
||||
</property>
|
||||
<property name="filename" stdset="0">
|
||||
<string notr="true">A_BD_ServiceManager_inc.ui</string>
|
||||
@@ -246,7 +246,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="macro">
|
||||
<string>IOC=AGEBD-CPCL-NTURNS,service=NTURNS,name=NTurns,panel=1,svc_exist=1,panelcmd=A_BD_NTurns.ui;IOC=AGEBD-CPCL-TOPUPTOOL,service=TOPUPTOOL,name=TopUpTool,panel=1,svc_exist=1,panelcmd=A_BD_TopUpTool.ui;IOC=AGEBD-CPCL-TUNE,service=TUNE,name=Tune,panel=1,svc_exist=1,panelcmd=A_BD_Tune.ui;IOC=AGEOP-CPCL-SHIFTTOOL,service=SHIFTTOOL,name=Shifttool,panel=1,svc_exist=1,panelcmd=A_OP_SchichtProtokollTool.ui,macro=FACILITY=SLS</string>
|
||||
<string>IOC=AGEBD-CPCL-NTURNS@@agebd_env_suffix_upper@@,service=NTURNS,name=NTurns,panel=1,svc_exist=1,panelcmd=A_BD_NTurns.ui;IOC=AGEBD-CPCL-TOPUPTOOL@@agebd_env_suffix_upper@@,service=TOPUPTOOL,name=TopUpTool,panel=1,svc_exist=1,panelcmd=A_BD_TopUpTool.ui;IOC=AGEBD-CPCL-TUNE@@agebd_env_suffix_upper@@,service=TUNE,name=Tune,panel=1,svc_exist=1,panelcmd=A_BD_Tune.ui;IOC=AGEOP-CPCL-SHIFTTOOL,service=SHIFTTOOL,name=Shifttool,panel=1,svc_exist=1,panelcmd=A_OP_SchichtProtokollTool.ui,macro=FACILITY=SLS</string>
|
||||
</property>
|
||||
<property name="filename" stdset="0">
|
||||
<string notr="true">A_BD_ServiceManager_inc.ui</string>
|
||||
@@ -586,7 +586,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ALIVE</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ALIVE</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -602,7 +602,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STARTTIME</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STARTTIME</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -624,7 +624,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STATUS</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STATUS</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -646,7 +646,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-VERSION</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-VERSION</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -668,7 +668,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -717,7 +717,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF-RB</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF-RB</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -763,7 +763,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:STATUS</string>
|
||||
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:STATUS</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -792,7 +792,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string>/ioc/modules/qt/iocStats.ui</string>
|
||||
</property>
|
||||
<property name="args">
|
||||
<string>IOC=AGEBD-CPCL-MASTER;</string>
|
||||
<string>IOC=AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@;</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLabel" name="calabel_42">
|
||||
@@ -986,7 +986,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="scriptCommand">
|
||||
<string notr="true">ssh svcusr-sls2hla@sls-vserv-bd-hla01 systemctl --user restart AGEBD-SERVICE-MASTER.service</string>
|
||||
<string notr="true">ssh svcusr-sls2hla@sls-vserv-bd-hla01@@agebd_env_suffix_lower@@ systemctl --user restart AGEBD-SERVICE-MASTER.service</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caScriptButton" name="cascriptbutton_2">
|
||||
@@ -1015,7 +1015,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="scriptCommand">
|
||||
<string notr="true">terminator -e "ssh svcusr-sls2hla@sls-vserv-bd-hla01"</string>
|
||||
<string notr="true">terminator -e "ssh svcusr-sls2hla@sls-vserv-bd-hla01@@agebd_env_suffix_lower@@"</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
@@ -1040,7 +1040,7 @@ caLabel[statusTip="Operation"]{
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:MASTER-LOGS-REQ</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:MASTER-LOGS-REQ</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Logs</string>
|
||||
@@ -1106,7 +1106,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Reload</string>
|
||||
@@ -1172,7 +1172,7 @@ caLabel[statusTip="Operation"]{
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:RESTART</string>
|
||||
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:RESTART</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">↺</string>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-TESTSERVICE99-X00{{ agebd_env_suffix_upper }}:AO</string>
|
||||
<string>AGEBD-TESTSERVICE99-X00@@agebd_env_suffix_upper@@:AO</string>
|
||||
</property>
|
||||
<property name="maxValue">
|
||||
<double>9.000000000000000</double>
|
||||
@@ -49,10 +49,10 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Toggle AGEBD-ALH{{ agebd_env_suffix_upper }}:TESTSERVICE99-X00-ONOFF</string>
|
||||
<string>Toggle AGEBD-ALH@@agebd_env_suffix_upper@@:TESTSERVICE99-X00-ONOFF</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-ALH{{ agebd_env_suffix_upper }}:TESTSERVICE99-X00-ONOFF</string>
|
||||
<string>AGEBD-ALH@@agebd_env_suffix_upper@@:TESTSERVICE99-X00-ONOFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label">
|
||||
@@ -70,7 +70,7 @@
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Value of AGEBD-TESTSERVICE99-X00{{ agebd_env_suffix_upper }}:AO</string>
|
||||
<string>Value of AGEBD-TESTSERVICE99-X00@@agebd_env_suffix_upper@@:AO</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
file MASTER.template {
|
||||
pattern { SUFFIX SERVICE STARTON AUTOOFF }
|
||||
{ "{{ agebd_env_suffix_upper }}", "MASTER" , "0", "30" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TESTSERVICE99-X00" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "MASTER" , "0", "30" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TESTSERVICE99-X00" , "0", "0" }
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
file TESTSERVICE99-X00.template {
|
||||
pattern { DEVICE }
|
||||
{ AGEBD-TESTSERVICE99-X00{{ agebd_env_suffix_upper }} }
|
||||
{ AGEBD-TESTSERVICE99-X00@@agebd_env_suffix_upper@@ }
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
cpu_architecture: x86_64
|
||||
epics_version: 7.0.8
|
||||
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
|
||||
ioc_port: {{ ioc_port }}
|
||||
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
|
||||
ioc_port: @@ioc_port@@
|
||||
os: RHEL8
|
||||
os_id: rhel
|
||||
|
||||
+2
-2
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-TESTSERVICE99-X00
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Environment=AGEBD_ENV={{ agebd_env }}
|
||||
Environment=AGEBD_ENV=@@agebd_env@@
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh TESTSERVICE99-X00
|
||||
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh TESTSERVICE99-X00
|
||||
Restart=no
|
||||
|
||||
[Install]
|
||||
|
||||
+17
-17
@@ -71,7 +71,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -106,7 +106,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">!A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
@@ -138,7 +138,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="macro">
|
||||
<string>IOC=AGEBD-CPCL-DBPM3CURR,service=DBPM3CURR,name=DBPM3Curr,panel=1,svc_exist=1,panelcmd=A_BD_DBPM3Curr.ui;IOC=AGEBD-CPCL-TAUBPM,service=TAUBPM,name=TauBPM,panel=1,svc_exist=1,panelcmd=A_BD_TauBPM.ui;IOC=AGEBD-CPCL-TAUPCT,service=TAUPCT,name=TauPCT,panel=1,svc_exist=1,panelcmd=A_BD_TauPCT.ui;IOC=AGEBD-CPCL-TIMING,service=TIMING,name=Timing,panel=1,svc_exist=1,panelcmd=A_BD_Timing.ui;IOC=AGEBD-CPCL-SCRUBBING,service=SCRUBBING,name=Scrubbing,panel=1,svc_exist=1,panelcmd=A_BD_Scrubbing.ui;IOC=AGEBD-CPCL-INJECTIONGUARD,service=INJECTIONGUARD,name=InjectionGuard,panel=1,svc_exist=1,panelcmd=A_BD_InjectionGuard.ui;IOC=AGEBD-CPCL-POSTMORTEMLOG,service=POSTMORTEMLOG,name=PostMortemLog,panel=1,svc_exist=1,panelcmd=A_BD_PostMortemLog.ui;IOC=AGEBD-CPCL-TUNEBUMP,service=TUNEBUMP,name=TuneBump,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-PLOTS,service=PLOTS,name=Plots,panel=0,svc_exist=1,panelcmd=A_BD_Plots.ui;IOC=AGEBD-CPCL-ORBITBUMP,service=ORBITBUMP,name=OrbitBump,panel=1,svc_exist=0,panelcmd=A_BD_OrbitBump.ui;IOC=AGEBD-CPCL-TUNEFBX,service=TUNEFBX,name=Hor. Tune Feedback,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-TUNEFBY,service=TUNEFBY,name=Ver. Tune Feedback,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui</string>
|
||||
<string>IOC=AGEBD-CPCL-DBPM3CURR@@agebd_env_suffix_upper@@,service=DBPM3CURR,name=DBPM3Curr,panel=1,svc_exist=1,panelcmd=A_BD_DBPM3Curr.ui;IOC=AGEBD-CPCL-TAUBPM@@agebd_env_suffix_upper@@,service=TAUBPM,name=TauBPM,panel=1,svc_exist=1,panelcmd=A_BD_TauBPM.ui;IOC=AGEBD-CPCL-TAUPCT@@agebd_env_suffix_upper@@,service=TAUPCT,name=TauPCT,panel=1,svc_exist=1,panelcmd=A_BD_TauPCT.ui;IOC=AGEBD-CPCL-TIMING@@agebd_env_suffix_upper@@,service=TIMING,name=Timing,panel=1,svc_exist=1,panelcmd=A_BD_Timing.ui;IOC=AGEBD-CPCL-SCRUBBING@@agebd_env_suffix_upper@@,service=SCRUBBING,name=Scrubbing,panel=1,svc_exist=1,panelcmd=A_BD_Scrubbing.ui;IOC=AGEBD-CPCL-INJECTIONGUARD@@agebd_env_suffix_upper@@,service=INJECTIONGUARD,name=InjectionGuard,panel=1,svc_exist=1,panelcmd=A_BD_InjectionGuard.ui;IOC=AGEBD-CPCL-POSTMORTEMLOG@@agebd_env_suffix_upper@@,service=POSTMORTEMLOG,name=PostMortemLog,panel=1,svc_exist=1,panelcmd=A_BD_PostMortemLog.ui;IOC=AGEBD-CPCL-TUNEBUMP@@agebd_env_suffix_upper@@,service=TUNEBUMP,name=TuneBump,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-PLOTS@@agebd_env_suffix_upper@@,service=PLOTS,name=Plots,panel=0,svc_exist=1,panelcmd=A_BD_Plots.ui;IOC=AGEBD-CPCL-ORBITBUMP@@agebd_env_suffix_upper@@,service=ORBITBUMP,name=OrbitBump,panel=1,svc_exist=0,panelcmd=A_BD_OrbitBump.ui;IOC=AGEBD-CPCL-TUNEFBX@@agebd_env_suffix_upper@@,service=TUNEFBX,name=Hor. Tune Feedback,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-TUNEFBY@@agebd_env_suffix_upper@@,service=TUNEFBY,name=Ver. Tune Feedback,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui</string>
|
||||
</property>
|
||||
<property name="filename" stdset="0">
|
||||
<string notr="true">A_BD_ServiceManager_inc.ui</string>
|
||||
@@ -246,7 +246,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="macro">
|
||||
<string>IOC=AGEBD-CPCL-NTURNS,service=NTURNS,name=NTurns,panel=1,svc_exist=1,panelcmd=A_BD_NTurns.ui;IOC=AGEBD-CPCL-TOPUPTOOL,service=TOPUPTOOL,name=TopUpTool,panel=1,svc_exist=1,panelcmd=A_BD_TopUpTool.ui;IOC=AGEBD-CPCL-TUNE,service=TUNE,name=Tune,panel=1,svc_exist=1,panelcmd=A_BD_Tune.ui;IOC=AGEOP-CPCL-SHIFTTOOL,service=SHIFTTOOL,name=Shifttool,panel=1,svc_exist=1,panelcmd=A_OP_SchichtProtokollTool.ui,macro=FACILITY=SLS</string>
|
||||
<string>IOC=AGEBD-CPCL-NTURNS@@agebd_env_suffix_upper@@,service=NTURNS,name=NTurns,panel=1,svc_exist=1,panelcmd=A_BD_NTurns.ui;IOC=AGEBD-CPCL-TOPUPTOOL@@agebd_env_suffix_upper@@,service=TOPUPTOOL,name=TopUpTool,panel=1,svc_exist=1,panelcmd=A_BD_TopUpTool.ui;IOC=AGEBD-CPCL-TUNE@@agebd_env_suffix_upper@@,service=TUNE,name=Tune,panel=1,svc_exist=1,panelcmd=A_BD_Tune.ui;IOC=AGEOP-CPCL-SHIFTTOOL,service=SHIFTTOOL,name=Shifttool,panel=1,svc_exist=1,panelcmd=A_OP_SchichtProtokollTool.ui,macro=FACILITY=SLS</string>
|
||||
</property>
|
||||
<property name="filename" stdset="0">
|
||||
<string notr="true">A_BD_ServiceManager_inc.ui</string>
|
||||
@@ -586,7 +586,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ALIVE</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ALIVE</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -602,7 +602,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STARTTIME</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STARTTIME</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -624,7 +624,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STATUS</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STATUS</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -646,7 +646,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-VERSION</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-VERSION</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -668,7 +668,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -717,7 +717,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF-RB</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF-RB</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -763,7 +763,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:STATUS</string>
|
||||
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:STATUS</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -792,7 +792,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string>/ioc/modules/qt/iocStats.ui</string>
|
||||
</property>
|
||||
<property name="args">
|
||||
<string>IOC=AGEBD-CPCL-MASTER;</string>
|
||||
<string>IOC=AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@;</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLabel" name="calabel_42">
|
||||
@@ -986,7 +986,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="scriptCommand">
|
||||
<string notr="true">ssh svcusr-sls2hla@sls-vserv-bd-hla01 systemctl --user restart AGEBD-SERVICE-MASTER.service</string>
|
||||
<string notr="true">ssh svcusr-sls2hla@sls-vserv-bd-hla01@@agebd_env_suffix_lower@@ systemctl --user restart AGEBD-SERVICE-MASTER.service</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caScriptButton" name="cascriptbutton_2">
|
||||
@@ -1015,7 +1015,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="scriptCommand">
|
||||
<string notr="true">terminator -e "ssh svcusr-sls2hla@sls-vserv-bd-hla01"</string>
|
||||
<string notr="true">terminator -e "ssh svcusr-sls2hla@sls-vserv-bd-hla01@@agebd_env_suffix_lower@@"</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
@@ -1040,7 +1040,7 @@ caLabel[statusTip="Operation"]{
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:MASTER-LOGS-REQ</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:MASTER-LOGS-REQ</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Logs</string>
|
||||
@@ -1106,7 +1106,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Reload</string>
|
||||
@@ -1172,7 +1172,7 @@ caLabel[statusTip="Operation"]{
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:RESTART</string>
|
||||
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:RESTART</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">↺</string>
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
file MASTER.template {
|
||||
pattern { SUFFIX SERVICE STARTON AUTOOFF }
|
||||
{ "{{ agebd_env_suffix_upper }}", "MASTER" , "0", "30" }
|
||||
{ "@@agebd_env_suffix_upper@@", "MASTER" , "0", "30" }
|
||||
}
|
||||
|
||||
Generated
+2
-147
@@ -10,6 +10,7 @@ dependencies = [
|
||||
{ name = "gitpython" },
|
||||
{ name = "h5py" },
|
||||
{ name = "pyepics" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "typer" },
|
||||
]
|
||||
|
||||
@@ -18,6 +19,7 @@ requires-dist = [
|
||||
{ name = "gitpython", specifier = ">=3.1.50" },
|
||||
{ name = "h5py", specifier = ">=3.16.0" },
|
||||
{ name = "pyepics", specifier = ">=3.5.10" },
|
||||
{ name = "pyyaml", specifier = ">=6.0.3" },
|
||||
{ name = "typer", specifier = ">=0.23.2" },
|
||||
]
|
||||
|
||||
@@ -37,8 +39,6 @@ version = "0.1.0"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "agebd" },
|
||||
{ name = "ansible" },
|
||||
{ name = "ansible-runner" },
|
||||
{ name = "copier" },
|
||||
{ name = "pydantic" },
|
||||
{ name = "pydantic-settings" },
|
||||
@@ -60,8 +60,6 @@ dev = [
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "agebd", editable = "../packages/agebd" },
|
||||
{ name = "ansible", specifier = ">=8.7.0" },
|
||||
{ name = "ansible-runner", specifier = ">=2.4.3" },
|
||||
{ name = "copier", specifier = ">=9.10.3" },
|
||||
{ name = "pydantic", specifier = ">=2.13.4" },
|
||||
{ name = "pydantic-settings", specifier = ">=2.14.2" },
|
||||
@@ -98,49 +96,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ansible"
|
||||
version = "10.7.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "ansible-core" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d4/64/29fdff6fe7682342adb54802c1cd90b2272d382e1743089af88f90a1d986/ansible-10.7.0.tar.gz", hash = "sha256:59d29e3de1080e740dfa974517d455217601b16d16880314d9be26145c68dc22", size = 41256974, upload-time = "2024-12-03T18:04:25.794Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f3/95/cb8944902a2cdd94b1e19ff73695548679a388b9c473dc63c8dc64ffea3a/ansible-10.7.0-py3-none-any.whl", hash = "sha256:0089f08e047ceb70edd011be009f5c6273add613fbe491e9697c0556c989d8ea", size = 51576038, upload-time = "2024-12-03T18:04:20.065Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ansible-core"
|
||||
version = "2.17.14"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "cryptography" },
|
||||
{ name = "jinja2" },
|
||||
{ name = "packaging" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "resolvelib" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/ff/80/2925a0564f6f99a8002c3be3885b83c3a1dc5f57ebf00163f528889865f5/ansible_core-2.17.14.tar.gz", hash = "sha256:7c17fee39f8c29d70e3282a7e9c10bd70d5cd4fd13ddffc5dcaa52adbd142ff8", size = 3119687, upload-time = "2025-09-08T18:28:03.158Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/86/29/d694562f1a875b50aa74f691521fe493704f79cf1938cd58f28f7e2327d2/ansible_core-2.17.14-py3-none-any.whl", hash = "sha256:34a49582a57c2f2af17ede2cefd3b3602a2d55d22089f3928570d52030cafa35", size = 2189656, upload-time = "2025-09-08T18:28:00.375Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ansible-runner"
|
||||
version = "2.4.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "packaging" },
|
||||
{ name = "pexpect" },
|
||||
{ name = "python-daemon" },
|
||||
{ name = "pyyaml" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/68/4f/62222b42b52cc771db51ccc77ffac19cc5f0196ff61de7c93585845a819b/ansible_runner-2.4.3.tar.gz", hash = "sha256:5f3025529bb968fdc3b627457dd8d418dbf9d53bc73735d50e69c28544d53031", size = 154148, upload-time = "2026-03-16T18:42:14.861Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e3/89/fa7f81db6134caa455c9351373ee934b5fdeed212eb939d6c42d80d683d7/ansible_runner-2.4.3-py3-none-any.whl", hash = "sha256:cdac6daa151a50084ffda710e769db23fa975fc0507796191d7708831b286e37", size = 80257, upload-time = "2026-03-16T18:42:13.72Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "asttokens"
|
||||
version = "3.0.2"
|
||||
@@ -150,29 +105,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl", hash = "sha256:9da13157f5b28becde0bd374fc677dcd3c290614264eff096f167c469cd9f933", size = 28702, upload-time = "2026-07-12T03:31:47.542Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cffi"
|
||||
version = "2.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "pycparser", marker = "implementation_name != 'PyPy'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/57/5f/ff100cae70ebe9d8df1c01a00e510e45d9adb5c1fdda84791b199141de97/cffi-2.1.0.tar.gz", hash = "sha256:efc1cdd798b1aaf39b4610bba7aad28c9bea9b910f25c784ccf9ec1fa719d1f9", size = 531036, upload-time = "2026-07-06T21:34:30.382Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c0/e9/6d7724983b3d5a0908dbf74f64038ade77c18646ff6636ec7894fd392ce1/cffi-2.1.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b65f590ef2a44640f9a05dbb548a429b4ade77913ce683ac8b1480777658a6c0", size = 183837, upload-time = "2026-07-06T21:32:09.655Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/69/aa/24580a278de21fd7322635556334d9b535f1cbc00b0a3919447cdf464c65/cffi-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164bff1657b2a74f0b6d54e11c9b375bc97b931f2ca9c43fcf875838da1570dd", size = 184226, upload-time = "2026-07-06T21:32:11.196Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/88/a9/02cae418ec4beb282ace11958d9d4737793439d561fadc7e6d56f2e2b354/cffi-2.1.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:c941bb58d5a6e1c3892d86e42927ed6c180302f07e6d395d08c416e594b98b46", size = 211107, upload-time = "2026-07-06T21:32:12.328Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/3b/30/c806937ed5e4c2c7ac30d9d6b76b5dc57ff8b75d83800d9bb11a8253cf2a/cffi-2.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a016194dbe13d14ee9556e734b772d8d67b947092b268d757fd4290e3ba2dfc2", size = 218733, upload-time = "2026-07-06T21:32:13.67Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f9/cf/398272b8bbfd58aa314fda5a7f1cdbb26d1d78ae324a11211521315dd1f0/cffi-2.1.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:03e9810d18c646077e501f661b682fbf5dee4676048527ca3cffe66faa9960dd", size = 205543, upload-time = "2026-07-06T21:32:15.148Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/45/ca/f91641185cdd90c36d317a9dc7f85e88ef8682d8b300977baff5e23c35d8/cffi-2.1.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:19c54ac121cad98450b4896fa9a43ee0180d57bc4bc911a33db6cab1efab6cd3", size = 205460, upload-time = "2026-07-06T21:32:16.479Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/38/66/04781a77b411f0bb5b234d62c1814754ab75ebe455ccff1b08e8d7aae98f/cffi-2.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d433a51f1870e43a13b6732f92aaf540ff77c2015097c78556f75a2d6c030e0", size = 218760, upload-time = "2026-07-06T21:32:17.98Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d0/9a/bb1d5ed9c3fcae158e9f6391bf309c95d98c2ac37ed56573228471d0af5e/cffi-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3d7f118b5adbfdfead90c25822690b02bc8074fba949bb7858bec4ebd55adb43", size = 221230, upload-time = "2026-07-06T21:32:19.407Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/41/aa/3c1409cdd26094efacd1c36c66e0a6eb9d4296e4fd4f9901b8b2042f4323/cffi-2.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c5f5df567f6eb216de69be06ce55c8b714090fae02b18a3b40da8163b8c5fa9c", size = 213524, upload-time = "2026-07-06T21:32:20.828Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fa/75/74dfb7c3fc6ebbd408038476bd4c1d7e925c62614e7b9c534ecc34218288/cffi-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:11b3fb55f4f8ad92274ed26705f65d8f91457de71f5380061eb6d125a768fecd", size = 220341, upload-time = "2026-07-06T21:32:21.9Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/70/b6/9003c33a3e7d2c1306f5962e646457dcfe5a8cd8fce6bbe02d7af25db783/cffi-2.1.0-cp310-cp310-win32.whl", hash = "sha256:9d72af0cf10a76a600a9690078fe31c63b9588c8e86bf9fd353f713c84b5db0f", size = 174578, upload-time = "2026-07-06T21:32:23.073Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8a/26/710688310447531c7a22f857c7f79d9855ec18b03e04494ced723fb37e2f/cffi-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb62edb5bb52cca65fab91a63afa7561607120d26090a7e8fda6fb9f064726da", size = 185071, upload-time = "2026-07-06T21:32:24.671Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "colorama"
|
||||
version = "0.4.6"
|
||||
@@ -207,44 +139,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/22/2c/68dec88ee26f96af2d4d8ee9d8567313a0826f4fd6bc5ae4527be670d354/copier-9.17.0-py3-none-any.whl", hash = "sha256:fe4e7b59faf4c0e1386eccbb79c6797e6df33ca20d5de49a8372571d8669f2ad", size = 65954, upload-time = "2026-07-13T14:33:03.301Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cryptography"
|
||||
version = "49.0.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
||||
{ name = "typing-extensions" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "decorator"
|
||||
version = "5.3.1"
|
||||
@@ -406,15 +300,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/72/b9/313e8f2f2e9517ae050a692ae7b3e4b3f17cc5e6dfea0db51fe14e586580/jinja2_ansible_filters-1.3.2-py3-none-any.whl", hash = "sha256:e1082f5564917649c76fed239117820610516ec10f87735d0338688800a55b34", size = 18975, upload-time = "2022-06-30T14:08:49.571Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lockfile"
|
||||
version = "0.12.2"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/17/47/72cb04a58a35ec495f96984dddb48232b551aafb95bde614605b754fe6f7/lockfile-0.12.2.tar.gz", hash = "sha256:6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799", size = 20874, upload-time = "2015-11-25T18:29:58.279Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl", hash = "sha256:6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa", size = 13564, upload-time = "2015-11-25T18:29:51.462Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "markdown-it-py"
|
||||
version = "4.2.0"
|
||||
@@ -597,15 +482,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pycparser"
|
||||
version = "3.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pydantic"
|
||||
version = "2.13.4"
|
||||
@@ -748,18 +624,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "python-daemon"
|
||||
version = "3.1.2"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "lockfile" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/3d/37/4f10e37bdabc058a32989da2daf29e57dc59dbc5395497f3d36d5f5e2694/python_daemon-3.1.2.tar.gz", hash = "sha256:f7b04335adc473de877f5117e26d5f1142f4c9f7cd765408f0877757be5afbf4", size = 71576, upload-time = "2024-12-03T08:41:07.843Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/45/3c/b88167e2d6785c0e781ee5d498b07472aeb9b6765da3b19e7cc9e0813841/python_daemon-3.1.2-py3-none-any.whl", hash = "sha256:b906833cef63502994ad48e2eab213259ed9bb18d54fa8774dcba2ff7864cec6", size = 30872, upload-time = "2024-12-03T08:41:03.322Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "python-dotenv"
|
||||
version = "1.2.2"
|
||||
@@ -798,15 +662,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl", hash = "sha256:a51af13f345f1cdea62347589fbb6df3b290306ab8930713bfae4d475a7d4a59", size = 36753, upload-time = "2025-08-28T19:00:19.56Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "resolvelib"
|
||||
version = "1.0.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/ce/10/f699366ce577423cbc3df3280063099054c23df70856465080798c6ebad6/resolvelib-1.0.1.tar.gz", hash = "sha256:04ce76cbd63fded2078ce224785da6ecd42b9564b1390793f64ddecbe997b309", size = 21065, upload-time = "2023-03-09T05:10:38.292Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/d2/fc/e9ccf0521607bcd244aa0b3fbd574f71b65e9ce6a112c83af988bbbe2e23/resolvelib-1.0.1-py2.py3-none-any.whl", hash = "sha256:d2da45d1a8dfee81bdd591647783e340ef3bcb104b54c383f70d422ef5cc7dbf", size = 17194, upload-time = "2023-03-09T05:10:36.214Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rich"
|
||||
version = "15.0.0"
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
# Single source of truth for every deploy-time substitution in this repo.
|
||||
#
|
||||
# There are two substitution stages, and they use different delimiters on
|
||||
# purpose:
|
||||
#
|
||||
# {{ token }} creation-time. Resolved once by copier when a new service is
|
||||
# created (cli/src/core/service_creator.py). Never survives
|
||||
# into a committed file.
|
||||
#
|
||||
# @@token@@ deploy-time. Resolved on every deploy, per environment, by
|
||||
# agebd.subs. Lives in committed files.
|
||||
#
|
||||
# This file declares the deploy-time stage only. scripts/ci/check_subs.py
|
||||
# enforces that every @@token@@ in the repo is declared here, and that it
|
||||
# only appears in a path that actually gets rendered.
|
||||
#
|
||||
# 'local' is deliberately absent: it is a runtime mode for tests without EPICS
|
||||
# access (see agebd.enums.AGEBD_ENV), not a deploy target.
|
||||
|
||||
environments:
|
||||
prod:
|
||||
agebd_env: prod
|
||||
agebd_env_suffix_upper: ""
|
||||
agebd_env_suffix_lower: ""
|
||||
dev:
|
||||
agebd_env: dev
|
||||
agebd_env_suffix_upper: "-DEV"
|
||||
agebd_env_suffix_lower: "-dev"
|
||||
|
||||
# Every deploy-time token. Each environment above must define exactly the
|
||||
# tokens with source 'environment' -- adding one here without adding it to
|
||||
# every environment is a load-time error.
|
||||
tokens:
|
||||
agebd_env:
|
||||
source: environment
|
||||
description: >-
|
||||
Deployment environment name. Used in deploy paths and systemd units,
|
||||
e.g. /sls/bd/hla/dev/bin/start_service.sh.
|
||||
agebd_env_suffix_upper:
|
||||
source: environment
|
||||
description: >-
|
||||
Uppercase suffix appended to EPICS device names, e.g. AGEBD-TUNE-DEV.
|
||||
Used in IOC substitution files and Qt UI files.
|
||||
agebd_env_suffix_lower:
|
||||
source: environment
|
||||
description: >-
|
||||
Lowercase suffix appended to host names, e.g. sls-vserv-bd-01-dev.
|
||||
Used in IOC parameter files.
|
||||
ioc_port:
|
||||
source: registry
|
||||
description: >-
|
||||
IOC port for the service being deployed, read from
|
||||
config/services_registry.yml.
|
||||
|
||||
# Where deploy-time tokens are allowed to live, as repo-root-relative globs.
|
||||
locations:
|
||||
# Rendered at deploy time by agebd.subs. A token here is resolved.
|
||||
render:
|
||||
- services/*/current/ioc
|
||||
- services/*/current/systemd
|
||||
- qt
|
||||
# Carry deploy-time tokens verbatim, because the copy they produce lands in
|
||||
# a render path. A token here is NOT resolved in place.
|
||||
passthrough:
|
||||
- templates
|
||||
- cli/tests/fixtures
|
||||
# The substitution machinery itself: code that renders, generates or
|
||||
# documents tokens. Naming a token here is expected; nothing is resolved,
|
||||
# and the leftover-delimiter check does not apply.
|
||||
references:
|
||||
- .gitea/scripts
|
||||
- cli/src/models
|
||||
- packages/agebd/src/agebd
|
||||
- packages/agebd/tests
|
||||
- scripts/ci
|
||||
- scripts/tests
|
||||
- config
|
||||
@@ -1,36 +0,0 @@
|
||||
# Ansible
|
||||
|
||||
## Running a playbook manually
|
||||
|
||||
Set vars on command line:
|
||||
|
||||
```
|
||||
ansible-playbook ansible/playbooks/add-new-service.yml \
|
||||
-i ansible/hosts.yml \
|
||||
--extra-vars="repo_root=${{ github.workspace }} agebd_env=dev service_name_lower=<service dir name>" \
|
||||
-v
|
||||
```
|
||||
|
||||
### Install an IOC
|
||||
```
|
||||
ansible-playbook ansible/playbooks/ioc-install.yml \
|
||||
-i ansible/hosts.yml \
|
||||
--extra-vars="agebd_env=dev branch_name=feature/add-service-playground service_name_lower=playground ioc_port=50003" \
|
||||
-v
|
||||
```
|
||||
|
||||
### Start an IOC
|
||||
```
|
||||
ansible-playbook ansible/playbooks/ioc-start.yml \
|
||||
-i ansible/hosts.yml \
|
||||
--extra-vars="service_name_lower=playground ioc_port=50003" \
|
||||
-v
|
||||
```
|
||||
|
||||
### Restart an IOC
|
||||
```
|
||||
ansible-playbook ansible/playbooks/ioc-restart.yml \
|
||||
-i ansible/hosts.yml \
|
||||
--extra-vars="agebd_env=dev branch_name=feature/add-service-playground service_name_lower=playground" \
|
||||
-v
|
||||
```
|
||||
@@ -9,6 +9,7 @@ dependencies = [
|
||||
"pyepics>=3.5.10",
|
||||
"typer>=0.23.2",
|
||||
"gitpython>=3.1.50",
|
||||
"pyyaml>=6.0.3",
|
||||
]
|
||||
|
||||
# Dev dependencies
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
"""
|
||||
The one definition of how a service name is spelled in each context.
|
||||
|
||||
A service has a single canonical CamelCase name, recorded in
|
||||
config/services_registry.yml. Everything else is derived from it by a fixed
|
||||
rule: the directory it lives in, its Python module, its EPICS IOC, its systemd
|
||||
unit. Those rules live here so that the CLI, the CI scripts and the deploy
|
||||
scripts cannot drift apart on them.
|
||||
|
||||
The environment suffix is deliberately not part of any name here. It is a
|
||||
deploy-time token (see agebd.subs), applied to the base names below.
|
||||
"""
|
||||
|
||||
import re
|
||||
|
||||
#: Prefix of every EPICS IOC in this framework.
|
||||
IOC_PREFIX = "AGEBD-CPCL"
|
||||
|
||||
#: Prefix of every systemd unit in this framework.
|
||||
SYSTEMD_UNIT_PREFIX = "AGEBD-SERVICE"
|
||||
|
||||
#: Prefix of every service's Python package.
|
||||
PACKAGE_PREFIX = "agebd"
|
||||
|
||||
VALID_NAME = re.compile(r"^[a-zA-Z0-9-]+$")
|
||||
|
||||
|
||||
class InvalidServiceName(ValueError):
|
||||
"""The name is not a legal service name."""
|
||||
|
||||
|
||||
class ServiceName:
|
||||
"""
|
||||
A service's canonical name and every form derived from it.
|
||||
|
||||
>>> name = ServiceName("TuneFBx")
|
||||
>>> name.dir_name, name.module_name, name.ioc_name
|
||||
('tunefbx', 'agebd_tunefbx', 'AGEBD-CPCL-TUNEFBX')
|
||||
"""
|
||||
|
||||
def __init__(self, name: str) -> None:
|
||||
if not isinstance(name, str) or not VALID_NAME.match(name):
|
||||
raise InvalidServiceName(
|
||||
f"Invalid service name {name!r}: a service name may only contain "
|
||||
f"uppercase and lowercase letters, numbers, and dashes."
|
||||
)
|
||||
self._name = name
|
||||
|
||||
@property
|
||||
def camel(self) -> str:
|
||||
"""The canonical name, as written in the registry and shown in the GUI."""
|
||||
return self._name
|
||||
|
||||
@property
|
||||
def upper(self) -> str:
|
||||
return self._name.upper()
|
||||
|
||||
@property
|
||||
def lower(self) -> str:
|
||||
return self._name.lower()
|
||||
|
||||
@property
|
||||
def lower_underscores(self) -> str:
|
||||
return self.lower.replace("-", "_")
|
||||
|
||||
@property
|
||||
def dir_name(self) -> str:
|
||||
"""The directory under services/ that holds this service."""
|
||||
return self.lower
|
||||
|
||||
@property
|
||||
def module_name(self) -> str:
|
||||
"""The Python package implementing this service."""
|
||||
return f"{PACKAGE_PREFIX}_{self.lower_underscores}"
|
||||
|
||||
@property
|
||||
def ioc_name(self) -> str:
|
||||
"""
|
||||
The IOC's base name. Deployments append the environment suffix token.
|
||||
"""
|
||||
return f"{IOC_PREFIX}-{self.upper}"
|
||||
|
||||
@property
|
||||
def systemd_unit_name(self) -> str:
|
||||
"""
|
||||
The systemd unit file name. Unit names carry no environment suffix:
|
||||
dev and prod run on different hosts.
|
||||
"""
|
||||
return f"{SYSTEMD_UNIT_PREFIX}-{self.upper}.service"
|
||||
|
||||
def matches(self, other) -> bool:
|
||||
"""
|
||||
Whether ``other`` names this service. Comparison is case-insensitive,
|
||||
because callers hold the name in whatever casing their context uses.
|
||||
"""
|
||||
try:
|
||||
return ServiceName(str(other)).lower == self.lower
|
||||
except InvalidServiceName:
|
||||
return False
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.camel
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"ServiceName({self.camel!r})"
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
if isinstance(other, ServiceName):
|
||||
return self.lower == other.lower
|
||||
return NotImplemented
|
||||
|
||||
def __hash__(self) -> int:
|
||||
return hash(self.lower)
|
||||
@@ -0,0 +1,384 @@
|
||||
"""
|
||||
Single source of truth for deploy-time substitutions.
|
||||
|
||||
Committed files carry deploy-time placeholders written as ``@@token@@``.
|
||||
This module is the only place that knows what those tokens resolve to.
|
||||
|
||||
There are two substitution stages in this repo, and they use different
|
||||
delimiters on purpose:
|
||||
|
||||
``{{ token }}`` creation-time. Resolved once by copier when a new
|
||||
service is created (cli/src/core/service_creator.py).
|
||||
Never survives into a committed file.
|
||||
|
||||
``@@token@@`` deploy-time. Resolved on every deploy, per environment,
|
||||
by this module. Lives in committed files.
|
||||
|
||||
Token values come from two sources, both declared in config/environments.yml:
|
||||
|
||||
environment the per-environment table in config/environments.yml
|
||||
registry config/services_registry.yml, per service
|
||||
|
||||
Rendering is a strict regex substitution rather than a template engine. The
|
||||
rendered files are EPICS database/substitution files and Qt XML, which are
|
||||
full of braces and other characters a template engine would try to interpret;
|
||||
and a regex over declared token names gives an exact "unknown token in this
|
||||
file" error instead of silently leaving the placeholder in place -- which is
|
||||
the failure mode of the sed calls this module replaces.
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
from dataclasses import dataclass, field
|
||||
from fnmatch import fnmatch
|
||||
from pathlib import Path
|
||||
from typing import Iterable, Iterator, Optional, Union
|
||||
|
||||
import yaml
|
||||
|
||||
from agebd.names import InvalidServiceName, ServiceName
|
||||
from agebd.utils import get_git_root
|
||||
|
||||
CONFIG_DIR_ENV_VAR = "AGEBD_CONFIG_DIR"
|
||||
ENVIRONMENTS_FILENAME = "environments.yml"
|
||||
SERVICES_REGISTRY_FILENAME = "services_registry.yml"
|
||||
|
||||
ENVIRONMENT_SOURCE = "environment"
|
||||
REGISTRY_SOURCE = "registry"
|
||||
|
||||
#: Deploy-time placeholder, e.g. ``@@agebd_env@@`` or ``@@agebd_env@@``.
|
||||
TOKEN_PATTERN = re.compile(r"@@\s*([a-z][a-z0-9_]*)\s*@@")
|
||||
|
||||
#: The pre-migration deploy-time delimiters. Kept here so that the CI lint can
|
||||
#: spot files that were missed by the switch to ``@@token@@``.
|
||||
LEGACY_TOKEN_PATTERN = re.compile(r"\{\{\s*([a-z][a-z0-9_]*)\s*\}\}")
|
||||
|
||||
|
||||
class SubstitutionError(Exception):
|
||||
"""Base class for every error raised by this module."""
|
||||
|
||||
|
||||
class UnknownTokenError(SubstitutionError):
|
||||
"""A ``@@token@@`` was found that is not declared in environments.yml."""
|
||||
|
||||
|
||||
def resolve_config_dir(config_dir: Optional[Union[str, Path]] = None) -> Path:
|
||||
"""
|
||||
Locate the directory holding environments.yml.
|
||||
|
||||
Explicit argument wins, then $AGEBD_CONFIG_DIR, then the config directory
|
||||
of the surrounding git checkout. The env var is what deployed hosts use:
|
||||
the deployed tree is not a git checkout.
|
||||
"""
|
||||
if config_dir is not None:
|
||||
return Path(config_dir)
|
||||
|
||||
from_env = os.environ.get(CONFIG_DIR_ENV_VAR)
|
||||
if from_env:
|
||||
return Path(from_env)
|
||||
|
||||
try:
|
||||
return get_git_root(__file__) / "config"
|
||||
except Exception as e:
|
||||
raise SubstitutionError(
|
||||
"Could not locate the config directory: agebd is not installed inside a git "
|
||||
f"checkout. Set ${CONFIG_DIR_ENV_VAR} to the directory holding "
|
||||
f"{ENVIRONMENTS_FILENAME}."
|
||||
) from e
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class TokenSpec:
|
||||
name: str
|
||||
source: str
|
||||
description: str = ""
|
||||
|
||||
|
||||
@dataclass
|
||||
class SubstitutionsConfig:
|
||||
"""The parsed contents of config/environments.yml."""
|
||||
|
||||
config_dir: Path
|
||||
environments: dict
|
||||
tokens: dict
|
||||
render_paths: tuple = ()
|
||||
passthrough_paths: tuple = ()
|
||||
reference_paths: tuple = ()
|
||||
|
||||
@property
|
||||
def environments_file(self) -> Path:
|
||||
return self.config_dir / ENVIRONMENTS_FILENAME
|
||||
|
||||
@property
|
||||
def services_registry_file(self) -> Path:
|
||||
return self.config_dir / SERVICES_REGISTRY_FILENAME
|
||||
|
||||
@classmethod
|
||||
def load(cls, config_dir: Optional[Union[str, Path]] = None) -> "SubstitutionsConfig":
|
||||
resolved_dir = resolve_config_dir(config_dir)
|
||||
path = resolved_dir / ENVIRONMENTS_FILENAME
|
||||
if not path.is_file():
|
||||
raise SubstitutionError(f"No {ENVIRONMENTS_FILENAME} found at: {path}")
|
||||
|
||||
with open(path) as f:
|
||||
raw = yaml.safe_load(f) or {}
|
||||
|
||||
tokens = {
|
||||
name: TokenSpec(
|
||||
name=name,
|
||||
source=spec["source"],
|
||||
description=spec.get("description", ""),
|
||||
)
|
||||
for name, spec in (raw.get("tokens") or {}).items()
|
||||
}
|
||||
locations = raw.get("locations") or {}
|
||||
|
||||
config = cls(
|
||||
config_dir=resolved_dir,
|
||||
environments=raw.get("environments") or {},
|
||||
tokens=tokens,
|
||||
render_paths=tuple(locations.get("render") or ()),
|
||||
passthrough_paths=tuple(locations.get("passthrough") or ()),
|
||||
reference_paths=tuple(locations.get("references") or ()),
|
||||
)
|
||||
config.assert_valid()
|
||||
return config
|
||||
|
||||
def assert_valid(self) -> None:
|
||||
"""
|
||||
Every environment must define exactly the tokens sourced from the
|
||||
environment table -- no more, no less. This is what stops a new token
|
||||
from being added for dev but forgotten for prod.
|
||||
"""
|
||||
if not self.environments:
|
||||
raise SubstitutionError(f"No environments declared in {self.environments_file}")
|
||||
|
||||
for name, spec in self.tokens.items():
|
||||
if spec.source not in (ENVIRONMENT_SOURCE, REGISTRY_SOURCE):
|
||||
raise SubstitutionError(
|
||||
f"Token '{name}' in {self.environments_file} has unknown source "
|
||||
f"'{spec.source}'. Expected '{ENVIRONMENT_SOURCE}' or '{REGISTRY_SOURCE}'."
|
||||
)
|
||||
|
||||
expected = self.environment_token_names()
|
||||
for env_name, values in self.environments.items():
|
||||
declared = set(values)
|
||||
missing = expected - declared
|
||||
unexpected = declared - expected
|
||||
if missing:
|
||||
raise SubstitutionError(
|
||||
f"Environment '{env_name}' in {self.environments_file} is missing "
|
||||
f"token(s): {', '.join(sorted(missing))}"
|
||||
)
|
||||
if unexpected:
|
||||
raise SubstitutionError(
|
||||
f"Environment '{env_name}' in {self.environments_file} defines "
|
||||
f"token(s) that are not declared under 'tokens': "
|
||||
f"{', '.join(sorted(unexpected))}"
|
||||
)
|
||||
|
||||
def environment_token_names(self) -> set:
|
||||
return {n for n, spec in self.tokens.items() if spec.source == ENVIRONMENT_SOURCE}
|
||||
|
||||
def registry_token_names(self) -> set:
|
||||
return {n for n, spec in self.tokens.items() if spec.source == REGISTRY_SOURCE}
|
||||
|
||||
def assert_environment_exists(self, env: str) -> dict:
|
||||
try:
|
||||
return self.environments[env]
|
||||
except KeyError:
|
||||
known = ", ".join(sorted(self.environments))
|
||||
raise SubstitutionError(
|
||||
f"Unknown environment '{env}'. Declared in {self.environments_file}: {known}"
|
||||
) from None
|
||||
|
||||
def expand_render_paths(self, repo_root: Union[str, Path]) -> list:
|
||||
"""
|
||||
Resolve the 'render' globs against a checkout, keeping only what exists.
|
||||
"""
|
||||
root = Path(repo_root)
|
||||
found = []
|
||||
for pattern in self.render_paths:
|
||||
found.extend(sorted(p for p in root.glob(pattern) if p.is_dir()))
|
||||
return found
|
||||
|
||||
def is_render_path(self, rel_path: Union[str, Path]) -> bool:
|
||||
return _is_under_any(Path(rel_path), self.render_paths)
|
||||
|
||||
def is_passthrough_path(self, rel_path: Union[str, Path]) -> bool:
|
||||
return _is_under_any(Path(rel_path), self.passthrough_paths)
|
||||
|
||||
def is_reference_path(self, rel_path: Union[str, Path]) -> bool:
|
||||
"""
|
||||
True for the substitution machinery itself -- code that renders,
|
||||
generates or documents tokens rather than carrying them.
|
||||
"""
|
||||
return _is_under_any(Path(rel_path), self.reference_paths)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Substitutions:
|
||||
"""
|
||||
Resolved deploy-time token values for one environment, and optionally for
|
||||
one service.
|
||||
"""
|
||||
|
||||
values: dict = field(default_factory=dict)
|
||||
config: Optional[SubstitutionsConfig] = None
|
||||
|
||||
@classmethod
|
||||
def for_env(cls, env: str, config_dir: Optional[Union[str, Path]] = None) -> "Substitutions":
|
||||
"""
|
||||
Tokens that depend only on the environment. Rendering a file that also
|
||||
needs a registry token (``ioc_port``) with this will raise -- use
|
||||
:meth:`for_service`.
|
||||
"""
|
||||
config = SubstitutionsConfig.load(config_dir)
|
||||
return cls(values=dict(config.assert_environment_exists(str(env))), config=config)
|
||||
|
||||
@classmethod
|
||||
def for_service(
|
||||
cls, env: str, service_name: str, config_dir: Optional[Union[str, Path]] = None
|
||||
) -> "Substitutions":
|
||||
"""
|
||||
Every deploy-time token, for one service in one environment.
|
||||
"""
|
||||
subs = cls.for_env(env, config_dir=config_dir)
|
||||
assert subs.config is not None
|
||||
if "ioc_port" in subs.config.registry_token_names():
|
||||
subs.values["ioc_port"] = str(
|
||||
read_ioc_port(subs.config.services_registry_file, service_name)
|
||||
)
|
||||
return subs
|
||||
|
||||
def __getitem__(self, token: str) -> str:
|
||||
try:
|
||||
return self.values[token]
|
||||
except KeyError:
|
||||
raise UnknownTokenError(self._unknown_token_message(token)) from None
|
||||
|
||||
def __contains__(self, token: str) -> bool:
|
||||
return token in self.values
|
||||
|
||||
def render_text(self, text: str, origin: Optional[Union[str, Path]] = None) -> str:
|
||||
"""
|
||||
Replace every ``@@token@@`` in ``text``. Raises on an undeclared or
|
||||
misspelled token rather than leaving it in the output.
|
||||
"""
|
||||
|
||||
def replace(match: "re.Match") -> str:
|
||||
token = match.group(1)
|
||||
if token not in self.values:
|
||||
raise UnknownTokenError(self._unknown_token_message(token, origin=origin))
|
||||
return self.values[token]
|
||||
|
||||
return TOKEN_PATTERN.sub(replace, text)
|
||||
|
||||
def render_file(self, path: Union[str, Path]) -> bool:
|
||||
"""
|
||||
Render one file in place. Returns True if the file changed.
|
||||
"""
|
||||
path = Path(path)
|
||||
original = path.read_text()
|
||||
rendered = self.render_text(original, origin=path)
|
||||
if rendered == original:
|
||||
return False
|
||||
path.write_text(rendered)
|
||||
return True
|
||||
|
||||
def render_tree(self, root: Union[str, Path]) -> list:
|
||||
"""
|
||||
Render every text file under ``root`` in place. Returns the files that
|
||||
changed.
|
||||
"""
|
||||
return [path for path in iter_text_files(root) if self.render_file(path)]
|
||||
|
||||
def _unknown_token_message(self, token: str, origin: Optional[Union[str, Path]] = None) -> str:
|
||||
where = f" in {origin}" if origin else ""
|
||||
known = ", ".join(sorted(self.values)) or "(none)"
|
||||
declared_in = self.config.environments_file if self.config else ENVIRONMENTS_FILENAME
|
||||
return (
|
||||
f"Unknown deploy-time token '@@{token}@@'{where}. "
|
||||
f"Declare it in {declared_in}, or fix the spelling. "
|
||||
f"Available here: {known}."
|
||||
)
|
||||
|
||||
|
||||
def read_ioc_port(registry_file: Union[str, Path], service_name: str) -> int:
|
||||
"""
|
||||
Look up a service's IOC port in the services registry.
|
||||
"""
|
||||
with open(registry_file) as f:
|
||||
registry = yaml.safe_load(f) or {}
|
||||
|
||||
entry = find_service_entry(registry.get("services") or [], service_name)
|
||||
if entry is None:
|
||||
raise SubstitutionError(f"Service '{service_name}' not found in {registry_file}")
|
||||
return entry["ioc_port"]
|
||||
|
||||
|
||||
def find_service_entry(services: Iterable, service_name: str):
|
||||
"""
|
||||
Find a service's registry entry by name, or None.
|
||||
|
||||
Registry names are CamelCase; callers hold whatever casing their context
|
||||
uses, so matching goes through agebd.names.ServiceName.
|
||||
"""
|
||||
try:
|
||||
wanted = ServiceName(service_name)
|
||||
except InvalidServiceName:
|
||||
return None
|
||||
|
||||
for entry in services:
|
||||
if wanted.matches(entry.get("name", "")):
|
||||
return entry
|
||||
return None
|
||||
|
||||
|
||||
def find_tokens(text: str) -> set:
|
||||
"""Every deploy-time token name appearing in ``text``."""
|
||||
return set(TOKEN_PATTERN.findall(text))
|
||||
|
||||
|
||||
def find_legacy_tokens(text: str) -> set:
|
||||
"""Every pre-migration ``{{ token }}`` name appearing in ``text``."""
|
||||
return set(LEGACY_TOKEN_PATTERN.findall(text))
|
||||
|
||||
|
||||
SKIPPED_DIRS = frozenset(
|
||||
{".git", ".venv", ".pixi", ".cache", ".pytest_cache", ".ruff_cache", "__pycache__"}
|
||||
)
|
||||
|
||||
|
||||
def iter_text_files(root: Union[str, Path]) -> Iterator[Path]:
|
||||
"""
|
||||
Yield readable text files under ``root``, skipping build/cache directories
|
||||
and anything that is not valid UTF-8.
|
||||
"""
|
||||
for path in sorted(Path(root).rglob("*")):
|
||||
if not path.is_file():
|
||||
continue
|
||||
if SKIPPED_DIRS.intersection(path.parts):
|
||||
continue
|
||||
try:
|
||||
path.read_text()
|
||||
except (UnicodeDecodeError, OSError):
|
||||
continue
|
||||
yield path
|
||||
|
||||
|
||||
def _is_under_any(rel_path: Path, patterns: Iterable) -> bool:
|
||||
"""
|
||||
True if ``rel_path`` itself, or any of its parent directories, matches one
|
||||
of the repo-root-relative directory globs in ``patterns``.
|
||||
"""
|
||||
candidates = [rel_path] + [p for p in rel_path.parents if str(p) != "."]
|
||||
for pattern in patterns:
|
||||
pattern_parts = Path(pattern).parts
|
||||
for candidate in candidates:
|
||||
parts = candidate.parts
|
||||
if len(parts) == len(pattern_parts) and all(
|
||||
fnmatch(part, pat) for part, pat in zip(parts, pattern_parts)
|
||||
):
|
||||
return True
|
||||
return False
|
||||
@@ -0,0 +1,66 @@
|
||||
import pytest
|
||||
|
||||
from agebd.names import InvalidServiceName, ServiceName
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"name, upper, lower, underscores",
|
||||
[
|
||||
("Tune", "TUNE", "tune", "tune"),
|
||||
("TauBPM", "TAUBPM", "taubpm", "taubpm"),
|
||||
("TuneFBx", "TUNEFBX", "tunefbx", "tunefbx"),
|
||||
("OpticsFF-X02S", "OPTICSFF-X02S", "opticsff-x02s", "opticsff_x02s"),
|
||||
],
|
||||
)
|
||||
def test_case_forms(name, upper, lower, underscores):
|
||||
service = ServiceName(name)
|
||||
|
||||
assert service.camel == name
|
||||
assert service.upper == upper
|
||||
assert service.lower == lower
|
||||
assert service.lower_underscores == underscores
|
||||
|
||||
|
||||
def test_derived_names():
|
||||
service = ServiceName("OpticsFF-X02S")
|
||||
|
||||
assert service.dir_name == "opticsff-x02s"
|
||||
assert service.module_name == "agebd_opticsff_x02s"
|
||||
assert service.ioc_name == "AGEBD-CPCL-OPTICSFF-X02S"
|
||||
assert service.systemd_unit_name == "AGEBD-SERVICE-OPTICSFF-X02S.service"
|
||||
|
||||
|
||||
def test_derived_names_carry_no_environment_suffix():
|
||||
"""The suffix is a deploy-time token, applied to these base names."""
|
||||
service = ServiceName("Tune")
|
||||
|
||||
assert "DEV" not in service.ioc_name
|
||||
assert "DEV" not in service.systemd_unit_name
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", ["Tune", "tune", "TUNE", "tUnE"])
|
||||
def test_matches_is_case_insensitive(name):
|
||||
assert ServiceName("Tune").matches(name)
|
||||
|
||||
|
||||
def test_does_not_match_a_different_service():
|
||||
assert not ServiceName("Tune").matches("TuneBump")
|
||||
|
||||
|
||||
def test_does_not_match_an_invalid_name():
|
||||
assert not ServiceName("Tune").matches("Tune!")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", ["", "Tune Bump", "Tune_Bump", "Tune!", "Tune/Bump"])
|
||||
def test_invalid_names_are_rejected(name):
|
||||
with pytest.raises(InvalidServiceName):
|
||||
ServiceName(name)
|
||||
|
||||
|
||||
def test_equality_and_hashing_ignore_case():
|
||||
assert ServiceName("Tune") == ServiceName("TUNE")
|
||||
assert len({ServiceName("Tune"), ServiceName("tune")}) == 1
|
||||
|
||||
|
||||
def test_str_is_the_canonical_name():
|
||||
assert str(ServiceName("TauBPM")) == "TauBPM"
|
||||
@@ -1,8 +1,8 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
from agebd.service.pvs import BasePVs
|
||||
from agebd.runner import CallbackRunner, PeriodicRunner
|
||||
from agebd.service.base import BaseService
|
||||
from agebd.service.pvs import BasePVs
|
||||
|
||||
|
||||
class DummyPV:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from agebd.service.pvs import BasePVs
|
||||
from agebd.service.base import BaseService
|
||||
from agebd.service.pvs import BasePVs
|
||||
|
||||
|
||||
class DummyPV:
|
||||
|
||||
@@ -0,0 +1,217 @@
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
from agebd.subs import (
|
||||
SubstitutionError,
|
||||
Substitutions,
|
||||
SubstitutionsConfig,
|
||||
UnknownTokenError,
|
||||
find_legacy_tokens,
|
||||
find_tokens,
|
||||
read_ioc_port,
|
||||
)
|
||||
|
||||
ENVIRONMENTS = {
|
||||
"environments": {
|
||||
"prod": {
|
||||
"agebd_env": "prod",
|
||||
"agebd_env_suffix_upper": "",
|
||||
"agebd_env_suffix_lower": "",
|
||||
},
|
||||
"dev": {
|
||||
"agebd_env": "dev",
|
||||
"agebd_env_suffix_upper": "-DEV",
|
||||
"agebd_env_suffix_lower": "-dev",
|
||||
},
|
||||
},
|
||||
"tokens": {
|
||||
"agebd_env": {"source": "environment", "description": "env name"},
|
||||
"agebd_env_suffix_upper": {"source": "environment", "description": "upper suffix"},
|
||||
"agebd_env_suffix_lower": {"source": "environment", "description": "lower suffix"},
|
||||
"ioc_port": {"source": "registry", "description": "ioc port"},
|
||||
},
|
||||
"locations": {
|
||||
"render": ["services/*/current/ioc", "qt"],
|
||||
"passthrough": ["templates"],
|
||||
},
|
||||
}
|
||||
|
||||
REGISTRY = {
|
||||
"next_available_ioc_port": 50002,
|
||||
"services": [
|
||||
{"name": "Master", "ioc_port": 50000, "status": "active"},
|
||||
{"name": "TauBPM", "ioc_port": 50001, "status": "active"},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def config_dir(tmp_path):
|
||||
(tmp_path / "environments.yml").write_text(yaml.safe_dump(ENVIRONMENTS))
|
||||
(tmp_path / "services_registry.yml").write_text(yaml.safe_dump(REGISTRY))
|
||||
return tmp_path
|
||||
|
||||
|
||||
def write_environments(config_dir, environments):
|
||||
(config_dir / "environments.yml").write_text(yaml.safe_dump(environments))
|
||||
|
||||
|
||||
def test_for_env_resolves_environment_tokens(config_dir):
|
||||
subs = Substitutions.for_env("dev", config_dir=config_dir)
|
||||
|
||||
assert subs["agebd_env"] == "dev"
|
||||
assert subs["agebd_env_suffix_upper"] == "-DEV"
|
||||
assert subs["agebd_env_suffix_lower"] == "-dev"
|
||||
|
||||
|
||||
def test_prod_suffixes_are_empty(config_dir):
|
||||
subs = Substitutions.for_env("prod", config_dir=config_dir)
|
||||
|
||||
assert subs.render_text("AGEBD-TUNE@@agebd_env_suffix_upper@@:AO") == "AGEBD-TUNE:AO"
|
||||
|
||||
|
||||
def test_for_service_adds_ioc_port(config_dir):
|
||||
subs = Substitutions.for_service("dev", "taubpm", config_dir=config_dir)
|
||||
|
||||
assert subs["ioc_port"] == "50001"
|
||||
|
||||
|
||||
def test_render_text_substitutes_every_occurrence(config_dir):
|
||||
subs = Substitutions.for_env("dev", config_dir=config_dir)
|
||||
|
||||
text = "AGEBD-ALH@@agebd_env_suffix_upper@@:X\nsls-vserv-bd-01@@agebd_env_suffix_lower@@\n"
|
||||
|
||||
assert subs.render_text(text) == "AGEBD-ALH-DEV:X\nsls-vserv-bd-01-dev\n"
|
||||
|
||||
|
||||
def test_render_text_raises_on_misspelled_token(config_dir):
|
||||
subs = Substitutions.for_env("dev", config_dir=config_dir)
|
||||
|
||||
with pytest.raises(UnknownTokenError, match="agebd_env_sufix_upper"):
|
||||
subs.render_text("AGEBD-TUNE@@agebd_env_sufix_upper@@:AO", origin="TUNE.subs")
|
||||
|
||||
|
||||
def test_render_text_raises_when_registry_token_is_not_loaded(config_dir):
|
||||
"""for_env() has no ioc_port, so a parameters file must fail loudly."""
|
||||
subs = Substitutions.for_env("dev", config_dir=config_dir)
|
||||
|
||||
with pytest.raises(UnknownTokenError, match="ioc_port"):
|
||||
subs.render_text("ioc_port: @@ioc_port@@")
|
||||
|
||||
|
||||
def test_render_file_reports_whether_it_changed(config_dir, tmp_path):
|
||||
subs = Substitutions.for_env("dev", config_dir=config_dir)
|
||||
path = tmp_path / "AGEBD-CPCL-TUNE_main.subs"
|
||||
path.write_text("{ AGEBD-TUNE@@agebd_env_suffix_upper@@ }\n")
|
||||
|
||||
assert subs.render_file(path) is True
|
||||
assert path.read_text() == "{ AGEBD-TUNE-DEV }\n"
|
||||
assert subs.render_file(path) is False
|
||||
|
||||
|
||||
def test_render_tree_skips_cache_directories(config_dir, tmp_path):
|
||||
subs = Substitutions.for_env("dev", config_dir=config_dir)
|
||||
(tmp_path / "ioc").mkdir()
|
||||
(tmp_path / "ioc" / "a.subs").write_text("AGEBD-A@@agebd_env_suffix_upper@@")
|
||||
(tmp_path / "__pycache__").mkdir()
|
||||
(tmp_path / "__pycache__" / "b.subs").write_text("AGEBD-B@@agebd_env_suffix_upper@@")
|
||||
|
||||
changed = subs.render_tree(tmp_path)
|
||||
|
||||
assert [p.name for p in changed] == ["a.subs"]
|
||||
assert (tmp_path / "__pycache__" / "b.subs").read_text().endswith("@@agebd_env_suffix_upper@@")
|
||||
|
||||
|
||||
def test_replacement_value_is_literal(config_dir):
|
||||
"""A value containing regex backreference syntax must not be interpreted."""
|
||||
environments = yaml.safe_load(yaml.safe_dump(ENVIRONMENTS))
|
||||
environments["environments"]["dev"]["agebd_env_suffix_upper"] = r"-\1DEV"
|
||||
write_environments(config_dir, environments)
|
||||
|
||||
subs = Substitutions.for_env("dev", config_dir=config_dir)
|
||||
|
||||
assert subs.render_text("AGEBD-A@@agebd_env_suffix_upper@@") == r"AGEBD-A-\1DEV"
|
||||
|
||||
|
||||
def test_unknown_environment_lists_the_known_ones(config_dir):
|
||||
with pytest.raises(SubstitutionError, match="dev, prod"):
|
||||
Substitutions.for_env("staging", config_dir=config_dir)
|
||||
|
||||
|
||||
def test_token_missing_from_one_environment_is_a_load_error(config_dir):
|
||||
environments = yaml.safe_load(yaml.safe_dump(ENVIRONMENTS))
|
||||
del environments["environments"]["prod"]["agebd_env_suffix_lower"]
|
||||
write_environments(config_dir, environments)
|
||||
|
||||
with pytest.raises(SubstitutionError, match="missing token"):
|
||||
SubstitutionsConfig.load(config_dir)
|
||||
|
||||
|
||||
def test_undeclared_token_in_an_environment_is_a_load_error(config_dir):
|
||||
environments = yaml.safe_load(yaml.safe_dump(ENVIRONMENTS))
|
||||
environments["environments"]["dev"]["agebd_env_suffix_mixed"] = "-Dev"
|
||||
write_environments(config_dir, environments)
|
||||
|
||||
with pytest.raises(SubstitutionError, match="not declared"):
|
||||
SubstitutionsConfig.load(config_dir)
|
||||
|
||||
|
||||
def test_unknown_token_source_is_a_load_error(config_dir):
|
||||
environments = yaml.safe_load(yaml.safe_dump(ENVIRONMENTS))
|
||||
environments["tokens"]["ioc_port"]["source"] = "somewhere"
|
||||
write_environments(config_dir, environments)
|
||||
|
||||
with pytest.raises(SubstitutionError, match="unknown source"):
|
||||
SubstitutionsConfig.load(config_dir)
|
||||
|
||||
|
||||
def test_read_ioc_port_is_case_insensitive(config_dir):
|
||||
registry_file = config_dir / "services_registry.yml"
|
||||
|
||||
assert read_ioc_port(registry_file, "taubpm") == 50001
|
||||
assert read_ioc_port(registry_file, "TauBPM") == 50001
|
||||
assert read_ioc_port(registry_file, "TAUBPM") == 50001
|
||||
|
||||
|
||||
def test_read_ioc_port_raises_for_unknown_service(config_dir):
|
||||
with pytest.raises(SubstitutionError, match="Nope"):
|
||||
read_ioc_port(config_dir / "services_registry.yml", "Nope")
|
||||
|
||||
|
||||
def test_path_classification(config_dir):
|
||||
config = SubstitutionsConfig.load(config_dir)
|
||||
|
||||
assert config.is_render_path("services/tune/current/ioc/TUNE.template")
|
||||
assert config.is_render_path("qt/A_BD_Tune.ui")
|
||||
assert config.is_passthrough_path("templates/service/x/current/ioc/a.jinja")
|
||||
assert not config.is_render_path("services/tune/current/app/src/main.py")
|
||||
assert not config.is_passthrough_path("services/tune/current/app/src/main.py")
|
||||
|
||||
|
||||
def test_expand_render_paths(config_dir, tmp_path):
|
||||
config = SubstitutionsConfig.load(config_dir)
|
||||
repo = tmp_path / "repo"
|
||||
(repo / "services" / "tune" / "current" / "ioc").mkdir(parents=True)
|
||||
(repo / "services" / "tune" / "current" / "app").mkdir(parents=True)
|
||||
(repo / "qt").mkdir()
|
||||
|
||||
expanded = {p.relative_to(repo).as_posix() for p in config.expand_render_paths(repo)}
|
||||
|
||||
assert expanded == {"services/tune/current/ioc", "qt"}
|
||||
|
||||
|
||||
def test_find_tokens_ignores_non_token_angle_brackets():
|
||||
assert find_tokens("@@b@@ and @@agebd_env@@") == {"b", "agebd_env"}
|
||||
assert find_tokens("user@@example.com") == set()
|
||||
assert find_tokens("@@ NotAToken @@") == set()
|
||||
|
||||
|
||||
def test_find_legacy_tokens_returns_both_stages():
|
||||
"""
|
||||
It cannot tell the two stages apart on syntax alone -- callers intersect
|
||||
the result with the declared deploy-time tokens.
|
||||
"""
|
||||
assert find_legacy_tokens("{{ agebd_env_suffix_upper }} {{service_name_upper}}") == {
|
||||
"agebd_env_suffix_upper",
|
||||
"service_name_upper",
|
||||
}
|
||||
Generated
+19
@@ -10,6 +10,7 @@ dependencies = [
|
||||
{ name = "gitpython" },
|
||||
{ name = "h5py" },
|
||||
{ name = "pyepics" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "typer" },
|
||||
]
|
||||
|
||||
@@ -28,6 +29,7 @@ requires-dist = [
|
||||
{ name = "gitpython", specifier = ">=3.1.50" },
|
||||
{ name = "h5py", specifier = ">=3.16.0" },
|
||||
{ name = "pyepics", specifier = ">=3.5.10" },
|
||||
{ name = "pyyaml", specifier = ">=6.0.3" },
|
||||
{ name = "typer", specifier = ">=0.23.2" },
|
||||
]
|
||||
|
||||
@@ -532,6 +534,23 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyyaml"
|
||||
version = "6.0.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "readme-renderer"
|
||||
version = "45.0"
|
||||
|
||||
+15
-15
@@ -43,7 +43,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:DBPM3CURR-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:DBPM3CURR-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -185,7 +185,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CHARGE-AVG</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CHARGE-AVG</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -245,7 +245,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CURRENT-AVG</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CURRENT-AVG</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -305,7 +305,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:ACCUMULATED-BEAM-DOSE</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:ACCUMULATED-BEAM-DOSE</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -521,7 +521,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CURRENT-AVG.EGU</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CURRENT-AVG.EGU</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -581,7 +581,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CHARGE-AVG.EGU</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CHARGE-AVG.EGU</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -641,7 +641,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:ACCUMULATED-BEAM-DOSE.EGU</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:ACCUMULATED-BEAM-DOSE.EGU</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -755,7 +755,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:DBPM3CURR-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:DBPM3CURR-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -796,7 +796,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CALIBRATION-DBPM3-2-PCT-NEW</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CALIBRATION-DBPM3-2-PCT-NEW</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -853,7 +853,7 @@
|
||||
<string>Calculate New Calibration Factor</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CONTROL-RECALIBRATE</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CONTROL-RECALIBRATE</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Calculate New Calibration Factor</string>
|
||||
@@ -872,7 +872,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CONTROL-RECALIBRATE-NPTS</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CONTROL-RECALIBRATE-NPTS</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>0</number>
|
||||
@@ -894,7 +894,7 @@
|
||||
<string>Apply New Calibration Factor</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CONTROL-RECALIBRATE-APPLY</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CONTROL-RECALIBRATE-APPLY</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Apply New Calibration Factor</string>
|
||||
@@ -922,7 +922,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:CALIBRATION-DBPM3-2-PCT</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:CALIBRATION-DBPM3-2-PCT</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -1118,7 +1118,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:ACCUMULATED-BEAM-DOSE-PCT</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:ACCUMULATED-BEAM-DOSE-PCT</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -1194,7 +1194,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }}:ACCUMULATED-BEAM-DOSE-PCT.EGU</string>
|
||||
<string notr="true">AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@:ACCUMULATED-BEAM-DOSE-PCT.EGU</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
|
||||
@@ -106,7 +106,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="macro">
|
||||
<string>name=Orbit Feedback,alive=ARSGE-CECL-FOFB1:FOFB-OPERATE,panelcmd=A_DI_FOFB_CECL_USER.ui;name=Hor. Tune Feedback,onoff=AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBX-ONOFF,alive=AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBX-ALIVE,panelcmd=A_BD_TuneBump.ui;name=Ver. Tune Feedback,onoff=AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBY-ONOFF,alive=AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBY-ALIVE,panelcmd=A_BD_TuneBump.ui</string>
|
||||
<string>name=Orbit Feedback,alive=ARSGE-CECL-FOFB1:FOFB-OPERATE,panelcmd=A_DI_FOFB_CECL_USER.ui;name=Hor. Tune Feedback,onoff=AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBX-ONOFF,alive=AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBX-ALIVE,panelcmd=A_BD_TuneBump.ui;name=Ver. Tune Feedback,onoff=AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBY-ONOFF,alive=AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBY-ALIVE,panelcmd=A_BD_TuneBump.ui</string>
|
||||
</property>
|
||||
<property name="filename" stdset="0">
|
||||
<string notr="true">A_BD_FeedBackOverview_inc.ui</string>
|
||||
|
||||
+11
-11
@@ -66,7 +66,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:INJECTIONGUARD-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:INJECTIONGUARD-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -89,7 +89,7 @@ caLabel[statusTip="Operation"]{
|
||||
</font>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CONTROL-MODE</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CONTROL-MODE</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLabel" name="calabel">
|
||||
@@ -125,7 +125,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-SUM</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-SUM</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -405,7 +405,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>30</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:STATUS-SECRET-MASTER</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:STATUS-SECRET-MASTER</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -547,7 +547,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-SUM-OP</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-SUM-OP</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -617,7 +617,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-SUM-MD</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-SUM-MD</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -696,7 +696,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-SUM-LATCH</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-SUM-LATCH</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -724,7 +724,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:RESET-LATCHES</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:RESET-LATCHES</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Reset</string>
|
||||
@@ -771,7 +771,7 @@ caLabel[statusTip="Operation"]{
|
||||
<enum>Qt::ScrollBarAsNeeded</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:LOG</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:LOG</string>
|
||||
</property>
|
||||
<property name="fontScaleMode" stdset="0">
|
||||
<enum>caMultiLineString::None</enum>
|
||||
@@ -790,7 +790,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string>Clear Logs</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:LOG-CLEAR</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:LOG-CLEAR</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Clear Logs</string>
|
||||
@@ -819,7 +819,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:LOG-PAUSE</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:LOG-PAUSE</string>
|
||||
</property>
|
||||
<property name="background">
|
||||
<color>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
</size>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CONTROL-BRIDGE-CHECK-$(checknr)</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CONTROL-BRIDGE-CHECK-$(checknr)</string>
|
||||
</property>
|
||||
<property name="background">
|
||||
<color alpha="0">
|
||||
@@ -62,7 +62,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-$(checknr)</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-$(checknr)</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -81,7 +81,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-$(checknr)-MD</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-$(checknr)-MD</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -110,7 +110,7 @@
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-$(checknr).DESC</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-$(checknr).DESC</string>
|
||||
</property>
|
||||
<property name="background">
|
||||
<color alpha="0">
|
||||
@@ -170,7 +170,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CHECK-$(checknr)-LATCH</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CHECK-$(checknr)-LATCH</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -199,7 +199,7 @@
|
||||
<number>20</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:CONTROL-BRIDGE-CHECK-$(checknr)</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:CONTROL-BRIDGE-CHECK-$(checknr)</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
|
||||
+4
-4
@@ -43,7 +43,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -62,7 +62,7 @@
|
||||
<string>Clear Logs</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:LOG-CLEAR</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:LOG-CLEAR</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Clear Logs</string>
|
||||
@@ -94,7 +94,7 @@
|
||||
<string>Get Systemd Status for each Service</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:GET-SYSTEMD-STATUS</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:GET-SYSTEMD-STATUS</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Get Systemd Status for each Service</string>
|
||||
@@ -151,7 +151,7 @@
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:LOG</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:LOG</string>
|
||||
</property>
|
||||
<property name="limitsMode">
|
||||
<enum>caLineEdit::User</enum>
|
||||
|
||||
+14
-14
@@ -24,7 +24,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:NTURNS-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:NTURNS-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -62,7 +62,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:NTURNS-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:NTURNS-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -202,7 +202,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-80-NPOINTS</string>
|
||||
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-80-NPOINTS</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caLineEdit::User</enum>
|
||||
@@ -218,7 +218,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-80-MINHEIGHT</string>
|
||||
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-80-MINHEIGHT</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caTextEntry" name="catextentry_3">
|
||||
@@ -231,7 +231,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-80-MINSEP</string>
|
||||
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-80-MINSEP</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLabel" name="calabel_6">
|
||||
@@ -292,7 +292,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-2K-MINSEP</string>
|
||||
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-2K-MINSEP</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caTextEntry" name="catextentry_5">
|
||||
@@ -305,7 +305,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-2K-MINHEIGHT</string>
|
||||
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-2K-MINHEIGHT</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caTextEntry" name="catextentry_6">
|
||||
@@ -318,7 +318,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:CONTROL-2K-NPOINTS</string>
|
||||
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:CONTROL-2K-NPOINTS</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caLineEdit::User</enum>
|
||||
@@ -388,7 +388,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-80TURNS</string>
|
||||
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-80TURNS</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -448,7 +448,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-2KTURNS</string>
|
||||
<string notr="true">AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-2KTURNS</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -526,7 +526,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-NTURNS{{ agebd_env_suffix_upper }}:BPM-WF-ENUMERATE;AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-80TURNS-WF</string>
|
||||
<string>AGEBD-NTURNS@@agebd_env_suffix_upper@@:BPM-WF-ENUMERATE;AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-80TURNS-WF</string>
|
||||
</property>
|
||||
<property name="Style_1">
|
||||
<enum>caCartesianPlot::Lines</enum>
|
||||
@@ -542,7 +542,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-NTURNS{{ agebd_env_suffix_upper }}:BPM-WF-ENUMERATE;AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-80TURNS-PEAKS</string>
|
||||
<string>AGEBD-NTURNS@@agebd_env_suffix_upper@@:BPM-WF-ENUMERATE;AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-80TURNS-PEAKS</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Sticks</enum>
|
||||
@@ -582,7 +582,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-NTURNS{{ agebd_env_suffix_upper }}:BPM-WF-ENUMERATE;AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-2KTURNS-WF</string>
|
||||
<string>AGEBD-NTURNS@@agebd_env_suffix_upper@@:BPM-WF-ENUMERATE;AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-2KTURNS-WF</string>
|
||||
</property>
|
||||
<property name="Style_1">
|
||||
<enum>caCartesianPlot::Lines</enum>
|
||||
@@ -598,7 +598,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-NTURNS{{ agebd_env_suffix_upper }}:BPM-WF-ENUMERATE;AGEBD-NTURNS{{ agebd_env_suffix_upper }}:STAGE0-Q-80TURNS-PEAKS;</string>
|
||||
<string>AGEBD-NTURNS@@agebd_env_suffix_upper@@:BPM-WF-ENUMERATE;AGEBD-NTURNS@@agebd_env_suffix_upper@@:STAGE0-Q-80TURNS-PEAKS;</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Sticks</enum>
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:ORBITBUMP-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:ORBITBUMP-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
</font>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINE-BEND</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINE-BEND</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caMenu" name="camenu_2">
|
||||
@@ -51,7 +51,7 @@
|
||||
</font>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINE-ID</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINE-ID</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_87">
|
||||
@@ -64,7 +64,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINECALC</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINECALC</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -86,7 +86,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINETYPE-BEND</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINETYPE-BEND</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -108,7 +108,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINETYPE</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINETYPE</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -130,7 +130,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINETYPE-ID</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINETYPE-ID</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -152,7 +152,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:BEAMLINE</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:BEAMLINE</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAX-BPM1</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAX-BPM1</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_2">
|
||||
@@ -37,7 +37,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAY-BPM1</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAY-BPM1</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_3">
|
||||
@@ -50,7 +50,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAX-BPM2</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAX-BPM2</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_4">
|
||||
@@ -63,7 +63,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAY-BPM2</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAY-BPM2</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caSpinbox" name="caspinbox_2">
|
||||
@@ -82,7 +82,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-X</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-X</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caSpinbox::Alarm</enum>
|
||||
@@ -116,7 +116,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-XP</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-XP</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caSpinbox::Alarm</enum>
|
||||
@@ -150,7 +150,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-YP</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-YP</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caSpinbox::Alarm</enum>
|
||||
@@ -184,7 +184,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-Y</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-Y</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caSpinbox::Alarm</enum>
|
||||
@@ -212,7 +212,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAX-BPM4</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAX-BPM4</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_6">
|
||||
@@ -225,7 +225,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAY-BPM3</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAY-BPM3</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_7">
|
||||
@@ -238,7 +238,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAY-BPM4</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAY-BPM4</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_8">
|
||||
@@ -251,7 +251,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-DELTAX-BPM3</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-DELTAX-BPM3</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_9">
|
||||
@@ -264,7 +264,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-BPM1</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-BPM1</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_10">
|
||||
@@ -277,7 +277,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-BPM2</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-BPM2</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_11">
|
||||
@@ -290,7 +290,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-BPM3</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-BPM3</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLineEdit" name="calineedit_12">
|
||||
@@ -303,7 +303,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-BPM4</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-BPM4</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caSpinbox" name="caspinbox_6">
|
||||
@@ -475,7 +475,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-X-TOTAL</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-X-TOTAL</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -497,7 +497,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-Y-TOTAL</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-Y-TOTAL</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -516,7 +516,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-YP-TOTAL</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-YP-TOTAL</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -535,7 +535,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-XP-TOTAL</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-XP-TOTAL</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-X-TOTAL</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-X-TOTAL</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -59,7 +59,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-XP-TOTAL</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-XP-TOTAL</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -78,7 +78,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-Y-TOTAL</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-Y-TOTAL</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -97,7 +97,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }}:$(sourcepoint)-OFFSET-YP-TOTAL</string>
|
||||
<string notr="true">AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@:$(sourcepoint)-OFFSET-YP-TOTAL</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
|
||||
+24
-24
@@ -52,7 +52,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:POSTMORTEMLOG-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:POSTMORTEMLOG-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -74,7 +74,7 @@
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:LOG</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:LOG</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
@@ -106,7 +106,7 @@
|
||||
<string notr="true">Horizontal Tune (nominal: Qx = 39.37)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-QX</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-QX</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -179,7 +179,7 @@
|
||||
<string notr="true">Vertival Tune (nominal: Qy = 15.22)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-QY</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-QY</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -252,7 +252,7 @@
|
||||
<string notr="true">Vertival Beam Size (nominal: Sig_y = 10)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X01DD-SIGY</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X01DD-SIGY</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -262,7 +262,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X08DB-SIGY</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X08DB-SIGY</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Lines</enum>
|
||||
@@ -332,7 +332,7 @@
|
||||
<string notr="true">Horizontal Beam Size (nominal: Sig_x = 9)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X01DD-SIGX</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X01DD-SIGX</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -342,7 +342,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X08DB-SIGX</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X08DB-SIGX</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Lines</enum>
|
||||
@@ -412,7 +412,7 @@
|
||||
<string notr="true">Stored Beam Current</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-CURRPCT</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-CURRPCT</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -422,7 +422,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-CURRBPM</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-CURRBPM</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Lines</enum>
|
||||
@@ -492,7 +492,7 @@
|
||||
<string notr="true">Beam Lifetime</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TAUBPM</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TAUBPM</string>
|
||||
</property>
|
||||
<property name="Style_1">
|
||||
<enum>caCartesianPlot::FatDots</enum>
|
||||
@@ -505,7 +505,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TAUPCT</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TAUPCT</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::FatDots</enum>
|
||||
@@ -580,7 +580,7 @@
|
||||
<string notr="true">Vertival Beam Size (nominal: Sig_y = 10)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X01DD-SIGY-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X01DD-SIGY-LAST</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -590,7 +590,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X08DB-SIGY-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X08DB-SIGY-LAST</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Lines</enum>
|
||||
@@ -660,7 +660,7 @@
|
||||
<string notr="true">Stored Beam Current</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-CURRPCT-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-CURRPCT-LAST</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -670,7 +670,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-CURRBPM-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-CURRBPM-LAST</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Lines</enum>
|
||||
@@ -740,7 +740,7 @@
|
||||
<string notr="true">Horizontal Tune (nominal: Qx = 39.37)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-QX-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-QX-LAST</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -813,7 +813,7 @@
|
||||
<string notr="true">Horizontal Beam Size (nominal: Sig_x = 9)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X01DD-SIGX-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X01DD-SIGX-LAST</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -823,7 +823,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-X08DB-SIGX-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-X08DB-SIGX-LAST</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Lines</enum>
|
||||
@@ -893,7 +893,7 @@
|
||||
<string notr="true">Vertival Tune (nominal: Qy = 15.22)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-QY-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-QY-LAST</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -966,7 +966,7 @@
|
||||
<string notr="true">Beam Lifetime</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TAUBPM-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TAUBPM-LAST</string>
|
||||
</property>
|
||||
<property name="Style_1">
|
||||
<enum>caCartesianPlot::FatDots</enum>
|
||||
@@ -979,7 +979,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TIME;AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:BUFFER-TAUPCT-LAST</string>
|
||||
<string>AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TIME;AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:BUFFER-TAUPCT-LAST</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::FatDots</enum>
|
||||
@@ -1072,7 +1072,7 @@
|
||||
<string>Update Logs</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:POSTMORTEMLOG-LOGS-REQ</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:POSTMORTEMLOG-LOGS-REQ</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Update Logs</string>
|
||||
@@ -1104,7 +1104,7 @@
|
||||
<string>Test Trigger Post Mortem</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-POSTMORTEMLOG{{ agebd_env_suffix_upper }}:TEST</string>
|
||||
<string notr="true">AGEBD-POSTMORTEMLOG@@agebd_env_suffix_upper@@:TEST</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Test Trigger Post Mortem</string>
|
||||
|
||||
+42
-42
@@ -24,7 +24,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -59,7 +59,7 @@
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="channels" stdset="0">
|
||||
<string>ARIVA-VMAVE:PRESS-MAX;ARIVA-VMAVE-FE:PRESS-MAX;ARIVA-VMAVE-ALL:PRESS-MAX;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-MAX-PLOT;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-MIN-PLOT;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-PLOT</string>
|
||||
<string>ARIVA-VMAVE:PRESS-MAX;ARIVA-VMAVE-FE:PRESS-MAX;ARIVA-VMAVE-ALL:PRESS-MAX;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-MAX-PLOT;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-MIN-PLOT;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-DYN-PLOT</string>
|
||||
</property>
|
||||
<property name="units">
|
||||
<enum>caStripPlot::Second</enum>
|
||||
@@ -411,7 +411,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerOneToZero</enum>
|
||||
@@ -427,7 +427,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-INFO</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-INFO</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -449,7 +449,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:TOPUP-DELTAT</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:TOPUP-DELTAT</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -474,7 +474,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:TOPUP-TAU</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:TOPUP-TAU</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -568,7 +568,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:TOPUP-DELTAI</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:TOPUP-DELTAI</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -1913,7 +1913,7 @@
|
||||
<number>22</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:STATUS-SECRET-MASTER</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:STATUS-SECRET-MASTER</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -2937,7 +2937,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOIN-SP.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOIN-SP.VAL</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2962,7 +2962,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOMB-SP.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOMB-SP.VAL</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2987,7 +2987,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOME-SP.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOME-SP.VAL</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3012,7 +3012,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOEX-SP.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOEX-SP.VAL</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3037,7 +3037,7 @@ AGETI-CVME-MASTER-TMA:Evt-LI-Gun-EVRCount-I</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-SRIN-SP.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-SRIN-SP.VAL</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3099,7 +3099,7 @@ Setpoint</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOMB-RB.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOMB-RB.VAL</string>
|
||||
</property>
|
||||
<property name="background">
|
||||
<color>
|
||||
@@ -3141,7 +3141,7 @@ Setpoint</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOIN-RB.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOIN-RB.VAL</string>
|
||||
</property>
|
||||
<property name="background">
|
||||
<color>
|
||||
@@ -3183,7 +3183,7 @@ Setpoint</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOME-RB.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOME-RB.VAL</string>
|
||||
</property>
|
||||
<property name="background">
|
||||
<color>
|
||||
@@ -3225,7 +3225,7 @@ Setpoint</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-SRIN-RB.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-SRIN-RB.VAL</string>
|
||||
</property>
|
||||
<property name="background">
|
||||
<color>
|
||||
@@ -3267,7 +3267,7 @@ Setpoint</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:WARMUPCYCLES-BOEX-RB.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:WARMUPCYCLES-BOEX-RB.VAL</string>
|
||||
</property>
|
||||
<property name="background">
|
||||
<color>
|
||||
@@ -3394,7 +3394,7 @@ Remaining</string>
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>;AGEBD-TIMING{{ agebd_env_suffix_upper }}:TARGET-BUCKET</string>
|
||||
<string>;AGEBD-TIMING@@agebd_env_suffix_upper@@:TARGET-BUCKET</string>
|
||||
</property>
|
||||
<property name="Style_1">
|
||||
<enum>caCartesianPlot::Sticks</enum>
|
||||
@@ -3491,7 +3491,7 @@ Remaining</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:GO</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:GO</string>
|
||||
</property>
|
||||
<property name="trueColor">
|
||||
<color>
|
||||
@@ -3535,7 +3535,7 @@ Remaining</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FILLPATTERN-string.VAL</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FILLPATTERN-string.VAL</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>0</number>
|
||||
@@ -3567,7 +3567,7 @@ Remaining</string>
|
||||
</font>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:FPFB-MODE</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:FPFB-MODE</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caMessageButton" name="camessagebutton_39">
|
||||
@@ -3591,7 +3591,7 @@ Remaining</string>
|
||||
<enum>EPushButton::WidthAndHeight</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:ZERO-TARGET-BUCKET</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:ZERO-TARGET-BUCKET</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Reset</string>
|
||||
@@ -3639,7 +3639,7 @@ Remaining</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CURRENT-THRESHOLD</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CURRENT-THRESHOLD</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3690,7 +3690,7 @@ Remaining</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:FPFB-NTH</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:FPFB-NTH</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3754,7 +3754,7 @@ Remaining</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MIN</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MIN</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3779,7 +3779,7 @@ Remaining</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3850,7 +3850,7 @@ Remaining</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-MIN</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-MIN</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3921,7 +3921,7 @@ Remaining</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-MAX</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3969,7 +3969,7 @@ Remaining</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-TIME-MAX</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-TIME-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3994,7 +3994,7 @@ Remaining</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-TIME-MIN</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-TIME-MIN</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4058,7 +4058,7 @@ Remaining</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-GUNGRID-FPFB</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-GUNGRID-FPFB</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4083,7 +4083,7 @@ Remaining</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-GUNGRID-ACCUM</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-GUNGRID-ACCUM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4171,7 +4171,7 @@ Remaining</string>
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="channels" stdset="0">
|
||||
<string>ARS07-DPCT-0000:CURR;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX;AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MIN</string>
|
||||
<string>ARS07-DPCT-0000:CURR;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX;AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MIN</string>
|
||||
</property>
|
||||
<property name="units">
|
||||
<enum>caStripPlot::Second</enum>
|
||||
@@ -4398,7 +4398,7 @@ Remaining</string>
|
||||
<set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-PARAMS{{ agebd_env_suffix_upper }}:LIFETIME</string>
|
||||
<string notr="true">AGEBD-PARAMS@@agebd_env_suffix_upper@@:LIFETIME</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -4448,7 +4448,7 @@ Remaining</string>
|
||||
</font>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-PARAMS{{ agebd_env_suffix_upper }}:TRANSMISSION</string>
|
||||
<string notr="true">AGEBD-PARAMS@@agebd_env_suffix_upper@@:TRANSMISSION</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -4521,7 +4521,7 @@ Remaining</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">
|
||||
AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
|
||||
AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-VACUUM-DYN-FRAC</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4559,7 +4559,7 @@ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
|
||||
</font>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-SCRUB</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-SCRUB</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLabel" name="calabel_14">
|
||||
@@ -4611,7 +4611,7 @@ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
|
||||
<string notr="true">A>3</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-SCRUB</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-SCRUB</string>
|
||||
</property>
|
||||
<widget class="caLineEdit" name="calineedit_22">
|
||||
<property name="geometry">
|
||||
@@ -4674,7 +4674,7 @@ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:MBFBY-GAIN-SP.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:MBFBY-GAIN-SP.VAL</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4776,7 +4776,7 @@ AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-VACUUM-DYN-FRAC</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:MBFBX-GAIN-SP.VAL</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:MBFBX-GAIN-SP.VAL</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -5062,7 +5062,7 @@ ARSGE-MBFBT-AMP-02:SET-ON-OFF</string>
|
||||
<string notr="true">A<4 & A>0</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-SCRUBBING{{ agebd_env_suffix_upper }}:CONTROL-SCRUB</string>
|
||||
<string notr="true">AGEBD-SCRUBBING@@agebd_env_suffix_upper@@:CONTROL-SCRUB</string>
|
||||
</property>
|
||||
<widget class="caSpinbox" name="caspinbox_21">
|
||||
<property name="geometry">
|
||||
|
||||
+17
-17
@@ -71,7 +71,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -106,7 +106,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">!A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
@@ -138,7 +138,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="macro">
|
||||
<string>IOC=AGEBD-CPCL-DBPM3CURR,service=DBPM3CURR,name=DBPM3Curr,panel=1,svc_exist=1,panelcmd=A_BD_DBPM3Curr.ui;IOC=AGEBD-CPCL-TAUBPM,service=TAUBPM,name=TauBPM,panel=1,svc_exist=1,panelcmd=A_BD_TauBPM.ui;IOC=AGEBD-CPCL-TAUPCT,service=TAUPCT,name=TauPCT,panel=1,svc_exist=1,panelcmd=A_BD_TauPCT.ui;IOC=AGEBD-CPCL-TIMING,service=TIMING,name=Timing,panel=1,svc_exist=1,panelcmd=A_BD_Timing.ui;IOC=AGEBD-CPCL-SCRUBBING,service=SCRUBBING,name=Scrubbing,panel=1,svc_exist=1,panelcmd=A_BD_Scrubbing.ui;IOC=AGEBD-CPCL-INJECTIONGUARD,service=INJECTIONGUARD,name=InjectionGuard,panel=1,svc_exist=1,panelcmd=A_BD_InjectionGuard.ui;IOC=AGEBD-CPCL-POSTMORTEMLOG,service=POSTMORTEMLOG,name=PostMortemLog,panel=1,svc_exist=1,panelcmd=A_BD_PostMortemLog.ui;IOC=AGEBD-CPCL-TUNEBUMP,service=TUNEBUMP,name=TuneBump,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-PLOTS,service=PLOTS,name=Plots,panel=0,svc_exist=1,panelcmd=A_BD_Plots.ui;IOC=AGEBD-CPCL-ORBITBUMP,service=ORBITBUMP,name=OrbitBump,panel=1,svc_exist=0,panelcmd=A_BD_OrbitBump.ui;IOC=AGEBD-CPCL-TUNEFBX,service=TUNEFBX,name=TuneFBx,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-TUNEFBY,service=TUNEFBY,name=TuneFBy,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui</string>
|
||||
<string>IOC=AGEBD-CPCL-DBPM3CURR@@agebd_env_suffix_upper@@,service=DBPM3CURR,name=DBPM3Curr,panel=1,svc_exist=1,panelcmd=A_BD_DBPM3Curr.ui;IOC=AGEBD-CPCL-TAUBPM@@agebd_env_suffix_upper@@,service=TAUBPM,name=TauBPM,panel=1,svc_exist=1,panelcmd=A_BD_TauBPM.ui;IOC=AGEBD-CPCL-TAUPCT@@agebd_env_suffix_upper@@,service=TAUPCT,name=TauPCT,panel=1,svc_exist=1,panelcmd=A_BD_TauPCT.ui;IOC=AGEBD-CPCL-TIMING@@agebd_env_suffix_upper@@,service=TIMING,name=Timing,panel=1,svc_exist=1,panelcmd=A_BD_Timing.ui;IOC=AGEBD-CPCL-SCRUBBING@@agebd_env_suffix_upper@@,service=SCRUBBING,name=Scrubbing,panel=1,svc_exist=1,panelcmd=A_BD_Scrubbing.ui;IOC=AGEBD-CPCL-INJECTIONGUARD@@agebd_env_suffix_upper@@,service=INJECTIONGUARD,name=InjectionGuard,panel=1,svc_exist=1,panelcmd=A_BD_InjectionGuard.ui;IOC=AGEBD-CPCL-POSTMORTEMLOG@@agebd_env_suffix_upper@@,service=POSTMORTEMLOG,name=PostMortemLog,panel=1,svc_exist=1,panelcmd=A_BD_PostMortemLog.ui;IOC=AGEBD-CPCL-TUNEBUMP@@agebd_env_suffix_upper@@,service=TUNEBUMP,name=TuneBump,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-PLOTS@@agebd_env_suffix_upper@@,service=PLOTS,name=Plots,panel=0,svc_exist=1,panelcmd=A_BD_Plots.ui;IOC=AGEBD-CPCL-ORBITBUMP@@agebd_env_suffix_upper@@,service=ORBITBUMP,name=OrbitBump,panel=1,svc_exist=0,panelcmd=A_BD_OrbitBump.ui;IOC=AGEBD-CPCL-TUNEFBX@@agebd_env_suffix_upper@@,service=TUNEFBX,name=TuneFBx,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui;IOC=AGEBD-CPCL-TUNEFBY@@agebd_env_suffix_upper@@,service=TUNEFBY,name=TuneFBy,panel=1,svc_exist=1,panelcmd=A_BD_TuneBump.ui</string>
|
||||
</property>
|
||||
<property name="filename" stdset="0">
|
||||
<string notr="true">A_BD_ServiceManager_inc.ui</string>
|
||||
@@ -246,7 +246,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="macro">
|
||||
<string>IOC=AGEBD-CPCL-NTURNS,service=NTURNS,name=NTurns,panel=1,svc_exist=1,panelcmd=A_BD_NTurns.ui;IOC=AGEBD-CPCL-TOPUPTOOL,service=TOPUPTOOL,name=TopUpTool,panel=1,svc_exist=1,panelcmd=A_BD_TopUpTool.ui;IOC=AGEBD-CPCL-TUNE,service=TUNE,name=Tune,panel=1,svc_exist=1,panelcmd=A_BD_Tune.ui;IOC=AGEOP-CPCL-SHIFTTOOL,service=SHIFTTOOL,name=Shifttool,panel=1,svc_exist=1,panelcmd=A_OP_SchichtProtokollTool.ui,macro=FACILITY=SLS</string>
|
||||
<string>IOC=AGEBD-CPCL-NTURNS@@agebd_env_suffix_upper@@,service=NTURNS,name=NTurns,panel=1,svc_exist=1,panelcmd=A_BD_NTurns.ui;IOC=AGEBD-CPCL-TOPUPTOOL@@agebd_env_suffix_upper@@,service=TOPUPTOOL,name=TopUpTool,panel=1,svc_exist=1,panelcmd=A_BD_TopUpTool.ui;IOC=AGEBD-CPCL-TUNE@@agebd_env_suffix_upper@@,service=TUNE,name=Tune,panel=1,svc_exist=1,panelcmd=A_BD_Tune.ui;IOC=AGEOP-CPCL-SHIFTTOOL,service=SHIFTTOOL,name=Shifttool,panel=1,svc_exist=1,panelcmd=A_OP_SchichtProtokollTool.ui,macro=FACILITY=SLS</string>
|
||||
</property>
|
||||
<property name="filename" stdset="0">
|
||||
<string notr="true">A_BD_ServiceManager_inc.ui</string>
|
||||
@@ -586,7 +586,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ALIVE</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ALIVE</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -602,7 +602,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STARTTIME</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STARTTIME</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -624,7 +624,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-STATUS</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-STATUS</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -646,7 +646,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-VERSION</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-VERSION</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -668,7 +668,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -717,7 +717,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-ONOFF-RB</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-ONOFF-RB</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -763,7 +763,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:STATUS</string>
|
||||
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:STATUS</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -792,7 +792,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string>/ioc/modules/qt/iocStats.ui</string>
|
||||
</property>
|
||||
<property name="args">
|
||||
<string>IOC=AGEBD-CPCL-MASTER;</string>
|
||||
<string>IOC=AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@;</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLabel" name="calabel_42">
|
||||
@@ -986,7 +986,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="scriptCommand">
|
||||
<string notr="true">ssh svcusr-sls2hla@sls-vserv-bd-hla01 systemctl --user restart AGEBD-SERVICE-MASTER.service</string>
|
||||
<string notr="true">ssh svcusr-sls2hla@sls-vserv-bd-hla01@@agebd_env_suffix_lower@@ systemctl --user restart AGEBD-SERVICE-MASTER.service</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caScriptButton" name="cascriptbutton_2">
|
||||
@@ -1015,7 +1015,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="scriptCommand">
|
||||
<string notr="true">terminator -e "ssh svcusr-sls2hla@sls-vserv-bd-hla01"</string>
|
||||
<string notr="true">terminator -e "ssh svcusr-sls2hla@sls-vserv-bd-hla01@@agebd_env_suffix_lower@@"</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
@@ -1040,7 +1040,7 @@ caLabel[statusTip="Operation"]{
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:MASTER-LOGS-REQ</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:MASTER-LOGS-REQ</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Logs</string>
|
||||
@@ -1106,7 +1106,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:MASTER-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:MASTER-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Reload</string>
|
||||
@@ -1172,7 +1172,7 @@ caLabel[statusTip="Operation"]{
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-CPCL-MASTER{{ agebd_env_suffix_upper }}:RESTART</string>
|
||||
<string notr="true">AGEBD-CPCL-MASTER@@agebd_env_suffix_upper@@:RESTART</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">↺</string>
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-STATUS</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-STATUS</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -195,7 +195,7 @@
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:$(service)-RESTART-REQ</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:$(service)-RESTART-REQ</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Restart</string>
|
||||
@@ -227,7 +227,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-VERSION</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-VERSION</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -249,7 +249,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -268,7 +268,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-STARTTIME</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-STARTTIME</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -320,7 +320,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-ALIVE</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-ALIVE</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -347,7 +347,7 @@
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:$(service)-LOGS-REQ</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:$(service)-LOGS-REQ</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Logs</string>
|
||||
@@ -409,7 +409,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-ONOFF-RB</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-ONOFF-RB</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -536,7 +536,7 @@
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:$(service)-START-REQ</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:$(service)-START-REQ</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Start</string>
|
||||
@@ -579,7 +579,7 @@
|
||||
<enum>EPushButton::None</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-MASTER{{ agebd_env_suffix_upper }}:$(service)-ABORT-REQ</string>
|
||||
<string notr="true">AGEBD-MASTER@@agebd_env_suffix_upper@@:$(service)-ABORT-REQ</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">KILL</string>
|
||||
@@ -686,7 +686,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:$(service)-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:$(service)-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Reload</string>
|
||||
|
||||
+9
-9
@@ -78,7 +78,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:TAU</string>
|
||||
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:TAU</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -138,7 +138,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:TAU-ERR</string>
|
||||
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:TAU-ERR</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -214,7 +214,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:INJRATE</string>
|
||||
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:INJRATE</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -274,7 +274,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:INJRATE-ERR</string>
|
||||
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:INJRATE-ERR</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -363,7 +363,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:LIFETIME-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:LIFETIME-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -395,7 +395,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:CONTROL-NSAMPLES-FIT-TAU</string>
|
||||
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:CONTROL-NSAMPLES-FIT-TAU</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caLineEdit::User</enum>
|
||||
@@ -411,7 +411,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:CONTROL-MIN-CURR</string>
|
||||
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:CONTROL-MIN-CURR</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>12</number>
|
||||
@@ -430,7 +430,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TAUBPM-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TAUBPM-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -465,7 +465,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUBPM{{ agebd_env_suffix_upper }}:CONTROL-NSAMPLES-FIT-ROC</string>
|
||||
<string notr="true">AGEBD-TAUBPM@@agebd_env_suffix_upper@@:CONTROL-NSAMPLES-FIT-ROC</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caLineEdit::User</enum>
|
||||
|
||||
+9
-9
@@ -78,7 +78,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:TAU</string>
|
||||
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:TAU</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -138,7 +138,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:TAU-ERR</string>
|
||||
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:TAU-ERR</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -214,7 +214,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:INJRATE</string>
|
||||
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:INJRATE</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -274,7 +274,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:INJRATE-ERR</string>
|
||||
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:INJRATE-ERR</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -363,7 +363,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TAUPCT-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TAUPCT-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -395,7 +395,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:CONTROL-NSAMPLES-FIT-TAU</string>
|
||||
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:CONTROL-NSAMPLES-FIT-TAU</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caLineEdit::User</enum>
|
||||
@@ -411,7 +411,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:CONTROL-MIN-CURR</string>
|
||||
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:CONTROL-MIN-CURR</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>12</number>
|
||||
@@ -430,7 +430,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TAUPCT-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TAUPCT-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -449,7 +449,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TAUPCT{{ agebd_env_suffix_upper }}:CONTROL-NSAMPLES-FIT-ROC</string>
|
||||
<string notr="true">AGEBD-TAUPCT@@agebd_env_suffix_upper@@:CONTROL-NSAMPLES-FIT-ROC</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caLineEdit::User</enum>
|
||||
|
||||
+53
-53
@@ -46,7 +46,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TIMING-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TIMING-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -154,7 +154,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-GUN</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-GUN</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -185,7 +185,7 @@
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-llemast</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-llemast</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -240,7 +240,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BOINKI</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BOINKI</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -295,7 +295,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BOINSE</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BOINSE</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -326,7 +326,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BOEXKI</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BOEXKI</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -384,7 +384,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BOEXSE</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BOEXSE</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -442,7 +442,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINSE</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINSE</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -548,7 +548,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-BTRICT</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-BTRICT</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -798,7 +798,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-klystr2</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-klystr2</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -829,7 +829,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-3GHzScp</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-3GHzScp</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -860,7 +860,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-500-PBU</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-500-PBU</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -891,7 +891,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-Kly1PMU</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-Kly1PMU</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -922,7 +922,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-klystr1</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-klystr1</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -953,7 +953,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-preamp1</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-preamp1</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -984,7 +984,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-3GHzQdm</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-3GHzQdm</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1015,7 +1015,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-preamp2</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-preamp2</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1046,7 +1046,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lirf-Kly2PMU</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lirf-Kly2PMU</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1173,7 +1173,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINK1</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINK1</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1207,7 +1207,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINK2</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINK2</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1241,7 +1241,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINK3</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINK3</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1275,7 +1275,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-SRINK4</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-SRINK4</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1333,7 +1333,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lindi-ictone</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lindi-ictone</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1364,7 +1364,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-ZERO-DELAY-lindi-icts23</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-ZERO-DELAY-lindi-icts23</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3472,7 +3472,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-GUN</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-GUN</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_3">
|
||||
@@ -3497,7 +3497,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-llemast</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-llemast</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_6">
|
||||
@@ -3522,7 +3522,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BOINKI</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BOINKI</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_7">
|
||||
@@ -3547,7 +3547,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BOINSE</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BOINSE</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_10">
|
||||
@@ -3572,7 +3572,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BOEXKI</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BOEXKI</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_12">
|
||||
@@ -3597,7 +3597,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BOEXSE</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BOEXSE</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_15">
|
||||
@@ -3622,7 +3622,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-BTRICT</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-BTRICT</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_16">
|
||||
@@ -3647,7 +3647,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINSE</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINSE</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_19">
|
||||
@@ -3672,7 +3672,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINK4</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINK4</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_21">
|
||||
@@ -3697,7 +3697,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-preamp1</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-preamp1</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_23">
|
||||
@@ -3722,7 +3722,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-3GHzQdm</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-3GHzQdm</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_24">
|
||||
@@ -3747,7 +3747,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-500-PBU</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-500-PBU</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_28">
|
||||
@@ -3772,7 +3772,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-preamp2</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-preamp2</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_29">
|
||||
@@ -3797,7 +3797,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-klystr2</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-klystr2</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_32">
|
||||
@@ -3822,7 +3822,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-3GHzScp</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-3GHzScp</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_33">
|
||||
@@ -3847,7 +3847,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-Kly1PMU</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-Kly1PMU</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_34">
|
||||
@@ -3872,7 +3872,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-klystr1</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-klystr1</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_37">
|
||||
@@ -3897,7 +3897,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lirf-Kly2PMU</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lirf-Kly2PMU</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_2">
|
||||
@@ -3922,7 +3922,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lindi-ictone</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lindi-ictone</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_5">
|
||||
@@ -3947,7 +3947,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-lindi-icts23</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-lindi-icts23</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_20">
|
||||
@@ -3972,7 +3972,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINK3</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINK3</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_22">
|
||||
@@ -3997,7 +3997,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINK2</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINK2</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caToggleButton" name="catogglebutton_25">
|
||||
@@ -4022,7 +4022,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FLW-BCKT-SRINK1</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FLW-BCKT-SRINK1</string>
|
||||
</property>
|
||||
</widget>
|
||||
<zorder>catogglebutton_3</zorder>
|
||||
@@ -4089,7 +4089,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:SETALL-DELAY</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:SETALL-DELAY</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -4149,7 +4149,7 @@
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:SETALL-ERROR</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:SETALL-ERROR</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -4230,7 +4230,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:CONTROL-FILLPATTERN-string.VAL</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:CONTROL-FILLPATTERN-string.VAL</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>0</number>
|
||||
@@ -4266,7 +4266,7 @@
|
||||
<enum>EPushButton::WidthAndHeight</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TIMING{{ agebd_env_suffix_upper }}:ZERO-TARGET-BUCKET</string>
|
||||
<string notr="true">AGEBD-TIMING@@agebd_env_suffix_upper@@:ZERO-TARGET-BUCKET</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">Reset</string>
|
||||
@@ -4426,7 +4426,7 @@
|
||||
<string notr="true">!A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TIMING-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TIMING-ONOFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caMessageButton" name="camessagebutton_40">
|
||||
@@ -4470,7 +4470,7 @@
|
||||
</color>
|
||||
</property>
|
||||
<property name="disableChannel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TIMING-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TIMING-ONOFF</string>
|
||||
</property>
|
||||
<property name="releaseMessage">
|
||||
<string notr="true">0</string>
|
||||
|
||||
+26
-26
@@ -24,7 +24,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TOPUPTOOL-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TOPUPTOOL-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -209,7 +209,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-GUNGRID-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-GUNGRID-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -273,7 +273,7 @@
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerOneToZero</enum>
|
||||
@@ -289,7 +289,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:SCRUBBING-INFO</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:SCRUBBING-INFO</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Alarm_Default</enum>
|
||||
@@ -311,7 +311,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAT</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAT</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -336,7 +336,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-TAU</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-TAU</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -430,7 +430,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAI</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAI</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -1989,7 +1989,7 @@
|
||||
<number>22</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }}:STATUS-SECRET-MASTER</string>
|
||||
<string notr="true">AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@:STATUS-SECRET-MASTER</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -2286,7 +2286,7 @@ AGETI-CVME-MASTER-TMA:Evt-SR-Inj-EVRCount-I</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2744,7 +2744,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2769,7 +2769,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2794,7 +2794,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2819,7 +2819,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2844,7 +2844,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2869,7 +2869,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2894,7 +2894,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3050,7 +3050,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3121,7 +3121,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-TIME-FREQ</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-TIME-FREQ</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3169,7 +3169,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-CURRENT-MIN</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-CURRENT-MIN</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3194,7 +3194,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-VAC-MAX</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-VAC-MAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3219,7 +3219,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:CONTROL-VAC-MIN</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:CONTROL-VAC-MIN</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3262,7 +3262,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAT</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAT</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -3287,7 +3287,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAI</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAI</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -3312,7 +3312,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-TAU</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-TAU</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -3337,7 +3337,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAI</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAI</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
@@ -3431,7 +3431,7 @@ AGETI-CVME-MASTER-TMA:Evt-14.VALA</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TOPUPTOOL{{ agebd_env_suffix_upper }}:TOPUP-DELTAT</string>
|
||||
<string notr="true">AGEBD-TOPUPTOOL@@agebd_env_suffix_upper@@:TOPUP-DELTAT</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLineEdit::Default</enum>
|
||||
|
||||
+25
-25
@@ -55,7 +55,7 @@
|
||||
<string notr="true">x [mm]</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:OSCILLATION-SAMPLE-ALL;AGEBD-TUNE{{ agebd_env_suffix_upper }}:OSCILLATION-X-ALL</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:OSCILLATION-SAMPLE-ALL;AGEBD-TUNE@@agebd_env_suffix_upper@@:OSCILLATION-X-ALL</string>
|
||||
</property>
|
||||
<property name="symbol_1">
|
||||
<enum>caCartesianPlot::NoSymbol</enum>
|
||||
@@ -102,7 +102,7 @@
|
||||
<string notr="true">y [mm]</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:OSCILLATION-SAMPLE-ALL;AGEBD-TUNE{{ agebd_env_suffix_upper }}:OSCILLATION-Y-ALL</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:OSCILLATION-SAMPLE-ALL;AGEBD-TUNE@@agebd_env_suffix_upper@@:OSCILLATION-Y-ALL</string>
|
||||
</property>
|
||||
<property name="symbol_1">
|
||||
<enum>caCartesianPlot::NoSymbol</enum>
|
||||
@@ -151,7 +151,7 @@
|
||||
<string notr="true">Amplitude</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:SPEC-SAMPLE-ALL;AGEBD-TUNE{{ agebd_env_suffix_upper }}:HORIZONTAL-SPEC-ALL</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:SPEC-SAMPLE-ALL;AGEBD-TUNE@@agebd_env_suffix_upper@@:HORIZONTAL-SPEC-ALL</string>
|
||||
</property>
|
||||
<property name="symbol_1">
|
||||
<enum>caCartesianPlot::NoSymbol</enum>
|
||||
@@ -198,7 +198,7 @@
|
||||
<string notr="true">Amplitude</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:SPEC-SAMPLE-ALL;AGEBD-TUNE{{ agebd_env_suffix_upper }}:VERTICAL-SPEC-ALL</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:SPEC-SAMPLE-ALL;AGEBD-TUNE@@agebd_env_suffix_upper@@:VERTICAL-SPEC-ALL</string>
|
||||
</property>
|
||||
<property name="symbol_1">
|
||||
<enum>caCartesianPlot::NoSymbol</enum>
|
||||
@@ -283,7 +283,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNE-ALIVE</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNE-ALIVE</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -323,7 +323,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNE-ONOFF-RB</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNE-ONOFF-RB</string>
|
||||
</property>
|
||||
<property name="colorMode">
|
||||
<enum>caLed::Alarm</enum>
|
||||
@@ -358,7 +358,7 @@ measurement</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNE-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNE-ONOFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -405,7 +405,7 @@ measurement</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:MEAS-TIME</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:MEAS-TIME</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="gridLayoutWidget_2">
|
||||
@@ -433,7 +433,7 @@ measurement</string>
|
||||
<item row="2" column="1">
|
||||
<widget class="caLineEdit" name="calineedit_Q2_FFT">
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:VERTICAL-PEAK1-FREQ</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:VERTICAL-PEAK1-FREQ</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>4</number>
|
||||
@@ -467,7 +467,7 @@ measurement</string>
|
||||
<item row="1" column="1">
|
||||
<widget class="caLineEdit" name="calineedit_Q1_FFT">
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:HORIZONTAL-PEAK1-FREQ</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:HORIZONTAL-PEAK1-FREQ</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>4</number>
|
||||
@@ -516,7 +516,7 @@ measurement</string>
|
||||
<item row="1" column="2">
|
||||
<widget class="caLineEdit" name="calineedit_Q1_NAFF">
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:Q1_NAFF</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:Q1_NAFF</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>4</number>
|
||||
@@ -538,7 +538,7 @@ measurement</string>
|
||||
<item row="2" column="2">
|
||||
<widget class="caLineEdit" name="calineedit_Q2_NAFF">
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:Q2_NAFF</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:Q2_NAFF</string>
|
||||
</property>
|
||||
<property name="precision">
|
||||
<number>4</number>
|
||||
@@ -612,7 +612,7 @@ measurement</string>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:SVD-CLEAN</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:SVD-CLEAN</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caNumeric" name="canumeric_2">
|
||||
@@ -631,7 +631,7 @@ measurement</string>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:SVD-CLEAN-Neigenvalues</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:SVD-CLEAN-Neigenvalues</string>
|
||||
</property>
|
||||
<property name="fixedFormat">
|
||||
<bool>false</bool>
|
||||
@@ -705,7 +705,7 @@ values</string>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-ROI-Yi</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-ROI-Yi</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -756,7 +756,7 @@ values</string>
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-ROI-Xf</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-ROI-Xf</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -789,7 +789,7 @@ values</string>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-ROI-Xi</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-ROI-Xi</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -870,7 +870,7 @@ values</string>
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-ROI-Yf</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-ROI-Yf</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -934,7 +934,7 @@ values</string>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-TbTLastIndex </string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-TbTLastIndex </string>
|
||||
</property>
|
||||
<property name="limitsMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -994,7 +994,7 @@ values</string>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-TbTFirstIndex </string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-TbTFirstIndex </string>
|
||||
</property>
|
||||
<property name="fixedFormat">
|
||||
<bool>false</bool>
|
||||
@@ -1045,7 +1045,7 @@ values</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-NAveraging</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-NAveraging</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caNumeric::Channel</enum>
|
||||
@@ -1096,7 +1096,7 @@ values</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:CONTROL-NAFF</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:CONTROL-NAFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -1130,7 +1130,7 @@ harmonics</string>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string>AGEBD-TUNE{{ agebd_env_suffix_upper }}:NAFF-HARMONICS</string>
|
||||
<string>AGEBD-TUNE@@agebd_env_suffix_upper@@:NAFF-HARMONICS</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caNumeric::Channel</enum>
|
||||
@@ -1185,7 +1185,7 @@ ARS07-DBPM-0840</string>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:BPM-SELECT-SINGLE</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:BPM-SELECT-SINGLE</string>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
@@ -1873,7 +1873,7 @@ ARS07-DBPM-0840</string>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNE{{ agebd_env_suffix_upper }}:SINGLE-BPM</string>
|
||||
<string notr="true">AGEBD-TUNE@@agebd_env_suffix_upper@@:SINGLE-BPM</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
+88
-88
@@ -81,7 +81,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEBUMP-GUIRELOAD</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEBUMP-GUIRELOAD</string>
|
||||
</property>
|
||||
<property name="eventSignal">
|
||||
<enum>caCalc::TriggerZeroToOne</enum>
|
||||
@@ -103,7 +103,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-STEPDOWN</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-STEPDOWN</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true"><<</string>
|
||||
@@ -141,7 +141,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-STEPSIZE</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-STEPSIZE</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -175,7 +175,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-STEPSIZE</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-STEPSIZE</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -232,7 +232,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-STEPDOWN</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-STEPDOWN</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true"><<</string>
|
||||
@@ -330,7 +330,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-STEPUP</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-STEPUP</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">>></string>
|
||||
@@ -368,7 +368,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-STEPUP</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-STEPUP</string>
|
||||
</property>
|
||||
<property name="label">
|
||||
<string notr="true">>></string>
|
||||
@@ -457,7 +457,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Vertical Tune (nominal: Qy = 15.22)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QY-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QY-AMP</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QY-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QY-AMP</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -467,7 +467,7 @@ caLabel[statusTip="Operation"]{
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-PEAKS-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-PEAKS</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-PEAKS-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-PEAKS</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Sticks</enum>
|
||||
@@ -518,7 +518,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Synchrotron Tune (nominal: 0.0027)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QZ-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QZ-AMP</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QZ-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QZ-AMP</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -528,7 +528,7 @@ caLabel[statusTip="Operation"]{
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QZ-PEAKS-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QZ-PEAKS</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QZ-PEAKS-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QZ-PEAKS</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Sticks</enum>
|
||||
@@ -579,7 +579,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Horizontal Tune (nominal: Qx = 39.37)</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QX-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:NORM-QX-AMP</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QX-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:NORM-QX-AMP</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -589,7 +589,7 @@ caLabel[statusTip="Operation"]{
|
||||
</color>
|
||||
</property>
|
||||
<property name="channels_2" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-PEAKS-FREQ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-PEAKS</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-PEAKS-FREQ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-PEAKS</string>
|
||||
</property>
|
||||
<property name="Style_2">
|
||||
<enum>caCartesianPlot::Sticks</enum>
|
||||
@@ -657,7 +657,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Tune Z</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-FREQ-qZ;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-Z</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-FREQ-qZ;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-Z</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -702,7 +702,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Tune Y</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-FREQ-qY;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-Y</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-FREQ-qY;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-Y</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -747,7 +747,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Tune X</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-FREQ-qX;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SPEC-X</string>
|
||||
<string>AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-FREQ-qX;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SPEC-X</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -809,7 +809,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Vertical TbT data</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-Y</string>
|
||||
<string>;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-Y</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -857,7 +857,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Longitudinal Stage 1 Data</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-Z</string>
|
||||
<string>;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-Z</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -905,7 +905,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">Horizontal TbT data</string>
|
||||
</property>
|
||||
<property name="channels_1" stdset="0">
|
||||
<string>;AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-X</string>
|
||||
<string>;AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-X</string>
|
||||
</property>
|
||||
<property name="color_1">
|
||||
<color>
|
||||
@@ -1329,7 +1329,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-ULIM</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-ULIM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1360,7 +1360,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-LLIM</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-LLIM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1391,7 +1391,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-ULIM</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-ULIM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1459,7 +1459,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-LLIM</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-LLIM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -1758,7 +1758,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-Y.INP</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-Y.INP</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -1818,7 +1818,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-X.INP</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-X.INP</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -1878,7 +1878,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:SIGN-Z.INP</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:SIGN-Z.INP</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -2021,7 +2021,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-KP</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-KP</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2193,7 +2193,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-KI</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-KI</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2224,7 +2224,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-KD</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-KD</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2255,7 +2255,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-QX</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-QX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2323,7 +2323,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-QXMAX</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-QXMAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2391,7 +2391,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-QXMIN</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-QXMIN</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2496,7 +2496,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-MIN-CURR</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-MIN-CURR</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2567,7 +2567,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CONTROL-QX-OKRNG</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CONTROL-QX-OKRNG</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -2598,7 +2598,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:DELTAQ</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:DELTAQ</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -2705,7 +2705,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="channels" stdset="0">
|
||||
<string>AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:QSTEPS</string>
|
||||
<string>AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:QSTEPS</string>
|
||||
</property>
|
||||
<property name="units">
|
||||
<enum>caStripPlot::Second</enum>
|
||||
@@ -2866,7 +2866,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBX-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBX-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -2885,7 +2885,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK1</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK1</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -2911,7 +2911,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK2</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK2</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -2974,7 +2974,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK5</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK5</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -3000,7 +3000,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK8</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK8</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -3063,7 +3063,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK3</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK3</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -3126,7 +3126,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK6</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK6</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -3152,7 +3152,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK4</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK4</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -3215,7 +3215,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECK7</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECK7</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -3321,7 +3321,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:CHECKALL</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:CHECKALL</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -3501,7 +3501,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:DELTAQ-ULIM</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:DELTAQ-ULIM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3532,7 +3532,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBX{{ agebd_env_suffix_upper }}:DELTAQ-LLIM</string>
|
||||
<string notr="true">AGEBD-TUNEFBX@@agebd_env_suffix_upper@@:DELTAQ-LLIM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3635,7 +3635,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-QY</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-QY</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3706,7 +3706,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-QY-OKRNG</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-QY-OKRNG</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3774,7 +3774,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-KI</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-KI</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3873,7 +3873,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK4</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK4</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -3905,7 +3905,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-KP</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-KP</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -3936,7 +3936,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-QYMAX</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-QYMAX</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4078,7 +4078,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-KD</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-KD</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4103,7 +4103,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK3</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK3</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -4283,7 +4283,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:DELTAQ</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:DELTAQ</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -4386,7 +4386,7 @@ caLabel[statusTip="Operation"]{
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECKALL</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECKALL</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -4412,7 +4412,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK5</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK5</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -4438,7 +4438,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK2</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK2</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -4507,7 +4507,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-QYMIN</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-QYMIN</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4532,7 +4532,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK1</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK1</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -4595,7 +4595,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBY-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBY-ONOFF</string>
|
||||
</property>
|
||||
<property name="stackingMode" stdset="0">
|
||||
<enum>caChoice::Column</enum>
|
||||
@@ -4614,7 +4614,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK6</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK6</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -4656,7 +4656,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="channels" stdset="0">
|
||||
<string>AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:QSTEPS</string>
|
||||
<string>AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:QSTEPS</string>
|
||||
</property>
|
||||
<property name="units">
|
||||
<enum>caStripPlot::Second</enum>
|
||||
@@ -4897,7 +4897,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CONTROL-MIN-CURR</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CONTROL-MIN-CURR</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -4959,7 +4959,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK7</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK7</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -4985,7 +4985,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:CHECK8</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:CHECK8</string>
|
||||
</property>
|
||||
<property name="falseColor">
|
||||
<color>
|
||||
@@ -5091,7 +5091,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:DELTAQ-ULIM</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:DELTAQ-ULIM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -5122,7 +5122,7 @@ caLabel[statusTip="Operation"]{
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEFBY{{ agebd_env_suffix_upper }}:DELTAQ-LLIM</string>
|
||||
<string notr="true">AGEBD-TUNEFBY@@agebd_env_suffix_upper@@:DELTAQ-LLIM</string>
|
||||
</property>
|
||||
<property name="precisionMode">
|
||||
<enum>caSpinbox::User</enum>
|
||||
@@ -5189,7 +5189,7 @@ caLabel[statusTip="Operation"]{
|
||||
</rect>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:WRITE2MAG</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:WRITE2MAG</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLabel" name="calabel_36">
|
||||
@@ -5241,7 +5241,7 @@ caLabel[statusTip="Operation"]{
|
||||
<enum>Qt::ScrollBarAsNeeded</enum>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:CHANGELOG</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:CHANGELOG</string>
|
||||
</property>
|
||||
<property name="fontScaleMode" stdset="0">
|
||||
<enum>caMultiLineString::None</enum>
|
||||
@@ -5277,7 +5277,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -5359,7 +5359,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -5472,7 +5472,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-SB1</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-SB1</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -5532,7 +5532,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-SB1-DIFF</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-SB1-DIFF</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -5629,7 +5629,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-SB2</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-SB2</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -5689,7 +5689,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-SB2-DIFF</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-SB2-DIFF</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -5860,7 +5860,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-SB1</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-SB1</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -6031,7 +6031,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-SB2</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-SB2</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -6091,7 +6091,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-SB1-DIFF</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-SB1-DIFF</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -6151,7 +6151,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-SB2-DIFF</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-SB2-DIFF</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -6223,7 +6223,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QX-FREQ</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QX-FREQ</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -6311,7 +6311,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QY-FREQ</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QY-FREQ</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -6423,7 +6423,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QZ</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QZ</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -6508,7 +6508,7 @@ caLabel[statusTip="Operation"]{
|
||||
<set>Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-TUNEBUMP{{ agebd_env_suffix_upper }}:QZ-FREQ</string>
|
||||
<string notr="true">AGEBD-TUNEBUMP@@agebd_env_suffix_upper@@:QZ-FREQ</string>
|
||||
</property>
|
||||
<property name="foreground">
|
||||
<color>
|
||||
@@ -6603,7 +6603,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBX-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBX-ONOFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="caLabel" name="calabel_2">
|
||||
@@ -6641,7 +6641,7 @@ caLabel[statusTip="Operation"]{
|
||||
<string notr="true">A</string>
|
||||
</property>
|
||||
<property name="channel" stdset="0">
|
||||
<string notr="true">AGEBD-ALH{{ agebd_env_suffix_upper }}:TUNEFBY-ONOFF</string>
|
||||
<string notr="true">AGEBD-ALH@@agebd_env_suffix_upper@@:TUNEFBY-ONOFF</string>
|
||||
</property>
|
||||
</widget>
|
||||
<zorder>calabel_3</zorder>
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
"""
|
||||
Guard the deploy-time substitution contract.
|
||||
|
||||
Every ``@@token@@`` in this repo must be declared in config/environments.yml,
|
||||
and must live somewhere that actually gets rendered. Three things are checked:
|
||||
|
||||
1. Tokens inside a render path are declared.
|
||||
Catches typos, which would otherwise ship the literal placeholder.
|
||||
|
||||
2. Declared tokens only appear in a render, passthrough or reference path.
|
||||
Catches a placeholder added to a file nobody renders -- exactly the
|
||||
regression that put a suffix token into qt/*.ui while the Qt deploy
|
||||
step was a plain rsync.
|
||||
|
||||
3. No pre-migration ``{{ token }}`` form of a deploy-time token survives,
|
||||
in the paths that carry tokens. Catches files missed by the switch to
|
||||
the ``@@token@@`` delimiters. Reference paths are exempt: Ansible and
|
||||
copier own ``{{ }}`` in their own files, and some of their variables
|
||||
share a name with our tokens.
|
||||
|
||||
Files tracked by git plus new, non-ignored files are scanned, so build and
|
||||
cache directories are skipped for free.
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
import git
|
||||
from agebd.subs import (
|
||||
SubstitutionsConfig,
|
||||
find_legacy_tokens,
|
||||
find_tokens,
|
||||
)
|
||||
from agebd.utils import get_git_root
|
||||
|
||||
REPO_ROOT = get_git_root(__file__)
|
||||
|
||||
|
||||
def iter_tracked_text_files(repo_root=REPO_ROOT):
|
||||
"""
|
||||
Yield (relative_path, contents) for every UTF-8 decodable file that is
|
||||
tracked, or new and not gitignored. New files are included so that a bad
|
||||
token is reported before it is committed rather than after.
|
||||
"""
|
||||
repo = git.Repo(repo_root)
|
||||
listing = repo.git.ls_files("--cached", "--others", "--exclude-standard")
|
||||
for rel_path in sorted(set(listing.splitlines())):
|
||||
path = repo_root / rel_path
|
||||
if not path.is_file():
|
||||
continue
|
||||
try:
|
||||
yield rel_path, path.read_text()
|
||||
except (UnicodeDecodeError, OSError):
|
||||
continue
|
||||
|
||||
|
||||
def check_declared(config, rel_path, contents):
|
||||
"""1. Tokens inside a render path must be declared."""
|
||||
if not config.is_render_path(rel_path):
|
||||
return []
|
||||
|
||||
return [
|
||||
f"{rel_path}: '@@{token}@@' is not declared under 'tokens' in "
|
||||
f"{config.environments_file.name}"
|
||||
for token in sorted(find_tokens(contents))
|
||||
if token not in config.tokens
|
||||
]
|
||||
|
||||
|
||||
def carries_tokens(config, rel_path):
|
||||
"""
|
||||
True for paths whose files carry deploy-time tokens as data: they are
|
||||
either rendered, or copied into something that is.
|
||||
"""
|
||||
return config.is_render_path(rel_path) or config.is_passthrough_path(rel_path)
|
||||
|
||||
|
||||
def check_location(config, rel_path, contents):
|
||||
"""2. Declared tokens must sit in a render, passthrough or reference path."""
|
||||
if carries_tokens(config, rel_path) or config.is_reference_path(rel_path):
|
||||
return []
|
||||
|
||||
return [
|
||||
f"{rel_path}: '@@{token}@@' is in a path that is never rendered. In "
|
||||
f"{config.environments_file.name}, add the path to 'locations.render' if it "
|
||||
f"should be substituted at deploy time, or to 'locations.references' if it is "
|
||||
f"part of the substitution machinery. Otherwise remove the token."
|
||||
for token in sorted(find_tokens(contents) & set(config.tokens))
|
||||
]
|
||||
|
||||
|
||||
def check_no_legacy_delimiters(config, rel_path, contents):
|
||||
"""
|
||||
3. No deploy-time token may still use the creation-time delimiters, in the
|
||||
paths that carry tokens. Elsewhere {{ }} belongs to whichever tool owns
|
||||
the file.
|
||||
"""
|
||||
if not carries_tokens(config, rel_path):
|
||||
return []
|
||||
|
||||
return [
|
||||
f"{rel_path}: '{{{{ {token} }}}}' uses the creation-time delimiters for a "
|
||||
f"deploy-time token. Write it as '@@{token}@@'."
|
||||
for token in sorted(find_legacy_tokens(contents) & set(config.tokens))
|
||||
]
|
||||
|
||||
|
||||
CHECKS = (check_declared, check_location, check_no_legacy_delimiters)
|
||||
|
||||
|
||||
def check_subs(repo_root=REPO_ROOT):
|
||||
"""
|
||||
Raise AssertionError listing every violation, or return silently.
|
||||
"""
|
||||
config = SubstitutionsConfig.load(repo_root / "config")
|
||||
|
||||
errors = []
|
||||
for rel_path, contents in iter_tracked_text_files(repo_root):
|
||||
for check in CHECKS:
|
||||
errors.extend(check(config, rel_path, contents))
|
||||
|
||||
if errors:
|
||||
raise AssertionError("Deploy-time substitution problems found:\n\n " + "\n ".join(errors))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
check_subs()
|
||||
except AssertionError as e:
|
||||
print(e, file=sys.stderr)
|
||||
sys.exit(1)
|
||||
print("All deploy-time tokens are declared and live in a rendered path.")
|
||||
@@ -1,25 +1,91 @@
|
||||
import re
|
||||
"""
|
||||
Guard the environment suffix in Qt UI files.
|
||||
|
||||
qt/ is rendered at deploy time (see config/environments.yml), so every EPICS
|
||||
device name in a .ui file must carry the suffix token. A name without it
|
||||
resolves to the production device in every environment -- which is how the
|
||||
dev Service Manager ended up driving prod IOCs.
|
||||
|
||||
The rule is: every AGEBD- name is immediately followed by the suffix token.
|
||||
The one exception is systemd unit names, which genuinely have no environment
|
||||
suffix (the unit file is AGEBD-SERVICE-<NAME>.service in both environments).
|
||||
|
||||
This replaces an earlier check for the caQtDM macro '$(AGEBD_ENV_SUFFIX)',
|
||||
which was abandoned in favour of deploy-time rendering. That check had also
|
||||
stopped matching anything once placeholders appeared in the names.
|
||||
"""
|
||||
|
||||
import re
|
||||
import sys
|
||||
|
||||
from agebd.subs import SubstitutionsConfig
|
||||
from agebd.utils import get_git_root
|
||||
|
||||
REPO_ROOT = get_git_root(__file__)
|
||||
QT_DIR = REPO_ROOT / "qt"
|
||||
|
||||
SUFFIX_TOKEN_NAME = "agebd_env_suffix_upper"
|
||||
|
||||
#: An EPICS device name belonging to us, e.g. AGEBD-ALH or AGEBD-CPCL-TUNE.
|
||||
AGEBD_NAME = re.compile(r"AGEBD-[0-9A-Z][0-9A-Z-]*")
|
||||
|
||||
#: Systemd unit names are the same in every environment.
|
||||
EXEMPT_PREFIXES = ("AGEBD-SERVICE-",)
|
||||
|
||||
|
||||
def suffix_token(config):
|
||||
"""
|
||||
The token text these files must carry, taken from the central config so
|
||||
that renaming the token cannot leave this check enforcing a stale name.
|
||||
"""
|
||||
if SUFFIX_TOKEN_NAME not in config.tokens:
|
||||
raise AssertionError(
|
||||
f"Token '{SUFFIX_TOKEN_NAME}' is not declared in "
|
||||
f"{config.environments_file}, but qt/ is checked against it."
|
||||
)
|
||||
return f"@@{SUFFIX_TOKEN_NAME}@@"
|
||||
|
||||
|
||||
def check_ui_file(text, token, filename):
|
||||
"""
|
||||
Report every AGEBD- device name in ``text`` that lacks ``token``.
|
||||
"""
|
||||
errors = []
|
||||
for match in AGEBD_NAME.finditer(text):
|
||||
name = match.group(0)
|
||||
if name.startswith(EXEMPT_PREFIXES):
|
||||
continue
|
||||
if text[match.end() : match.end() + len(token)] == token:
|
||||
continue
|
||||
line = text.count("\n", 0, match.start()) + 1
|
||||
errors.append(
|
||||
f"{filename}:{line}: '{name}' is missing '{token}', so it resolves to the "
|
||||
f"production device in every environment."
|
||||
)
|
||||
return errors
|
||||
|
||||
|
||||
def check_ui_files():
|
||||
"""
|
||||
All 'AGEBD-' PVs need to contain the '$(AGEBD_ENV_SUFFIX)' macro,
|
||||
which is:
|
||||
|
||||
'' in PROD
|
||||
'-DEV' in DEV
|
||||
Raise AssertionError listing every violation, or return silently.
|
||||
"""
|
||||
for filename in QT_DIR.glob("*"):
|
||||
with open(filename, "r") as f:
|
||||
for linenum, line in enumerate(f):
|
||||
matches = re.findall("AGEBD-[0-9A-Z$()_]*:", line)
|
||||
if matches:
|
||||
for match in matches:
|
||||
assert "$(AGEBD_ENV_SUFFIX)" in match, (
|
||||
f"Missing $(AGEBD_ENV_SUFFIX) in {filename} in line number {linenum + 1}: {line} "
|
||||
)
|
||||
config = SubstitutionsConfig.load(REPO_ROOT / "config")
|
||||
token = suffix_token(config)
|
||||
|
||||
errors = []
|
||||
for path in sorted(QT_DIR.glob("*.ui")):
|
||||
errors.extend(check_ui_file(path.read_text(), token, path.relative_to(REPO_ROOT)))
|
||||
|
||||
if errors:
|
||||
raise AssertionError(
|
||||
"Qt UI files missing the environment suffix:\n\n " + "\n ".join(errors)
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
check_ui_files()
|
||||
except AssertionError as e:
|
||||
print(e, file=sys.stderr)
|
||||
sys.exit(1)
|
||||
print("All AGEBD- device names in qt/ carry the environment suffix.")
|
||||
|
||||
+22
-17
@@ -1,24 +1,29 @@
|
||||
"""
|
||||
Print a service's IOC port.
|
||||
|
||||
get_ioc_port.py tune
|
||||
|
||||
The lookup itself lives in agebd.subs, which is also what render_subs.py and
|
||||
the CLI use, so there is only one answer to "which port is this service on".
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
import yaml
|
||||
from agebd.utils import get_git_root
|
||||
|
||||
REPO_ROOT = get_git_root(".")
|
||||
SERVICES_REGISTRY_FILE = REPO_ROOT / "config" / "services_registry.yml"
|
||||
from agebd.subs import (
|
||||
SERVICES_REGISTRY_FILENAME,
|
||||
SubstitutionError,
|
||||
read_ioc_port,
|
||||
resolve_config_dir,
|
||||
)
|
||||
|
||||
|
||||
def get_ioc_port(service_name_lower: str):
|
||||
with open(SERVICES_REGISTRY_FILE) as f:
|
||||
d = yaml.safe_load(f)
|
||||
|
||||
for service_dict in d["services"]:
|
||||
if service_dict["name"].lower() == service_name_lower:
|
||||
return service_dict["ioc_port"]
|
||||
|
||||
raise ValueError(f"Service with lowercase name {service_name_lower} not found")
|
||||
def get_ioc_port(service_name: str) -> int:
|
||||
return read_ioc_port(resolve_config_dir() / SERVICES_REGISTRY_FILENAME, service_name)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
service_name_lower = sys.argv[1]
|
||||
port = get_ioc_port(service_name_lower)
|
||||
print(port)
|
||||
try:
|
||||
print(get_ioc_port(sys.argv[1]))
|
||||
except SubstitutionError as e:
|
||||
print(f"error: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
"""
|
||||
Resolve deploy-time tokens in deployed files.
|
||||
|
||||
Values come from config/environments.yml and config/services_registry.yml --
|
||||
the single source of truth. Nothing here knows what '-DEV' is.
|
||||
|
||||
render_subs.py --env dev --service tune /path/to/ioc /path/to/systemd
|
||||
render_subs.py --env prod /sls/bd/hla/prod/qt
|
||||
|
||||
Without --service only the environment tokens are available, so a file that
|
||||
needs a per-service token (ioc_port) fails loudly rather than shipping the
|
||||
placeholder. A path that does not exist is reported and skipped, which is how
|
||||
services without a systemd unit are handled.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from agebd.subs import SubstitutionError, Substitutions
|
||||
|
||||
|
||||
def render(subs, paths):
|
||||
"""
|
||||
Render every path in place. Returns the files that changed.
|
||||
"""
|
||||
changed = []
|
||||
for path in paths:
|
||||
if not path.exists():
|
||||
print(f"skipped (does not exist): {path}")
|
||||
continue
|
||||
if path.is_dir():
|
||||
changed.extend(subs.render_tree(path))
|
||||
elif subs.render_file(path):
|
||||
changed.append(path)
|
||||
return changed
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
parser = argparse.ArgumentParser(
|
||||
description=__doc__,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
)
|
||||
parser.add_argument("--env", required=True, help="Deployment environment, e.g. dev")
|
||||
parser.add_argument(
|
||||
"--service",
|
||||
default=None,
|
||||
help="Service name. Required for files holding per-service tokens.",
|
||||
)
|
||||
parser.add_argument("paths", nargs="+", type=Path, help="Files or directories to render")
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
if args.service:
|
||||
subs = Substitutions.for_service(args.env, args.service)
|
||||
else:
|
||||
subs = Substitutions.for_env(args.env)
|
||||
|
||||
changed = render(subs, args.paths)
|
||||
|
||||
for path in changed:
|
||||
print(f"rendered: {path}")
|
||||
print(f"{len(changed)} file(s) rendered for env '{args.env}'")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
sys.exit(main())
|
||||
except SubstitutionError as e:
|
||||
print(f"error: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
@@ -0,0 +1,45 @@
|
||||
"""
|
||||
Emit a service's derived names as shell assignments.
|
||||
|
||||
eval "$(service_names.py TauBPM)"
|
||||
echo "$SYSTEMD_UNIT_NAME" # AGEBD-SERVICE-TAUBPM.service
|
||||
|
||||
Every form comes from agebd.names.ServiceName, so the deploy scripts carry no
|
||||
copy of the naming conventions. Values are shell-quoted; an invalid service
|
||||
name exits non-zero and emits nothing, so an unguarded eval cannot silently
|
||||
leave the caller with empty variables.
|
||||
"""
|
||||
|
||||
import shlex
|
||||
import sys
|
||||
|
||||
from agebd.names import InvalidServiceName, ServiceName
|
||||
|
||||
#: Shell variable name -> ServiceName attribute.
|
||||
EXPORTED = {
|
||||
"SERVICE_NAME_CAMEL": "camel",
|
||||
"SERVICE_NAME_UPPER": "upper",
|
||||
"SERVICE_NAME_LOWER": "lower",
|
||||
"SERVICE_DIR_NAME": "dir_name",
|
||||
"SERVICE_MODULE_NAME": "module_name",
|
||||
"IOC_NAME": "ioc_name",
|
||||
"SYSTEMD_UNIT_NAME": "systemd_unit_name",
|
||||
}
|
||||
|
||||
|
||||
def shell_assignments(name: str) -> str:
|
||||
service = ServiceName(name)
|
||||
return "\n".join(
|
||||
f"{var}={shlex.quote(getattr(service, attr))}" for var, attr in EXPORTED.items()
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 2:
|
||||
print(f"usage: {sys.argv[0]} <service-name>", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
try:
|
||||
print(shell_assignments(sys.argv[1]))
|
||||
except InvalidServiceName as e:
|
||||
print(f"error: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
@@ -0,0 +1,73 @@
|
||||
import pytest
|
||||
from agebd.subs import SubstitutionsConfig
|
||||
from agebd.utils import get_git_root
|
||||
|
||||
from ci.check_subs import (
|
||||
check_declared,
|
||||
check_location,
|
||||
check_no_legacy_delimiters,
|
||||
check_subs,
|
||||
)
|
||||
|
||||
REPO_ROOT = get_git_root(__file__)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def config():
|
||||
return SubstitutionsConfig.load(REPO_ROOT / "config")
|
||||
|
||||
|
||||
def test_repo_satisfies_the_substitution_contract():
|
||||
check_subs()
|
||||
|
||||
|
||||
def test_undeclared_token_in_a_render_path_is_reported(config):
|
||||
errors = check_declared(config, "qt/A_BD_Tune.ui", "AGEBD-TUNE@@agebd_env_sufix_upper@@:AO")
|
||||
|
||||
assert len(errors) == 1
|
||||
assert "agebd_env_sufix_upper" in errors[0]
|
||||
|
||||
|
||||
def test_declared_token_in_a_render_path_is_accepted(config):
|
||||
assert check_declared(config, "qt/A_BD_Tune.ui", "@@agebd_env_suffix_upper@@") == []
|
||||
|
||||
|
||||
def test_token_outside_a_rendered_path_is_reported(config):
|
||||
errors = check_location(config, "bin/start_service.sh", "SUFFIX=@@agebd_env_suffix_upper@@")
|
||||
|
||||
assert len(errors) == 1
|
||||
assert "never rendered" in errors[0]
|
||||
|
||||
|
||||
def test_token_in_a_render_path_is_accepted(config):
|
||||
assert check_location(config, "qt/A_BD_Tune.ui", "@@agebd_env_suffix_upper@@") == []
|
||||
|
||||
|
||||
def test_token_in_a_passthrough_path_is_accepted(config):
|
||||
assert (
|
||||
check_location(
|
||||
config,
|
||||
"templates/service/{{service_name_lower}}/current/ioc/x.jinja",
|
||||
"@@agebd_env_suffix_upper@@",
|
||||
)
|
||||
== []
|
||||
)
|
||||
|
||||
|
||||
def test_legacy_delimiters_are_reported(config):
|
||||
errors = check_no_legacy_delimiters(
|
||||
config, "qt/A_BD_Tune.ui", "AGEBD-TUNE{{ agebd_env_suffix_upper }}:AO"
|
||||
)
|
||||
|
||||
assert len(errors) == 1
|
||||
assert "@@agebd_env_suffix_upper@@" in errors[0]
|
||||
|
||||
|
||||
def test_creation_time_tokens_are_left_alone(config):
|
||||
"""{{ service_name_upper }} is copier's, not ours."""
|
||||
assert (
|
||||
check_no_legacy_delimiters(
|
||||
config, "templates/service/x/current/ioc/y.jinja", "{{ service_name_upper }}"
|
||||
)
|
||||
== []
|
||||
)
|
||||
@@ -1,5 +1,67 @@
|
||||
from ci.check_ui_files import check_ui_files
|
||||
import pytest
|
||||
from agebd.subs import SubstitutionsConfig
|
||||
from agebd.utils import get_git_root
|
||||
|
||||
from ci.check_ui_files import check_ui_file, check_ui_files, suffix_token
|
||||
|
||||
REPO_ROOT = get_git_root(__file__)
|
||||
TOKEN = "@@agebd_env_suffix_upper@@"
|
||||
|
||||
|
||||
def test_check_ui_files():
|
||||
@pytest.fixture
|
||||
def token():
|
||||
return suffix_token(SubstitutionsConfig.load(REPO_ROOT / "config"))
|
||||
|
||||
|
||||
def test_repo_ui_files_all_carry_the_suffix():
|
||||
check_ui_files()
|
||||
|
||||
|
||||
def test_token_comes_from_the_central_config(token):
|
||||
assert token == TOKEN
|
||||
|
||||
|
||||
def test_pv_name_with_the_suffix_is_accepted(token):
|
||||
text = f'<string notr="true">AGEBD-ALH{TOKEN}:NTURNS-ONOFF</string>'
|
||||
|
||||
assert check_ui_file(text, token, "A_BD_NTurns.ui") == []
|
||||
|
||||
|
||||
def test_pv_name_without_the_suffix_is_reported(token):
|
||||
text = '<string notr="true">AGEBD-ALH:NTURNS-ONOFF</string>'
|
||||
|
||||
errors = check_ui_file(text, token, "A_BD_NTurns.ui")
|
||||
|
||||
assert len(errors) == 1
|
||||
assert "AGEBD-ALH" in errors[0]
|
||||
assert "A_BD_NTurns.ui:1" in errors[0]
|
||||
|
||||
|
||||
def test_ioc_macro_value_without_the_suffix_is_reported(token):
|
||||
"""This is the bug that had the dev Service Manager driving prod IOCs."""
|
||||
text = "<string>IOC=AGEBD-CPCL-NTURNS,service=NTURNS,name=NTurns</string>"
|
||||
|
||||
errors = check_ui_file(text, token, "A_BD_ServiceManager.ui")
|
||||
|
||||
assert len(errors) == 1
|
||||
assert "AGEBD-CPCL-NTURNS" in errors[0]
|
||||
|
||||
|
||||
def test_systemd_unit_name_is_exempt(token):
|
||||
text = "<string>systemctl --user restart AGEBD-SERVICE-MASTER.service</string>"
|
||||
|
||||
assert check_ui_file(text, token, "A_BD_ServiceManager.ui") == []
|
||||
|
||||
|
||||
def test_other_facilities_are_not_our_business(token):
|
||||
text = "<string>IOC=AGEOP-CPCL-SHIFTTOOL,service=SHIFTTOOL</string>"
|
||||
|
||||
assert check_ui_file(text, token, "A_BD_ServiceManager.ui") == []
|
||||
|
||||
|
||||
def test_reports_the_line_number(token):
|
||||
text = "line one\nline two\n<string>AGEBD-TUNE:AO</string>\n"
|
||||
|
||||
errors = check_ui_file(text, token, "A_BD_Tune.ui")
|
||||
|
||||
assert "A_BD_Tune.ui:3" in errors[0]
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
import pytest
|
||||
from agebd.subs import SubstitutionError, Substitutions, UnknownTokenError
|
||||
from agebd.utils import get_git_root
|
||||
|
||||
from ci.render_subs import main, render
|
||||
|
||||
REPO_ROOT = get_git_root(__file__)
|
||||
CONFIG_DIR = REPO_ROOT / "config"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def service_tree(tmp_path):
|
||||
ioc = tmp_path / "ioc"
|
||||
ioc.mkdir()
|
||||
(ioc / "AGEBD-CPCL-TUNE_main.subs").write_text("{ AGEBD-TUNE@@agebd_env_suffix_upper@@ }\n")
|
||||
(ioc / "AGEBD-CPCL-TUNE_parameters.yaml").write_text(
|
||||
"ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@\nioc_port: @@ioc_port@@\n"
|
||||
)
|
||||
systemd = tmp_path / "systemd"
|
||||
systemd.mkdir()
|
||||
(systemd / "AGEBD-SERVICE-TUNE.service").write_text("Environment=AGEBD_ENV=@@agebd_env@@\n")
|
||||
return tmp_path
|
||||
|
||||
|
||||
def test_renders_a_whole_service_for_dev(service_tree):
|
||||
subs = Substitutions.for_service("dev", "tune", config_dir=CONFIG_DIR)
|
||||
|
||||
changed = render(subs, [service_tree / "ioc", service_tree / "systemd"])
|
||||
|
||||
assert len(changed) == 3
|
||||
assert "AGEBD-TUNE-DEV" in (service_tree / "ioc/AGEBD-CPCL-TUNE_main.subs").read_text()
|
||||
assert (service_tree / "ioc/AGEBD-CPCL-TUNE_parameters.yaml").read_text() == (
|
||||
"ioc_host: sls-vserv-bd-01-dev\nioc_port: 50007\n"
|
||||
)
|
||||
assert (service_tree / "systemd/AGEBD-SERVICE-TUNE.service").read_text() == (
|
||||
"Environment=AGEBD_ENV=dev\n"
|
||||
)
|
||||
|
||||
|
||||
def test_renders_a_whole_service_for_prod(service_tree):
|
||||
subs = Substitutions.for_service("prod", "tune", config_dir=CONFIG_DIR)
|
||||
|
||||
render(subs, [service_tree / "ioc", service_tree / "systemd"])
|
||||
|
||||
assert "{ AGEBD-TUNE }" in (service_tree / "ioc/AGEBD-CPCL-TUNE_main.subs").read_text()
|
||||
assert "sls-vserv-bd-01\n" in (service_tree / "ioc/AGEBD-CPCL-TUNE_parameters.yaml").read_text()
|
||||
|
||||
|
||||
def test_missing_path_is_skipped_not_fatal(service_tree, capsys):
|
||||
subs = Substitutions.for_service("dev", "tune", config_dir=CONFIG_DIR)
|
||||
|
||||
render(subs, [service_tree / "systemd", service_tree / "does-not-exist"])
|
||||
|
||||
assert "skipped (does not exist)" in capsys.readouterr().out
|
||||
|
||||
|
||||
def test_leaves_nothing_unrendered(service_tree):
|
||||
subs = Substitutions.for_service("dev", "tune", config_dir=CONFIG_DIR)
|
||||
|
||||
render(subs, [service_tree])
|
||||
|
||||
for path in service_tree.rglob("*"):
|
||||
if path.is_file():
|
||||
assert "@@" not in path.read_text(), path
|
||||
|
||||
|
||||
def test_rendering_is_idempotent(service_tree):
|
||||
subs = Substitutions.for_service("dev", "tune", config_dir=CONFIG_DIR)
|
||||
|
||||
assert len(render(subs, [service_tree])) == 3
|
||||
assert render(subs, [service_tree]) == []
|
||||
|
||||
|
||||
def test_per_service_token_without_service_fails_loudly(service_tree):
|
||||
"""Without --service there is no ioc_port, and that must not pass silently."""
|
||||
subs = Substitutions.for_env("dev", config_dir=CONFIG_DIR)
|
||||
|
||||
with pytest.raises(UnknownTokenError, match="ioc_port"):
|
||||
render(subs, [service_tree / "ioc"])
|
||||
|
||||
|
||||
def test_main_renders_via_the_command_line(service_tree):
|
||||
exit_code = main(["--env", "dev", "--service", "tune", str(service_tree / "systemd")])
|
||||
|
||||
assert exit_code == 0
|
||||
assert (service_tree / "systemd/AGEBD-SERVICE-TUNE.service").read_text() == (
|
||||
"Environment=AGEBD_ENV=dev\n"
|
||||
)
|
||||
|
||||
|
||||
def test_main_rejects_an_undeclared_environment(service_tree):
|
||||
with pytest.raises(SubstitutionError, match="staging"):
|
||||
main(["--env", "staging", "--service", "tune", str(service_tree / "systemd")])
|
||||
@@ -0,0 +1,72 @@
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
from agebd.names import InvalidServiceName
|
||||
from agebd.utils import get_git_root
|
||||
|
||||
from ci.service_names import EXPORTED, shell_assignments
|
||||
|
||||
SCRIPT = get_git_root(__file__) / "scripts" / "ci" / "service_names.py"
|
||||
|
||||
|
||||
def run_in_shell(name):
|
||||
"""Eval the output in a real shell and read the variables back."""
|
||||
assignments = shell_assignments(name)
|
||||
readback = "\n".join(f'printf "%s=%s\\n" {var} "${var}"' for var in EXPORTED)
|
||||
out = subprocess.run(
|
||||
["bash", "-c", f"{assignments}\n{readback}"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True,
|
||||
).stdout
|
||||
return dict(line.split("=", 1) for line in out.strip().splitlines())
|
||||
|
||||
|
||||
def test_emits_every_derived_form():
|
||||
values = run_in_shell("TauBPM")
|
||||
|
||||
assert values == {
|
||||
"SERVICE_NAME_CAMEL": "TauBPM",
|
||||
"SERVICE_NAME_UPPER": "TAUBPM",
|
||||
"SERVICE_NAME_LOWER": "taubpm",
|
||||
"SERVICE_DIR_NAME": "taubpm",
|
||||
"SERVICE_MODULE_NAME": "agebd_taubpm",
|
||||
"IOC_NAME": "AGEBD-CPCL-TAUBPM",
|
||||
"SYSTEMD_UNIT_NAME": "AGEBD-SERVICE-TAUBPM.service",
|
||||
}
|
||||
|
||||
|
||||
def test_dashed_name_survives_the_shell():
|
||||
values = run_in_shell("OpticsFF-X02S")
|
||||
|
||||
assert values["SERVICE_DIR_NAME"] == "opticsff-x02s"
|
||||
assert values["SERVICE_MODULE_NAME"] == "agebd_opticsff_x02s"
|
||||
assert values["IOC_NAME"] == "AGEBD-CPCL-OPTICSFF-X02S"
|
||||
|
||||
|
||||
def test_invalid_name_raises():
|
||||
with pytest.raises(InvalidServiceName):
|
||||
shell_assignments("Tune; rm -rf /")
|
||||
|
||||
|
||||
def test_cli_exits_non_zero_and_emits_nothing_on_a_bad_name():
|
||||
result = subprocess.run(
|
||||
[sys.executable, str(SCRIPT), "Tune Bump"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=False,
|
||||
)
|
||||
|
||||
assert result.returncode == 1
|
||||
assert result.stdout == ""
|
||||
assert "Invalid service name" in result.stderr
|
||||
|
||||
|
||||
def test_cli_requires_exactly_one_argument():
|
||||
result = subprocess.run(
|
||||
[sys.executable, str(SCRIPT)], capture_output=True, text=True, check=False
|
||||
)
|
||||
|
||||
assert result.returncode == 2
|
||||
assert "usage:" in result.stderr
|
||||
Generated
+2
@@ -10,6 +10,7 @@ dependencies = [
|
||||
{ name = "gitpython" },
|
||||
{ name = "h5py" },
|
||||
{ name = "pyepics" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "typer" },
|
||||
]
|
||||
|
||||
@@ -18,6 +19,7 @@ requires-dist = [
|
||||
{ name = "gitpython", specifier = ">=3.1.50" },
|
||||
{ name = "h5py", specifier = ">=3.16.0" },
|
||||
{ name = "pyepics", specifier = ">=3.5.10" },
|
||||
{ name = "pyyaml", specifier = ">=6.0.3" },
|
||||
{ name = "typer", specifier = ">=0.23.2" },
|
||||
]
|
||||
|
||||
|
||||
Generated
+19
@@ -10,6 +10,7 @@ dependencies = [
|
||||
{ name = "gitpython" },
|
||||
{ name = "h5py" },
|
||||
{ name = "pyepics" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "typer" },
|
||||
]
|
||||
|
||||
@@ -18,6 +19,7 @@ requires-dist = [
|
||||
{ name = "gitpython", specifier = ">=3.1.50" },
|
||||
{ name = "h5py", specifier = ">=3.16.0" },
|
||||
{ name = "pyepics", specifier = ">=3.5.10" },
|
||||
{ name = "pyyaml", specifier = ">=6.0.3" },
|
||||
{ name = "typer", specifier = ">=0.23.2" },
|
||||
]
|
||||
|
||||
@@ -284,6 +286,23 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyyaml"
|
||||
version = "6.0.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rich"
|
||||
version = "15.0.0"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
file DBPM3CURR.template {
|
||||
pattern { DEVICE }
|
||||
{ AGEBD-DBPM3CURR{{ agebd_env_suffix_upper }} }
|
||||
{ AGEBD-DBPM3CURR@@agebd_env_suffix_upper@@ }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cpu_architecture: x86_64
|
||||
epics_version: 7.0.8
|
||||
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
|
||||
ioc_port: {{ ioc_port }}
|
||||
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
|
||||
ioc_port: @@ioc_port@@
|
||||
os: RHEL8
|
||||
os_id: rhel
|
||||
|
||||
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-DBPM3CURR
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Environment=AGEBD_ENV={{ agebd_env }}
|
||||
Environment=AGEBD_ENV=@@agebd_env@@
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh DBPM3CURR
|
||||
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh DBPM3CURR
|
||||
Restart=no
|
||||
|
||||
[Install]
|
||||
|
||||
+19
@@ -10,6 +10,7 @@ dependencies = [
|
||||
{ name = "gitpython" },
|
||||
{ name = "h5py" },
|
||||
{ name = "pyepics" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "typer" },
|
||||
]
|
||||
|
||||
@@ -18,6 +19,7 @@ requires-dist = [
|
||||
{ name = "gitpython", specifier = ">=3.1.50" },
|
||||
{ name = "h5py", specifier = ">=3.16.0" },
|
||||
{ name = "pyepics", specifier = ">=3.5.10" },
|
||||
{ name = "pyyaml", specifier = ">=6.0.3" },
|
||||
{ name = "typer", specifier = ">=0.23.2" },
|
||||
]
|
||||
|
||||
@@ -284,6 +286,23 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyyaml"
|
||||
version = "6.0.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rich"
|
||||
version = "15.0.0"
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
file INJECTIONGUARD_individual.template {
|
||||
pattern { DEVICE }
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} }
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ }
|
||||
}
|
||||
|
||||
file INJECTIONGUARD_automated.template {
|
||||
pattern { DEVICE NR Latch Description }
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 01 1 "Beam Dump Kicker"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 02 1 "Dump Valve"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 03 1 "MIS"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 04 1 "VCS"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 05 1 "Linac KV/BB/BY"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 06 1 "RF Linac"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 07 1 "RF Booster"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 08 1 "RF Ring"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 09 1 "Magnets Pulsed"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 10 1 "Magnets Booster"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 11 1 "Magnets Corrector"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 12 1 "Magnets Ring"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 13 1 "Current Limit"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 14 1 "IDs Ready"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 15 1 "Single Bunch Charge"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 16 1 "Injection Quality"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 17 1 "Dump Quality"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 18 1 "Lifetime"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 19 1 "Tune"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 20 0 "Pingers"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 21 1 "Vacuum Pressure"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 22 1 "Orbit Deviation"}
|
||||
{ AGEBD-INJECTIONGUARD{{ agebd_env_suffix_upper }} 23 1 "Beam Dump Controller"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 01 1 "Beam Dump Kicker"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 02 1 "Dump Valve"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 03 1 "MIS"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 04 1 "VCS"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 05 1 "Linac KV/BB/BY"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 06 1 "RF Linac"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 07 1 "RF Booster"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 08 1 "RF Ring"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 09 1 "Magnets Pulsed"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 10 1 "Magnets Booster"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 11 1 "Magnets Corrector"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 12 1 "Magnets Ring"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 13 1 "Current Limit"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 14 1 "IDs Ready"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 15 1 "Single Bunch Charge"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 16 1 "Injection Quality"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 17 1 "Dump Quality"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 18 1 "Lifetime"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 19 1 "Tune"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 20 0 "Pingers"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 21 1 "Vacuum Pressure"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 22 1 "Orbit Deviation"}
|
||||
{ AGEBD-INJECTIONGUARD@@agebd_env_suffix_upper@@ 23 1 "Beam Dump Controller"}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cpu_architecture: x86_64
|
||||
epics_version: 7.0.8
|
||||
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
|
||||
ioc_port: {{ ioc_port }}
|
||||
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
|
||||
ioc_port: @@ioc_port@@
|
||||
os: RHEL8
|
||||
os_id: rhel
|
||||
|
||||
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-INJECTIONGUARD
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Environment=AGEBD_ENV={{ agebd_env }}
|
||||
Environment=AGEBD_ENV=@@agebd_env@@
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh INJECTIONGUARD
|
||||
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh INJECTIONGUARD
|
||||
Restart=no
|
||||
|
||||
[Install]
|
||||
|
||||
Generated
+2
@@ -10,6 +10,7 @@ dependencies = [
|
||||
{ name = "gitpython" },
|
||||
{ name = "h5py" },
|
||||
{ name = "pyepics" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "typer" },
|
||||
]
|
||||
|
||||
@@ -18,6 +19,7 @@ requires-dist = [
|
||||
{ name = "gitpython", specifier = ">=3.1.50" },
|
||||
{ name = "h5py", specifier = ">=3.16.0" },
|
||||
{ name = "pyepics", specifier = ">=3.5.10" },
|
||||
{ name = "pyyaml", specifier = ">=6.0.3" },
|
||||
{ name = "typer", specifier = ">=0.23.2" },
|
||||
]
|
||||
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
file MASTER.template {
|
||||
pattern { SUFFIX SERVICE STARTON AUTOOFF }
|
||||
{ "{{ agebd_env_suffix_upper }}", "MASTER" , "0", "30" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "NTURNS" , "0", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "DBPM3CURR" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TAUBPM" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TAUPCT" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "SCRUBBING" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TIMING" , "0", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TUNE" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "INJECTIONGUARD" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "POSTMORTEMLOG" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TUNEBUMP" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "PLOTS" , "0", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "ORBITBUMP" , "0", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TOPUPTOOL" , "0", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "SHIFTTOOL" , "1", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "BEAMTRANSFERCHECKS" , "0", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TUNEFBX" , "0", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "TUNEFBY" , "0", "0" }
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X02S" , "0", "0" } # I-TOMCAT
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X03M" , "0", "0" } # ADRESS
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X04S" , "0", "0" } # ADDAMS
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X05L" , "0", "0" } # QUEST
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X06S" , "0", "0" } # PXI
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X07M" , "0", "0" } # PHOENIX/XTREME
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X08S" , "0", "0" } # MicroXAS
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X09L" , "0", "0" } # OPERA
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X10S" , "0", "0" } # PXII
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X11M" , "0", "0" } # SIM
|
||||
{ "{{ agebd_env_suffix_upper }}", "OPTICSFF-X12S" , "0", "0" } # cSAXS
|
||||
{ "@@agebd_env_suffix_upper@@", "MASTER" , "0", "30" }
|
||||
{ "@@agebd_env_suffix_upper@@", "NTURNS" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "DBPM3CURR" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TAUBPM" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TAUPCT" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "SCRUBBING" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TIMING" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TUNE" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "INJECTIONGUARD" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "POSTMORTEMLOG" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TUNEBUMP" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "PLOTS" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "ORBITBUMP" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TOPUPTOOL" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "SHIFTTOOL" , "1", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "BEAMTRANSFERCHECKS" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TUNEFBX" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "TUNEFBY" , "0", "0" }
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X02S" , "0", "0" } # I-TOMCAT
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X03M" , "0", "0" } # ADRESS
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X04S" , "0", "0" } # ADDAMS
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X05L" , "0", "0" } # QUEST
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X06S" , "0", "0" } # PXI
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X07M" , "0", "0" } # PHOENIX/XTREME
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X08S" , "0", "0" } # MicroXAS
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X09L" , "0", "0" } # OPERA
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X10S" , "0", "0" } # PXII
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X11M" , "0", "0" } # SIM
|
||||
{ "@@agebd_env_suffix_upper@@", "OPTICSFF-X12S" , "0", "0" } # cSAXS
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cpu_architecture: x86_64
|
||||
epics_version: 7.0.8
|
||||
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
|
||||
ioc_port: {{ ioc_port }}
|
||||
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
|
||||
ioc_port: @@ioc_port@@
|
||||
os: RHEL8
|
||||
os_id: rhel
|
||||
|
||||
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-MASTER
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Environment=AGEBD_ENV={{ agebd_env }}
|
||||
Environment=AGEBD_ENV=@@agebd_env@@
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh MASTER
|
||||
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh MASTER
|
||||
Restart=no
|
||||
|
||||
[Install]
|
||||
|
||||
Generated
+19
@@ -10,6 +10,7 @@ dependencies = [
|
||||
{ name = "gitpython" },
|
||||
{ name = "h5py" },
|
||||
{ name = "pyepics" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "typer" },
|
||||
]
|
||||
|
||||
@@ -18,6 +19,7 @@ requires-dist = [
|
||||
{ name = "gitpython", specifier = ">=3.1.50" },
|
||||
{ name = "h5py", specifier = ">=3.16.0" },
|
||||
{ name = "pyepics", specifier = ">=3.5.10" },
|
||||
{ name = "pyyaml", specifier = ">=6.0.3" },
|
||||
{ name = "typer", specifier = ">=0.23.2" },
|
||||
]
|
||||
|
||||
@@ -286,6 +288,23 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyyaml"
|
||||
version = "6.0.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rich"
|
||||
version = "15.0.0"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
file NTURNS.template {
|
||||
pattern { DEVICE }
|
||||
{ AGEBD-NTURNS{{ agebd_env_suffix_upper }} }
|
||||
{ AGEBD-NTURNS@@agebd_env_suffix_upper@@ }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cpu_architecture: x86_64
|
||||
epics_version: 7.0.8
|
||||
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
|
||||
ioc_port: {{ ioc_port }}
|
||||
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
|
||||
ioc_port: @@ioc_port@@
|
||||
os: RHEL8
|
||||
os_id: rhel
|
||||
|
||||
@@ -3,9 +3,9 @@ Description=AGEBD-SERVICE-NTURNS
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Environment=AGEBD_ENV={{ agebd_env }}
|
||||
Environment=AGEBD_ENV=@@agebd_env@@
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh NTURNS
|
||||
ExecStart=/sls/bd/hla/@@agebd_env@@/bin/start_service.sh NTURNS
|
||||
Restart=no
|
||||
|
||||
[Install]
|
||||
|
||||
@@ -2,31 +2,31 @@ file ORBITBUMP_machine.template {
|
||||
pattern
|
||||
{DEVICE sourcepoint beamline LOX HIX X LOXP HIXP XP LOY HIY Y LOYP HIYP YP BPM1 C1xx C1xpx C1yy C1ypy BPM2 C2xx C2xpx C2yy C2ypy BPM3 C3xx C3xpx C3yy C3ypy BPM4 C4xx C4xpx C4yy C4ypy}
|
||||
# Diagnostic dipole beamlines
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X01DD NEMO -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS01-DBPM-1080 -0.0009920 -0.0006308 -0.0001141 0.0001109 ARS01-DBPM-1460 0.9742755 -0.1432472 0.9455447 -0.0865934 ARS01-DBPM-1900 0.9277200 1.0454287 0.1445141 1.5920941 ARS01-DBPM-2410 -0.0809412 -0.0384293 0.0058229 0.1036650}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X08DB DISCO -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS08-DBPM-1900 -0.2500389 -0.0365053 0.0001023 0.0000595 ARS08-DBPM-2410 1.2775662 -0.9246414 0.5814965 -0.4999301 ARS08-DBPM-2910 0.6885552 0.9211364 0.4873898 1.7550023 ARS08-DBPM-4220 -0.2391394 -0.0169593 0.0309046 0.1234665}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10DG X11HEAT -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS10-DBPM-4720 -0.0187 -0.0188 0 0 ARS10-DBPM-5250 1.6016 -1.2108 0.5496 -0.5376 ARS10-DBPM-5880 0.7075 1.0654 1.1093 1.9515 ARS11-DBPM-0850 0.0026 0.0044 0.0166 0.0304}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X01DD NEMO -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS01-DBPM-1080 -0.0009920 -0.0006308 -0.0001141 0.0001109 ARS01-DBPM-1460 0.9742755 -0.1432472 0.9455447 -0.0865934 ARS01-DBPM-1900 0.9277200 1.0454287 0.1445141 1.5920941 ARS01-DBPM-2410 -0.0809412 -0.0384293 0.0058229 0.1036650}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X08DB DISCO -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS08-DBPM-1900 -0.2500389 -0.0365053 0.0001023 0.0000595 ARS08-DBPM-2410 1.2775662 -0.9246414 0.5814965 -0.4999301 ARS08-DBPM-2910 0.6885552 0.9211364 0.4873898 1.7550023 ARS08-DBPM-4220 -0.2391394 -0.0169593 0.0309046 0.1234665}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10DG X11HEAT -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS10-DBPM-4720 -0.0187 -0.0188 0 0 ARS10-DBPM-5250 1.6016 -1.2108 0.5496 -0.5376 ARS10-DBPM-5880 0.7075 1.0654 1.1093 1.9515 ARS11-DBPM-0850 0.0026 0.0044 0.0166 0.0304}
|
||||
# User dipole beamlines
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X01DA DEBYE -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS01-DBPM-2410 -0.2169694 -0.0006291 0.0001170 0.0000325 ARS01-DBPM-2910 1.2765938 -0.9208697 0.5792863 -0.5011470 ARS01-DBPM-4220 0.6866207 0.9198858 0.4842977 1.7595080 ARS01-DBPM-4720 -0.1924402 0.0258918 0.0307458 0.1239361}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X02DA S-TOMCAT -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS02-DBPM-2410 -0.2089937 0.0072435 0.0001169 0.0000325 ARS02-DBPM-2910 1.2772588 -0.9200089 0.5792866 -0.5011606 ARS02-DBPM-4220 0.6864959 0.9194778 0.4843170 1.7595616 ARS02-DBPM-4720 -0.1833930 0.0352770 0.0307471 0.1239392}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X03DA PEARL -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS03-DBPM-2410 -0.2016647 0.0152728 0.0001171 0.0000326 ARS03-DBPM-2910 1.2831552 -0.9190247 0.5819894 -0.5004911 ARS03-DBPM-4220 0.6905553 0.9206615 0.4875028 1.7552635 ARS03-DBPM-4720 -0.1749243 0.0438144 0.0309089 0.1234182}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X04DB VUV -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS04-DBPM-1900 -0.1917962 0.0214714 0.0001022 0.0000595 ARS04-DBPM-2410 1.2842031 -0.9179380 0.5814999 -0.5000284 ARS04-DBPM-2910 0.6887599 0.9211626 0.4874732 1.7553295 ARS04-DBPM-4220 -0.1710439 0.0514609 0.0309080 0.1234788}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X05DA Optics -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS05-DBPM-2410 -0.2740176 -0.0571105 0.0001170 0.0000321 ARS05-DBPM-2910 1.2732647 -0.9287209 0.5819890 -0.5003730 ARS05-DBPM-4220 0.6913367 0.9213802 0.4873370 1.7548006 ARS05-DBPM-4720 -0.2592981 -0.0408063 0.0308988 0.1233928}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X06DA PXIII -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS06-DBPM-2410 -0.2675305 -0.0508248 0.0001170 0.0000321 ARS06-DBPM-2910 1.2749858 -0.9266845 0.5818007 -0.5004548 ARS06-DBPM-4220 0.6916389 0.9218001 0.4871613 1.7552275 ARS06-DBPM-4720 -0.2517260 -0.0332473 0.0308895 0.1234316}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07DB nanoXAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS07-DBPM-1900 -0.2563387 -0.0425222 0.0001023 0.0000596 ARS07-DBPM-2410 1.2761628 -0.9263027 0.5814954 -0.4999177 ARS07-DBPM-2910 0.6888233 0.9216262 0.4873810 1.7549631 ARS07-DBPM-4220 -0.2469055 -0.0248794 0.0309043 0.1234651}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07DA PolLux -300 300 0 -150 150 0 -300 300 0 -250 250 0 ARS07-DBPM-2410 -0.2606076 -0.0450539 0.0001170 0.0000326 ARS07-DBPM-2910 1.2750718 -0.9205684 0.5819899 -0.4976199 ARS07-DBPM-4220 0.6915728 0.9246379 0.4873668 1.7572153 ARS07-DBPM-4720 -0.2433555 -0.0254434 0.0309006 0.1235450}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10DA SuperXAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS10-DBPM-2410 -0.2392400 -0.0226765 0.0001170 0.0000321 ARS10-DBPM-2910 1.2780895 -0.9235140 0.5818007 -0.5005005 ARS10-DBPM-4220 0.6911875 0.9212713 0.4872251 1.7554059 ARS10-DBPM-4720 -0.2190626 -0.0004438 0.0308933 0.1234413}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X01DA DEBYE -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS01-DBPM-2410 -0.2169694 -0.0006291 0.0001170 0.0000325 ARS01-DBPM-2910 1.2765938 -0.9208697 0.5792863 -0.5011470 ARS01-DBPM-4220 0.6866207 0.9198858 0.4842977 1.7595080 ARS01-DBPM-4720 -0.1924402 0.0258918 0.0307458 0.1239361}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X02DA S-TOMCAT -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS02-DBPM-2410 -0.2089937 0.0072435 0.0001169 0.0000325 ARS02-DBPM-2910 1.2772588 -0.9200089 0.5792866 -0.5011606 ARS02-DBPM-4220 0.6864959 0.9194778 0.4843170 1.7595616 ARS02-DBPM-4720 -0.1833930 0.0352770 0.0307471 0.1239392}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X03DA PEARL -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS03-DBPM-2410 -0.2016647 0.0152728 0.0001171 0.0000326 ARS03-DBPM-2910 1.2831552 -0.9190247 0.5819894 -0.5004911 ARS03-DBPM-4220 0.6905553 0.9206615 0.4875028 1.7552635 ARS03-DBPM-4720 -0.1749243 0.0438144 0.0309089 0.1234182}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X04DB VUV -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS04-DBPM-1900 -0.1917962 0.0214714 0.0001022 0.0000595 ARS04-DBPM-2410 1.2842031 -0.9179380 0.5814999 -0.5000284 ARS04-DBPM-2910 0.6887599 0.9211626 0.4874732 1.7553295 ARS04-DBPM-4220 -0.1710439 0.0514609 0.0309080 0.1234788}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X05DA Optics -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS05-DBPM-2410 -0.2740176 -0.0571105 0.0001170 0.0000321 ARS05-DBPM-2910 1.2732647 -0.9287209 0.5819890 -0.5003730 ARS05-DBPM-4220 0.6913367 0.9213802 0.4873370 1.7548006 ARS05-DBPM-4720 -0.2592981 -0.0408063 0.0308988 0.1233928}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X06DA PXIII -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS06-DBPM-2410 -0.2675305 -0.0508248 0.0001170 0.0000321 ARS06-DBPM-2910 1.2749858 -0.9266845 0.5818007 -0.5004548 ARS06-DBPM-4220 0.6916389 0.9218001 0.4871613 1.7552275 ARS06-DBPM-4720 -0.2517260 -0.0332473 0.0308895 0.1234316}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07DB nanoXAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS07-DBPM-1900 -0.2563387 -0.0425222 0.0001023 0.0000596 ARS07-DBPM-2410 1.2761628 -0.9263027 0.5814954 -0.4999177 ARS07-DBPM-2910 0.6888233 0.9216262 0.4873810 1.7549631 ARS07-DBPM-4220 -0.2469055 -0.0248794 0.0309043 0.1234651}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07DA PolLux -300 300 0 -150 150 0 -300 300 0 -250 250 0 ARS07-DBPM-2410 -0.2606076 -0.0450539 0.0001170 0.0000326 ARS07-DBPM-2910 1.2750718 -0.9205684 0.5819899 -0.4976199 ARS07-DBPM-4220 0.6915728 0.9246379 0.4873668 1.7572153 ARS07-DBPM-4720 -0.2433555 -0.0254434 0.0309006 0.1235450}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10DA SuperXAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS10-DBPM-2410 -0.2392400 -0.0226765 0.0001170 0.0000321 ARS10-DBPM-2910 1.2780895 -0.9235140 0.5818007 -0.5005005 ARS10-DBPM-4220 0.6911875 0.9212713 0.4872251 1.7554059 ARS10-DBPM-4720 -0.2190626 -0.0004438 0.0308933 0.1234413}
|
||||
# ID beamlines
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X02SA I-TOMCAT -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS01-DBPM-5250 -0.0161762 0.0645315 -0.0000522 0.0002217 ARS01-DBPM-5880 1.3057217 -3.1586368 0.7340909 -1.7908669 ARS02-DBPM-1080 1.1637103 2.7703664 0.8405251 2.0415012 ARS02-DBPM-1460 0.0473369 0.1176477 0.0354851 0.0914118}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X03MA ADRESS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS02-DBPM-5250 -0.0056074 0.0805576 -0.0000533 0.0001427 ARS02-DBPM-5880 1.2522257 -3.5240592 0.7649336 -2.1576328 ARS03-DBPM-0810 1.1134798 3.0406278 0.8874945 2.4488073 ARS03-DBPM-1080 0.0367597 0.0902093 0.0491615 0.1421129}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X04SA ADDAMS -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS03-DBPM-5250 0.0006041 0.0811354 -0.0000524 0.0002222 ARS03-DBPM-5880 1.3048037 -3.1594991 0.7340820 -1.7909262 ARS04-DBPM-1080 1.1649402 2.7718322 0.8405182 2.0415768 ARS04-DBPM-1460 0.0441826 0.1145073 0.0354841 0.0914133}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X05LA QUEST -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS04-DBPM-5880 0.0008866 0.0002252 -0.0001045 0.0002529 ARS05-DBPM-0410 0.8976150 -2.8499257 1.0112790 -2.8592349 ARS05-DBPM-1080 1.0880889 5.0183256 0.9137175 4.2390359 ARS05-DBPM-1460 0.0421489 0.1947713 0.0433357 0.2067705}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X06SA PXI -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS05-DBPM-5250 -0.0776973 0.0030268 -0.0000523 0.0002212 ARS05-DBPM-5880 1.3044906 -3.1590695 0.7341239 -1.7906420 ARS06-DBPM-1080 1.1642809 2.7699897 0.8405515 2.0412179 ARS06-DBPM-1460 0.0604868 0.1306028 0.0354886 0.0914055}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07MA Phoenix/XTreme -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS06-DBPM-5250 -0.0684380 0.0189547 -0.0000531 0.0001447 ARS06-DBPM-5880 1.2508776 -3.5845660 0.7649630 -2.1939024 ARS07-DBPM-0810 1.1137188 2.9863773 0.8875136 2.4060190 ARS07-DBPM-1080 0.0093629 0.0606390 0.0491634 0.1397441}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X08SA micro-XAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS07-DBPM-5250 -0.0624701 0.0181621 -0.0000523 0.0002216 ARS07-DBPM-5880 1.3039931 -3.1597229 0.7341156 -1.7906968 ARS08-DBPM-1080 1.1652753 2.7714013 0.8405450 2.0412871 ARS08-DBPM-1460 0.0575855 0.1278140 0.0354876 0.0914065}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X09LA PEARL/XIL-II -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS08-DBPM-5880 0.0011254 0.0009724 -0.0000942 0.0002317 ARS09-DBPM-0570 0.8843735 -2.4344684 1.1263977 -3.0082085 ARS09-DBPM-1080 1.0591734 3.0395499 0.9413643 2.7184391 ARS09-DBPM-1460 0.0394021 0.1139547 0.0465775 0.1402264}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10SA PXII -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS09-DBPM-5250 -0.0473875 0.0333454 -0.0000523 0.0002213 ARS09-DBPM-5880 1.3047178 -3.1592507 0.7341077 -1.7907518 ARS10-DBPM-1080 1.1639981 2.7701547 0.8405387 2.0413565 ARS10-DBPM-1460 0.0540084 0.1242161 0.0354869 0.0914087}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X11MA SIM -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS10-DBPM-5250 -0.0383667 0.0514782 -0.0000499 0.0001646 ARS10-DBPM-5880 1.2526899 -3.7342542 0.7640638 -2.2804441 ARS11-DBPM-0850 1.1168967 3.1441871 0.8845808 2.5170397 ARS11-DBPM-1080 0.0219427 0.0928506 0.0546028 0.1626088}
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X12SA cSAXS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS11-DBPM-5250 -0.0326376 0.0479239 -0.0000524 0.0002219 ARS11-DBPM-5880 1.3047910 -3.1591765 0.7340995 -1.7908066 ARS12-DBPM-1080 1.1653151 2.7718178 0.8405322 2.0414257 ARS12-DBPM-1460 0.0513287 0.1216036 0.0354860 0.0914097}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X02SA I-TOMCAT -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS01-DBPM-5250 -0.0161762 0.0645315 -0.0000522 0.0002217 ARS01-DBPM-5880 1.3057217 -3.1586368 0.7340909 -1.7908669 ARS02-DBPM-1080 1.1637103 2.7703664 0.8405251 2.0415012 ARS02-DBPM-1460 0.0473369 0.1176477 0.0354851 0.0914118}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X03MA ADRESS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS02-DBPM-5250 -0.0056074 0.0805576 -0.0000533 0.0001427 ARS02-DBPM-5880 1.2522257 -3.5240592 0.7649336 -2.1576328 ARS03-DBPM-0810 1.1134798 3.0406278 0.8874945 2.4488073 ARS03-DBPM-1080 0.0367597 0.0902093 0.0491615 0.1421129}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X04SA ADDAMS -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS03-DBPM-5250 0.0006041 0.0811354 -0.0000524 0.0002222 ARS03-DBPM-5880 1.3048037 -3.1594991 0.7340820 -1.7909262 ARS04-DBPM-1080 1.1649402 2.7718322 0.8405182 2.0415768 ARS04-DBPM-1460 0.0441826 0.1145073 0.0354841 0.0914133}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X05LA QUEST -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS04-DBPM-5880 0.0008866 0.0002252 -0.0001045 0.0002529 ARS05-DBPM-0410 0.8976150 -2.8499257 1.0112790 -2.8592349 ARS05-DBPM-1080 1.0880889 5.0183256 0.9137175 4.2390359 ARS05-DBPM-1460 0.0421489 0.1947713 0.0433357 0.2067705}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X06SA PXI -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS05-DBPM-5250 -0.0776973 0.0030268 -0.0000523 0.0002212 ARS05-DBPM-5880 1.3044906 -3.1590695 0.7341239 -1.7906420 ARS06-DBPM-1080 1.1642809 2.7699897 0.8405515 2.0412179 ARS06-DBPM-1460 0.0604868 0.1306028 0.0354886 0.0914055}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07MA Phoenix/XTreme -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS06-DBPM-5250 -0.0684380 0.0189547 -0.0000531 0.0001447 ARS06-DBPM-5880 1.2508776 -3.5845660 0.7649630 -2.1939024 ARS07-DBPM-0810 1.1137188 2.9863773 0.8875136 2.4060190 ARS07-DBPM-1080 0.0093629 0.0606390 0.0491634 0.1397441}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X08SA micro-XAS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS07-DBPM-5250 -0.0624701 0.0181621 -0.0000523 0.0002216 ARS07-DBPM-5880 1.3039931 -3.1597229 0.7341156 -1.7906968 ARS08-DBPM-1080 1.1652753 2.7714013 0.8405450 2.0412871 ARS08-DBPM-1460 0.0575855 0.1278140 0.0354876 0.0914065}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X09LA PEARL/XIL-II -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS08-DBPM-5880 0.0011254 0.0009724 -0.0000942 0.0002317 ARS09-DBPM-0570 0.8843735 -2.4344684 1.1263977 -3.0082085 ARS09-DBPM-1080 1.0591734 3.0395499 0.9413643 2.7184391 ARS09-DBPM-1460 0.0394021 0.1139547 0.0465775 0.1402264}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10SA PXII -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS09-DBPM-5250 -0.0473875 0.0333454 -0.0000523 0.0002213 ARS09-DBPM-5880 1.3047178 -3.1592507 0.7341077 -1.7907518 ARS10-DBPM-1080 1.1639981 2.7701547 0.8405387 2.0413565 ARS10-DBPM-1460 0.0540084 0.1242161 0.0354869 0.0914087}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X11MA SIM -500 500 0 -150 150 0 -500 500 0 -150 150 0 ARS10-DBPM-5250 -0.0383667 0.0514782 -0.0000499 0.0001646 ARS10-DBPM-5880 1.2526899 -3.7342542 0.7640638 -2.2804441 ARS11-DBPM-0850 1.1168967 3.1441871 0.8845808 2.5170397 ARS11-DBPM-1080 0.0219427 0.0928506 0.0546028 0.1626088}
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X12SA cSAXS -300 300 0 -150 150 0 -300 300 0 -150 150 0 ARS11-DBPM-5250 -0.0326376 0.0479239 -0.0000524 0.0002219 ARS11-DBPM-5880 1.3047910 -3.1591765 0.7340995 -1.7908066 ARS12-DBPM-1080 1.1653151 2.7718178 0.8405322 2.0414257 ARS12-DBPM-1460 0.0513287 0.1216036 0.0354860 0.0914097}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,29 +34,29 @@ file ORBITBUMP_beamline.template {
|
||||
pattern
|
||||
{DEVICE sourcepoint beamline DRVL DRVH X XP Y YP }
|
||||
# Diagnostic dipole beamlines
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X01DD NEMO -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X08DB DISCO -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10DG X11HEAT -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X01DD NEMO -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X08DB DISCO -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10DG X11HEAT -10 10 0 0 0 0 }
|
||||
# User dipole beamlines
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X01DA DEBYE -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X02DA S-TOMCAT -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X03DA PEARL -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X04DB VUV -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X05DA Optics -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X06DA PXIII -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07DB nanoXAS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07DA PolLux -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10DA SuperXAS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X01DA DEBYE -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X02DA S-TOMCAT -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X03DA PEARL -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X04DB VUV -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X05DA Optics -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X06DA PXIII -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07DB nanoXAS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07DA PolLux -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10DA SuperXAS -10 10 0 0 0 0 }
|
||||
# ID beamlines
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X02SA I-TOMCAT -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X03MA ADRESS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X04SA ADDAMS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X05LA QUEST -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X06SA PXI -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X07MA Phoenix/XTreme -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X08SA micro-XAS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X09LA PEARL/XIL-II -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X10SA PXII -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X11MA SIM -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP{{ agebd_env_suffix_upper }} X12SA cSAXS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X02SA I-TOMCAT -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X03MA ADRESS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X04SA ADDAMS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X05LA QUEST -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X06SA PXI -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X07MA Phoenix/XTreme -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X08SA micro-XAS -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X09LA PEARL/XIL-II -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X10SA PXII -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X11MA SIM -10 10 0 0 0 0 }
|
||||
{AGEBD-ORBITBUMP@@agebd_env_suffix_upper@@ X12SA cSAXS -10 10 0 0 0 0 }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cpu_architecture: x86_64
|
||||
epics_version: 7.0.8
|
||||
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
|
||||
ioc_port: {{ ioc_port }}
|
||||
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
|
||||
ioc_port: @@ioc_port@@
|
||||
os: RHEL8
|
||||
os_id: rhel
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
file PARAMS.template {
|
||||
pattern { DEVICE }
|
||||
{ AGEBD-PARAMS{{ agebd_env_suffix_upper }} }
|
||||
{ AGEBD-PARAMS@@agebd_env_suffix_upper@@ }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cpu_architecture: x86_64
|
||||
epics_version: 7.0.8
|
||||
ioc_host: sls-vserv-bd-01{{ agebd_env_suffix_lower }}
|
||||
ioc_port: {{ ioc_port }}
|
||||
ioc_host: sls-vserv-bd-01@@agebd_env_suffix_lower@@
|
||||
ioc_port: @@ioc_port@@
|
||||
os: RHEL8
|
||||
os_id: rhel
|
||||
|
||||
Generated
+19
@@ -10,6 +10,7 @@ dependencies = [
|
||||
{ name = "gitpython" },
|
||||
{ name = "h5py" },
|
||||
{ name = "pyepics" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "typer" },
|
||||
]
|
||||
|
||||
@@ -18,6 +19,7 @@ requires-dist = [
|
||||
{ name = "gitpython", specifier = ">=3.1.50" },
|
||||
{ name = "h5py", specifier = ">=3.16.0" },
|
||||
{ name = "pyepics", specifier = ">=3.5.10" },
|
||||
{ name = "pyyaml", specifier = ">=6.0.3" },
|
||||
{ name = "typer", specifier = ">=0.23.2" },
|
||||
]
|
||||
|
||||
@@ -510,6 +512,23 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyyaml"
|
||||
version = "6.0.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "requests"
|
||||
version = "2.34.2"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user