Package com.vmware.bdd.cli.commands

Source Code of com.vmware.bdd.cli.commands.DistroCommands

/*****************************************************************************
*   Copyright (c) 2012-2014 VMware, Inc. All Rights Reserved.
*   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.vmware.bdd.cli.commands;

import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.shell.core.CommandMarker;
import org.springframework.shell.core.annotation.CliAvailabilityIndicator;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
import org.springframework.stereotype.Component;

import com.vmware.bdd.apitypes.DistroRead;
import com.vmware.bdd.cli.rest.AppManagerRestClient;
import com.vmware.bdd.cli.rest.CliRestException;
import com.vmware.bdd.cli.rest.DistroRestClient;

@Component
public class DistroCommands implements CommandMarker {
   @Autowired
   private DistroRestClient restClient;
   @Autowired
   private AppManagerRestClient appManagerRestClient;

   @CliAvailabilityIndicator({ "distro help" })
   public boolean isCommandAvailable() {
      return true;
   }

   @CliCommand(value = "distro list", help = "Get distribution information")
   public void getDistro(
         @CliOption(key = { "name" }, mandatory = false, help = "The distribution name") final String name,
         @CliOption(key = { "appManager" }, mandatory = false, help = "The application manager name") final String appManager,
         @CliOption(key = { "detail" }, mandatory = false, specifiedDefaultValue = "true", unspecifiedDefaultValue = "false", help = "flag to show detail information") final boolean detail) {

      String appmanager;
      if (CommandsUtils.isBlank(appManager)) {
         appmanager = Constants.IRONFAN;
      } else {
         appmanager = appManager;
      }
      // rest invocation
      try {
         if (name == null) {
            DistroRead[] distros = appManagerRestClient.getDistros(appmanager);
            prettyOutputDistrosInfo(distros);
         } else {
            DistroRead distro = appManagerRestClient.getDistroByName(appmanager, name);
            prettyOutputDistroInfo(distro);
         }
      } catch (CliRestException e) {
         CommandsUtils.printCmdFailure(Constants.OUTPUT_OBJECT_DISTRO, name,
               Constants.OUTPUT_OP_LIST, Constants.OUTPUT_OP_RESULT_FAIL,
               e.getMessage());
      }
   }

   private void prettyOutputDistrosInfo(DistroRead[] distros) {
      if (distros != null) {
         Arrays.sort(distros);
         LinkedHashMap<String, List<String>> distroColumnNamesWithGetMethodNames =
               new LinkedHashMap<String, List<String>>();
         distroColumnNamesWithGetMethodNames.put(
               Constants.FORMAT_TABLE_COLUMN_NAME, Arrays.asList("getName"));
         distroColumnNamesWithGetMethodNames.put(
               Constants.FORMAT_TABLE_COLUMN_VENDOR, Arrays.asList("getVendor"));
         distroColumnNamesWithGetMethodNames.put(
               Constants.FORMAT_TABLE_COLUMN_VERSION, Arrays.asList("getVersion"));
         distroColumnNamesWithGetMethodNames.put(
               Constants.FORMAT_TABLE_COLUMN_HVE, Arrays.asList("isHveSupported"));
         distroColumnNamesWithGetMethodNames.put(
               Constants.FORMAT_TABLE_COLUMN_ROLES, Arrays.asList("getRoles"));
         try {
            CommandsUtils.printInTableFormat(
                  distroColumnNamesWithGetMethodNames, distros,
                  Constants.OUTPUT_INDENT);
         } catch (Exception e) {
            String distroName = null;
            if (distros.length == 1) {
               distroName = distros[0].getName();
            }
            CommandsUtils.printCmdFailure(Constants.OUTPUT_OBJECT_DISTRO, distroName,
                  Constants.OUTPUT_OP_LIST, Constants.OUTPUT_OP_RESULT_FAIL,
                  e.getMessage());
         }
      }
   }

   private void prettyOutputDistroInfo(DistroRead distroRead) {
      if (distroRead != null)
         prettyOutputDistrosInfo(new DistroRead[] { distroRead });
   }
}
TOP

Related Classes of com.vmware.bdd.cli.commands.DistroCommands

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.