From Fedora Project Wiki
Line 1: Line 1:
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
#REDIRECT [[Changes/FrameworkForServerRoleDeployment]]
= Framework for Server Role Deployment =
== Summary ==
A new D-Bus service, and associated command-line tools, to deploy and manage Server Roles.
== Owner ==
For change proposals to qualify as self-contained, owners of all affected packages need to be included here. Alternatively, a SIG can be listed as an owner if it owns all affected packages.
This should link to your home wiki page so we know who you are.
* Name: [ Fedora Server Working Group]
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
* Email: server AT lists DOT fedoraproject DOT org
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
* Product: Server
* Responsible WG: Server
== Current status ==
* Targeted release: [[Releases/21 | Fedora 21]]
* Last updated: April 1, 2014
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page
Bugzilla states meaning as usual:
NEW -> change proposal is submitted and announced
ASSIGNED -> accepted by FESCo with on going development
MODIFIED -> change is substantially done and testable
ON_QA -> change is code completed and could be tested in the Beta release (optionally by QA)
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
* Tracker bug: <will be assigned by the Wrangler>
== Detailed Description ==
A new D-Bus service will be made available, exposing available server roles, making it possible to deploy, configure and manage them.  Appropriate functionality will also be exposed as a command-line utility.
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
== Benefit to Fedora ==
A common framework will allow multiple tools to deploy and configure roles at various times, using the same mechanism for all of them, and without conflict. We expect this framework will be used by the installer and also by end-user tools including a command-line tool and probably higher-level tools like Cockpit.
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new functionality, what capabilities does it bring? Why will Fedora become a better distribution or project because of this proposal?-->
== Scope ==
<!-- What work do the developers have to accomplish to complete the change in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
* Proposal owners: Write, document, package and test the D-Bus API.
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
* Other developers: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
* Release engineering: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuid required?  If a rel-eng ticket exists, add a link here.  -->
* Policies and guidelines: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. -->
== Upgrade/compatibility impact ==
This is new functionality, so we envisage no impact on upgrades from previous releases.
The newly introduced user-facing API is intended to be long-term, available also in future releases of Fedora without breaking applications that use it as documented.  (Note that the same promise is not given for the API used to implement the server roles.)
== How To Test ==
The API should be relatively easily testable in a VM without special hardware or configuration. Test procedure would be more or less to do a basic/minimal install, install the relevant package, and then test that roles can be deployed and configured using the included command-line utility, or via direct D-Bus message injection (using dbus-send, dbus-monitor etc).
Indirect testing of the API will also likely become part of Server validation testing, as role deployment and configuration are likely to figure prominently in that testing, and will run through the API.
<!-- adamw thought: should we consider CI and regression testing in developing the API itself?
mitr: definitely, but that's not interesting to readers of the Change page -->
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.
Remember that you are writing this how to for interested testers to use to check out your change implementation - documenting what you do for testing is OK, but it's much better to document what *I* can do to test your change.
A good "how to test" should answer these four questions:
0. What special hardware / data / etc. is needed (if any)?
1. How do I prepare my system to test this change? What packages
need to be installed, config files edited, etc.?
2. What specific actions do I perform to check that the change is
working like it's supposed to?
3. What are the expected results of those actions?
== User Experience ==
A new command-line utility will be available to deploy and manage roles.
<!-- If this change proposal is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
== Dependencies ==
This Change does not really depend on anything else. In itself, though, it is more or less the foundation of the Server product: without this, it would be quite difficult to complete the rest of the Server product design as envisaged. The user-facing tools for Role management will depend on this package, and so will other tools which do Role management, likely including the installer.
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->
== Contingency Plan ==
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism: Do not ship the Server product with Fedora 21.  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Contingency deadline: Alpha  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks product? Server <!-- Applicable for Changes that blocks specific product release/ -->
== Documentation ==
The API itself will need to be documented for developers of tools depending on it. This cannot be done until it is designed.
Fedora end-user documentation for the Server product should mention the command-line role management utility, possibly only referring to it while discussing individual roles.
<!-- Is there upstream documentation on this change, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
== Release Notes ==
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this change, indicate them here.  A link to upstream documentation will often satisfy this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release.
Release Notes are not required for initial draft of the Change Proposal but has to be completed by the Change Freeze.
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- The Wrangler announces the Change to the devel-announce list and changes the category to Category:ChangeAnnounced (no action required) -->
<!-- After review, the Wrangler will move your page to Category:ChangeReadyForFesco... if it still needs more work it will move back to Category:ChangePageIncomplete-->
<!-- Select proper category, default is Self Contained Change -->
<!-- [[Category:SelfContainedChange]] -->

Latest revision as of 16:14, 3 April 2014