Skip to content

Commit 4124d90

Browse files
committed
feat: start work on auto caching and accessing servers
1 parent 213e63a commit 4124d90

23 files changed

Lines changed: 156 additions & 22 deletions

src/main/java/dev/tomr/hcloud/HetznerCloud.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import dev.tomr.hcloud.listener.ListenerManager;
5+
import dev.tomr.hcloud.resources.server.Server;
56
import dev.tomr.hcloud.service.ServiceManager;
67
import org.apache.logging.log4j.LogManager;
78
import org.apache.logging.log4j.Logger;
@@ -14,10 +15,10 @@
1415
public class HetznerCloud {
1516
protected static final Logger logger = LogManager.getLogger();
1617

17-
private static final ListenerManager listenerManager = ListenerManager.getInstance();
18-
private static final ServiceManager serviceManager = ServiceManager.getInstance();
18+
private static ListenerManager listenerManager = ListenerManager.getInstance();
19+
private static ServiceManager serviceManager = ServiceManager.getInstance();
1920
private static final ObjectMapper objectMapper = new ObjectMapper();
20-
private static String HETZNER_CLOUD_HOST = "https://api.hetzner.cloud/v1/";
21+
private static final String HETZNER_CLOUD_HOST = "https://api.hetzner.cloud/v1/";
2122

2223
private static HetznerCloud instance;
2324

@@ -32,6 +33,7 @@ public HetznerCloud(String apiKey) {
3233
this.apiKey = apiKey;
3334
this.host = HETZNER_CLOUD_HOST;
3435
instance = this;
36+
ServiceManager.getInstance().getServerService().forceRefreshServersCache();
3537
}
3638

3739
/**
@@ -43,6 +45,7 @@ public HetznerCloud(String apiKey, String host) {
4345
this.apiKey = apiKey;
4446
this.host = host;
4547
instance = this;
48+
ServiceManager.getInstance().getServerService().forceRefreshServersCache();
4649
}
4750

4851
/**
@@ -96,4 +99,21 @@ public static ServiceManager getServiceManager() {
9699
public List<String> getHttpDetails() {
97100
return List.of(host, apiKey);
98101
}
102+
103+
/**
104+
* Whether we have an API Key supplied
105+
* @return true if one is present, false if not
106+
*/
107+
public boolean hasApiKey() {
108+
return apiKey != null && !apiKey.isEmpty();
109+
}
110+
111+
/**
112+
* Get a Hetzner Server Instance from the local cache
113+
* @param id ID of the server
114+
* @return A server object from the local cache
115+
*/
116+
public Server getServer(Integer id) {
117+
return serviceManager.getServerService().getServer(id);
118+
}
99119
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package dev.tomr.hcloud.http.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonInclude;
5+
import dev.tomr.hcloud.http.HetznerJsonObject;
6+
7+
import java.util.List;
8+
9+
@JsonIgnoreProperties(ignoreUnknown = true)
10+
@JsonInclude(JsonInclude.Include.NON_NULL)
11+
public class ServerDTOList extends HetznerJsonObject {
12+
private Object meta;
13+
private List<ServerDTO> servers;
14+
15+
public ServerDTOList() {}
16+
17+
public ServerDTOList(Object meta, List<ServerDTO> servers) {
18+
this.meta = meta;
19+
this.servers = servers;
20+
}
21+
22+
public Object getMeta() {
23+
return meta;
24+
}
25+
26+
public List<ServerDTO> getServers() {
27+
return servers;
28+
}
29+
30+
public void setMeta(Object meta) {
31+
this.meta = meta;
32+
}
33+
34+
public void setServers(List<ServerDTO> servers) {
35+
this.servers = servers;
36+
}
37+
}

src/main/java/dev/tomr/hcloud/resources/common/CreatedFrom.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ public CreatedFrom(int id, String name) {
99
this.name = name;
1010
}
1111

12+
public CreatedFrom() {
13+
}
14+
1215
public int getId() {
1316
return id;
1417
}
1518

16-
public CreatedFrom setId(int id) {
19+
public void setId(int id) {
1720
this.id = id;
18-
return this;
1921
}
2022

2123
public String getName() {

src/main/java/dev/tomr/hcloud/resources/common/Datacenter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public Datacenter(String description, Integer id, Location location, String name
1818
this.serverTypes = serverTypes;
1919
}
2020

21+
public Datacenter() {
22+
}
23+
2124
public String getDescription() {
2225
return description;
2326
}

src/main/java/dev/tomr/hcloud/resources/common/Deprecation.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ public Deprecation(Date announced, Date unavailableAfter) {
1414
this.unavailableAfter = unavailableAfter;
1515
}
1616

17+
public Deprecation() {
18+
}
19+
1720
public Date getAnnounced() {
1821
return announced;
1922
}

src/main/java/dev/tomr/hcloud/resources/common/Image.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ public Image(String architecture, Object boundTo, Date created, CreatedFrom crea
5353
this.type = type;
5454
}
5555

56+
public Image() {
57+
}
58+
5659
public String getArchitecture() {
5760
return architecture;
5861
}

src/main/java/dev/tomr/hcloud/resources/common/Iso.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ public Iso(String architecture, Map<String, Date> deprecation, String descriptio
2020
this.type = type;
2121
}
2222

23+
public Iso() {
24+
}
25+
2326
public String getArchitecture() {
2427
return architecture;
2528
}

src/main/java/dev/tomr/hcloud/resources/common/Location.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ public Location(String city, String country, String description, Integer id, dou
2424
this.networkZone = networkZone;
2525
}
2626

27+
public Location() {
28+
}
29+
2730
public String getCity() {
2831
return city;
2932
}

src/main/java/dev/tomr/hcloud/resources/common/PlacementGroup.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public PlacementGroup(Date created, int id, Map<String, String> labels, String n
2121
this.type = type;
2222
}
2323

24+
public PlacementGroup() {
25+
}
26+
2427
public Date getCreated() {
2528
return created;
2629
}

src/main/java/dev/tomr/hcloud/resources/common/Price.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
public class Price{
66
@JsonProperty("included_traffic")
7-
private Integer includedTraffic;
7+
private Long includedTraffic;
88
private String location;
99
@JsonProperty("price_hourly")
1010
private PriceDetails priceHourly;
@@ -13,19 +13,21 @@ public class Price{
1313
@JsonProperty("price_per_tb_traffic")
1414
private PriceDetails pricePerTbTraffic;
1515

16-
public Price(Integer includedTraffic, String location, PriceDetails priceHourly, PriceDetails priceMonthly, PriceDetails pricePerTbTraffic) {
16+
public Price(Long includedTraffic, String location, PriceDetails priceHourly, PriceDetails priceMonthly, PriceDetails pricePerTbTraffic) {
1717
this.includedTraffic = includedTraffic;
1818
this.location = location;
1919
this.priceHourly = priceHourly;
2020
this.priceMonthly = priceMonthly;
2121
this.pricePerTbTraffic = pricePerTbTraffic;
2222
}
2323

24-
public Integer getIncludedTraffic() {
24+
public Price() {}
25+
26+
public Long getIncludedTraffic() {
2527
return includedTraffic;
2628
}
2729

28-
public void setIncludedTraffic(Integer includedTraffic) {
30+
public void setIncludedTraffic(Long includedTraffic) {
2931
this.includedTraffic = includedTraffic;
3032
}
3133

0 commit comments

Comments
 (0)