Hi Devs, I am in the process of creating a Python cartridge. When I use a simple java class(attached JCloudsNova.java ) using jclouds api to create an instance of the cartridge image it is created. But when I use the stratos cli to deploy the cartridge using the same Openstack details, it fails. I have attached my 1) python_cartridge.jason 2) CC log(wso2carbon.log.cc) 3) SC log(wso2carbon.log.sc) 4) cloud-controller.xml Also note that all my carbon servers started without any errors.
It is a nullpointer exception in CC. Please let me understand where it went wrong. Thanks, Damitha -- __________________________________________________________________ Damitha Kumarage http://people.apache.org/ __________________________________________________________________
import static com.google.common.io.Closeables.closeQuietly;
import java.io.Closeable;
import java.util.Set;
import org.jclouds.ContextBuilder;
import org.jclouds.compute.ComputeService;
import org.jclouds.compute.ComputeServiceContext;
import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
import org.jclouds.openstack.nova.v2_0.NovaApi;
import org.jclouds.openstack.nova.v2_0.NovaAsyncApi;
import org.jclouds.openstack.nova.v2_0.domain.Server;
import org.jclouds.openstack.nova.v2_0.features.ServerApi;
import org.jclouds.rest.RestContext;
import org.jclouds.openstack.nova.v2_0.domain.ServerCreated;
import org.jclouds.openstack.nova.v2_0.options.CreateServerOptions;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Module;
public class JCloudsNova implements Closeable {
private ComputeService compute;
private RestContext<NovaApi, NovaAsyncApi> nova;
private Set<String> zones;
public static void main(String[] args) {
JCloudsNova jCloudsNova = new JCloudsNova();
try {
jCloudsNova.init();
jCloudsNova.createServers();
//jCloudsNova.listServers();
jCloudsNova.close();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
jCloudsNova.close();
}
}
private void init() {
Iterable<Module> modules = ImmutableSet.<Module> of(new SLF4JLoggingModule());
String provider = "openstack-nova";
String identity = "demo:demo"; // tenantName:userName
String password = "g"; // demo account uses ADMIN_PASSWORD too
ComputeServiceContext context = ContextBuilder.newBuilder(provider)
.endpoint("http://192.168.92.30:5000/v2.0")
.credentials(identity, password)
.modules(modules)
.buildView(ComputeServiceContext.class);
compute = context.getComputeService();
nova = context.unwrap();
zones = nova.getApi().getConfiguredZones();
}
private void listServers() {
for (String zone: zones) {
ServerApi serverApi = nova.getApi().getServerApiForZone(zone);
System.out.println("Servers in " + zone);
for (Server server: serverApi.listInDetail().concat()) {
System.out.println(" " + server);
}
}
}
private void createServers() {
for (String zone : zones) {
ServerApi serverApi = nova.getApi().getServerApiForZone(zone);
CreateServerOptions sv = CreateServerOptions.Builder.adminPass("g");
ServerCreated newServer = serverApi.create("paparia", "nova/11d51feb-a472-479d-a304-8fe67d82af09", "1", sv);
// TemplateBuilder templateBuilder = compute.templateBuilder();
// Template template = templateBuilder.options(authorizePublicKey(Payloads.newPayload(new File("/home/me/.ssh/id_rsa.pub")).toString())).build();
System.out.println("Servers in " + zone);
listServers();
}
}
public void close() {
closeQuietly(compute.getContext());
}
}
TID: [0] [CC] [2014-02-20 20:26:26,005] ERROR {org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl} - Unable to build the jclouds object for iaas of type: openstack {org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl}
java.lang.NullPointerException: description
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
at org.jclouds.compute.domain.ImageBuilder.description(ImageBuilder.java:66)
at org.jclouds.openstack.nova.v2_0.compute.functions.ImageInZoneToImage.apply(ImageInZoneToImage.java:61)
at org.jclouds.openstack.nova.v2_0.compute.functions.ImageInZoneToImage.apply(ImageInZoneToImage.java:42)
at com.google.common.base.Functions$FunctionComposition.apply(Functions.java:210)
at com.google.common.collect.Iterators$8.transform(Iterators.java:860)
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
at com.google.common.collect.Iterators$7.computeNext(Iterators.java:701)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:320)
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:302)
at com.google.common.collect.FluentIterable.toSet(FluentIterable.java:352)
at org.jclouds.compute.config.ComputeServiceAdapterContextModule.transformGuardingNull(ComputeServiceAdapterContextModule.java:115)
at org.jclouds.compute.config.ComputeServiceAdapterContextModule.access$000(ComputeServiceAdapterContextModule.java:56)
at org.jclouds.compute.config.ComputeServiceAdapterContextModule$2.get(ComputeServiceAdapterContextModule.java:125)
at org.jclouds.compute.config.ComputeServiceAdapterContextModule$2.get(ComputeServiceAdapterContextModule.java:122)
at org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:75)
at org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:59)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257)
at com.google.common.cache.LocalCache.get(LocalCache.java:4000)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4004)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
at org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.get(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:121)
at org.jclouds.compute.domain.internal.TemplateBuilderImpl.getImages(TemplateBuilderImpl.java:836)
at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:652)
at org.apache.stratos.cloud.controller.iaases.OpenstackNovaIaas.buildTemplate(OpenstackNovaIaas.java:102)
at org.apache.stratos.cloud.controller.iaases.OpenstackNovaIaas.buildComputeServiceAndTemplate(OpenstackNovaIaas.java:73)
at org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl.setIaas(CloudControllerServiceImpl.java:166)
at org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl.deployCartridgeDefinition(CloudControllerServiceImpl.java:138)
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.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
at org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver.invokeBusinessLogic(RPCInOnlyMessageReceiver.java:66)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:231)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
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:662)
TID: [0] [CC] [2014-02-20 20:26:26,063] ERROR {org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver} - Unable to build the jclouds object for iaas of type: openstack {org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver}
org.apache.stratos.cloud.controller.exception.InvalidIaasProviderException: Unable to build the jclouds object for iaas of type: openstack
at org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl.setIaas(CloudControllerServiceImpl.java:174)
at org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl.deployCartridgeDefinition(CloudControllerServiceImpl.java:138)
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.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
at org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver.invokeBusinessLogic(RPCInOnlyMessageReceiver.java:66)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:231)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
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:662)
Caused by: java.lang.NullPointerException: description
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208)
at org.jclouds.compute.domain.ImageBuilder.description(ImageBuilder.java:66)
at org.jclouds.openstack.nova.v2_0.compute.functions.ImageInZoneToImage.apply(ImageInZoneToImage.java:61)
at org.jclouds.openstack.nova.v2_0.compute.functions.ImageInZoneToImage.apply(ImageInZoneToImage.java:42)
at com.google.common.base.Functions$FunctionComposition.apply(Functions.java:210)
at com.google.common.collect.Iterators$8.transform(Iterators.java:860)
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
at com.google.common.collect.Iterators$7.computeNext(Iterators.java:701)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:320)
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:302)
at com.google.common.collect.FluentIterable.toSet(FluentIterable.java:352)
at org.jclouds.compute.config.ComputeServiceAdapterContextModule.transformGuardingNull(ComputeServiceAdapterContextModule.java:115)
at org.jclouds.compute.config.ComputeServiceAdapterContextModule.access$000(ComputeServiceAdapterContextModule.java:56)
at org.jclouds.compute.config.ComputeServiceAdapterContextModule$2.get(ComputeServiceAdapterContextModule.java:125)
at org.jclouds.compute.config.ComputeServiceAdapterContextModule$2.get(ComputeServiceAdapterContextModule.java:122)
at org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:75)
at org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:59)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257)
at com.google.common.cache.LocalCache.get(LocalCache.java:4000)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4004)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
at org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.get(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:121)
at org.jclouds.compute.domain.internal.TemplateBuilderImpl.getImages(TemplateBuilderImpl.java:836)
at org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:652)
at org.apache.stratos.cloud.controller.iaases.OpenstackNovaIaas.buildTemplate(OpenstackNovaIaas.java:102)
at org.apache.stratos.cloud.controller.iaases.OpenstackNovaIaas.buildComputeServiceAndTemplate(OpenstackNovaIaas.java:73)
at org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl.setIaas(CloudControllerServiceImpl.java:166)
... 43 more
wso2carbon.log.sc
Description: Binary data
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. --> <cloudController xmlns:svns="http://org.wso2.securevault/configuration"> <svns:secureVault provider="org.wso2.securevault.secret.handler.SecretManagerSecretCallbackHandler" /> <dataPublisher enable="false"> <!-- BAM Server Info - default values are 'admin' and 'admin' Optional element. --> <bamServer> <!-- BAM server URL should be specified in carbon.xml --> <adminUserName>admin</adminUserName> <adminPassword svns:secretAlias="cloud.controller.bam.server.admin.password">admin</adminPassword> </bamServer> <!-- Default cron expression is '1 * * * * ? *' meaning 'first second of every minute'. Optional element. --> <cron>1 * * * * ? *</cron> <!-- Cassandra cluster related info --> <!--cassandraInfo> <connectionUrl>localhost:9160</connectionUrl> <userName>admin</userName> <password svns:secretAlias="cloud.controller.cassandra.server.password">admin</password> </cassandraInfo--> </dataPublisher> <topologySync enable="true"> <!-- MB server info --> <property name="amqpConnectionUrl" value="amqp://admin:admin@clientID/carbon?brokerlist='tcp://192.168.92.30:5682'" /> <property name="cron" value="1 * * * * ? *" /> <!--mbServerUrl>localhost:5674</mbServerUrl> <cron>1 * * * * ? *</cron--> </topologySync> <!-- Specify the properties that are common to an IaaS here. This element is not necessary [0..1]. But you can use this section to avoid specifying same property over and over again. --> <iaasProviders> <!--iaasProvider type="ec2" name="ec2 specific details"> <className>org.apache.stratos.cloud.controller.iaases.AWSEC2Iaas</className> <provider>aws-ec2</provider> <identity svns:secretAlias="cloud.controller.ec2.identity">dhsaghfdal</identity> <credential svns:secretAlias="cloud.controller.ec2.credential">jdkjaskd</credential> <scaleUpOrder>1</scaleUpOrder> <scaleDownOrder>2</scaleDownOrder> <property name="jclouds.ec2.ami-query" value="owner-id=XX-XX-XX;state=available;image-type=machine"/> <property name="availabilityZone" value="us-east-1c"/> <property name="securityGroups" value="manager,cep,mb,default"/> <property name="instanceType" value="m1.large"/> <property name="keyPair" value="nirmal-key"/> <imageId>us-east-1/ami-52409a3b</imageId> </iaasProvider--> <iaasProvider type="openstack" name="openstack specific details"> <className>org.apache.stratos.cloud.controller.iaases.OpenstackNovaIaas</className> <provider>openstack-nova</provider> <identity svns:secretAlias="cloud.controller.openstack.identity">demo:demo</identity> <credential svns:secretAlias="cloud.controller.openstack.credential">g</credential> <property name="jclouds.endpoint" value="http://192.168.92.30:5000/v2.0" /> <property name="jclouds.openstack-nova.auto-create-floating-ips" value="false"/> <property name="jclouds.api-version" value="2.0/" /> <property name="securityGroups" value="default" /> <property name="X" value="x" /> <property name="Y" value="y" /> <maxInstanceLimit>10</maxInstanceLimit> <imageId>nova/</imageId> </iaasProvider> </iaasProviders> </cloudController>
python_cartridge.jason
Description: Binary data
