Search in sources :

Example 6 with ComputeServiceContext

use of org.jclouds.compute.ComputeServiceContext in project legacy-jclouds-examples by jclouds.

the class Logging method init.

private void init(String[] args) {
    // The provider configures jclouds To use the Rackspace Cloud (US)
    // To use the Rackspace Cloud (UK) set the provider to "rackspace-cloudservers-uk"
    String provider = "rackspace-cloudservers-us";
    String username = args[0];
    String apiKey = args[1];
    // This module is responsible for enabling logging
    Iterable<Module> modules = ImmutableSet.<Module>of(new SLF4JLoggingModule());
    ComputeServiceContext context = ContextBuilder.newBuilder(provider).credentials(username, apiKey).modules(// don't forget to add the modules to your context!
    modules).buildView(ComputeServiceContext.class);
    compute = context.getComputeService();
    nova = context.unwrap();
    // Calling getConfiguredZones() talks to the cloud which gets logged
    zones = nova.getApi().getConfiguredZones();
    System.out.println("Zones: " + zones);
}
Also used : SLF4JLoggingModule(org.jclouds.logging.slf4j.config.SLF4JLoggingModule) ComputeServiceContext(org.jclouds.compute.ComputeServiceContext) SLF4JLoggingModule(org.jclouds.logging.slf4j.config.SLF4JLoggingModule) Module(com.google.inject.Module)

Example 7 with ComputeServiceContext

use of org.jclouds.compute.ComputeServiceContext in project legacy-jclouds-examples by jclouds.

the class CreateVolumeAndAttach method init.

private void init(String[] args) {
    // The provider configures jclouds To use the Rackspace Cloud (US)
    // To use the Rackspace Cloud (UK) set the provider to "rackspace-cloudservers-uk"
    String provider = "rackspace-cloudservers-us";
    String username = args[0];
    String apiKey = args[1];
    // These properties control how often jclouds polls for a status udpate
    Properties overrides = new Properties();
    overrides.setProperty(ComputeServiceProperties.POLL_INITIAL_PERIOD, Constants.POLL_PERIOD_TWENTY_SECONDS);
    overrides.setProperty(ComputeServiceProperties.POLL_MAX_PERIOD, Constants.POLL_PERIOD_TWENTY_SECONDS);
    Iterable<Module> modules = ImmutableSet.<Module>of(new SshjSshClientModule());
    ComputeServiceContext context = ContextBuilder.newBuilder(provider).credentials(username, apiKey).modules(modules).overrides(overrides).buildView(ComputeServiceContext.class);
    compute = context.getComputeService();
    nova = context.unwrap();
    volumeAttachmentApi = nova.getApi().getVolumeAttachmentExtensionForZone(Constants.ZONE).get();
    provider = "rackspace-cloudblockstorage-us";
    cinder = ContextBuilder.newBuilder(provider).credentials(username, apiKey).modules(modules).build(CinderApiMetadata.CONTEXT_TOKEN);
    volumeApi = cinder.getApi().getVolumeApiForZone(Constants.ZONE);
}
Also used : SshjSshClientModule(org.jclouds.sshj.config.SshjSshClientModule) ComputeServiceContext(org.jclouds.compute.ComputeServiceContext) Properties(java.util.Properties) ComputeServiceProperties(org.jclouds.compute.config.ComputeServiceProperties) Module(com.google.inject.Module) SshjSshClientModule(org.jclouds.sshj.config.SshjSshClientModule)

Example 8 with ComputeServiceContext

use of org.jclouds.compute.ComputeServiceContext in project legacy-jclouds-examples by jclouds.

the class DetachVolume method init.

private void init(String[] args) {
    // The provider configures jclouds To use the Rackspace Cloud (US)
    // To use the Rackspace Cloud (UK) set the provider to "rackspace-cloudservers-uk"
    String provider = "rackspace-cloudservers-us";
    String username = args[0];
    String apiKey = args[1];
    Iterable<Module> modules = ImmutableSet.<Module>of(new SshjSshClientModule());
    ComputeServiceContext context = ContextBuilder.newBuilder(provider).credentials(username, apiKey).modules(modules).buildView(ComputeServiceContext.class);
    compute = context.getComputeService();
    nova = context.unwrap();
    volumeAttachmentApi = nova.getApi().getVolumeAttachmentExtensionForZone(Constants.ZONE).get();
    serverApi = nova.getApi().getServerApiForZone(Constants.ZONE);
    provider = "rackspace-cloudblockstorage-us";
    cinder = ContextBuilder.newBuilder(provider).credentials(username, apiKey).build(CinderApiMetadata.CONTEXT_TOKEN);
    volumeApi = cinder.getApi().getVolumeApiForZone(Constants.ZONE);
}
Also used : SshjSshClientModule(org.jclouds.sshj.config.SshjSshClientModule) ComputeServiceContext(org.jclouds.compute.ComputeServiceContext) Module(com.google.inject.Module) SshjSshClientModule(org.jclouds.sshj.config.SshjSshClientModule)

Example 9 with ComputeServiceContext

use of org.jclouds.compute.ComputeServiceContext in project legacy-jclouds-examples by jclouds.

the class ListVolumeAttachments method init.

private void init(String[] args) {
    // The provider configures jclouds To use the Rackspace Cloud (US)
    // To use the Rackspace Cloud (UK) set the provider to "rackspace-cloudservers-uk"
    String provider = "rackspace-cloudservers-us";
    String username = args[0];
    String apiKey = args[1];
    ComputeServiceContext context = ContextBuilder.newBuilder(provider).credentials(username, apiKey).buildView(ComputeServiceContext.class);
    compute = context.getComputeService();
    nova = context.unwrap();
    volumeAttachmentApi = nova.getApi().getVolumeAttachmentExtensionForZone(Constants.ZONE).get();
    serverApi = nova.getApi().getServerApiForZone(Constants.ZONE);
}
Also used : ComputeServiceContext(org.jclouds.compute.ComputeServiceContext)

Example 10 with ComputeServiceContext

use of org.jclouds.compute.ComputeServiceContext in project gora by apache.

the class ChefSoftwareProvisioning method performChefComputeServiceBootstrapping.

private static void performChefComputeServiceBootstrapping(Properties properties) throws IOException, InstantiationException, IllegalAccessException {
    // Get the credentials that will be used to authenticate to the Chef server
    String rsContinent = DataStoreFactory.findProperty(properties, MemStore.class.newInstance(), RS_CONTINENT, "rackspace-cloudservers-us");
    String rsUser = DataStoreFactory.findProperty(properties, MemStore.class.newInstance(), RS_USERNAME, "asf-gora");
    String rsApiKey = DataStoreFactory.findProperty(properties, MemStore.class.newInstance(), RS_APIKEY, null);
    String rsRegion = DataStoreFactory.findProperty(properties, MemStore.class.newInstance(), RS_REGION, "DFW");
    String client = DataStoreFactory.findProperty(properties, MemStore.class.newInstance(), CHEF_CLIENT, System.getProperty("user.name"));
    String organization = DataStoreFactory.findProperty(properties, MemStore.class.newInstance(), CHEF_ORGANIZATION, null);
    String pemFile = System.getProperty("user.home") + "/.chef/" + client + ".pem";
    String credential = Files.toString(new File(pemFile), Charsets.UTF_8);
    // Provide the validator information to let the nodes to auto-register themselves
    // in the Chef server during bootstrap
    String validator = organization + "-validator";
    String validatorPemFile = System.getProperty("user.home") + "/.chef/" + validator + ".pem";
    String validatorCredential = Files.toString(new File(validatorPemFile), Charsets.UTF_8);
    Properties chefConfig = new Properties();
    chefConfig.put(ChefProperties.CHEF_VALIDATOR_NAME, validator);
    chefConfig.put(ChefProperties.CHEF_VALIDATOR_CREDENTIAL, validatorCredential);
    // Create the connection to the Chef server
    ChefContext chefContext = ContextBuilder.newBuilder("chef").endpoint("https://api.opscode.com/organizations/" + organization).credentials(client, credential).overrides(chefConfig).buildView(ChefContext.class);
    // Create the connection to the compute provider. Note that ssh will be used to bootstrap chef
    ComputeServiceContext computeContext = ContextBuilder.newBuilder(rsContinent).endpoint(rsRegion).credentials(rsUser, rsApiKey).modules(ImmutableSet.<Module>of(new SshjSshClientModule())).buildView(ComputeServiceContext.class);
    // Group all nodes in both Chef and the compute provider by this group
    String group = "jclouds-chef-goraci";
    // Set the recipe to install and the configuration values to override
    String recipe = "apache2";
    JsonBall attributes = new JsonBall("{\"apache\": {\"listen_ports\": \"8080\"}}");
    // Check to see if the recipe you want exists
    List<String> runlist = null;
    Iterable<? extends CookbookVersion> cookbookVersions = chefContext.getChefService().listCookbookVersions();
    if (any(cookbookVersions, CookbookVersionPredicates.containsRecipe(recipe))) {
        runlist = new RunListBuilder().addRecipe(recipe).build();
    }
    for (Iterator<String> iterator = runlist.iterator(); iterator.hasNext(); ) {
        String string = (String) iterator.next();
        LOG.info(string);
    }
    // Update the chef service with the run list you wish to apply to all nodes in the group
    // and also provide the json configuration used to customize the desired values
    BootstrapConfig config = BootstrapConfig.builder().runList(runlist).attributes(attributes).build();
    chefContext.getChefService().updateBootstrapConfigForGroup(group, config);
    // Build the script that will bootstrap the node
    Statement bootstrap = chefContext.getChefService().createBootstrapScriptForGroup(group);
    TemplateBuilder templateBuilder = computeContext.getComputeService().templateBuilder();
    templateBuilder.options(runScript(bootstrap));
    // Run a node on the compute provider that bootstraps chef
    try {
        Set<? extends NodeMetadata> nodes = computeContext.getComputeService().createNodesInGroup(group, 1, templateBuilder.build());
        for (NodeMetadata nodeMetadata : nodes) {
            LOG.info("<< node %s: %s%n", nodeMetadata.getId(), concat(nodeMetadata.getPrivateAddresses(), nodeMetadata.getPublicAddresses()));
        }
    } catch (RunNodesException e) {
        throw new RuntimeException(e.getMessage());
    }
    // Release resources
    chefContext.close();
    computeContext.close();
}
Also used : Statement(org.jclouds.scriptbuilder.domain.Statement) BootstrapConfig(org.jclouds.chef.domain.BootstrapConfig) TemplateBuilder(org.jclouds.compute.domain.TemplateBuilder) ComputeServiceContext(org.jclouds.compute.ComputeServiceContext) Properties(java.util.Properties) ChefProperties(org.jclouds.chef.config.ChefProperties) NodeMetadata(org.jclouds.compute.domain.NodeMetadata) ChefContext(org.jclouds.chef.ChefContext) MemStore(org.apache.gora.memory.store.MemStore) RunNodesException(org.jclouds.compute.RunNodesException) SshjSshClientModule(org.jclouds.sshj.config.SshjSshClientModule) RunListBuilder(org.jclouds.chef.util.RunListBuilder) Module(com.google.inject.Module) SshjSshClientModule(org.jclouds.sshj.config.SshjSshClientModule) JsonBall(org.jclouds.domain.JsonBall) File(java.io.File)

Aggregations

ComputeServiceContext (org.jclouds.compute.ComputeServiceContext)18 Properties (java.util.Properties)8 Module (com.google.inject.Module)7 SshjSshClientModule (org.jclouds.sshj.config.SshjSshClientModule)5 RunNodesException (org.jclouds.compute.RunNodesException)4 ComputeServiceProperties (org.jclouds.compute.config.ComputeServiceProperties)4 NodeMetadata (org.jclouds.compute.domain.NodeMetadata)4 TemplateBuilder (org.jclouds.compute.domain.TemplateBuilder)4 IOException (java.io.IOException)3 InstanceTemplate (org.apache.whirr.service.ClusterSpec.InstanceTemplate)3 ComputeService (org.jclouds.compute.ComputeService)3 Template (org.jclouds.compute.domain.Template)3 SLF4JLoggingModule (org.jclouds.logging.slf4j.config.SLF4JLoggingModule)3 RunScriptOnNodesException (org.jclouds.compute.RunScriptOnNodesException)2 JschSshClientModule (org.jclouds.ssh.jsch.config.JschSshClientModule)2 AbstractModule (com.google.inject.AbstractModule)1 File (java.io.File)1 InetAddress (java.net.InetAddress)1 DecimalFormat (java.text.DecimalFormat)1 MemStore (org.apache.gora.memory.store.MemStore)1