rebrand to bale

This commit is contained in:
Natan Keddem
2023-11-04 00:00:44 -04:00
parent 6307a072ea
commit 50406054ce
27 changed files with 66 additions and 64 deletions

View File

@@ -1,19 +1,21 @@
# snapper: ZFS Snapshot Browser Based GUI
# bale: ZFS Snapshot Browser Based GUI
## Demo
https://github.com/natankeddem/snapper/assets/44515217/dfd1257a-7465-4a92-94f2-29eb6aaaa85e
https://github.com/natankeddem/bale/assets/44515217/dfd1257a-7465-4a92-94f2-29eb6aaaa85e
## ⚠️ **_WARNING_**
**This utility is currently in early development and may undergo breaking changes in future updates. Your configuration may be lost, and snapshot functionality might be affected. Use with caution; data loss may occur.**
## Features
- **Remote Management**: Snapper handles all interactions over SSH, eliminating the need for local installation. You can manage your ZFS snapshots from anywhere.
- **Multi-Host Support**: Configure Snapper to manage multiple hosts within the same installation, making it a versatile choice for system administrators.
- **Remote Management**: bale handles all interactions over SSH, eliminating the need for local installation. You can manage your ZFS snapshots from anywhere.
- **Multi-Host Support**: Configure bale to manage multiple hosts within the same installation, making it a versatile choice for system administrators.
- **User-Friendly GUI**: Easily manage your ZFS snapshots with an intuitive web-based interface that simplifies the process.
- **Automation**: Snapper can automate generic remote and local applications as well as work seamlessly with zfs_autobackup, streamlining your backup and snapshot tasks.
- **Automation**: bale can automate generic remote and local applications as well as work seamlessly with zfs_autobackup, streamlining your backup and snapshot tasks.
- **Download**: Easily download files directly from your ZFS snapshots through the web interface.
## Installation
### Using Docker
@@ -44,6 +46,6 @@ https://github.com/natankeddem/snapper/assets/44515217/dfd1257a-7465-4a92-94f2-2
### Access GUI
Access snapper by navigating to `http://host:8080`.
Access bale by navigating to `http://host:8080`.
---

View File

@@ -2,11 +2,11 @@ from nicegui import app, ui
import re
from datetime import datetime
import asyncio
from snapper import elements as el
import snapper.logo as logo
from snapper.tabs.manage import Manage
from snapper.tabs.history import History
from snapper.tabs.automation import Automation
from bale import elements as el
import bale.logo as logo
from bale.tabs.manage import Manage
from bale.tabs.history import History
from bale.tabs.automation import Automation
import logging
logger = logging.getLogger(__name__)

View File

@@ -1,7 +1,7 @@
from nicegui import ui
from snapper import elements as el
from snapper.tabs import Tab
from snapper.interfaces import ssh
from bale import elements as el
from bale.tabs import Tab
from bale.interfaces import ssh
import logging
logger = logging.getLogger(__name__)

View File

@@ -5,7 +5,7 @@ from nicegui.tailwind_types.height import Height
from nicegui.tailwind_types.width import Width
from nicegui.elements.mixins.validation_element import ValidationElement
from nicegui.events import GenericEventArguments, handle_event
from snapper.interfaces import cli
from bale.interfaces import cli
import logging
logger = logging.getLogger(__name__)

View File

@@ -5,7 +5,7 @@ import contextlib
import shlex
from datetime import datetime
from nicegui import app, ui
from snapper.result import Result
from bale.result import Result
import logging
logger = logging.getLogger(__name__)

View File

@@ -2,8 +2,8 @@ from typing import Dict, Union
import os
import asyncio
from pathlib import Path
from snapper.result import Result
from snapper.interfaces.cli import Cli
from bale.result import Result
from bale.interfaces.cli import Cli
def get_hosts(path):

View File

@@ -6,8 +6,8 @@ import uuid
from nicegui import app, events, ui
from fastapi.responses import StreamingResponse
import asyncssh
from snapper import elements as el
from snapper.interfaces.zfs import Ssh
from bale import elements as el
from bale.interfaces.zfs import Ssh
def format_bytes(size: Union[int, float]) -> str:

View File

@@ -2,9 +2,9 @@ from typing import Any, Dict, Union
import re
from datetime import datetime
from dataclasses import dataclass
from snapper.result import Result
from snapper.interfaces import ssh
from snapper import elements as el
from bale.result import Result
from bale.interfaces import ssh
from bale import elements as el
import logging
logger = logging.getLogger(__name__)

View File

@@ -1,8 +1,8 @@
from nicegui import ui
from snapper import elements as el
from snapper.drawer import Drawer
from snapper.content import Content
from snapper.interfaces import cli
from bale import elements as el
from bale.drawer import Drawer
from bale.content import Content
from bale.interfaces import cli
import logging
logger = logging.getLogger(__name__)

View File

@@ -4,10 +4,10 @@ import asyncio
from datetime import datetime
import time
from nicegui import ui
from snapper.interfaces.zfs import Ssh
from snapper import elements as el
from snapper.result import Result
from snapper.interfaces import cli
from bale.interfaces.zfs import Ssh
from bale import elements as el
from bale.result import Result
from bale.interfaces import cli
@dataclass(kw_only=True)

View File

@@ -8,13 +8,13 @@ from apscheduler.triggers.cron import CronTrigger
from apscheduler.triggers.interval import IntervalTrigger
from . import Tab
from nicegui import ui, Tailwind, events
from snapper import elements as el
from snapper.result import Result
from snapper.interfaces import cli
from snapper.interfaces import ssh
from snapper.interfaces import zfs
from snapper.apps import zab
from snapper import scheduler
from bale import elements as el
from bale.result import Result
from bale.interfaces import cli
from bale.interfaces import ssh
from bale.interfaces import zfs
from bale.apps import zab
from bale import scheduler
from cron_validator import CronValidator
from cron_descriptor import get_description
import logging

View File

@@ -1,9 +1,9 @@
from datetime import datetime
from . import Tab
from nicegui import ui
from snapper import elements as el
from snapper.result import Result
from snapper.interfaces import zfs
from bale import elements as el
from bale.result import Result
from bale.interfaces import zfs
import logging
logger = logging.getLogger(__name__)

View File

@@ -2,10 +2,10 @@ import asyncio
from copy import deepcopy
from nicegui import ui
from . import Tab, Task
from snapper.result import Result
from snapper import elements as el
from snapper.interfaces import zfs
from snapper.interfaces import sshdl
from bale.result import Result
from bale import elements as el
from bale.interfaces import zfs
from bale.interfaces import sshdl
import logging
logger = logging.getLogger(__name__)

View File

@@ -1,8 +1,8 @@
version: "3.8"
services:
snapper:
image: ghcr.io/natankeddem/snapper:latest
bale:
image: ghcr.io/natankeddem/bale:latest
ports:
- 8080:8080
volumes:

View File

@@ -3,7 +3,7 @@ all:
proxmox_host:
ansible_host: ##PROXMOXHOST##
lxc_hostname:
ansible_host: snapper
ansible_host: bale
vars:
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
ansible_user: root
@@ -12,9 +12,9 @@ all:
proxmox_node: ##PROXMOXNODE##
template_storage: local
lxc_template: debian-12-standard_12.2-1_amd64.tar.zst
lxc_hostname: snapper
lxc_hostname: bale
lxc_id: 200
lxc_password: ##PASSWORD##
lxc_storage: local
lxc_network: vmbr0
app_name: snapper
app_name: bale

View File

@@ -8,11 +8,11 @@ if not os.path.exists("data"):
os.makedirs("data")
os.environ.setdefault("NICEGUI_STORAGE_PATH", "data")
from nicegui import ui
from snapper import page, logo, scheduler
from bale import page, logo, scheduler
if __name__ in {"__main__", "__mp_main__"}:
page.build()
s = scheduler.Scheduler()
ui.timer(0.1, s.start, once=True)
ui.run(title="Snapper", favicon=logo.favicon, dark=True, reload=False)
ui.run(title="bale", favicon=logo.favicon, dark=True, reload=False)

11
resources/bale.service Normal file
View File

@@ -0,0 +1,11 @@
[Unit]
Description=bale Application Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/root/bale
ExecStart=/root/bale/venv/bin/python /root/bale/main.py
[Install]
WantedBy=multi-user.target

View File

@@ -1,11 +0,0 @@
[Unit]
Description=Snapper Application Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/root/snapper
ExecStart=/root/snapper/venv/bin/python /root/snapper/main.py
[Install]
WantedBy=multi-user.target