You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Guillaume Nodet <gn...@apache.org> on 2015/04/29 16:43:27 UTC
Re: My plan to build and patch an offline Karaf instance. Does it
look correct and complete?
Yes, this looks good to me.
How do you plan to actually use OBR / Cave to distribute patches ?
2015-04-29 15:54 GMT+02:00 Paul Spencer <pa...@apache.org>:
> Below is my plan to build and patch several instances of Karaf that are
> installed in an offline environment. Each instance will be composed of
> standard features/bundles, like CXF and MyFaces, and features/bundles
> developed by my company. I am looking for feedback on this plan.
>
> ***
> * Plan
> ***
>
> 1) A custom Karaf distribution containing all bundles needed by the
> instance will be build. This is done by including a feature.xml describing
> all needed features and bundles. Additionally the distribution include OBR
> and Cave-Server features to support future patching. Each instance will
> start only the features and bundles needed by that instance, so only a few
> of the instance will start the cave-server.
>
> ** Example of dependency configuration in pom.xml describing standard and
> company developed features and bundles to be include in the build:
> <dependency>
> <groupId>${project.groupId}</groupId>
> <artifactId>custom-app-feature</artifactId>
> <version>1.0</version>
> <classifier>features</classifier>
> <type>xml</type>
> <scope>runtime</scope>
> </dependency>
>
> ** Example of karaf-maven-plugin configuration in pom.xml describing
> standard and company developed features and bundles to be include in the
> build:
> <bootFeatures>
> <feature>config</feature>
> <feature>standard</feature>
> <feature>region</feature>
> <feature>package</feature>
> <feature>kar</feature>
> <feature>ssh</feature>
> <feature>management</feature>
> <feature>obr</feature>
> </bootFeatures>
> <installedFeatures>
> <feature>obr-server</feature>
> <feature>myapp-server-a</feature>
> <feature>myapp-server-b</feature>
> <feature>myapp-webclient</feature>
> </installedFeatures>
>
> ** Example of feature.xml describing standard and company developed
> features and bundles to be include in the build:
> <?xml version="1.0" encoding="UTF-8"?>
> <features>
> <feature name="obr-server" version="${project.version}">
> <feature name="cave-server" version="3.0"/>
> </feature>
> <feature name="quartz" version="2.2.0">
> <bundle
> start="true">mvn:org.quartz-scheduler/quartz/2.2.0</bundle>
> <bundle
> start="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.c3p0/0.9.1.2_1</bundle>
> </feature>
> <feature name="myapp-web-common" version="${project.version}">
> <feature>jndi</feature>
> <feature>pax-web</feature>
> <bundle>mvn:org.apache.myfaces.core/myfaces-bundle/2.2.8</bundle>
> </feature>
>
> <feature name="myapp-common" version="${project.version}">
> <feature>cxf-jaxws</feature>
> <bundle
> start="true">mvn:org.apache.commons/commons-lang3/3.1</bundle>
> <bundle
> start="true">mvn:commons-collections/commons-collections/3.2.1</bundle>
> <bundle
> start="true">mvn:commons-beanutils/commons-beanutils/1.8.3</bundle>
> </feature>
>
> <feature name="myapp-webclient" version="${project.version}">
> <feature>myapp-web-common</feature>
> <feature>myapp-common</feature>
> <bundle
> start="true">mvn:foo.bar.myapp.webclient/myapp-webclient/1.1</bundle>
> </feature>
>
> <feature name="myapp-server-a" version="${project.version}">
> <feature>myapp-common</feature>
> <feature>quartz</feature>
> <bundle
> start="true">mvn:foo.bar.myapp.server/myapp-server-a/1.1</bundle>
> </feature>
> <feature name="myapp-server-b" version="${project.version}">
> <feature>myapp-common</feature>
> <feature>quartz</feature>
> <bundle
> start="true">mvn:foo.bar.myapp.server/myapp-server-b/1.1</bundle>
> </feature>
> </features>
>
>
> 2) Updates to bundles will be distributed to the Cave server. Each
> instance of Karaf will then pull bundle updates from the Cave server.
>
> I look forward to your feedback.
>
> Paul Spencer
>
>
Re: My plan to build and patch an offline Karaf instance. Does it
look correct and complete?
Posted by Achim Nierbeck <bc...@googlemail.com>.
Hi Paul,
Great, that's been the missing peace in your description. In that case I
guess it looks ok.
regards, Achim
2015-04-29 22:28 GMT+02:00 Paul Spencer <pa...@apache.org>:
> @Achim: Applying updates to each Karaf instance will be done manually due
> to the requirements that patching must be performed around the
> manufacturing production schedule. OBR is used instead of a Maven
> Repository to ensure the all of the dependencies for the updated bundle are
> also installed.
>
> @Guillaume: The schedule is pretty tight, so I am not able to wait on
> Karaf 4. There is a use case for updating Karaf and I plan on upgrading to
> Karaf 4 in the near future.
>
> Paul Spencer
>
> > On Apr 29, 2015, at 3:49 PM, Guillaume Nodet <gn...@apache.org> wrote:
> >
> > That's exactly what I was thinking about.
> > However, all those use cases should be much better handled with karaf 4,
> so if you don't have a schedule too tight, you may want to give it a try.
> > And I started this morning to look at integrating cave better with karaf
> 4 ...
> >
> > 2015-04-29 21:22 GMT+02:00 Achim Nierbeck <bc...@googlemail.com>:
> > One more thought, how is case 1/ triggered?
> > Cause unless you'll issue an update on these bundles nothing is going to
> happen. OBR helps with resolving dependencies between bundles, but not
> about updating a certain bundle.
> >
> > regards, Achim
> >
> >
> > 2015-04-29 19:31 GMT+02:00 Paul Spencer <pa...@apache.org>:
> > Guillaume,
> > I foresee the following patching use cases and workflow:
> >
> > Updated Bundle - The updated bundle will be copied into the cave server
> using the command "cave:repository-upload-artifact". Each instance will
> update the bundle from the caver server vis OBR as needed.
> >
> > Updated Feature - Not sure
> >
> > Updated Karaf - Fresh install of Karaf instance
> >
> > Paul Spencer
> >
> >
> > > On Apr 29, 2015, at 10:43 AM, Guillaume Nodet <gn...@apache.org>
> wrote:
> > >
> > > Yes, this looks good to me.
> > > How do you plan to actually use OBR / Cave to distribute patches ?
> > >
> > > 2015-04-29 15:54 GMT+02:00 Paul Spencer <pa...@apache.org>:
> > > Below is my plan to build and patch several instances of Karaf that
> are installed in an offline environment. Each instance will be composed of
> standard features/bundles, like CXF and MyFaces, and features/bundles
> developed by my company. I am looking for feedback on this plan.
> > >
> > > ***
> > > * Plan
> > > ***
> > >
> > > 1) A custom Karaf distribution containing all bundles needed by the
> instance will be build. This is done by including a feature.xml describing
> all needed features and bundles. Additionally the distribution include OBR
> and Cave-Server features to support future patching. Each instance will
> start only the features and bundles needed by that instance, so only a few
> of the instance will start the cave-server.
> > >
> > > ** Example of dependency configuration in pom.xml describing standard
> and company developed features and bundles to be include in the build:
> > > <dependency>
> > > <groupId>${project.groupId}</groupId>
> > > <artifactId>custom-app-feature</artifactId>
> > > <version>1.0</version>
> > > <classifier>features</classifier>
> > > <type>xml</type>
> > > <scope>runtime</scope>
> > > </dependency>
> > >
> > > ** Example of karaf-maven-plugin configuration in pom.xml describing
> standard and company developed features and bundles to be include in the
> build:
> > > <bootFeatures>
> > > <feature>config</feature>
> > > <feature>standard</feature>
> > > <feature>region</feature>
> > > <feature>package</feature>
> > > <feature>kar</feature>
> > > <feature>ssh</feature>
> > > <feature>management</feature>
> > > <feature>obr</feature>
> > > </bootFeatures>
> > > <installedFeatures>
> > > <feature>obr-server</feature>
> > > <feature>myapp-server-a</feature>
> > > <feature>myapp-server-b</feature>
> > > <feature>myapp-webclient</feature>
> > > </installedFeatures>
> > >
> > > ** Example of feature.xml describing standard and company developed
> features and bundles to be include in the build:
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <features>
> > > <feature name="obr-server" version="${project.version}">
> > > <feature name="cave-server" version="3.0"/>
> > > </feature>
> > > <feature name="quartz" version="2.2.0">
> > > <bundle
> start="true">mvn:org.quartz-scheduler/quartz/2.2.0</bundle>
> > > <bundle
> start="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.c3p0/0.9.1.2_1</bundle>
> > > </feature>
> > > <feature name="myapp-web-common" version="${project.version}">
> > > <feature>jndi</feature>
> > > <feature>pax-web</feature>
> > >
> <bundle>mvn:org.apache.myfaces.core/myfaces-bundle/2.2.8</bundle>
> > > </feature>
> > >
> > > <feature name="myapp-common" version="${project.version}">
> > > <feature>cxf-jaxws</feature>
> > > <bundle
> start="true">mvn:org.apache.commons/commons-lang3/3.1</bundle>
> > > <bundle
> start="true">mvn:commons-collections/commons-collections/3.2.1</bundle>
> > > <bundle
> start="true">mvn:commons-beanutils/commons-beanutils/1.8.3</bundle>
> > > </feature>
> > >
> > > <feature name="myapp-webclient" version="${project.version}">
> > > <feature>myapp-web-common</feature>
> > > <feature>myapp-common</feature>
> > > <bundle
> start="true">mvn:foo.bar.myapp.webclient/myapp-webclient/1.1</bundle>
> > > </feature>
> > >
> > > <feature name="myapp-server-a" version="${project.version}">
> > > <feature>myapp-common</feature>
> > > <feature>quartz</feature>
> > > <bundle
> start="true">mvn:foo.bar.myapp.server/myapp-server-a/1.1</bundle>
> > > </feature>
> > > <feature name="myapp-server-b" version="${project.version}">
> > > <feature>myapp-common</feature>
> > > <feature>quartz</feature>
> > > <bundle
> start="true">mvn:foo.bar.myapp.server/myapp-server-b/1.1</bundle>
> > > </feature>
> > > </features>
> > >
> > >
> > > 2) Updates to bundles will be distributed to the Cave server. Each
> instance of Karaf will then pull bundle updates from the Cave server.
> > >
> > > I look forward to your feedback.
> > >
> > > Paul Spencer
> > >
> > >
> > >
> >
> >
> >
> >
> > --
> >
> > Apache Member
> > Apache Karaf <http://karaf.apache.org/> Committer & PMC
> > OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer
> & Project Lead
> > blog <http://notizblog.nierbeck.de/>
> > Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>
> >
> > Software Architect / Project Manager / Scrum Master
> >
> >
>
>
--
Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>
Software Architect / Project Manager / Scrum Master
Re: My plan to build and patch an offline Karaf instance. Does it look correct and complete?
Posted by Paul Spencer <pa...@apache.org>.
@Achim: Applying updates to each Karaf instance will be done manually due to the requirements that patching must be performed around the manufacturing production schedule. OBR is used instead of a Maven Repository to ensure the all of the dependencies for the updated bundle are also installed.
@Guillaume: The schedule is pretty tight, so I am not able to wait on Karaf 4. There is a use case for updating Karaf and I plan on upgrading to Karaf 4 in the near future.
Paul Spencer
> On Apr 29, 2015, at 3:49 PM, Guillaume Nodet <gn...@apache.org> wrote:
>
> That's exactly what I was thinking about.
> However, all those use cases should be much better handled with karaf 4, so if you don't have a schedule too tight, you may want to give it a try.
> And I started this morning to look at integrating cave better with karaf 4 ...
>
> 2015-04-29 21:22 GMT+02:00 Achim Nierbeck <bc...@googlemail.com>:
> One more thought, how is case 1/ triggered?
> Cause unless you'll issue an update on these bundles nothing is going to happen. OBR helps with resolving dependencies between bundles, but not about updating a certain bundle.
>
> regards, Achim
>
>
> 2015-04-29 19:31 GMT+02:00 Paul Spencer <pa...@apache.org>:
> Guillaume,
> I foresee the following patching use cases and workflow:
>
> Updated Bundle - The updated bundle will be copied into the cave server using the command "cave:repository-upload-artifact". Each instance will update the bundle from the caver server vis OBR as needed.
>
> Updated Feature - Not sure
>
> Updated Karaf - Fresh install of Karaf instance
>
> Paul Spencer
>
>
> > On Apr 29, 2015, at 10:43 AM, Guillaume Nodet <gn...@apache.org> wrote:
> >
> > Yes, this looks good to me.
> > How do you plan to actually use OBR / Cave to distribute patches ?
> >
> > 2015-04-29 15:54 GMT+02:00 Paul Spencer <pa...@apache.org>:
> > Below is my plan to build and patch several instances of Karaf that are installed in an offline environment. Each instance will be composed of standard features/bundles, like CXF and MyFaces, and features/bundles developed by my company. I am looking for feedback on this plan.
> >
> > ***
> > * Plan
> > ***
> >
> > 1) A custom Karaf distribution containing all bundles needed by the instance will be build. This is done by including a feature.xml describing all needed features and bundles. Additionally the distribution include OBR and Cave-Server features to support future patching. Each instance will start only the features and bundles needed by that instance, so only a few of the instance will start the cave-server.
> >
> > ** Example of dependency configuration in pom.xml describing standard and company developed features and bundles to be include in the build:
> > <dependency>
> > <groupId>${project.groupId}</groupId>
> > <artifactId>custom-app-feature</artifactId>
> > <version>1.0</version>
> > <classifier>features</classifier>
> > <type>xml</type>
> > <scope>runtime</scope>
> > </dependency>
> >
> > ** Example of karaf-maven-plugin configuration in pom.xml describing standard and company developed features and bundles to be include in the build:
> > <bootFeatures>
> > <feature>config</feature>
> > <feature>standard</feature>
> > <feature>region</feature>
> > <feature>package</feature>
> > <feature>kar</feature>
> > <feature>ssh</feature>
> > <feature>management</feature>
> > <feature>obr</feature>
> > </bootFeatures>
> > <installedFeatures>
> > <feature>obr-server</feature>
> > <feature>myapp-server-a</feature>
> > <feature>myapp-server-b</feature>
> > <feature>myapp-webclient</feature>
> > </installedFeatures>
> >
> > ** Example of feature.xml describing standard and company developed features and bundles to be include in the build:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <features>
> > <feature name="obr-server" version="${project.version}">
> > <feature name="cave-server" version="3.0"/>
> > </feature>
> > <feature name="quartz" version="2.2.0">
> > <bundle start="true">mvn:org.quartz-scheduler/quartz/2.2.0</bundle>
> > <bundle start="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.c3p0/0.9.1.2_1</bundle>
> > </feature>
> > <feature name="myapp-web-common" version="${project.version}">
> > <feature>jndi</feature>
> > <feature>pax-web</feature>
> > <bundle>mvn:org.apache.myfaces.core/myfaces-bundle/2.2.8</bundle>
> > </feature>
> >
> > <feature name="myapp-common" version="${project.version}">
> > <feature>cxf-jaxws</feature>
> > <bundle start="true">mvn:org.apache.commons/commons-lang3/3.1</bundle>
> > <bundle start="true">mvn:commons-collections/commons-collections/3.2.1</bundle>
> > <bundle start="true">mvn:commons-beanutils/commons-beanutils/1.8.3</bundle>
> > </feature>
> >
> > <feature name="myapp-webclient" version="${project.version}">
> > <feature>myapp-web-common</feature>
> > <feature>myapp-common</feature>
> > <bundle start="true">mvn:foo.bar.myapp.webclient/myapp-webclient/1.1</bundle>
> > </feature>
> >
> > <feature name="myapp-server-a" version="${project.version}">
> > <feature>myapp-common</feature>
> > <feature>quartz</feature>
> > <bundle start="true">mvn:foo.bar.myapp.server/myapp-server-a/1.1</bundle>
> > </feature>
> > <feature name="myapp-server-b" version="${project.version}">
> > <feature>myapp-common</feature>
> > <feature>quartz</feature>
> > <bundle start="true">mvn:foo.bar.myapp.server/myapp-server-b/1.1</bundle>
> > </feature>
> > </features>
> >
> >
> > 2) Updates to bundles will be distributed to the Cave server. Each instance of Karaf will then pull bundle updates from the Cave server.
> >
> > I look forward to your feedback.
> >
> > Paul Spencer
> >
> >
> >
>
>
>
>
> --
>
> Apache Member
> Apache Karaf <http://karaf.apache.org/> Committer & PMC
> OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer & Project Lead
> blog <http://notizblog.nierbeck.de/>
> Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>
>
> Software Architect / Project Manager / Scrum Master
>
>
Re: My plan to build and patch an offline Karaf instance. Does it
look correct and complete?
Posted by Guillaume Nodet <gn...@apache.org>.
That's exactly what I was thinking about.
However, all those use cases should be much better handled with karaf 4, so
if you don't have a schedule too tight, you may want to give it a try.
And I started this morning to look at integrating cave better with karaf 4
...
2015-04-29 21:22 GMT+02:00 Achim Nierbeck <bc...@googlemail.com>:
> One more thought, how is case 1/ triggered?
> Cause unless you'll issue an update on these bundles nothing is going to
> happen. OBR helps with resolving dependencies between bundles, but not
> about updating a certain bundle.
>
> regards, Achim
>
>
> 2015-04-29 19:31 GMT+02:00 Paul Spencer <pa...@apache.org>:
>
>> Guillaume,
>> I foresee the following patching use cases and workflow:
>>
>> Updated Bundle - The updated bundle will be copied into the cave server
>> using the command "cave:repository-upload-artifact". Each instance will
>> update the bundle from the caver server vis OBR as needed.
>>
>> Updated Feature - Not sure
>>
>> Updated Karaf - Fresh install of Karaf instance
>>
>> Paul Spencer
>>
>>
>> > On Apr 29, 2015, at 10:43 AM, Guillaume Nodet <gn...@apache.org>
>> wrote:
>> >
>> > Yes, this looks good to me.
>> > How do you plan to actually use OBR / Cave to distribute patches ?
>> >
>> > 2015-04-29 15:54 GMT+02:00 Paul Spencer <pa...@apache.org>:
>> > Below is my plan to build and patch several instances of Karaf that are
>> installed in an offline environment. Each instance will be composed of
>> standard features/bundles, like CXF and MyFaces, and features/bundles
>> developed by my company. I am looking for feedback on this plan.
>> >
>> > ***
>> > * Plan
>> > ***
>> >
>> > 1) A custom Karaf distribution containing all bundles needed by the
>> instance will be build. This is done by including a feature.xml describing
>> all needed features and bundles. Additionally the distribution include OBR
>> and Cave-Server features to support future patching. Each instance will
>> start only the features and bundles needed by that instance, so only a few
>> of the instance will start the cave-server.
>> >
>> > ** Example of dependency configuration in pom.xml describing standard
>> and company developed features and bundles to be include in the build:
>> > <dependency>
>> > <groupId>${project.groupId}</groupId>
>> > <artifactId>custom-app-feature</artifactId>
>> > <version>1.0</version>
>> > <classifier>features</classifier>
>> > <type>xml</type>
>> > <scope>runtime</scope>
>> > </dependency>
>> >
>> > ** Example of karaf-maven-plugin configuration in pom.xml describing
>> standard and company developed features and bundles to be include in the
>> build:
>> > <bootFeatures>
>> > <feature>config</feature>
>> > <feature>standard</feature>
>> > <feature>region</feature>
>> > <feature>package</feature>
>> > <feature>kar</feature>
>> > <feature>ssh</feature>
>> > <feature>management</feature>
>> > <feature>obr</feature>
>> > </bootFeatures>
>> > <installedFeatures>
>> > <feature>obr-server</feature>
>> > <feature>myapp-server-a</feature>
>> > <feature>myapp-server-b</feature>
>> > <feature>myapp-webclient</feature>
>> > </installedFeatures>
>> >
>> > ** Example of feature.xml describing standard and company developed
>> features and bundles to be include in the build:
>> > <?xml version="1.0" encoding="UTF-8"?>
>> > <features>
>> > <feature name="obr-server" version="${project.version}">
>> > <feature name="cave-server" version="3.0"/>
>> > </feature>
>> > <feature name="quartz" version="2.2.0">
>> > <bundle
>> start="true">mvn:org.quartz-scheduler/quartz/2.2.0</bundle>
>> > <bundle
>> start="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.c3p0/0.9.1.2_1</bundle>
>> > </feature>
>> > <feature name="myapp-web-common" version="${project.version}">
>> > <feature>jndi</feature>
>> > <feature>pax-web</feature>
>> >
>> <bundle>mvn:org.apache.myfaces.core/myfaces-bundle/2.2.8</bundle>
>> > </feature>
>> >
>> > <feature name="myapp-common" version="${project.version}">
>> > <feature>cxf-jaxws</feature>
>> > <bundle
>> start="true">mvn:org.apache.commons/commons-lang3/3.1</bundle>
>> > <bundle
>> start="true">mvn:commons-collections/commons-collections/3.2.1</bundle>
>> > <bundle
>> start="true">mvn:commons-beanutils/commons-beanutils/1.8.3</bundle>
>> > </feature>
>> >
>> > <feature name="myapp-webclient" version="${project.version}">
>> > <feature>myapp-web-common</feature>
>> > <feature>myapp-common</feature>
>> > <bundle
>> start="true">mvn:foo.bar.myapp.webclient/myapp-webclient/1.1</bundle>
>> > </feature>
>> >
>> > <feature name="myapp-server-a" version="${project.version}">
>> > <feature>myapp-common</feature>
>> > <feature>quartz</feature>
>> > <bundle
>> start="true">mvn:foo.bar.myapp.server/myapp-server-a/1.1</bundle>
>> > </feature>
>> > <feature name="myapp-server-b" version="${project.version}">
>> > <feature>myapp-common</feature>
>> > <feature>quartz</feature>
>> > <bundle
>> start="true">mvn:foo.bar.myapp.server/myapp-server-b/1.1</bundle>
>> > </feature>
>> > </features>
>> >
>> >
>> > 2) Updates to bundles will be distributed to the Cave server. Each
>> instance of Karaf will then pull bundle updates from the Cave server.
>> >
>> > I look forward to your feedback.
>> >
>> > Paul Spencer
>> >
>> >
>> >
>>
>>
>
>
> --
>
> Apache Member
> Apache Karaf <http://karaf.apache.org/> Committer & PMC
> OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
> Project Lead
> blog <http://notizblog.nierbeck.de/>
> Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>
>
> Software Architect / Project Manager / Scrum Master
>
>
Re: My plan to build and patch an offline Karaf instance. Does it
look correct and complete?
Posted by Achim Nierbeck <bc...@googlemail.com>.
One more thought, how is case 1/ triggered?
Cause unless you'll issue an update on these bundles nothing is going to
happen. OBR helps with resolving dependencies between bundles, but not
about updating a certain bundle.
regards, Achim
2015-04-29 19:31 GMT+02:00 Paul Spencer <pa...@apache.org>:
> Guillaume,
> I foresee the following patching use cases and workflow:
>
> Updated Bundle - The updated bundle will be copied into the cave server
> using the command "cave:repository-upload-artifact". Each instance will
> update the bundle from the caver server vis OBR as needed.
>
> Updated Feature - Not sure
>
> Updated Karaf - Fresh install of Karaf instance
>
> Paul Spencer
>
>
> > On Apr 29, 2015, at 10:43 AM, Guillaume Nodet <gn...@apache.org> wrote:
> >
> > Yes, this looks good to me.
> > How do you plan to actually use OBR / Cave to distribute patches ?
> >
> > 2015-04-29 15:54 GMT+02:00 Paul Spencer <pa...@apache.org>:
> > Below is my plan to build and patch several instances of Karaf that are
> installed in an offline environment. Each instance will be composed of
> standard features/bundles, like CXF and MyFaces, and features/bundles
> developed by my company. I am looking for feedback on this plan.
> >
> > ***
> > * Plan
> > ***
> >
> > 1) A custom Karaf distribution containing all bundles needed by the
> instance will be build. This is done by including a feature.xml describing
> all needed features and bundles. Additionally the distribution include OBR
> and Cave-Server features to support future patching. Each instance will
> start only the features and bundles needed by that instance, so only a few
> of the instance will start the cave-server.
> >
> > ** Example of dependency configuration in pom.xml describing standard
> and company developed features and bundles to be include in the build:
> > <dependency>
> > <groupId>${project.groupId}</groupId>
> > <artifactId>custom-app-feature</artifactId>
> > <version>1.0</version>
> > <classifier>features</classifier>
> > <type>xml</type>
> > <scope>runtime</scope>
> > </dependency>
> >
> > ** Example of karaf-maven-plugin configuration in pom.xml describing
> standard and company developed features and bundles to be include in the
> build:
> > <bootFeatures>
> > <feature>config</feature>
> > <feature>standard</feature>
> > <feature>region</feature>
> > <feature>package</feature>
> > <feature>kar</feature>
> > <feature>ssh</feature>
> > <feature>management</feature>
> > <feature>obr</feature>
> > </bootFeatures>
> > <installedFeatures>
> > <feature>obr-server</feature>
> > <feature>myapp-server-a</feature>
> > <feature>myapp-server-b</feature>
> > <feature>myapp-webclient</feature>
> > </installedFeatures>
> >
> > ** Example of feature.xml describing standard and company developed
> features and bundles to be include in the build:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <features>
> > <feature name="obr-server" version="${project.version}">
> > <feature name="cave-server" version="3.0"/>
> > </feature>
> > <feature name="quartz" version="2.2.0">
> > <bundle
> start="true">mvn:org.quartz-scheduler/quartz/2.2.0</bundle>
> > <bundle
> start="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.c3p0/0.9.1.2_1</bundle>
> > </feature>
> > <feature name="myapp-web-common" version="${project.version}">
> > <feature>jndi</feature>
> > <feature>pax-web</feature>
> >
> <bundle>mvn:org.apache.myfaces.core/myfaces-bundle/2.2.8</bundle>
> > </feature>
> >
> > <feature name="myapp-common" version="${project.version}">
> > <feature>cxf-jaxws</feature>
> > <bundle
> start="true">mvn:org.apache.commons/commons-lang3/3.1</bundle>
> > <bundle
> start="true">mvn:commons-collections/commons-collections/3.2.1</bundle>
> > <bundle
> start="true">mvn:commons-beanutils/commons-beanutils/1.8.3</bundle>
> > </feature>
> >
> > <feature name="myapp-webclient" version="${project.version}">
> > <feature>myapp-web-common</feature>
> > <feature>myapp-common</feature>
> > <bundle
> start="true">mvn:foo.bar.myapp.webclient/myapp-webclient/1.1</bundle>
> > </feature>
> >
> > <feature name="myapp-server-a" version="${project.version}">
> > <feature>myapp-common</feature>
> > <feature>quartz</feature>
> > <bundle
> start="true">mvn:foo.bar.myapp.server/myapp-server-a/1.1</bundle>
> > </feature>
> > <feature name="myapp-server-b" version="${project.version}">
> > <feature>myapp-common</feature>
> > <feature>quartz</feature>
> > <bundle
> start="true">mvn:foo.bar.myapp.server/myapp-server-b/1.1</bundle>
> > </feature>
> > </features>
> >
> >
> > 2) Updates to bundles will be distributed to the Cave server. Each
> instance of Karaf will then pull bundle updates from the Cave server.
> >
> > I look forward to your feedback.
> >
> > Paul Spencer
> >
> >
> >
>
>
--
Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>
Software Architect / Project Manager / Scrum Master
Re: My plan to build and patch an offline Karaf instance. Does it look correct and complete?
Posted by Paul Spencer <pa...@apache.org>.
Guillaume,
I foresee the following patching use cases and workflow:
Updated Bundle - The updated bundle will be copied into the cave server using the command "cave:repository-upload-artifact". Each instance will update the bundle from the caver server vis OBR as needed.
Updated Feature - Not sure
Updated Karaf - Fresh install of Karaf instance
Paul Spencer
> On Apr 29, 2015, at 10:43 AM, Guillaume Nodet <gn...@apache.org> wrote:
>
> Yes, this looks good to me.
> How do you plan to actually use OBR / Cave to distribute patches ?
>
> 2015-04-29 15:54 GMT+02:00 Paul Spencer <pa...@apache.org>:
> Below is my plan to build and patch several instances of Karaf that are installed in an offline environment. Each instance will be composed of standard features/bundles, like CXF and MyFaces, and features/bundles developed by my company. I am looking for feedback on this plan.
>
> ***
> * Plan
> ***
>
> 1) A custom Karaf distribution containing all bundles needed by the instance will be build. This is done by including a feature.xml describing all needed features and bundles. Additionally the distribution include OBR and Cave-Server features to support future patching. Each instance will start only the features and bundles needed by that instance, so only a few of the instance will start the cave-server.
>
> ** Example of dependency configuration in pom.xml describing standard and company developed features and bundles to be include in the build:
> <dependency>
> <groupId>${project.groupId}</groupId>
> <artifactId>custom-app-feature</artifactId>
> <version>1.0</version>
> <classifier>features</classifier>
> <type>xml</type>
> <scope>runtime</scope>
> </dependency>
>
> ** Example of karaf-maven-plugin configuration in pom.xml describing standard and company developed features and bundles to be include in the build:
> <bootFeatures>
> <feature>config</feature>
> <feature>standard</feature>
> <feature>region</feature>
> <feature>package</feature>
> <feature>kar</feature>
> <feature>ssh</feature>
> <feature>management</feature>
> <feature>obr</feature>
> </bootFeatures>
> <installedFeatures>
> <feature>obr-server</feature>
> <feature>myapp-server-a</feature>
> <feature>myapp-server-b</feature>
> <feature>myapp-webclient</feature>
> </installedFeatures>
>
> ** Example of feature.xml describing standard and company developed features and bundles to be include in the build:
> <?xml version="1.0" encoding="UTF-8"?>
> <features>
> <feature name="obr-server" version="${project.version}">
> <feature name="cave-server" version="3.0"/>
> </feature>
> <feature name="quartz" version="2.2.0">
> <bundle start="true">mvn:org.quartz-scheduler/quartz/2.2.0</bundle>
> <bundle start="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.c3p0/0.9.1.2_1</bundle>
> </feature>
> <feature name="myapp-web-common" version="${project.version}">
> <feature>jndi</feature>
> <feature>pax-web</feature>
> <bundle>mvn:org.apache.myfaces.core/myfaces-bundle/2.2.8</bundle>
> </feature>
>
> <feature name="myapp-common" version="${project.version}">
> <feature>cxf-jaxws</feature>
> <bundle start="true">mvn:org.apache.commons/commons-lang3/3.1</bundle>
> <bundle start="true">mvn:commons-collections/commons-collections/3.2.1</bundle>
> <bundle start="true">mvn:commons-beanutils/commons-beanutils/1.8.3</bundle>
> </feature>
>
> <feature name="myapp-webclient" version="${project.version}">
> <feature>myapp-web-common</feature>
> <feature>myapp-common</feature>
> <bundle start="true">mvn:foo.bar.myapp.webclient/myapp-webclient/1.1</bundle>
> </feature>
>
> <feature name="myapp-server-a" version="${project.version}">
> <feature>myapp-common</feature>
> <feature>quartz</feature>
> <bundle start="true">mvn:foo.bar.myapp.server/myapp-server-a/1.1</bundle>
> </feature>
> <feature name="myapp-server-b" version="${project.version}">
> <feature>myapp-common</feature>
> <feature>quartz</feature>
> <bundle start="true">mvn:foo.bar.myapp.server/myapp-server-b/1.1</bundle>
> </feature>
> </features>
>
>
> 2) Updates to bundles will be distributed to the Cave server. Each instance of Karaf will then pull bundle updates from the Cave server.
>
> I look forward to your feedback.
>
> Paul Spencer
>
>
>