GNS3 / dynamips

Dynamips development
GNU General Public License v2.0
349 stars 94 forks source link

replace hypervisor with JSON-RPC? #28

Closed flaviojs closed 10 years ago

flaviojs commented 10 years ago

The idea popped up in my mind a while ago.

The hypervisor syntax is very limited (ex: we have to send complex text as Base64). It's also difficult to extend functionality.

Replacing the hypervisor with JSON-RPC would allow for lots of flexibility. JSON can represent any data, so it would be easy to extend functionality (arbitrary arguments and return value).

Advantages:

Disadvantages:

(...)

grossmj commented 10 years ago

I like the idea :+1:

replacing the hypervisor would break compatibility with older versions (just bump up the major version?)

This is not a problem for me but I would like it ready, if possible, before the first version of the new GNS3 comes out in late February 2014. Of course start the work in a separate branch and merge when everything is concrete :)

Yep the new GNS3 + new Dynamips will break compatibility but this is necessary for extendibility purposes.

JSON-RPC notifications will be useful too. Also, having a standard error reporting with explicit error messages will be very useful ;)

Let me know how much work you can put into it.

Thanks.

flaviojs commented 10 years ago

Not sure how long it would take. Implementing it should be very fast, the problem is drafting the API for it...

So far I've only used dynamips+GNS3 to simulate simple LAN switches and routers. To draft a proper API I'll need to be familiar with the rest of the features too.

Therefore I'm NOT aiming for the February 2014 release. Suggestions on what functions the API should have are very welcome. :smile:

grossmj commented 10 years ago

Ok, I have been thinking a lot about it and we shouldn't mess everything to implement a JSON-RPC API. I mean Dynamips is slowly becoming old because of the platform it can emulates. Especially with vIOS images and other Cisco virtual appliances coming out. So I would prefer we focus on fixing the few bugs (esp. memory leaks) and integrating some improvements but not starting heavy work, the program is closer to EOL than the opposite, even if it will always be useful to some users.

Also, it's not like many other programs use Dynamips and we absolutely need an API. GNS3 is pretty much the only software (with Dynagen) that uses Dynamips hypervisors. Finally, I've just finished rewriting the Dynamips backend for GNS3 and I do not want to redo some work later on.

However, I do not want you to feel this isn't a great idea. All idea are welcome, time is THE problem ;-)

Thanks!