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

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:
Find your pyang installation, and put the the xpath plugin to the plugin folder:

find /usr/local/lib -iname pyang

Download plugin:

wget -O /usr/local/lib/python3.10/dist-packages/pyang/plugins/

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

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:


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
 stream yang-push
 update-policy periodic 3000
 receiver ip address 57000 protocol grpc-tcp


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'

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

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:

capwap ap ip

#version <= 8.9:

ap-type mobility-express ap-type ewc-ap tftp:// tftp://

#version > 8.9:

ap-type ewc-ap tftp:// tftp://

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
no shut
ip default-gateway

Enable web server and save config:

ip http secure-server

Access EWLC via

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
C9800(config-if)#no shut
C9800(config-if)#ip default-gateway
C9800(config)#ip http secure-server
C9800(config)#do wr
Building configuration...