-
Notifications
You must be signed in to change notification settings - Fork 0
/
neturon
77 lines (67 loc) · 2.53 KB
/
neturon
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import requests
# Dane uwierzytelniające do API OpenStack
auth = {
'auth_url': 'http://<YOUR_OPENSTACK_AUTH_URL>/v3',
'username': '<YOUR_USERNAME>',
'password': '<YOUR_PASSWORD>',
'project_name': '<YOUR_PROJECT_NAME>',
'user_domain_id': 'default',
'project_domain_id': 'default',
}
# Uzyskaj token uwierzytelniający
auth_data = {
"auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": auth['username'],
"domain": {"id": auth['user_domain_id']},
"password": auth['password']
}
}
},
"scope": {
"project": {
"name": auth['project_name'],
"domain": {"id": auth['project_domain_id']}
}
}
}
}
response = requests.post(f"{auth['auth_url']}/auth/tokens", json=auth_data)
response_data = response.json()
# Pobierz token z odpowiedzi
token = response.headers['X-Subject-Token']
# Zdefiniuj nagłówki żądania z uwzględnieniem tokena
headers = {
'X-Auth-Token': token,
'Content-Type': 'application/json'
}
# Zdefiniuj identyfikator instancji (device_id)
device_id = '5e3898d7-11be-483e-9732-b2f5eccd2b2e'
# Wykonaj zapytanie GET do API Neutron, aby znaleźć porty dla danej instancji
url = f"http://<YOUR_NEUTRON_API_URL>/v2.0/ports?device_id={device_id}"
response = requests.get(url, headers=headers)
response_data = response.json()
# Sprawdź, czy znaleziono porty dla podanej instancji
if 'ports' in response_data:
ports = response_data['ports']
if ports:
for port in ports:
# Pobierz listę przypisanych adresów IP
fixed_ips = port.get('fixed_ips', [])
for ip in fixed_ips:
ip_address = ip['ip_address']
subnet_id = ip['subnet_id']
# Wykonaj zapytanie DELETE, aby usunąć adres IP z portu
url = f"http://<YOUR_NEUTRON_API_URL>/v2.0/ports/{port['id']}"
response = requests.delete(url, headers=headers)
if response.status_code == 204:
print(f"Usunięto adres IP {ip_address} ze zbioru {subnet_id} na porcie {port['id']}")
else:
print(f"Błąd podczas usuwania adresu IP {ip_address} na porcie {port['id']}. Kod odpowiedzi: {response.status_code}")
else:
print(f"Nie znaleziono portów dla device_id: {device_id}")
else:
print("Błąd: Brak odpowiedzi 'ports' w wyniku zapytania.")