69 lines
2.8 KiB
Python
69 lines
2.8 KiB
Python
import sys
|
|
from PyQt6.QtWidgets import (QApplication, QListWidgetItem)
|
|
from PyQt6.QtCore import Qt
|
|
from portainer_api import PortainerService
|
|
from gui.portainer_ui import PortainerUi
|
|
from config.settings import PortainerConfig
|
|
|
|
from gui.workers.load_stacks_worker import LoadStacksWorker
|
|
from gui.workers.load_endpoints_worker import LoadEndpointsWorker
|
|
|
|
from utils.date_converter import datetime_from_timestamp
|
|
from utils.endpoint_converter import endpoint_id_to_name_converter
|
|
|
|
|
|
class Natalie(PortainerUi):
|
|
def __init__(self, portainer_url, portainer_token):
|
|
super().__init__()
|
|
self.endpoints_list = None
|
|
self.main_window.resize(800, 600)
|
|
self.portainer = PortainerService(portainer_url, portainer_token)
|
|
self.endpoints_worker = LoadEndpointsWorker(self.portainer)
|
|
self.endpoints_worker.endpoints_retrieved.connect(self.load_endpoints)
|
|
self.endpoints_worker.error_occurred.connect(self.error_occurred)
|
|
self.endpoints_worker.start()
|
|
self.stacks_worker = LoadStacksWorker(self.portainer)
|
|
self.stacks_worker.stacks_retrieved.connect(self.load_stacks)
|
|
self.stacks_worker.error_occurred.connect(self.error_occurred)
|
|
self.stacks_worker.start()
|
|
self.stacks_list.itemClicked.connect(self.load_stack)
|
|
|
|
def load_endpoints(self, endpoints):
|
|
self.endpoints_list = endpoints
|
|
print(self.endpoints_list)
|
|
self.combo_box.clear()
|
|
self.combo_box.addItem("All")
|
|
for endpoint in endpoints:
|
|
self.combo_box.addItem(endpoint['name'])
|
|
|
|
def load_stacks(self, stacks):
|
|
current_group = self.combo_box.currentText()
|
|
self.stacks_list.clear()
|
|
for stack in stacks:
|
|
item = QListWidgetItem(stack['name'])
|
|
item.setData(Qt.ItemDataRole.UserRole, stack)
|
|
self.stacks_list.addItem(item)
|
|
|
|
def load_stack(self, item):
|
|
data = item.data(Qt.ItemDataRole.UserRole)
|
|
print(data)
|
|
self.stack_name_label.setText(data['name'])
|
|
self.endpoint_label.setText(endpoint_id_to_name_converter(self.endpoints_list, data['endpoint_id']))
|
|
self.created_by_label.setText(data['created_by'])
|
|
self.creation_date_label.setText(datetime_from_timestamp(data['creation_date']))
|
|
self.updated_by_label.setText(data['updated_by'])
|
|
self.update_date_label.setText(datetime_from_timestamp(data['update_date']))
|
|
|
|
def error_occurred(self, error_message):
|
|
print(f"Error occurred: {error_message}")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
portainer_config = PortainerConfig()
|
|
instances = portainer_config.get_portainer_instances()
|
|
base_url, token = portainer_config.get_portainer_info(instances[0])
|
|
app = QApplication(sys.argv)
|
|
win = Natalie(base_url, token)
|
|
win.show()
|
|
sys.exit(app.exec())
|