Closed bwalsh closed 7 years ago
It looks like the docker-compose file requires docker engine >=1.12 and docker-compose >=1.9, in order to use the default environment variables specified. This should definitely be at least noted in the main README.md since it forces a docker upgrade. (I had to delete my current docker and completely reinstall the newest version to run it, and then separately upgrade docker-compose as well.)
I propose adding to README: Euler uses docker-compose file version 2.1, which requires docker engine 1.12 or greater and docker-compose 1.9 or greater. These may need separate updates to ensure both requirements are met. See links for upgrading information.
@mayfielg thank you, i've updated the README
I'm not following the Euler diagram in the README. Where is the API fitting into the other dcc-dms diagrams we've proposed/been discussing? I feel like it's trying to be the 'upload server.' Am I correct?
Regarding the diagrams, would you remove the marketing logos and replace them with some plain boxes representing components with component labels? It's not clear to me what the software components are. Kafka, DCC, BMEG, are each made of several processes, so it's hard to know what's being proposed when it comes to configuration and deployment when those multiple components are represented as logos.
ITG setup swift in the exastack CompBioSwift project. Should we rely on an ITG administered swift? Is using containerized swift for proof-of-concept purposes, or do you intend that to be for production?
OpenStack login is based on keystone. Could we use the existing keystone, or is there a reason for running our own keystone? Is running keystone in a docker-compose network a proof-of-concept, or for production? How services in different networks all access keystone? Could all our services access an LDAP proxy instead? What does keystone give us that we can't get from an LDAP proxy?
@k1643
Is running keystone in a docker-compose network a proof-of-concept, or for production?
proof-of-concept so we can control & experiment with project setup
What does keystone give us that we can't get from an LDAP proxy?
We would need to develop and maintain these features if we didn't use keystone. Using keystone lets us retire the search_authorization project
These and others should hopefully be apparent from reading docs/use_cases.md
@k1643
Should we rely on an ITG administered swift? Is using containerized swift for proof-of-concept purposes, or do you intend that to be for production?
proof of concept so we can experiment with swift listener.
@mayfielg
I feel like it's trying to be the 'upload server.' Am I correct?
The api provides two services to the portal user:
The api provides one service for the add-a-file use case:
All uploads are handled by swift, we've inserted a listener that communicates back to /v0/files
I've updated readme
@mayfielg @k1643 - I've updated readme and replied above. Please let me know if I've missed anything.
This PR contains:
an implementation of swift object store, implemented using the existing keystone authentication service
example user/project setups
an implementation of the a swift pipeline observer to harvest file additions and notify downstream systems (dcc & bmeg )
A code review would be very helpful.
@kellrott @ksonmez @mayfielg @k1643 @adamstruck @buchanae @prismofeverything: can you review and comment
@AAMargolin @jacmarjorie :FYI
swift
Simple deployment of a "all in one" style OpenStack Swift server, uses Ubuntu packages as opposed to source.
The Swift implementation is tied to the Keystone sibling project for authentication and authorization. All data is stored in a docker volume container.
capabilities
As files are added to the object store by an authenticated user, they are published to a message queue where they can be consumed by different systems [dms, bmeg, other...]
When an authenticated user queries using the dcc portal or a client tool, they results they see are based on the authorizations assigned to their identity as provided by the institutional ldap server
data flows
//todo
//todo
usage
swift server config setup
verify swift operation
On swift server, defining containers, uploading files,etc.
extension
This project includes an extension Swift, the OpenStack Object Storage project, so it performs extra action on files at upload time. We're going to build an
DMS observer
inside Swift. The goal is to observe the new file, harvest the attributes of the resource, the project and account and forward it via kafka to one or more downstream consumers.To do our observation, we use Swift's pipeline architecture. Swift proxy uses, like many other OpenStack projects, paste to build his HTTP architecture.
Paste uses WSGI and provides an architecture based on a pipeline. The pipeline is composed of a succession of middleware, ending with one application. Each middleware has the chance to look at the request or at the response, can modify it, and then pass it to the following middleware. The latest component of the pipeline is the real application, and in this case, the Swift proxy server.
This container implements Swift, where we've added our observer to the default pipeline in the swift-proxy.conf configuration file:
See
euler
we've added to the pipeline in the swift-proxy.conf configuration file:Euler has a simple configuration that basically just tells swift where to load it. The
Dockerfile
copies the euler.py to the correct installation path.You can read more about WSGI here, but this is all that should be necessary to harvest all the information from the object store.
reading
https://github.com/openstack/kolla https://github.com/ccollicutt/docker-swift-onlyone http://docs.openstack.org/mitaka/install-guide-ubuntu/swift-controller-install.html https://gist.github.com/briancline/8119051 http://docs.openstack.org/developer/openstack-ansible/developer-docs/quickstart-aio.html https://ask.openstack.org/en/question/97991/newton-not-a-valid-cloud-archive-name/