Ignasi Barrera created JCLOUDS-1393:
---------------------------------------

             Summary: Error creating servers in Rackspace
                 Key: JCLOUDS-1393
                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1393
             Project: jclouds
          Issue Type: New Feature
          Components: jclouds-compute
    Affects Versions: 2.1.0
            Reporter: Ignasi Barrera


Deploying servers in Rackspace fails because jclouds attempts to use the Nova 
legacy API to create the related security groups, and the API is no longer 
available:
{code:java}
Caused by: java.lang.IllegalArgumentException: Security groups are required, 
but the extension is not available in region IAD!
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145) 
~[guava-18.0.jar:na]
at 
org.jclouds.openstack.nova.v2_0.compute.functions.CreateSecurityGroupIfNeeded.apply(CreateSecurityGroupIfNeeded.java:101)
 ~[openstack-nova-2.1.0.jar:2.1.0]
at 
org.jclouds.openstack.nova.v2_0.compute.functions.CreateSecurityGroupIfNeeded.apply(CreateSecurityGroupIfNeeded.java:57)
 ~[openstack-nova-2.1.0.jar:2.1.0]
at 
org.jclouds.openstack.nova.v2_0.compute.loaders.FindSecurityGroupOrCreate.createNewSecurityGroup(FindSecurityGroupOrCreate.java:52)
 ~[openstack-nova-2.1.0.jar:2.1.0]
at 
org.jclouds.openstack.nova.v2_0.compute.loaders.FindSecurityGroupOrCreate.load(FindSecurityGroupOrCreate.java:43)
 ~[openstack-nova-2.1.0.jar:2.1.0]
at 
org.jclouds.openstack.nova.v2_0.compute.loaders.FindSecurityGroupOrCreate.load(FindSecurityGroupOrCreate.java:31)
 ~[openstack-nova-2.1.0.jar:2.1.0]
at 
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
 ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319) 
~[guava-18.0.jar:na]
at 
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
 ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197) 
~[guava-18.0.jar:na]
... 35 common frames omitted{code}

There is a workaround to configure it to internally use the Neutron API (see 
[this blog post|http://jclouds.apache.org/blog/2018/02/06/nova-neutron/] for 
details). It can be applied as follows when creating the Rackspace context:

{code}
Context neutronContext = ContextBuilder.newBuilder("rackspace-cloudnetworks-us")
   .credentials("username", "api-key")
   .overrides(<your custom properties>)
   .modules(<your cusrom modules>)
   .build();

Module neutronLink = ContextLinking.linkContext("openstack-neutron",
   Suppliers.ofInstance(neutronContext));

ComputeServiceContext rackspace = 
ContextBuilder.newBuilder("rackspace-cloudservers-us")
   .credentials("username", "api-key")
   .overrides(<your custom properties>)
   .modules(ImmutableSet.of(neutronLink, <your cusrom modules>))
   .buidView(ComputeServiceContext.class);
{code}

However, since the {{cloudservers}} and {{cloudnetworks}} providers will always 
have the same configuration, jclouds should configure it by default, 
transparently, when creating a {{cloudservers}} context. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to