<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tag-Based Automation: Manage VM CPU Priority via assigned tag.]]></title><description><![CDATA[<h4>UPDATE: Tag-Based Automation Plugin is now available</h4>
<p dir="auto">####(<a href="https://xcp-ng.org/forum/topic/12265/tag-based-automation-plugin-tag-based-vm-performance-permission-management-via-assigned-tag-s">click here for new thread</a>)</p>
<p dir="auto">===================================</p>
<h4>IMPORTANT: THE FOLLOWING IS OLD/LEGACY CODE</h4>
<h5>(Use the link above link for the new XO plugin instead)</h5>
<hr />
<h4>UPDATE: Tag-Based-Automation-Bundle v1.0</h4>
<p dir="auto"><strong>WHAT'S NEW</strong>: This update introduces the "Tag-Based-Automation" bundle -- a modular, install.sh-based package that replaces the original standalone <a href="http://set-performance.sh" target="_blank" rel="noopener noreferrer nofollow ugc">set-performance.sh</a>  script.</p>
<p dir="auto">This bundle is the foundation for the upcoming "Tag-Based-Automation" plugin for Xen Orchestra (if/when all that gets worked out with Vates).<br />
For now it is a production-ready shell-based bundle that installs cleanly on all XCP-ng pool hosts, and will only run on the current Pool Master.</p>
<p dir="auto">The goal is simple: Metadata (Tags) should drive Infrastructure State.</p>
<p dir="auto"><strong>STANDARD DISCLAIMER HERE</strong></p>
<p dir="auto">This software is provided "AS-IS" without any express or implied warranty. While these scripts are being used in a production environment managing VMs, you should always review the code and test it in a non-production environment before full deployment.<br />
Note: The scripts are designed to ONLY take action on VMs with specific tags assigned -- untagged VMs are never touched.<br />
That said, as always - your mileage may vary...</p>
<h4>WHAT IS IN THE BUNDLE?</h4>
<pre><code>[ACTIVE]      set-performance.sh
              Automated enforcement of CPU weights and I/O priorities
              based on assigned VM tags. Runs via cron. Prevents
              configuration drift across your entire pool.

[COMING SOON] Manage Tags via CSV
              Bulk VM metadata management using a CSV as Source of
              Truth workflow. Export your VM list, edit tags in Excel,
              sync back to the pool in one command.

[COMING SOON] set-permissions.sh
              Automated management of Xen Orchestra Resource Sets and
              user permissions -- driven entirely by your existing VM
              tags. No manual Resource Set updates ever again.
</code></pre>
<h4>CHANGE-LOG</h4>
<pre><code>v1.0 - 2026-05-16 (Bundle Release)
  - Modular Architecture: Repackaged as a modular bundle for easier
    updates and future plugin development
  - One-Shot Installer: install.sh handles directory creation,
    permissions, and legacy standalone cleanup detection
  - Orchestrator: main.sh manages module execution and cron
    scheduling via symlink -- no manual crontab editing required
  - Dual Config System: default.conf (never edit) + custom.conf
    (your pool settings) -- your settings are preserved on re-install
  - NFS Integration: Optional log aggregation for centralized
    reporting across multiple pools
  - Master Host Check: Robust UUID comparison ensures script only
    runs on the Pool Master -- safe to deploy on all hosts
  - Foundation for upcoming Xen Orchestra plugin

v3.2 - 2026-05-14 (Final Standalone Release)
  - Fixed Master Host Check: Replaced invalid xe host-is-master
    with correct UUID comparison method

v3.1 - 2026-05-14
  - Config Separation: Moved to conf.d/ override pattern
  - Split into default.conf and custom.conf

v3.0 - 2026-05-14
  - TAG_SUFFIX support for multi-pool deployments
  - Auto-scheduling via initialize -- no manual crontab needed

v2.0 - 2026-05-14
  - External configuration file
  - Master Host Check (first attempt)
  - Main log + summary log
  - Per-tier summary counters

v1.0 - Initial Release
  - Tag-based CPU weight and I/O priority enforcement
  - Four tiers: 0-core, 1-high, 2-normal, 3-low
  - Network QoS cap (100Mbps) for 3-low tagged VMs
</code></pre>
<h4>CLEANUP: REMOVING THE OLD STANDALONE VERSION (If installed)</h4>
<pre><code>If you installed the original standalone script, run these first:

  rm -f /usr/local/bin/set-performance.sh
  rm -rf /usr/local/etc/set-performance.conf.d
  rm -f /etc/cron.hourly/set-performance
  rm -f /etc/cron.daily/set-performance
  rm -f /etc/cron.weekly/set-performance
  rm -f /etc/cron.monthly/set-performance
</code></pre>
<h4>DOWNLOAD (Recommended)</h4>
<p dir="auto">Download the v1.0 bundle directly from GitHub:<br />
<a href="https://github.com/johnezero/xo-tag-automation/releases/download/v1.0/tag-automation-v1.0.tar.gz" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/johnezero/xo-tag-automation/releases/download/v1.0/tag-automation-v1.0.tar.gz</a></p>
<h4>INSTALLING THE BUNDLE</h4>
<p dir="auto"><strong>STEP 1</strong>: Download and extract on your Pool Master</p>
<p dir="auto">wget <a href="https://github.com/johnezero/xo-tag-automation/releases/download/v1.0/tag-automation-v1.0.tar.gz" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/johnezero/xo-tag-automation/releases/download/v1.0/tag-automation-v1.0.tar.gz</a><br />
tar -xzvf tag-automation-v1.0.tar.gz<br />
cd tag-automation-bundle/</p>
<p dir="auto"><strong>-- OR --</strong></p>
<p dir="auto">Download to your workstation and upload via SCP or WinSCP:<br />
scp tag-automation-v1.0.tar.gz root@your-pool-master:/root/<br />
Then on your Pool Master:<br />
tar -xzvf tag-automation-v1.0.tar.gz<br />
cd tag-automation-bundle/</p>
<p dir="auto"><strong><strong><strong>STEP 2</strong></strong></strong>: Run the installer<br />
chmod +x <a href="http://install.sh" target="_blank" rel="noopener noreferrer nofollow ugc">install.sh</a><br />
./install.sh</p>
<p dir="auto">The installer will:<br />
- Detect and warn about any legacy standalone components<br />
- Create all required directories<br />
- Deploy all scripts and config files<br />
- Preserve any existing custom.conf on re-install<br />
- Verify your NFS code path if applicable</p>
<p dir="auto"><strong>STEP 3</strong>: Edit your pool-specific config:<br />
*** ACTION REQUIRED -- DO NOT SKIP ***<br />
vi /usr/local/etc/tag-automation/conf.d/custom.conf</p>
<p dir="auto">Set your TAG_SUFFIX to match your pool:<br />
POOL-1 --&gt; TAG_SUFFIX="-1"<br />
POOL-2 --&gt; TAG_SUFFIX="-2"<br />
Single pool --&gt; TAG_SUFFIX=""</p>
<p dir="auto"><strong>STEP 4</strong>: Initialize the bundle (REQUIRED):<br />
*** ACTION REQUIRED -- DO NOT SKIP ***<br />
/usr/local/bin/tag-automation/main.sh initialize</p>
<p dir="auto">Expected output:<br />
[OK] Symlink created : /etc/cron.hourly/tag-automation<br />
[OK] Schedule        : hourly<br />
[OK] Tag suffix      : (none)<br />
[OK] Active tags     : 0-core, 1-high, 2-normal, 3-low<br />
[OK] Performance     : true<br />
[--] Permissions     : Coming Soon</p>
<p dir="auto">*** Bundle will NOT run until initialize is completed ***</p>
<p dir="auto"><strong>STEP 5</strong>: Verify it is working<br />
/usr/local/bin/tag-automation/main.sh<br />
tail /var/log/tag-automation.log<br />
tail /var/log/tag-automation-summary.log</p>
<h4>THE FILES (i.e. The hard way)</h4>
<p dir="auto"><strong>1-of-5:</strong> <a href="http://install.sh" target="_blank" rel="noopener noreferrer nofollow ugc">install.sh</a><br />
Note: The install bundle can e located anywhere (i.e. /root/tag-automation-bundle)</p>
<pre><code>--------------------------------------------

#!/bin/bash

# ============================================
# Tag-Based-Automation -- install.sh (v1.1)
# One-shot installer for the full bundle
# ============================================

BUNDLE_DIR="$(dirname "$0")"
INSTALL_BIN="/usr/local/bin"
INSTALL_CONF="/usr/local/etc"

echo ""
echo "Tag-Based-Automation -- Installer v1.1"
echo "============================================"
echo ""

if [ "$(id -u)" != "0" ]; then
    echo "Error: This installer must be run as root."
    exit 1
fi

if ! command -v xe &amp;&gt;/dev/null; then
    echo "Error: xe command not found."
    echo "This installer must be run on an XCP-ng Pool Master."
    exit 1
fi

echo "Checking for legacy standalone components..."
LEGACY_FOUND=false

[ -f "/usr/local/bin/set-performance.sh" ] &amp;&amp; \
    echo "  [!] Legacy script found: /usr/local/bin/set-performance.sh" &amp;&amp; \
    LEGACY_FOUND=true

[ -d "/usr/local/etc/set-performance.conf.d" ] &amp;&amp; \
    echo "  [!] Legacy config dir found: /usr/local/etc/set-performance.conf.d" &amp;&amp; \
    LEGACY_FOUND=true

crontab -l 2&gt;/dev/null | grep -q "set-performance.sh" &amp;&amp; \
    echo "  [!] Legacy crontab entry detected." &amp;&amp; \
    LEGACY_FOUND=true

LEGACY_CRONS=$(find /etc/cron.hourly /etc/cron.daily /etc/cron.weekly \
    /etc/cron.monthly -name "set-performance" 2&gt;/dev/null)
if [ -n "$LEGACY_CRONS" ]; then
    echo "  [!] Legacy cron symlinks detected:"
    echo "$LEGACY_CRONS" | sed 's/^/      - /'
    LEGACY_FOUND=true
fi

if [ "$LEGACY_FOUND" = true ]; then
    echo ""
    echo "-----------------------------------------------------------------------"
    echo "CAUTION: Legacy standalone components detected."
    echo "Please remove them before proceeding:"
    echo ""
    echo "  rm -f /usr/local/bin/set-performance.sh"
    echo "  rm -rf /usr/local/etc/set-performance.conf.d"
    echo "  rm -f /etc/cron.hourly/set-performance"
    echo "  rm -f /etc/cron.daily/set-performance"
    echo "  rm -f /etc/cron.weekly/set-performance"
    echo "  rm -f /etc/cron.monthly/set-performance"
    echo "-----------------------------------------------------------------------"
    echo ""
    read -p "Abort to clean up manually? (Y/n): " choice
    case "$choice" in
      n|N ) echo "Proceeding with caution -- watch for conflicts!"; echo "" ;;
      * )   echo "Installation aborted. Clean up and re-run install.sh."; exit 1 ;;
    esac
else
    echo "[OK] No legacy components found -- clean install!"
    echo ""
fi

echo "Creating directory structure..."
mkdir -p "$INSTALL_BIN/tag-automation/modules"
mkdir -p "$INSTALL_CONF/tag-automation/conf.d"
echo "[OK] Directories created"

echo "Installing main.sh..."
cp "$BUNDLE_DIR/main.sh" "$INSTALL_BIN/tag-automation/main.sh"
chmod +x "$INSTALL_BIN/tag-automation/main.sh"
echo "[OK] main.sh installed"

echo "Installing modules..."
cp "$BUNDLE_DIR/modules/set-performance.sh" \
   "$INSTALL_BIN/tag-automation/modules/set-performance.sh"
chmod +x "$INSTALL_BIN/tag-automation/modules/set-performance.sh"
echo "[OK] set-performance.sh installed"
echo "[--] set-permissions.sh -- Coming Soon (not installed)"

echo "Installing configuration files..."
cp "$BUNDLE_DIR/conf.d/default.conf" \
   "$INSTALL_CONF/tag-automation/conf.d/default.conf"
echo "[OK] default.conf installed"

if [ ! -f "$INSTALL_CONF/tag-automation/conf.d/custom.conf" ]; then
    cp "$BUNDLE_DIR/conf.d/custom.conf" \
       "$INSTALL_CONF/tag-automation/conf.d/custom.conf"
    echo "[OK] custom.conf installed (first time)"
else
    echo "[OK] custom.conf already exists -- skipping (your settings preserved)"
fi

NFS_CODE_PATH="/mnt/v0/code/tag-automation"
if [ -d "$NFS_CODE_PATH" ]; then
    mkdir -p "$NFS_CODE_PATH/logs"
    echo "[OK] NFS code path verified : $NFS_CODE_PATH"
else
    echo "[--] NFS code path not found: $NFS_CODE_PATH"
    echo "     mkdir -p $NFS_CODE_PATH/logs"
fi

echo ""
echo "============================================"
echo "  *** ACTION REQUIRED -- DO NOT SKIP ***"
echo "============================================"
echo ""
echo "  STEP 1: Edit your pool-specific config:"
echo "    vi $INSTALL_CONF/tag-automation/conf.d/custom.conf"
echo ""
echo "    Set your TAG_SUFFIX to match your pool:"
echo "      POOL-1 --&gt; TAG_SUFFIX=\"-1\""
echo "      POOL-2 --&gt; TAG_SUFFIX=\"-2\""
echo "      Single pool --&gt; TAG_SUFFIX=\"\""
echo ""
echo "  STEP 2: Initialize the bundle (REQUIRED):"
echo "    /usr/local/bin/tag-automation/main.sh initialize"
echo ""
echo "  STEP 3: Verify it is working:"
echo "    /usr/local/bin/tag-automation/main.sh"
echo "    tail /var/log/tag-automation.log"
echo ""
echo "  *** Bundle will NOT run until initialize is completed ***"
echo "============================================"
</code></pre>
<p dir="auto"><strong>2-of-5</strong>: <a href="http://main.sh" target="_blank" rel="noopener noreferrer nofollow ugc">main.sh</a></p>
<pre><code>#!/bin/bash

# ============================================
# Tag-Based-Automation -- main.sh (v1.0)
# Orchestrator: loads config, runs modules
# ============================================

CONF_DIR="/usr/local/etc/tag-automation/conf.d"
DEFAULT_CONF="$CONF_DIR/default.conf"
CUSTOM_CONF="$CONF_DIR/custom.conf"
SCRIPT_PATH="/usr/local/bin/tag-automation/main.sh"

if [ -f "$DEFAULT_CONF" ]; then
    source "$DEFAULT_CONF"
else
    echo "Error: default.conf not found at $DEFAULT_CONF"
    exit 1
fi
[ -f "$CUSTOM_CONF" ] &amp;&amp; source "$CUSTOM_CONF"

CORE_TAG="${CORE_BASE}${TAG_SUFFIX}"
HIGH_TAG="${HIGH_BASE}${TAG_SUFFIX}"
NORMAL_TAG="${NORMAL_BASE}${TAG_SUFFIX}"
LOW_TAG="${LOW_BASE}${TAG_SUFFIX}"

initialize_plugin() {
    echo ""
    echo "Tag-Based-Automation -- Initialization"
    echo "============================================"

    if [ ! -d "$CONF_DIR" ]; then
        echo "Error: Config directory not found: $CONF_DIR"
        exit 1
    fi

    if [ ! -f "$DEFAULT_CONF" ]; then
        echo "Error: default.conf not found."
        exit 1
    fi

    [ ! -f "$CUSTOM_CONF" ] &amp;&amp; \
        echo "Warning: custom.conf not found. Using defaults only."

    TARGET_DIR="/etc/cron.${SCHEDULE}"
    SYMLINK_PATH="${TARGET_DIR}/tag-automation"

    if [ ! -d "$TARGET_DIR" ]; then
        echo "Error: Cron directory not found: $TARGET_DIR"
        echo "Valid SCHEDULE options: hourly, daily, weekly, monthly"
        exit 1
    fi

    for interval in hourly daily weekly monthly; do
        rm -f "/etc/cron.${interval}/tag-automation"
    done

    ln -sf "$SCRIPT_PATH" "$SYMLINK_PATH"

    if [ -L "$SYMLINK_PATH" ]; then
        echo "[OK] Symlink created : $SYMLINK_PATH"
        echo "[OK] Schedule        : $SCHEDULE"
        echo "[OK] Tag suffix      : ${TAG_SUFFIX:-(none)}"
        echo "[OK] Active tags     : $CORE_TAG, $HIGH_TAG, $NORMAL_TAG, $LOW_TAG"
        echo "[OK] Performance     : ${ENABLE_PERFORMANCE:-true}"
        echo "[--] Permissions     : Coming Soon"
        echo ""
        echo "Initialization complete. Bundle will run $SCHEDULE via cron."
    else
        echo "Error: Failed to create symlink."
        exit 1
    fi
}

[ "$1" == "initialize" ] &amp;&amp; initialize_plugin &amp;&amp; exit 0

# --- MASTER HOST CHECK ---
POOL_MASTER=$(xe pool-list params=master --minimal)
LOCAL_HOST=$(xe host-list name-label=$(hostname) --minimal)
[ "$POOL_MASTER" != "$LOCAL_HOST" ] &amp;&amp; exit 0

exec &gt;&gt; "$MAIN_LOG" 2&gt;&amp;1
echo "--- Tag-Automation Starting: $(date) ---"
echo "    Tags: $CORE_TAG | $HIGH_TAG | $NORMAL_TAG | $LOW_TAG"

if [ "${ENABLE_PERFORMANCE:-true}" == "true" ]; then
    echo "--- Running set-performance module ---"
    bash /usr/local/bin/tag-automation/modules/set-performance.sh
fi

# --- set-permissions MODULE (COMING SOON) ---
# if [ "${ENABLE_PERMISSIONS:-false}" == "true" ]; then
#     echo "--- Running set-permissions module ---"
#     bash /usr/local/bin/tag-automation/modules/set-permissions.sh
# fi

# --- NFS LOG PUSH (graceful -- no auto-remount) ---
NFS_CODE_PATH="/mnt/v0/code/tag-automation"
if mountpoint -q "/mnt/v0" &amp;&amp; [ -d "$NFS_CODE_PATH" ]; then
    cp "$SUMMARY_LOG" "$NFS_CODE_PATH/logs/" 2&gt;/dev/null
    echo "[OK] Logs pushed to NFS"
else
    echo "[--] NFS not available -- skipping log push"
fi

echo "--- Tag-Automation Complete: $(date) ---"
echo "$(date '+%Y-%m-%d %H:%M:%S') $(hostname) Suffix:${TAG_SUFFIX:-(none)} Performance:${ENABLE_PERFORMANCE:-true}" &gt;&gt; "$SUMMARY_LOG"
</code></pre>
<p dir="auto"><strong>3-of-5</strong>: modules/set-performance.sh</p>
<pre><code>#!/bin/bash

# ============================================
# Tag-Based-Automation Module: set-performance.sh (v3.2)
# Called by main.sh -- inherits all variables
# ============================================

count_0=0
count_1=0
count_2=0
count_3=0

echo "--- Starting Performance Sync: $(date) ---"
echo "    Tags: $CORE_TAG | $HIGH_TAG | $NORMAL_TAG | $LOW_TAG"

echo "=== Applying $CORE_TAG (Weight: $CORE_WEIGHT, Pri: $CORE_IO_PRI) ==="
for uuid in $(xe vm-list tags:contains="$CORE_TAG" --minimal | tr ',' '\n'); do
    [ -z "$uuid" ] &amp;&amp; continue
    xe vm-param-set uuid=$uuid VCPUs-params:weight=$CORE_WEIGHT \
        other-config:sched-pri=$CORE_IO_PRI
    echo "  [OK] CORE applied: $uuid"
    ((count_0++))
done

echo "=== Applying $HIGH_TAG (Weight: $HIGH_WEIGHT, Pri: $HIGH_IO_PRI) ==="
for uuid in $(xe vm-list tags:contains="$HIGH_TAG" --minimal | tr ',' '\n'); do
    [ -z "$uuid" ] &amp;&amp; continue
    xe vm-param-set uuid=$uuid VCPUs-params:weight=$HIGH_WEIGHT \
        other-config:sched-pri=$HIGH_IO_PRI
    echo "  [OK] HIGH applied: $uuid"
    ((count_1++))
done

echo "=== Applying $NORMAL_TAG (Weight: $NORMAL_WEIGHT, Pri: $NORMAL_IO_PRI) ==="
for uuid in $(xe vm-list tags:contains="$NORMAL_TAG" --minimal | tr ',' '\n'); do
    [ -z "$uuid" ] &amp;&amp; continue
    xe vm-param-set uuid=$uuid VCPUs-params:weight=$NORMAL_WEIGHT \
        other-config:sched-pri=$NORMAL_IO_PRI
    echo "  [OK] NORMAL applied: $uuid"
    ((count_2++))
done

echo "=== Applying $LOW_TAG (Weight: $LOW_WEIGHT, Pri: $LOW_IO_PRI) ==="
for uuid in $(xe vm-list tags:contains="$LOW_TAG" --minimal | tr ',' '\n'); do
    [ -z "$uuid" ] &amp;&amp; continue
    xe vm-param-set uuid=$uuid VCPUs-params:weight=$LOW_WEIGHT \
        other-config:sched-pri=$LOW_IO_PRI
    echo "  [OK] LOW applied: $uuid"
    ((count_3++))
done

echo "--- Performance Sync Complete: $(date) ---"
echo "$(date '+%Y-%m-%d %H:%M:%S') $(hostname) \
    $CORE_TAG:$count_0 $HIGH_TAG:$count_1 \
    $NORMAL_TAG:$count_2 $LOW_TAG:$count_3" &gt;&gt; "$SUMMARY_LOG"
</code></pre>
<p dir="auto"><strong>4-of-5</strong>: conf.d/default.conf</p>
<pre><code># ============================================
# default.conf
# Global defaults for Tag-Based-Automation
# DO NOT edit -- use custom.conf for overrides
# ============================================

SCHEDULE="hourly"

ENABLE_PERFORMANCE=true
# ENABLE_PERMISSIONS=false  # Coming Soon

MAIN_LOG="/var/log/tag-automation.log"
SUMMARY_LOG="/var/log/tag-automation-summary.log"

CORE_BASE="0-core"
HIGH_BASE="1-high"
NORMAL_BASE="2-normal"
LOW_BASE="3-low"

CORE_WEIGHT="2048"
CORE_IO_PRI="7"

HIGH_WEIGHT="1024"
HIGH_IO_PRI="7"

NORMAL_WEIGHT="256"
NORMAL_IO_PRI="4"

LOW_WEIGHT="128"
LOW_IO_PRI="1"
</code></pre>
<p dir="auto"><strong>5-of-5</strong>: conf.d/custom.conf</p>
<pre><code># ============================================
# custom.conf
# Pool-specific overrides
# Edit this file to customize your environment
# ============================================

# --- TAG SUFFIX ---
# POOL-1 --&gt; TAG_SUFFIX="-1"
# POOL-2 --&gt; TAG_SUFFIX="-2"
# Generic --&gt; TAG_SUFFIX=""
TAG_SUFFIX=""

# --- OPTIONAL OVERRIDES ---
# Uncomment to override default.conf values:
# SCHEDULE="daily"
# ENABLE_PERFORMANCE=true
# CORE_WEIGHT="4096"
# HIGH_WEIGHT="2048"
# NORMAL_WEIGHT="512"
# LOW_WEIGHT="256"
</code></pre>
]]></description><link>https://xcp-ng.org/forum/topic/12215/tag-based-automation-manage-vm-cpu-priority-via-assigned-tag.</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 09:12:19 GMT</lastBuildDate><atom:link href="https://xcp-ng.org/forum/topic/12215.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 May 2026 02:48:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sun, 17 May 2026 12:02:37 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> The full HTML versions will render much better. The PDF conversion is less than perfect. iIll try to get those uploaded, as well.</p>
]]></description><link>https://xcp-ng.org/forum/post/105512</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105512</guid><dc:creator><![CDATA[tjkreidl]]></dc:creator><pubDate>Sun, 17 May 2026 12:02:37 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sun, 17 May 2026 07:24:54 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/tjkreidl" aria-label="Profile: tjkreidl">@<bdi>tjkreidl</bdi></a> Yes, it's all good!  Happy Day <img src="https://xcp-ng.org/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=f084dd9e819" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
]]></description><link>https://xcp-ng.org/forum/post/105503</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105503</guid><dc:creator><![CDATA[johnnezero]]></dc:creator><pubDate>Sun, 17 May 2026 07:24:54 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sun, 17 May 2026 01:26:58 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> Thanks, man! I hope you and others find it and the related other two articles useful.</p>
]]></description><link>https://xcp-ng.org/forum/post/105500</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105500</guid><dc:creator><![CDATA[tjkreidl]]></dc:creator><pubDate>Sun, 17 May 2026 01:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sun, 17 May 2026 00:42:09 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/tjkreidl" aria-label="Profile: tjkreidl">@<bdi>tjkreidl</bdi></a> Found it.  I re-posted the topic back to the hardware category (and linked the pdf's to the #tobiaskreidl github) here:<br />
<a href="https://xcp-ng.org/forum/topic/12220/server-admin-guide-a-tale-of-two-servers-bios-gpu-and-numa-tuning-for-xcp-ng-preserving-the-valuable-work-done-by-tobias-kreidl-@tjkreidl">Server Admin Guide: A Tale of Two Servers: BIOS, GPU, and NUMA Tuning for XCP-ng: Preserving the valuable work done by Tobias Kreidl (@tjkreidl)</a></p>
]]></description><link>https://xcp-ng.org/forum/post/105499</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105499</guid><dc:creator><![CDATA[johnnezero]]></dc:creator><pubDate>Sun, 17 May 2026 00:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 21:37:47 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> Cool -- you guys probably have a way better idea of a proper layout and organization of the materials. Thank you!</p>
]]></description><link>https://xcp-ng.org/forum/post/105498</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105498</guid><dc:creator><![CDATA[tjkreidl]]></dc:creator><pubDate>Sat, 16 May 2026 21:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 21:34:53 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> They are under two branches ... do you not see them?<br />
XenServer-Articles and XenServer-Forum-Threads --  they landed under the "Branches" section ...<img src="/forum/assets/uploads/files/1778967055464-screenshot-2026-05-16-172942.jpg" alt="Screenshot 2026-05-16 172942.jpg" class=" img-fluid img-markdown" /></p>
]]></description><link>https://xcp-ng.org/forum/post/105496</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105496</guid><dc:creator><![CDATA[tjkreidl]]></dc:creator><pubDate>Sat, 16 May 2026 21:34:53 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 21:16:05 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/tjkreidl" aria-label="Profile: tjkreidl">@<bdi>tjkreidl</bdi></a> <a href="/forum/post/105492">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a>  <a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> Well, the Github reporsitory is in place already! Access it at:<br />
<a href="https://github.com/tobiaskreidl/Citrix-Tobias-Kreidl-Collection" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/tobiaskreidl/Citrix-Tobias-Kreidl-Collection</a><br />
Feel free to find more material to add, as will I, and thank you kindly for the suggestions and support.</p>
</blockquote>
<p dir="auto">Is the repository supposed to just have the readme, or are there supposed to be other files (e.g. MDs, pics or the PDFs? Or is it in the releases section - which is currently empty?</p>
]]></description><link>https://xcp-ng.org/forum/post/105494</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105494</guid><dc:creator><![CDATA[john.c]]></dc:creator><pubDate>Sat, 16 May 2026 21:16:05 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 20:39:27 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a>  <a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> Well, the Github reporsitory is in place already! Access it at:<br />
<a href="https://github.com/tobiaskreidl/Citrix-Tobias-Kreidl-Collection" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/tobiaskreidl/Citrix-Tobias-Kreidl-Collection</a><br />
Feel free to find more material to add, as will I, and thank you kindly for the suggestions and support.</p>
]]></description><link>https://xcp-ng.org/forum/post/105492</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105492</guid><dc:creator><![CDATA[tjkreidl]]></dc:creator><pubDate>Sat, 16 May 2026 20:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 14:57:37 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> Will do - and kudos to you on some phenomenal sleuthing work (and to <a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/tjkreidl" aria-label="Profile: tjkreidl">@<bdi>tjkreidl</bdi></a> for sparking ithis contents recall from an early "bit-bucket" grave)!  Happy Day All!</p>
]]></description><link>https://xcp-ng.org/forum/post/105489</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105489</guid><dc:creator><![CDATA[johnnezero]]></dc:creator><pubDate>Sat, 16 May 2026 14:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 14:21:34 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/tjkreidl" aria-label="Profile: tjkreidl">@<bdi>tjkreidl</bdi></a> <a href="/forum/post/105487">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> Wow, that was amazing -- not sure why my searches were unsuccessful, but many thanks!  I think Github might be a good option for putting these on-line as a more reliable spot. And, yes, preserving images is always a challenge.<br />
I do hope some of that information may be useful to you and thanks much again for all your efforts, John!</p>
</blockquote>
<p dir="auto">A bit of AI archeology combined with Internet Archive Wayback Machine helped. The AI helped to surface the exact URL of the blog posts and these were fed into Wayback Machine. Used the snapshot from 2022  anything newer and they weren’t there anymore. By the way it may be worth sending a donation Internet Archive’s way (if not done so already), as without this your blog posts would be truly gone for good!!</p>
<p dir="auto">Oh forgot to add GitHub and GitLab follows digital wills, so you can pass this off to another in a will, or generally be made read only while being kept up, when the time comes. So this hard work will be preserved even in the face of the end.</p>
<p dir="auto">Just please let me and the rest of us know where it’s at when done!</p>
]]></description><link>https://xcp-ng.org/forum/post/105488</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105488</guid><dc:creator><![CDATA[john.c]]></dc:creator><pubDate>Sat, 16 May 2026 14:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 15:15:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> Wow, that was amazing -- not sure why my searches were unsuccessful, but many thanks!  I think Github might be a good option for putting these on-line as a more reliable spot. And, yes, preserving images is always a challenge.<br />
I do hope some of that information may be useful to you and thanks much again for all your efforts, John!</p>
<p dir="auto">P.S. Seems the easiest way to get the full content is to save the Web page as a PDF file, which I have since done. You can, of course, also download the whole package to an HTML folder but that output looks a bit messy, though it does split things out nicely. I'll consider one or the other or both for putting up somewhere, like on Github, but at least I have them now!</p>
]]></description><link>https://xcp-ng.org/forum/post/105487</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105487</guid><dc:creator><![CDATA[tjkreidl]]></dc:creator><pubDate>Sat, 16 May 2026 15:15:35 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 05:58:43 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> FYI: Bundling/done (Plugin/To come...)</p>
]]></description><link>https://xcp-ng.org/forum/post/105485</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105485</guid><dc:creator><![CDATA[johnnezero]]></dc:creator><pubDate>Sat, 16 May 2026 05:58:43 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 22:20:14 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/tjkreidl" aria-label="Profile: tjkreidl">@<bdi>tjkreidl</bdi></a> <a href="/forum/post/105476">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> Not found with the Wayback Machine, alas. Still not finding it anywhere else, but will keep looking!<br />
It's a crying shame Citrix didn't preserve the treasure trove of old community blogs.</p>
</blockquote>
<p dir="auto">I did a bit of digging with the aid of AI and I’ve managed to uncover the original three blog posts of NUMA and references to UMA. If you do some more digging you may be able to uncover the rest, so it can be rewritten and/or updated, then be hosted somewhere that won’t go down so easily, or be lost as easily. If you do an update or write etc, may I suggest switching the images used to WebP or AVIF format, will seriously help file size while maintaining their quality (or even giving room for higher quality). Consider switching to SVG for diagrams rather than raster (or as the default). I’d suggest checking out to consider using Mermaid for diagrams (<a href="https://mermaid.ai/open-source/?utm_medium=hero&amp;utm_campaign=variant_a&amp;utm_source=mermaid_js" target="_blank" rel="noopener noreferrer nofollow ugc">https://mermaid.ai/open-source/?utm_medium=hero&amp;utm_campaign=variant_a&amp;utm_source=mermaid_js</a>). Maybe if you do a rewrite use markdown and something like Hugo, to generate it from the files to host on GitHub or some other pages providing repository (e.g. GitLab Pages or Codeberg Pages).</p>
<p dir="auto"><a href="https://web.archive.org/web/20220527221535/https://www.mycugc.org/blogs/tobias-kreidl/2019/03/07/tale-of-two-servers-bios-settings-affect-apps-gpu" target="_blank" rel="noopener noreferrer nofollow ugc">https://web.archive.org/web/20220527221535/https://www.mycugc.org/blogs/tobias-kreidl/2019/03/07/tale-of-two-servers-bios-settings-affect-apps-gpu</a></p>
<p dir="auto"><a href="https://web.archive.org/web/20220527213026/https://www.mycugc.org/blogs/tobias-kreidl/2019/04/30/a-tale-of-two-servers-part-2" target="_blank" rel="noopener noreferrer nofollow ugc">https://web.archive.org/web/20220527213026/https://www.mycugc.org/blogs/tobias-kreidl/2019/04/30/a-tale-of-two-servers-part-2</a></p>
<p dir="auto"><a href="https://web.archive.org/web/20220527215004/https://www.mycugc.org/blogs/tobias-kreidl/2019/04/30/a-tale-of-two-servers-part-3" target="_blank" rel="noopener noreferrer nofollow ugc">https://web.archive.org/web/20220527215004/https://www.mycugc.org/blogs/tobias-kreidl/2019/04/30/a-tale-of-two-servers-part-3</a></p>
<p dir="auto"><a href="https://community.citrix.com/forums/topic/235895-xenserver-vm-citrix-worker-sizing-question/" target="_blank" rel="noopener noreferrer nofollow ugc">https://community.citrix.com/forums/topic/235895-xenserver-vm-citrix-worker-sizing-question/</a></p>
<p dir="auto"><a href="https://xcp-ng.org/forum/topic/9359/cpu-provisioning">https://xcp-ng.org/forum/topic/9359/cpu-provisioning</a></p>
<p dir="auto"><a href="https://community.citrix.com/forums/topic/237493-memory-and-cpus-assigning-to-vms-in-order-to-obtain-maximum-performance-according-to-numa-topology/" target="_blank" rel="noopener noreferrer nofollow ugc">https://community.citrix.com/forums/topic/237493-memory-and-cpus-assigning-to-vms-in-order-to-obtain-maximum-performance-according-to-numa-topology/</a></p>
<p dir="auto"><a href="https://community.citrix.com/forums/topic/241553-bios-power-performance-settings/" target="_blank" rel="noopener noreferrer nofollow ugc">https://community.citrix.com/forums/topic/241553-bios-power-performance-settings/</a></p>
<p dir="auto"><a href="https://community.citrix.com/forums/topic/243640-citrix-hypervisor-performance-tips/" target="_blank" rel="noopener noreferrer nofollow ugc">https://community.citrix.com/forums/topic/243640-citrix-hypervisor-performance-tips/</a></p>
]]></description><link>https://xcp-ng.org/forum/post/105482</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105482</guid><dc:creator><![CDATA[john.c]]></dc:creator><pubDate>Fri, 15 May 2026 22:20:14 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 17:36:12 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> Not found with the Wayback Machine, alas. Still not finding it anywhere else, but will keep looking!<br />
It's a crying shame Citrix didn't preserve the treasure trove of old community blogs.</p>
]]></description><link>https://xcp-ng.org/forum/post/105476</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105476</guid><dc:creator><![CDATA[tjkreidl]]></dc:creator><pubDate>Fri, 15 May 2026 17:36:12 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Sat, 16 May 2026 16:02:23 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/tjkreidl" aria-label="Profile: tjkreidl">@<bdi>tjkreidl</bdi></a> Wow that all sounds pretty intense - will keep it in mind.  Thanks much!</p>
]]></description><link>https://xcp-ng.org/forum/post/105473</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105473</guid><dc:creator><![CDATA[johnnezero]]></dc:creator><pubDate>Sat, 16 May 2026 16:02:23 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 15:39:23 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/tjkreidl" aria-label="Profile: tjkreidl">@<bdi>tjkreidl</bdi></a> <a href="/forum/post/105467">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> It would be also interesting to take UMA/NUMA into account as VMs -- in particular, VMs with vGPUS -- can run much more efficiently if they do not cross memory bank boundaries that span more than one CPU instance. On some Linux systems -- not sure about the one hosting XCP-ng -- you can even disable NUMA. Just an additional thought here. I published a number of years ago a three-part series "A Tale of Two Servers" discussing a number of related optimizations but alas, the Citrix blogs were eliminated and I'm snot sure where copies of these articles exist anymore. But there are plenty of articles on this, in particular by Frank Denneman, and also ones like the following;<br />
<a href="https://indico.cern.ch/event/304944/contributions/1672535/attachments/578723/796898/numa.pdf" target="_blank" rel="noopener noreferrer nofollow ugc">https://indico.cern.ch/event/304944/contributions/1672535/attachments/578723/796898/numa.pdf</a><br />
<a href="https://docs.xenserver.com/en-us/xenserver/9/numa.html" target="_blank" rel="noopener noreferrer nofollow ugc">https://docs.xenserver.com/en-us/xenserver/9/numa.html</a></p>
</blockquote>
<p dir="auto">If you remember the URL and date maybe try the wayback machine of Internet Archive. They’re known to archive sites and articles wherever they can, may hold a copy that’s accessible.</p>
]]></description><link>https://xcp-ng.org/forum/post/105472</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105472</guid><dc:creator><![CDATA[john.c]]></dc:creator><pubDate>Fri, 15 May 2026 15:39:23 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 13:55:38 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> It would be also interesting to take UMA/NUMA into account as VMs -- in particular, VMs with vGPUS -- can run much more efficiently if they do not cross memory bank boundaries that span more than one CPU instance. On some Linux systems -- not sure about the one hosting XCP-ng -- you can even disable NUMA. Just an additional thought here. I published a number of years ago a three-part series "A Tale of Two Servers" discussing a number of related optimizations but alas, the Citrix blogs were eliminated and I'm snot sure where copies of these articles exist anymore. But there are plenty of articles on this, in particular by Frank Denneman, and also ones like the following;<br />
<a href="https://indico.cern.ch/event/304944/contributions/1672535/attachments/578723/796898/numa.pdf" target="_blank" rel="noopener noreferrer nofollow ugc">https://indico.cern.ch/event/304944/contributions/1672535/attachments/578723/796898/numa.pdf</a><br />
<a href="https://docs.xenserver.com/en-us/xenserver/9/numa.html" target="_blank" rel="noopener noreferrer nofollow ugc">https://docs.xenserver.com/en-us/xenserver/9/numa.html</a></p>
]]></description><link>https://xcp-ng.org/forum/post/105467</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105467</guid><dc:creator><![CDATA[tjkreidl]]></dc:creator><pubDate>Fri, 15 May 2026 13:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 12:26:45 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> <a href="/forum/post/105465">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> Thanks much, looking into it.<br />
"Open-Source for the Win!" <img src="https://xcp-ng.org/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=f084dd9e819" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
</blockquote>
<p dir="auto">Your welcome!</p>
]]></description><link>https://xcp-ng.org/forum/post/105466</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105466</guid><dc:creator><![CDATA[john.c]]></dc:creator><pubDate>Fri, 15 May 2026 12:26:45 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 11:52:20 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/john.c" aria-label="Profile: john.c">@<bdi>john.c</bdi></a> Thanks much, looking into it.<br />
"Open-Source for the Win!" <img src="https://xcp-ng.org/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=f084dd9e819" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
]]></description><link>https://xcp-ng.org/forum/post/105465</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105465</guid><dc:creator><![CDATA[johnnezero]]></dc:creator><pubDate>Fri, 15 May 2026 11:52:20 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 11:35:28 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> <a href="/forum/post/105463">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/pilow" aria-label="Profile: Pilow">@<bdi>Pilow</bdi></a> Sounds like an awesome idea.  Send any details you may have on how to make plugins (if you know how that is).<br />
Adding to the ToDo list - Thanks!</p>
</blockquote>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> <a href="/forum/post/105463">said</a>:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/pilow" aria-label="Profile: Pilow">@<bdi>Pilow</bdi></a> Sounds like an awesome idea.  Send any details you may have on how to make plugins (if you know how that is).<br />
Adding to the ToDo list - Thanks!</p>
</blockquote>
<p dir="auto">Looks like I can help out again just tracked down this past thread on the forums.</p>
<p dir="auto"><a href="https://xcp-ng.org/forum/topic/7202/how-do-i-create-a-new-plugin">https://xcp-ng.org/forum/topic/7202/how-do-i-create-a-new-plugin</a></p>
<p dir="auto">How’s your JavaScript (Typescript), JSON etc? These are the languages needed to develop plugins for Xen Orchestra.</p>
]]></description><link>https://xcp-ng.org/forum/post/105464</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105464</guid><dc:creator><![CDATA[john.c]]></dc:creator><pubDate>Fri, 15 May 2026 11:35:28 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 11:19:46 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/pilow" aria-label="Profile: Pilow">@<bdi>Pilow</bdi></a> Sounds like an awesome idea.  Send any details you may have on how to make plugins (if you know how that is).<br />
Adding to the ToDo list - Thanks!</p>
]]></description><link>https://xcp-ng.org/forum/post/105463</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105463</guid><dc:creator><![CDATA[johnnezero]]></dc:creator><pubDate>Fri, 15 May 2026 11:19:46 GMT</pubDate></item><item><title><![CDATA[Reply to Tag-Based Automation: Manage VM CPU Priority via assigned tag. on Fri, 15 May 2026 08:23:30 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/forum/user/johnnezero" aria-label="Profile: johnnezero">@<bdi>johnnezero</bdi></a> this could be a plugin in XOA !</p>
]]></description><link>https://xcp-ng.org/forum/post/105461</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/105461</guid><dc:creator><![CDATA[Pilow]]></dc:creator><pubDate>Fri, 15 May 2026 08:23:30 GMT</pubDate></item></channel></rss>