Normally, when you edit a profile that is already deployed in a container, the modification takes effect immediately. This is so because the Fabric Agent in the affected container (or containers) actively monitors the fabric registry in real time.
In practice, however, immediate propagation of profile modifications is often undesirable. In a production system, you typically want to roll out changes incrementally: for example, initially trying out the change on just one container to check for problems, before you make changes globally to all containers. Moreover, sometimes several edits must be made together to reconfigure an application in a consistent way.
For quality assurance and consistency, it is typically best to modify profiles atomically, where several modifications are applied simultaneously. To support atomic updates, fabric implements profile versioning. Initially, the container points at version 1.0 of a profile. When you create a new profile version (for example, version 1.1), the changes are invisible to the container until you upgrade it. After you are finished editing the new profile, you can apply all of the modifications simultaneously by upgrading the container to use the new version 1.1 of the profile.
For example, to modify the gs-cxf-01 profile, when it is deployed
and running in a container, follow the recommended procedure:
Create a new version, 1.1, to hold the pending changes by entering this console command:
karaf@root> fabric:version-create Created version: 1.1 as copy of: 1.0
The new version is initialised with a copy of all of the profiles from version 1.0.
Use the
fabric:profile-editcommand to change theportNumberofgs-cxf-01to the value 8187 by entering this console command:karaf@root> fabric:profile-edit -p org.fusesource.example.get.started/portNumber=8187 gs-cxf-01 1.1
Remember to specify version
1.1to thefabric:profile-editcommand, so that the modifications are applied to version 1.1 of thegs-cxf-01profile.Upgrade the
child1container to version 1.1 by entering this console command:karaf@root> fabric:container-upgrade 1.1 child1







