You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by js...@apache.org on 2016/01/27 21:18:04 UTC

aurora git commit: Remove deprecated `HealthCheckConfig` fields.

Repository: aurora
Updated Branches:
  refs/heads/master 0d316cfbe -> e2a973e1e


Remove deprecated `HealthCheckConfig` fields.

Remove `endpoint`, `expected_response` and `expected_response_code`
which were all deprecated in Aurora 0.11.0 in favor of the same-named
fields in `HttpHealthChecker`.

This also removes health check validation in the client in favor of
leveraging the pystachio schema.  The one difference this allows for is
an empty string for the `ShellHealthChecker.shell_command`.  Since an
empty string is a valid shell command (equivalent to `true`), this
simplification seems justified.

Testing Done:
Locally green:
```
./build-support/jenkins/build.sh
./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh
```

Bugs closed: AURORA-1552, AURORA-1563

Reviewed at https://reviews.apache.org/r/42816/


Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/e2a973e1
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/e2a973e1
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/e2a973e1

Branch: refs/heads/master
Commit: e2a973e1efb6476ad700919424c7117390c3359c
Parents: 0d316cf
Author: John Sirois <js...@apache.org>
Authored: Wed Jan 27 13:18:00 2016 -0700
Committer: John Sirois <js...@apache.org>
Committed: Wed Jan 27 13:18:00 2016 -0700

----------------------------------------------------------------------
 NEWS                                            |  3 +
 docs/configuration-reference.md                 |  3 -
 src/main/python/apache/aurora/client/config.py  | 40 ---------
 .../python/apache/aurora/config/schema/base.py  |  5 +-
 .../aurora/executor/common/health_checker.py    | 17 ++--
 .../python/apache/aurora/client/test_config.py  | 88 --------------------
 6 files changed, 9 insertions(+), 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/e2a973e1/NEWS
----------------------------------------------------------------------
diff --git a/NEWS b/NEWS
index 0e9f3b3..29702d5 100644
--- a/NEWS
+++ b/NEWS
@@ -39,6 +39,9 @@
   `--announcer-enable` and `--announcer-ensemble`, but now only `--announcer-ensemble` must be set.
 - Deprecated `AddInstancesConfig` argument in `addInstances` thrift RPC. The new behavior is to
   increase job instance count (scale out) based on the task template pointed by instance `key`.
+- Removed the following deprecated `HealthCheckConfig` client-side configuration fields: `endpoint`,
+  `expected_response`, `expected_response_code`.  These are now set exclusively in like-named fields
+  of `HttpHealthChecker.`
 
 0.11.0
 ------

http://git-wip-us.apache.org/repos/asf/aurora/blob/e2a973e1/docs/configuration-reference.md
----------------------------------------------------------------------
diff --git a/docs/configuration-reference.md b/docs/configuration-reference.md
index c04f3b7..995f706 100644
--- a/docs/configuration-reference.md
+++ b/docs/configuration-reference.md
@@ -430,9 +430,6 @@ Parameters for controlling a task's health checks via HTTP or a shell command.
 
 | param                          | type      | description
 | -------                        | :-------: | --------
-| *```endpoint```*               | String    | HTTP endpoint to check (Default: /health) **Deprecated.**
-| *```expected_response```*      | String    | If not empty, fail the HTTP health check if the response differs. Case insensitive. (Default: ok) **Deprecated.**
-| *```expected_response_code```* | Integer   | If not zero, fail the HTTP health check if the response code differs. (Default: 0) **Deprecated.**
 | ```health_checker```           | HealthCheckerConfig | Configure what kind of health check to use.
 | ```initial_interval_secs```    | Integer   | Initial delay for performing a health check. (Default: 15)
 | ```interval_secs```            | Integer   | Interval on which to check the task's health. (Default: 10)

http://git-wip-us.apache.org/repos/asf/aurora/blob/e2a973e1/src/main/python/apache/aurora/client/config.py
----------------------------------------------------------------------
diff --git a/src/main/python/apache/aurora/client/config.py b/src/main/python/apache/aurora/client/config.py
index a4fa485..2fc1255 100644
--- a/src/main/python/apache/aurora/client/config.py
+++ b/src/main/python/apache/aurora/client/config.py
@@ -22,8 +22,6 @@ import math
 import re
 import sys
 
-from twitter.common import log
-
 from apache.aurora.client import binding_helper
 from apache.aurora.client.base import die
 from apache.aurora.config import AuroraConfig
@@ -70,43 +68,6 @@ def _validate_environment_name(config):
   __validate_env(env_name, 'Environment')
 
 
-INVALID_HEALTH_CHECKER = '''
-Invalid health endpoint config.
-'''
-
-MUST_PROVIDE_SHELL_COMMAND_ERROR = '''
-Must provide a shell command if using ShellHealthChecker.
-'''
-
-HTTP_DEPRECATION_WARNING = '''
-WARNING: endpoint, expected_response, and expected_response_code are deprecated and will be removed
-in the next release. Please consult updated documentation.
-'''
-
-HTTP_HEALTH_CHECK = 'http'
-SHELL_HEALTH_CHECK = 'shell'
-
-
-# TODO (AURORA-1552): Add config validation to the executor
-def _validate_health_check_config(config):
-  health_check_config = config.health_check_config().get()
-  health_checker = health_check_config.get('health_checker', {})
-  # If we have old-style of configuring.
-  # TODO (AURORA-1563): Remove this code after we drop support for defining these directly in
-  # HealthCheckConfig.
-  for deprecated in {'endpoint', 'expected_response', 'expected_response_code'}:
-    if deprecated in health_check_config:
-      log.warn(HTTP_DEPRECATION_WARNING)
-      break
-  if SHELL_HEALTH_CHECK in health_checker:
-    # Make sure we specified a shell_command if we chose a shell config.
-    shell_health_checker = health_checker.get(SHELL_HEALTH_CHECK, {})
-    shell_command = shell_health_checker.get('shell_command')
-    if not shell_command:
-      # Must define a command.
-      die(MUST_PROVIDE_SHELL_COMMAND_ERROR)
-
-
 UPDATE_CONFIG_MAX_FAILURES_ERROR = '''
 max_total_failures in update_config must be lesser than the job size.
 Based on your job size (%s) you should use max_total_failures <= %s.
@@ -157,7 +118,6 @@ def validate_config(config, env=None):
   _validate_update_config(config)
   _validate_announce_configuration(config)
   _validate_environment_name(config)
-  _validate_health_check_config(config)
 
 
 class GlobalHookRegistry(object):

http://git-wip-us.apache.org/repos/asf/aurora/blob/e2a973e1/src/main/python/apache/aurora/config/schema/base.py
----------------------------------------------------------------------
diff --git a/src/main/python/apache/aurora/config/schema/base.py b/src/main/python/apache/aurora/config/schema/base.py
index 0e4dfc2..00be874 100644
--- a/src/main/python/apache/aurora/config/schema/base.py
+++ b/src/main/python/apache/aurora/config/schema/base.py
@@ -42,7 +42,7 @@ class HttpHealthChecker(Struct):
 
 
 class ShellHealthChecker(Struct):
-  shell_command            = String
+  shell_command            = Required(String)
 
 
 class HealthCheckerConfig(Struct):
@@ -54,9 +54,6 @@ DefaultHealthChecker      = HealthCheckerConfig(http=HttpHealthChecker())
 
 
 class HealthCheckConfig(Struct):
-  endpoint                 = Default(String, '/health')
-  expected_response        = Default(String, 'ok')
-  expected_response_code   = Default(Integer, 0)
   health_checker           = Default(HealthCheckerConfig, DefaultHealthChecker)
   initial_interval_secs    = Default(Float, 15.0)
   interval_secs            = Default(Float, 10.0)

http://git-wip-us.apache.org/repos/asf/aurora/blob/e2a973e1/src/main/python/apache/aurora/executor/common/health_checker.py
----------------------------------------------------------------------
diff --git a/src/main/python/apache/aurora/executor/common/health_checker.py b/src/main/python/apache/aurora/executor/common/health_checker.py
index 01194aa..3039727 100644
--- a/src/main/python/apache/aurora/executor/common/health_checker.py
+++ b/src/main/python/apache/aurora/executor/common/health_checker.py
@@ -224,18 +224,11 @@ class HealthCheckerProvider(StatusCheckerProvider):
       portmap = resolve_ports(mesos_task, assigned_task.assignedPorts)
       if 'health' not in portmap:
         return None
-      if HTTP_HEALTH_CHECK in health_checker:
-        # Assume user has already switched over to the new config since we found the key.
-        http_config = health_checker.get(HTTP_HEALTH_CHECK, {})
-        http_endpoint = http_config.get('endpoint')
-        http_expected_response = http_config.get('expected_response')
-        http_expected_response_code = http_config.get('expected_response_code')
-      else:
-        # TODO (AURORA-1563): Remove this clause after we deprecate support for following keys
-        # directly in HealthCheckConfig
-        http_endpoint = health_check_config.get('endpoint')
-        http_expected_response = health_check_config.get('expected_response')
-        http_expected_response_code = health_check_config.get('expected_response_code')
+      http_config = health_checker.get(HTTP_HEALTH_CHECK, {})
+      http_endpoint = http_config.get('endpoint')
+      http_expected_response = http_config.get('expected_response')
+      http_expected_response_code = http_config.get('expected_response_code')
+
       http_signaler = HttpSignaler(
         portmap['health'],
         timeout_secs=timeout_secs)

http://git-wip-us.apache.org/repos/asf/aurora/blob/e2a973e1/src/test/python/apache/aurora/client/test_config.py
----------------------------------------------------------------------
diff --git a/src/test/python/apache/aurora/client/test_config.py b/src/test/python/apache/aurora/client/test_config.py
index de0973d..b1a3c18 100644
--- a/src/test/python/apache/aurora/client/test_config.py
+++ b/src/test/python/apache/aurora/client/test_config.py
@@ -16,22 +16,18 @@ import os
 from io import BytesIO
 
 import pytest
-from twitter.common import log
 from twitter.common.contextutil import temporary_dir
 
 from apache.aurora.client import config
 from apache.aurora.client.config import get_config as get_aurora_config
-from apache.aurora.client.config import HTTP_DEPRECATION_WARNING
 from apache.aurora.config import AuroraConfig
 from apache.aurora.config.loader import AuroraConfigLoader
 from apache.aurora.config.schema.base import (
     MB,
     Announcer,
     HealthCheckConfig,
-    HealthCheckerConfig,
     Job,
     Resources,
-    ShellHealthChecker,
     Task,
     UpdateConfig
 )
@@ -184,90 +180,6 @@ def test_dedicated_portmap():
                               constraints={'foo': 'bar'})))
 
 
-def test_health_check_config_http_ok():
-  base_job = Job(
-    name='hello_bond', role='james', cluster='marine-cluster',
-    health_check_config=HealthCheckConfig(
-      max_consecutive_failures=1,
-    ),
-    task=Task(name='main', processes=[],
-              resources=Resources(cpu=0.1, ram=64 * MB, disk=64 * MB)))
-  config._validate_health_check_config(AuroraConfig(base_job))
-
-
-def test_health_check_config_shell_ok():
-  base_job = Job(
-    name='hello_bond', role='james', cluster='marine-cluster',
-
-    health_check_config=HealthCheckConfig(
-      max_consecutive_failures=1,
-      health_checker=HealthCheckerConfig(
-        shell=ShellHealthChecker(shell_command='foo bar')
-      )
-    ),
-    task=Task(name='main', processes=[],
-              resources=Resources(cpu=0.1, ram=64 * MB, disk=64 * MB)))
-  config._validate_health_check_config(AuroraConfig(base_job))
-
-
-def test_health_check_config_invalid_type():
-  # Must be 'shell' or 'http' type of config.
-  with pytest.raises(ValueError):
-    Job(
-      name='hello_bond', role='james', cluster='marine-cluster',
-      health_check_config=HealthCheckConfig(
-      max_consecutive_failures=1,
-      health_checker='foo',
-    ),
-    task=Task(name='main', processes=[],
-              resources=Resources(cpu=0.1, ram=64 * MB, disk=64 * MB)))
-
-
-def test_health_check_config_deprecate_message(monkeypatch):
-  base_job = Job(
-    name='hello_bond', role='james', cluster='marine-cluster',
-    health_check_config=HealthCheckConfig(
-      max_consecutive_failures=1,
-      endpoint='/to_be_deprecated'
-    ),
-    task=Task(name='main', processes=[],
-              resources=Resources(cpu=0.1, ram=64 * MB, disk=64 * MB)))
-  log_items = []
-  def capture_log(msg):
-    log_items.append(msg)
-  monkeypatch.setattr(log, 'warn', capture_log)
-  config._validate_health_check_config(AuroraConfig(base_job))
-  assert log_items == [HTTP_DEPRECATION_WARNING]
-
-
-def test_health_check_config_shell_no_command():
-  # If we chose shell config, we must define shell_command.
-  base_job = Job(
-    name='hello_bond', role='james', cluster='marine-cluster',
-    health_check_config=HealthCheckConfig(
-      max_consecutive_failures=1,
-      health_checker=HealthCheckerConfig(shell=ShellHealthChecker())
-    ),
-    task=Task(name='main', processes=[],
-              resources=Resources(cpu=0.1, ram=64 * MB, disk=64 * MB)))
-  with pytest.raises(SystemExit):
-    config._validate_health_check_config(AuroraConfig(base_job))
-
-
-def test_health_check_config_shell_empty_command():
-  # shell_command must not be left empty.
-  base_job = Job(
-      name='hello_bond', role='james', cluster='marine-cluster',
-      health_check_config=HealthCheckConfig(
-        max_consecutive_failures=1,
-        health_checker=HealthCheckerConfig(shell=ShellHealthChecker(shell_command=''))
-      ),
-      task=Task(name='main', processes=[],
-                resources=Resources(cpu=0.1, ram=64 * MB, disk=64 * MB)))
-  with pytest.raises(SystemExit):
-    config._validate_health_check_config(AuroraConfig(base_job))
-
-
 def test_update_config_passes_with_default_values():
   base_job = Job(
     name='hello_world', role='john_doe', cluster='test-cluster',