You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Paul Spencer <pa...@apache.org> on 2015/04/29 15:54:30 UTC

My plan to build and patch an offline Karaf instance. Does it look correct and complete?

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
> 
>  
> 


Re: My plan to build and patch an offline Karaf instance. Does it look correct and complete?

Posted by Guillaume Nodet <gn...@apache.org>.
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
>
>