mirror of
https://github.com/trailofbits/algo.git
synced 2025-09-23 12:15:17 +02:00
* chore: Conservative dependency updates for security - Update Ansible from 9.1.0 to 9.2.0 (one minor version bump only) - Update Jinja2 to ~3.1.6 to fix CVE-2025-27516 (critical security fix) - Pin netaddr to 1.3.0 (current stable version) This is a minimal, conservative update focused on: 1. Critical security fix for Jinja2 2. Minor ansible update for bug fixes 3. Pinning netaddr to prevent surprises No changes to Ansible collections - keeping them unpinned for now. * fix: Address linter issues (ruff, yamllint, shellcheck) - Fixed ruff configuration by moving linter settings to [tool.ruff.lint] section - Fixed ruff code issues: - Moved imports to top of files (E402) - Removed unused variables or commented them out - Updated string formatting from % to .format() - Replaced dict() calls with literals - Fixed assert False usage in tests - Fixed yamllint issues: - Added missing newlines at end of files - Removed trailing spaces - Added document start markers (---) to YAML files - Fixed 'on:' truthy warnings in GitHub workflows - Fixed shellcheck issues: - Properly quoted variables in shell scripts - Fixed A && B || C pattern with proper if/then/else - Improved FreeBSD rc script quoting All linters now pass without errors related to our code changes. * fix: Additional yamllint fixes for GitHub workflows - Added document start markers (---) to test-effectiveness.yml - Fixed 'on:' truthy warning by quoting as 'on:' - Removed trailing spaces from main.yml - Added missing newline at end of test-effectiveness.yml
97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test cloud provider instance type configurations
|
|
Focused on validating that configured instance types are current/valid
|
|
Based on issues #14730 - Hetzner changed from cx11 to cx22
|
|
"""
|
|
import sys
|
|
|
|
|
|
def test_hetzner_server_types():
|
|
"""Test Hetzner server type configurations (issue #14730)"""
|
|
# Hetzner deprecated cx11 and cpx11 - smallest is now cx22
|
|
deprecated_types = ['cx11', 'cpx11']
|
|
current_types = ['cx22', 'cpx22', 'cx32', 'cpx32', 'cx42', 'cpx42']
|
|
|
|
# Test that we're not using deprecated types in any configs
|
|
test_config = {
|
|
'cloud_providers': {
|
|
'hetzner': {
|
|
'size': 'cx22', # Should be cx22, not cx11
|
|
'image': 'ubuntu-22.04',
|
|
'location': 'hel1'
|
|
}
|
|
}
|
|
}
|
|
|
|
hetzner = test_config['cloud_providers']['hetzner']
|
|
assert hetzner['size'] not in deprecated_types, \
|
|
f"Using deprecated Hetzner type: {hetzner['size']}"
|
|
assert hetzner['size'] in current_types, \
|
|
f"Unknown Hetzner type: {hetzner['size']}"
|
|
|
|
print("✓ Hetzner server types test passed")
|
|
|
|
|
|
def test_digitalocean_instance_types():
|
|
"""Test DigitalOcean droplet size naming"""
|
|
# DigitalOcean uses format like s-1vcpu-1gb
|
|
valid_sizes = ['s-1vcpu-1gb', 's-2vcpu-2gb', 's-2vcpu-4gb', 's-4vcpu-8gb']
|
|
deprecated_sizes = ['512mb', '1gb', '2gb'] # Old naming scheme
|
|
|
|
test_size = 's-2vcpu-2gb'
|
|
assert test_size in valid_sizes, f"Invalid DO size: {test_size}"
|
|
assert test_size not in deprecated_sizes, f"Using deprecated DO size: {test_size}"
|
|
|
|
print("✓ DigitalOcean instance types test passed")
|
|
|
|
|
|
def test_aws_instance_types():
|
|
"""Test AWS EC2 instance type naming"""
|
|
# Common valid instance types
|
|
valid_types = ['t2.micro', 't3.micro', 't3.small', 't3.medium', 'm5.large']
|
|
deprecated_types = ['t1.micro', 'm1.small'] # Very old types
|
|
|
|
test_type = 't3.micro'
|
|
assert test_type in valid_types, f"Unknown EC2 type: {test_type}"
|
|
assert test_type not in deprecated_types, f"Using deprecated EC2 type: {test_type}"
|
|
|
|
print("✓ AWS instance types test passed")
|
|
|
|
|
|
def test_vultr_instance_types():
|
|
"""Test Vultr instance type naming"""
|
|
# Vultr uses format like vc2-1c-1gb
|
|
valid_types = ['vc2-1c-1gb', 'vc2-2c-4gb', 'vhf-1c-1gb', 'vhf-2c-2gb']
|
|
|
|
test_type = 'vc2-1c-1gb'
|
|
assert any(test_type.startswith(prefix) for prefix in ['vc2-', 'vhf-', 'vhp-']), \
|
|
f"Invalid Vultr type format: {test_type}"
|
|
|
|
print("✓ Vultr instance types test passed")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
tests = [
|
|
test_hetzner_server_types,
|
|
test_digitalocean_instance_types,
|
|
test_aws_instance_types,
|
|
test_vultr_instance_types,
|
|
]
|
|
|
|
failed = 0
|
|
for test in tests:
|
|
try:
|
|
test()
|
|
except AssertionError as e:
|
|
print(f"✗ {test.__name__} failed: {e}")
|
|
failed += 1
|
|
except Exception as e:
|
|
print(f"✗ {test.__name__} error: {e}")
|
|
failed += 1
|
|
|
|
if failed > 0:
|
|
print(f"\n{failed} tests failed")
|
|
sys.exit(1)
|
|
else:
|
|
print(f"\nAll {len(tests)} tests passed!")
|