commits
feat: add inspect command to view Firecracker MicroVM details and upd…
feat: update kernel handling in microvm and downloader services
feat: add SSH key change detection and image regeneration for rootfs preparations
feat: add SSH key management for Firecracker MicroVMs
feat: add 'rm' command for deleting Firecracker MicroVMs
feat: add HTTP API for MicroVM management
- Created `fire-client` crate with dependencies on `anyhow` and `reqwest`.
- Created `fire-server` crate with dependencies on `actix-web`, `utoipa`, and others for API documentation and handling.
- Implemented MicroVM API endpoints in `fire-server` for creating, deleting, retrieving, listing, starting, and stopping MicroVMs.
- Added SSH keys support in `fire-config` for MicroVM configuration.
- Integrated `fire-server` into the main application with a new `serve` command.
- Updated `firecracker-up` to include `fire-client` and `fire-server` dependencies and added command-line options for SSH keys.
feat: add vmlinuz extraction functionality and update prepare function to accept kernel file
fix: update virtual machine status formatting and add updated timestamp in database
feat: add overlay initialization script for boot process
- Introduced configuration for Fedora, Gentoo, Slackware, OpenSUSE, OpenSUSE Tumbleweed, AlmaLinux, RockyLinux, and ArchLinux.
- Updated downloader functions to fetch root filesystem images for the new distributions.
- Modified the RootfsPreparer trait and its implementations to handle the new distributions.
- Enhanced the CLI to include options for the new distributions.
- Adjusted the VM setup process to accommodate the new root filesystem formats (squashfs).
- Added a new resolved.conf configuration file for systemd-resolved settings.
fix: enhance kernel path handling in setup function
fix: update MQTT subscription QoS and enhance IP pinging logic
fix: add credential validation for sudo and improve Firecracker startup timeout handling
persist microvm informations into database
- Added `ip_address`, `vmlinux`, `rootfs`, and `bootargs` columns to the `virtual_machines` table.
- Implemented migration scripts for adding new columns and ensuring unique constraints on `mac_address`, `pid`, and `tap`.
- Updated the `VirtualMachine` struct to include new fields.
- Modified repository functions to handle new fields in create, update, and find operations.
- Enhanced the `ps` command to display the new IP address field.
- Introduced new commands for starting, stopping, and restarting virtual machines.
- Updated the `up` command to handle existing VMs and their configurations.
- Implemented a mechanism to wait for the VM to obtain an IP address and store it in the database.
- Refactored network setup to create new tap devices if they do not exist.
- Added utility functions for formatting time durations for better user feedback.
- Introduced Mosquitto setup functionality with installation checks.
- Added MQTT message handling for dynamic IP assignment in CoreDNS.
- Refactored NextDHCP configuration to include MQTT integration.
- Updated dependencies in Cargo.toml for rumqttc and tokio.
- Created `fire-client` crate with dependencies on `anyhow` and `reqwest`.
- Created `fire-server` crate with dependencies on `actix-web`, `utoipa`, and others for API documentation and handling.
- Implemented MicroVM API endpoints in `fire-server` for creating, deleting, retrieving, listing, starting, and stopping MicroVMs.
- Added SSH keys support in `fire-config` for MicroVM configuration.
- Integrated `fire-server` into the main application with a new `serve` command.
- Updated `firecracker-up` to include `fire-client` and `fire-server` dependencies and added command-line options for SSH keys.
- Introduced configuration for Fedora, Gentoo, Slackware, OpenSUSE, OpenSUSE Tumbleweed, AlmaLinux, RockyLinux, and ArchLinux.
- Updated downloader functions to fetch root filesystem images for the new distributions.
- Modified the RootfsPreparer trait and its implementations to handle the new distributions.
- Enhanced the CLI to include options for the new distributions.
- Adjusted the VM setup process to accommodate the new root filesystem formats (squashfs).
- Added a new resolved.conf configuration file for systemd-resolved settings.
- Added `ip_address`, `vmlinux`, `rootfs`, and `bootargs` columns to the `virtual_machines` table.
- Implemented migration scripts for adding new columns and ensuring unique constraints on `mac_address`, `pid`, and `tap`.
- Updated the `VirtualMachine` struct to include new fields.
- Modified repository functions to handle new fields in create, update, and find operations.
- Enhanced the `ps` command to display the new IP address field.
- Introduced new commands for starting, stopping, and restarting virtual machines.
- Updated the `up` command to handle existing VMs and their configurations.
- Implemented a mechanism to wait for the VM to obtain an IP address and store it in the database.
- Refactored network setup to create new tap devices if they do not exist.
- Added utility functions for formatting time durations for better user feedback.