Giter VIP home page Giter VIP logo

legacy-jclouds's Introduction

legacy-jclouds's People

Contributors

abayer avatar ahgittin avatar alasdairhodge avatar aledsage avatar andreaturli avatar andreisavu avatar aplowe avatar bastiao avatar brooklyn-images avatar carlossg avatar cemerick avatar chamerling avatar davidsantiago avatar dharmamike avatar dralves avatar gaul avatar grkvlt avatar gustavomzw avatar hugoduncan avatar imeredith avatar iocanel avatar kedardave avatar mattiasholmqvist avatar mattstep avatar novel avatar omixon avatar richardcloudsoft avatar technomancy avatar vijaykiran avatar whitlockjc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

legacy-jclouds's Issues

Could not create Context vcloud-director

java.lang.IllegalArgumentException: api {id=vcloud-director, name=vCloud Director 1.5 API, views=[], endpointName=https endpoint, identityName=User at Organization (user@org), credentialName=Optional.of(Password), documentation=http://www.vmware.com/support/pubs/vcd_pubs.html, api=interface org.jclouds.vcloud.director.v1_5.user.VCloudDirectorApi, asyncApi=interface org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncApi} not wrappable as org.jclouds.compute.ComputeServiceContext; context: org.jclouds.vcloud.director.v1_5.VCloudDirectorContext, views: []
    at org.jclouds.ContextBuilder.buildView(ContextBuilder.java:517)
    at org.jclouds.ContextBuilder.buildView(ContextBuilder.java:501)
    at org.jclouds.ContextBuilder.build(ContextBuilder.java:494)
    at org.jclouds.compute.ComputeServiceContextFactory.createContext(ComputeServiceContextFactory.java:120)
    at com.griddynamics.genesis.jclouds.Test$delayedInit$body.apply(Test.scala:17)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App$$anonfun$main$1.apply(App.scala:60)
    at scala.App$$anonfun$main$1.apply(App.scala:60)
    at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
    at scala.collection.immutable.List.foreach(List.scala:45)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30)
    at scala.App$class.main(App.scala:60)
    at com.griddynamics.genesis.jclouds.Test$.main(Test.scala:13)
    at com.griddynamics.genesis.jclouds.Test.main(Test.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)

jclouds-virtualbox test fails on Debian - md5sum exists but md5 does not

MastersLoadingCache class tests the for an image hash, but md5 command is not available on Debian.

I'm using Debian Wheezy (unreleased) but that should not matter.

The command to compute hash functions is md5sum and also does not contain "=" . Besides that, why not use a Java md5 implementation to be cross platform?

  ExecResponse response = runScriptOnNodeFactory
        .create(
              hostNodeMetadata,
              Statements.exec("md5 " + isosDir + File.separator + fileName),
              runAsRoot(false)).init().call();
  if (md5 != null) {
     if (!Iterables.get(
           Splitter.on("=").trimResults().split(response.getOutput()), 1)
           .equals(md5))
        return null;
  }

transient failure on JDK6 build

org.jclouds.rest.functions.PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersionTest.testCacheIsFasterWhenAnnotationPresent (from TestSuite)
Failing for the past 1 build (Since Unstable#698 )
Took 6 ms.
Error Message

cached [163] should be less than initial [34] expected [true] but found [false]

Stacktrace

java.lang.AssertionError: cached [163] should be less than initial [34] expected [true] but found [false]
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.failNotEquals(Assert.java:494)
at org.testng.Assert.assertTrue(Assert.java:42)
at org.jclouds.rest.functions.PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersionTest.testCacheIsFasterWhenAnnotationPresent(PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersionTest.java:145)

Standard Output

Starting test test302DoesNotRetry(org.jclouds.http.handlers.RedirectionRetryHandlerTest)

build occasionally fails on PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersionTest

probably needs a rewrite

org.jclouds.rest.functions.PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersionTest.testCacheIsFasterWhenAnnotationPresent (from TestSuite)
Failing for the past 1 build (Since Unstable#643 )
Took 5 ms.
Error Message

cached [60] should be less than initial [37] expected [true] but found [false]

Stacktrace

java.lang.AssertionError: cached [60] should be less than initial [37] expected [true] but found [false]
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.failNotEquals(Assert.java:494)
at org.testng.Assert.assertTrue(Assert.java:42)
at org.jclouds.rest.functions.PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersionTest.testCacheIsFasterWhenAnnotationPresent(PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersionTest.java:145)

NPE in Keystone client

I'm not indenting all this four spaces just to keep github happy, so good luck.

DEBUG [keystone.common.wsgi] ******************** REQUEST BODY ********************
DEBUG [keystone.common.wsgi] {"auth":{"passwordCredentials":{"username":"nova","password":"XXX"}}}
[SNIP]
DEBUG [keystone.common.wsgi] ******************** RESPONSE HEADERS ********************
DEBUG [keystone.common.wsgi] Vary = X-Auth-Token
DEBUG [keystone.common.wsgi] Content-Type = application/json
DEBUG [keystone.common.wsgi] Content-Length = 242
DEBUG [keystone.common.wsgi]
DEBUG [keystone.common.wsgi] ******************** RESPONSE BODY ********************
DEBUG [keystone.common.wsgi] {"access": {"token": {"expires": "2012-12-02T01:44:54Z", "id": "5afc3adea6654e758b4a9cf01bafe507"}, "serviceCatalog": {}, "user": {"username": "nova", "roles_links": [], "id": "bf45fd7586c2410c980c651b918aa850", "roles": [], "name": "nova"}}}

Causes:

Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException: tenant
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2258)
at com.google.common.cache.LocalCache.get(LocalCache.java:3990)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3994)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4878)
at org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule$2.get(KeystoneAuthenticationModule.java:206)
at org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule$2.get(KeystoneAuthenticationModule.java:202)
at org.jclouds.openstack.keystone.v2_0.suppliers.LocationIdToURIFromAccessForTypeAndVersion.get(LocationIdToURIFromAccessForTypeAndVersion.java:63)
at org.jclouds.openstack.keystone.v2_0.suppliers.LocationIdToURIFromAccessForTypeAndVersion.get(LocationIdToURIFromAccessForTypeAndVersion.java:42)
at org.jclouds.util.Suppliers2$SupplierComposition.get(Suppliers2.java:160)
at org.jclouds.util.Suppliers2$5.get(Suppliers2.java:122)
at org.jclouds.util.Suppliers2$4.get(Suppliers2.java:98)
at org.jclouds.rest.internal.RestAnnotationProcessor.getEndpointFor(RestAnnotationProcessor.java:780)
at org.jclouds.rest.internal.RestAnnotationProcessor.createRequest(RestAnnotationProcessor.java:419)
at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:237)
at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
at $Proxy86.get(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
at $Proxy87.get(Unknown Source)
[...]
... 13 more
Caused by: java.lang.NullPointerException: tenant
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
at org.jclouds.openstack.keystone.v2_0.domain.Token.(Token.java:112)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:219)
at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:198)
at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:245)
at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:181)
at com.google.gson.Gson.fromJson(Gson.java:791)
at org.jclouds.http.functions.ParseFirstJsonValueNamed.apply(ParseFirstJsonValueNamed.java:81)
at org.jclouds.http.functions.ParseFirstJsonValueNamed.apply(ParseFirstJsonValueNamed.java:48)
at com.google.common.util.concurrent.Futures$3.apply(Futures.java:376)
at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:518)
at org.jclouds.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:119)
at org.jclouds.concurrent.config.DescribingExecutorService.execute(DescribingExecutorService.java:105)
at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:149)
at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:134)
at org.jclouds.concurrent.Futures$FutureListener.addListener(Futures.java:119)
at org.jclouds.concurrent.Futures$ListenableFutureAdapter.addListener(Futures.java:153)
at com.google.common.util.concurrent.Futures.transform(Futures.java:269)
at com.google.common.util.concurrent.Futures.transform(Futures.java:380)
at org.jclouds.concurrent.Futures.compose(Futures.java:270)
at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:248)
at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:148)
at $Proxy68.authenticateWithTenantNameAndCredentials(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:164)
at $Proxy69.authenticateWithTenantNameAndCredentials(Unknown Source)
at org.jclouds.openstack.keystone.v2_0.functions.AuthenticatePasswordCredentials.authenticateWithTenantName(AuthenticatePasswordCredentials.java:45)
at org.jclouds.openstack.keystone.v2_0.functions.AuthenticatePasswordCredentials.authenticateWithTenantName(AuthenticatePasswordCredentials.java:33)
at org.jclouds.openstack.keystone.v2_0.functions.internal.BaseAuthenticator.apply(BaseAuthenticator.java:81)
at org.jclouds.openstack.keystone.v2_0.functions.internal.BaseAuthenticator.apply(BaseAuthenticator.java:36)
at org.jclouds.concurrent.RetryOnTimeOutExceptionFunction.apply(RetryOnTimeOutExceptionFunction.java:49)
at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:146)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3589)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2374)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2337)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2252)
... 46 more

Intermittent Exception(java.util.NoSuchElementException) When we power on Terremark Ecloud VM

Jcloud Api Version : jclouds-1.0-beta-9d

Jcloud api giving intermittent Exception when we do power on terremark ecloud VM. following is the stack trace:

java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
at java.util.HashMap$EntryIterator.next(HashMap.java:834)
at java.util.HashMap$EntryIterator.next(HashMap.java:832)
at com.google.common.collect.AbstractMultimap$EntryIterator.findValueIteratorAndKey(AbstractMultimap.java:1318)
at com.google.common.collect.AbstractMultimap$EntryIterator.next(AbstractMultimap.java:1332)
at com.google.common.collect.AbstractMultimap$EntryIterator.next(AbstractMultimap.java:1302)
at com.google.common.collect.AbstractMultimap$ValueIterator.next(AbstractMultimap.java:1220)
at com.google.common.collect.Iterators.getLast(Iterators.java:854)
at com.google.common.collect.Iterables.getLast(Iterables.java:728)

Please help me as soon as possible.

Regards,
Sunil Kumar

remove Beta type PredicateWithResult

PredicateWithResult can be accomplished with Predicate

This is more consistent with other practices in guava, and eliminates an uncommon and undocumented type.

QueryParam doesn't support Iterable

QueryParam should support Iterable collections and produce a query string. See the RESTful Java with JAX-RS book

http://books.google.com/books?id=_jQtCL5_vAcC&pg=PA67#v=onepage&q&f=false

For example, if I have a method like

ListenableFuture<Void> remove(@QueryParam("id") Iterable<Integer> ids);

It should produce a query string like

.../nodes?id=410&id=411

There's a pretty simple fix for this in RestAnnotationProcessor.getQueryParamKeyValues()

        if (paramValue.isPresent()) {
           if (paramValue.get() instanceof Iterable) {
              Iterable iterable = (Iterable) paramValue.get();
              for (Object value: iterable) {
                 queryParamValues.put(paramKey, value.toString());
              }
           }
           else {
              queryParamValues.put(paramKey, paramValue.get().toString());
           }
        }

This plus a test in RestAnnotationProcessorTest would do the trick.

Thoughts?

DescribeImagesResponseHandler fails in AWS when custom tags used

The following is thrown when calling DescribeImages in AWS-EC2 when user has AMIs with custom tags:

WARNING: malformed image: null
java.lang.NullPointerException: imageId
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
    at org.jclouds.ec2.domain.Image.<init>(Image.java:84)
    at org.jclouds.ec2.xml.DescribeImagesResponseHandler.endElement(DescribeImagesResponseHandler.java:175)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:604)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1759)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2915)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525)
    at org.jclouds.http.functions.ParseSax.doParse(ParseSax.java:141)
    at org.jclouds.http.functions.ParseSax.parse(ParseSax.java:130)
    at org.jclouds.http.functions.ParseSax.apply(ParseSax.java:86)
    at org.jclouds.http.functions.ParseSax.apply(ParseSax.java:54)
    at com.google.common.util.concurrent.Futures$3.apply(Futures.java:376)
    at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:518)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)WARNING: malformed image: null

example xml response causing the issue:

<?xml version="1.0" encoding="UTF-8"?>
<DescribeImagesResponse xmlns="http://ec2.amazonaws.com/doc/2011-05-15/">
    <requestId>12345678-1234-5678-9abc-def012345678</requestId>
    <imagesSet>
        <item>
            <imageId>ami-12345678</imageId>
            <imageLocation>0123456789ab/New machine image</imageLocation>
            <imageState>available</imageState>
            <imageOwnerId>0123456789ab</imageOwnerId>
            <isPublic>false</isPublic>
            <architecture>x86_64</architecture>
            <imageType>machine</imageType>
            <platform>windows</platform>
            <name>Some machine name</name>
            <rootDeviceType>ebs</rootDeviceType>
            <rootDeviceName>/dev/sda1</rootDeviceName>
            <blockDeviceMapping>
                <item>
                    <deviceName>/dev/sda1</deviceName>
                    <ebs>
                        <snapshotId>snap-aaaaaaaa</snapshotId>
                        <volumeSize>30</volumeSize>
                        <deleteOnTermination>true</deleteOnTermination>
                    </ebs>
                </item>
                <item>
                    <deviceName>xvdf</deviceName>
                    <ebs>
                        <snapshotId>snap-aaaaaaab</snapshotId>
                        <volumeSize>20</volumeSize>
                        <deleteOnTermination>false</deleteOnTermination>
                    </ebs>
                </item>
                <item>
                    <deviceName>xvdg</deviceName>
                    <ebs>
                        <snapshotId>snap-aaaaaaac</snapshotId>
                        <volumeSize>30</volumeSize>
                        <deleteOnTermination>false</deleteOnTermination>
                    </ebs>
                </item>
            </blockDeviceMapping>
            <virtualizationType>hvm</virtualizationType>
            <tagSet>
                <item>
                    <key>Name</key>
                    <value>Some machine name</value>
                </item>
            </tagSet>
            <hypervisor>xen</hypervisor>
        </item>
    </imagesSet>
</DescribeImagesResponse>

Cloudstack User API Gaps

Here's the status of cloudstack user API (compared with version 2.2.8). The items in bold are missing from the sandbox implementation and the items in italic can be tested.

Virtual Machine

deployVirtualMachine (A)
destroyVirtualMachine (A)
rebootVirtualMachine (A)
startVirtualMachine (A)
stopVirtualMachine (A)
resetPasswordForVirtualMachine (A)
changeServiceForVirtualMachine (A)
updateVirtualMachine (A)
listVirtualMachines
getVMPassword (A)

Template

createTemplate (A)
registerTemplate
updateTemplate
copyTemplate (A)
deleteTemplate (A)
listTemplates
updateTemplatePermissions
listTemplatePermissions
extractTemplate (A)

Security group

createSecurityGroup
deleteSecurityGroup
authorizeSecurityGroupIngress (A)
revokeSecurityGroupIngress (A)
listSecurityGroups

Event

listEvents
listEventTypes

SSHKeyPair

registerSSHKeyPair
createSSHKeyPair
deleteSSHKeyPair
listSSHKeyPairs

Load Balancer

createLoadBalancerRule
deleteLoadBalancerRule (A)
removeFromLoadBalancerRule (A)
assignToLoadBalancerRule (A)
listLoadBalancerRules
listLoadBalancerRuleInstances
updateLoadBalancerRule (A)

Hypervisor

listHypervisors

Limit

listResourceLimits

Account

listAccounts

Guest OS

listOsTypes
listOsCategories

Address

associateIpAddress
disassociateIpAddress (A)
listPublicIpAddresses

VM group

createInstanceGroup
deleteInstanceGroup
updateInstanceGroup
listInstanceGroups

Zone

listZones

Cloud Identifier

getCloudIdentifier

Iso

attachIso (A)
detachIso (A)
listIsos
registerIso
updateIso
deleteIso (A)
copyIso (A)
updateIsoPermissions
listIsoPermissions
extractIso (A)

Snapshot

createSnapshot (A)
listSnapshots
deleteSnapshot (A)
createSnapshotPolicy
deleteSnapshotPolicies
listSnapshotPolicies

Service Offering

listServiceOfferings

Firewall

listPortForwardingRules
createPortForwardingRule (A)
deletePortForwardingRule (A)

Network

createNetwork
deleteNetwork (A)
listNetworks
restartNetwork
updateNetwork

Network offering

listNetworkOfferings

Login

login

Volume

attachVolume (A)
detachVolume (A)
createVolume (A)
deleteVolume (A)
listVolumes
extractVolume (A)

Async job

queryAsyncJobResult
listAsyncJobs

Disk Offering

listDiskOfferings

NAT

enableStaticNat (A)
createIpForwardingRule (A)
deleteIpForwardingRule (A)
listIpForwardingRules
disableStaticNat (A)

Configuration

listCapabilities

Logout

logout

Modernize Rackspace Cloud Load Balancers API

Bring the Rackspace Cloud Load Balancers API up to current standards.

Rename:

  • LoadBalancerClient > LoadBalancerApi
    • LoadBalancerClient.createLoadBalancer > LoadBalancerApi.create
    • LoadBalancerClient.updateLoadBalancerAttributes > LoadBalancerApi.update
    • LoadBalancerClient.listLoadBalancers > LoadBalancerApi.list
    • LoadBalancerClient.getLoadBalancer > LoadBalancerApi.get
    • LoadBalancerClient.removeLoadBalancer > LoadBalancerApi.delete
  • NodeClient > NodeApi
    • NodeClient.createNodesInLoadBalancer > NodeApi.addNodesToLoadBalancer
    • NodeClient.updateAttributesForNodeInLoadBalancer > NodeApi.updateNodeInLoadBalancer
    • NodeClient.listNodes > NodeApi.listNodesInLoadBalancer

Thoughts on the new naming?

New return and parameter types:

  • LoadBalancerApi
    • Set<LoadBalancer> listLoadBalancers() > PagedIterable<LoadBalancer> list()
  • NodeApi
    • Set<Node> createNodesInLoadBalancer(Set<NodeRequest> nodes, int lbid) > PagedIterable<Node> addNodesToLoadBalancer(Iterable<NodeRequest> nodes, int lbid)
    • Set<Node> listNodes(int lbid) > PagedIterable<Node> list(int lbid)

Thoughts on new return and parameter types?

Hoping to get this done for 1.5.4.

JodaDateService can't parse ISO dates consistently

Handing the string "2012-11-26T17:19:28UTC" to DateService.iso8601SecondsDateParse(), I get a successful parse on SimpleDateService, but on JodaDateService I see a stack trace:


Caused by: java.lang.IllegalArgumentException: Invalid format: "2012-11-26T17:32:31UTC+0000" is malformed at "UTC+0000"
    at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866)
    at org.jclouds.date.joda.JodaDateService.iso8601SecondsDateParse(JodaDateService.java:132)
    at org.jclouds.openstack.nova.v2_0.handlers.NovaErrorHandler.parseRetryAtField(NovaErrorHandler.java:181)
    at org.jclouds.openstack.nova.v2_0.handlers.NovaErrorHandler.buildRetryException(NovaErrorHandler.java:143)
    at org.jclouds.openstack.nova.v2_0.handlers.NovaErrorHandler.handleError(NovaErrorHandler.java:93)
    at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:69)
    at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.shouldContinue(BaseHttpCommandExecutorService.java:197)
    at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:167)
    at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:135)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

Add support for mutable instance tags

Please add a TagClient or similar to enable working directly with mutable instance tags when supported by the provider (ec2 and cloudstack I believe).

Add listener interfaces for providers and apis, so that OSGi bundles can be notified on installation/removal

Inside OSGi the MetadataBundleListener is watching for installation and removal of Providers and Apis. In many cases a bundle may need to receive notifications about the installation or removal of a provider/api.

Currently, this is only possible by creating a new bundle listnener, but this means duplicating code (we already have this in jclouds-karaf).

The listener interfaces, the lookup and the notification part should be inside jclouds and each project that use jclouds inside OSGi can implement its own listeners.

glesys provider appears to be incompatible with current glesys API version

The glesys provider appears to be broken. The following attempt to list nodes fails.

public static void main(String[] args) {
    String username = "...";
    String apiKey = "...;

    ImmutableSet<Module> modules = ImmutableSet.<Module> of(
            new SLF4JLoggingModule(), new SshjSshClientModule());
    ContextBuilder builder = ContextBuilder.newBuilder("glesys")
            .credentials(username, apiKey).modules(modules);
    ComputeServiceContext context = builder
            .buildView(ComputeServiceContext.class);
    try {
        ComputeService computeService = context.getComputeService();
        computeService.listNodes();
    } finally {
        context.close();
    }
}

The log output of the execution (with message exchange tracking on) looks as follows:

2012-12-05 08:15:15.855 AsyncRestClientProxy [DEBUG] Invoking ServerAsyncApi.list
2012-12-05 08:15:15.860 JavaUrlHttpCommandExecutorService [DEBUG] Sending request 1976134626: POST https://api.glesys.com/server/list/format/json HTTP/1.1
2012-12-05 08:15:16.376 JavaUrlHttpCommandExecutorService [DEBUG] Receiving response 1976134626: HTTP/1.1 200 OK
2012-12-05 08:15:16.379 wire [DEBUG] << "{"response":{"status":{"code":200,"timestamp":"2012-12-05T08:15:16+01:00","text":"OK"},"servers":[{"serverid":"xm3271367","hostname":"peterg","datacenter":"Falkenberg","platform":"Xen"}],"debug":{"input":[]}}}"
2012-12-05 08:15:16.395 AsyncRestClientProxy [DEBUG] Invoking ServerAsyncApi.get
2012-12-05 08:15:16.395 JavaUrlHttpCommandExecutorService [DEBUG] Sending request 241192994: POST https://api.glesys.com/server/details/format/json HTTP/1.1
2012-12-05 08:15:16.395 wire [DEBUG] >> "includestate=true&serverid=xm3271367"
2012-12-05 08:15:16.852 JavaUrlHttpCommandExecutorService [DEBUG] Receiving response 241192994: HTTP/1.1 200 OK
2012-12-05 08:15:16.853 wire [DEBUG] << "{"response":{"status":{"code":200,"timestamp":"2012-12-05T08:15:16+01:00","text":"OK"},"server":{"serverid":"xm3271367","hostname":"peterg","description":"my server","cpucores":1,"memorysize":1024,"disksize":20,"transfer":50,"templatename":"Ubuntu 12.04 x64","datacenter":"Falkenberg","managedhosting":"no","supportedfeatures":{"status":"yes","start":"yes","reboot":"yes","stopsoft":"yes","stophard":"yes","destroy":"yes","console":"yes","clone":"no","resourceusage":"yes","editdisksize":"yes","editmemorysize":"yes","editcpucores":"yes","edittransfer":"yes","editip":"yes","beancounterslimit":"no","resetrootpassword":"no","uptime":"yes"},"gleraenabled":"no","platform":"Xen","cost":{"amount":206.16,"currency":"SEK","timeperiod":"month"},"iplist":[{"ipaddress":"109.74.13.60","version":4,"cost":20,"currency":"SEK"},{"ipaddress":"2a02:750:9::2f4","version":6,"cost":1,"currency":"SEK"}],"state":"stopped"},"debug":{"input":{"includestate":"1","serverid":"xm3271367"}}}}"
2012-12-05 08:15:16.868 AsyncRestClientProxy [DEBUG] Invoking ServerAsyncApi.getAllowedArgumentsForCreateByPlatform
2012-12-05 08:15:16.868 JavaUrlHttpCommandExecutorService [DEBUG] Sending request -451914136: GET https://api.glesys.com/server/allowedarguments/format/json HTTP/1.1
2012-12-05 08:15:17.093 JavaUrlHttpCommandExecutorService [DEBUG] Receiving response -451914136: HTTP/1.1 200 OK
2012-12-05 08:15:17.094 wire [DEBUG] << "{"response":{"status":{"code":200,"timestamp":"2012-12-05T08:15:17+01:00","text":"OK"},"argumentslist":{"Xen":{"disksize":{"costperunit":{"amount":2.2,"currency":"SEK","timeperiod":"month"},"units":[5,10,20,30,40,50,80,100,120,140,150,160,200,250,300]},"memorysize":{"costperunit":{"amount":0.09,"currency":"SEK","timeperiod":"month"},"units":[512,768,1024,1536,2048,2560,3072,3584,4096,5120,6144,7168,8192,9216,10240,11264,12288,14336,16384]},"cpucores":{"costperunit":{"amount":30,"currency":"SEK","timeperiod":"month"},"units":[1,2,3,4,5,6,7,8]},"template":["CentOS 5.5 x64","CentOS 5.5 x86","Centos 6 x64","Centos 6 x86","Debian-6 x64","Debian 5.0.1 x64","FreeBSD 8.2","FreeBSD 9.0","Gentoo 10.1 x64","OpenSUSE 11.4 64-bit","Ubuntu 8.04 x64","Ubuntu 10.04 LTS 64-bit","Ubuntu 10.10 x64","Ubuntu 11.04 x64","Ubuntu 12.04 x64","Ubuntu 12.04 x86","Windows Server 2008 R2 x64 std","Windows Server 2008 R2 x64 web","Windows Server 2008 x64 web"],"transfer":{"costperunit":{"amount":0.2,"currency":"SEK","timeperiod":"month"},"units":[50,100,250,500,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000]},"datacenter":["Falkenberg"]},"OpenVZ":{"disksize":{"costperunit":{"amount":2.2,"currency":"SEK","timeperiod":"month"},"units":[5,10,20,30,40,50,60,70,80,90,100,120,140,150]},"memorysize":{"costperunit":{"amount":0.09,"currency":"SEK","timeperiod":"month"},"units":[128,256,512,768,1024,1536,2048,2560,3072,3584,4096,5120,6144,7168,8192,9216,10240,11264,12288,14336,16384]},"cpucores":{"costperunit":{"amount":30,"currency":"SEK","timeperiod":"month"},"units":[1,2,3,4,5,6,7,8]},"transfer":{"costperunit":{"amount":0.2,"currency":"SEK","timeperiod":"month"},"units":[50,100,250,500,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000]},"template":["Centos 5","Centos 5 64-bit","Centos 6 32-bit","Centos 6 64-bit","Debian 5.0 32-bit","Debian 5.0 64-bit","Debian 6.0 32-bit","Debian 6.0 64-bit","Fedora Core 11","Fedora Core 11 64-bit","Gentoo","Gentoo 64-bit","Scientific Linux 6","Scientific Linux 6 64-bit","Slackware 12","Ubuntu 10.04 LTS 32-bit","Ubuntu 10.04 LTS 64-bit","Ubuntu 11.04 64-bit","Ubuntu 12.04 LTS 32-bit","Ubuntu 12.04 LTS 64-bit"],"datacenter":["Amsterdam","Falkenberg","New York City","Stockholm"]}},"debug":{"input":[]}}}"
Exception in thread "main" java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 124
at com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:306)
at org.jclouds.json.internal.IgnoreNullSetTypeAdapterFactory$1.read(IgnoreNullSetTypeAdapterFactory.java:67)
at org.jclouds.json.internal.IgnoreNullSetTypeAdapterFactory$1.read(IgnoreNullSetTypeAdapterFactory.java:56)
at com.google.gson.TypeAdapter$1.read(TypeAdapter.java:199)
at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:245)
at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeWithParameterizedConstructorSerializeWithDelegate.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:181)
at org.jclouds.json.internal.IgnoreNullMapTypeAdapterFactory$1.read(IgnoreNullMapTypeAdapterFactory.java:74)
at org.jclouds.json.internal.IgnoreNullMapTypeAdapterFactory$1.read(IgnoreNullMapTypeAdapterFactory.java:58)
at com.google.gson.TypeAdapter$1.read(TypeAdapter.java:199)
at com.google.gson.Gson.fromJson(Gson.java:791)
at org.jclouds.http.functions.ParseFirstJsonValueNamed.apply(ParseFirstJsonValueNamed.java:81)
at org.jclouds.http.functions.ParseFirstJsonValueNamed.apply(ParseFirstJsonValueNamed.java:48)
at com.google.common.util.concurrent.Futures$3.apply(Futures.java:376)
at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:518)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)

The problem appears to be the parsing of the response message from https://api.glesys.com/server/allowedarguments/format/json (this is the last response message seen in the log prior to the exception stacktrace). More specifically, the "disksize" field has changed in the current glesys API, at least when compared to the expected output in the tests: https://github.com/jclouds/jclouds/blob/master/providers/glesys/src/test/resources/server_allowed_arguments.json

I believe that the response message format of the https://api.glesys.com/server/allowedarguments/format/json request has changed from the API version currently supported by the jclouds provider (0.1.29 according to the commit logs) and the API version currently published by GleSYS (0.1.34).

Variable substitution in the manage configuration fields

I tried to use a variable in the user/pass (identity/credentials?) fields in the manage configuration while adding a new cloud and it didnt work. Can yall get variable substitution working on that?

Example ${MY_USERNAME} and ${MY_PASSWORD} which are from the Global Properties -> Environment variables in the same configure screen.

Swift MultiPart Upload

I wanted to upload a File in small chunks to my Swift container, but the multipart() PutOptions doesn't seem to work. My purpose is to upload the chunks asynchronously in parallel by using ParallelMultipartUploadStrategy which is the default strategy used. So I tried to run the following code and it never ends:
http://pastebin.com/spyHhZx1

And if I remove the multipart() used as PutOptions parameter in putBlob, The file could be uploaded.

glesys template options should support passing root password and data transfer limit

The GleSYS API supports passing in a root password as well as a data transfer limit when creating a new server instance (see https://github.com/GleSYS/API/wiki/API-Documentation#wiki-servercreate).

However, these parameters are not supported in the current implementation of GleSYSTemplateOptions.

These parameters should be added to GleSYSTemplateOptions and the GleSYSComputeServiceAdapter should be updated to set the corresponding parameters in the server/create API call.

Guice errors when trying to get a signer for a keystone v2 password-auth BlobStore

While there is a dedicated cloudfiles-us provider in jclouds, I wanted to test whether the "generic" swift-keystone provider will work against cloudfiles. Here's the test I ran:

$ cd apis/swift
$ mvn test -Plive -Dtest.swift.provider=swift-keystone -Dtest.swift-keystone.endpoint=https://auth.api.rackspacecloud.com/v2.0/ -Dtest.swift-keystone.identity=YOUR_ID -Dtest.swift-keystone.credential=YOUR_CRED -Dtest=SwiftBlobSignerLiveTest

Unfortunately, all tests fail with Guice injection errors:

Results :

Failed tests:   testSignPutUrl(org.jclouds.openstack.swift.blobstore.integration.SwiftBlobSignerLiveTest): Guice configuration errors:(..)
  testSignPutUrlWithTime(org.jclouds.openstack.swift.blobstore.integration.SwiftBlobSignerLiveTest): Guice configuration errors:(..)
  testSignGetUrl(org.jclouds.openstack.swift.blobstore.integration.SwiftBlobSignerLiveTest): Guice configuration errors:(..)
  testSignGetUrlWithTime(org.jclouds.openstack.swift.blobstore.integration.SwiftBlobSignerLiveTest): Guice configuration errors:(..)
  testSignRemoveUrl(org.jclouds.openstack.swift.blobstore.integration.SwiftBlobSignerLiveTest): Guice configuration errors:(..)
  testSignGetUrlOptions(org.jclouds.openstack.swift.blobstore.integration.SwiftBlobSignerLiveTest): Guice configuration errors:(..)

Here's the stack trace from one of the tests:

testSignPutUrl(org.jclouds.openstack.swift.blobstore.integration.SwiftBlobSignerLiveTest)  Time elapsed: 1.504 sec  <<< FAILURE!
com.google.inject.ConfigurationException: Guice configuration errors:
1) No implementation for com.google.common.base.Supplier<java.lang.String> annotated with @org.jclouds.openstack.internal.Authentication() was bound.
  while locating com.google.common.base.Supplier<java.lang.String> annotated with @org.jclouds.openstack.internal.Authentication()
    for parameter 0 at org.jclouds.openstack.filters.AuthenticateRequest.<init>(AuthenticateRequest.java:44)
  while locating org.jclouds.openstack.filters.AuthenticateRequest
1 error
        at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
        at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:961)
        at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1013)
        at org.jclouds.rest.internal.RestAnnotationProcessor.getFiltersIfAnnotated(RestAnnotationProcessor.java:695)
        at org.jclouds.rest.internal.RestAnnotationProcessor.createRequest(RestAnnotationProcessor.java:439)
        at org.jclouds.openstack.swift.blobstore.SwiftBlobRequestSigner.signPutBlob(SwiftBlobRequestSigner.java:107)
        at org.jclouds.blobstore.integration.internal.BaseBlobSignerLiveTest.testSignPutUrl(BaseBlobSignerLiveTest.java:117)

Add IpType option for GoGrid

The GoGrid provider only supports a strategy that assigns public IPs. There should be an option to configure the compute template with the GoGrid IpType enumeration, defaulting simply to any unassigned address. This will break backwards compatibility, but adds flexibility.

add support for Fujitsu Global Cloud Platform support

Azure BlobStorage is not capable of creating PageBlobs

In the internal classes the BlobType "PageBlob" is available, but without using internal classes it is not possible to create them.

Using the internal classes leverages exceptions because not everything will be set.

    AzureBlobClient client = AzureBlobClient.class.cast(context.getProviderSpecificContext().getApi());
    AzureBlob newBlob = client.newBlob();
    StringPayload payload = Payloads.newStringPayload("test");
    payload.getContentMetadata().setContentLength(0L);
    newBlob.setPayload(payload);

    MutableBlobPropertiesImpl properties = (MutableBlobPropertiesImpl) newBlob.getProperties();
    properties.setContainer("vhds");
    properties.setName("test.page");
    properties.setType(BlobType.PAGE_BLOB);

openstack.nova.v2_0.extensions.VolumeApi detachVolumeFromServer fails on HPCloud

using org.jclouds.openstack.nova.v2_0.extensions.VolumeApi

calling detachVolumeFromServer sends the wrong command and detachment fails

    Boolean detachVolumeFromServer = volumeOption.get().detachVolumeFromServer(serverId, volId);

org.jclouds.http.HttpResponseException: command: DELETE https://az-2.region-a.geo-1.compute.hpcloudsvc.com/v1.1/10144569681998/os-volumes/37845 HTTP/1.1 failed with response: HTTP/1.1 400 Bad Request; content: [{"badRequest": {"message": "Invalid volume: Volume status must be available or error", "code": 400}}]

according to the HPCloud compute documentation (http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CCcQFjAB&url=http%3A%2F%2Fapi-docs.hpcloud.com%2Fhpcloud-compute%2F1.0%2Fhpcloud-compute-1.0.pdf&ei=h-hZUN73KKWO0QHwx4HQDw&usg=AFQjCNElnvZca0d7Qeh6gU9ZSi1tQepXnA)

the correct URI for detaching the volume is:

/servers/server_ID/os- volume_attachments/volume_id

but the URI being used by detachVolumeFromServer is using os-volumes instead of os_volume_attachments, which should only be used by deleteVolumeFromServer

google compute engine provider

This is the wrapper issue for everything GCE provider development related.

Because api pull requests can't be made against jclouds until the base goes in, and in order to allow for parallel reviews, I've made pull requests against the "gce-base" branch in my fork, which I list here.

Even if "gce-base" gets merged first I'll address the comments there prior to making a pr against this fork as not to waste anyone's review work.

gce base pull request: #1051
gce disks api pull request: dralves#1
gce firewalls api pull request: dralves#2
gce images api pull request: dralves#3
gce kernels api pull request: dralves#4
gce machinetypes api pull request: dralves#5
gce networks api pull request: dralves#6
gce instances api pull request: dralves#7

Just missing the jclouds.compute* portion. all live tests are passing.
Please review!

release jclouds 1.5.4

Here are the release commands:

mvn release:clean release:prepare -DreleaseVersion=1.5.4 -Dtag=jclouds-1.5.4 -DdevelopmentVersion=1.5.5-SNAPSHOT -DpushChanges=false

mvn clean release:perform -DconnectionUrl=scm:git:file://`pwd`/.git -Dtag=jclouds-1.5.4 -Dgoals="deploy -DskipTests"

<close oss sonatype staging repository and test it, then release it> https://oss.sonatype.org/index.html#stagingRepositories

git push
git push --tags

after this is complete, jclouds-karaf, jclouds-chef, and jclouds-cli should be released

Remove "nova"

The "nova" API adds build time and maintenance without any particular merit. It is close, but incompatible with the legacy "cloudservers" api, and represents a server product which is not recommended to use (pre-diablo openstack nova).

Lets remove in 1.6 and communicate the last version of pre-diablo nova is in jclouds 1.5.

build faied

[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

/root/jclouds/core/src/main/java/org/jclouds/rest/internal/RestAnnotationProcessor.java:[419,46] reference to builder is ambiguous, both method builder() in org.jclouds.http.HttpMessage and method builder() in org.jclouds.rest.internal.GeneratedHttpRequest match

/root/jclouds/core/src/main/java/org/jclouds/rest/internal/RestAnnotationProcessor.java:[419,58] incompatible types
found : org.jclouds.http.HttpRequest.Builder<capture#306 of ? extends org.jclouds.http.HttpRequest>
required: org.jclouds.rest.internal.GeneratedHttpRequest.Builder

Consolidated proxy support

This is a follow on from http://code.google.com/p/jclouds/issues/detail?id=122.

We require full proxy support across all socket connections so that we can use jClouds from behind corporate proxies.

This includes, but is not limited to:

  • all jsch usage (we have to tunnel ssh through our corporate proxy using nc and corkscrew).
  • httpcommandexecutors
  • socket open implementations.

Adrian has already started work here...

https://github.com/jclouds/jclouds/commits/consolidated-proxy

Add default zone methods for all OpenStack/Rackspace APIs

Provide methods in top level OpenStack/Rackspace APIs that allow users to easily get default zone APIs.

For example,

In addtiion to

CloudLoadBalancersApi.getLoadBalancerApiForZone(String)

there should also be

CloudLoadBalancersApi.getLoadBalancerApi()

that respects

"user": { "RAX-AUTH:defaultRegion": "DFW" ...}

in the "access" JSON returned during auth.

Invalid EC2 group name with Nova

Using EC2 API with Nova, there is an exception when trying to create instances : groups generates a group name which is incompatible with nova at org.jclouds.ec2.compute.strategy.CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.getSecurityGroupsForTagAndOptions(String, String, TemplateOptions)

Generated group name is pattern is jclouds#%s#%s, nova call raise exception

com.google.common.util.concurrent.UncheckedExecutionException: org.jclouds.aws.AWSResponseException: request POST http://94.143.114.137:8773/services/Cloud/ HTTP/1.1 failed with code 400, error: AWSError{requestId='b0f4932b-6c1d-4558-998d-0d3ad054df0f', requestToken='null', code='InvalidParameterValue', message='Value (jclouds#default#nova) for parameter GroupName is invalid. Content limited to Alphanumeric characters, spaces, dashes, and underscores.', context='{Response=, Errors=}'}
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2234)
at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3969)
at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4829)
at com.google.common.cache.LocalCache$LocalManualCache.getUnchecked(LocalCache.java:4834)
at org.jclouds.ec2.compute.strategy.CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.getSecurityGroupsForTagAndOptions(CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.java:181)
...

Is it a jclouds choice or an EC2 one?

transient failure on JDK 7 build

Regression

org.jclouds.compute.util.ConcurrentOpenSocketFinderTest.testAbortsWhenNodeNotRunning (from TestSuite)
Failing for the past 1 build (Since Unstable#44 )
Took 0.5 sec.
add description
Error Message

timetaken=926 expected [true] but found [false]

Stacktrace

java.lang.AssertionError: timetaken=926 expected [true] but found [false]
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.failNotEquals(Assert.java:494)
at org.testng.Assert.assertTrue(Assert.java:42)
at org.jclouds.compute.util.ConcurrentOpenSocketFinderTest.testAbortsWhenNodeNotRunning(ConcurrentOpenSocketFinderTest.java:149)

Standard Output

Starting test testRefreshCredentialsForNodeIfRanAdminAccessWhenStatementIsAdminAccessNewCredentialsAndDoesCache(org.jclouds.compute.config.PersistNodeCredentialsTest)
[pool-4-thread-1] Test testAbortsWhenNodeNotRunning(org.jclouds.compute.util.ConcurrentOpenSocketFinderTest) failed.
Test suite progress: tests succeeded: 103, failed: 1, skipped: 0.

destroyNodesMatching still returns all nodes instead of terminated?

Hey,

I have noticed that in that in 1.5.0-alpha3 an additional notNull filter was added to the BaseComputeService.destroyNodesMatching method - and I assume it is in order to fix the bug in which the method returned all the nodes requested for termination (including nodes that were not terminated due to IllegalStateException).

Looking at the new code, I think that this:

doDestroyNode(from.getId());
return from;

Should be

return doDestroyNode(from.getId());

As from can't be null...

NPE in compareTo method of ResourceMetadataImpl

Hi,

I just ran into a problem when the compareTo method of ResourceMetadataImpl throws a NPE.

This happens on line 69.: getName().compareTo(o.getName())

When o.getName() returns null, the compareTo method of String tries to access a property and throws a NPE.

It's probably a good idea to handle this situation.

jclouds does not support Terremark Ecloud Latest API

Hi ,
Currently Jcloud only support TM ecloud api 2.8. The Enterprise Cloud Application Programming Interface (API) release 2.8 revision 1, the final version of the previous API design and released on 29 July 2011, is retired and no longer supported. ecloud api 2.8. will be supported by TM till Dec 2012.

Jcloud is not supporting latest version of TM . Can you please help us when jacloud will support latest TM API.

Current Version Of Jcloud I am using:
1.5.3

Not Able to create VM on Terremak Ecloud Using 1.0.0 api

Jcloud Api Version : jclouds-1.0.0

Jcloud api giving Exception when we create VM on terremark ecloud. following is the stack trace:

java.lang.NullPointerException: name
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)
at org.jclouds.vcloud.binders.BindCloneParamsToXmlPayload.bindToRequest(BindCloneParamsToXmlPayload.java:73)
at org.jclouds.rest.internal.RestAnnotationProcessor.createRequest(RestAnnotationProcessor.java:489)
at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFuture(AsyncRestClientProxy.java:145)
at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:126)
at $Proxy115.cloneVAppInVDC(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:130)
at $Proxy116.cloneVAppInVDC(Unknown Source)
at
Please helps us as ASAP thanks in advance

Regards
Sunil Kumar

BlobStore operations on rackspace go to wrong container

Since rackspace introduced another datacenter (dfw) the jclouds code now uses an incorrect endpoint to create containers and upload files.
This apparently happens since there was only one datacenter and the code in "org.jclouds.util.Suppliers2" used "getLastVal​ueInMap" to get the single value (the actual uri endpoint) from the returned collection.
Now racksapce return two items: The default you as a customer choose is returned first and then the other container is returned.
Since the code takes the last one, it uses the container which I did not choose (in my case dfw) instead of the default one (in my case ord).
The long term solution should be allowing the client code to choose the datacenter and defaulting to the default container (the first item) when no input is given but I think a simple current solution should be to change the implementation from "getLastVal​ueInMap" to "getFirstVal​ueInMap" and so using the default endpoint for each client.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.