diff options
42 files changed, 312 insertions, 88 deletions
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..9338944 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,60 @@ +<!-- All PR should follow this template to allow a clean and transparent review --> +<!-- Text placed between these delimiters is considered a comment and is not rendered --> + +## Change Summary +<!--- Provide a general summary of your changes in the Title above --> + +## Types of changes +<!--- +What types of changes does your code introduce? Put an 'x' in all the boxes that apply. +NOTE: Markdown requires no leading or trailing whitespace inside the [ ] for checking +the box, please use [x] +--> +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Code style update (formatting, renaming) +- [ ] Refactoring (no functional changes) +- [ ] Migration from an old Vyatta component to vyos-1x, please link to related PR inside obsoleted component +- [ ] Other (please describe): + +## Related Task(s) +<!-- All submitted PRs must be linked to a Task on Phabricator. --> +* https://vyos.dev/Txxxx + +## Related PR(s) +<!-- Link here any PRs in other repositories that are required by this PR --> + +## Component(s) name +<!-- A rather incomplete list of components: ethernet, wireguard, bgp, mpls, ldp, l2tp, dhcp ... --> + +## Proposed changes +<!--- Describe your changes in detail --> + +## How to test +<!--- +Please describe in detail how you tested your changes. Include details of your testing +environment, and the tests you ran. When pasting configs, logs, shell output, backtraces, +and other large chunks of text, surround this text with triple backtics +``` +like this +``` +--> + +## Smoketest result +<!-- Provide the output of the smoketest +``` +$ /usr/libexec/vyos/tests/smoke/cli/test_xxx_feature.py +test_01_simple_options (__main__.TestFeature.test_01_simple_options) ... ok +``` +--> + +## Checklist: +<!--- Go over all the following points, and put an `x` in all the boxes that apply. --> +<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> +<!--- The entire development process is outlined here: https://docs.vyos.io/en/latest/contributing/development.html --> +- [ ] I have read the [**CONTRIBUTING**](https://github.com/vyos/vyos-1x/blob/current/CONTRIBUTING.md) document +- [ ] I have linked this PR to one or more Phabricator Task(s) +- [ ] I have run the components [**SMOKETESTS**](https://github.com/vyos/vyos-1x/tree/current/smoketest/scripts/cli) if applicable +- [ ] My commit headlines contain a valid Task id +- [ ] My change requires a change to the documentation +- [ ] I have updated the documentation accordingly diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..e0b9ee4 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,12 @@ +equuleus: + - any: + - base-branch: 'equuleus' +current: + - any: + - base-branch: 'current' +crux: + - any: + - base-branch: 'crux' +sagitta: + - any: + - base-branch: 'sagitta' diff --git a/.github/reviewers.yml b/.github/reviewers.yml new file mode 100644 index 0000000..a1647d2 --- /dev/null +++ b/.github/reviewers.yml @@ -0,0 +1,3 @@ +--- +"**/*": + - team: reviewers diff --git a/.github/workflows/auto-author-assign.yml b/.github/workflows/auto-author-assign.yml new file mode 100644 index 0000000..1a7f8ef --- /dev/null +++ b/.github/workflows/auto-author-assign.yml @@ -0,0 +1,27 @@ +name: "PR Triage" +on: + pull_request_target: + types: [opened, reopened, ready_for_review, locked] + +permissions: + pull-requests: write + +jobs: + # https://github.com/marketplace/actions/auto-author-assign + assign-author: + runs-on: ubuntu-latest + steps: + - name: "Assign Author to PR" + uses: toshimaru/auto-author-assign@v1.6.2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + # https://github.com/shufo/auto-assign-reviewer-by-files + assign_reviewer: + runs-on: ubuntu-latest + steps: + - name: Request review based on files changes and/or groups the author belongs to + uses: shufo/auto-assign-reviewer-by-files@v1.1.4 + with: + token: ${{ secrets.PR_ACTION_ASSIGN_REVIEWERS }} + config: .github/reviewers.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..c39800a --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,74 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "current", crux, equuleus ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "current" ] + schedule: + - cron: '22 10 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'python' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # âšī¸ Command-line programs to run using the OS shell. + # đ See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/mergifyio_backport.yml b/.github/workflows/mergifyio_backport.yml new file mode 100644 index 0000000..e8d9875 --- /dev/null +++ b/.github/workflows/mergifyio_backport.yml @@ -0,0 +1,22 @@ +name: Mergifyio backport + +on: [issue_comment] + +jobs: + mergifyio_backport: + if: github.repository == 'vyos/vyatta-op' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - uses: actions-ecosystem/action-regex-match@v2 + id: regex-match + with: + text: ${{ github.event.comment.body }} + regex: '[Mm]ergifyio backport ' + + - uses: actions-ecosystem/action-add-labels@v1 + if: ${{ steps.regex-match.outputs.match != '' }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + labels: backport diff --git a/.github/workflows/pr-conflicts.yml b/.github/workflows/pr-conflicts.yml new file mode 100644 index 0000000..96040cd --- /dev/null +++ b/.github/workflows/pr-conflicts.yml @@ -0,0 +1,18 @@ +name: "PR Conflicts checker" +on: + pull_request_target: + types: [synchronize] + +jobs: + Conflict_Check: + name: 'Check PR status: conflicts and resolution' + runs-on: ubuntu-22.04 + steps: + - name: check if PRs are dirty + uses: eps1lon/actions-label-merge-conflict@releases/2.x + with: + dirtyLabel: "state: conflict" + removeOnDirtyLabel: "state: conflict resolved" + repoToken: "${{ secrets.GITHUB_TOKEN }}" + commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request." + commentOnClean: "Conflicts have been resolved. A maintainer will review the pull request shortly." diff --git a/.github/workflows/pull-request-labels.yml b/.github/workflows/pull-request-labels.yml new file mode 100644 index 0000000..778daae --- /dev/null +++ b/.github/workflows/pull-request-labels.yml @@ -0,0 +1,20 @@ +--- +name: Add pull request labels + +on: + pull_request_target: + branches: + - current + - crux + - equuleus + - sagitta + +jobs: + add-pr-label: + name: Add PR Labels + runs-on: ubuntu-20.04 + permissions: + contents: read + pull-requests: write + steps: + - uses: actions/labeler@v5.0.0-alpha.1 diff --git a/.github/workflows/pull-request-management.yml b/.github/workflows/pull-request-management.yml new file mode 100644 index 0000000..3a855c1 --- /dev/null +++ b/.github/workflows/pull-request-management.yml @@ -0,0 +1,25 @@ +--- +name: Build Pull Request Package + +on: + pull_request: + branches: + - current + - crux + - equuleus + +jobs: + j2lint: + name: Validate j2 files + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + timeout-minutes: 2 + - name: Setup J2Lint + timeout-minutes: 2 + run: | + sudo pip install git+https://github.com/aristanetworks/j2lint.git@341b5d5db86e095b622f09770cb6367a1583620e + - name: Run J2lint + timeout-minutes: 2 + run: | + j2lint $GITHUB_WORKSPACE/data diff --git a/.github/workflows/pull-request-message-check.yml b/.github/workflows/pull-request-message-check.yml new file mode 100644 index 0000000..8c206a5 --- /dev/null +++ b/.github/workflows/pull-request-message-check.yml @@ -0,0 +1,23 @@ +--- +name: Check pull request message format + +on: + pull_request: + branches: + - current + - crux + - equuleus + +jobs: + check-pr-title: + name: Check pull request title + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + timeout-minutes: 2 + - name: Install the requests library + run: pip3 install requests + - name: Check the PR title + timeout-minutes: 2 + run: | + ./scripts/check-pr-title-and-commit-messages.py '${{ github.event.pull_request.url }}' diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..2ff9ef0 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,22 @@ +name: "Issue and PR stale management" +on: + schedule: + - cron: "0 0 * * *" + +jobs: + stale: + runs-on: ubuntu-latest + if: github.repository == 'vyos/vyatta-op' + steps: + # Issue stale management + - uses: actions/stale@v6 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + days-before-stale: 90 + days-before-close: -1 + stale-issue-message: 'This issue is stale because it has been open 90 days with no activity. The issue will be reviewed by a maintainer and may be closed' + stale-issue-label: 'state: stale' + exempt-issue-labels: 'state: accepted, state: in-progress' + stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. The PR will be reviewed by a maintainer and may be closed' + stale-pr-label: 'state: stale' + exempt-pr-labels: 'state: accepted, state: in-progress' diff --git a/Makefile.am b/Makefile.am index b9829ec..c5d9322 100644 --- a/Makefile.am +++ b/Makefile.am @@ -16,7 +16,6 @@ interp_DATA += functions/interpreter/vyatta-image-complete bin_SCRIPTS = scripts/vyatta-show-interfaces.pl -bin_SCRIPTS += scripts/show-dhcp-leases.pl bin_SCRIPTS += scripts/vyatta-boot-image.pl bin_SCRIPTS += scripts/rename-image.pl bin_SCRIPTS += scripts/show-image-storage.pl diff --git a/etc/default/vyatta.in b/etc/default/vyatta.in index f496dba..909f124 100644 --- a/etc/default/vyatta.in +++ b/etc/default/vyatta.in @@ -137,7 +137,6 @@ unset _vyatta_extglob declare -x -r vyatta_sysconfdir=$vyatta_prefix/etc fi fi - if test -z "$vyatta_op_templates" ; then declare -x -r vyatta_op_templates=$vyatta_datadir/vyatta-op/templates declare -x -r vyos_op_templates=$vyatta_datadir/vyatta-op/templates @@ -163,24 +162,23 @@ unset _vyatta_extglob if test -z "$vyos_conf_scripts_dir" ; then declare -x -r vyos_conf_scripts_dir=$vyos_libexec_dir/conf_mode fi - if test -z "$vyos_op_scripts_dir" ; then declare -x -r vyos_op_scripts_dir=$vyos_libexec_dir/op_mode fi - if test -z "$vyos_completion_dir" ; then declare -x -r vyos_completion_dir=$vyos_libexec_dir/completion fi - if test -z "$vyos_validators_dir" ; then declare -x -r vyos_validators_dir=$vyos_libexec_dir/validators fi - + if test -z "$vyos_persistence_dir" ; then + UNION_NAME=$(cat /proc/cmdline | sed -e s+^.*vyos-union=++ | sed -e 's/ .*$//') + declare -x -r vyos_persistence_dir="/usr/lib/live/mount/persistence/${UNION_NAME}" + fi if test -z "$vyos_rootfs_dir" ; then - IMAGE_NAME=$(cat /proc/cmdline | sed -e s+^.*vyos-union=/boot/++ | sed -e 's/ .*$//') - declare -x -r vyos_rootfs_dir="/usr/lib/live/mount/rootfs/${IMAGE_NAME}.squashfs" + ROOTFS=$(mount -t squashfs | grep loop0 | cut -d' ' -f3) + declare -x -r vyos_rootfs_dir="${ROOTFS}" fi - if test -z "$VRF" ; then VRF=$(ip vrf identify) [ -n "$VRF" ] && declare -x -r VRF="${VRF}" @@ -190,7 +188,6 @@ unset _vyatta_extglob [ -n "$NETNS" ] && declare -x -r NETNS="${NETNS}" fi - } 2>/dev/null || : [ -r /etc/default/vyatta-cfg ] && source /etc/default/vyatta-cfg diff --git a/templates/delete/system/image/node.def b/templates/delete/system/image/node.def deleted file mode 100644 index 1d116e2..0000000 --- a/templates/delete/system/image/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Remove an installed image from the system -run: sudo /opt/vyatta/bin/vyatta-boot-image.pl --delete diff --git a/templates/delete/system/image/node.tag/node.def b/templates/delete/system/image/node.tag/node.def deleted file mode 100644 index 403bd80..0000000 --- a/templates/delete/system/image/node.tag/node.def +++ /dev/null @@ -1,10 +0,0 @@ -help: Name of image image to delete - -allowed: - local -a images ; - images=`/opt/vyatta/bin/vyatta-boot-image.pl --list` - echo -n $images - -run: - image=$4 - sudo /opt/vyatta/bin/vyatta-boot-image.pl --del $image diff --git a/templates/delete/system/node.def b/templates/delete/system/node.def deleted file mode 100644 index 952e778..0000000 --- a/templates/delete/system/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Delete system objects diff --git a/templates/generate/node.def b/templates/generate/node.def deleted file mode 100644 index 383cf80..0000000 --- a/templates/generate/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Generate an object diff --git a/templates/generate/tech-support/archive/node.def b/templates/generate/tech-support/archive/node.def deleted file mode 100644 index 6b1a380..0000000 --- a/templates/generate/tech-support/archive/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Generate tech-support archive -run: ${vyatta_bindir}/tech-support-archive diff --git a/templates/generate/tech-support/archive/node.tag/node.def b/templates/generate/tech-support/archive/node.tag/node.def deleted file mode 100644 index 540331f..0000000 --- a/templates/generate/tech-support/archive/node.tag/node.def +++ /dev/null @@ -1,4 +0,0 @@ -help: Generate compressed tech-support archive at the specified path -allowed: echo -n '<file> <scp://<user>:<passwd>@<host>/<file>> <ftp://<user>:<passwd>@<host>/<file>>' -run: ${vyatta_bindir}/tech-support-archive "$4" - diff --git a/templates/generate/tech-support/node.def b/templates/generate/tech-support/node.def deleted file mode 100644 index 27d1937..0000000 --- a/templates/generate/tech-support/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Generate tech-support archive diff --git a/templates/install/image/node.def b/templates/install/image/node.def deleted file mode 100644 index e229319..0000000 --- a/templates/install/image/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Install new system image to hard drive -run: sudo /opt/vyatta/sbin/install-image diff --git a/templates/install/node.def b/templates/install/node.def deleted file mode 100644 index a52b606..0000000 --- a/templates/install/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Install a new system diff --git a/templates/rename/node.def b/templates/rename/node.def deleted file mode 100644 index 9bbaa03..0000000 --- a/templates/rename/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Rename an object diff --git a/templates/rename/system/image/node.def b/templates/rename/system/image/node.def deleted file mode 100644 index 00e9c81..0000000 --- a/templates/rename/system/image/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Re-name a system image. diff --git a/templates/rename/system/image/node.tag/node.def b/templates/rename/system/image/node.tag/node.def deleted file mode 100644 index eb25def..0000000 --- a/templates/rename/system/image/node.tag/node.def +++ /dev/null @@ -1,6 +0,0 @@ -help: System image to rename. - -allowed: - local -a images ; - images=`/opt/vyatta/bin/vyatta-boot-image.pl --list` - echo -n $images diff --git a/templates/rename/system/image/node.tag/node.tag/node.def b/templates/rename/system/image/node.tag/node.tag/node.def deleted file mode 100644 index 1f94c57..0000000 --- a/templates/rename/system/image/node.tag/node.tag/node.def +++ /dev/null @@ -1,7 +0,0 @@ -help: New name for system image. - -run: - old=$4 - new=$5 - sudo /opt/vyatta/bin/rename-image.pl --old_name $old --new_name $new - diff --git a/templates/rename/system/node.def b/templates/rename/system/node.def deleted file mode 100644 index 1d86fc2..0000000 --- a/templates/rename/system/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Re-name a system object. diff --git a/templates/set/node.def b/templates/set/node.def deleted file mode 100644 index e47b893..0000000 --- a/templates/set/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Set operational options diff --git a/templates/set/system/image/default-boot/node.def b/templates/set/system/image/default-boot/node.def deleted file mode 100644 index b0e3290..0000000 --- a/templates/set/system/image/default-boot/node.def +++ /dev/null @@ -1,4 +0,0 @@ -help: Set default image to boot. - -run: - sudo /opt/vyatta/bin/vyatta-boot-image.pl --select diff --git a/templates/set/system/image/default-boot/node.tag/node.def b/templates/set/system/image/default-boot/node.tag/node.def deleted file mode 100644 index 9a37a55..0000000 --- a/templates/set/system/image/default-boot/node.tag/node.def +++ /dev/null @@ -1,10 +0,0 @@ -help: Default boot image name - -allowed: - local -a images ; - images=`/opt/vyatta/bin/vyatta-boot-image.pl --list` - echo -n $images - -run: - image=$5 - sudo /opt/vyatta/bin/vyatta-boot-image.pl --select $image diff --git a/templates/set/system/image/node.def b/templates/set/system/image/node.def deleted file mode 100644 index c6d0f34..0000000 --- a/templates/set/system/image/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Set system image parameters diff --git a/templates/set/system/node.def b/templates/set/system/node.def deleted file mode 100644 index eef577c..0000000 --- a/templates/set/system/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Set system operational parameters diff --git a/templates/show/interfaces/system/enabled/node.def b/templates/show/interfaces/system/enabled/node.def deleted file mode 100644 index 26bf441..0000000 --- a/templates/show/interfaces/system/enabled/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Show network information of all enabled interfaces -run: ${vyatta_bindir}/vyatta-show-interfaces system enabled diff --git a/templates/show/interfaces/system/node.def b/templates/show/interfaces/system/node.def deleted file mode 100644 index 138a159..0000000 --- a/templates/show/interfaces/system/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Show network information of all interfaces -run: ${vyatta_bindir}/vyatta-show-interfaces system diff --git a/templates/show/interfaces/vrrp/detail/node.def b/templates/show/interfaces/vrrp/detail/node.def deleted file mode 100644 index dca40b9..0000000 --- a/templates/show/interfaces/vrrp/detail/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Show detailed vrrp interface information -run: ${vyatta_bindir}/vyatta-show-interfaces.pl --vrrp --action=show diff --git a/templates/show/interfaces/vrrp/node.def b/templates/show/interfaces/vrrp/node.def deleted file mode 100644 index 7b973c9..0000000 --- a/templates/show/interfaces/vrrp/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Show vrrp interface information -run: ${vyatta_bindir}/vyatta-show-interfaces.pl --vrrp --action=show-brief diff --git a/templates/show/interfaces/vrrp/node.tag/brief/node.def b/templates/show/interfaces/vrrp/node.tag/brief/node.def deleted file mode 100644 index ca306f9..0000000 --- a/templates/show/interfaces/vrrp/node.tag/brief/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Show summary of the specified vrrp interface information -run: ${vyatta_bindir}/vyatta-show-interfaces.pl --intf="$4" --action=show-brief diff --git a/templates/show/interfaces/vrrp/node.tag/node.def b/templates/show/interfaces/vrrp/node.tag/node.def deleted file mode 100644 index 3e261a7..0000000 --- a/templates/show/interfaces/vrrp/node.tag/node.def +++ /dev/null @@ -1,3 +0,0 @@ -help: Show specified vrrp interface information -allowed: ${vyatta_bindir}/vyatta-show-interfaces.pl --vrrp --action=allowed -run: ${vyatta_bindir}/vyatta-show-interfaces.pl --intf="$4" diff --git a/templates/show/remote-config/node.def b/templates/show/remote-config/node.def deleted file mode 100644 index 1675abd..0000000 --- a/templates/show/remote-config/node.def +++ /dev/null @@ -1 +0,0 @@ -help: Show remote side config diff --git a/templates/show/system/image/node.def b/templates/show/system/image/node.def deleted file mode 100644 index 0766094..0000000 --- a/templates/show/system/image/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Show installed VyOS images -run: /opt/vyatta/bin/vyatta-boot-image.pl --show diff --git a/templates/show/system/image/storage/node.def b/templates/show/system/image/storage/node.def deleted file mode 100644 index 5dfd193..0000000 --- a/templates/show/system/image/storage/node.def +++ /dev/null @@ -1,3 +0,0 @@ -help: Show disk space utilization of system images - -run: sudo /opt/vyatta/bin/show-image-storage.pl diff --git a/templates/show/system/image/version/node.def b/templates/show/system/image/version/node.def deleted file mode 100644 index 0da3c7b..0000000 --- a/templates/show/system/image/version/node.def +++ /dev/null @@ -1,2 +0,0 @@ -help: Show installed VyOS images with version number -run: /opt/vyatta/bin/vyatta-boot-image.pl --show --show_vers |