Code Monkey home page Code Monkey logo

apm's Issues

Support Upgrading Configs

APM should support a subnet adding new upgrade bytes (it can do this multiple times)

  • The upgrade bytes should be tracked and downloaded when the subnet is imported

Move file management code from CLI to APM

There are several functions in the CLI's apmintegration package that belong in the APM itself. Mostly on reading the installed repos and listing what's available. This ticket should move that functionality into the APM. I separate ticket can change how the CLI integrates the APM.

Support SubnetConfigs per-network

We should add a field to support network-level subnetConfigs. The most simple way would probably be to add a map type like so:

subnet-config:
   mainnet: <config>
   testnet: <config>
   ...

Move away from LevelDB

LevelDB isn't a great storage abstraction for this. Would be better to just serialize state in a json/yaml file

We'll need to:

  1. Replace database with a statefile
  2. Replace the definition registry with file-system lookups

TUI interface

It'd be cool to have some kind of TUI interface for people who aren't as CLI savvy. The bubbletea framework looks promising.

Add Metadata commands

Add support for commands to:

  1. Search for a vm/subnet by keyword apm search "key-value"
  2. Lookup info of a vm/subnet by its alias apm info foobarvm

Remove vms/subnet headers in avalanche-plugins-core

Currently we have weird headers in plugin definitions, for example:

vm:
   { actual vm here }

These are unnecessary and were only originally added in when I was confused on how to use the yaml library. We should gut these before avalanche-cli's integration w/ apm is released.

Add support for multiple SubnetIDs for Subnets which exist in multiple networks

Some networks might have multiple corresponding subnetIds. For example, I might have a network foo that I want to be able to install + join. It might have subnetID 1234 for testnet, but 5678 for mainnet, but both use the same foovm. We might want subnet definitions to look something like this:

alias: foo
networks: 
 testnet:
  subnetID: 1234
 mainnet:
  subnetID: 5678
vms:
 - foovm
...

... and users could join a subnet like so:

apm join-subnet --subnet-alias=foo --network=mainnet

This will only be needed once dynamic-whitelisting is enabled, at which point we can start using those APIs to correctly whitelist the right subnet id.

Support Upgrading VMs

APM should be able to support a subnet changing VMs during an upgrade

  • It should support listing multiple VMs with the same name but with different versions
  • It should also track historical VM versions (i.e. don't delete vm configs on update)

Create a proof-of-concept package signing flow using subnet admin keys

After our discussion with the security team, we'd like to try signing and verifying packages using subnet admin keys. These will use p-chain addresses for signatures and can come from soft keys or from ledgers.

We need to check that each subnet release is signed appropriately. We should also verify that the subnet id does not change across updates.

If this does not work, we can switch to GPG signing with Yubikeys.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.