Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions 1.2/docker-compose-custom-user.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: "3"

services:

wirecloud:
restart: always
image: fiware/wirecloud:1.2
# If you want to use a user from the host, provide here the id of the
# user, e.g. `export WIRECLOUD_USER=$(id -u username)`
user: ${WIRECLOUD_USER:-0}
ports:
- 80:8000
environment:
- DEBUG=True
volumes:
- ./wirecloud-data:/opt/wirecloud_instance/data
- ./wirecloud-static:/var/www/static
7 changes: 6 additions & 1 deletion 1.2/docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ case "$1" in
manage.py migrate --fake-initial
manage.py populate

gosu wirecloud /usr/local/bin/gunicorn wirecloud_instance.wsgi:application --forwarded-allow-ips "${FORWARDED_ALLOW_IPS}" -w 2 -b :8000
# allow the container to be started with `--user`
if [ "$(id -u)" = '0' ]; then
gosu wirecloud /usr/local/bin/gunicorn wirecloud_instance.wsgi:application --forwarded-allow-ips "${FORWARDED_ALLOW_IPS}" -w 2 -b :8000
else
/usr/local/bin/gunicorn wirecloud_instance.wsgi:application --forwarded-allow-ips "${FORWARDED_ALLOW_IPS}" -w 2 -b :8000
fi
;;
esac
6 changes: 5 additions & 1 deletion 1.2/manage.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
#!/usr/bin/env bash
cd /opt/wirecloud_instance
gosu wirecloud python manage.py $@
if [ "$(id -u)" = '0' ]; then
gosu wirecloud python manage.py $@
else
python manage.py $@
fi
38 changes: 38 additions & 0 deletions 1.2/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

# Copyright (c) 2018 Future Internet Consulting and Development Solutions S.L.

import grp
import pwd
import os
import shutil
import time
Expand Down Expand Up @@ -212,5 +214,41 @@ def test_login_should_redirect_to_idm(self):
self.assertEqual(parameters['redirect_uri'], ['http://localhost/complete/fiware/'])


class CustomUserTests(unittest.TestCase, WireCloudTests):

@classmethod
def setUpClass(cls):
print("\n################################################################################\n")
print("#")
print("# Initializing custom user test case")
print("#\n")

sh.adduser("mycustomuser", system=True, group=True, shell="/bin/bash")
uid = pwd.getpwnam("mycustomuser").pw_uid
gid = grp.getgrnam("mycustomuser").gr_gid
os.mkdir('wirecloud-data', 0o700)
os.chown('wirecloud-data', uid, gid)
os.mkdir('wirecloud-static', 0o700)
os.chown('wirecloud-static', uid, gid)

env = {}
env.update(os.environ)
env["WIRECLOUD_USER"] = "{}".format(uid)
sh.docker_compose("-f", "docker-compose-custom-user.yml", "up", d=True, remove_orphans=True, _env=env, _fg=True)
wait_until_running()
print()

@classmethod
def tearDownClass(cls):
print()
print("#")
print("# Removing containers and volumes")
print("#\n")
sh.docker_compose.down(remove_orphans=True, v=True, _fg=True)
shutil.rmtree('wirecloud-data')
shutil.rmtree('wirecloud-static')
print()


if __name__ == "__main__":
unittest.main(verbosity=2)
17 changes: 17 additions & 0 deletions dev/docker-compose-custom-user.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: "3"

services:

wirecloud:
restart: always
image: fiware/wirecloud:dev
# If you want to use a user from the host, provide here the id of the
# user, e.g. `export WIRECLOUD_USER=$(id -u username)`
user: ${WIRECLOUD_USER:-0}
ports:
- 80:8000
environment:
- DEBUG=True
volumes:
- ./wirecloud-data:/opt/wirecloud_instance/data
- ./wirecloud-static:/var/www/static
7 changes: 6 additions & 1 deletion dev/docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ case "$1" in
manage.py migrate --fake-initial
manage.py populate

gosu wirecloud /usr/local/bin/gunicorn wirecloud_instance.wsgi:application --forwarded-allow-ips "${FORWARDED_ALLOW_IPS}" -w 2 -b :8000
# allow the container to be started with `--user`
if [ "$(id -u)" = '0' ]; then
gosu wirecloud /usr/local/bin/gunicorn wirecloud_instance.wsgi:application --forwarded-allow-ips "${FORWARDED_ALLOW_IPS}" -w 2 -b :8000
else
/usr/local/bin/gunicorn wirecloud_instance.wsgi:application --forwarded-allow-ips "${FORWARDED_ALLOW_IPS}" -w 2 -b :8000
fi
;;
esac
6 changes: 5 additions & 1 deletion dev/manage.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
#!/usr/bin/env bash
cd /opt/wirecloud_instance
gosu wirecloud python manage.py $@
if [ "$(id -u)" = '0' ]; then
gosu wirecloud python manage.py $@
else
python manage.py $@
fi
38 changes: 38 additions & 0 deletions dev/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

# Copyright (c) 2018 Future Internet Consulting and Development Solutions S.L.

import grp
import pwd
import os
import shutil
import time
Expand Down Expand Up @@ -212,5 +214,41 @@ def test_login_should_redirect_to_idm(self):
self.assertEqual(parameters['redirect_uri'], ['http://localhost/complete/fiware/'])


class CustomUserTests(unittest.TestCase, WireCloudTests):

@classmethod
def setUpClass(cls):
print("\n################################################################################\n")
print("#")
print("# Initializing custom user test case")
print("#\n")

sh.adduser("mycustomuser", system=True, group=True, shell="/bin/bash")
uid = pwd.getpwnam("mycustomuser").pw_uid
gid = grp.getgrnam("mycustomuser").gr_gid
os.mkdir('wirecloud-data', 0o700)
os.chown('wirecloud-data', uid, gid)
os.mkdir('wirecloud-static', 0o700)
os.chown('wirecloud-static', uid, gid)

env = {}
env.update(os.environ)
env["WIRECLOUD_USER"] = "{}".format(uid)
sh.docker_compose("-f", "docker-compose-custom-user.yml", "up", d=True, remove_orphans=True, _env=env, _fg=True)
wait_until_running()
print()

@classmethod
def tearDownClass(cls):
print()
print("#")
print("# Removing containers and volumes")
print("#\n")
sh.docker_compose.down(remove_orphans=True, v=True, _fg=True)
shutil.rmtree('wirecloud-data')
shutil.rmtree('wirecloud-static')
print()


if __name__ == "__main__":
unittest.main(verbosity=2)