Skip to content

Commit

Permalink
Merge pull request #374 from zalando-stups/senza-version-check-for-tt…
Browse files Browse the repository at this point in the history
…y-only

Senza version check for TTY only
  • Loading branch information
hjacobs committed Sep 30, 2016
2 parents 56e2631 + 0452773 commit 9e45159
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 11 deletions.
13 changes: 6 additions & 7 deletions senza/aws.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,12 @@ def is_status_complete(status: str):
def get_security_group(region: str, sg_name: str):
ec2 = boto3.resource('ec2', region)
try:
sec_groups = list(ec2.security_groups.filter(
Filters=[{'Name': 'group-name', 'Values': [sg_name]}]
))
if not sec_groups:
return None
# FIXME: What if we have 2 VPC, with a SG with the same name?!
return sec_groups[0]
# first try by tag name then by group-name (cannot be changed)
for _filter in [{'Name': 'tag:Name', 'Values': [sg_name]}, {'Name': 'group-name', 'Values': [sg_name]}]:
sec_groups = list(ec2.security_groups.filter(Filters=[_filter]))
if sec_groups:
# FIXME: What if we have 2 VPC, with a SG with the same name?!
return sec_groups[0]
except ClientError as e:
error_code = extract_client_error_code(e)
if error_code == 'InvalidGroup.NotFound':
Expand Down
3 changes: 3 additions & 0 deletions senza/subcommands/root.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import click
import requests
import senza
import sys
from clickclick import AliasedGroup, warning

from ..arguments import GLOBAL_OPTIONS, region_option
Expand Down Expand Up @@ -81,6 +82,8 @@ def check_senza_version(current_version: str):
Checks if senza is updated and prints a warning with instructions to update
if it's not.
"""
if not sys.stdout.isatty():
return
current_version = LooseVersion(current_version)
try:
latest_version = get_latest_version()
Expand Down
15 changes: 15 additions & 0 deletions tests/test_aws.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,21 @@ def test_get_security_group(monkeypatch):
assert results == get_security_group('myregion', 'group_inexistant')


def test_get_security_group_by_tag_name(monkeypatch):

def mock_filter(Filters):
if Filters[0]['Name'] == 'tag:Name' and Filters[0]['Values'] == ['my-sg']:
sg = MagicMock()
sg.id = 'sg-123'
return [sg]

ec2 = MagicMock()
ec2.security_groups.filter = mock_filter
monkeypatch.setattr('boto3.resource', MagicMock(return_value=ec2))

assert get_security_group('myregion', 'my-sg').id == 'sg-123'


def test_resolve_security_groups(monkeypatch):
ec2 = MagicMock()
ec2.security_groups.filter = MagicMock(side_effect=[
Expand Down
25 changes: 21 additions & 4 deletions tests/test_subcommands/test_root.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,23 @@ def mock_warning(monkeypatch):
return mock


@fixture()
def mock_tty(monkeypatch):
# check_senza_version only prints if we have a TTY
monkeypatch.setattr('sys.stdout.isatty', lambda: True)


def test_check_senza_version_notty(monkeypatch, mock_get_app_dir, mock_get, mock_warning):
with TemporaryDirectory() as temp_dir:
mock_get_app_dir.return_value = temp_dir
monkeypatch.setattr("senza.subcommands.root.__file__",
'/home/someuser/pymodules/root.py')
check_senza_version("0.40")
mock_warning.assert_not_called()


def test_check_senza_version(monkeypatch,
mock_get_app_dir, mock_get, mock_warning):
mock_get_app_dir, mock_get, mock_warning, mock_tty):

with TemporaryDirectory() as temp_dir_1:
mock_get_app_dir.return_value = temp_dir_1
Expand Down Expand Up @@ -72,7 +87,7 @@ def test_check_senza_version(monkeypatch,
)


def test_check_senza_version_timeout(mock_get_app_dir, mock_get, mock_warning):
def test_check_senza_version_timeout(mock_get_app_dir, mock_get, mock_warning, mock_tty):
with TemporaryDirectory() as temp_dir:
mock_get_app_dir.return_value = temp_dir
mock_get.side_effect = Timeout
Expand All @@ -83,7 +98,8 @@ def test_check_senza_version_timeout(mock_get_app_dir, mock_get, mock_warning):
def test_check_senza_version_outdated_cache(monkeypatch, # noqa: F811
mock_get_app_dir,
mock_get,
mock_warning):
mock_warning,
mock_tty):
monkeypatch.setattr("senza.subcommands.root.__file__",
'/usr/pymodules/root.py')
with TemporaryDirectory() as temp_dir:
Expand All @@ -106,7 +122,8 @@ def test_check_senza_version_outdated_cache(monkeypatch, # noqa: F811
def test_check_senza_version_exception(monkeypatch,
mock_get_app_dir,
mock_get,
mock_warning):
mock_warning,
mock_tty):
mock_sentry = MagicMock()
monkeypatch.setattr("senza.subcommands.root.sentry", mock_sentry)
with TemporaryDirectory() as temp_dir:
Expand Down

0 comments on commit 9e45159

Please sign in to comment.