Skip to content

Commit a03fc58

Browse files
authored
Merge pull request #1226 from jyothisaroja/cached_images
Implement listCachedImages() for Glance V2 Images
2 parents 559c914 + c89cba0 commit a03fc58

File tree

4 files changed

+150
-0
lines changed

4 files changed

+150
-0
lines changed

core/src/main/java/org/openstack4j/api/image/v2/ImageService.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.openstack4j.common.RestService;
44
import org.openstack4j.model.common.ActionResponse;
55
import org.openstack4j.model.common.Payload;
6+
import org.openstack4j.model.image.v2.CachedImage;
67
import org.openstack4j.model.image.v2.Image;
78
import org.openstack4j.model.image.v2.ImageUpdate;
89
import org.openstack4j.model.image.v2.Member;
@@ -32,6 +33,13 @@ public interface ImageService extends RestService {
3233
* @return list of images fitered by filteringParams
3334
*/
3435
List<? extends Image> list(Map<String, String> filteringParams);
36+
37+
/**
38+
* List images currently in the glance image cache.
39+
*
40+
* @return list of cached images or empty list if the cache is empty or null if the cache is not enabled.
41+
*/
42+
List<? extends CachedImage> listCachedImages() ;
3543

3644
/**
3745
* Show details for an image by imageid.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.openstack4j.model.image.v2;
2+
3+
import org.openstack4j.model.ModelEntity;
4+
import java.util.Date;
5+
6+
/**
7+
* @author zdagjyo on 13/11/2018.
8+
* @see https://docs.openstack.org/developer/glance/cache.html
9+
*/
10+
public interface CachedImage extends ModelEntity {
11+
12+
/**
13+
*
14+
* @return the image id of the cached image
15+
*/
16+
String getImageId();
17+
18+
/**
19+
*
20+
* @return date when this image was last accessed in the cache
21+
*/
22+
Date getLastAccessed();
23+
24+
/**
25+
*
26+
* @return date when the image was last modified in the cache
27+
*/
28+
Date getLastModified();
29+
30+
/**
31+
*
32+
* @return nr of cache hits
33+
*/
34+
Integer getHits();
35+
36+
/**
37+
*
38+
* @return the image size
39+
*/
40+
Long getSize();
41+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package org.openstack4j.openstack.image.v2.domain;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
5+
import com.google.common.base.Objects;
6+
import org.openstack4j.model.image.v2.CachedImage;
7+
import org.openstack4j.openstack.common.CustomEpochToDateDeserializer;
8+
import org.openstack4j.openstack.common.ListResult;
9+
10+
import java.util.Date;
11+
import java.util.List;
12+
13+
/**
14+
* @author zdagjyo on 13/11/2018.
15+
*/
16+
public class CachedGlanceImage implements CachedImage {
17+
18+
private static final long serialVersionUID = 1L;
19+
20+
@JsonProperty("image_id")
21+
private String imageId;
22+
23+
private Integer hits;
24+
25+
@JsonProperty("last_accessed")
26+
@JsonDeserialize(using = CustomEpochToDateDeserializer.class)
27+
private Date lastAccessed;
28+
29+
@JsonDeserialize(using = CustomEpochToDateDeserializer.class)
30+
@JsonProperty("last_modified")
31+
private Date lastModified;
32+
33+
private Long size;
34+
35+
@Override
36+
public String getImageId() {
37+
return imageId;
38+
}
39+
40+
@Override
41+
public Date getLastAccessed() {
42+
return lastAccessed;
43+
}
44+
45+
@Override
46+
public Date getLastModified() {
47+
return lastModified;
48+
}
49+
50+
@Override
51+
public Integer getHits() {
52+
return hits;
53+
}
54+
55+
@Override
56+
public Long getSize() {
57+
return size;
58+
}
59+
60+
/**
61+
* {@inheritDoc}
62+
*/
63+
@Override
64+
public String toString() {
65+
return Objects.toStringHelper(this).omitNullValues()
66+
.add("id", imageId).add("size", size).add("hits", hits).add("lastAccessed", lastAccessed)
67+
.add("lastModified", lastModified).addValue("\n")
68+
.toString();
69+
}
70+
71+
public static class CachedImages extends ListResult<CachedGlanceImage> {
72+
73+
private static final long serialVersionUID = 1L;
74+
@JsonProperty("cached_images")
75+
private List<CachedGlanceImage> cachedImages;
76+
77+
@Override
78+
protected List<CachedGlanceImage> value() {
79+
return cachedImages;
80+
}
81+
}
82+
}

core/src/main/java/org/openstack4j/openstack/image/v2/internal/ImageServiceImpl.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
import com.fasterxml.jackson.databind.node.ObjectNode;
66
import com.github.fge.jsonpatch.diff.JsonDiff;
77
import org.openstack4j.api.Apis;
8+
import org.openstack4j.api.exceptions.ResponseException;
89
import org.openstack4j.api.image.v2.ImageService;
910
import org.openstack4j.api.image.v2.TaskService;
11+
import org.openstack4j.core.transport.ExecutionOptions;
1012
import org.openstack4j.core.transport.HttpResponse;
13+
import org.openstack4j.core.transport.propagation.PropagateOnStatus;
1114
import org.openstack4j.model.common.ActionResponse;
1215
import org.openstack4j.model.common.Payload;
16+
import org.openstack4j.model.image.v2.CachedImage;
1317
import org.openstack4j.model.image.v2.Image;
1418
import org.openstack4j.model.image.v2.ImageUpdate;
1519
import org.openstack4j.model.image.v2.Member;
20+
import org.openstack4j.openstack.image.v2.domain.CachedGlanceImage.CachedImages;
1621
import org.openstack4j.openstack.image.v2.domain.GlanceImage;
1722
import org.openstack4j.openstack.image.v2.domain.GlanceImageUpdate;
1823
import org.openstack4j.openstack.image.v2.domain.GlanceMember;
@@ -52,6 +57,20 @@ public List<? extends Image> list() {
5257
public List<? extends Image> list(Map<String, String> filteringParams) {
5358
return get(GlanceImage.Images.class, uri("/images")).params(filteringParams).execute().getList();
5459
}
60+
61+
/**
62+
* {@inheritDoc}
63+
*/
64+
@Override
65+
public List<? extends CachedImage> listCachedImages() {
66+
try {
67+
return get(CachedImages.class, uri("/cached_images"))
68+
.execute(ExecutionOptions.<CachedImages>create(PropagateOnStatus.on(404))).getList();
69+
}
70+
catch (ResponseException e) {
71+
return null;
72+
}
73+
}
5574

5675
/**
5776
* {@inheritDoc}

0 commit comments

Comments
 (0)