All, We've over the years create a VR that largely is stable but we've discussed the pain of maintaining, extending, and upgrading VRs both in lists and in user-groups and CCC conferences.
On a high-level the pain points are: * It's difficult to debug, investigate VR for operators and support team * Maintaining the VR code, fixing bugs, implementing features is a pain for developers; further the xml&json databags based programming model is confusing * Any fix or changes requires a new systemvmtemplate or VR codebase whose patching requires restarting the VR or destroying an old VR * No uniform VR programming API (current approach is SSH+databags and execute a script), this makes testing VR difficult and QA in isolation is not possible * Users forget to register the right systemvmtemplate for a new ACS version and upgrades fail * Others (please share yours)? Among these pain points my colleagues have proposed a PR targeting 4.16 [1] that aims to unify systemvmtemplate as a building block that is bundled as part of ACS rpm/deb/* packages which CloudStack will automatically seed/register/use with which upgrades will be as simple as a yum update or apt-get upgrade. Further, my colleagues and I are exploring a live patch API which in near future that can patch a running systemvm/VR using systemvm.iso (or deprecate systemvm.iso and use ssh/scp to patch?) without requiring to reboot/recreate it. Hopefully, this addresses some of those pain points. We request the community for your feedback and review/participation in the PR. Open questions, topics to discuss and gather feedback: * VR programming: Should we explore a new light-weight VR agent that provides an API (restful/grpc, or CLI?), some mechanism of live patching VR code, packages, and kernel? * Refactoring isolated network and VPC codebases into a unified codebase and feature sets (assumption that isolated network are largely a VPC with single tier), does it benefit the community, users, and developers? * Underlying OS: * should we consider something other than Debian, any suggestions? * or explore stable/widely used and maintained opensource router distributions such as OpenWRT [2] which ships with a UI and CLI/configuration system UCI [3]? The cons of the approach are a new dependency and some likely missing packages. * In current VR codebase, most of the effort is spent in implementing/maintaining router packages/configure codebase which we can get rid of by depending on a stable Linux router distro which ships with some API/config system. Not choosing an existing router distribution means we continue to DIY router programming+config management codebase. * Any other ideas? Thoughts, feedback? [1] https://github.com/apache/cloudstack/pull/4329 [2] https://github.com/openwrt/openwrt/graphs/contributors [3] https://openwrt.org/docs/guide-user/base-system/uci Regards.