Hi Bram,

Yes, I am struggling too with setting up a dev environment using the AMS and 
AMA. For that reason I am currently still using the old fileinstall strategy, 
which is much easier and quicker for development. So before fileinstall support 
is dropped, I really would like to see the dev tools in place. I really would 
like to see dev tools on the short term roadmap.
I do reckon the problems described below, but instead of describing the tools I 
need, I would like to express it in use cases:

1) Setup default dev environment/AMS prefilling
First of all, I would like to have some kind of tool that sets up an AMS 
prefilled with features and distributions. Distributions for example would be a 
'demo-auth' containing platform+auth bundles and a 'demo-opensocial' containing 
platform+auth+opensocial bundles.

2) Version support
With the AMS prefilling I would also like to have several versions in there, so 
'demo-auth-0.3.0' and 'demo-auth-0.4.0' for example. This would allow me to 
compare the current with the previous version, for example for performance 
analysis or checking if certain bugs were already present in the previous 
versions. 
For development this would be a nice to have, but not strictly necessary. I can 
imagine that this is more important for production environment (test version 
upgrade on test nodes before deploying it to the production nodes).

3) Updating bundles
Now after the initial prefilling, it should be possible to update the bundles 
with a single maven command. Right now, when using the maven bundle plugin the 
old version is not removed from the AMS (see AMDATUMNGMNT-8) so you will end up 
soon with a cluttered AMS and will need to start all over. There should be a 
mechanism to indicate what artifacts/features should be updated automatically. 
If multiple versions as in 2) are supported, a new 0.3.0-SNAPSHOT should not 
overwrite a 0.2.1 version of the same bundle used by another feature.

4) Updating config schema
Updating configuration files (schema, not values) should work like updating 
bundles, with a single maven command. 

5) Changing config values
In 0.2.1 you could simply edit the .cfg files on disk or change the value in 
the Felix web console to change a configuration property like the port number 
of the http service. This should be supported in 1.0, without the need of 
writing a client invoking the REST service to create a tag for each editable 
property. Right now config values are very hard to edit.

6) Adding/removing tenants
In 1.0 adding a tenant is very complex. To add a tenant, you should add a 
.tenant file for the new tenant but also create a new metatype config file for 
each config that is tenant aware. With the subprojects auth and opensocial 
installed, you would need to create and edit 4 additional files for each 
tenant. If we would refactor Cassandra to follow this 'official' approach, we 
would have 4 more. And if we are running a cluster of three Cassandra nodes, 
multiply by 3. Additional tenant specific config files may be added for project 
specific  implementations, so in the future it might be necessary to create, 
edit and upload dozens of files (each of them with a new, unique, filename) to 
the AMS, just to create a single tenant. This is not only a lot of (manual) 
work, but also very error-prone.
So I would like to see some dev tool that supports adding and removing a tenant 
automatically.

Regards, Ivo

-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Bram de Kruijff
Sent: donderdag 24 mei 2012 16:09
To: [email protected]; [email protected]
Subject: [Amdatu-developers] Amdatu Provisioning and development best practices

Hi all,

with provisioning in place in I know some people, like me, are struggeling with 
setting up a nice development environment. We have some tools in place, but I 
feel we can do better. Here are just some thought ideas and things I have 
encountered sofar. I'd really like to hear your feedback and ideas.

1) AMS boostrap

One of the first things you want to do is setting up an AMS with the Amdatu 
Platform ready to deploy. To do so you need all processors, bundles and 
configurations uploaded, associated into features, and distributions. You can 
do it by hand using webui or create a client to do so. The former gets tiring 
pretty fast, so I've seen people creating shell scripts, amdatu-maven-plugin 
import/export models, ace-client based importers Drawback is that everybody is 
creating and maintaining their own populatiosn/solutions, having to 
update/upgrade/debug them every time something changes etc. Could we come up 
with a generic workable solution of most common cases?

I want to say "Use the Amdatu Web feature [1,2)", but obviously "Exclude the 
JSP support". IMHO that should be supported in a way you can automate it as 
well as do in an eclipse kind of UI dialog. It could be a way to declarative 
define features/profiles you find in pax/p2/eclipse. I think it would not be 
far off from the current export/import of artifacts, features and their 
associations using resolvable uris and common handlers (eg. http/mvn).


2) Development cycle

Once you have a populated AMS the next thing a developer wants to do is setting 
up an efficient development cycle. Our maven-plugin brings some relief but 
there are some issues here. Eg. the plugin has some timestamp support, but when 
developing the list of artifacts in the webui quickly become unmanageable. 
Should we drop and create here? Or find a way to trigger updates with an in 
place file? This is even more challenging for non-bundle artifacts as the AMS 
does not support auto-version update on these like it does on bundles. So you 
could still use the timestamping on files here, but you must then register is 
under a new name an update the associations with the feature to point to the 
new configuration artifact. Again, versioning support and/or in place updates 
would probably make life a lot easier..

Eg. What if we created some kind of  (optional) "maven-repository-connector" 
for artifacts that would sit in the AMS and manage the client artifacts based 
on observing the repository? It could use the standard versions snapshot logic 
to (periodically) check for updates. This could also support versioning on 
non-bundle artifacts (like) config and bridge it to the ACE model that does not 
support it.


Thoughts.. :) I'd love to get some input and ideas.

grz
Bram
_______________________________________________
Amdatu-developers mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-developers

_______________________________________________
Amdatu-developers mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-developers

Reply via email to