Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,5 @@ bin/
### Mac OS ###
.DS_Store

.idea
.idea
/src/test/java/dev/tomr/hcloud/component/TestApp.java
29 changes: 24 additions & 5 deletions src/main/java/dev/tomr/hcloud/HetznerCloud.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import dev.tomr.hcloud.listener.ListenerManager;
import dev.tomr.hcloud.resources.server.Server;
import dev.tomr.hcloud.service.ServiceManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand All @@ -14,13 +15,14 @@
public class HetznerCloud {
protected static final Logger logger = LogManager.getLogger();

private static final ListenerManager listenerManager = ListenerManager.getInstance();
private static final ServiceManager serviceManager = ServiceManager.getInstance();
private static final ObjectMapper objectMapper = new ObjectMapper();
private static String HETZNER_CLOUD_HOST = "https://api.hetzner.cloud/v1/";
private static final String HETZNER_CLOUD_HOST = "https://api.hetzner.cloud/v1/";

private static HetznerCloud instance;

private final ListenerManager listenerManager = ListenerManager.getInstance();
private final ServiceManager serviceManager = ServiceManager.getInstance();

private String apiKey;
private final String host;

Expand Down Expand Up @@ -77,15 +79,15 @@ public static ObjectMapper getObjectMapper() {
* Get the internal {@code ListenerManager}. End users do not need to interact with the {@code ListenerManager}
* @return The {@code ListenerManager} Instance
*/
public static ListenerManager getListenerManager() {
public ListenerManager getListenerManager() {
return listenerManager;
}

/**
* Get the internal {@code ServiceManager}. End users do not need to interact with the {@code ServiceManager}
* @return The {@code ServiceManager} Instance
*/
public static ServiceManager getServiceManager() {
public ServiceManager getServiceManager() {
return serviceManager;
}

Expand All @@ -96,4 +98,21 @@ public static ServiceManager getServiceManager() {
public List<String> getHttpDetails() {
return List.of(host, apiKey);
}

/**
* Whether we have an API Key supplied
* @return true if one is present, false if not
*/
public boolean hasApiKey() {
return apiKey != null && !apiKey.isEmpty();
}

/**
* Get a Hetzner Server Instance from the local cache
* @param id ID of the server
* @return A server object from the local cache
*/
public Server getServer(Integer id) {
return serviceManager.getServerService().getServer(id);
}
}
37 changes: 37 additions & 0 deletions src/main/java/dev/tomr/hcloud/http/model/ServerDTOList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package dev.tomr.hcloud.http.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import dev.tomr.hcloud.http.HetznerJsonObject;

import java.util.List;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ServerDTOList extends HetznerJsonObject {
private Object meta;
private List<ServerDTO> servers;

public ServerDTOList() {}

public ServerDTOList(Object meta, List<ServerDTO> servers) {
this.meta = meta;
this.servers = servers;
}

public Object getMeta() {
return meta;
}

public List<ServerDTO> getServers() {
return servers;
}

public void setMeta(Object meta) {
this.meta = meta;
}

public void setServers(List<ServerDTO> servers) {
this.servers = servers;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ public void propertyChange(PropertyChangeEvent evt) {
Server server = (Server) evt.getSource();
logger.info("Server changed: " + evt.getPropertyName());
logger.info("Server: " + evt.getOldValue() + " -> " + evt.getNewValue());
HetznerCloud.getServiceManager().getServerService().serverNameOrLabelUpdate(evt.getPropertyName(), evt.getNewValue(), server);
HetznerCloud.getInstance().getServiceManager().getServerService().serverNameOrLabelUpdate(evt.getPropertyName(), evt.getNewValue(), server);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ public CreatedFrom(int id, String name) {
this.name = name;
}

public CreatedFrom() {
}

public int getId() {
return id;
}

public CreatedFrom setId(int id) {
public void setId(int id) {
this.id = id;
return this;
}

public String getName() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ public Datacenter(String description, Integer id, Location location, String name
this.serverTypes = serverTypes;
}

public Datacenter() {
}

public String getDescription() {
return description;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ public Deprecation(Date announced, Date unavailableAfter) {
this.unavailableAfter = unavailableAfter;
}

public Deprecation() {
}

public Date getAnnounced() {
return announced;
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/dev/tomr/hcloud/resources/common/Image.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ public Image(String architecture, Object boundTo, Date created, CreatedFrom crea
this.type = type;
}

public Image() {
}

public String getArchitecture() {
return architecture;
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/dev/tomr/hcloud/resources/common/Iso.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ public Iso(String architecture, Map<String, Date> deprecation, String descriptio
this.type = type;
}

public Iso() {
}

public String getArchitecture() {
return architecture;
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/dev/tomr/hcloud/resources/common/Location.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public Location(String city, String country, String description, Integer id, dou
this.networkZone = networkZone;
}

public Location() {
}

public String getCity() {
return city;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public PlacementGroup(Date created, int id, Map<String, String> labels, String n
this.type = type;
}

public PlacementGroup() {
}

public Date getCreated() {
return created;
}
Expand Down
10 changes: 6 additions & 4 deletions src/main/java/dev/tomr/hcloud/resources/common/Price.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

public class Price{
@JsonProperty("included_traffic")
private Integer includedTraffic;
private Long includedTraffic;
private String location;
@JsonProperty("price_hourly")
private PriceDetails priceHourly;
Expand All @@ -13,19 +13,21 @@ public class Price{
@JsonProperty("price_per_tb_traffic")
private PriceDetails pricePerTbTraffic;

public Price(Integer includedTraffic, String location, PriceDetails priceHourly, PriceDetails priceMonthly, PriceDetails pricePerTbTraffic) {
public Price(Long includedTraffic, String location, PriceDetails priceHourly, PriceDetails priceMonthly, PriceDetails pricePerTbTraffic) {
this.includedTraffic = includedTraffic;
this.location = location;
this.priceHourly = priceHourly;
this.priceMonthly = priceMonthly;
this.pricePerTbTraffic = pricePerTbTraffic;
}

public Integer getIncludedTraffic() {
public Price() {}

public Long getIncludedTraffic() {
return includedTraffic;
}

public void setIncludedTraffic(Integer includedTraffic) {
public void setIncludedTraffic(Long includedTraffic) {
this.includedTraffic = includedTraffic;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ public PriceDetails(String gross, String net) {
this.net = net;
}

public PriceDetails() {}

public String getGross() {
return gross;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ public Protection(boolean delete, boolean rebuild) {
this.rebuild = rebuild;
}

public Protection() {}

public boolean isDelete() {
return delete;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ public ServerType(String architecture, Integer cores, String cpuType, boolean de
this.storageType = storageType;
}

public ServerType() {}

public String getArchitecture() {
return architecture;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ public ServerTypes(List<Integer> available, List<Integer> availableForMigration,
this.supported = supported;
}

public ServerTypes() {}

public List<Integer> getAvailable() {
return available;
}
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/dev/tomr/hcloud/resources/server/Server.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ public class Server implements Serializable {
private Iso iso;
private Map<String, String> labels;
private List<Object> loadBalancers; // need to figure this out
private boolean locked;
private Boolean locked;
private String name;
private PlacementGroup placementGroup;
private Long primaryDiskSize;
//todo change this to an actual class
private List<Object> privateNet;
private Protection protection;
private Object publicNet;
private boolean rescueEnabled;
private Boolean rescueEnabled;
private ServerType serverType;
private String status;
private List<Integer> volumes;
Expand Down Expand Up @@ -67,7 +67,7 @@ public Server() {
* @param status Status of the Server
* @param volumes Attached Volumes
*/
public Server(Integer id, String backupWindow, String created, Datacenter datacenter, Image image, Long includedTraffic, Long ingoingTraffic, Long outgoingTraffic, Iso iso, Map<String, String> labels, List<Object> loadBalancers, boolean locked, String name, PlacementGroup placementGroup, Long primaryDiskSize, List<Object> privateNet, Protection protection, Object publicNet, boolean rescueEnabled, ServerType serverType, String status, List<Integer> volumes) {
public Server(Integer id, String backupWindow, String created, Datacenter datacenter, Image image, Long includedTraffic, Long ingoingTraffic, Long outgoingTraffic, Iso iso, Map<String, String> labels, List<Object> loadBalancers, Boolean locked, String name, PlacementGroup placementGroup, Long primaryDiskSize, List<Object> privateNet, Protection protection, Object publicNet, Boolean rescueEnabled, ServerType serverType, String status, List<Integer> volumes) {
this.id = id;
this.backupWindow = backupWindow;
this.created = created;
Expand All @@ -94,7 +94,7 @@ public Server(Integer id, String backupWindow, String created, Datacenter datace
}

private void setupPropertyChangeListener() {
propertyChangeSupport.addPropertyChangeListener(HetznerCloud.getListenerManager().getServerChangeListener());
propertyChangeSupport.addPropertyChangeListener(HetznerCloud.getInstance().getListenerManager().getServerChangeListener());
}


Expand Down Expand Up @@ -177,7 +177,7 @@ public List<Object> getLoadBalancers() {
return loadBalancers;
}

public boolean isLocked() {
public Boolean isLocked() {
return locked;
}

Expand All @@ -201,7 +201,7 @@ public Object getPublicNet() {
return publicNet;
}

public boolean isRescueEnabled() {
public Boolean isRescueEnabled() {
return rescueEnabled;
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/dev/tomr/hcloud/service/ServiceManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ public class ServiceManager {
private ExecutorService executor;

private ServiceManager() {
this.serverService = new ServerService();
instance = this;
this.serverService = new ServerService(this);
}

/**
Expand Down
Loading
Loading