Skip to content

Commit

Permalink
Parse versions from artifactory
Browse files Browse the repository at this point in the history
  • Loading branch information
twangboy committed Nov 5, 2024
1 parent 9f773cd commit cb5e1ec
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 18 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:

- name: Install Pytest
run: |
pip install -U pytest
pip install -r tests\requirements.txt
- name: Get Version
run: |
Expand Down
35 changes: 22 additions & 13 deletions bootstrap-salt.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -401,32 +401,41 @@ $psobj = $response.ToString() | ConvertFrom-Json
$filtered = $psobj.children | Where-Object -Property folder -EQ $true

# Get each uri and add it to the list of versions
$versions = [System.Collections.ArrayList]@()
$available_versions = [System.Collections.ArrayList]@()
$filtered | Select-Object -Property uri | ForEach-Object {
$versions.Add($_.uri.Trim("/")) | Out-Null
$available_versions.Add($_.uri.Trim("/")) | Out-Null
}

# last one in the list is the latest
$latest = $versions | Select-Object -Last 1

Write-Verbose "Available versions:"
$versions | ForEach-Object {
Write-Verbose $_
# Create a versions table, similar to repo.json
# This will have the latest version available, the latest version available for
# each major version, and every version available. This makes the version
# lookup logic easier. You can view the contents of the versions table by
# passing the -Verbose command
$latest = $available_versions | Select-Object -Last 1
$versions_table = [ordered]@{"latest"=$latest}

$available_versions | ForEach-Object {
$versions_table[$(Get-MajorVersion $_)] = $_
$versions_table[$_.ToLower()] = $_.ToLower()
}
Write-Verbose "Latest version: $latest"

if ( $Version -EQ "latest") {
$Version = $latest
Write-Verbose "Available versions:"
$available_versions | ForEach-Object {
Write-Verbose "- $_"
}
Write-Verbose "Versions Table:"
$versions_table | Sort-Object Name | Out-String | Write-Verbose

#===============================================================================
# Validate passed version
#===============================================================================
if ( $versions -notcontains $Version ) {
if ( $versions_table -notcontains $Version.ToLower() ) {
Write-Host "Version $Version is not available" -ForegroundColor Red
Write-Host "Available versions are:" -ForegroundColor Yellow
$versions | ForEach-Object { Write-Host $_ -ForegroundColor Yellow }
$available_versions | ForEach-Object { Write-Host "- $_" -ForegroundColor Yellow }
exit 1
} else {
$Version = $versions_table[$Version.ToLower()]
}

#===============================================================================
Expand Down
25 changes: 22 additions & 3 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import logging
import json
import os

import pytest
import requests

log = logging.getLogger(__name__)
API_URL = (
"https://packages.broadcom.com/artifactory/api/storage/saltproject-generic/windows"
)


@pytest.fixture(scope="session")
Expand All @@ -13,10 +16,26 @@ def target_python_version():

@pytest.fixture(scope="session")
def target_salt_version():

target_salt = os.environ.get("SaltVersion", "")

html_response = requests.get(API_URL)
content = json.loads(html_response.text)
folders = content["children"]
versions = {}
for folder in folders:
if folder["folder"]:
version = folder["uri"].strip("/")
versions[version] = version
# We're trying to get the latest major version and latest overall
maj_version = version.split(".")[0]
versions[maj_version] = version
versions["latest"] = version

if target_salt.startswith("v"):
target_salt = target_salt[1:]
if target_salt not in versions:
pytest.skip(f"Invalid testing version: {target_salt}")
if target_salt in ("default", "latest", "master", "nightly"):
pytest.skip("Don't have a specific salt version to test against")
return target_salt
return versions[target_salt]
3 changes: 2 additions & 1 deletion tests/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
pytest
pytest
requests

0 comments on commit cb5e1ec

Please sign in to comment.