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