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)