--- /dev/null
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+set +x
+set +o errexit
+
+GEN_CFG='./config/utils/generate_config.py'
+INSTALLER_ADAPTERS='./config/installers/*'
+TMPF='/tmp/out.yml' # should be outside Jenkins WS to prevent data leakage
+RC=0
+
+# Build a table header, using ';' as column sep
+SUMMARY='PDF Verify Matrix;YAML Lint;'
+for adapter in ${INSTALLER_ADAPTERS}; do
+ SUMMARY+="$(basename "${adapter}");"
+done
+
+# Iterate all PDFs, check with each installer adapter, log results
+while IFS= read -r lab_config; do
+ valid_yaml='OK'
+ echo -e "\n\nyamllint -s ${lab_config}"
+ if ! yamllint -s "${lab_config}"; then valid_yaml='FAIL'; fi
+ SUMMARY+="\n${lab_config#labs/};${valid_yaml};"
+ for adapter in ${INSTALLER_ADAPTERS}; do
+ pdf_inst=0
+ pdf_inst_pass=0
+ pdf_yaml_pass=0
+ while IFS= read -r jinja_template; do
+ echo -e "\n${GEN_CFG} -y ${lab_config} -j ${jinja_template}"
+ if "${GEN_CFG}" -y "${lab_config}" \
+ -j "${jinja_template}" > "${TMPF}"; then
+ echo 'Result: PASS'
+ ((pdf_inst_pass+=1))
+ echo -e "\nyamllint -s ${jinja_template%.j2}"
+ if yamllint -s "${TMPF}"; then ((pdf_yaml_pass+=1)); fi
+ else
+ echo 'Result: FAIL'
+ RC=1
+ fi
+ ((pdf_inst+=1))
+ done < <(find "${adapter}" -name '*.j2')
+ SUMMARY+="${pdf_yaml_pass}/${pdf_inst_pass}/${pdf_inst};"
+ done
+done < <(find 'config' 'labs' -name 'pod*.yaml')
+
+rm -f "${TMPF}"
+echo -e '\n\nNOTE: tuple fmt: (valid YAML output/sucessful parse/templates).\n'
+echo -e "${SUMMARY}" | sed -e 's/^/;/g' -e 's/;/;| /g' | column -t -s ';'
+
+cat <<EOF
+
+To troubleshoot PDF parsing against a specific installer adapter,
+execute the following commands locally (e.g. for zte-pod2/joid):
+$ ./config/utils/generate_config.py \\
+ -y labs/zte/pod2.yaml \\
+ -j ./pharos/config/installers/joid/pod_config.yaml.j2
+
+EOF
+exit "${RC}"
--- /dev/null
+---
+### LF POD 2 descriptor file ###
+
+details:
+ pod_owner: Trevor Bramwell
+ contact: tbramwell@linuxfoundation.org
+ lab: LF Pharos Lab
+ location: Portland
+ type: production
+ link: https://wiki.opnfv.org/display/pharos/LF+POD+2
+##############################################################################
+net_config:
+ # NOTE: Network names are likely to change after the PDF spec is updated
+ oob:
+ interface: 0
+ ip-range: 172.30.8.65-172.30.8.75
+ vlan: 410
+ admin:
+ interface: 0
+ vlan: native
+ network: 192.168.11.0 # Untagged, 'PXE/Admin' on wiki, different IP
+ mask: 24
+ mgmt:
+ interface: 0
+ vlan: 300
+ network: 10.167.4.0 # Tagged, 'vlan 300' on wiki
+ mask: 24
+ storage:
+ interface: 3
+ vlan: 301
+ network: 10.2.0.0 # Tagged, not the same with 'storage' on wiki
+ mask: 24
+ private:
+ interface: 1
+ vlan: 1000
+ network: 10.1.0.0 # Tagged, not the same with 'private' on wiki
+ mask: 24
+ public:
+ interface: 2
+ vlan: native
+ network: 172.30.10.0 # Untagged, 'public' on wiki
+ mask: 24
+ gateway: 172.30.10.1
+ dns:
+ - 8.8.8.8
+ - 8.8.4.4
+##############################################################################
+jumphost:
+ name: pod2-jump
+ node:
+ type: baremetal
+ vendor: Cisco Systems Inc
+ model: UCSB-B200-M4
+ arch: x86_64
+ cpus: 2
+ cpu_cflags: haswell
+ cores: 8
+ memory: 128G
+ disks: &disks
+ - name: 'disk1'
+ disk_capacity: 2400G
+ disk_type: hdd
+ disk_interface: sas
+ disk_rotation:
+ os: centos-7
+ remote_params: &remote_params
+ type: ipmi
+ versions:
+ - 2.0
+ user: >
+ ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
+ DQYJKoZIhvcNAQEBBQAEggEAKn4rdxFJum3vgvpjT4c64gkXzbMog4LyrBb0
+ pHeASLqwiuJqCdELWl4e7d4SMp3QBzHqd6aGHJqywDt09L7axFaW9PmdUEVx
+ KxIZ8NUdDjl7HtuG8D9irU2n5VMHXVyDosMEZe9pRYhQTkuAggR7EDoDjdDj
+ 0myGFy/UVH3/fxpdySWhyg9kqAYb1ReMgYBudVfm2gw4bjtjJviwASXi8hj6
+ 8isdJPf25U6wrvbqQi5J5WVD4Q3PaGy8GACTZ8n+LFyPSwBl3QJ5jfMmzHmq
+ Po0cqa4MoKi3xQ8Y8z6DxhUrV0yoYWoHvIcpQBu3YCZVzpOqVPZwsapBl963
+ 0d0kWzA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAoo59BSqp1DBCu05h+
+ /1BZgBDdOvlZ5JlDtpkh73ujYZXR]
+ pass: >
+ ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
+ DQYJKoZIhvcNAQEBBQAEggEA4pnLYg4U/39mKdytYH1CJYJuJ/qjNrS+KoON
+ oPU6G9lMJ5U5J7NUuGyBD7O1NTt8VBE+LaBEqmXK5/SQ6mAdns9qs5QLOVSm
+ r3WKroZdqH3hmW26LuPsXNUfTaCVNOqWPAf6U6Q1fHr1vi09n3mIV/Ph03Kv
+ /aNeeRsJbBPAtHgCL6aRs+4WoxxYS0eUAVCo4yPDiSN5UFmSg6O304NM2qzi
+ av2b/gmNFN8AxE5CVi+C/fVGBhdpwmmdC0KmtkY38pYa/hf8Pks4jsFtKNDw
+ 3KW+pP+BTsgKs/o/WrwCFm4LIJj/E6Pf9qZ/mZ8bAxKlVf+gQj2bgxzT3aa1
+ hHhD0TA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAx3f5XDjWzYJA4Jn5H
+ KJOBgBDq/YBNdEeyT+dCuH59ZE6L]
+ remote_management:
+ <<: *remote_params
+ address: 172.30.8.83
+ mac_address: "a8:9d:21:c9:c4:9e"
+ interfaces:
+ - mac_address: "00:25:b5:a0:00:1a"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:1b"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:1c"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:1d"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ fixed_ips:
+ admin: 192.168.11.1
+ mgmt: 10.167.4.1
+ public: 172.30.10.72
+##############################################################################
+nodes:
+ - name: pod2-node1
+ node: &nodeparams
+ type: baremetal
+ vendor: Cisco Systems Inc
+ model: UCSB-B200-M4
+ arch: x86_64
+ cpus: 2
+ cpu_cflags: haswell
+ cores: 8
+ memory: 32G
+ disks: *disks
+ remote_management:
+ <<: *remote_params
+ address: 172.30.8.75
+ mac_address: "a8:9d:21:c9:8b:56"
+ interfaces:
+ - mac_address: "00:25:b5:a0:00:2a"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:2b"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:2c"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:2d"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ fixed_ips:
+ admin: 192.168.11.2
+ mgmt: 10.167.4.2
+ public: 172.30.10.2
+ ############################################################################
+ - name: pod2-node2
+ node: *nodeparams
+ disks: *disks
+ remote_management:
+ <<: *remote_params
+ address: 172.30.8.65
+ mac_address: "a8:9d:21:c9:4d:26"
+ interfaces:
+ - mac_address: "00:25:b5:a0:00:3a"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:3b"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:3c"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:3d"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ fixed_ips:
+ admin: 192.168.11.3
+ mgmt: 10.167.4.3
+ public: 172.30.10.3
+ ############################################################################
+ - name: pod2-node3
+ node: *nodeparams
+ disks: *disks
+ remote_management:
+ <<: *remote_params
+ address: 172.30.8.74
+ mac_address: "a8:9d:21:c9:3a:92"
+ interfaces:
+ - mac_address: "00:25:b5:a0:00:4a"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:4b"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:4c"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:4d"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ fixed_ips:
+ admin: 192.168.11.4
+ mgmt: 10.167.4.4
+ public: 172.30.10.4
+ ############################################################################
+ - name: pod2-node4
+ node: *nodeparams
+ disks: *disks
+ remote_management:
+ <<: *remote_params
+ address: 172.30.8.73
+ mac_address: "74:a2:e6:a4:14:9c"
+ interfaces:
+ - mac_address: "00:25:b5:a0:00:5a"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:5b"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:5c"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:5d"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ fixed_ips:
+ admin: 192.168.11.5
+ mgmt: 10.167.4.5
+ public: 172.30.10.5
+ ############################################################################
+ - name: pod2-node5
+ node: *nodeparams
+ disks: *disks
+ remote_management:
+ <<: *remote_params
+ address: 172.30.8.72
+ mac_address: "a8:9d:21:a0:15:9c"
+ interfaces:
+ - mac_address: "00:25:b5:a0:00:6a"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:6b"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:6c"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ - mac_address: "00:25:b5:a0:00:6d"
+ speed: 40gb
+ features: 'dpdk|sriov'
+ fixed_ips:
+ admin: 192.168.11.6
+ mgmt: 10.167.4.6
+ public: 172.30.10.6