Yasei created JCLOUDS-1517:
------------------------------

             Summary: google could - can't handle service account without scopes
                 Key: JCLOUDS-1517
                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1517
             Project: jclouds
          Issue Type: Bug
          Components: jclouds-labs-google
            Reporter: Yasei


When getting the active instance list (listNodesDetailsMatching), the code is 
issuing an instanceAggregatedList request to google, expecting to get 
serviceAccounts with email and scopes - I have an example that does not have 
scopes, so the code fail with the below stack trace.

This is a snippet from my response:

serviceAccounts: [{
    serviceAccounts: [{ email: elasticsearch - sa @ xx - xx - 
xxx.iam.gserviceaccount.com 
  } 
],

my other accounts do have scopes:

serviceAccounts: [{
  serviceAccounts: [{ email: xxx - compute @ developer.gserviceaccount.com, 
  scopes: [ 
    https: //www.googleapis.com/auth/cloud.useraccounts.readonly , 
    https: //www.googleapis.com/auth/devstorage.read_only , 
    https: //www.googleapis.com/auth/logging.write , 
    https: //www.googleapis.com/auth/monitoring.write , 
    https: //www.googleapis.com/auth/cloudruntimeconfig 
] } ],

I guess 'scopes' should be optional.

The code is this:

[https://github.com/apache/jclouds/blob/master/providers/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Instance.java#L164]

Stack trace:

SEVERE: Error parsing input: Null scopes

java.lang.NullPointerException: Null scopes at 
org.jclouds.googlecomputeengine.domain.AutoValue_Instance_ServiceAccount.<init>(AutoValue_Instance_ServiceAccount.java:21)
 at 
org.jclouds.googlecomputeengine.domain.Instance$ServiceAccount.create(Instance.java:166)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498) at 
com.google.common.reflect.Invokable$MethodInvokable.invokeInternal(Invokable.java:197)
 at com.google.common.reflect.Invokable.invoke(Invokable.java:102) at 
org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:224)
 at 
org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:204)
 at 
org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.readAndBuild(NullFilteringTypeAdapterFactories.java:95)
 at 
org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:83)
 at 
org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:62)
 at 
org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:272)
 at 
org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:184)
 at 
org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.readItems(ListPageAdapterFactory.java:73)
 at 
org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.readAggregate(ListPageAdapterFactory.java:89)
 at 
org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.read(ListPageAdapterFactory.java:58)
 at 
org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.read(ListPageAdapterFactory.java:36)
 at com.google.gson.Gson.fromJson(Gson.java:861) at 
com.google.gson.Gson.fromJson(Gson.java:826) at 
org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:55) at 
org.jclouds.http.functions.ParseJson.apply(ParseJson.java:82) at 
org.jclouds.http.functions.ParseJson.apply(ParseJson.java:76) at 
org.jclouds.http.functions.ParseJson.apply(ParseJson.java:61) at 
org.jclouds.http.functions.ParseJson.apply(ParseJson.java:41) at 
com.google.common.base.Functions$FunctionComposition.apply(Functions.java:227) 
at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) 
at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) 
at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) 
at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
 at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
 at com.sun.proxy.$Proxy62.instances(Unknown Source) at 
org.jclouds.googlecomputeengine.compute.GoogleComputeEngineServiceAdapter.listNodes(GoogleComputeEngineServiceAdapter.java:250)
 at 
org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.listDetailsOnNodesMatching(AdaptingComputeServiceStrategies.java:122)
 at 
org.jclouds.compute.internal.BaseComputeService.listNodesDetailsMatching(BaseComputeService.java:352)

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to