content: /**
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.aurora.scheduler.thrift.aop;
  
  import java.util.Set;
  
  import javax.annotation.Nullable;
  
  import org.apache.aurora.gen.AuroraAdmin;
  import org.apache.aurora.gen.InstanceKey;
  import org.apache.aurora.gen.JobConfiguration;
  import org.apache.aurora.gen.JobKey;
  import org.apache.aurora.gen.JobUpdateKey;
  import org.apache.aurora.gen.JobUpdateRequest;
  import org.apache.aurora.gen.Response;
  import org.apache.aurora.scheduler.http.api.security.AuthorizingParam;
  import org.apache.thrift.TException;
  
  /**
   * Extension of the generated thrift interface with Java annotations, for example {@link Nullable}
   * and {@link AuthorizingParam}.
   *
   * When adding new methods to api.thrift you should add, at the very least, {@link Nullable}
   * annotations for them here as well.
   *
   * TODO(ksweeney): Investigate adding other (JSR303) validation annotations here as well.
   *
   * TODO(ksweeney): Consider disallowing throwing subclasses by removing {@code throws TException}.
   */
  public interface AnnotatedAuroraAdmin extends AuroraAdmin.Iface {
    @Override
    Response createJob(@AuthorizingParam @Nullable JobConfiguration description) throws TException;
  
    @Override
    Response scheduleCronJob(
        @AuthorizingParam @Nullable JobConfiguration description) throws TException;
  
    @Override
    Response descheduleCronJob(@AuthorizingParam @Nullable JobKey job) throws TException;
  
    @Override
    Response startCronJob(
        @AuthorizingParam @Nullable JobKey job) throws TException;
  
    @Override
    Response restartShards(
        @AuthorizingParam @Nullable JobKey job,
        @Nullable Set<Integer> shardIds) throws TException;
  
    @Override
    Response killTasks(
        @AuthorizingParam @Nullable JobKey job,
        @Nullable Set<Integer> instances,
        @Nullable String message) throws TException;
  
    @Override
    Response addInstances(
        @AuthorizingParam @Nullable InstanceKey key,
        int count) throws TException;
  
    @Override
    Response replaceCronTemplate(
        @AuthorizingParam @Nullable JobConfiguration config) throws TException;
  
    @Override
    Response startJobUpdate(
        @AuthorizingParam @Nullable JobUpdateRequest request,
        @Nullable String message) throws TException;
  
    @Override
    Response pauseJobUpdate(
        @AuthorizingParam @Nullable JobUpdateKey key,
        @Nullable String message) throws TException;
  
    @Override
    Response resumeJobUpdate(
        @AuthorizingParam @Nullable JobUpdateKey key,
        @Nullable String message) throws TException;
  
    @Override
    Response abortJobUpdate(
        @AuthorizingParam @Nullable JobUpdateKey key,
        @Nullable String message) throws TException;
  
    @Override
    Response pulseJobUpdate(
        @AuthorizingParam @Nullable JobUpdateKey key) throws TException;
  
    @Override
    Response rollbackJobUpdate(
        @AuthorizingParam @Nullable JobUpdateKey key,
        @Nullable String message) throws TException;
  }
  