package clouds.base; @Deprecated // replaced by another mechanism abstract public class AbstractBootstrapCloudHandler { // protected static Logger logger = LoggerFactory.getLogger( AbstractBootstrapCloudHandler.class ); // // @Inject // protected ExecutorFactory executorFactory; // // @Inject // protected CloudifyRestClient cloudifyRestClient; // // @Override // public ServerNode bootstrapCloud( ServerNode serverNode, Conf conf ) { // logger.info( "Bootstrap [" + getCloudProvider().label + "] cloud" ); // // serverNode.setRemote( true ); // // get existing management machine // Set<? extends NodeMetadata> existingManagementMachines = null; // ComputeServiceContext computeServiceContext = null; // try{ // AdvancedParams advancedParameters = getAdvancedParameters( serverNode ); // computeServiceContext = createComputeServiceContext( advancedParameters ); // // existingManagementMachines = listExistingManagementMachines( // advancedParameters, conf, computeServiceContext.getComputeService() ); // } // catch(Exception e){ // if ( ExceptionUtils.indexOfThrowable( e, AuthorizationException.class ) > 0 ){ // serverNode.errorEvent( "Invalid Credentials" ).save( ); // return null; // } // logger.error( "unrecognized exception, assuming only existing algorithm failed. ",e ); // } // // logger.info( "found [{}] management machines", CollectionUtils.size( existingManagementMachines ) ); // // if ( !CollectionUtils.isEmpty( existingManagementMachines ) ) { // // NodeMetadata managementMachine = CollectionUtils.first( existingManagementMachines ); // Utils.ServerIp serverIp = Utils.getServerIp( managementMachine ); // // if ( !cloudifyRestClient.testRest( serverIp.publicIp ).isSuccess() ){ // serverNode.errorEvent( "Management machine exists but unreachable" ).save( ); // logger.info( "unable to reach management machine on. stopping progress. Testet rest IP [{}]", serverIp ); // return null; // } // logger.info( "using first machine [{}] with ip [{}]", managementMachine, serverIp ); // serverNode.setServerId( managementMachine.getId() ); // serverNode.infoEvent("Found management machine on :" + serverIp ).save( ); // serverNode.setPublicIP( serverIp.publicIp ); // serverNode.save(); // logger.info( "not searching for key - only needed for bootstrap" ); // } // else if( computeServiceContext != null ){ // logger.info( "did not find an existing management machine, creating new machine" ); // createNewMachine( serverNode, conf, computeServiceContext ); // } // else{ // throw new RuntimeException( "computeServiceContext was not initialized" ); // } // return serverNode; // } // // protected ComputeServiceContext createComputeServiceContext( String key, String secretKey ){ // // // return CloudifyUtils.computeServiceContext(getCloudProvider().label, key, secretKey, false); // // } // // abstract protected Set<? extends NodeMetadata> listExistingManagementMachines( AdvancedParams advancedParameters, Conf conf, ComputeService computeService ); // // abstract protected AdvancedParams getAdvancedParameters( ServerNode serverNode ); // // abstract protected ComputeServiceContext createComputeServiceContext( AdvancedParams advancedParams ); // // public static class MachineNamePrefixPredicate implements Predicate<ComputeMetadata>{ // // private final String prefix; // // public MachineNamePrefixPredicate( Conf conf ){ // prefix = conf.server.cloudBootstrap.existingManagementMachinePrefix; // } // // @Override // public boolean apply( ComputeMetadata computeMetadata ){ // // return true if server is not null, prefix is not empty and prefix is prefix of server.getName // boolean startsWithPrefix = computeMetadata.getName().startsWith( prefix ); // boolean retValue = !StringUtils.isEmpty( prefix ) && startsWithPrefix; // logger.info( "Within MachineName apply()" + // ", computeMetadata.getName()=" + computeMetadata.getName() + // ", prefix=" + prefix + // ", startsWithPrefix=" + startsWithPrefix + // ", retValue=" + retValue ); // return retValue; // } // // @Override // public String toString(){ // return String.format("name has prefix [%s]", prefix); // } // } }