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

org.microbean.helm.maven.RollbackReleaseMojo Maven / Gradle / Ivy

There is a newer version: 2.8.2.1.1.2
Show newest version
/* -*- mode: Java; c-basic-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
 *
 * Copyright © 2017 MicroBean.
 *
 * 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.microbean.helm.maven;

import java.util.Objects;

import java.util.concurrent.Callable;
import java.util.concurrent.Future;

import hapi.release.ReleaseOuterClass.Release;

import hapi.services.tiller.Tiller.RollbackReleaseRequest;
import hapi.services.tiller.Tiller.RollbackReleaseResponse;

import org.apache.maven.plugin.logging.Log;

import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;

import org.microbean.helm.ReleaseManager;

/**
 * Rolls
 * a release back to a prior version.
 *
 * @author Laird Nelson
 */
@Mojo(name = "rollback")
public class RollbackReleaseMojo extends AbstractForceableMutatingReleaseMojo {


  /*
   * Instance fields.
   */


  /**
   * The version to roll back to.
   */
  @Parameter(required = true)
  private Integer version;


  /*
   * Constructors.
   */
  

  /**
   * Creates a new {@link RollbackReleaseMojo}.
   */
  public RollbackReleaseMojo() {
    super();
  }


  /*
   * Instance methods.
   */


  /**
   * {@inheritDoc}
   *
   * 

This implementation rolls * a named release back to a {@linkplain #getVersion() prior * version}.

*/ @Override protected void execute(final Callable releaseManagerCallable) throws Exception { Objects.requireNonNull(releaseManagerCallable); final Log log = this.getLog(); assert log != null; final Integer version = this.getVersion(); if (version == null) { throw new IllegalStateException("version was not specified"); } final RollbackReleaseRequest.Builder requestBuilder = RollbackReleaseRequest.newBuilder(); assert requestBuilder != null; requestBuilder.setDisableHooks(this.getDisableHooks()); requestBuilder.setDryRun(this.getDryRun()); requestBuilder.setForce(this.getForce()); requestBuilder.setRecreate(this.getRecreate()); final String releaseName = this.getReleaseName(); if (releaseName != null) { requestBuilder.setName(releaseName); } requestBuilder.setTimeout(this.getTimeout()); requestBuilder.setVersion(version.intValue()); requestBuilder.setWait(this.getWait()); final ReleaseManager releaseManager = releaseManagerCallable.call(); if (releaseManager == null) { throw new IllegalStateException("releaseManagerCallable.call() == null"); } if (log.isInfoEnabled()) { log.info("Rolling back release " + requestBuilder.getName()); } final Future rollbackReleaseResponseFuture = releaseManager.rollback(requestBuilder.build()); assert rollbackReleaseResponseFuture != null; final RollbackReleaseResponse rollbackReleaseResponse = rollbackReleaseResponseFuture.get(); assert rollbackReleaseResponse != null; if (log.isInfoEnabled()) { final Release release = rollbackReleaseResponse.getRelease(); assert release != null; log.info("Rolled back release " + release.getName()); } } /** * Returns the version of the release to roll back to. * *

This method may return {@code null}.

* *

Overrides of this method are permitted to return {@code null}.

* * @return the version of the release to roll back to, or {@code * null} * * @see #setVersion(Integer) */ public Integer getVersion() { return this.version; } /** * Sets the version of the release to roll back to. * * @param version the version to roll back to; must not be {@code * null} * * @exception NullPointerException if {@code version} is {@code * null} * * @see #getVersion() */ public void setVersion(final Integer version) { Objects.requireNonNull(version); this.version = version; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy