XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Patching XCP-ng via XOA

    Scheduled Pinned Locked Moved Management
    21 Posts 4 Posters 443 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • gthvn1G Offline
      gthvn1 Vates 🪐 XCP-ng Team
      last edited by

      @rvreugde said in Patching XCP-ng via XOA:

      xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update

      Can you try to run the command directly on xcp-080 ?

      rvreugdeR 1 Reply Last reply Reply Quote 0
      • rvreugdeR Offline
        rvreugde @gthvn1
        last edited by rvreugde

        @gthvn1

        I think, it has something to do with proxy settings.
        XOA has its proxy set:
        9803226c-4ef9-482d-a626-f43abdf129cc-image.png

        But, locally, via CLI, I got the following when I set the proxy

        export {http,https}_proxy=http://192.168.91.151:8080
        

        Check updates result (tried on several hosts):

        xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
        Error code: -1
        Error parameters: The updater plugin is busy (current operation: check_update), , Traceback (most recent call last):
          File "/etc/xapi.d/plugins/xcpngutils/__init__.py", line 127, in wrapper
            return func(*args, **kwds)
          File "/etc/xapi.d/plugins/updater.py", line 95, in decorator
            with OperationLocker(*pid_args, **pid_kwargs):
          File "/etc/xapi.d/plugins/xcpngutils/filelocker.py", line 55, in __enter__
            self.lock()
          File "/etc/xapi.d/plugins/updater.py", line 55, in lock
            self._raise_busy()
          File "/etc/xapi.d/plugins/updater.py", line 74, in _raise_busy
            raise OperationException('The updater plugin is busy (current operation: {})'.format(op))
        OperationException: The updater plugin is busy (current operation: check_update)
        

        The /var/log/updater-plugin.log is empty.

        rvreugdeR 1 Reply Last reply Reply Quote 0
        • rvreugdeR Offline
          rvreugde @rvreugde
          last edited by rvreugde

          @gthvn1

          I ran the command from xcp-080 (Pool Master) for another pool member (xcp-082).

          [12:24 xcp-080 ~]# xe host-list name-label=xcp-082
          uuid ( RO)                : fae5e2cb-a474-4541-8c30-8a5bc87ef945
                    name-label ( RW): xcp-082
              name-description ( RW): Default install
          

          This is the result:

          [11:57 xcp-080 ~]# xe host-call-plugin host-uuid=fae5e2cb-a474-4541-8c30-8a5bc87ef945 plugin=updater.py fn=check_update
          [{"url": "https://www.xenproject.org", "version": "4.13.5", "name": "xen-libs", "license": "LGPLv2", "changelog": null, "release": "9.45.1.xcpng8.2", "size": 53660, "description": "Xen Hypervisor general libraries"}, {"url": null, "version": "4.19.19", "name": "kernel", "license": "GPLv2", "changelog": null, "release": "7.0.24.1.xcpng8.2", "size": 31000948, "description": "The Linux kernel"}, {"url": null, "version": "1.10.7", "name": "guest-templates-json-data-other", "license": "BSD", "changelog": null, "release": "1.2.xcpng8.2", "size": 13404, "description": "Contains the default other guest templates"}, {"url": "https://curl.se/", "version": "8.6.0", "name": "libcurl", "license": "MIT", "changelog": null, "release": "2.2.xcpng8.2", "size": 283684, "description": "A library for getting files from web servers"}, {"url": null, "version": "1.0.2", "name": "vendor-drivers", "license": "GPLv2", "changelog": null, "release": "1.7.xcpng8.2", "size": 3236, "description": "Vendor drivers"}, {"url": null, "version": "10.1.13.1", "name": "xsconsole", "license": "GPL2", "changelog": null, "release": "2.1.xcpng8.2", "size": 309872, "description": "XCP-ng Host Configuration Console"}, {"url": "http://www.openssl.org/", "version": "1.0.2k", "name": "openssl-perl", "license": "OpenSSL", "changelog": null, "release": "26.2.xcpng8.2", "size": 74148, "description": "Perl scripts provided with OpenSSL"}, {"url": "https://xcp-ng.org", "version": "8.2.0", "name": "xcp-ng-deps", "license": "GPLv2", "changelog": null, "release": "13", "size": 10152, "description": "A meta package pulling all needed dependencies for XCP-ng"}, {"url": "https://github.com/xcp-ng/xcp-ng-release", "version": "8.2.1", "name": "xcp-ng-release-presets", "license": "GPLv2", "changelog": null, "release": "14", "size": 11428, "description": "XCP-ng presets file"}, {"url": "https://github.com/xapi-project/blktap", "version": "3.37.4", "name": "blktap", "license": "BSD", "changelog": null, "release": "4.1.xcpng8.2", "size": 310644, "description": "blktap user space utilities"}, {"url": null, "version": "1.3.17", "name": "xenserver-status-report", "license": "GPLv2+", "changelog": null, "release": "1.xcpng8.2", "size": 33092, "description": "A program that generates status reports for a XenServer host"}, {"url": "https://github.com/facebook/zstd", "version": "1.5.5", "name": "zstd", "license": "BSD and GPLv2", "changelog": null, "release": "1.el7", "size": 459404, "description": "Zstd compression library"}, {"url": "http://www.openssh.com/portable.html", "version": "7.4p1", "name": "openssh", "license": "BSD", "changelog": null, "release": "23.3.1.xcpng8.2", "size": 428792, "description": "An open source implementation of SSH protocol versions 1 and 2"}, {"url": "https://github.com/xapi-project/vhd-tool", "version": "0.43.0", "name": "vhd-tool", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "23.1.xcpng8.2", "size": 3768904, "description": "Command-line tools for manipulating and streaming .vhd format files"}, {"url": "https://github.com/xapi-project/squeezed", "version": "0.27.0", "name": "squeezed", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "23.1.xcpng8.2", "size": 1227604, "description": "Memory ballooning daemon for the xapi toolstack"}, {"url": "https://github.com/xenserver/rrd2csv/", "version": "1.2.6", "name": "rrd2csv", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "20.1.xcpng8.2", "size": 2054068, "description": "Tool for converting Xen API RRDs to CSV"}, {"url": "https://www.sudo.ws", "version": "1.9.15", "name": "sudo", "license": "ISC", "changelog": null, "release": "4.1.xcpng8.2", "size": 1301008, "description": "Allows restricted root access for specified users"}, {"url": "https://github.com/xapi-project/sm", "version": "2.30.8", "name": "sm-rawhba", "license": "LGPL", "changelog": null, "release": "13.2.xcpng8.2", "size": 36932, "description": "rawhba SR type capability"}, {"url": "https://github.com/xapi-project/sm-cli", "version": "0.23.0", "name": "sm-cli", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "66.1.xcpng8.2", "size": 1217100, "description": "CLI for xapi toolstack storage managers"}, {"url": "https://github.com/xapi-project/sm", "version": "2.30.8", "name": "sm", "license": "LGPL", "changelog": null, "release": "13.2.xcpng8.2", "size": 650876, "description": "sm - XCP storage managers"}, {"url": "https://www.xenproject.org", "version": "4.13.5", "name": "xen-tools", "license": "GPLv2 and LGPLv2", "changelog": null, "release": "9.45.1.xcpng8.2", "size": 41712, "description": "Xen Hypervisor general tools"}, {"url": "https://github.com/xapi-project/xapi-storage-script", "version": "0.34.1", "name": "xapi-storage-script", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "21.1.xcpng8.2", "size": 3643732, "description": "Xapi storage script plugin server"}, {"url": "https://www.xenproject.org", "version": "4.13.5", "name": "xen-dom0-libs", "license": "GPLv2 and LGPLv2 and MIT", "changelog": null, "release": "9.45.1.xcpng8.2", "size": 659992, "description": "Xen Hypervisor Domain 0 libraries"}, {"url": "http://www.openssh.com/portable.html", "version": "7.4p1", "name": "openssh-server", "license": "BSD", "changelog": null, "release": "23.3.1.xcpng8.2", "size": 402980, "description": "An open source SSH server daemon"}, {"url": "https://github.com/xapi-project/message-switch", "version": "1.23.2", "name": "message-switch", "license": "ISC", "changelog": null, "release": "22.1.xcpng8.2", "size": 2386580, "description": "A store and forward message switch"}, {"url": "https://github.com/xcp-ng/xcp-ng-xapi-plugins", "version": "1.10.1", "name": "xcp-ng-xapi-plugins", "license": "AGPLv3", "changelog": null, "release": "1.xcpng8.2", "size": 46196, "description": "XAPI additional plugins for XCP-ng"}, {"url": "https://github.com/xapi-project/forkexecd", "version": "1.18.3", "name": "forkexecd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "15.1.xcpng8.2", "size": 1304412, "description": "A subprocess management service"}, {"url": "https://github.com/xapi-project/xenopsd", "version": "0.150.19", "name": "xenopsd-xc", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "8.1.xcpng8.2", "size": 4189872, "description": "Xenopsd using xc"}, {"url": "http://www.openssl.org/", "version": "1.1.1k", "name": "xs-openssl-libs", "license": "OpenSSL and ASL 2.0", "changelog": null, "release": "12.3.xcpng8.2", "size": 1506200, "description": "A general purpose cryptography library with TLS implementation"}, {"url": "https://github.com/xenserver/gpumon", "version": "0.18.0", "name": "gpumon", "license": "ISC", "changelog": null, "release": "23.1.xcpng8.2", "size": 1327416, "description": "RRDD GPU metrics plugin"}, {"url": null, "version": "1.10.7", "name": "guest-templates-json-data-windows", "license": "BSD", "changelog": null, "release": "1.2.xcpng8.2", "size": 15984, "description": "Contains the default Windows guest templates"}, {"url": "https://pagure.io/microcode_ctl", "version": "2.1", "name": "microcode_ctl", "license": "Redistributable, no modification permitted", "changelog": null, "release": "26.xs29.6.xcpng8.2", "size": 7501860, "description": "Tool to transform and deploy CPU microcode update for x86."}, {"url": "http://www.xen.org", "version": "1.249.40", "name": "xapi-tests", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.1.xcpng8.2", "size": 4019016, "description": "Toolstack test programs"}, {"url": "http://www.openssl.org/", "version": "1.0.2k", "name": "openssl", "license": "OpenSSL", "changelog": null, "release": "26.2.xcpng8.2", "size": 505780, "description": "Utilities from the general purpose cryptography library with TLS implementation"}, {"url": "http://www.kernel.org/", "version": "20190314", "name": "linux-firmware", "license": "GPL, GPLv2, GPLv2+, GPLv3, MIT and Redistributable, no modification permitted", "changelog": null, "release": "11.2.xcpng8.2", "size": 41281672, "description": "Firmware files used by the Linux kernel"}, {"url": null, "version": "1.10.7", "name": "guest-templates-json-data-linux", "license": "BSD", "changelog": null, "release": "1.2.xcpng8.2", "size": 21604, "description": "Contains the default Linux guest templates"}, {"url": "http://www.openssh.com/portable.html", "version": "7.4p1", "name": "openssh-clients", "license": "BSD", "changelog": null, "release": "23.3.1.xcpng8.2", "size": 603784, "description": "An open source SSH client applications"}, {"url": "https://github.com/xenserver/xha", "version": "10.3.1", "name": "xha", "license": "GPLv2", "changelog": null, "release": "3.1.xcpng8.2", "size": 91844, "description": "xha - XenServer proprietary HA daemon"}, {"url": "https://github.com/xapi-project/xcp-networkd", "version": "0.56.2", "name": "xcp-networkd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "20.xcpng8.2", "size": 3426224, "description": "Simple host network management service for the xapi toolstack"}, {"url": null, "version": "1.10.7", "name": "guest-templates-json", "license": "BSD", "changelog": null, "release": "1.2.xcpng8.2", "size": 31176, "description": "Creates the default guest templates"}, {"url": "https://github.com/xapi-project/xapi-storage", "version": "11.19.0_sxm2", "name": "xapi-storage", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "22.xcpng8.2", "size": 63340, "description": "Xapi storage interface"}, {"url": "https://github.com/xapi-project/xenopsd", "version": "0.150.19", "name": "xenopsd-cli", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "8.1.xcpng8.2", "size": 1338280, "description": "CLI for xenopsd, the xapi toolstack domain manager"}, {"url": "https://www.xenproject.org", "version": "4.13.5", "name": "xen-hypervisor", "license": "GPLv2", "changelog": null, "release": "9.45.1.xcpng8.2", "size": 2534612, "description": "The Xen Hypervisor"}, {"url": "https://www.xenproject.org", "version": "4.13.5", "name": "xen-dom0-tools", "license": "GPLv2 and LGPLv2 and MIT", "changelog": null, "release": "9.45.1.xcpng8.2", "size": 2563692, "description": "Xen Hypervisor Domain 0 tools"}, {"url": "https://github.com/xapi-project/xapi-nbd", "version": "1.11.0", "name": "xapi-nbd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "22.1.xcpng8.2", "size": 2086492, "description": "NBD server that exposes XenServer disks"}, {"url": "http://www.openssl.org/", "version": "1.0.2k", "name": "openssl-libs", "license": "OpenSSL", "changelog": null, "release": "26.2.xcpng8.2", "size": 1256632, "description": "A general purpose cryptography library with TLS implementation"}, {"url": "https://github.com/xcp-ng/xcp-ng-release", "version": "8.2.1", "name": "xcp-ng-release", "license": "GPLv2", "changelog": null, "release": "14", "size": 106568, "description": "XCP-ng release file"}, {"url": "http://www.xen.org", "version": "1.249.40", "name": "xapi-core", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.1.xcpng8.2", "size": 19172572, "description": "The xapi toolstack"}, {"url": "https://curl.se/", "version": "8.6.0", "name": "curl", "license": "MIT", "changelog": null, "release": "2.2.xcpng8.2", "size": 304800, "description": "A utility for getting files from remote servers (FTP, HTTP, and others)"}, {"url": "https://github.com/xapi-project/varstored-guard", "version": "0.6.2", "name": "varstored-guard", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "20.xcpng8.2", "size": 2340836, "description": "Deprivileged XAPI socket Daemon for EFI variable storage"}, {"url": "https://github.com/xapi-project/xcp-rrdd", "version": "1.33.5", "name": "xcp-rrdd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "3.1.xcpng8.2", "size": 2712836, "description": "Statistics gathering daemon for the xapi toolstack"}, {"url": "https://github.com/xcp-ng/xcp-ng-release", "version": "8.2.1", "name": "xcp-ng-release-config", "license": "GPLv2", "changelog": null, "release": "14", "size": 107020, "description": "XCP-ng configuration"}, {"url": "https://github.com/xapi-project/wsproxy", "version": "1.12.0", "name": "wsproxy", "license": "LGPL-2.0-only WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "24.xcpng8.2", "size": 616644, "description": "Websockets proxy for VNC traffic"}, {"url": "http://www.xen.org", "version": "1.249.40", "name": "xapi-xe", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.1.xcpng8.2", "size": 864380, "description": "The xapi toolstack CLI"}, {"url": "https://github.com/xapi-project/xenopsd", "version": "0.150.19", "name": "xenopsd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "8.1.xcpng8.2", "size": 85088, "description": "Simple VM manager"}, {"url": "https://github.com/xenserver/rrdd-plugins/", "version": "1.10.9", "name": "rrdd-plugins", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "17.1.xcpng8.2", "size": 4024592, "description": "RRDD metrics plugins"}]
          
          1 Reply Last reply Reply Quote 0
          • gthvn1G Offline
            gthvn1 Vates 🪐 XCP-ng Team
            last edited by

            And if you run the command from pool master for pool master you still have an empty list?

            xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
            

            Maybe this command must be run from pool master (I'll be surprised...)?

            rvreugdeR 1 Reply Last reply Reply Quote 0
            • rvreugdeR Offline
              rvreugde @gthvn1
              last edited by rvreugde

              @gthvn1

              Result for both hosts (xcp-082 gives now a busy-error)

              [11:45 xcp-080 ~]# xe host-call-plugin host-uuid=fae5e2cb-a474-4541-8c30-8a5bc87ef945 plugin=updater.py fn=check_update
              Error code: -1
              Error parameters: The updater plugin is busy (current operation: check_update), , Traceback (most recent call last):
                File "/etc/xapi.d/plugins/xcpngutils/__init__.py", line 119, in wrapper
                  return func(*args, **kwds)
                File "/etc/xapi.d/plugins/updater.py", line 95, in decorator
                  with OperationLocker(*pid_args, **pid_kwargs):
                File "/etc/xapi.d/plugins/xcpngutils/filelocker.py", line 55, in __enter__
                  self.lock()
                File "/etc/xapi.d/plugins/updater.py", line 55, in lock
                  self._raise_busy()
                File "/etc/xapi.d/plugins/updater.py", line 74, in _raise_busy
                  raise OperationException('The updater plugin is busy (current operation: {})'.format(op))
              OperationException: The updater plugin is busy (current operation: check_update)
              
              [11:46 xcp-080 ~]# xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
              Error code: -1
              Error parameters: The updater plugin is busy (current operation: check_update), , Traceback (most recent call last):
                File "/etc/xapi.d/plugins/xcpngutils/__init__.py", line 127, in wrapper
                  return func(*args, **kwds)
                File "/etc/xapi.d/plugins/updater.py", line 95, in decorator
                  with OperationLocker(*pid_args, **pid_kwargs):
                File "/etc/xapi.d/plugins/xcpngutils/filelocker.py", line 55, in __enter__
                  self.lock()
                File "/etc/xapi.d/plugins/updater.py", line 55, in lock
                  self._raise_busy()
                File "/etc/xapi.d/plugins/updater.py", line 74, in _raise_busy
                  raise OperationException('The updater plugin is busy (current operation: {})'.format(op))
              OperationException: The updater plugin is busy (current operation: check_update)
              
              1 Reply Last reply Reply Quote 0
              • DanpD Online
                Danp Pro Support Team
                last edited by

                https://docs.xcp-ng.org/troubleshooting/common-problems/#the-updater-plugin-is-busy

                rvreugdeR 1 Reply Last reply Reply Quote 0
                • rvreugdeR Offline
                  rvreugde @Danp
                  last edited by rvreugde

                  @Danp @gthvn1
                  Deleting the lockfile works (had to do it twice). Could it be possible that XOA attempts are also responsible for creating this file?

                  rm -f /var/lib/xcp-ng-xapi-plugins/updater.py.lock
                  

                  Result of the command

                  [12:55 xcp-080 ~]# xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
                  [{"url": null, "version": "4.19.19", "name": "kernel", "license": "GPLv2", "changelog": null, "release": "7.0.24.1.xcpng8.2", "size": 31000948, "description": "The Linux kernel"}, {"url": "https://github.com/xapi-project/sm", "version": "2.30.8", "name": "sm", "license": "LGPL", "changelog": null, "release": "13.2.xcpng8.2", "size": 650876, "description": "sm - XCP storage managers"}, {"url": "https://github.com/xenserver/rrdd-plugins/", "version": "1.10.9", "name": "rrdd-plugins", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "17.1.xcpng8.2", "size": 4024592, "description": "RRDD metrics plugins"}, {"url": null, "version": "1.0.2", "name": "vendor-drivers", "license": "GPLv2", "changelog": null, "release": "1.7.xcpng8.2", "size": 3236, "description": "Vendor drivers"}, {"url": "https://xcp-ng.org", "version": "8.2.0", "name": "xcp-ng-deps", "license": "GPLv2", "changelog": null, "release": "13", "size": 10152, "description": "A meta package pulling all needed dependencies for XCP-ng"}, {"url": "https://github.com/xcp-ng/xcp-ng-release", "version": "8.2.1", "name": "xcp-ng-release-presets", "license": "GPLv2", "changelog": null, "release": "14", "size": 11428, "description": "XCP-ng presets file"}, {"url": "https://github.com/xapi-project/xcp-rrdd", "version": "1.33.5", "name": "xcp-rrdd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "3.1.xcpng8.2", "size": 2712836, "description": "Statistics gathering daemon for the xapi toolstack"}, {"url": "https://github.com/xapi-project/sm-cli", "version": "0.23.0", "name": "sm-cli", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "66.1.xcpng8.2", "size": 1217100, "description": "CLI for xapi toolstack storage managers"}, {"url": "https://github.com/xapi-project/message-switch", "version": "1.23.2", "name": "message-switch", "license": "ISC", "changelog": null, "release": "22.1.xcpng8.2", "size": 2386580, "description": "A store and forward message switch"}, {"url": null, "version": "1.3.17", "name": "xenserver-status-report", "license": "GPLv2+", "changelog": null, "release": "1.xcpng8.2", "size": 33092, "description": "A program that generates status reports for a XenServer host"}, {"url": "https://github.com/xenserver/rrd2csv/", "version": "1.2.6", "name": "rrd2csv", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "20.1.xcpng8.2", "size": 2054068, "description": "Tool for converting Xen API RRDs to CSV"}, {"url": "https://github.com/xapi-project/xcp-networkd", "version": "0.56.2", "name": "xcp-networkd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "20.xcpng8.2", "size": 3426224, "description": "Simple host network management service for the xapi toolstack"}, {"url": "https://github.com/xapi-project/vhd-tool", "version": "0.43.0", "name": "vhd-tool", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "23.1.xcpng8.2", "size": 3768904, "description": "Command-line tools for manipulating and streaming .vhd format files"}, {"url": "http://www.openssh.com/portable.html", "version": "7.4p1", "name": "openssh-server", "license": "BSD", "changelog": null, "release": "23.3.1.xcpng8.2", "size": 402980, "description": "An open source SSH server daemon"}, {"url": "https://github.com/xapi-project/xapi-storage", "version": "11.19.0_sxm2", "name": "xapi-storage", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "22.xcpng8.2", "size": 63340, "description": "Xapi storage interface"}, {"url": "https://github.com/xapi-project/varstored-guard", "version": "0.6.2", "name": "varstored-guard", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "20.xcpng8.2", "size": 2340836, "description": "Deprivileged XAPI socket Daemon for EFI variable storage"}, {"url": "http://www.openssh.com/portable.html", "version": "7.4p1", "name": "openssh", "license": "BSD", "changelog": null, "release": "23.3.1.xcpng8.2", "size": 428792, "description": "An open source implementation of SSH protocol versions 1 and 2"}, {"url": "https://www.sudo.ws", "version": "1.9.15", "name": "sudo", "license": "ISC", "changelog": null, "release": "4.1.xcpng8.2", "size": 1301008, "description": "Allows restricted root access for specified users"}, {"url": "https://github.com/xapi-project/xapi-nbd", "version": "1.11.0", "name": "xapi-nbd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "22.1.xcpng8.2", "size": 2086492, "description": "NBD server that exposes XenServer disks"}, {"url": "http://www.kernel.org/", "version": "20190314", "name": "linux-firmware", "license": "GPL, GPLv2, GPLv2+, GPLv3, MIT and Redistributable, no modification permitted", "changelog": null, "release": "11.2.xcpng8.2", "size": 41281672, "description": "Firmware files used by the Linux kernel"}, {"url": "http://www.openssh.com/portable.html", "version": "7.4p1", "name": "openssh-clients", "license": "BSD", "changelog": null, "release": "23.3.1.xcpng8.2", "size": 603784, "description": "An open source SSH client applications"}, {"url": "https://github.com/xenserver/xha", "version": "10.3.1", "name": "xha", "license": "GPLv2", "changelog": null, "release": "3.1.xcpng8.2", "size": 91844, "description": "xha - XenServer proprietary HA daemon"}, {"url": "https://github.com/xapi-project/xenopsd", "version": "0.150.19", "name": "xenopsd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "8.1.xcpng8.2", "size": 85088, "description": "Simple VM manager"}, {"url": "https://github.com/xcp-ng/xcp-ng-release", "version": "8.2.1", "name": "xcp-ng-release", "license": "GPLv2", "changelog": null, "release": "14", "size": 106568, "description": "XCP-ng release file"}, {"url": "https://github.com/xenserver/gpumon", "version": "0.18.0", "name": "gpumon", "license": "ISC", "changelog": null, "release": "23.1.xcpng8.2", "size": 1327416, "description": "RRDD GPU metrics plugin"}, {"url": "http://www.xen.org", "version": "1.249.40", "name": "xapi-xe", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.1.xcpng8.2", "size": 864380, "description": "The xapi toolstack CLI"}, {"url": "https://github.com/xapi-project/forkexecd", "version": "1.18.3", "name": "forkexecd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "15.1.xcpng8.2", "size": 1304412, "description": "A subprocess management service"}, {"url": "https://github.com/xcp-ng/xcp-ng-release", "version": "8.2.1", "name": "xcp-ng-release-config", "license": "GPLv2", "changelog": null, "release": "14", "size": 107020, "description": "XCP-ng configuration"}, {"url": "https://github.com/xapi-project/xenopsd", "version": "0.150.19", "name": "xenopsd-cli", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "8.1.xcpng8.2", "size": 1338280, "description": "CLI for xenopsd, the xapi toolstack domain manager"}, {"url": "https://github.com/xapi-project/wsproxy", "version": "1.12.0", "name": "wsproxy", "license": "LGPL-2.0-only WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "24.xcpng8.2", "size": 616644, "description": "Websockets proxy for VNC traffic"}, {"url": "https://github.com/xapi-project/squeezed", "version": "0.27.0", "name": "squeezed", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "23.1.xcpng8.2", "size": 1227604, "description": "Memory ballooning daemon for the xapi toolstack"}, {"url": "https://github.com/xapi-project/xenopsd", "version": "0.150.19", "name": "xenopsd-xc", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "8.1.xcpng8.2", "size": 4189872, "description": "Xenopsd using xc"}, {"url": "https://github.com/xapi-project/sm", "version": "2.30.8", "name": "sm-rawhba", "license": "LGPL", "changelog": null, "release": "13.2.xcpng8.2", "size": 36932, "description": "rawhba SR type capability"}, {"url": "http://www.xen.org", "version": "1.249.40", "name": "xapi-tests", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.1.xcpng8.2", "size": 4019016, "description": "Toolstack test programs"}, {"url": "http://www.xen.org", "version": "1.249.40", "name": "xapi-core", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.1.xcpng8.2", "size": 19172572, "description": "The xapi toolstack"}, {"url": "https://github.com/xapi-project/xapi-storage-script", "version": "0.34.1", "name": "xapi-storage-script", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "21.1.xcpng8.2", "size": 3643732, "description": "Xapi storage script plugin server"}]
                  

                  But after the command, the file is not deleted automatically.

                  [13:50 xcp-080 ~]# ls -alh /var/lib/xcp-ng-xapi-plugins/
                  total 12K
                  drwxr-xr-x  2 root root 4,0K Feb 10 12:55 .
                  drwxr-xr-x 36 root root 4,0K Nov 26 19:34 ..
                  -rw-r--r--  1 root root   13 Feb 10 13:50 updater.py.lock
                  
                  1 Reply Last reply Reply Quote 0
                  • gthvn1G Offline
                    gthvn1 Vates 🪐 XCP-ng Team
                    last edited by gthvn1

                    In fact on my testing host (xcp-ng 8.3) the file is also there. So it looks like it is normal to not delete it. Can you run the command several times? Because on my host even if the file is not deleted I can run the command several times. So I guess that sometimes a process still holds the file and we need to delete it but most of the time the file is just closed and it works.
                    EDIT: Oh but in fact it looks like by default the update is run by XO so you will see the file that is updated (time is modified each minute on my host). But I'm discovering this plugin and I'm not sure how it is used...

                    rvreugdeR 1 Reply Last reply Reply Quote 0
                    • rvreugdeR Offline
                      rvreugde @gthvn1
                      last edited by

                      @gthvn1
                      FYI: After deleting the file the last time, it reappeared, without having invoked the host-call-plugin command.

                      13:57 xcp-080 ~]# ls -al /var/lib/xcp-ng-xapi-plugins/
                      total 12
                      drwxr-xr-x  2 root root 4096 Feb 10 13:57 .
                      drwxr-xr-x 36 root root 4096 Nov 26 19:34 ..
                      -rw-r--r--  1 root root   13 Feb 10 13:57 updater.py.lock
                      

                      Invoking the command, results every time in:

                      [14:06 xcp-080 ~]# xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
                      Error code: -1
                      Error parameters: The updater plugin is busy (current operation: check_update), , Traceback (most recent call last):
                        File "/etc/xapi.d/plugins/xcpngutils/__init__.py", line 127, in wrapper
                          return func(*args, **kwds)
                        File "/etc/xapi.d/plugins/updater.py", line 95, in decorator
                          with OperationLocker(*pid_args, **pid_kwargs):
                        File "/etc/xapi.d/plugins/xcpngutils/filelocker.py", line 55, in __enter__
                          self.lock()
                        File "/etc/xapi.d/plugins/updater.py", line 55, in lock
                          self._raise_busy()
                        File "/etc/xapi.d/plugins/updater.py", line 74, in _raise_busy
                          raise OperationException('The updater plugin is busy (current operation: {})'.format(op))
                      OperationException: The updater plugin is busy (current operation: check_update)
                      
                      [14:07 xcp-080 ~]# xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
                      Error code: -1
                      Error parameters: The updater plugin is busy (current operation: check_update), , Traceback (most recent call last):
                        File "/etc/xapi.d/plugins/xcpngutils/__init__.py", line 127, in wrapper
                          return func(*args, **kwds)
                        File "/etc/xapi.d/plugins/updater.py", line 95, in decorator
                          with OperationLocker(*pid_args, **pid_kwargs):
                        File "/etc/xapi.d/plugins/xcpngutils/filelocker.py", line 55, in __enter__
                          self.lock()
                        File "/etc/xapi.d/plugins/updater.py", line 55, in lock
                          self._raise_busy()
                        File "/etc/xapi.d/plugins/updater.py", line 74, in _raise_busy
                          raise OperationException('The updater plugin is busy (current operation: {})'.format(op))
                      OperationException: The updater plugin is busy (current operation: check_update)
                      
                      [14:10 xcp-080 ~]# xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
                      Error code: -1
                      Error parameters: The updater plugin is busy (current operation: check_update), , Traceback (most recent call last):
                        File "/etc/xapi.d/plugins/xcpngutils/__init__.py", line 127, in wrapper
                          return func(*args, **kwds)
                        File "/etc/xapi.d/plugins/updater.py", line 95, in decorator
                          with OperationLocker(*pid_args, **pid_kwargs):
                        File "/etc/xapi.d/plugins/xcpngutils/filelocker.py", line 55, in __enter__
                          self.lock()
                        File "/etc/xapi.d/plugins/updater.py", line 55, in lock
                          self._raise_busy()
                        File "/etc/xapi.d/plugins/updater.py", line 74, in _raise_busy
                          raise OperationException('The updater plugin is busy (current operation: {})'.format(op))
                      OperationException: The updater plugin is busy (current operation: check_update)
                      
                      [14:10 xcp-080 ~]# 
                      [14:11 xcp-080 ~]# xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
                      Error code: -1
                      Error parameters: The updater plugin is busy (current operation: check_update), , Traceback (most recent call last):
                        File "/etc/xapi.d/plugins/xcpngutils/__init__.py", line 127, in wrapper
                          return func(*args, **kwds)
                        File "/etc/xapi.d/plugins/updater.py", line 95, in decorator
                          with OperationLocker(*pid_args, **pid_kwargs):
                        File "/etc/xapi.d/plugins/xcpngutils/filelocker.py", line 55, in __enter__
                          self.lock()
                        File "/etc/xapi.d/plugins/updater.py", line 55, in lock
                          self._raise_busy()
                        File "/etc/xapi.d/plugins/updater.py", line 74, in _raise_busy
                          raise OperationException('The updater plugin is busy (current operation: {})'.format(op))
                      OperationException: The updater plugin is busy (current operation: check_update)
                      
                      [14:11 xcp-080 ~]# xe host-call-plugin host-uuid=20cacce5-ffac-4ace-ac7c-e48f4e6dfc8e plugin=updater.py fn=check_update
                      Error code: -1
                      Error parameters: The updater plugin is busy (current operation: check_update), , Traceback (most recent call last):
                        File "/etc/xapi.d/plugins/xcpngutils/__init__.py", line 127, in wrapper
                          return func(*args, **kwds)
                        File "/etc/xapi.d/plugins/updater.py", line 95, in decorator
                          with OperationLocker(*pid_args, **pid_kwargs):
                        File "/etc/xapi.d/plugins/xcpngutils/filelocker.py", line 55, in __enter__
                          self.lock()
                        File "/etc/xapi.d/plugins/updater.py", line 55, in lock
                          self._raise_busy()
                        File "/etc/xapi.d/plugins/updater.py", line 74, in _raise_busy
                          raise OperationException('The updater plugin is busy (current operation: {})'.format(op))
                      OperationException: The updater plugin is busy (current operation: check_update)
                      
                      rvreugdeR 1 Reply Last reply Reply Quote 0
                      • rvreugdeR Offline
                        rvreugde @rvreugde
                        last edited by rvreugde

                        @gthvn1
                        Following process is keeping the file opne (not the manual command). Is it XOA?

                        14:18 xcp-080 ~]# lsof -t /var/lib/xcp-ng-xapi-plugins/updater.py.lock
                        15894
                        
                        [14:19 xcp-080 ~]# ps -ef | grep 15894
                        root     15894 15893  0 14:15 ?        00:00:00 python /etc/xapi.d/plugins/updater.py <methodCall><methodName>check_update</methodName><params><param><value>OpaqueRef:cfc61ae4-5548-467b-ba63-e06d2572405b</value></param><param><value><struct/></value></param></params></methodCall>
                        
                        gthvn1G 1 Reply Last reply Reply Quote 0
                        • gthvn1G Offline
                          gthvn1 Vates 🪐 XCP-ng Team @rvreugde
                          last edited by

                          @rvreugde it is really strange... I only have one host on my setup that I'm using for testing and I don't see this behavior... But I see almost every minutes a message in my /var/log/xensource.log saying:
                          Feb 10 14:55:58 xcp-gthvn1 xapi: [debug||518 HTTPS 10.1.0.100->:::80|host.call_plugin R:dd18d954e8e1|audit] Host.call_plugin host = 'd7f4a210-369a-410e-9c73-4acb59fe5e7c (xcp-gthvn1)'; plugin = 'updater.py' ; fn = 'check_update' args = [ 'hidden' ]
                          I don't know who is calling this. But for me the file is always released properly. No process that locks the file... Not sure about what to test next. Is there someone on the forum with the same issue?

                          rvreugdeR 1 Reply Last reply Reply Quote 0
                          • rvreugdeR Offline
                            rvreugde @gthvn1
                            last edited by rvreugde

                            @gthvn1

                            It seems to be working on another pool, but, how can we get this working in XOA?

                            XOA:
                            f564e171-4744-4faa-9b0a-b6e969824872-image.png

                            CLI:

                            [07:38 xcp-102 ~]# xe host-call-plugin host-uuid=a0d83751-159a-4f0b-8618-4984d543f0c8 plugin=updater.py fn=check_update
                            [{"url": "http://www.xen.org", "version": "24.19.2", "name": "xcp-networkd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 4647492, "description": "Simple host network management service for the xapi toolstack"}, {"url": "https://github.com/xapi-project/sm", "version": "3.2.3", "name": "sm-fairlock", "license": "LGPL", "changelog": null, "release": "1.15.xcpng8.3", "size": 42552, "description": "Fair locking subsystem"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "forkexecd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 2361328, "description": "A subprocess management service"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "sm-cli", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 1787364, "description": "CLI for xapi toolstack storage managers"}, {"url": null, "version": "4.19.19", "name": "kernel", "license": "GPLv2", "changelog": null, "release": "8.0.37.1.xcpng8.3", "size": 30911672, "description": "The Linux kernel"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xapi-storage-script", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 4589220, "description": "Xapi storage script plugin server"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xapi-xe", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 1369152, "description": "The xapi toolstack CLI"}, {"url": "https://www.jedsoft.org/slang/", "version": "2.3.2", "name": "slang", "license": "GPLv2+", "changelog": null, "release": "11.xcpng8.3", "size": 367944, "description": "Shared library for the S-Lang extension language"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xenopsd-xc", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 5163268, "description": "Xenopsd using xc"}, {"url": "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git", "version": "20240503", "name": "amd-microcode", "license": "Redistributable", "changelog": null, "release": "1.1.xcpng8.3", "size": 96912, "description": "AMD Microcode"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xapi-rrd2csv", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 2924652, "description": "A tool to output RRD values in CSV format"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xenopsd-cli", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 1879780, "description": "CLI for xenopsd, the xapi toolstack domain manager"}, {"url": "https://github.com/xapi-project/blktap", "version": "3.54.9", "name": "blktap", "license": "BSD", "changelog": null, "release": "1.2.xcpng8.3", "size": 312948, "description": "blktap user space utilities"}, {"url": null, "version": "2.0.15", "name": "kexec-tools", "license": "GPL", "changelog": null, "release": "20.1.xcpng8.3", "size": 69300, "description": "kexec/kdump userspace tools"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "wsproxy", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 967004, "description": "Websockets proxy for VNC traffic"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "vhd-tool", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 4875652, "description": "Command-line tools for manipulating and streaming .vhd format files"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xapi-nbd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 2977480, "description": "NBD server that exposes XenServer disks"}, {"url": "http://www.gnu.org/software/grub/", "version": "2.06", "name": "grub-tools", "license": "GPLv3+", "changelog": null, "release": "4.0.2.1.xcpng8.3", "size": 2318216, "description": "Support tools for GRUB."}, {"url": "https://github.com/vatesfr/xen-orchestra", "version": "0.6.0", "name": "xo-lite", "license": "AGPL3-only", "changelog": null, "release": "1.xcpng8.3", "size": 941976, "description": "Xen Orchestra Lite"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xapi-core", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 27803496, "description": "The xapi toolstack"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xenopsd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 1378804, "description": "Simple VM manager"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "rrdd-plugins", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 4977012, "description": "RRDD metrics plugin"}, {"url": null, "version": "5.10.226", "name": "intel-igc", "license": "GPL", "changelog": null, "release": "1.xcpng8.3", "size": 64356, "description": "Intel igc device drivers"}, {"url": "https://xcp-ng.org", "version": "8.3", "name": "xcp-ng-deps", "license": "GPLv2", "changelog": null, "release": "13", "size": 11808, "description": "A meta package pulling all needed dependencies for XCP-ng"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xcp-rrdd", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 3640260, "description": "Statistics gathering daemon for the xapi toolstack"}, {"url": "http://www.gnu.org/software/grub/", "version": "2.06", "name": "grub-efi", "license": "GPLv3+", "changelog": null, "release": "4.0.2.1.xcpng8.3", "size": 4224468, "description": "GRUB for EFI systems."}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "python2-xapi-storage", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 281168, "description": "Xapi storage interface (Python2)"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "squeezed", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 1801864, "description": "Memory ballooning daemon for the xapi toolstack"}, {"url": "http://www.gnu.org/software/grub/", "version": "2.06", "name": "grub", "license": "GPLv3+", "changelog": null, "release": "4.0.2.1.xcpng8.3", "size": 1054832, "description": "Bootloader with support for Linux, Multiboot and more"}, {"url": "https://github.com/xapi-project/sm", "version": "3.2.3", "name": "sm", "license": "LGPL", "changelog": null, "release": "1.15.xcpng8.3", "size": 364880, "description": "sm - XCP storage managers"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "xapi-tests", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 6841292, "description": "Toolstack test programs"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "message-switch", "license": "ISC", "changelog": null, "release": "1.9.xcpng8.3", "size": 4443828, "description": "A store and forward message switch"}, {"url": "http://www.xen.org", "version": "24.19.2", "name": "varstored-guard", "license": "LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception", "changelog": null, "release": "1.9.xcpng8.3", "size": 4843928, "description": "Deprivileged XAPI socket Daemon for EFI variable storage"}]
                            
                            1 Reply Last reply Reply Quote 0
                            • gthvn1G Offline
                              gthvn1 Vates 🪐 XCP-ng Team
                              last edited by

                              @olivierlambert do you know who on XOA side can have a look?

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post