Skip to content

Commit 942f64d

Browse files
committed
Merge pull request #437 from csm1sh/master
add support to list available zone list
2 parents 94170ae + 136aaf5 commit 942f64d

File tree

7 files changed

+155
-0
lines changed

7 files changed

+155
-0
lines changed

core/src/main/java/org/openstack4j/api/storage/BlockStorageService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public interface BlockStorageService extends RestService {
2020
*/
2121
BlockVolumeSnapshotService snapshots();
2222

23+
CinderZoneService zones();
24+
2325
/**
2426
* Gets the Absolute limits used by this tenant
2527
*
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.openstack4j.api.storage;
2+
3+
import java.util.List;
4+
5+
import org.openstack4j.common.RestService;
6+
import org.openstack4j.openstack.storage.block.domain.AvailabilityZone;
7+
8+
/**
9+
* @author Jeff Hu
10+
* list all available cinder zones
11+
*/
12+
public interface CinderZoneService extends RestService {
13+
14+
List<? extends AvailabilityZone> list();
15+
}

core/src/main/java/org/openstack4j/openstack/provider/DefaultAPIProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import org.openstack4j.api.storage.BlockVolumeService;
6868
import org.openstack4j.api.storage.BlockVolumeSnapshotService;
6969
import org.openstack4j.api.storage.BlockVolumeTransferService;
70+
import org.openstack4j.api.storage.CinderZoneService;
7071
import org.openstack4j.api.storage.ObjectStorageAccountService;
7172
import org.openstack4j.api.storage.ObjectStorageContainerService;
7273
import org.openstack4j.api.storage.ObjectStorageObjectService;
@@ -137,6 +138,7 @@
137138
import org.openstack4j.openstack.storage.block.internal.BlockVolumeServiceImpl;
138139
import org.openstack4j.openstack.storage.block.internal.BlockVolumeSnapshotServiceImpl;
139140
import org.openstack4j.openstack.storage.block.internal.BlockVolumeTransferServiceImpl;
141+
import org.openstack4j.openstack.storage.block.internal.CinderZoneServiceImpl;
140142
import org.openstack4j.openstack.storage.object.internal.ObjectStorageAccountServiceImpl;
141143
import org.openstack4j.openstack.storage.object.internal.ObjectStorageContainerServiceImpl;
142144
import org.openstack4j.openstack.storage.object.internal.ObjectStorageObjectServiceImpl;
@@ -192,6 +194,7 @@ public void initialize() {
192194
bind(AlarmService.class, AlarmServiceImpl.class);
193195
bind(HypervisorService.class, HypervisorServiceImpl.class);
194196
bind(ZoneService.class, ZoneServiceImpl.class);
197+
bind(CinderZoneService.class, CinderZoneServiceImpl.class);
195198
bind(HeatService.class, HeatServiceImpl.class);
196199
bind(StackService.class, StackServiceImpl.class);
197200
bind(TemplateService.class, TemplateServiceImpl.class);
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.openstack4j.openstack.storage.block.domain;
2+
3+
import org.openstack4j.model.ModelEntity;
4+
5+
/**
6+
* Availability Zone Model Entity
7+
*
8+
* @author Jeff Hu
9+
*/
10+
public interface AvailabilityZone extends ModelEntity {
11+
12+
/**
13+
* @return zone's state
14+
*/
15+
ZoneState getZoneState();
16+
17+
18+
/**
19+
* @return zone's name
20+
*/
21+
String getZoneName();
22+
23+
24+
public interface ZoneState extends ModelEntity {
25+
26+
/**
27+
* @return the state of zone
28+
*/
29+
boolean getAvailable();
30+
}
31+
32+
33+
34+
}
35+
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package org.openstack4j.openstack.storage.block.domain;
2+
3+
import static com.google.common.base.Objects.toStringHelper;
4+
5+
import java.util.List;
6+
7+
import org.openstack4j.openstack.common.ListResult;
8+
9+
import com.fasterxml.jackson.annotation.JsonProperty;
10+
import com.fasterxml.jackson.annotation.JsonRootName;
11+
12+
public class ExtAvailabilityZone implements AvailabilityZone {
13+
14+
private static final long serialVersionUID = 1L;
15+
16+
ExtZoneState zoneState;
17+
String zoneName;
18+
19+
/**
20+
* {@inheritDoc}
21+
*/
22+
@Override
23+
public ZoneState getZoneState() {
24+
return zoneState;
25+
}
26+
27+
/**
28+
* {@inheritDoc}
29+
*/
30+
@Override
31+
public String getZoneName() {
32+
return zoneName;
33+
}
34+
35+
36+
@JsonRootName("zoneState")
37+
static class ExtZoneState implements ZoneState {
38+
private static final long serialVersionUID = 1L;
39+
40+
boolean available;
41+
42+
/**
43+
* {@inheritDoc}
44+
*/
45+
@Override
46+
public boolean getAvailable() {
47+
return available;
48+
}
49+
50+
@Override
51+
public String toString() {
52+
return toStringHelper(this).omitNullValues()
53+
.add("available", available)
54+
.toString();
55+
}
56+
}
57+
58+
59+
public static class AvailabilityZones extends ListResult<ExtAvailabilityZone> {
60+
61+
private static final long serialVersionUID = 1L;
62+
63+
@JsonProperty("availabilityZoneInfo")
64+
private List<ExtAvailabilityZone> result;
65+
66+
@Override
67+
protected List<ExtAvailabilityZone> value() {
68+
return result;
69+
}
70+
71+
72+
}
73+
}

core/src/main/java/org/openstack4j/openstack/storage/block/internal/BlockStorageServiceImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.openstack4j.api.storage.BlockStorageService;
66
import org.openstack4j.api.storage.BlockVolumeService;
77
import org.openstack4j.api.storage.BlockVolumeSnapshotService;
8+
import org.openstack4j.api.storage.CinderZoneService;
89
import org.openstack4j.model.storage.block.BlockLimits;
910
import org.openstack4j.openstack.storage.block.domain.CinderBlockLimits;
1011

@@ -47,4 +48,10 @@ public BlockQuotaSetService quotaSets() {
4748
return Apis.get(BlockQuotaSetService.class);
4849
}
4950

51+
@Override
52+
public CinderZoneService zones()
53+
{
54+
return Apis.get(CinderZoneService.class);
55+
}
56+
5057
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.openstack4j.openstack.storage.block.internal;
2+
3+
import java.util.List;
4+
5+
import org.openstack4j.api.storage.CinderZoneService;
6+
import org.openstack4j.openstack.storage.block.domain.AvailabilityZone;
7+
import org.openstack4j.openstack.storage.block.domain.ExtAvailabilityZone.AvailabilityZones;
8+
9+
public class CinderZoneServiceImpl extends BaseBlockStorageServices implements CinderZoneService
10+
{
11+
12+
@Override
13+
public List<? extends AvailabilityZone> list()
14+
{
15+
String uri = "/os-availability-zone";
16+
return get(AvailabilityZones.class, uri).execute().getList();
17+
}
18+
19+
20+
}

0 commit comments

Comments
 (0)