Aled Sage created JCLOUDS-723:
---------------------------------

             Summary: CloudStack createNodesInGroup fails for service providers 
with locked down APIs
                 Key: JCLOUDS-723
                 URL: https://issues.apache.org/jira/browse/JCLOUDS-723
             Project: jclouds
          Issue Type: Bug
    Affects Versions: 1.8.0
            Reporter: Aled Sage


Creating VM(s) on CloudStack fails with some service providers, because they 
lock down access to parts of their API.

For example, API calls made by the listImages method are sometimes forbidden.
    CloudStackComputeServiceAdapter.listImages:
    
https://github.com/apache/jclouds/blob/f17c876d8dc161988f586c3cf343361d896f6928/apis/cloudstack/src/main/java/org/jclouds/cloudstack/compute/strategy/CloudStackComputeServiceAdapter.java#L284-294

The method tries to list all templates. First, it lists all templates that are 
executable. Then, it lists all templates associated with each project in the 
account. Translated to Cloudmonkey-suitable commands, the call flow is:

    * list templates listAll=true templatefilter=executable
    * list accounts listAll=true
    for each account response: extract name and domainid from response and call:
      * list projects listAll=true account=.. domainid=..

jclouds fails because it gets a response 405 Method Not Allowed to the 
listAccounts call (and would do the same for the listProjects call if it got 
that far).

    
/api/CloudPlatformProxy?apiKey=removed&command=listAccounts&expires=2014-07-21T11%3A08%3A32%2B0000&response=json&signatureversion=3&signature=removed"
    HTTP/1.1 405 Method Not Allowed
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: -1
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-Powered-By: ASP.NET
    Date: Mon, 21 Jul 2014 11:00:19 GMT
    Content-Length: 0

    
/api/CloudPlatformProxy?apiKey=removed&command=listProjects&expires=2014-07-21T11%3A04%3A59%2B0000&response=json&signatureversion=3&signature=removed"
    HTTP/1.1 405 Method Not Allowed
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: -1
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-Powered-By: ASP.NET
    Date: Mon, 21 Jul 2014 10:57:13 GMT
    Content-Length: 0

The cloud provider's response was:

    Accounts and projects are blocked simply because this is a multi tenant 
service where account isolation is important. So we don’t allow users to list 
all accounts on the platform as each one is tied to a customer.

    Projects and domain aren’t exposed because we haven’t assessed the risks to 
billing if these are enabled.

    The credentials that we give you will tie you to an account and then (other 
than domains and projects) you can do what you want.

    I like the idea of enabling certain list API calls but only when listall is 
set to false. Of course if its just stopping a test program then the incentive 
in fixing it would be minimal.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to