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

aurora git commit: Remove AddInstancesConfig parameter from addInstances RPC.

Repository: aurora
Updated Branches:
  refs/heads/master 9a93955a1 -> 11d5a72ae


Remove AddInstancesConfig parameter from addInstances RPC.

Bugs closed: AURORA-1595

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


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

Branch: refs/heads/master
Commit: 11d5a72ae3af2e612857f7169b08f2bd9956577f
Parents: 9a93955
Author: Bill Farner <wf...@apache.org>
Authored: Wed Apr 6 17:20:29 2016 -0700
Committer: Bill Farner <wf...@apache.org>
Committed: Wed Apr 6 17:20:29 2016 -0700

----------------------------------------------------------------------
 RELEASE-NOTES.md                                |  1 +
 .../thrift/org/apache/aurora/gen/api.thrift     | 13 +--
 .../ShiroAuthorizingParamInterceptor.java       |  8 --
 .../thrift/SchedulerThriftInterface.java        | 61 +++++---------
 .../thrift/aop/AnnotatedAuroraAdmin.java        |  2 -
 .../python/apache/aurora/client/api/__init__.py |  2 +-
 .../thrift/SchedulerThriftInterfaceTest.java    | 88 ++------------------
 src/test/python/apache/aurora/api_util.py       |  2 +-
 .../python/apache/aurora/client/api/test_api.py |  1 -
 .../aurora/client/api/test_scheduler_client.py  |  7 +-
 10 files changed, 37 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/RELEASE-NOTES.md
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 0e2e04b..46fa2d4 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -34,6 +34,7 @@
   - `TaskConfig.environment`
   - `TaskConfig.jobName`
   - `TaskQuery.owner`
+- Removed deprecated `AddInstancesConfig` parameter to `addInstances` RPC.
 - Removed deprecated executor argument `-announcer-enable`, which was a no-op in 0.12.0.
 - Removed deprecated API constructs related to Locks:
   - removed RPCs that managed locks

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/api/src/main/thrift/org/apache/aurora/gen/api.thrift
----------------------------------------------------------------------
diff --git a/api/src/main/thrift/org/apache/aurora/gen/api.thrift b/api/src/main/thrift/org/apache/aurora/gen/api.thrift
index 47ab500..fc038d7 100644
--- a/api/src/main/thrift/org/apache/aurora/gen/api.thrift
+++ b/api/src/main/thrift/org/apache/aurora/gen/api.thrift
@@ -299,13 +299,6 @@ struct JobSummary {
   3: optional i64 nextCronRunMs
 }
 
-/** A request to add the following instances to an existing job. Used by addInstances. */
-struct AddInstancesConfig {
-  1: JobKey key
-  2: TaskConfig taskConfig
-  3: set<i32> instanceIds
-}
-
 /** Closed range of integers. */
 struct Range {
   1: i32 first
@@ -996,12 +989,8 @@ service AuroraSchedulerManager extends ReadOnlyScheduler {
 
   /**
    * Adds new instances with the TaskConfig of the existing instance pointed by the key.
-   * TODO(maxim): remove AddInstancesConfig in AURORA-1595.
    */
-  Response addInstances(
-      1: AddInstancesConfig config,
-      3: InstanceKey key,
-      4: i32 count)
+  Response addInstances(3: InstanceKey key, 4: i32 count)
 
   // TODO(maxim): reevaluate if it's still needed when client updater is gone (AURORA-785).
   /**

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java b/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java
index b078ef0..474a403 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java
@@ -38,7 +38,6 @@ import com.google.common.collect.Maps;
 import org.aopalliance.intercept.MethodInterceptor;
 import org.aopalliance.intercept.MethodInvocation;
 import org.apache.aurora.common.stats.StatsProvider;
-import org.apache.aurora.gen.AddInstancesConfig;
 import org.apache.aurora.gen.InstanceKey;
 import org.apache.aurora.gen.JobConfiguration;
 import org.apache.aurora.gen.JobKey;
@@ -116,12 +115,6 @@ class ShiroAuthorizingParamInterceptor implements MethodInterceptor {
   private static final FieldGetter<JobUpdateKey, JobKey> JOB_UPDATE_KEY_GETTER =
       new ThriftFieldGetter<>(JobUpdateKey.class, JobUpdateKey._Fields.JOB, JobKey.class);
 
-  private static final FieldGetter<AddInstancesConfig, JobKey> ADD_INSTANCES_CONFIG_GETTER =
-      new ThriftFieldGetter<>(
-          AddInstancesConfig.class,
-          AddInstancesConfig._Fields.KEY,
-          JobKey.class);
-
   private static final FieldGetter<InstanceKey, JobKey> INSTANCE_KEY_GETTER =
       new ThriftFieldGetter<>(InstanceKey.class, InstanceKey._Fields.JOB_KEY, JobKey.class);
 
@@ -134,7 +127,6 @@ class ShiroAuthorizingParamInterceptor implements MethodInterceptor {
           FieldGetters.compose(LOCK_GETTER, LOCK_KEY_GETTER),
           LOCK_KEY_GETTER,
           JOB_UPDATE_KEY_GETTER,
-          ADD_INSTANCES_CONFIG_GETTER,
           INSTANCE_KEY_GETTER,
           new IdentityFieldGetter<>(JobKey.class));
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java b/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
index 86088d9..14abebb 100644
--- a/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
+++ b/src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
@@ -35,7 +35,6 @@ import com.google.common.collect.Multimap;
 import com.google.common.collect.Multimaps;
 import com.google.common.collect.Range;
 
-import org.apache.aurora.gen.AddInstancesConfig;
 import org.apache.aurora.gen.ConfigRewrite;
 import org.apache.aurora.gen.DrainHostsResult;
 import org.apache.aurora.gen.EndMaintenanceResult;
@@ -710,13 +709,8 @@ class SchedulerThriftInterface implements AnnotatedAuroraAdmin {
   }
 
   @Override
-  public Response addInstances(
-      @Nullable AddInstancesConfig config,
-      @Nullable InstanceKey key,
-      int count) {
-
-    IJobKey jobKey =
-        JobKeys.assertValid(IJobKey.build(config == null ? key.getJobKey() : config.getKey()));
+  public Response addInstances(InstanceKey key, int count) {
+    IJobKey jobKey = JobKeys.assertValid(IJobKey.build(key.getJobKey()));
 
     Response response = empty();
     return storage.write(storeProvider -> {
@@ -730,39 +724,28 @@ class SchedulerThriftInterface implements AnnotatedAuroraAdmin {
         FluentIterable<IScheduledTask> currentTasks = FluentIterable.from(
             storeProvider.getTaskStore().fetchTasks(Query.jobScoped(jobKey).active()));
 
-        ITaskConfig task;
-        Set<Integer> instanceIds;
-        if (config == null) {
-          if (count <= 0) {
-            return invalidRequest(INVALID_INSTANCE_COUNT);
-          }
-
-          Optional<IScheduledTask> templateTask = Iterables.tryFind(
-              currentTasks,
-              e -> e.getAssignedTask().getInstanceId() == key.getInstanceId());
-          if (!templateTask.isPresent()) {
-            return invalidRequest(INVALID_INSTANCE_ID);
-          }
-
-          task = templateTask.get().getAssignedTask().getTask();
-          int lastId = currentTasks
-              .transform(e -> e.getAssignedTask().getInstanceId())
-              .toList()
-              .stream()
-              .max(Comparator.naturalOrder()).get();
-
-          instanceIds = ContiguousSet.create(
-              Range.openClosed(lastId, lastId + count),
-              DiscreteDomain.integers());
-        } else {
-          checkNotBlank(config.getInstanceIds());
-          addMessage(response, "The AddInstancesConfig field is deprecated.");
+        if (count <= 0) {
+          return invalidRequest(INVALID_INSTANCE_COUNT);
+        }
 
-          task = configurationManager.validateAndPopulate(
-              ITaskConfig.build(config.getTaskConfig()));
-          instanceIds = ImmutableSet.copyOf(config.getInstanceIds());
+        Optional<IScheduledTask> templateTask = Iterables.tryFind(
+            currentTasks,
+            e -> e.getAssignedTask().getInstanceId() == key.getInstanceId());
+        if (!templateTask.isPresent()) {
+          return invalidRequest(INVALID_INSTANCE_ID);
         }
 
+        int lastId = currentTasks
+            .transform(e -> e.getAssignedTask().getInstanceId())
+            .toList()
+            .stream()
+            .max(Comparator.naturalOrder()).get();
+
+        Set<Integer> instanceIds = ContiguousSet.create(
+            Range.openClosed(lastId, lastId + count),
+            DiscreteDomain.integers());
+
+        ITaskConfig task = templateTask.get().getAssignedTask().getTask();
         validateTaskLimits(
             task,
             Iterables.size(currentTasks) + instanceIds.size(),
@@ -773,7 +756,7 @@ class SchedulerThriftInterface implements AnnotatedAuroraAdmin {
         return response.setResponseCode(OK);
       } catch (LockException e) {
         return error(LOCK_ERROR, e);
-      } catch (TaskDescriptionException | TaskValidationException | IllegalArgumentException e) {
+      } catch (TaskValidationException | IllegalArgumentException e) {
         return error(INVALID_REQUEST, e);
       }
     });

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/src/main/java/org/apache/aurora/scheduler/thrift/aop/AnnotatedAuroraAdmin.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/thrift/aop/AnnotatedAuroraAdmin.java b/src/main/java/org/apache/aurora/scheduler/thrift/aop/AnnotatedAuroraAdmin.java
index 73a7128..9243c92 100644
--- a/src/main/java/org/apache/aurora/scheduler/thrift/aop/AnnotatedAuroraAdmin.java
+++ b/src/main/java/org/apache/aurora/scheduler/thrift/aop/AnnotatedAuroraAdmin.java
@@ -17,7 +17,6 @@ import java.util.Set;
 
 import javax.annotation.Nullable;
 
-import org.apache.aurora.gen.AddInstancesConfig;
 import org.apache.aurora.gen.AuroraAdmin;
 import org.apache.aurora.gen.InstanceKey;
 import org.apache.aurora.gen.JobConfiguration;
@@ -66,7 +65,6 @@ public interface AnnotatedAuroraAdmin extends AuroraAdmin.Iface {
 
   @Override
   Response addInstances(
-      @AuthorizingParam @Nullable AddInstancesConfig config,
       @AuthorizingParam @Nullable InstanceKey key,
       int count) throws TException;
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/src/main/python/apache/aurora/client/api/__init__.py
----------------------------------------------------------------------
diff --git a/src/main/python/apache/aurora/client/api/__init__.py b/src/main/python/apache/aurora/client/api/__init__.py
index 294c590..bbbe67b 100644
--- a/src/main/python/apache/aurora/client/api/__init__.py
+++ b/src/main/python/apache/aurora/client/api/__init__.py
@@ -101,7 +101,7 @@ class AuroraClientAPI(object):
     key = InstanceKey(jobKey=job_key.to_thrift(), instanceId=instance_id)
     log.info("Adding %s instances to %s using the task config of instance %s"
              % (count, job_key, instance_id))
-    return self._scheduler_proxy.addInstances(None, key, count)
+    return self._scheduler_proxy.addInstances(key, count)
 
   def kill_job(self, job_key, instances=None):
     log.info("Killing tasks for job: %s" % job_key)

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java b/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
index 3facb13..e6e79a0 100644
--- a/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
@@ -28,7 +28,6 @@ import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
 
 import org.apache.aurora.common.testing.easymock.EasyMockTest;
-import org.apache.aurora.gen.AddInstancesConfig;
 import org.apache.aurora.gen.AssignedTask;
 import org.apache.aurora.gen.AuroraAdmin;
 import org.apache.aurora.gen.ConfigRewrite;
@@ -1237,55 +1236,6 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
     }
   }
 
-  private static AddInstancesConfig createInstanceConfig(TaskConfig task) {
-    return new AddInstancesConfig()
-        .setTaskConfig(task)
-        .setInstanceIds(ImmutableSet.of(0))
-        .setKey(JOB_KEY.newBuilder());
-  }
-
-  @Test
-  public void testAddInstances() throws Exception {
-    ITaskConfig populatedTask = ITaskConfig.build(populatedTask());
-    expectNoCronJob();
-    lockManager.assertNotLocked(LOCK_KEY);
-    storageUtil.expectTaskFetch(Query.jobScoped(JOB_KEY).active());
-    expect(taskIdGenerator.generate(populatedTask, 1))
-        .andReturn(TASK_ID);
-    expectInstanceQuotaCheck(populatedTask, ENOUGH_QUOTA);
-    stateManager.insertPendingTasks(
-        storageUtil.mutableStoreProvider,
-        populatedTask,
-        ImmutableSet.of(0));
-
-    control.replay();
-
-    AddInstancesConfig config = createInstanceConfig(populatedTask.newBuilder());
-    assertOkResponse(deprecatedAddInstances(config));
-  }
-
-  @Test
-  public void testAddInstancesWithNullLock() throws Exception {
-    ITaskConfig populatedTask = ITaskConfig.build(populatedTask());
-    AddInstancesConfig config = createInstanceConfig(populatedTask.newBuilder());
-    expectNoCronJob();
-    lockManager.assertNotLocked(LOCK_KEY);
-    storageUtil.expectTaskFetch(Query.jobScoped(JOB_KEY).active());
-    expect(taskIdGenerator.generate(populatedTask, 1))
-        .andReturn(TASK_ID);
-    expectInstanceQuotaCheck(populatedTask, ENOUGH_QUOTA);
-    stateManager.insertPendingTasks(
-        storageUtil.mutableStoreProvider,
-        populatedTask,
-        ImmutableSet.of(0));
-
-    control.replay();
-
-    Response response = deprecatedAddInstances(config);
-    assertOkResponse(response);
-    assertMessageMatches(response, "The AddInstancesConfig field is deprecated.");
-  }
-
   @Test
   public void testAddInstancesWithInstanceKey() throws Exception {
     expectNoCronJob();
@@ -1305,7 +1255,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     control.replay();
 
-    assertOkResponse(newAddInstances(INSTANCE_KEY, 2));
+    assertOkResponse(thrift.addInstances(INSTANCE_KEY, 2));
   }
 
   @Test
@@ -1318,7 +1268,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     assertEquals(
         invalidResponse(SchedulerThriftInterface.INVALID_INSTANCE_ID),
-        newAddInstances(INSTANCE_KEY, 2));
+        thrift.addInstances(INSTANCE_KEY, 2));
   }
 
   @Test
@@ -1331,19 +1281,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     assertEquals(
         invalidResponse(SchedulerThriftInterface.INVALID_INSTANCE_COUNT),
-        newAddInstances(INSTANCE_KEY, 0));
-  }
-
-  @Test
-  public void testAddInstancesFailsConfigCheck() throws Exception {
-    AddInstancesConfig config = createInstanceConfig(INVALID_TASK_CONFIG);
-    expectNoCronJob();
-    storageUtil.expectTaskFetch(Query.jobScoped(JOB_KEY).active());
-    lockManager.assertNotLocked(LOCK_KEY);
-
-    control.replay();
-
-    assertResponse(INVALID_REQUEST, deprecatedAddInstances(config));
+        thrift.addInstances(INSTANCE_KEY, 0));
   }
 
   @Test
@@ -1352,7 +1290,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     control.replay();
 
-    assertResponse(INVALID_REQUEST, newAddInstances(INSTANCE_KEY, 1));
+    assertResponse(INVALID_REQUEST, thrift.addInstances(INSTANCE_KEY, 1));
   }
 
   @Test(expected = StorageException.class)
@@ -1361,7 +1299,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     control.replay();
 
-    newAddInstances(INSTANCE_KEY, 1);
+    thrift.addInstances(INSTANCE_KEY, 1);
   }
 
   @Test
@@ -1372,7 +1310,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     control.replay();
 
-    assertResponse(LOCK_ERROR, newAddInstances(INSTANCE_KEY, 1));
+    assertResponse(LOCK_ERROR, thrift.addInstances(INSTANCE_KEY, 1));
   }
 
   @Test
@@ -1391,7 +1329,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     control.replay();
 
-    assertResponse(INVALID_REQUEST, newAddInstances(INSTANCE_KEY, 1));
+    assertResponse(INVALID_REQUEST, thrift.addInstances(INSTANCE_KEY, 1));
   }
 
   @Test
@@ -1407,7 +1345,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     control.replay();
 
-    assertResponse(INVALID_REQUEST, newAddInstances(INSTANCE_KEY, 1));
+    assertResponse(INVALID_REQUEST, thrift.addInstances(INSTANCE_KEY, 1));
   }
 
   @Test
@@ -1428,15 +1366,7 @@ public class SchedulerThriftInterfaceTest extends EasyMockTest {
 
     control.replay();
 
-    assertResponse(INVALID_REQUEST, newAddInstances(INSTANCE_KEY, 1));
-  }
-
-  private Response newAddInstances(InstanceKey key, int count) throws Exception {
-    return thrift.addInstances(null, key, count);
-  }
-
-  private Response deprecatedAddInstances(AddInstancesConfig config) throws Exception {
-    return thrift.addInstances(config, null, 0);
+    assertResponse(INVALID_REQUEST, thrift.addInstances(INSTANCE_KEY, 1));
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/src/test/python/apache/aurora/api_util.py
----------------------------------------------------------------------
diff --git a/src/test/python/apache/aurora/api_util.py b/src/test/python/apache/aurora/api_util.py
index 4fde4ba..983cde4 100644
--- a/src/test/python/apache/aurora/api_util.py
+++ b/src/test/python/apache/aurora/api_util.py
@@ -88,7 +88,7 @@ class SchedulerThriftApiSpec(ReadOnlyScheduler.Iface):
   def killTasks(self, jobKey, instances):
     pass
 
-  def addInstances(self, config, key, count):
+  def addInstances(self, key, count):
     pass
 
   def replaceCronTemplate(self, config):

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/src/test/python/apache/aurora/client/api/test_api.py
----------------------------------------------------------------------
diff --git a/src/test/python/apache/aurora/client/api/test_api.py b/src/test/python/apache/aurora/client/api/test_api.py
index 0dd4b41..9e2e2fa 100644
--- a/src/test/python/apache/aurora/client/api/test_api.py
+++ b/src/test/python/apache/aurora/client/api/test_api.py
@@ -118,7 +118,6 @@ class TestJobUpdateApis(unittest.TestCase):
     api.add_instances(job_key, 1, 10)
 
     mock_proxy.addInstances.assert_called_once_with(
-        None,
         InstanceKey(jobKey=job_key.to_thrift(), instanceId=1),
         10)
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/11d5a72a/src/test/python/apache/aurora/client/api/test_scheduler_client.py
----------------------------------------------------------------------
diff --git a/src/test/python/apache/aurora/client/api/test_scheduler_client.py b/src/test/python/apache/aurora/client/api/test_scheduler_client.py
index bd7c834..afbd385 100644
--- a/src/test/python/apache/aurora/client/api/test_scheduler_client.py
+++ b/src/test/python/apache/aurora/client/api/test_scheduler_client.py
@@ -147,12 +147,9 @@ class TestSchedulerProxyInjection(unittest.TestCase):
     self.make_scheduler_proxy().getQuota(ROLE)
 
   def test_addInstances(self):
-    self.mock_thrift_client.addInstances(
-      IsA(JobKey),
-      IgnoreArg(),
-      IsA(Lock)).AndReturn(DEFAULT_RESPONSE)
+    self.mock_thrift_client.addInstances(IsA(JobKey), 1).AndReturn(DEFAULT_RESPONSE)
     self.mox.ReplayAll()
-    self.make_scheduler_proxy().addInstances(JobKey(), {}, Lock())
+    self.make_scheduler_proxy().addInstances(JobKey(), 1)
 
   def test_getJobUpdateSummaries(self):
     self.mock_thrift_client.getJobUpdateSummaries(IsA(JobUpdateQuery)).AndReturn(DEFAULT_RESPONSE)