[ https://issues.apache.org/jira/browse/JCLOUDS-238?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chris Custine closed JCLOUDS-238. --------------------------------- Resolution: Fixed Fix Version/s: 1.8.0 As of 1.8.0 (fixed in issue JCLOUDS-647) you retrieve the api for a region with getServerApi("region_name") on NovaApi. If necessary, you can specify an availability zone with NovaTemplateOptions.availabilityZone("az3"), etc. > api/openstack-compute supports only a per AZ deployment model > ------------------------------------------------------------- > > Key: JCLOUDS-238 > URL: https://issues.apache.org/jira/browse/JCLOUDS-238 > Project: jclouds > Issue Type: Bug > Components: jclouds-compute > Affects Versions: 1.6.0 > Reporter: Kavan K Patil > Assignee: Chris Custine > Fix For: 1.8.0 > > > I have been testing NovaApi against HP Cloud and have been working with both > per AZ endpoint model and a region wide endpoint model in different regions. > For clarity I would define the following two terms so that it helps me > providing further details: > Per AZ endpoint model : I call it so as we get a per AZ compute endpoint url. > Using this URL we could only work with a particular AZ of a cloud provider > (e.g. HP Cloud region-a has az1.region-a.geo-1 as one AZ and has its own > compute endpoint) > Region wide endpoint model: In this model there will be one compute endpoint > exposed by the provider. But underneath there could be multiple AZs. All the > openstack services work region wide and compute instances can be placed on > all AZs within the region selectively through an option while creating > instances. (e.g. HPCloud region-b.geo-1, which will have a single endpoint > for compute for the entire region. This is still in private beta stage.) > The existing framework with JClouds doesn't seem to fit the region wide model > and below I describe 3 issues I see. > To start with I can create a single connection for HP Cloud as below > {code} > ----------- > NovaApi api = > ContextBuilder.newBuilder("hpcloud-compute") > .credentials(identity, password) > .modules(modules) > .apiVersion("2") //The api version of region-b.geo-1 is 2 > which is required for next steps > ------------- > {code} > And the issues: > 1. But to get a reference to the ServerApi under this region I need to give > the name of a region, though the method name clearly expects a zone id. > {code} > ------------- > //So now we have a new connection to region-b-geo-1 > //But to get a ServerApi handle I need to do > //This looks ugly, as i need to provide the name of region for a zone! > serverApi = this.novaApi.getServerApiForZone("region-b.geo-1"); > //Ideally one should be able to do this instead of the above. But JClouds > throws an error that an endpoint for this AZ was not found > //serverApi = this.novaApi.getServerApiForZone("az1"); > ------------------------------ > {code} > 2. Also now that I have a ServerApi to the region, I don't get to select an > AZ to schedule an instance to a specific one. There is NO option under > CreateServerOptions to specify an AZ name! > 3. And the below call should return all AZs (az1, az2, az3), but it only > returns region-b.geo-1 > {code} > --------------------- > this.novaApi.getConfiguredZones() > --------------------- > {code} > I think this is due to the fact that the implementation of > getConfiguredZones() is mapped to the endpoints in the service catalogue > rather than the below API extension: > {code} > ---------------- > curl -i > https://region-b.geo-1.compute.hpcloudsvc.com/v2/<tenant-id>/os-availability-zone > -X GET -H "Accept: application/json" -H "X-Auth-Token: <token>" > RESP: [200] CaseInsensitiveDict({'date': 'Mon, 05 Aug 2013 10:35:03 GMT', > 'content-length': '236', 'content-type': 'application/json', > 'x-compute-request-id': 'req-c19dcfba-8a21-4a7e-b463-19943267c9bb'}) > RESP BODY: {"availabilityZoneInfo": [{"zoneState": {"available": true}, > "hosts": null, "zoneName": "az1"}, {"zoneState": {"available": true}, > "hosts": null, "zoneName": "az2"}, {"zoneState": {"available": true}, > "hosts": null, "zoneName": "az3"}]} > -------------- > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)