Skip to content

Commit

Permalink
Process environment variables with python-decouple (#22)
Browse files Browse the repository at this point in the history
* Use python-decouple for environment variable management in scale.py

* update dockerfile to optimize image size

* do not crash when scale_resource gets a 404.
  • Loading branch information
willgraf committed May 31, 2019
1 parent ae271d8 commit 6670839
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 13 deletions.
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
FROM python:3.6
FROM python:3.6-alpine

WORKDIR /usr/src/app

COPY requirements.txt .

RUN pip install -r requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

Expand Down
9 changes: 7 additions & 2 deletions autoscaler/autoscaler.py
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,13 @@ def scale_resources(self):
str(resource_type).capitalize(), name,
namespace, current_pods, desired_pods)

self.scale_resource(desired_pods, current_pods,
resource_type, namespace, name)
try:
self.scale_resource(desired_pods, current_pods,
resource_type, namespace, name)
except kubernetes.client.rest.ApiException as err:
self.logger.warning('Failed to scale %s `%s.%s` due to %s: %s',
resource_type, namespace, name,
type(err).__name__, err)

def scale(self):
self.tally_queues()
Expand Down
7 changes: 7 additions & 0 deletions autoscaler/autoscaler_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,13 @@ def test_scale_resources(self):
scaler.get_desired_pods = lambda *x: 4
scaler.scale_resources()

# test failure to scale does not crash
def fail_to_scale(*_, **__):
raise kubernetes.client.rest.ApiException(404)

scaler.scale_resource = fail_to_scale
scaler.scale_resources()

# same delimiter throws an error;
with pytest.raises(ValueError):
param_delim = '|'
Expand Down
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
redis==3.2.1
kubernetes==9.0.0
python-decouple>=3.1,<4
redis==3.2.1
17 changes: 9 additions & 8 deletions scale.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,12 @@
from __future__ import division
from __future__ import print_function

import os
import sys
import time
import logging
import logging.handlers
import sys
import time

import decouple

import autoscaler

Expand Down Expand Up @@ -70,15 +71,15 @@ def initialize_logger(debug_mode=True):
_logger = logging.getLogger(__file__)

REDIS_CLIENT = autoscaler.redis.RedisClient(
host=os.getenv('REDIS_HOST'),
port=os.getenv('REDIS_PORT'),
backoff=int(os.getenv('REDIS_INTERVAL', '1')))
host=decouple.config('REDIS_HOST', cast=str),
port=decouple.config('REDIS_PORT', default=6379, cast=int),
backoff=decouple.config('REDIS_INTERVAL', default=1, cast=int))

SCALER = autoscaler.Autoscaler(
redis_client=REDIS_CLIENT,
scaling_config=os.getenv('AUTOSCALING'))
scaling_config=decouple.config('AUTOSCALING'))

INTERVAL = int(os.getenv('INTERVAL', '5'))
INTERVAL = decouple.config('INTERVAL', default=5, cast=int)

while True:
try:
Expand Down

0 comments on commit 6670839

Please sign in to comment.