import docker import datetime def generate_report(): try: client = docker.from_env() except Exception as e: print(f"āŒ CRITICAL: Cannot connect to Docker. Is the socket mounted?\n{e}") return print("="*40) print(f"šŸ›”ļø ANTIGRAVITY INFRASTRUCTURE REPORT") print(f"šŸ“… Date: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") print("="*40) # 1. Check Watchtower print("\nšŸ” CHECKING WATCHTOWER:") try: wt = client.containers.get('watchtower') status_icon = "🟢" if wt.status == 'running' else "šŸ”“" print(f"{status_icon} Status: {wt.status.upper()}") print(f"ā±ļø Uptime: {wt.attrs['State']['StartedAt']}") except docker.errors.NotFound: print("šŸ”“ Watchtower container NOT FOUND on this server!") except Exception as e: print(f"āš ļø Error checking Watchtower: {e}") # 2. List All Tools print("\nšŸ› ļø ACTIVE TOOLSET STATUS:") print(f"{'CONTAINER NAME':<25} {'STATUS':<15} {'IMAGE TAG'}") print("-" * 60) for container in client.containers.list(): # Get image tag safely tags = container.image.tags tag_name = tags[0] if tags else "unknown" # Shorten tag for display if "/" in tag_name: tag_name = tag_name.split("/")[-1] print(f"{container.name:<25} {container.status:<15} {tag_name}") print("\n" + "="*40) print("āœ… Audit Complete.") if __name__ == "__main__": generate_report()