There is a Python tool called pyang that can read yang files. To install it on Linux machine:

apt install git python3-pip
pip install pyang

Now, git clone yang data model to your linux machine:

cd ~;git clone https://github.com/YangModels/yang.git

Pyang by itself is capable of reading yang and present it as a tree. To get xpath, we need to install additional plugin from here: https://github.com/NSO-developer/pyang-xpath
Find your pyang installation, and put the the xpath plugin to the plugin folder:

find /usr/local/lib -iname pyang
/usr/local/lib/python3.10/dist-packages/pyang

Download plugin:

wget -O /usr/local/lib/python3.10/dist-packages/pyang/plugins/xpath.py https://raw.githubusercontent.com/NSO-developer/pyang-xpath/master/xpath.py

Go to Yang model you cloned a few steps back (in this example, we’ll find xpath for Cisco IOS-XE cpu usage:

cd ~/yang/vendor/cisco/xe/1781/

Use xpath module on yang file to get xpath:

pyang -f xpath Cisco-IOS-XE-process-cpu-oper.yang 
>>> module: Cisco-IOS-XE-process-cpu-oper
/cpu-usage
/cpu-usage/cpu-utilization
/cpu-usage/cpu-utilization/five-seconds
/cpu-usage/cpu-utilization/five-seconds-intr
/cpu-usage/cpu-utilization/one-minute
/cpu-usage/cpu-utilization/five-minutes
/cpu-usage/cpu-utilization/cpu-usage-processes
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/pid
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/name
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/tty
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/total-run-time
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/invocation-count
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/avg-run-time
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/five-seconds
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/one-minute
/cpu-usage/cpu-utilization/cpu-usage-processes/cpu-usage-process/five-minutes

This are all xpaths, but we still need a prefix to construct a full path. It’s written at the start of the file:

grep prefix Cisco-IOS-XE-process-cpu-oper.yang
  prefix process-cpu-ios-xe-oper;

The whole xpath (level 1 depth) would look like this:

process-cpu-ios-xe-oper:cpu-usage/cpu-utilization

Depends on the depth and data needed, you can use this xpath with Cisco IOS-XE switch. Example:

telemetry ietf subscription 3305
 encoding encode-kvgpb
 filter xpath /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization
 source-address 10.10.1.1
 stream yang-push
 update-policy periodic 3000
 receiver ip address 10.20.20.250 57000 protocol grpc-tcp

References:
https://community.cisco.com/t5/service-providers-knowledge-base/how-to-derive-exr-telemetry-yang-path-using-pyang/ta-p/3713864
https://github.com/NSO-developer/pyang-xpath
https://github.com/jeremycohoe/cisco-ios-xe-mdt
https://www.youtube.com/watch?v=p94yetSTXdc
https://github.com/YangModels/yang

Looks like the latest MariaDB is not playing nice with Docker. It keeps on restarting, that’s why Firefly app can’t access it. This are the errors:

firefly_app-1 error:

getaddrinfo for db failed: Temporary failure in name resolution

firefly_db-1 error:

[Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.9.2+maria~ubu2204 started.
[ERROR] [Entrypoint]: mariadbd failed while attempting to check config
        command was: mariadbd --verbose --help --log-bin-index=/tmp/tmp.UIQ7MFsJkX
        Can't initialize timers

Fix: use older version of Mariadb, in my example, 10.8.2

My docker-compose file:

version: '3.3'

services:
  app:
    image: fireflyiii/core:latest
    restart: always
    volumes:
      - firefly_iii_upload:/var/www/html/storage/upload
    env_file: stack.env
    ports:
      - 8080:8080
    depends_on:
      - db
  db:
    image: mariadb:10.8.2
    hostname: fireflyiiidb
    restart: always
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
      - MYSQL_USER=firefly
      - MYSQL_PASSWORD=secret_firefly_password
      - MYSQL_DATABASE=firefly
    volumes:
      - firefly_iii_db:/var/lib/mysql
volumes:
   firefly_iii_upload:
   firefly_iii_db:

My notes on converting Cisco Catalyst 9105, 9115, 9xxx series access points to autonomous AP with embedded wireless controller.

Connect to your AP with console cable.

User: Cisco
Pass: Cisco
Enable: Cisco

Setup connectivity betweeen TFTP (in my case running on windows PC – tftpd64) server and AP.

TFTP server IP: 192.168.1.1/24
AP IP: 192.168.1.2/24

capwap ap ip 192.168.1.2 255.255.255.0 192.168.1.1

#version <= 8.9:

ap-type mobility-express ap-type ewc-ap tftp://192.168.1.1/ap1g7 tftp://192.168.1.1/C9800-AP-iosxe-wlc.bin

#version > 8.9:

ap-type ewc-ap tftp://192.168.1.1/ap1g7 tftp://192.168.1.1/C9800-AP-iosxe-wlc.bin

The conversion begins …

Would you like to enter the initial configuration dialog? [yes/no]: enter no

 The enable secret is a password used to protect
  access to privileged EXEC and configuration modes.
  This password, after entered, becomes encrypted in
  the configuration.
  -------------------------------------------------
  secret should be of minimum 10 characters with
  at least 1 upper case, 1 lower case, 1 digit and
  should not contain [cisco]
  -------------------------------------------------
  Enter enable secret: 

[0] Go to the IOS command prompt without saving this config.
[1] Return back to the setup without saving this config.
[2] Save this configuration to nvram and exit.

Select 0

conf t
hostname C9800

Create admin user – also used for web GUI:

user-name admin
priv 15
password test123

Set ap profile:

ap profile ap-default

Configure management user for access points:

mgmtuser username admin password 0 test123 secret 0 test123

Configure management IP address (you will access it via SSH or web GUI):

interface gigabitEthernet 0
ip address 192.168.1.2 255.255.255.0
no shut
ip default-gateway 192.168.1.1

Enable web server and save config:

ip http secure-server
wr

Access EWLC via https://192.168.1.2

All commands together after conversion is done:

WLCA49B.FFFF.BEEF#configure terminal
WLCA49B.FFFF.BEEF(config)#hostname C9800
C9800(config)#user-name admin
C9800(config-user-name)#priv 15
C9800(config-user-name)#password test123
C9800(config-user-name)#ap profile ap-default
C9800(config-ap-profile)#$mgmtuser username admin password 0 test123 secret 0 test123
C9800(config-ap-profile)#interface gigabitEthernet 0
C9800(config-if)#ip address 192.168.1.2 255.255.255.0
C9800(config-if)#no shut
C9800(config-if)#ip default-gateway 192.168.1.1
C9800(config)#ip http secure-server
C9800(config)#do wr
Building configuration...
[OK]
C9800(config)#

reference: https://www.youtube.com/watch?v=NBt370eiQ3I