|
2 | 2 | from tofupy import Tofu |
3 | 3 | import requests |
4 | 4 | import os |
5 | | -import time |
| 5 | +from datetime import datetime |
| 6 | +from dateutil.relativedelta import relativedelta |
6 | 7 |
|
7 | 8 | coral_uri = os.environ.get("TF_VAR_coral_uri") |
8 | 9 | headers = {"Authorization": "Bearer "+os.environ.get("TF_VAR_auth_token")} |
9 | 10 |
|
| 11 | +def get_lease_request_json(): |
| 12 | + start_time = datetime.now().strftime("%Y-%m-%d-%H:%M:%S") |
| 13 | + end_time = (datetime.now() + relativedelta(months=1)).strftime("%Y-%m-%d-%H:%M:%S") |
| 14 | + return { |
| 15 | + "context": { |
| 16 | + "user_id": "caa8b54a-eb5e-4134-8ae2-a3946a428ec7", |
| 17 | + "project_id": "c2eced313b324cdb8e670e6e30bf387d", |
| 18 | + "auth_url": "http://api.example.com:5000/v3", |
| 19 | + "region_name": "RegionOne" |
| 20 | + }, |
| 21 | + "lease": { |
| 22 | + "id": "e96b5a17-ada0-4034-a5ea-34db024b8e04", |
| 23 | + "name": "my_new_lease", |
| 24 | + "start_date": start_time, |
| 25 | + "end_date": end_time, |
| 26 | + "reservations": [ |
| 27 | + { "amount": 2, |
| 28 | + "flavor_id": "e26a4241-b83d-4516-8e0e-8ce2665d1966", |
| 29 | + "resource_type": "flavor:instance", |
| 30 | + "affinity" : None, |
| 31 | + "allocations": [] |
| 32 | + } |
| 33 | + ], |
| 34 | + "resource_requests": { |
| 35 | + "DISK_GB": 35, |
| 36 | + "MEMORY_MB": 1000, |
| 37 | + "VCPU": 4 |
| 38 | + } |
| 39 | + } |
| 40 | + } |
| 41 | + |
| 42 | + |
| 43 | +lease_request_json = get_lease_request_json() |
| 44 | + |
10 | 45 | @pytest.fixture(scope="session") |
11 | 46 | def terraform_rest_setup(): |
12 | 47 | working_dir = os.path.join(os.path.dirname(__file__), "..") |
13 | 48 | var_file = os.path.join(working_dir, "example-config.tfvars") |
| 49 | + |
14 | 50 | tf = Tofu(cwd=working_dir) |
15 | 51 | tf.init() |
16 | 52 | tf.apply(extra_args=["--var-file="+var_file]) |
17 | | - # add_consumers() |
| 53 | + |
18 | 54 | yield |
19 | | - tf.apply(extra_args=["--var-file="+var_file],destroy=True) |
| 55 | + |
| 56 | + destroy = tf.apply(extra_args=["--var-file="+var_file],destroy=True) |
| 57 | + assert len(destroy.errors) == 0 |
| 58 | + |
| 59 | +@pytest.fixture(scope="session") |
| 60 | +def add_consumer_request(terraform_rest_setup): |
| 61 | + # Add consumer outside of tofu to simulate requests from Blazar |
| 62 | + |
| 63 | + consumer = requests.post(coral_uri+"/consumer/create",headers={ |
| 64 | + "Authorization": "Bearer "+os.environ.get("TF_VAR_auth_token"), |
| 65 | + "Content-Type": "application/json" |
| 66 | + }, |
| 67 | + json=lease_request_json |
| 68 | + ) |
| 69 | + yield consumer.status_code |
| 70 | + requests.post(coral_uri+"/consumer/on-end",headers={ |
| 71 | + "Authorization": "Bearer "+os.environ.get("TF_VAR_auth_token"), |
| 72 | + "Content-Type": "application/json" |
| 73 | + }, |
| 74 | + json=lease_request_json |
| 75 | + ) |
| 76 | + |
| 77 | +# def test_allocation_resources_still_consumed_by_deleted_consumers |
20 | 78 |
|
21 | 79 | def api_get_request(resource): |
22 | 80 | return requests.get(coral_uri+"/"+resource,headers=headers).json() |
@@ -97,3 +155,9 @@ def test_resource_allocations_created(terraform_rest_setup): |
97 | 155 | assert allocation_resources["Q1-0"] == {"VCPU": 40000, "MEMORY_MB": 4423680, "DISK_GB": 108000} |
98 | 156 | assert allocation_resources["Q1-1"] == {"VCPU": 20000, "MEMORY_MB": 2000000, "DISK_GB": 200000} |
99 | 157 | assert allocation_resources["Q2-0"] == {"VCPU": 80000, "MEMORY_MB": 8000000, "DISK_GB": 300000} |
| 158 | + |
| 159 | +def test_consumer_added_or_exists(add_consumer_request): |
| 160 | + assert add_consumer_request == 204 |
| 161 | + |
| 162 | +def test_can_query_consumer(add_consumer_request): |
| 163 | + assert len(api_get_request("consumer")) == 1 |
0 commit comments