PDA

View Full Version : Any progress on the CNC API?


DogAndPony
06-13-2010, 12:59 AM
Back in December, Terra wrote (http://www.aota.net/forums/showthread.php?postid=176913#post176913)
The new CNC will help pave the way for some new things and was one of the first preliminary steps to designing a CNC API... Still a long ways to go for that as it needs to be converted from a monolithic (yet modular) architecture to a full modular design where the CNC only handles the presentation layer with all work being passed out to a centralized and plugable operational arbitrator core...While I have no idea what it takes to get to the fully-modular stage, I'm starting to feel some pressure.

I've been redesigning my website, including the creation of a new client portal. I've taken my time over the last few months, as I figured the API wasn't going to be ready.

I've almost finished integrating APIs for billing (Harvest), Projects (Harvest and Basecamp) and e-mail subscriptions (MailChimp).

But I still have no API to allow clients to view and manage their hosting accounts.

So I'm at a decision point, and these are my options:

1) Launch the client portal with no hosting account management.
2) Roll my own crude API that parses the CNC HTML pages.
3) Keep waiting for the official API (not really much of an option).
4) Move all of my sites to another host.

#2 would be accomplished with the generous help of Matt, who offered his code when we talked about an API back in July of 2009 (http://www.aota.net/forums/showthread.php?postid=175161#post175161).

Because there's been no more news of a CNC API, and because-- IMO -- FQ isn't expanding capacities at a competitive pace, it looks like I may have to opt for #4.

I love FutureQuest dearly, and I've been here for about 8.5 years. You guys are so conscientious, and communicative and honest and hard-working. And you're just the coolest people.

But if capacities don't start accelerating a bit, and more importantly, if there's no API, I may have to start moving.

For now, let's talk API. I can't wait until December-- if that's even on your calendar for a release.

Terra, Kevin, et. al.... I'm beggin ya. Please say you're really, really close to releasing an API.

Terra
06-14-2010, 04:04 PM
At this stage, I can't discuss the API publicly... To say the least, this is a very ambitious project that is going to take a lot of time, effort, and testing as the CNC will need a total rewrite...

As far as capacities, we have been looking at this, but sadly our package limits have to be set for the lowest common denominator and be compatible with both old and new servers... Our Genesis Class servers is a major leap forward with larger disk capacities, but that doesn't solve the Phoenix and Enigma Class issues... I'm batting around a few ideas on how to solve this and be fair to everyone without deeply overselling what the servers are capable of while keeping the performance advantage of keeping the persistence local to the server instead of pushing it to the network layer...

I would encourage you to email us privately at the Service Desk for further discussion on the API as I'd like to know more about what you are trying to accomplish...

Matt
06-14-2010, 04:15 PM
Bob, I feel for you man :ytout:

I've found a lot of satisfaction with cPanel and believe it's really the only compelling API-backed offering at this stage and maturing very rapidly.

To be fair to FQ, a feature-rich control panel with true API interface can require a significant amount of resources. This is why I have requested a stripped down CNC for some time and is probably the only cost-effective way for FQ to accomplish something satisfactory for resellers. I would have much preferred to have seen this over the user oriented CNC face-lift, but resellers are in the minority here. Nothing personal :dunno:

-Matt

Terra
06-14-2010, 05:04 PM
Matt, right now the API is embedded in the CNC, for each respective module... To be honest, there is no current API, just a series of subroutines that are much too intertwined into the flow of how the presentation layer is pushed out...

Work is already in progress on how to separate this out, and split everything up into multiple layers that will facilitate a new rewritten CNC, and for those that want API access that is language agnostic (well: perl, PHP, python, bash)... The new CNC is going to be a regular API user, in the same way a reseller might want to write their own interface... I have even pondered releasing the CNC frontend code base as Open Source...

This is why I have requested a stripped down CNC
I have been at a crossroads with this for some time, as the new CNC won't be using much (if any) of the existing code base... I have toyed around with offering:
1) XML or JSON output (we are leaning towards JSON only)
2) RESTful command control (we are still debating and designing the structure)

My issue is if the existing CNC code base is going into the garbage can, then should we invest our limited manpower in the new code base, or spend countless hours retrofitting our existing code base... I have come to the disheartened conclusion that our current resources cannot do both, no matter how badly I'd like to have both... There are just not enough hours in the day to do both, while still handling the EMS tickets we get daily that lead to distraction...

New things are coming, and Genesis Class is leading the way, however what is being asked of us now easily takes many months of focused time, just to get the design right... Then you have implementation and testing stacked on top of that... Also, to note, that the web is going through another rapid evolution with frameworks and techniques that it is like trying to keep hold of a greased pig... Very frustrating to say the least...

In conclusion, we are in a very strong building phase again, unfortunately none of it is visible top side and there is no ETA at the moment... An example of this would be that I just finished a WebDAV project (Genesis Class only) for one of our MQS clients, and I'm trying to find a way to offer this on the Community Servers... A couple more projects was the HTTP ==> HTTPS custom redirection options, as well as a decoupling of the CNC logins from the primary shell login, and a brief mention of PHP + SQLite3 is in order too... A new CNC module (Apache IP block management) has been written, that still needs polishing, but is currently functional... Once I'm done retrofitting to Phoenix and Enigma class, it will be announced... All of this required custom Apache code development to pull off and has pulled me away from CNC development... It works for them with production status, now I just need to find a way to capitalize on all that work and bring it to all Genesis Class level clients...

The wheels are definitely turning, but we have been slammed with custom client requests (I won't name names, but you know who you are) that I saw benefit in potentially bringing to everyone - otherwise I would not have tackled the requests and invested the countless man hours in producing...