diff --git a/4/del.py b/4/del.py index 8871be5..f014ba9 100644 --- a/4/del.py +++ b/4/del.py @@ -14,3 +14,10 @@ for i in servers: if i.data_model.name.startswith(INDEKS): action = client.servers.delete(i) print("Cleaning servers: done") + +load_balancers = client.load_balancers.get_all() + +for lb in load_balancers: + if lb.data_model.name.startswith(INDEKS): + action = client.load_balancers.delete(lb) +print(f'Cleaning load balanced: done') diff --git a/4/main.py b/4/main.py index c47c600..4bc728b 100644 --- a/4/main.py +++ b/4/main.py @@ -18,8 +18,8 @@ INDEKS = "s444455" hetzner_token = "" ssh_name = f"{INDEKS}-key" vnet_name = f"{INDEKS}-pzc-vnet" -serwer_1_name = f"{INDEKS}-serwer_1" -serwer_2_name = f"{INDEKS}-serwer_2" +serwer_1_name = f"{INDEKS}-serwer-1" +serwer_2_name = f"{INDEKS}-serwer-2" load_balancer_name = f"{INDEKS}-load-balancer" @@ -37,17 +37,12 @@ vnet = client.networks.create( type='cloud') ] ) -""" +""" vnet = client.networks.get_by_name(vnet_name) print("Vnet: done") -with open("ssh.txt", "r") as file: - ssh_key_text = file.read().strip() - #ssh_key = client.ssh_keys.create(name=ssh_name, public_key=ssh_key_text) -ssh_key = client.ssh_keys.get_by_name(ssh_name) or None -if not ssh_key: - ssh_key = client.ssh_keys.create(name=ssh_name, public_key=ssh_key_text) +ssh_key = client.ssh_keys.get_by_name(ssh_name) print("Key: done") server = r''' @@ -102,7 +97,7 @@ serwer2 = client.servers.create( serwer2.action.wait_until_finished() serwer2 = client.servers.get_by_name(serwer_2_name) -print("Serwer1: done") +print("Serwer2: done") load_balancer = client.load_balancers.create( name=load_balancer_name, @@ -119,16 +114,16 @@ load_balancer = client.load_balancers.create( type='server', server=serwer2, use_private_ip=True, - ), + ) ], services=[ LoadBalancerService( protocol='http', - listen_port=80, - destination_port=80, + listen_port=8080, + destination_port=8080, health_check=LoadBalancerHealthCheck( protocol='http', - port=80, + port=8080, interval=15, timeout=10, retries=3, @@ -143,7 +138,13 @@ load_balancer = client.load_balancers.create( cookie_lifetime=300, sticky_sessions=True, certificates=[], - ) - ), - ] -) + ), + ) + ] + ) + + +load_balancer.action.wait_until_finished() +if load_balancer.action.complete: + load_balancer = client.load_balancers.get_by_name(load_balancer_name) + print(f"Load balancer: http://{load_balancer.data_model.public_net.ipv4.ip}:8080") \ No newline at end of file diff --git a/4/run.sh b/4/run.sh index 8004056..929a50d 100755 --- a/4/run.sh +++ b/4/run.sh @@ -1,5 +1,5 @@ #!/bin/bash pip3 install hcloud -#python3 del.py +python3 del.py python3 main.py \ No newline at end of file diff --git a/4/test_web.py b/4/test_web.py deleted file mode 100644 index 3475842..0000000 --- a/4/test_web.py +++ /dev/null @@ -1,128 +0,0 @@ -import requests -import random -import math -import time -import threading -import logging -logging.getLogger().setLevel(logging.INFO) - - -API_URL="http://localhost:8080" - - -UNIT = 5.0 # secs - -# Pre generated primes -first_primes_list = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, - 31, 37, 41, 43, 47, 53, 59, 61, 67, - 71, 73, 79, 83, 89, 97, 101, 103, - 107, 109, 113, 127, 131, 137, 139, - 149, 151, 157, 163, 167, 173, 179, - 181, 191, 193, 197, 199, 211, 223, - 227, 229, 233, 239, 241, 251, 257, - 263, 269, 271, 277, 281, 283, 293, - 307, 311, 313, 317, 331, 337, 347, 349] - - -def nBitRandom(n): - return random.randrange(2**(n-1)+1, 2**n - 1) - -def getLowLevelPrime(n): - '''Generate a prime candidate divisible - by first primes''' - while True: - # Obtain a random number - pc = nBitRandom(n) - - # Test divisibility by pre-generated - # primes - for divisor in first_primes_list: - if pc % divisor == 0 and divisor**2 <= pc: - break - else: return pc - -def isMillerRabinPassed(mrc): - '''Run 20 iterations of Rabin Miller Primality test''' - maxDivisionsByTwo = 0 - ec = mrc-1 - while ec % 2 == 0: - ec >>= 1 - maxDivisionsByTwo += 1 - assert(2**maxDivisionsByTwo * ec == mrc-1) - - def trialComposite(round_tester): - if pow(round_tester, ec, mrc) == 1: - return False - for i in range(maxDivisionsByTwo): - if pow(round_tester, 2**i * ec, mrc) == mrc-1: - return False - return True - - # Set number of trials here - numberOfRabinTrials = 20 - for i in range(numberOfRabinTrials): - round_tester = random.randrange(2, mrc) - if trialComposite(round_tester): - return False - return True - -def random_large_prime(bits): - while True: - prime_candidate = getLowLevelPrime(bits) - if not isMillerRabinPassed(prime_candidate): - continue - else: - return prime_candidate - -def thread_function(i, fast, timeout): - start = time.time() - - c = 5 # bits: 20: 200ms; 21: 350ms; 22: 700ms 23: 1.5s; 25: 6s; 26: 10s; 27: 24s - bits = 19 if fast else 23 - last_report = time.time() - processing_time = 0.0 - reqs = 0 - while True: - iter_start = time.time() - if iter_start - start > timeout: - logging.info("Thread: %d\treqs: %d\tmean time: %.3fs\t%s"%(i, reqs, processing_time/reqs if reqs>0 else 0.0, "fast\t" if fast else "")) - results[i][iter_start] = processing_time/reqs if reqs>0 else 0.0 - return - if iter_start - last_report > UNIT/2: - if len(results[i])%2 == 0: - logging.info("Thread: %d\treqs: %d\tmean time: %.3fs\t%s"%(i, reqs, processing_time/reqs if reqs>0 else 0.0, "fast\t" if fast else "")) - results[i][iter_start] = processing_time/reqs if reqs>0 else 0.0 - processing_time = 0.0 - reqs = 0 - last_report=iter_start - - factors = [random_large_prime(bits) for i in range(c)] - factors.sort() - n=math.prod(factors) - - r = requests.get(API_URL+'/factors/%d'%(n)) - if r.status_code != 200: - logging.error("wrong status code from webservice") - else: - result = r.json() - if result != factors: - logging.error("Wrong factors") - - processing_time+=time.time() - iter_start - reqs+=1 - time.sleep(0.5) - -START = time.time() -slow_threads = 4 - -results = [ {} for i in range(slow_threads+1)] - -t0 = threading.Thread(target=thread_function, args=(0, True, (5 + slow_threads*3) * UNIT)) -t0.start() -time.sleep(2 * UNIT) -for i in range(slow_threads): - t = threading.Thread(target=thread_function, args=(i+1, False, (slow_threads-i) * 3 * UNIT)) - t.start() - time.sleep(2 * UNIT) - -t0.join() \ No newline at end of file