[openstack-dev] [TripleO] Is Swift a good choice of database for the TripleO API?

Dougal Matthews dougal at redhat.com
Tue Dec 22 15:36:02 UTC 2015


Hi all,

This topic came up in the 2015-12-15 meeting[1], and again briefly today.
After working with the code that came out of the deployment library spec[2]
I
had some concerns with how we are storing the templates.

Simply put, when we are dealing with 100+ files from tripleo-heat-templates
how can we ensure consistency in Swift without any atomicity or
transactions.
I think this is best explained with a couple of examples.

 - When we create a new deployment plan (upload all the templates to swift)
   how do we handle the case where there is an error? For example, if we are
   uploading 10 files - what do we do if the 5th one fails for some reason?
   There is a patch to do a manual rollback[3], but I have concerns about
   doing this in Python. If Swift is completely inaccessible for a short
   period the rollback wont work either.

 - When deploying to Heat, we need to download all the YAML files from
Swift.
   This can take a couple of seconds. What happens if somebody starts to
   upload a new version of the plan in the middle? We could end up trying to
   deploy half old and half new files. We wouldn't have a consistent view of
   the database.

We had a few suggestions in the meeting:

 - Add a locking mechanism. I would be concerned about deadlocks or having
to
   lock for the full duration of a deploy.
 - Store the files in a tarball (so we only deal with one file). I think we
   could still hit issues with multiple operations unless we guarantee that
   only one instance of the API is ever running.

I think these could potentially be made to work, but at this point are we
using the best tool for the job?

For alternatives, I see a can think of a couple of options:

- Use a database, like we did for Tuskar and most OpenStack API's do.
- Invest time in building something on Swift.
- Glance was transitioning to be a Artifact store. I don't know the status
of
  this or if it would meet out needs.

Any input, ideas or suggestions would be great!

Thanks,
Dougal


[1]:
http://eavesdrop.openstack.org/meetings/tripleo/2015/tripleo.2015-12-15-14.03.log.html#l-89
[2]:
https://specs.openstack.org/openstack/tripleo-specs/specs/mitaka/tripleo-overcloud-deployment-library.html
[3]: https://review.openstack.org/#/c/257481/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20151222/7cd36c2b/attachment.html>


More information about the OpenStack-dev mailing list