2026-03-23 12:54:07,460: INFO: Building opensdn-controller-config-devicemgr 2026-03-23 12:54:07,480: INFO: Building args: --network host --build-arg PIP_REPOSITORY=http://localhost:6667/pip/simple --build-arg CONTRAIL_REGISTRY=nexus.gz1.opensdn.io:5101 --build-arg CONTRAIL_CONTAINER_TAG=master-2_7_6_2-1_2 --build-arg SITE_MIRROR=http://nexus.gz1.opensdn.io/repository/external-web-cache --build-arg LINUX_DISTR_VER=9 --build-arg LINUX_DISTR=rockylinux --build-arg CONTAINER_NAME=opensdn-controller-config-devicemgr --build-arg UBUNTU_DISTR_VERSION=24.04 --build-arg UBUNTU_DISTR=ubuntu --build-arg VENDOR_NAME=OpenSDN-IO --build-arg VENDOR_DOMAIN=io.opensdn --build-arg BUILD_IMAGE=tf-dev-sandbox:compile --build-arg BUILD_ROOT=/buildroot --build-arg DEBUGINFO_ROOT=/debuginfo #0 building with "default" instance using docker driver #1 [internal] load build definition from Dockerfile #1 transferring dockerfile: #1 transferring dockerfile: 2.19kB 0.0s done #1 DONE 0.2s #2 [internal] load metadata for nexus.gz1.opensdn.io:5101/opensdn-controller-config-base:master-2_7_6_2-1_2 #2 DONE 0.0s #3 [internal] load metadata for docker.io/library/tf-dev-sandbox:compile #3 DONE 0.0s #4 [internal] load .dockerignore #4 transferring context: #4 transferring context: 2B 0.0s done #4 DONE 0.3s #5 [stage-1 1/4] FROM nexus.gz1.opensdn.io:5101/opensdn-base:master-2_7_6_2-1_2 #5 CACHED #6 [build 1/1] FROM docker.io/library/tf-dev-sandbox:compile #6 CACHED #7 [stage-1 1/4] FROM nexus.gz1.opensdn.io:5101/opensdn-controller-config-base:master-2_7_6_2-1_2 #7 DONE 0.0s #8 [internal] load build context #8 DONE 0.0s #8 [internal] load build context #8 transferring context: 1.97kB done #8 DONE 1.5s #9 [stage-1 2/4] COPY --from=build /pip/fabric_ansible_playbooks-0.1.dev0.tar.gz /opt/ #9 ... #5 [stage-1 1/4] FROM nexus.gz1.opensdn.io:5101/opensdn-base:master-2_7_6_2-1_2 #5 CACHED #9 [stage-1 2/4] COPY --from=build /pip/fabric_ansible_playbooks-0.1.dev0.tar.gz /opt/ #9 DONE 1.4s #10 [stage-1 3/4] RUN set -e ; dnf install -y libffi-devel iputils ; python3 -m pip install "cryptography<3.5" "importlib-resources<5.1"; python3 -m pip install --no-compile --no-binary :all: ansible ansible-core ; dnf clean all -y ; rm -rf /var/cache/yum ; source /functions.sh ; download_package https://github.com Juniper/ansible-junos-stdlib/archive/2.4.2.tar.gz Juniper.junos ; ansible-galaxy install Juniper.junos ; rm -f Juniper.junos ; python3 -m pip install --no-compile --extra-index-url http://localhost:6667/pip/simple "device_manager==0.1.dev0" "fabric_ansible==0.1.dev0" ; rm -rf /root/.cache ; mkdir -p /etc/ansible ; last="fabric_ansible_playbooks-0.1.dev0.tar.gz" ; echo "DBG: /opt/ last tar.gz = $last" ; tar -xzf /opt/$last -C /opt ; mv /opt/${last/.tar.gz/}/* /opt/ ; rmdir /opt/${last/.tar.gz/}/ ; cp /opt/ansible.cfg /etc/ansible/ansible.cfg #10 1.094 added from: http://tf-mirrors.gz1.opensdn.io/re 87 MB/s | 14 MB 00:00 #10 3.163 added from: http://tf-mirrors.gz1.opensdn.io/re 20 MB/s | 1.9 MB 00:00 #10 3.722 added from: http://tf-mirrors.gz1.opensdn.io/re 8.2 MB/s | 402 kB 00:00 #10 4.197 added from: http://tf-mirrors.gz1.opensdn.io/re 48 MB/s | 16 MB 00:00 #10 9.635 added from: http://tf-mirrors.gz1.opensdn.io/re 32 MB/s | 11 MB 00:00 #10 13.52 added from: http://tf-mirrors.gz1.opensdn.io/re 16 MB/s | 1.1 MB 00:00 #10 14.35 added from: http://tf-mirrors.gz1.opensdn.io/re 28 MB/s | 4.8 MB 00:00 #10 16.40 added from: http://tf-mirrors.gz1.opensdn.io/re 13 MB/s | 697 kB 00:00 #10 16.77 added from: http://tf-mirrors.gz1.opensdn.io/re 8.4 MB/s | 474 kB 00:00 #10 17.39 added from: http://tf-mirrors.gz1.opensdn.io/re 610 kB/s | 18 kB 00:00 #10 17.77 added from: http://tf-mirrors.gz1.opensdn.io/re 9.2 kB/s | 257 B 00:00 #10 17.92 added from: http://tf-mirrors.gz1.opensdn.io/re 461 kB/s | 15 kB 00:00 #10 18.11 added from: http://tf-mirrors.gz1.opensdn.io/re 3.3 MB/s | 96 kB 00:00 #10 19.18 added from: http://tf-mirrors.gz1.opensdn.io/re 57 MB/s | 39 MB 00:00 #10 33.11 Third parties for OpenSDN 30 MB/s | 5.1 MB 00:00 #10 42.01 Dependencies resolved. #10 42.01 ================================================================================ #10 42.01 Package Arch Version Repository Size #10 42.01 ================================================================================ #10 42.01 Installing: #10 42.01 iputils x86_64 20210202-15.el9 tf-mirrors.ci_repos_yum9-baseos 167 k #10 42.01 libffi-devel x86_64 3.4.2-8.el9 tf-mirrors.ci_repos_yum9-appstream 28 k #10 42.01 #10 42.01 Transaction Summary #10 42.01 ================================================================================ #10 42.01 Install 2 Packages #10 42.01 #10 42.01 Total download size: 196 k #10 42.01 Installed size: 531 k #10 42.01 Downloading Packages: #10 42.02 (1/2): libffi-devel-3.4.2-8.el9.x86_64.rpm 2.2 MB/s | 28 kB 00:00 #10 42.03 (2/2): iputils-20210202-15.el9.x86_64.rpm 9.5 MB/s | 167 kB 00:00 #10 42.03 -------------------------------------------------------------------------------- #10 42.03 Total 10 MB/s | 196 kB 00:00 #10 42.03 Running transaction check #10 42.08 Transaction check succeeded. #10 42.08 Running transaction test #10 42.18 Transaction test succeeded. #10 42.18 Running transaction #10 42.24 Preparing : 1/1 #10 42.37 Installing : libffi-devel-3.4.2-8.el9.x86_64 1/2 #10 42.39 Installing : iputils-20210202-15.el9.x86_64 2/2 #10 42.41 Running scriptlet: iputils-20210202-15.el9.x86_64 2/2 #10 42.66 Verifying : iputils-20210202-15.el9.x86_64 1/2 #10 42.66 Verifying : libffi-devel-3.4.2-8.el9.x86_64 2/2 #10 42.73 #10 42.73 Installed: #10 42.73 iputils-20210202-15.el9.x86_64 libffi-devel-3.4.2-8.el9.x86_64 #10 42.73 #10 42.73 Complete! #10 43.78 Looking in indexes: http://tf-mirrors.gz1.opensdn.io/root/pypi/+simple/ #10 47.00 Collecting cryptography<3.5 #10 47.04 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/996/5c46c674ba8cc/cryptography-3.4.8-cp36-abi3-manylinux_2_24_x86_64.whl (3.0 MB) #10 47.55 Collecting importlib-resources<5.1 #10 47.57 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/223/8159eb743bd85/importlib_resources-5.0.7-py3-none-any.whl (24 kB) #10 49.95 Collecting cffi>=1.12 #10 49.95 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/61d/028e90346df14/cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (216 kB) #10 50.18 Collecting pycparser #10 50.18 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/e5c/6e8d3fbad5347/pycparser-2.23-py3-none-any.whl (118 kB) #10 51.02 Installing collected packages: pycparser, cffi, importlib-resources, cryptography #10 53.09 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv #10 53.09 Successfully installed cffi-2.0.0 cryptography-3.4.8 importlib-resources-5.0.7 pycparser-2.23 #10 54.98 Looking in indexes: http://tf-mirrors.gz1.opensdn.io/root/pypi/+simple/ #10 55.69 Collecting ansible #10 55.98 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/3a5/ca5152e4547d5/ansible-8.7.0.tar.gz (49.3 MB) #10 129.2 Installing build dependencies: started #10 135.6 Installing build dependencies: finished with status 'done' #10 135.6 Getting requirements to build wheel: started #10 200.6 Getting requirements to build wheel: still running... #10 200.7 Getting requirements to build wheel: finished with status 'done' #10 200.7 Preparing metadata (pyproject.toml): started #10 258.6 Preparing metadata (pyproject.toml): finished with status 'done' #10 258.8 Collecting ansible-core #10 258.8 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/f54/2e702ee31fb04/ansible_core-2.15.13.tar.gz (3.1 MB) #10 260.9 Installing build dependencies: started #10 265.8 Installing build dependencies: finished with status 'done' #10 265.8 Getting requirements to build wheel: started #10 266.4 Getting requirements to build wheel: finished with status 'done' #10 266.4 Preparing metadata (pyproject.toml): started #10 266.9 Preparing metadata (pyproject.toml): finished with status 'done' #10 266.9 Collecting resolvelib<1.1.0,>=0.5.3 #10 266.9 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/04c/e76cbd63fded2/resolvelib-1.0.1.tar.gz (21 kB) #10 267.1 Installing build dependencies: started #10 276.0 Installing build dependencies: finished with status 'done' #10 276.0 Getting requirements to build wheel: started #10 276.1 Getting requirements to build wheel: finished with status 'done' #10 276.1 Preparing metadata (pyproject.toml): started #10 276.3 Preparing metadata (pyproject.toml): finished with status 'done' #10 276.3 Requirement already satisfied: cryptography in /usr/local/lib64/python3.9/site-packages (from ansible-core) (3.4.8) #10 276.4 Collecting PyYAML>=5.1 #10 276.5 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/d76/623373421df22/pyyaml-6.0.3.tar.gz (130 kB) #10 276.8 Installing build dependencies: started #10 343.5 Installing build dependencies: still running... #10 404.4 Installing build dependencies: still running... #10 413.2 Installing build dependencies: finished with status 'done' #10 413.2 Getting requirements to build wheel: started #10 414.4 Getting requirements to build wheel: finished with status 'done' #10 414.4 Preparing metadata (pyproject.toml): started #10 414.6 Preparing metadata (pyproject.toml): finished with status 'done' #10 414.7 Requirement already satisfied: importlib-resources<5.1,>=5.0 in /usr/local/lib/python3.9/site-packages (from ansible-core) (5.0.7) #10 414.7 Collecting jinja2>=3.0.0 #10 414.7 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/013/7fb05990d35f1/jinja2-3.1.6.tar.gz (245 kB) #10 414.9 Installing build dependencies: started #10 416.7 Installing build dependencies: finished with status 'done' #10 416.7 Getting requirements to build wheel: started #10 416.7 Getting requirements to build wheel: finished with status 'done' #10 416.7 Preparing metadata (pyproject.toml): started #10 416.8 Preparing metadata (pyproject.toml): finished with status 'done' #10 416.8 Requirement already satisfied: packaging in /usr/local/lib/python3.9/site-packages (from ansible-core) (26.0) #10 417.0 Collecting MarkupSafe>=2.0 #10 417.0 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/722/695808f4b6457/markupsafe-3.0.3.tar.gz (80 kB) #10 417.2 Installing build dependencies: started #10 421.6 Installing build dependencies: finished with status 'done' #10 421.6 Getting requirements to build wheel: started #10 421.8 Getting requirements to build wheel: finished with status 'done' #10 421.8 Preparing metadata (pyproject.toml): started #10 422.0 Preparing metadata (pyproject.toml): finished with status 'done' #10 422.1 Requirement already satisfied: cffi>=1.12 in /usr/local/lib64/python3.9/site-packages (from cryptography->ansible-core) (2.0.0) #10 422.1 Requirement already satisfied: pycparser in /usr/local/lib/python3.9/site-packages (from cffi>=1.12->cryptography->ansible-core) (2.23) #10 422.1 Building wheels for collected packages: ansible, ansible-core, jinja2, PyYAML, resolvelib, MarkupSafe #10 422.1 Building wheel for ansible (pyproject.toml): started #10 495.1 Building wheel for ansible (pyproject.toml): still running... #10 504.7 Building wheel for ansible (pyproject.toml): finished with status 'done' #10 504.8 Created wheel for ansible: filename=ansible-8.7.0-py3-none-any.whl size=48371394 sha256=e2d176896ef877a48287ef49939b06cd53e03eddf80992b11a5422cacd10becc #10 504.8 Stored in directory: /root/.cache/pip/wheels/45/76/58/9502290a467417ab1444d84c63019adb1daaed6d18d308b817 #10 505.0 Building wheel for ansible-core (pyproject.toml): started #10 506.7 Building wheel for ansible-core (pyproject.toml): finished with status 'done' #10 506.7 Created wheel for ansible-core: filename=ansible_core-2.15.13-py3-none-any.whl size=2251441 sha256=aad9bc19f986f34f8992ae4e12f0703454e06a1bd6773d690ca78fffbb95ad9a #10 506.7 Stored in directory: /root/.cache/pip/wheels/de/f1/0f/5bdba5e828d49ff45930d6032cef3961e2e673467b0d7bbb1e #10 506.7 Building wheel for jinja2 (pyproject.toml): started #10 506.8 Building wheel for jinja2 (pyproject.toml): finished with status 'done' #10 506.8 Created wheel for jinja2: filename=jinja2-3.1.6-py3-none-any.whl size=134897 sha256=005a2fc379b662ac007c271a8122f7a7db49bb67fbedfc85db50fccde34d839f #10 506.8 Stored in directory: /root/.cache/pip/wheels/7b/c3/fc/fe2ea80be37d89f3c720e53076aac0407f529f0c29356a6215 #10 506.8 Building wheel for PyYAML (pyproject.toml): started #10 507.3 Building wheel for PyYAML (pyproject.toml): finished with status 'done' #10 507.3 Created wheel for PyYAML: filename=pyyaml-6.0.3-cp39-cp39-linux_x86_64.whl size=45461 sha256=6845cd62806f9257e84c7caf4473081131d902d60f65af678cd4db9e5e762c1f #10 507.3 Stored in directory: /root/.cache/pip/wheels/79/fb/92/ef421e052606484d88d2a8592c227e766d44081f6c09bdecbb #10 507.3 Building wheel for resolvelib (pyproject.toml): started #10 507.5 Building wheel for resolvelib (pyproject.toml): finished with status 'done' #10 507.5 Created wheel for resolvelib: filename=resolvelib-1.0.1-py2.py3-none-any.whl size=17235 sha256=692b06b384283078fd5628ebb7f152e8b5763c91a9f7f0fb990523d0b278cda8 #10 507.5 Stored in directory: /root/.cache/pip/wheels/9b/e8/75/66577720290e60215abc77f8972bc2f567d4058bd85a58f881 #10 507.5 Building wheel for MarkupSafe (pyproject.toml): started #10 507.9 Building wheel for MarkupSafe (pyproject.toml): finished with status 'done' #10 507.9 Created wheel for MarkupSafe: filename=markupsafe-3.0.3-cp39-cp39-linux_x86_64.whl size=21264 sha256=149696fcc4a6262bfb542f2e5467fb0ba43dd298a9f66701a0699a02752728e4 #10 507.9 Stored in directory: /root/.cache/pip/wheels/da/bd/2a/6dd1ba50acf54588ceab2b7322c7a9bc5f41b28772c485e8fc #10 507.9 Successfully built ansible ansible-core jinja2 PyYAML resolvelib MarkupSafe #10 508.2 Installing collected packages: MarkupSafe, resolvelib, PyYAML, jinja2, ansible-core, ansible #10 513.2 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv #10 513.2 Successfully installed MarkupSafe-3.0.3 PyYAML-6.0.3 ansible-8.7.0 ansible-core-2.15.13 jinja2-3.1.6 resolvelib-1.0.1 #10 516.0 77 files removed #10 516.0 2026-03-23 13:02:47 URL:http://nexus.gz1.opensdn.io/repository/external-web-cache/Juniper/ansible-junos-stdlib/archive/2.4.2.tar.gz [108498/108498] -> "Juniper.junos" [1] #10 516.9 Starting galaxy role install process #10 516.9 - extracting Juniper.junos to /root/.ansible/roles/Juniper.junos #10 516.9 - Juniper.junos was installed successfully #10 517.2 Looking in indexes: http://tf-mirrors.gz1.opensdn.io/root/pypi/+simple/, http://localhost:6667/pip/simple #10 517.2 Collecting device_manager==0.1.dev0 #10 517.3 Downloading http://localhost:6667/pip/simple/device-manager/device_manager-0.1.dev0-py3-none-any.whl (321 kB) #10 517.3 Collecting fabric_ansible==0.1.dev0 #10 517.3 Downloading http://localhost:6667/pip/simple/fabric-ansible/fabric_ansible-0.1.dev0-py3-none-any.whl (41 kB) #10 517.3 Collecting attrdict #10 517.3 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/943/2e3498c74ff7e/attrdict-2.0.1-py2.py3-none-any.whl (9.9 kB) #10 517.4 Requirement already satisfied: netaddr<1 in /usr/local/lib/python3.9/site-packages (from device_manager==0.1.dev0) (0.10.1) #10 517.4 Requirement already satisfied: bottle<0.13 in /usr/local/lib/python3.9/site-packages (from device_manager==0.1.dev0) (0.12.25) #10 517.4 Collecting inflection #10 517.4 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/f38/b2b640938a4f3/inflection-0.5.1-py2.py3-none-any.whl (9.5 kB) #10 517.5 Collecting jsonschema #10 517.5 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/3fb/a0169e345c717/jsonschema-4.25.1-py3-none-any.whl (90 kB) #10 517.8 Collecting psutil #10 517.8 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/076/a2d2f923fd482/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl (155 kB) #10 517.8 Requirement already satisfied: stevedore in /usr/local/lib/python3.9/site-packages (from device_manager==0.1.dev0) (5.5.0) #10 518.8 Collecting lxml #10 518.8 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/6cd/aefac66e8b8f3/lxml-6.0.2-cp39-cp39-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (5.3 MB) #10 518.9 Requirement already satisfied: contrail-config-common==0.1.dev0 in /usr/local/lib/python3.9/site-packages (from device_manager==0.1.dev0) (0.1.dev0) #10 518.9 Requirement already satisfied: bitarray in /usr/local/lib64/python3.9/site-packages (from device_manager==0.1.dev0) (3.8.0) #10 519.1 Collecting cityhash #10 519.1 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/428/9853163c77966/cityhash-0.4.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (555 kB) #10 519.2 Collecting ncclient #10 519.2 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/47b/eeeee6074bd70/ncclient-0.7.1-py3-none-any.whl (94 kB) #10 519.2 Requirement already satisfied: timeout-decorator in /usr/local/lib/python3.9/site-packages (from device_manager==0.1.dev0) (0.5.0) #10 519.2 Requirement already satisfied: gevent in /usr/local/lib64/python3.9/site-packages (from device_manager==0.1.dev0) (25.9.1) #10 519.3 Collecting netifaces #10 519.3 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/e76/c7f351e044472/netifaces-0.11.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (32 kB) #10 519.3 Requirement already satisfied: kombu in /usr/local/lib/python3.9/site-packages (from device_manager==0.1.dev0) (5.6.2) #10 519.3 Collecting junos-eznc #10 519.3 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/a4f/9cc290fde95b8/junos_eznc-2.7.6-py2.py3-none-any.whl (207 kB) #10 519.4 Collecting docker #10 519.4 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/c96/b93b7f0a746f9/docker-7.1.0-py3-none-any.whl (147 kB) #10 519.5 Collecting pyroute2 #10 519.5 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/e7d/485ce8274cbf4/pyroute2-0.9.5-py3-none-any.whl (480 kB) #10 519.5 Collecting pycrypto #10 519.5 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/f2c/e1e989b272cfc/pycrypto-2.6.1.tar.gz (446 kB) #10 519.6 Preparing metadata (setup.py): started #10 519.9 Preparing metadata (setup.py): finished with status 'done' #10 519.9 Collecting subprocess32 #10 519.9 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/eb2/937c80497978d/subprocess32-3.5.4.tar.gz (97 kB) #10 519.9 Preparing metadata (setup.py): started #10 520.1 Preparing metadata (setup.py): finished with status 'done' #10 520.1 Requirement already satisfied: jinja2 in /usr/local/lib/python3.9/site-packages (from fabric_ansible==0.1.dev0) (3.1.6) #10 520.2 Collecting pysnmp #10 520.2 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/e3f/ed6eab479a4ec/pysnmp-7.1.21-py3-none-any.whl (343 kB) #10 520.2 Requirement already satisfied: xmltodict==0.12.0 in /usr/local/lib/python3.9/site-packages (from fabric_ansible==0.1.dev0) (0.12.0) #10 520.3 Collecting jsnapy #10 520.3 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/520/2fd0910cecd32/jsnapy-1.3.8-py2.py3-none-any.whl (50 kB) #10 520.3 Requirement already satisfied: sandesh-common==0.1.dev0 in /usr/local/lib/python3.9/site-packages (from contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (0.1.dev0) #10 520.3 Requirement already satisfied: simplejson in /usr/local/lib64/python3.9/site-packages (from contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (3.20.2) #10 520.3 Requirement already satisfied: greenlet in /usr/local/lib64/python3.9/site-packages (from contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (3.2.5) #10 520.3 Requirement already satisfied: requests in /usr/local/lib/python3.9/site-packages (from contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (2.32.5) #10 520.3 Requirement already satisfied: contrail-api-client==0.1.dev0 in /usr/local/lib/python3.9/site-packages (from contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (0.1.dev0) #10 520.3 Requirement already satisfied: kazoo in /usr/local/lib/python3.9/site-packages (from contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (2.10.0) #10 520.3 Requirement already satisfied: cassandra-driver in /usr/local/lib64/python3.9/site-packages (from contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (3.29.3) #10 520.3 Requirement already satisfied: sandesh==0.1.dev0 in /usr/local/lib/python3.9/site-packages (from contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (0.1.dev0) #10 520.3 Requirement already satisfied: fysom in /usr/local/lib/python3.9/site-packages (from sandesh==0.1.dev0->contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (2.1.6) #10 520.3 Requirement already satisfied: six in /usr/lib/python3.9/site-packages (from attrdict->device_manager==0.1.dev0) (1.15.0) #10 520.3 Requirement already satisfied: urllib3>=1.26.0 in /usr/local/lib/python3.9/site-packages (from docker->device_manager==0.1.dev0) (2.6.3) #10 520.3 Requirement already satisfied: zope.event in /usr/local/lib/python3.9/site-packages (from gevent->device_manager==0.1.dev0) (6.0) #10 520.3 Requirement already satisfied: zope.interface in /usr/local/lib64/python3.9/site-packages (from gevent->device_manager==0.1.dev0) (8.0.1) #10 520.3 Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib64/python3.9/site-packages (from jinja2->fabric_ansible==0.1.dev0) (3.0.3) #10 520.4 Collecting colorama #10 520.4 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/4f1/d9991f5acc0ca/colorama-0.4.6-py2.py3-none-any.whl (25 kB) #10 520.4 Collecting future #10 520.5 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/929/292d34f5872e7/future-1.0.0-py3-none-any.whl (491 kB) #10 520.6 Collecting pyparsing #10 520.6 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/850/ba148bd908d7e/pyparsing-3.3.2-py3-none-any.whl (122 kB) #10 520.6 Collecting configparser #10 520.6 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/fee/5e1f3db4156dc/configparser-7.2.0-py3-none-any.whl (17 kB) #10 520.6 Collecting icdiff==1.9.1 #10 520.7 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/669/72dd03318da55/icdiff-1.9.1.tar.gz (9.1 kB) #10 520.7 Preparing metadata (setup.py): started #10 520.9 Preparing metadata (setup.py): finished with status 'done' #10 521.0 Collecting referencing>=0.28.4 #10 521.0 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/e86/99adbbf8b5c7d/referencing-0.36.2-py3-none-any.whl (26 kB) #10 522.4 Collecting rpds-py>=0.7.1 #10 522.4 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/2fd/50659a069c15e/rpds_py-0.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384 kB) #10 522.4 Collecting attrs>=22.2.0 #10 522.4 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/adc/f7e2a1fb3b36a/attrs-25.4.0-py3-none-any.whl (67 kB) #10 522.5 Collecting jsonschema-specifications>=2023.03.6 #10 522.5 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/988/02fee3a11ee76/jsonschema_specifications-2025.9.1-py3-none-any.whl (18 kB) #10 522.5 Collecting scp>=0.7.0 #10 522.5 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/9e7/f721e5ac563c3/scp-0.15.0-py2.py3-none-any.whl (8.8 kB) #10 522.5 Requirement already satisfied: PyYAML>=5.1 in /usr/local/lib64/python3.9/site-packages (from junos-eznc->device_manager==0.1.dev0) (6.0.3) #10 522.6 Collecting pyserial #10 522.6 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/c44/51db6ba391ca6/pyserial-3.5-py2.py3-none-any.whl (90 kB) #10 522.7 Collecting paramiko>=3.5.0 #10 522.7 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/0e2/0e00ac666503b/paramiko-4.0.0-py3-none-any.whl (223 kB) #10 522.7 Collecting yamlloader #10 522.7 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/d9e/a9948759732ea/yamlloader-1.6.0-py3-none-any.whl (7.8 kB) #10 522.8 Collecting transitions #10 522.8 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/024/63248f2b668d8/transitions-0.9.3-py2.py3-none-any.whl (112 kB) #10 522.8 Collecting ncclient #10 522.8 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/318/e8e3e72b1d2a7/ncclient-0.7.0.tar.gz (116 kB) #10 522.9 Preparing metadata (setup.py): started #10 523.1 Preparing metadata (setup.py): finished with status 'done' #10 523.1 Requirement already satisfied: packaging in /usr/local/lib/python3.9/site-packages (from kombu->device_manager==0.1.dev0) (26.0) #10 523.1 Requirement already satisfied: vine==5.1.0 in /usr/local/lib/python3.9/site-packages (from kombu->device_manager==0.1.dev0) (5.1.0) #10 523.1 Requirement already satisfied: tzdata>=2025.2 in /usr/local/lib/python3.9/site-packages (from kombu->device_manager==0.1.dev0) (2025.3) #10 523.1 Requirement already satisfied: amqp<6.0.0,>=5.1.1 in /usr/local/lib/python3.9/site-packages (from kombu->device_manager==0.1.dev0) (5.3.1) #10 523.3 Collecting pyasn1!=0.5.0,>=0.4.8 #10 523.3 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/a80/184d120f0864a/pyasn1-0.6.3-py3-none-any.whl (83 kB) #10 523.4 Collecting invoke>=2.0 #10 523.4 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/241/3bc441b376e5c/invoke-2.2.1-py3-none-any.whl (160 kB) #10 523.4 Requirement already satisfied: cryptography>=3.3 in /usr/local/lib64/python3.9/site-packages (from paramiko>=3.5.0->junos-eznc->device_manager==0.1.dev0) (3.4.8) #10 523.6 Collecting bcrypt>=3.2 #10 523.6 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/611/f0a17aa4a25a6/bcrypt-5.0.0-cp39-abi3-manylinux_2_34_x86_64.whl (278 kB) #10 523.7 Collecting pynacl>=1.5 #10 523.7 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/c8a/231e36ec2cab0/pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl (1.4 MB) #10 523.8 Collecting typing-extensions>=4.4.0 #10 523.8 Downloading http://tf-mirrors.gz1.opensdn.io/root/pypi/%2Bf/f0f/a19c6845758ab/typing_extensions-4.15.0-py3-none-any.whl (44 kB) #10 523.8 Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/site-packages (from requests->contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (2026.2.25) #10 523.8 Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib64/python3.9/site-packages (from requests->contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (3.4.6) #10 523.8 Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests->contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (3.11) #10 523.9 Requirement already satisfied: geomet>=1.1 in /usr/local/lib/python3.9/site-packages (from cassandra-driver->contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (1.1.0) #10 523.9 Requirement already satisfied: setuptools>=75.8.2 in /usr/local/lib/python3.9/site-packages (from zope.event->gevent->device_manager==0.1.dev0) (82.0.1) #10 524.0 Requirement already satisfied: cffi>=1.12 in /usr/local/lib64/python3.9/site-packages (from cryptography>=3.3->paramiko>=3.5.0->junos-eznc->device_manager==0.1.dev0) (2.0.0) #10 524.0 Requirement already satisfied: click in /usr/local/lib/python3.9/site-packages (from geomet>=1.1->cassandra-driver->contrail-config-common==0.1.dev0->device_manager==0.1.dev0) (8.1.8) #10 524.0 Requirement already satisfied: pycparser in /usr/local/lib/python3.9/site-packages (from cffi>=1.12->cryptography>=3.3->paramiko>=3.5.0->junos-eznc->device_manager==0.1.dev0) (2.23) #10 524.1 Using legacy 'setup.py install' for icdiff, since package 'wheel' is not installed. #10 524.1 Using legacy 'setup.py install' for ncclient, since package 'wheel' is not installed. #10 524.1 Using legacy 'setup.py install' for pycrypto, since package 'wheel' is not installed. #10 524.1 Using legacy 'setup.py install' for subprocess32, since package 'wheel' is not installed. #10 524.2 Installing collected packages: pynacl, invoke, bcrypt, typing-extensions, rpds-py, paramiko, lxml, attrs, yamlloader, transitions, scp, referencing, pyserial, pyparsing, ncclient, pyasn1, junos-eznc, jsonschema-specifications, icdiff, future, configparser, colorama, subprocess32, pysnmp, pyroute2, pycrypto, psutil, netifaces, jsonschema, jsnapy, inflection, docker, cityhash, attrdict, fabric-ansible, device-manager #10 524.6 Running setup.py install for ncclient: started #10 524.9 Running setup.py install for ncclient: finished with status 'done' #10 525.0 Running setup.py install for icdiff: started #10 525.2 Running setup.py install for icdiff: finished with status 'done' #10 525.3 Running setup.py install for subprocess32: started #10 525.5 Running setup.py install for subprocess32: finished with status 'done' #10 525.6 Running setup.py install for pycrypto: started #10 532.7 Running setup.py install for pycrypto: finished with status 'done' #10 532.9 Successfully installed attrdict-2.0.1 attrs-25.4.0 bcrypt-5.0.0 cityhash-0.4.10 colorama-0.4.6 configparser-7.2.0 device-manager-0.1.dev0 docker-7.1.0 fabric-ansible-0.1.dev0 future-1.0.0 icdiff-1.9.1 inflection-0.5.1 invoke-2.2.1 jsnapy-1.3.8 jsonschema-4.25.1 jsonschema-specifications-2025.9.1 junos-eznc-2.7.6 lxml-6.0.2 ncclient-0.7.0 netifaces-0.11.0 paramiko-4.0.0 psutil-7.2.2 pyasn1-0.6.3 pycrypto-2.6.1 pynacl-1.6.2 pyparsing-3.3.2 pyroute2-0.9.5 pyserial-3.5 pysnmp-7.1.21 referencing-0.36.2 rpds-py-0.27.1 scp-0.15.0 subprocess32-3.5.4 transitions-0.9.3 typing-extensions-4.15.0 yamlloader-1.6.0 #10 532.9 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv #10 533.3 DBG: /opt/ last tar.gz = fabric_ansible_playbooks-0.1.dev0.tar.gz #10 DONE 536.4s #11 [stage-1 4/4] COPY *.sh / #11 DONE 0.1s #12 exporting to image #12 exporting layers #12 exporting layers 3.7s done #12 writing image sha256:45031995f8d758f55d8ec12bf65f48534d6b917fcdf0f21cbec4e1454738e9a3 done #12 naming to nexus.gz1.opensdn.io:5101/opensdn-controller-config-devicemgr:master-2_7_6_2-1_2 done #12 DONE 3.7s 2 warnings found (use docker --debug to expand):  - InvalidDefaultArgInFrom: Default value for ARG ${CONTRAIL_REGISTRY}/opensdn-controller-config-base:${CONTRAIL_CONTAINER_TAG} results in empty or invalid base image name (line 6) - InvalidDefaultArgInFrom: Default value for ARG ${BUILD_IMAGE} results in empty or invalid base image name (line 4) 2026-03-23 13:03:11,895: INFO: Docker build duration: 544 seconds The push refers to repository [nexus.gz1.opensdn.io:5101/opensdn-controller-config-devicemgr] fbcc3058634b: Preparing 51332fccefec: Preparing aa8146f3d638: Preparing 9c06b68b4760: Preparing 850641039d7f: Preparing 99425fe9885f: Preparing 3fdb87da21e6: Preparing de187999f08a: Preparing 0e06985ab831: Preparing a27860c64bca: Preparing 838083e4f2d1: Preparing 153e4598b506: Preparing 1fe38386f4a6: Preparing 2fd3ec0188db: Preparing 1947cf91208d: Preparing 486dc48fc267: Preparing 44343de3ea1d: Preparing 838083e4f2d1: Waiting 153e4598b506: Waiting 1fe38386f4a6: Waiting 2fd3ec0188db: Waiting 99425fe9885f: Waiting 3fdb87da21e6: Waiting de187999f08a: Waiting 1947cf91208d: Waiting 0e06985ab831: Waiting a27860c64bca: Waiting 486dc48fc267: Waiting 44343de3ea1d: Waiting 850641039d7f: Layer already exists 9c06b68b4760: Layer already exists 3fdb87da21e6: Layer already exists 99425fe9885f: Layer already exists 0e06985ab831: Layer already exists de187999f08a: Layer already exists fbcc3058634b: Pushed a27860c64bca: Layer already exists 838083e4f2d1: Layer already exists aa8146f3d638: Pushed 153e4598b506: Layer already exists 1fe38386f4a6: Layer already exists 2fd3ec0188db: Layer already exists 1947cf91208d: Layer already exists 486dc48fc267: Layer already exists 44343de3ea1d: Layer already exists 51332fccefec: Pushed master-2_7_6_2-1_2: digest: sha256:1475bd34a668507cacb1cb1b4c471a402e6912af9c0a979257aca1a592094e4c size: 3878 2026-03-23 13:03:23,929: INFO: Building opensdn-controller-config-devicemgr finished successfully, duration: 556 seconds WARNING: This output is designed for human readability. For machine-readable output, please use --format. IMAGE ID DISK USAGE CONTENT SIZE EXTRA nexus.gz1.opensdn.io:5101/opensdn-analytics-alarm-gen:master-2_7_6_2-1_2 5ce6dc3c9721 683MB 0B nexus.gz1.opensdn.io:5101/opensdn-analytics-api:master-2_7_6_2-1_2 309629937d96 692MB 0B nexus.gz1.opensdn.io:5101/opensdn-analytics-base:master-2_7_6_2-1_2 43730608c090 667MB 0B nexus.gz1.opensdn.io:5101/opensdn-analytics-collector:master-2_7_6_2-1_2 c67194def406 749MB 0B nexus.gz1.opensdn.io:5101/opensdn-analytics-query-engine:master-2_7_6_2-1_2 e6b284ea69c1 745MB 0B nexus.gz1.opensdn.io:5101/opensdn-analytics-snmp-base:master-2_7_6_2-1_2 e4f6851890ca 908MB 0B nexus.gz1.opensdn.io:5101/opensdn-analytics-snmp-collector:master-2_7_6_2-1_2 c4116f2c2810 909MB 0B nexus.gz1.opensdn.io:5101/opensdn-analytics-snmp-topology:master-2_7_6_2-1_2 628b5e4ce294 909MB 0B nexus.gz1.opensdn.io:5101/opensdn-ansible-deployer-src:master-2_7_6_2-1_2 efb1b7d80ea5 1.41MB 0B nexus.gz1.opensdn.io:5101/opensdn-base:master-2_7_6_2-1_2 93756ff76a8a 667MB 0B nexus.gz1.opensdn.io:5101/opensdn-build-manifest-src:master-2_7_6_2-1_2 5efe234c1494 4.17kB 0B nexus.gz1.opensdn.io:5101/opensdn-charms-src:master-2_7_6_2-1_2 ea182239145d 6.05MB 0B nexus.gz1.opensdn.io:5101/opensdn-container-builder-src:master-2_7_6_2-1_2 c562e8659d07 2.49MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-config-api:master-2_7_6_2-1_2 95309828c9bd 705MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-config-base:master-2_7_6_2-1_2 a306bf17a516 667MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-config-devicemgr:master-2_7_6_2-1_2 45031995f8d7 1.02GB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-config-dnsmasq:master-2_7_6_2-1_2 619268272ea1 682MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-config-schema:master-2_7_6_2-1_2 f9fedba44469 668MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-config-svcmonitor:master-2_7_6_2-1_2 0ef414498bbb 689MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-control-base:master-2_7_6_2-1_2 d82f757ee7c5 726MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-control-control:master-2_7_6_2-1_2 e2be2165f1b1 753MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-control-dns:master-2_7_6_2-1_2 11e2e8fdbd87 753MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-control-named:master-2_7_6_2-1_2 ddcf00a44bc0 734MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-webui-base:master-2_7_6_2-1_2 5378c89dcf99 914MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-webui-job:master-2_7_6_2-1_2 f68450c1b9a1 914MB 0B nexus.gz1.opensdn.io:5101/opensdn-controller-webui-web:master-2_7_6_2-1_2 88cdaa66b503 914MB 0B nexus.gz1.opensdn.io:5101/opensdn-debug:master-2_7_6_2-1_2 8c9becbebdfe 428MB 0B nexus.gz1.opensdn.io:5101/opensdn-deployment-test:master-2_7_6_2-1_2 a0c8a00ae787 441MB 0B nexus.gz1.opensdn.io:5101/opensdn-external-cassandra:master-2_7_6_2-1_2 f04a8e697423 331MB 0B nexus.gz1.opensdn.io:5101/opensdn-external-haproxy:master-2_7_6_2-1_2 3915329e6dae 144MB 0B nexus.gz1.opensdn.io:5101/opensdn-external-kafka:master-2_7_6_2-1_2 c7e257a6da55 392MB 0B nexus.gz1.opensdn.io:5101/opensdn-external-rabbitmq:master-2_7_6_2-1_2 d789228e6abc 363MB 0B nexus.gz1.opensdn.io:5101/opensdn-external-redis:master-2_7_6_2-1_2 301afc6c08c5 171MB 0B nexus.gz1.opensdn.io:5101/opensdn-external-rsyslogd:master-2_7_6_2-1_2 7936447996fc 440MB 0B nexus.gz1.opensdn.io:5101/opensdn-external-stunnel:master-2_7_6_2-1_2 b8146a541072 454MB 0B nexus.gz1.opensdn.io:5101/opensdn-external-zookeeper:master-2_7_6_2-1_2 8d65ede450be 301MB 0B nexus.gz1.opensdn.io:5101/opensdn-general-base:master-2_7_6_2-1_2 5ac730754f68 428MB 0B nexus.gz1.opensdn.io:5101/opensdn-kolla-ansible-src:master-2_7_6_2-1_2 ff5072a4cc21 32.7MB 0B nexus.gz1.opensdn.io:5101/opensdn-kubernetes-cni-init:master-2_7_6_2-1_2 1f40f4f8eff3 687MB 0B nexus.gz1.opensdn.io:5101/opensdn-kubernetes-kube-manager:master-2_7_6_2-1_2 43e551b9c4e3 672MB 0B nexus.gz1.opensdn.io:5101/opensdn-node-init:master-2_7_6_2-1_2 a295a6f0b8d8 667MB 0B nexus.gz1.opensdn.io:5101/opensdn-nodemgr:master-2_7_6_2-1_2 88791cacf0ad 802MB 0B nexus.gz1.opensdn.io:5101/opensdn-openstack-compute-init:master-2_7_6_2-1_2 5a4d7aac8892 428MB 0B nexus.gz1.opensdn.io:5101/opensdn-openstack-heat-init:master-2_7_6_2-1_2 476f02cfd1c1 444MB 0B nexus.gz1.opensdn.io:5101/opensdn-openstack-neutron-init:master-2_7_6_2-1_2 594d31938b60 444MB 0B nexus.gz1.opensdn.io:5101/opensdn-provisioner:master-2_7_6_2-1_2 0e2308764d2d 667MB 0B nexus.gz1.opensdn.io:5101/opensdn-status:master-2_7_6_2-1_2 453d59f9c578 802MB 0B nexus.gz1.opensdn.io:5101/opensdn-test-test:master-2_7_6_2-1_2 3785c8622ad6 1.83GB 0B nexus.gz1.opensdn.io:5101/opensdn-tools:master-2_7_6_2-1_2 57ed881a9002 1.27GB 0B nexus.gz1.opensdn.io:5101/opensdn-tor-agent:master-2_7_6_2-1_2 542a2cbebd09 726MB 0B nexus.gz1.opensdn.io:5101/opensdn-vrouter-agent-dpdk:master-2_7_6_2-1_2 f0e6e63acebc 958MB 0B nexus.gz1.opensdn.io:5101/opensdn-vrouter-agent:master-2_7_6_2-1_2 0aaa7cb21f30 924MB 0B nexus.gz1.opensdn.io:5101/opensdn-vrouter-base:master-2_7_6_2-1_2 b6f890f68c3e 734MB 0B nexus.gz1.opensdn.io:5101/opensdn-vrouter-kernel-build-init:master-2_7_6_2-1_2 85b8843d63b7 612MB 0B nexus.gz1.opensdn.io:5101/opensdn-vrouter-kernel-init-dpdk:master-2_7_6_2-1_2 138b75ff52ea 734MB 0B nexus.gz1.opensdn.io:5101/opensdn-vrouter-kernel-init:master-2_7_6_2-1_2 6dbf4f353e76 365MB 0B nexus.gz1.opensdn.io:5101/tf-dev-sandbox:frozen 0db63e1ecb5f 21GB 0B U opensdn-test-test:master-2_7_6_2-1_2 3785c8622ad6 1.83GB 0B tf-dev-sandbox:compile 1dbd0b5c1681 34.3GB 0B