Skip to content

Commit

Permalink
refactor(ongoing): overhaul vm management (#95)
Browse files Browse the repository at this point in the history
* refactor!: begin architectural overhaul by removing legacy components

- Comment out orchestrator and supervisor components pending reimplementation
- Rename monoagent to monopacks for upcoming changes
- Add architecture documentation outlining the new vision
- Remove old validation code (to be replaced)
- Begin CLI interface restructuring
- Update dependencies for new architecture
- Prepare groundwork for new VM implementation

This is the first step in a multi-phase refactor that will:
- Replace the orchestration layer with a more robust implementation
- Introduce a cleaner VM management approach
- Improve overall system architecture

BREAKING CHANGE: First phase of architectural overhaul - removing legacy orchestration code

* chore: Enhance project structure and configuration management

- Updated `.gitignore` to include new configuration files: `monocore.yaml` and `.menv`.
- Refactored `Cargo.toml` to remove `lazy_static` and adjust `procspawn` settings.
- Introduced integration test target in `Makefile` for better testing capabilities.
- Added integration test setup in `monocore/Cargo.toml` for CLI initialization.
- Removed outdated example files to streamline the project.
- Updated error handling in `monocore/lib/error.rs` to reflect new database operations.

This is still a work in progress and it has not reached feature-parity with old impl

* refactor: update CLI arguments and configuration structures

- Removed group volume and environment variables from CLI subcommands.
- Updated `Install` and `Pull` commands to use boolean flags for image and image group options.
- Introduced new `Auto` command for automatic environment creation.
- Enhanced `Meta` struct with additional fields for description, homepage, repository, readme, tags, and icon.
- Refactored `Sandbox` and `GroupConfig` structures to improve network and proxy configurations.
- Renamed `GroupNetworkReach` to `SandboxNetworkReach` for clarity and consistency.

These changes streamline the CLI interface and improve configuration management, setting the stage for future enhancements.

* chore: update dependencies and refine build process

- Upgraded `ipnetwork` dependency from version 0.20.0 to 0.21.0 in `Cargo.toml` and `Cargo.lock`.
- Added `regex` dependency in `Cargo.toml`.
- Enhanced `Makefile` to improve rpath settings for dynamic linking on macOS and Linux.
- Removed outdated integration test Makefile and streamlined test setup.
- Updated `README.md` to clarify development prerequisites and build instructions.

These changes improve dependency management and streamline the build process for better development experience.

* feat: add uninstall target to Makefile and update README for improved user guidance

- Introduced an `uninstall` target in the Makefile to facilitate the removal of installed binaries and libraries.
- Updated the README.md to include instructions for the new uninstall command and clarified the build and installation process.
- Refactored the integration test setup by renaming the test file for better organization.
- Removed outdated comments and code in the test file to streamline the testing process.

These changes enhance the usability of the project by providing clear uninstall instructions and improving the overall structure of the documentation and tests.

* docs: update README

* refactor: reorganize SQL table creation and update import order

- Updated the import order in `env.rs` for better readability and consistency.

* feat(monofs): add rename operation for filesystem entities

Add rename (move) functionality to the Dir struct, allowing files and directories
to be moved within the filesystem. The implementation includes:

- New `rename` method to move entities between paths
- Comprehensive test coverage for various rename scenarios
- Error handling for existing paths and invalid operations
- Preservation of file content and metadata during moves
- New `PathExists` error variant

This enhances the filesystem API by providing a crucial operation for file
management while maintaining data integrity during moves.

* refactor(monofs): reorganize filesystem modules and enhance metadata

- Move dir.rs and file.rs out of subdirectories to top level
- Add extended attributes support to Metadata with async get/set methods
- Introduce MetadataSerializable for better serialization control
- Remove resolvable.rs module as its functionality is now integrated
- Update SyncType enum to include MerkleCRDT instead of CRDT
- Remove clippy::module_inception allow attributes
- Add comprehensive documentation and tests for metadata operations

The metadata changes improve extensibility while the module reorganization
simplifies the codebase structure. Extended attributes now properly support
async operations and persistence.

* ci: temporarily disable GitHub Actions workflows

- Comment out release.yml workflow for package publishing
- Comment out tests_and_checks.yml workflow for testing and linting
- Preserve workflow configurations for future re-enablement

These workflows are temporarily disabled.

* docs: update project status warning

Replace detailed project description with warning about major refactoring.
API is currently unstable and subject to breaking changes.
  • Loading branch information
appcypher authored Jan 8, 2025
1 parent 107e551 commit ee87065
Show file tree
Hide file tree
Showing 107 changed files with 4,218 additions and 12,130 deletions.
132 changes: 66 additions & 66 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,75 +1,75 @@
name: 🚀 Release Packages & Binaries
# name: 🚀 Release Packages & Binaries

on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
run_publish_release:
description: 'Publish release'
type: boolean
required: true
default: false
# on:
# push:
# branches: [ main ]
# workflow_dispatch:
# inputs:
# run_publish_release:
# description: 'Publish release'
# type: boolean
# required: true
# default: false

permissions:
contents: write
pull-requests: write
# permissions:
# contents: write
# pull-requests: write

jobs:
release-please:
runs-on: ubuntu-latest
outputs:
releases_created: ${{ steps.release.outputs.releases_created }}
prs_created: ${{ steps.release.outputs.prs_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
- name: Setup release-please
uses: googleapis/release-please-action@v4
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
config-file: release-please-config.json
manifest-file: .release-please-manifest.json
# jobs:
# release-please:
# runs-on: ubuntu-latest
# outputs:
# releases_created: ${{ steps.release.outputs.releases_created }}
# prs_created: ${{ steps.release.outputs.prs_created }}
# tag_name: ${{ steps.release.outputs.tag_name }}
# steps:
# - name: Setup release-please
# uses: googleapis/release-please-action@v4
# id: release
# with:
# token: ${{ secrets.GITHUB_TOKEN }}
# config-file: release-please-config.json
# manifest-file: .release-please-manifest.json

- name: Check release status
run: |
echo "Release created: ${{ steps.release.outputs.releases_created }}"
echo "PRs created: ${{ steps.release.outputs.prs_created }}"
echo "monocore created: ${{ steps.release.outputs.monocore--releases_created }}"
echo "monofs created: ${{ steps.release.outputs.monofs--releases_created }}"
echo "monoutils-store created: ${{ steps.release.outputs.monoutils-store--releases_created }}"
# - name: Check release status
# run: |
# echo "Release created: ${{ steps.release.outputs.releases_created }}"
# echo "PRs created: ${{ steps.release.outputs.prs_created }}"
# echo "monocore created: ${{ steps.release.outputs.monocore--releases_created }}"
# echo "monofs created: ${{ steps.release.outputs.monofs--releases_created }}"
# echo "monoutils-store created: ${{ steps.release.outputs.monoutils-store--releases_created }}"

publish-release:
needs:
- release-please
if: ${{ needs.release-please.outputs.releases_created == 'true' || github.event.inputs.run_publish_release }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
# publish-release:
# needs:
# - release-please
# if: ${{ needs.release-please.outputs.releases_created == 'true' || github.event.inputs.run_publish_release }}
# runs-on: ubuntu-latest
# steps:
# - name: Checkout code
# uses: actions/checkout@v4

- name: Publish monoutils-store
working-directory: monoutils-store
env:
CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
run: |
cargo publish -p monoutils-store
# - name: Publish monoutils-store
# working-directory: monoutils-store
# env:
# CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
# run: |
# cargo publish -p monoutils-store

- name: Wait for crates.io index update
run: |
echo "Waiting for crates.io to update index..."
sleep 30
# - name: Wait for crates.io index update
# run: |
# echo "Waiting for crates.io to update index..."
# sleep 30

- name: Publish monofs
working-directory: monofs
env:
CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
run: |
cargo publish -p monofs
# - name: Publish monofs
# working-directory: monofs
# env:
# CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
# run: |
# cargo publish -p monofs

- name: Publish monocore
working-directory: monocore
env:
CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
run: |
cargo publish -p monocore
# - name: Publish monocore
# working-directory: monocore
# env:
# CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
# run: |
# cargo publish -p monocore
Loading

0 comments on commit ee87065

Please sign in to comment.