The work on DNS provisionning showed the need to abstract out the "server" types better. Right now, a new "dns server" node type is being created in the patch, and the patch needs to modify the platform table structure to map dns servers to platforms.
To quote issue #269931: nameserver provisioning:
2. the modifications to the hook_block() in should probably be factored out using a cleaner API. Same with the hosting_platform_form() hook, which should probably be form_alter()'d instead. hook_update() and hook_insert(), hook_view() are clearly a pain here, but should be overridden too, I don't know how.
3. hosting_node_help() has a similar issue. The content type should probably be defined by the module itself and not hosting.module. Similarly, web_server, platform and db_server could also define their own hook_help()
4. the modification to the hosting_platform table is trickier. I don't exactly know how to handle this with Drupal "modularly": can we just define a hook_update_N() that modifies the table of another module and leave it at that?
Basically, we need the following:
1. a hosting_platform_server table that maps servers to platforms
2. a hosting_server table that contains the various web, db, dns, etc servers, which are seperated by a "type" column
3. a generic hosting_server content type which can be extended
4. hooks in hosting_platform to allow grafting extra server types in a platform (maybe form_alter() is enough here?)
This should probably be undertaken after 0.1 is released for sanity reasons.
Comments
Comment #1
anarcat CreditAttribution: anarcat commentedLet's do this for 0.2.
Comment #2
anarcat CreditAttribution: anarcat commentedAfter discussion, this is more part of the 0.3 milestone, 'multiple server' feature:
Comment #3
anarcat CreditAttribution: anarcat commentedThinking about links between server nodes:
Comment #4
adrian CreditAttribution: adrian commentedI wrote some code for the denormalization of the package and package release node types (http://drupal.org/node/416550) that could form the basis for this work.
Comment #5
anarcat CreditAttribution: anarcat commentedTagging for 0.3.
Comment #6
anarcat CreditAttribution: anarcat commentedComment #7
adrian CreditAttribution: adrian commentedComment #8
anarcat CreditAttribution: anarcat commentedThis all looks like frontend stuff. The backend stuff is more in #586000: make a "server verify" task.
Comment #9
adrian CreditAttribution: adrian commenteda lot of this stuff is in the dev-server_node_type branch on git.aegirproject.org
what's left there is to fix / reimplement the command line creation. Because the existing modules (web_server etc) aren't exactly mapping to how the information is passed to the dispatch command anymore, that needs to be refactored a bit.
secondly, we need to refactor the install wizard to take into account the fact that there are different forms and smaller node types now.
Once that is done, and the front end and back in are communicating properly, i will want to merge back in with master and start work on #586000: make a "server verify" task
Comment #10
adrian CreditAttribution: adrian commentedi rebased, and solved those last two issues.
this has broken installs with external database servers though, and we need to refine it some more in the case of multiple servers being used.
Comment #11
adrian CreditAttribution: adrian commentedmerged this with the master branch.
additional issues should be new tickets. This likely breaks a whole bunch of stuff =)
the ui still needs some work.