All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.spinnaker.clouddriver.google.deploy.ops.discovery.AbstractEnableDisableInstancesInDiscoveryOperation.groovy Maven / Gradle / Ivy

There is a newer version: 5.89.0
Show newest version
/*
 * Copyright 2016 Google, Inc.
 *
 * 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 com.netflix.spinnaker.clouddriver.google.deploy.ops.discovery

import com.netflix.spinnaker.clouddriver.consul.deploy.ops.EnableDisableConsulInstance
import com.netflix.spinnaker.clouddriver.data.task.Task
import com.netflix.spinnaker.clouddriver.data.task.TaskRepository
import com.netflix.spinnaker.clouddriver.google.deploy.description.GoogleInstanceListDescription
import com.netflix.spinnaker.clouddriver.orchestration.AtomicOperation

abstract class AbstractEnableDisableInstancesInDiscoveryOperation implements AtomicOperation {
  abstract boolean isDisable()

  abstract String getPhaseName()

  GoogleInstanceListDescription description

  AbstractEnableDisableInstancesInDiscoveryOperation(GoogleInstanceListDescription description) {
    this.description = description
  }

  Task getTask() {
    TaskRepository.threadLocalTask.get()
  }

  @Override
  Void operate(List priorOutputs) {
    def credentials = description.credentials
    def instances = description.instanceIds
    String verb = disable ? 'disable' : 'enable'
    String presentParticipling = disable ? 'Disabling' : 'Enabling'

    task.updateStatus phaseName, "Initializing $verb server group operation for instances $instances in " +
      "$description.region..."

    if (!credentials.consulConfig?.enabled) {
      throw new IllegalArgumentException("Consul isn't enabled for account $credentials.name.")
    }

    instances.each { String instance ->
      task.updateStatus phaseName, "$presentParticipling instance $instance..."
      EnableDisableConsulInstance.operate(credentials.consulConfig,
        instance,
        disable
          ? EnableDisableConsulInstance.State.disable
          : EnableDisableConsulInstance.State.enable)
    }

    return null
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy