created utils py
This commit is contained in:
106
mission_utils.py
Normal file
106
mission_utils.py
Normal file
@@ -0,0 +1,106 @@
|
||||
import time
|
||||
import sqlite3
|
||||
import requests
|
||||
from instances.db import DB_PATH
|
||||
|
||||
def delayed_post_mission(mission_id):
|
||||
print("Starting delayed_post_mission function")
|
||||
time.sleep(5) # Delay for 5 seconds
|
||||
post_mission(mission_id)
|
||||
|
||||
def post_mission(mission_id):
|
||||
print("Starting post_mission function")
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT ip, authorization, username, password FROM mir_server_missions LIMIT 1")
|
||||
row = c.fetchone()
|
||||
conn.close()
|
||||
|
||||
if row:
|
||||
ip, authorization, username, password = row
|
||||
print(f"Retrieved MIR server details: IP={ip}, Authorization={authorization}")
|
||||
f_host = f"http://{ip}/api/v2.0.0/"
|
||||
headers = {
|
||||
"accept": "application/json",
|
||||
"Authorization": authorization,
|
||||
"Accept-Language": "en_US",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
print(f"Sending POST request to {f_host}mission_scheduler with mission_id={mission_id}")
|
||||
response = requests.post(f"{f_host}mission_scheduler", headers=headers, json=mission_id)
|
||||
print(f"Received response with status code {response.status_code}")
|
||||
if response.status_code in {200, 201}:
|
||||
print("Mission sent successfully")
|
||||
response_data = response.json()
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
c = conn.cursor()
|
||||
c.execute("INSERT INTO requested_missions (state, start_time, mission, mission_name, robot_id, id) VALUES (?, ?, ?, ?, ?, ?)",
|
||||
(response_data['state'], response_data['start_time'], response_data['mission'], response_data['mission_name'], response_data['robot_id'], response_data['id']))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
else:
|
||||
print(f"Failed to send mission, status code: {response.status_code}, response: {response.text}")
|
||||
else:
|
||||
print("No MIR server details found in the database")
|
||||
|
||||
def get_robots():
|
||||
fleetip = "10.76.153.4"
|
||||
f_host = f"http://{fleetip}/api/v2.0.0/"
|
||||
headers = {
|
||||
"accept": "application/json",
|
||||
"Authorization": "Basic ZGlzdHJpYnV0b3I6Y2RjYjhiNjAzYzFhZDNjNjVkZTM4ZGY2OWU5YjFkM2ZhMDA2OWEwMDcyMzZkMDNkOGVhNjMyNDVhMDg3YjJkZA==",
|
||||
"Accept-Language": "en_US",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
# Get robots URL for next posts
|
||||
response = requests.get(f_host + "robots", headers=headers)
|
||||
print(f"Response status code: {response.status_code}")
|
||||
print(f"Response content: {response.text}")
|
||||
|
||||
if response.status_code == 200:
|
||||
try:
|
||||
robots = response.json()
|
||||
print(robots)
|
||||
except requests.exceptions.JSONDecodeError as e:
|
||||
print(f"Error decoding JSON: {e}")
|
||||
return
|
||||
except ValueError as e:
|
||||
print(f"Error decoding JSON: {e}")
|
||||
return
|
||||
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
c = conn.cursor()
|
||||
for robot in robots:
|
||||
ip = robot['ip']
|
||||
url = robot['url']
|
||||
c.execute('''INSERT OR REPLACE INTO robots (ip, url) VALUES (?, ?)''', (ip, url))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
else:
|
||||
print(f"Failed to get robots. Status code: {response.status_code}, Response: {response.text}")
|
||||
|
||||
def get_status(robotid):
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT ip, url FROM robots WHERE ip = ?", (robotid,))
|
||||
row = c.fetchone()
|
||||
conn.close()
|
||||
|
||||
if row:
|
||||
ip, url = row
|
||||
host = f"http://{ip}/api"
|
||||
headers = {
|
||||
"accept": "application/json",
|
||||
"Authorization": "Basic ZGlzdHJpYnV0b3I6Y2RjYjhiNjAzYzFhZDNjNjVkZTM4ZGY2OWU5YjFkM2ZhMDA2OWEwMDcyMzZkMDNkOGVhNjMyNDVhMDg3YjJkZA==",
|
||||
"Accept-Language": "en_US",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
get_robot_id = requests.get(host + url, headers=headers)
|
||||
status = get_robot_id.json()
|
||||
mission_text = status['status']['mission_text']
|
||||
return mission_text
|
||||
else:
|
||||
print("No robot details found in the database")
|
||||
return None
|
||||
Reference in New Issue
Block a user