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