diff --git a/deploy.py b/deploy.py index 0847e08..3c48fa7 100644 --- a/deploy.py +++ b/deploy.py @@ -1,16 +1,54 @@ import json from hcloud import Client +from hcloud.networks.domain import NetworkSubnet +from hcloud.locations.domain import Location class Client_MS: def __init__(self) -> None: self.config = self.load_config() self.client = Client(token=self.config["token"]) + self.ssh_key = self.get_ssh() + self.network = self.create_network() + self.volume = self.create_volume() def load_config(self): with open('config.json') as json_file: return json.load(json_file) + def get_ssh(self): + if(self.client.ssh_keys.get_by_name(self.config["ssh_name"])): + print("SSH_KEY: Key exists.") + return self.client.ssh_keys.get_by_name(self.config["ssh_name"]) + else: + print("SSH_KEY: Creating ssh_key.") + return self.client.ssh_keys.create(name=self.config["ssh_name"], public_key=self.config["ssh_public"]) + + def create_network(self): + if(self.client.networks.get_by_name(self.config["network"])): + print("NETWORK: Network exists.") + return self.client.networks.get_by_name(self.config["network"]) + else: + print("NETWORK: Creating network.") + return self.client.networks.create( + name=self.config["network"], + ip_range=self.config["network-ip"], + subnets=[ + NetworkSubnet(ip_range=self.config["network-ip"], + network_zone="eu-central", type="cloud") + ] + ) + + def create_volume(self): + if(self.client.volumes.get_by_name(self.config["volume"])): + print("VOLUME: Volume exists.") + return self.client.volumes.get_by_name(self.config["volume"]) + else: + print("VOLUME: Creating volume.") + return self.client.volumes.create( + size=10, name=self.config["volume"], location=Location(id="hel1")) + c = Client_MS() print(c.client) +print(c.ssh_key)