first gswauth functional tests

commiting first gswauth functional tests.
Currently there are two tests, to create account
and to create an user. Each test is self contained
in that it goes through the process of creating and deleting
accounts and users as needed.

More tests will be added shortly.

Change-Id: I26d577790aed8c79c9de11f224516423e9769962
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6188
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6211
Keystone Functional Tests

Functional tests using OpenStack Keystone Authentication.  Tests
require the following:
1. Keystone server is running locally
2. Keystone server has been setup according to the test.conf
3. /mnt/gluster-object has the directories setup

Change-Id: I460471e549da91366cb817916ed5293c7e7adda4
Signed-off-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6218
Reviewed-by: Peter Portante <pportant@redhat.com>
Tested-by: Peter Portante <pportant@redhat.com>
Reviewed-on: http://review.gluster.org/6224
Update auth_guide.md

adding first draft of gswauth section to authentication guide

Change-Id: I801c9f4add18a5e5f5c735e61cf99fc3a5b935c2
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6222
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6259
make gluster volume name configurable

changed code to look at configuration file for
the metadata gluster volume name. The default is still
gsmetadata

Change-Id: I9bf74b9566ea1c9716c42f7ced0f999e02824868
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6225
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6258
refactoring add/remove account and user tests

These tests cover account registration and de-registration
user creation/delete, and listing of both account and user.

Some functions were renamed to better represent their purpose
and make them generic enough to be used by other tests

Change-Id: Ie622daccfc8e2d2fb45565952a99d7d832ce1189
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6212
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6257
Improve logging and raising DiskFileNoSpace

This commit only improves logging whenever ENOSPC (No space on disk)
or EDQUOT (Quota limit exceeded) is returned by glusterfs

Also, added methods to:
- get filename from file descriptor
- log with rate limit

Caveat: Although raising DiskFileNoSpace results in object-server
returning HTTPInsufficientStorage[507] correctly, the swift proxy-server
invokes "best_response" method that returns [503] to the user.

When write-behind translator is turned on in glusterfs, it may set
errno to EIO instead of ENOSPC/EDQUOT. This is documented in BZ 986812

BUG: 985862, 985253, 1020724
Change-Id: Ib0c5e41c11a8cdccc2077f71c31d8a23229452bb
Signed-off-by: Prashanth Pai <ppai@redhat.com>
Reviewed-on: http://review.gluster.org/6199
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
fix metadata overwrite during a post request

During a post request, the object-server is ovewriting
the existing object metadata. This fix prevents the overwrite
of the system metadata while it allows for the user to
add/remove user metadata

Change-Id: Ic62cd064589b625ee425a9934be8766650622c13
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6254
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
new user related gswauth functional tests

New tests around account and user modifications
Testing password changes and invalid admin rights

porting changes to havana branch

Change-Id: I2e867c2bb3ed10f375cc3f20fa66506e2cdd96e6
Reviewed-on: http://review.gluster.org/6223
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6260
Update RPM spec file

Update the RPM file with the comments from submittal spec
file to the Fedora Project. This update also differntiates
between the project name 'gluster-swift' and the Fedora
distribution name 'glusterfs-openstack-swift'.  This simple
changes makes it less confusing when downloading the source
on http://launchpad.net/gluster-swift .

For more information on the Fedora Project submittal status
please see: https://bugzilla.redhat.com/show_bug.cgi?id=1003089

This fix also creates a tar.gz source file so that Jenkins
can archive it.  This can be used for distributions other
than RPM based systems.

Change-Id: Ia9b85d53cf576a7754aaa018396adb70cb0f2855
Signed-off-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6265
Reviewed-by: Thiago Da Silva <thiago@redhat.com>
Tested-by: Thiago Da Silva <thiago@redhat.com>
renaming instances of swauth to gswauth

changed code where appropriate to gswauth
instead of swauth

Change-Id: Iadcec4f379fae3f063379b4899797b375290cc7b
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6226
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6278
Multiple changes in 'gluster-swift-gen-builder'

script now does some validation on accountnames and does not put forward
anything on screen unless asked verbose, '-v'. Help text is also added
and can be used with '-h' option.

Bug: 1001033

https://bugzilla.redhat.com/show_bug.cgi?id=1001033

Change-Id: I26af27fc96c1b1b0b84319d8b8453dfa075a8c55
Signed-off-by: Chetan Risbud <crisbud@redhat.com>
Reviewed-on: http://review.gluster.org/6121
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6310
fix error with swauth-clean-tokens

Error is caused by left-over code from swauth. It had hard-coded
the auth account to .auth. Changed code to use volume specified
in the config file

Change-Id: Id00eb3964b6b26a84511e4753ab80b2dea5654da
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6280
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6312
Log only non-ENOENT errors in diskfile

DiskFile.open() gets called for every PUT.  The expected sideeffect
is that if the file exists, the metadata in the object will be
populated.

DiskFile.open() was logging any errors it detected while trying
to open() the file.  Issue is that when we PUT a new file, there
is no entry, and open() will return an error.  The was incorrectly
logging each one of these errors.

Change-Id: I7d721df177761066fdaa46d278fff2d779924999
Signed-off-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6316
Reviewed-by: Thiago Da Silva <thiago@redhat.com>
Reviewed-by: Peter Portante <pportant@redhat.com>
Tested-by: Prashanth Pai <ppai@redhat.com>
Functional Tests for gswauth_cli

This test suite plans to tests following gswauth commands:-
1. swauth-prep
2. swauth-add-account
3. swauth-delete-account
4. swauth-add-user
5. swauth-delete-user
6. swauth-set-account-service
7. swauth-cleanup-tokens
8. swauth-list
It uses 'commands' python module to execute gswauthcommands,
and capture the status and output of commands followed by
asserts to verify if the captured status and output is same
as expected ones.This initial draft has tests for first 1-5
commands.

Change-Id: I8591884e87c6ffd88446aacd04a1db2daab2d189
Signed-off-by: Pushpesh Sharma <psharma@redhat.com>
Reviewed-on: http://review.gluster.org/6277
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6327
Fix double close issue in diskfile

The DiskWriter was closing the file descriptor when it finished
writing but initializing it to None.  Therefore, the DiskFile
context manager would then try to close it also.

Change-Id: I188ec814d025e28c7b89532f0502ebf1d4a20a09
Signed-off-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6317
Reviewed-by: Peter Portante <pportant@redhat.com>
Reviewed-by: pushpesh sharma <psharma@redhat.com>
Tested-by: pushpesh sharma <psharma@redhat.com>
Fix minor typo in gswauth usage documentation

Change-Id: I356f486c28da5c11ab1dec5d83a411f765c235f0
Signed-off-by: Prashanth Pai <ppai@redhat.com>
Reviewed-on: http://review.gluster.org/6335
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Fixed incorrect revision in Havana

Havana is supposed to be 1.10.0-X, but it was 1.10.1-X like
Icehouse.

Change-Id: I06c4ee7db5575b9d0674c0b95bf01becf27fdc21
Signed-off-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6346
Man(8) page for gluster-swift-gen-builder

Man page provides details on gluster-swift-gen-builder
script and its usage. Man page will be placed in section
8.

Bug: 1001033

https://bugzilla.redhat.com/show_bug.cgi?id=1001033

Change-Id: Ie172173d3873256facb55eb3be0accebe360025e
Signed-off-by: Chetan Risbud <crisbud@redhat.com>
Reviewed-on: http://review.gluster.org/6294
Reviewed-by: pushpesh sharma <psharma@redhat.com>
Tested-by: pushpesh sharma <psharma@redhat.com>
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6352
Setup and run in a virtual environment

Using tox, developers can down drop into an environment
which sets up and runs gluster-swift with gswauth authentication.
The developer is then dropped into a shell which is running inside
the tox environment.  OpenStack Swift and Gluster-Swift are
available to the developer.  Once the developer exists the shell,
the environment will be cleaned up and terminated.

Usage:
tox -e run

Example:
$ tox -e run
GLOB sdist-make: /home/lpabon/gluster-swift/setup.py
run inst-nodeps: /home/lpabon/gluster-swift/.tox/dist/gluster_swift-1.10.1-0.zip
run runtests: commands[0] | bash tools/tox_run.sh
Ring files are prepared in /etc/swift. Please restart object store services
Redirecting to /bin/systemctl start  memcached.service
Starting proxy-server...(/etc/swift/proxy-server.conf)
Starting container-server...(/etc/swift/container-server.conf)
Starting account-server...(/etc/swift/account-server.conf)
Starting object-server...(/etc/swift/object-server.conf)
bash-4.2$ swauth-list -K gswauthkey
{"accounts": [{"name": "test"}, {"name": "test2"}]}
bash-4.2$ swauth-list -K gswauthkey test
{"services": {"storage": {"default": "local", "local":
"http://127.0.0.1:8080/v1/AUTH_test"}}, "account_id":
"AUTH_test", "users": [{"name": "tester"}, {"name": "tester3"}]}
bash-4.2$ swauth-list -K gswauthkey test tester
{"groups": [{"name": "test:tester"}, {"name": "test"},
{"name": ".admin"}], "auth": "plaintext:testing"}
bash-4.2$ exit
exit
Redirecting to /bin/systemctl stop  memcached.service
Signal proxy-server  pid: 22862  signal: 15
Signal container-server  pid: 22863  signal: 15
Signal account-server  pid: 22864  signal: 15
Signal object-server  pid: 22865  signal: 15
proxy-server (22862) appears to have stopped
container-server (22863) appears to have stopped
account-server (22864) appears to have stopped
object-server (22865) appears to have stopped
  run: commands succeeded
    congratulations :)

Change-Id: I98de5d1b1698b4cd355888f2c15a46df021a9e87
Signed-off-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6365
Reviewed-by: pushpesh sharma <psharma@redhat.com>
Tested-by: pushpesh sharma <psharma@redhat.com>
Reviewed-on: http://review.gluster.org/6371
adding tabular output to swauth-list

swauth-list now shows lists of accounts, users and groups
in a tabular format (default). JSON and plain-text options
are still available

Change-Id: I897009f5f6c05aa4c14e306bb6ad35234e993fcd
Signed-off-by: Thiago da Silva <thiago@redhat.com>
Reviewed-on: http://review.gluster.org/6347
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
Reviewed-on: http://review.gluster.org/6372