Package com.alu.e3.installer.command

Examples of com.alu.e3.installer.command.SSHCommand


    if(allowedHttpMethods==null || allowedHttpMethods.isEmpty())
      return;

    Object methodheader = exchange.getIn().getHeader(Exchange.HTTP_METHOD);
    if(methodheader == null){
      throw new GatewayException(GatewayExceptionCode.HTTP_METHOD, "No HTTP Method");
    }
   
    for(String m : allowedHttpMethods){
      if(m.equals(methodheader.toString().toLowerCase())){
        return;
      }
    }
   
    throw new GatewayException(GatewayExceptionCode.HTTP_METHOD, "Method "+methodheader.toString()+" not allowed");
  }
View Full Code Here


    this.apiId = apiId;
  }

  @Override
  public Producer createProducer() throws Exception {
    return new IpWhiteListProducer(this, dataManager, apiId);
  }
View Full Code Here

  {
    ServletContextHandler context = new ServletContextHandler(server, "/",
        ServletContextHandler.NO_SECURITY | ServletContextHandler.NO_SESSIONS);
    context.setConnectorNames(new String[] {connector.getName()});

    DispatchingContinuationServlet servlet = new DispatchingContinuationServlet();
    servlet.setDispatcher(new TreeDispatcher<HttpConsumer>());
    Long timeout = endpoint.getContinuationTimeout() != null ? endpoint
        .getContinuationTimeout() : getContinuationTimeout();
    if (timeout != null) {
      servlet.setContinuationTimeout(timeout);
    }

    ServletHolder holder = new ServletHolder();
    holder.setServlet(servlet);
    context.addServlet(holder, "/*");
 
View Full Code Here

    long bytesCollected = 0L;
    String ipAddress = logSource.getInternalIP();
    if(logger.isDebugEnabled()) {
      logger.debug("trying to connect to {} via ssh ...", ipAddress);
    }
    SSHCommand sshCommand = new SSHCommand();
    sshCommand.connect(logDestination.getSSHKey(), ipAddress, 22, logSource.getUser(), logSource.getPassword(), sshSessionTimeout);         
   
    // Start with E3Appender Java logs first
    // Get a local copy of the logging config file to determine log-file path
    String remoteLogPath = null;
    File localConfigFile = new File(instanceCollectionDir, "java-logging.cfg");
    String localConfigFilePath = localConfigFile.getAbsolutePath();
    if (copyRemoteConfigFile(sshCommand, localConfigFilePath, LogFileSource.JAVA)) {
      remoteLogPath = LoggingUtil.getLogFilePathFromConfigFile(localConfigFilePath, LogFileSource.JAVA, false)
    } else {
      logger.warn("Couldn't retrieve E3 Java logging config file from host {}, will try default path", ipAddress);     
    }
    if ((remoteLogPath == null) || (remoteLogPath.length() == 0)) {
      // If we can't find a logging config file with an E3Appender section,
      // look anyway in the usual servicemix log directory for any log files with the default name
      logger.warn("Instance at {} is not using E3Appender (check log-config file: {})", ipAddress, LoggingUtil.defaultConfigPath);
      remoteLogPath = LoggingUtil.defaultLogPath;
    }
    File localTargetDir = createLocalLogTargetDir(instanceCollectionDir, LogFileSource.JAVA);
    if (localTargetDir == null) {
      logger.warn("Couldn't create log-collection directory: {}", instanceCollectionDir + File.separator + LogFileSource.JAVA.toString());
    } else {
      File remoteLog = new File(remoteLogPath);
      List<FileInfo> logList = getMatchingRemoteFileList(sshCommand, remoteLog.getParent(), remoteLog.getName());
      for (FileInfo remoteFileInfo : logList) {
        File localCopy = new File(localTargetDir, targetNameForLogFile(remoteFileInfo, localTargetDir));
        try {
          bytesCollected += copyRemoteFileWithWorkingTemp(sshCommand, remoteFileInfo, localCopy.getAbsolutePath(), deleteAfterCollect);
        } catch (Exception ex) {
          // Continue copy attempts if we experience an error
          logger.warn("Failed to copy remote file: {} ({})", remoteFileInfo.filePath, ex.getLocalizedMessage());
        }
      } 
    }
   
    // Now try to get the remote serviceMix log files
    // We use the same log-config file as the java logs to parse the path
    remoteLogPath = LoggingUtil.getLogFilePathFromConfigFile(localConfigFilePath, LogFileSource.SMX, false);
    localConfigFile.delete()// no longer needed
    if ((remoteLogPath == null) || (remoteLogPath.length() == 0)) {
      // If we can't find a logging config file with the proper appender section,
      // look anyway in the usual servicemix log directory for any log files with the default name
      logger.warn("Instance at {} is not using expected appender for servicemix rootLogger (check log-config file: {})", ipAddress, LoggingUtil.defaultConfigPath);
      remoteLogPath = LoggingUtil.defaultSMXLogPath;
    }
    localTargetDir = createLocalLogTargetDir(instanceCollectionDir, LogFileSource.SMX);
    if (localTargetDir == null) {
      logger.warn("Couldn't create log-collection directory: {}", instanceCollectionDir + File.separator + LogFileSource.SMX.toString());
    } else {
      File remoteLog = new File(remoteLogPath);
      List<FileInfo> logList = getMatchingRemoteFileList(sshCommand, remoteLog.getParent(), remoteLog.getName());
      for (FileInfo remoteFileInfo : logList) {
        File localCopy = new File(localTargetDir, targetNameForLogFile(remoteFileInfo, localTargetDir));
        try {
          bytesCollected += copyRemoteFileWithWorkingTemp(sshCommand, remoteFileInfo, localCopy.getAbsolutePath(), deleteAfterCollect);
        } catch (Exception ex) {
          // Continue copy attempts if we experience an error
          logger.warn("Failed to copy remote file: {} ({})", remoteFileInfo.filePath, ex.getLocalizedMessage());
        }
      }
    }
   
    // Collect the E3-specific syslog files
    // For syslog we parse the rsyslog config file for the log-file path
    localConfigFile = new File(instanceCollectionDir, "syslog.cfg");
    localConfigFilePath = localConfigFile.getAbsolutePath();
    if (copyRemoteConfigFile(sshCommand, localConfigFilePath, LogFileSource.SYSLOG)) {
      remoteLogPath = NonJavaLogger.getLogFilePathFromConfigFile(localConfigFilePath);
      localConfigFile.delete()
    } else {
      logger.warn("Couldn't retrieve E3 syslog config file from host {}", ipAddress);     
    }
    if ((remoteLogPath == null) || (remoteLogPath.length() == 0)) {
      // Try default path
      remoteLogPath = NonJavaLogger.defaultLogFilePath;
      logger.warn("Instance at {} does not specify an E3-specific syslog file, trying default: {}", ipAddress, remoteLogPath);
    }
    localTargetDir = createLocalLogTargetDir(instanceCollectionDir, LogFileSource.SYSLOG);
    if (localTargetDir == null) {
      logger.warn("Couldn't create log-collection directory: {}", instanceCollectionDir + File.separator + LogFileSource.SYSLOG.toString());
    } else {
      File remoteLog = new File(remoteLogPath);
      List<FileInfo> logList = getMatchingRemoteFileList(sshCommand, remoteLog.getParent(), remoteLog.getName());
      for (FileInfo remoteFileInfo : logList) {
        File localCopy = new File(localTargetDir, targetNameForLogFile(remoteFileInfo, localTargetDir));
        try {
          bytesCollected += copyRemoteFileWithWorkingTemp(sshCommand, remoteFileInfo, localCopy.getAbsolutePath(), deleteAfterCollect);
        } catch (Exception ex) {
          // Continue copy attempts if we experience an error
          logger.warn("Failed to copy remote file: {} ({})", remoteFileInfo.filePath, ex.getLocalizedMessage());
        }
      }
    }
   
    // We're done - disconnect and return number of bytes copied
    sshCommand.disconnect();
    if(logger.isDebugEnabled()) {
      logger.debug("connected/disconnected!");
    }
    return bytesCollected;
  }
View Full Code Here

    // First, try to open a new SSH session to instance
    // Note: use TRACE-level logging here since our output may appear in retrieved log lines
    String ipAddress = logSource.getInternalIP();
    logger.trace("trying to connect to {} via ssh ...", ipAddress);
   
    SSHCommand sshCommand = new SSHCommand();
    sshCommand.connect(logDestination.getSSHKey(), ipAddress, 22, logSource.getUser(), logSource.getPassword(), sshSessionTimeout);         

    // Start with E3Appender Java log first
    // Get a local copy of the logging config file to determine log-file path
    String remoteLogPath = null;
    File localConfigFile = File.createTempFile("java-logging", ".cfg");
View Full Code Here

                    logger.debug("using key: " + key.getName());
                  }
                }
               
                /* Connect via ssh. */
                SSHCommand sshCommand = (SSHCommand) cmd;
                sshCommand.connect(key, localizedGatewayIP, 22, instance.getUser(), instance.getPassword());
               
                if (!sshCommand.isConnected())
                {
                  String errorSshMsg = "Error: ssh connection to " + localizedGatewayIP+  " failed (sshkey=";
                  errorSshMsg += (key == null) ? "not defined " : key.getName();
                  errorSshMsg += "user=" + instance.getUser() + ")";
                  throw new InstallerDeployException(errorSshMsg);
                }
               
                if(logger.isDebugEnabled()) {
                  logger.debug("command type: " + cmd.getImplementationType());
                }
               
                /* check if the destination directory already exists. */
                ShellCommandResult dirExistResult = cmd.execShellCommand("ls "+ config.getRemotePath() + "/bin/install.sh");
                if (dirExistResult.getExitStatus() != 0)
                {
                  /* Create the destination directory */
                  ShellCommandResult dirCreateResult = cmd.execShellCommand("mkdir -p -m 755 "+ config.getRemotePath());
                  if (dirCreateResult.getExitStatus() != 0)
                  {
                    throw new InstallerDeployException("Unable to create remote destination directory "+ config.getRemotePath() + ".");
                  }
               
                  /* Remote copy the package. */
                  if(logger.isDebugEnabled()) {
                    logger.debug("package url: " + config.getPackageUrl());
                  }
                  URL urlPackage = new URL(config.getPackageUrl());
                  String strFilename;
                  if (urlPackage.getProtocol().equals("file"))
                  {
                    strFilename = new File(urlPackage.getFile()).getName();
                    cmd.copy(urlPackage.getFile(), config.getRemotePath() + "/" + strFilename);
                   
                  } else {
                    /* TODO: handle HTTP package URL ? */
                    if(logger.isDebugEnabled()) {
                      logger.debug("URL type " + urlPackage.getProtocol() + " is not supported yet.");
                    }
                    continue;
                  }
               
                  /* Unzip TODO: instaler filename and install location in config */
                  ShellCommandResult cmdRes = cmd.execShellCommand("tar xfz " + strFilename, config.getRemotePath());
                  if (cmdRes.getExitStatus() != 0)
                  {
                    /* unzip has failed, display output. TODO: handle failure */
                    throw new InstallerDeployException("Unzip archive" + strFilename + " failed (returned code: "+ cmdRes + ")");
                  }
                } else{
                  // version already installed in the gateway                 
                  if(logger.isErrorEnabled()) {
                    logger.error("WARNING: " + config.getRemotePath() + " already exist on gateway " + localizedGatewayIP);
                  }
                 
                  report.append("WARNING: " + config.getRemotePath() + " already exist on gateway " + localizedGatewayIP + ". " +
                      "Be carefull this existing binary was used. Remove it first to use the new binary content !!! \n");

                }
               
                String fullyQualifiedInstallerCmd = replaceManagerIPPattern(config.getInstallerCmd(), managerIP);
                if(logger.isDebugEnabled()) {
                  logger.debug("Executing shell command '" + fullyQualifiedInstallerCmd + "'");
                }
               
                /* Launch Install. */
                ShellCommandResult cmdResInstallation = cmd.execShellCommand(fullyQualifiedInstallerCmd, config.getRemotePath());
                if (cmdResInstallation.getExitStatus() != 0)
                {
                  /* remote installation has failed, display output. */
                  throw new InstallerDeployException("Installation has failed while executing command [" + fullyQualifiedInstallerCmd + "]\ndetails:"+ cmdResInstallation);
                }
                 
                /* Launch sanity check. */
                ShellCommandResult cmdResSanityCheck = cmd.execShellCommand(config.getSanityCheckCmd(), config.getRemotePath());
                if (cmdResSanityCheck.getExitStatus() != 0)
                {
                  /* remote installation has failed, display output. TODO: handle failure */
                  throw new InstallerDeployException("Sanity check has failed  while executing command ["+ config.getSanityCheckCmd() + "] in the folder [" + config.getRemotePath() + "]\nDetails:"+ cmdResSanityCheck);
                }
              }
              else { // Local
                //if ("E3Gateway".equals(instance.getType())) {
               
                String generateNatureCmd = config.getGenerateNatureCmd();
                if (generateNatureCmd != null && !generateNatureCmd.isEmpty())
                {
               
                  String fullyQualifiedGenerateNatureCmd = replaceManagerIPPattern(generateNatureCmd, managerIP);
                  if(logger.isDebugEnabled()) {
                    logger.debug("Executing shell command '" + fullyQualifiedGenerateNatureCmd + "'");
                  }
                 
                  /* Get the ssh key. TODO: handle case without sshkey (eg. if user/password provided) */
                  SSHKey key = instance.getSSHKey();
                  if (key != null) {
                    if(logger.isDebugEnabled()) {
                      logger.debug("using key: " + key.getName());
                    }
                  }
                  /* Connect via ssh. */
                  SSHCommand sshCommand = (SSHCommand) cmd;
                  sshCommand.connect(key, localizedGatewayIP, 22, instance.getUser(), instance.getPassword());
                 
                  if (!sshCommand.isConnected())
                  {
                    String errorSshMsg = "Error: ssh connection to" + localizedGatewayIP+  " failed (sshkey=";
                    errorSshMsg += (key == null) ? "not defined " : key.getName();
                    errorSshMsg += "user=" + instance.getUser() + ")";
                    throw new InstallerDeployException(errorSshMsg);
View Full Code Here

    if (LOG.isDebugEnabled())
      LOG.debug("Update API ID: {}", apiId);

    // check API ID same in Pay-load/URL
    if (api == null || api.getId() == null)
      throw new WebApplicationException(new ProvisionException(ApplicationCodeConstants.API_ID_NOT_PROVIDED, "API ID missing in the body for Update operation"));

    if (!api.getId().equals(apiId))
      throw new WebApplicationException(new ProvisionException(ApplicationCodeConstants.API_ID_MISMATCH, "API ID not the same in URL vs Body for Update operation: +" + apiId + "/" + apiId));

    Action action = new Action() {
      protected Object doAction(Object... params) {
        try {
          apiService.update(api);
View Full Code Here

    Action action = new Action() {

      protected Object doAction(Object... params) {
        try {
          Api api = apiService.get(apiId);
          return new ApiResponse(ApiResponse.SUCCESS, api);

        } catch (ProvisionException e) {
          throw new WebApplicationException(e);
        }
View Full Code Here

    provisionData.setValidation(fromDataModel(api.getValidation()));
    provisionData.setHeaderTransEnabled(api.getHeaderTransEnabled());
    provisionData.setInternal(api.getInternal());
   
    ApiProxySettings proxySettings = null;
   
    if(api.isUseGlobalProxy()){
      proxySettings = new ApiProxySettings();
      proxySettings.setGlobalProxy(new ApiProxySettings.GlobalProxy());
    }else if(api.getForwardProxy() != null){
      proxySettings = new ApiProxySettings();
      proxySettings.setLocalProxy(fromDataModel(api.getForwardProxy()));
    }
    provisionData.setProxySettings(proxySettings);
   
    return provisionData;
  }
View Full Code Here

        try {
          apiService.create(api);
        } catch (ProvisionException e) {
          throw new WebApplicationException(e);
        }
        return new ApiResponse(ApiResponse.SUCCESS, api.getId());
      }
    };

    return execute(action, (Object) null);
   
View Full Code Here

TOP

Related Classes of com.alu.e3.installer.command.SSHCommand

Copyright © 2018 www.massapicom. 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.