From 37b911d8347fec0176eedcfbc95224fff642b5ae Mon Sep 17 00:00:00 2001 From: "Ben D." Date: Thu, 30 Apr 2026 14:59:47 -0700 Subject: [PATCH] Attempt to update the repo switch to work with older versions. --- roles/pfsense_upgrade/tasks/upgrade.yml | 49 ++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/roles/pfsense_upgrade/tasks/upgrade.yml b/roles/pfsense_upgrade/tasks/upgrade.yml index 8a8dbfb..226412b 100644 --- a/roles/pfsense_upgrade/tasks/upgrade.yml +++ b/roles/pfsense_upgrade/tasks/upgrade.yml @@ -18,14 +18,46 @@ # --------------------------------------------------------------------------- # 1. Switch repository in configuration # --------------------------------------------------------------------------- -- name: Switch repository in config.xml +# - name: Switch repository in config.xml +# ansible.builtin.raw: | +# php -r ' +# require_once("/etc/inc/config.inc"); +# require_once("/etc/inc/pkg-utils.inc"); + +# config_set_path("system/pkg_repo_conf_path", "{{ upgrade_target_repo }}"); +# write_config("Switched to {{ upgrade_target_repo }} for upgrade");' + +# register: _repo_switch +# timeout: "{{ upgrade_check_timeout | default(120) }}" +# changed_when: true +# when: perform_upgrade | bool + +- name: Switch repository and force synchronization (GUI Native) ansible.builtin.raw: | - php -r 'require_once("/etc/inc/config.inc"); require_once("/etc/inc/pkg-utils.inc"); config_set_path("system/pkg_repo_conf_path", "{{ upgrade_target_repo }}"); write_config("Switched to {{ upgrade_target_repo }} for upgrade");' + php -r ' + require_once("guiconfig.inc"); + require_once("pkg-utils.inc"); + $target_repo = "{{ upgrade_target_repo }}"; + $repos = pkg_list_repos(); + $found = false; + foreach ($repos as $repo) { + if ($repo["name"] == $target_repo || $repo["path"] == $target_repo) { + config_set_path("system/pkg_repo_conf_path", $repo["path"]); + pkg_switch_repo(g_get("pkg_repos_path"), $repo["name"]); + write_config("Branch switched to " . $repo["name"] . " via Ansible"); + update_repos(); + echo "Successfully switched to " . $repo["name"]; + $found = true; + break; + } + } + if (!$found) { echo "ERROR: Repository not found"; exit(1); } + ' register: _repo_switch timeout: "{{ upgrade_check_timeout | default(120) }}" - changed_when: true + changed_when: "'Successfully switched' in _repo_switch.stdout" when: perform_upgrade | bool - + - name: Apply repository configuration via pfSense-repo-setup ansible.builtin.raw: | /usr/local/sbin/pfSense-repo-setup -U @@ -34,7 +66,14 @@ - name: Verify repository switch took effect ansible.builtin.raw: | - php -r 'require_once("/etc/inc/pkg-utils.inc"); foreach(pkg_list_repos() as $r) { if (isset($r["default"])) { echo $r["name"]; } }' + php -r ' + require_once("/etc/inc/pkg-utils.inc"); + foreach(pkg_list_repos() as $r) + { + if (isset($r["default"])) { + echo $r["name"]; + } + }' register: _verify_repo_switch when: perform_upgrade | bool