diff --git a/.dockerignore b/.dockerignore index 7b4d4ba2..e69de29b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +0,0 @@ -static diff --git a/.gitignore b/.gitignore index 7094d033..f512932c 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,5 @@ venv.bak/ static/org.geppetto.frontend pygeppetto_server/ +tags +pygeppetto-django diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..5d3ee3fe --- /dev/null +++ b/Makefile @@ -0,0 +1,92 @@ +install: create-db install-frontend install-backend + @echo "===========================" + @echo "= Finished =" + @echo "===========================" + +install-frontend: + @echo "===========================" + @echo "= Install frontend =" + @echo "===========================" + @./service/scripts/install-frontend.sh + +install-backend: + @echo "===========================" + @echo "= Install backend =" + @echo "===========================" + @./service/scripts/install-backend.sh + +install-backend-with-env: + @echo "===========================" + @echo "= Install backend =" + @echo "===========================" + @./service/scripts/install-backend.sh -v + +create-db: + @echo "===========================" + @echo "= Create database =" + @echo "===========================" + @./service/scripts/db-create-psql.sh + +run-dev: migrate generate-tags + make run-django & \ + make run-frontend + +django-migrate: make-migrations migrate + +make-migrations: + ./manage.py makemigrations + +migrate: + ./manage.py migrate + +run-django: + ./manage.py runserver + +run-frontend: + cd static/org.geppetto.frontend/src/main/webapp/; npm run build-dev-noTest:watch; + +lint: flake8-lint isort-lint yapf-lint + +format: yapf-format isort-format + +flake8-lint: + flake8 . + +isort-lint: + isort --check-only --diff --recursive . + +isort-format: + isort --recursive . + +yapf-format: + yapf -i -r --style .style.yapf -p -e "*/migrations/*.py" -e "env" -e "*/settings.py" . + +yapf-lint: + yapf -d -r --style .style.yapf -e "*/migrations/*.py" -e "env" -e "*/settings.py" . + +generate-tags: + ctags -R --exclude=.git --exclude=node_modules --exclude=dist --exclude=env . + +build-scidash: + @echo "===========================" + @echo "= Build scidash =" + @echo "===========================" + @./service/scripts/build-image-scidash.sh + +build-scidash-db: + @echo "===========================" + @echo "= Build scidash db =" + @echo "===========================" + @./service/scripts/build-image-db.sh + +push-scidash: + @echo "===========================" + @echo "= Push scidash image =" + @echo "===========================" + @./service/scripts/push-image-scidash.sh + +push-scidash-db: + @echo "===========================" + @echo "= Push scidash db image =" + @echo "===========================" + @./service/scripts/push-image-scidash-db.sh diff --git a/README.md b/README.md index 7c2c5045..24cdc94c 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,9 @@ SciDash is a geppetto / django-based client-server web application. ## Installation +We recommend you to use a virtual environment for the installation, so you can keep all the dependencies within that environment. + **Dependencies** -``` -pip install pygeppetto-django -``` *Install Redis server (for the sockets communication)* ``` @@ -26,82 +25,37 @@ For OS X: brew install redis ``` +*Install PostgreSQL server* +- [instructions](https://www.postgresql.org/download/linux/ubuntu/) for Ubuntu +- [application](https://postgresapp.com/) for MacOS + **Install SciDash** ``` git clone https://github.com/MetaCell/scidash cd scidash -pip install -r requirements.txt -mkdir static -cd static -git clone https://github.com/openworm/org.geppetto.frontend -cd org.geppetto.frontend/src/main/webapp -npm install -npm run build-dev-noTest -``` -Optional for development to enable dynamic refresh of client code when editing html/js/css: +make install ``` -npm run build-dev-noTest:watch -``` - -Also you should create an .env file in the project root, an example can be found in the folder: deploy/dotenv. - -**Install SciDash Geppetto Extension** -Clone the Geppetto SciDash extension into the extensions folder -``` -cd org.geppetto.frontend/src/main/webapp/extensions -git clone https://github.com/MetaCell/geppetto-scidash.git -``` +Also you should create an .env file in the project root, an example can be found in the folder: service/dotenv. -Then edit [GeppettoConfiguration.json](https://github.com/openworm/org.geppetto.frontend/blob/master/src/main/webapp/GeppettoConfiguration.json) to look like this: -``` -{ - "_README": "http://docs.geppetto.org/en/latest/build.html", - "contextPath": "org.geppetto.frontend", - "useSsl": false, - "embedded": false, - "embedderURL": ["/"], - "rootRedirect": "", - "noTest": false, - "extensions": { - "geppetto-default/ComponentsInitialization": false, - "geppetto-scidash/ComponentsInitialization": true - }, - "themes": { - "geppetto-default/colors": false, - "geppetto-scidash/styles/colors": true - }, - "properties": { - "title": "SciDash", - "description": "SciDash is a project that enables the reproducible execution and visualization of data-driven unit test for assessing model quality.", - "type": "website", - "url": "http://scidash.github.io/", - "icon": "http://scidash.github.io/assets/icons/favicon-32x32.png", - "image": "http://scidash.github.io/assets/scidash-text.png" - } -} -``` - -**Install Database** - -1. Install PostgreSQL server: [instructions](https://www.postgresql.org/download/linux/ubuntu/) for Ubuntu, [application](https://postgresapp.com/) for MacOS -2. Run: +**Configure Database** +Run: ``` # navigate to scidash root folder -cd deploy/scripts +cd service/scripts # impersonate postgres user (may not be necessary depending on your access rights) su postgres # run db creation script located in the scidash folder ./db_create_psql.sh # to return to your shell user only necessary if you used su logout -./manage.py migrate +make django-migrate ``` ## Start the server ``` -python manage.py runserver +make run-dev ``` Go to http://localhost:8000/ and enjoy! @@ -109,7 +63,7 @@ Go to http://localhost:8000/ and enjoy! ## Deployment -For scidash test deployment there are configurations in deploy folder `$PROJECT_ROOT/deploy/kubernetes/scidash` +For scidash test deployment there are configurations in deploy folder `$PROJECT_ROOT/service/kubernetes/scidash` What is what: @@ -230,10 +184,3 @@ Also codefresh repository requires especial secret for pulling images: imagePullSecrets: - name: codefresh-generated-r.cfcr.io-cfcr-scidash-testing ``` - -You can create it here: - - - - - diff --git a/deploy/build-all.sh b/deploy/build-all.sh deleted file mode 100755 index 5275654a..00000000 --- a/deploy/build-all.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -echo "Input db image version ('latest' by default): " - -read dbtag - -echo "Input scidash image version ('latest' by default): " - -read scidashtag - -./deploy/scripts/build-image-db.sh $dbtag -./deploy/scripts/build-image-scidash.sh $scidashtag diff --git a/deploy/docker/Dockerfile-postgres b/deploy/docker/Dockerfile-postgres deleted file mode 100644 index 905e8048..00000000 --- a/deploy/docker/Dockerfile-postgres +++ /dev/null @@ -1,3 +0,0 @@ -FROM postgres:9.4 - -ADD ./deploy/scripts/db-create-psql.sh /docker-entrypoint-initdb.d/db-create-psql.sh diff --git a/deploy/docker/Dockerfile-scidash b/deploy/docker/Dockerfile-scidash deleted file mode 100644 index bcfa23af..00000000 --- a/deploy/docker/Dockerfile-scidash +++ /dev/null @@ -1,68 +0,0 @@ -FROM python:3.6 - -# BUILD VARIABLES - -ARG ROOT=/ -ARG APP_DIR=/app -ARG GEPPETTO_REPO='https://github.com/openworm/org.geppetto.frontend.git -b griddle-update' -ARG SCIDASH_EXTENSION_REPO='https://github.com/MetaCell/geppetto-scidash.git -b refactoring' -ARG VENV_PATH=/venv -ARG DOTENV_FILE=env-docker -ARG STATIC_DIR=$APP_DIR/static -ARG GEPPETTO_DIR=$STATIC_DIR/org.geppetto.frontend/src/main/webapp -ARG EXTENSION_DIR=$GEPPETTO_DIR/extensions - -WORKDIR $ROOT - -# PYTHON INSTALL -RUN pip install virtualenv -RUN virtualenv -p python3 $VENV_PATH -ENV PATH $VENV_PATH/bin:$PATH -ENV PYTHONUNBUFFERED 1 - -# CREATING PROJECT FOLDERS - -RUN mkdir $APP_DIR - -#COPYING PROJECT - -WORKDIR $APP_DIR -ADD . $APP_DIR - -# INSTALLING REQUIREMENTS - -RUN pip install -r $APP_DIR/requirements.txt -RUN apt-get install curl -RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -RUN apt-get update && apt-get install nodejs - -WORKDIR /tmp - -RUN git clone https://github.com/MetaCell/pygeppetto-django.git -b development-roman -WORKDIR pygeppetto-django -RUN pip install -e . - -# CLONING FRONTEND - -WORKDIR $APP_DIR -RUN mkdir $STATIC_DIR -WORKDIR $STATIC_DIR - -RUN git clone $GEPPETTO_REPO -WORKDIR $EXTENSION_DIR -RUN git clone $SCIDASH_EXTENSION_REPO - -RUN git branch -RUN git log - -WORKDIR $GEPPETTO_DIR -COPY ./deploy/geppetto/GeppettoConfiguration.json $GEPPETTO_DIR/GeppettoConfiguration.json -RUN npm install -RUN npm run build-dev-noTest - - -WORKDIR $APP_DIR -COPY ./deploy/dotenv/env-docker $APP_DIR/.env - - -CMD ./deploy/scripts/run.sh diff --git a/deploy/push-all.sh b/deploy/push-all.sh deleted file mode 100755 index 4ea5b837..00000000 --- a/deploy/push-all.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -echo "Input db image version ('latest' by default): " - -read dbtag - -echo "Input scidash image version ('latest' by default): " - -read scidashtag - -if [ -z "$1" ] -then - docker push metacell/scidash-db - docker push metacell/scidash -else - docker push metacell/scidash-db:$dbtag - docker push metacell/scidash:$scidashtag -fi - diff --git a/deploy/scripts/build-image-scidash.sh b/deploy/scripts/build-image-scidash.sh deleted file mode 100755 index 0274b576..00000000 --- a/deploy/scripts/build-image-scidash.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -if [ -z "$1" ] -then - version="latest" -else - version=$1 -fi - -tag="metacell/scidash:$version" -directory="." -dockerfile="./deploy/docker/Dockerfile-scidash" - -docker build -t $tag -f $dockerfile $directory diff --git a/deploy/scripts/run.sh b/deploy/scripts/run.sh deleted file mode 100755 index 0e19789b..00000000 --- a/deploy/scripts/run.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -python manage.py migrate -cat create_superuser.py | ./manage.py shell -python manage.py runserver 0.0.0.0:8000 diff --git a/docker-compose.yml b/docker-compose.yml index be036fc4..d1e9b793 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ services: ports: - 5432:5432 scidash: - image: metacell/scidash:3.0.0 + image: metacell/scidash:3.1.1 ports: - 80:8000 depends_on: diff --git a/dump.rdb b/dump.rdb deleted file mode 100644 index a8cd49eb..00000000 Binary files a/dump.rdb and /dev/null differ diff --git a/manage.py b/manage.py index 6cdcbfe7..7a7bffb5 100755 --- a/manage.py +++ b/manage.py @@ -3,7 +3,7 @@ import sys if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "scidash.settings") + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "scidash.main.settings") from django.core.management import execute_from_command_line diff --git a/general/__init__.py b/scidash/general/__init__.py similarity index 100% rename from general/__init__.py rename to scidash/general/__init__.py diff --git a/general/admin.py b/scidash/general/admin.py similarity index 76% rename from general/admin.py rename to scidash/general/admin.py index 8fc41a42..086dd8c4 100644 --- a/general/admin.py +++ b/scidash/general/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin from django.contrib.auth.admin import UserAdmin -from general.models import ScidashUser +from scidash.general.models import ScidashUser # Register your models here. diff --git a/general/apps.py b/scidash/general/apps.py similarity index 100% rename from general/apps.py rename to scidash/general/apps.py diff --git a/general/migrations/0001_initial.py b/scidash/general/migrations/0001_initial.py similarity index 100% rename from general/migrations/0001_initial.py rename to scidash/general/migrations/0001_initial.py diff --git a/general/migrations/0002_auto_20171206_1554.py b/scidash/general/migrations/0002_auto_20171206_1554.py similarity index 100% rename from general/migrations/0002_auto_20171206_1554.py rename to scidash/general/migrations/0002_auto_20171206_1554.py diff --git a/general/migrations/0003_auto_20180124_2257.py b/scidash/general/migrations/0003_auto_20180124_2257.py similarity index 100% rename from general/migrations/0003_auto_20180124_2257.py rename to scidash/general/migrations/0003_auto_20180124_2257.py diff --git a/general/migrations/0004_auto_20180215_1313.py b/scidash/general/migrations/0004_auto_20180215_1313.py similarity index 100% rename from general/migrations/0004_auto_20180215_1313.py rename to scidash/general/migrations/0004_auto_20180215_1313.py diff --git a/general/migrations/0005_auto_20180403_1533.py b/scidash/general/migrations/0005_auto_20180403_1533.py similarity index 100% rename from general/migrations/0005_auto_20180403_1533.py rename to scidash/general/migrations/0005_auto_20180403_1533.py diff --git a/general/migrations/0005_auto_20180404_1607.py b/scidash/general/migrations/0005_auto_20180404_1607.py similarity index 100% rename from general/migrations/0005_auto_20180404_1607.py rename to scidash/general/migrations/0005_auto_20180404_1607.py diff --git a/general/migrations/0006_merge_20180404_1612.py b/scidash/general/migrations/0006_merge_20180404_1612.py similarity index 100% rename from general/migrations/0006_merge_20180404_1612.py rename to scidash/general/migrations/0006_merge_20180404_1612.py diff --git a/general/migrations/__init__.py b/scidash/general/migrations/__init__.py similarity index 100% rename from general/migrations/__init__.py rename to scidash/general/migrations/__init__.py diff --git a/general/mixins.py b/scidash/general/mixins.py similarity index 100% rename from general/mixins.py rename to scidash/general/mixins.py diff --git a/general/models.py b/scidash/general/models.py similarity index 100% rename from general/models.py rename to scidash/general/models.py diff --git a/general/serializers.py b/scidash/general/serializers.py similarity index 78% rename from general/serializers.py rename to scidash/general/serializers.py index 513a6e94..d60ad525 100644 --- a/general/serializers.py +++ b/scidash/general/serializers.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from general.models import ScidashUser +from scidash.general.models import ScidashUser class ScidashUserSerializer(serializers.ModelSerializer): diff --git a/general/tests.py b/scidash/general/tests.py similarity index 100% rename from general/tests.py rename to scidash/general/tests.py diff --git a/general/urls.py b/scidash/general/urls.py similarity index 72% rename from general/urls.py rename to scidash/general/urls.py index 8ec4daf5..2db35941 100644 --- a/general/urls.py +++ b/scidash/general/urls.py @@ -1,5 +1,5 @@ from django.conf.urls import url -from general.views import FileUploadView +from scidash.general.views import FileUploadView urlpatterns = [ url(r'^upload/(?P[^/]+)$', FileUploadView.as_view()) diff --git a/general/views.py b/scidash/general/views.py similarity index 94% rename from general/views.py rename to scidash/general/views.py index dfbcbfa8..b6bf25ad 100644 --- a/general/views.py +++ b/scidash/general/views.py @@ -5,7 +5,7 @@ from rest_framework.parsers import MultiPartParser from rest_framework.response import Response -from sciunittests.serializers import ScoreInstanceSerializer +from scidash.sciunittests.serializers import ScoreInstanceSerializer class FileUploadView(APIView): diff --git a/scidash/api/__init__.py b/scidash/main/__init__.py similarity index 100% rename from scidash/api/__init__.py rename to scidash/main/__init__.py diff --git a/sciunitmodels/__init__.py b/scidash/main/api/__init__.py similarity index 100% rename from sciunitmodels/__init__.py rename to scidash/main/api/__init__.py diff --git a/scidash/api/views.py b/scidash/main/api/views.py similarity index 100% rename from scidash/api/views.py rename to scidash/main/api/views.py diff --git a/scidash/routing.py b/scidash/main/routing.py similarity index 100% rename from scidash/routing.py rename to scidash/main/routing.py diff --git a/scidash/settings.py b/scidash/main/settings.py similarity index 91% rename from scidash/settings.py rename to scidash/main/settings.py index 2c947464..3c7be33e 100644 --- a/scidash/settings.py +++ b/scidash/main/settings.py @@ -15,10 +15,15 @@ import datetime # Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +BASE_DIR = os.path.dirname( + os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +) -dotenv.read_dotenv(os.path.join(os.path.dirname(os.path.dirname(__file__)), - '.env')) +dotenv.read_dotenv( + os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(__file__))), '.env' + ) +) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/ @@ -55,9 +60,9 @@ ] SCIDASH_APPS = [ - 'sciunitmodels.apps.SciunitmodelsConfig', - 'sciunittests.apps.SciunittestsConfig', - 'general.apps.GeneralConfig', + 'scidash.sciunitmodels', + 'scidash.sciunittests', + 'scidash.general', ] INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + SCIDASH_APPS @@ -84,7 +89,7 @@ ] } -ROOT_URLCONF = 'scidash.urls' +ROOT_URLCONF = 'scidash.main.urls' TEMPLATES = [ { @@ -102,7 +107,7 @@ }, ] -ASGI_APPLICATION = 'scidash.routing.application' +ASGI_APPLICATION = 'scidash.main.routing.application' # Database # https://docs.djangoproject.com/en/1.9/ref/settings/#databases @@ -170,4 +175,4 @@ GEPPETTO_SERVLET_URL = 'ws://localhost:8080/org.geppetto.frontend/GeppettoServlet' GEPPETTO_BASE_URL = 'http://localhost:8080/org.geppetto.frontend/geppetto' -ACCEPTABLE_SCORE_INSTANCES_AMOUNT = 30 +ACCEPTABLE_SCORE_INSTANCES_AMOUNT = 50 diff --git a/scidash/urls.py b/scidash/main/urls.py similarity index 90% rename from scidash/urls.py rename to scidash/main/urls.py index 0f8b550b..66d051ac 100644 --- a/scidash/urls.py +++ b/scidash/main/urls.py @@ -16,9 +16,9 @@ """ from django.conf.urls import include, url from django.contrib import admin -from sciunitmodels.api import views as models_views -from sciunittests.api import views as tests_views -from sciunittests.views import DateRangeView +from scidash.sciunitmodels.api import views as models_views +from scidash.sciunittests.api import views as tests_views +from scidash.sciunittests.views import DateRangeView from rest_framework.routers import DefaultRouter from rest_framework_jwt.views import obtain_jwt_token @@ -51,7 +51,7 @@ url(r'^admin/', admin.site.urls), url(r'^api/login/', obtain_jwt_token), url(r'^', include('pygeppetto_server.urls')), - url(r'^data/', include('general.urls')), + url(r'^data/', include('scidash.general.urls')), url(r'^api/date-range', DateRangeView.as_view(), name='date-range-view'), url(r'^api/', include(router.urls)) ] diff --git a/scidash/wsgi.py b/scidash/main/wsgi.py similarity index 100% rename from scidash/wsgi.py rename to scidash/main/wsgi.py diff --git a/sciunitmodels/api/__init__.py b/scidash/sciunitmodels/__init__.py similarity index 100% rename from sciunitmodels/api/__init__.py rename to scidash/sciunitmodels/__init__.py diff --git a/sciunitmodels/admin.py b/scidash/sciunitmodels/admin.py similarity index 67% rename from sciunitmodels/admin.py rename to scidash/sciunitmodels/admin.py index de5afc02..aa98a5e0 100644 --- a/sciunitmodels/admin.py +++ b/scidash/sciunitmodels/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from sciunitmodels.models import ModelClass, ModelInstance, Capability +from scidash.sciunitmodels.models import ModelClass, ModelInstance, Capability # Register your models here. diff --git a/sciunitmodels/migrations/__init__.py b/scidash/sciunitmodels/api/__init__.py similarity index 100% rename from sciunitmodels/migrations/__init__.py rename to scidash/sciunitmodels/api/__init__.py diff --git a/sciunitmodels/api/views.py b/scidash/sciunitmodels/api/views.py similarity index 82% rename from sciunitmodels/api/views.py rename to scidash/sciunitmodels/api/views.py index d101af23..fb753484 100644 --- a/sciunitmodels/api/views.py +++ b/scidash/sciunitmodels/api/views.py @@ -1,10 +1,10 @@ from rest_framework import viewsets, permissions -from sciunitmodels.serializers import CapabilitySerializer, \ +from scidash.sciunitmodels.serializers import CapabilitySerializer, \ ModelClassSerializer, \ ModelInstanceSerializer -from sciunitmodels.models import Capability, ModelClass, ModelInstance +from scidash.sciunitmodels.models import Capability, ModelClass, ModelInstance class CapabilityViewSet(viewsets.ReadOnlyModelViewSet): diff --git a/sciunitmodels/apps.py b/scidash/sciunitmodels/apps.py similarity index 100% rename from sciunitmodels/apps.py rename to scidash/sciunitmodels/apps.py diff --git a/sciunitmodels/migrations/0001_initial.py b/scidash/sciunitmodels/migrations/0001_initial.py similarity index 100% rename from sciunitmodels/migrations/0001_initial.py rename to scidash/sciunitmodels/migrations/0001_initial.py diff --git a/sciunitmodels/migrations/0002_auto_20171226_1339.py b/scidash/sciunitmodels/migrations/0002_auto_20171226_1339.py similarity index 100% rename from sciunitmodels/migrations/0002_auto_20171226_1339.py rename to scidash/sciunitmodels/migrations/0002_auto_20171226_1339.py diff --git a/sciunitmodels/migrations/0003_auto_20180227_1301.py b/scidash/sciunitmodels/migrations/0003_auto_20180227_1301.py similarity index 100% rename from sciunitmodels/migrations/0003_auto_20180227_1301.py rename to scidash/sciunitmodels/migrations/0003_auto_20180227_1301.py diff --git a/sciunitmodels/migrations/0004_auto_20180301_1540.py b/scidash/sciunitmodels/migrations/0004_auto_20180301_1540.py similarity index 100% rename from sciunitmodels/migrations/0004_auto_20180301_1540.py rename to scidash/sciunitmodels/migrations/0004_auto_20180301_1540.py diff --git a/sciunitmodels/migrations/0005_modelinstance_backend.py b/scidash/sciunitmodels/migrations/0005_modelinstance_backend.py similarity index 100% rename from sciunitmodels/migrations/0005_modelinstance_backend.py rename to scidash/sciunitmodels/migrations/0005_modelinstance_backend.py diff --git a/sciunitmodels/migrations/0006_modelinstance_hash_id.py b/scidash/sciunitmodels/migrations/0006_modelinstance_hash_id.py similarity index 100% rename from sciunitmodels/migrations/0006_modelinstance_hash_id.py rename to scidash/sciunitmodels/migrations/0006_modelinstance_hash_id.py diff --git a/sciunitmodels/migrations/0007_auto_20180525_1008.py b/scidash/sciunitmodels/migrations/0007_auto_20180525_1008.py similarity index 100% rename from sciunitmodels/migrations/0007_auto_20180525_1008.py rename to scidash/sciunitmodels/migrations/0007_auto_20180525_1008.py diff --git a/sciunittests/__init__.py b/scidash/sciunitmodels/migrations/__init__.py similarity index 100% rename from sciunittests/__init__.py rename to scidash/sciunitmodels/migrations/__init__.py diff --git a/sciunitmodels/models.py b/scidash/sciunitmodels/models.py similarity index 100% rename from sciunitmodels/models.py rename to scidash/sciunitmodels/models.py diff --git a/sciunitmodels/serializers.py b/scidash/sciunitmodels/serializers.py similarity index 79% rename from sciunitmodels/serializers.py rename to scidash/sciunitmodels/serializers.py index c07924d1..1f69cb51 100644 --- a/sciunitmodels/serializers.py +++ b/scidash/sciunitmodels/serializers.py @@ -3,8 +3,8 @@ from rest_framework_cache.serializers import CachedSerializerMixin from rest_framework_cache.registry import cache_registry -from sciunitmodels.models import Capability, ModelClass, ModelInstance -from general.mixins import GetByKeyOrCreateMixin +from scidash.sciunitmodels.models import Capability, ModelClass, ModelInstance +from scidash.general.mixins import GetByKeyOrCreateMixin class CapabilitySerializer(GetByKeyOrCreateMixin, @@ -46,6 +46,6 @@ class Meta: model = ModelInstance fields = '__all__' -# cache_registry.register(CapabilitySerializer) -# cache_registry.register(ModelClassSerializer) -# cache_registry.register(ModelInstanceSerializer) +cache_registry.register(CapabilitySerializer) +cache_registry.register(ModelClassSerializer) +cache_registry.register(ModelInstanceSerializer) diff --git a/sciunittests/api/__init__.py b/scidash/sciunitmodels/tests/__init__.py similarity index 100% rename from sciunittests/api/__init__.py rename to scidash/sciunitmodels/tests/__init__.py diff --git a/test_data/score_object.json b/scidash/sciunitmodels/tests/test_data/score_object.json similarity index 100% rename from test_data/score_object.json rename to scidash/sciunitmodels/tests/test_data/score_object.json diff --git a/sciunitmodels/tests.py b/scidash/sciunitmodels/tests/test_sciunit_models.py similarity index 95% rename from sciunitmodels/tests.py rename to scidash/sciunitmodels/tests/test_sciunit_models.py index 64b70412..3d117f9a 100644 --- a/sciunitmodels/tests.py +++ b/scidash/sciunitmodels/tests/test_sciunit_models.py @@ -3,12 +3,12 @@ from django.test import TestCase, Client, RequestFactory from django.urls import reverse -from general.models import ScidashUser +from scidash.general.models import ScidashUser -from sciunittests.serializers import ScoreInstanceSerializer -from sciunitmodels.serializers import ModelClassSerializer +from scidash.sciunittests.serializers import ScoreInstanceSerializer +from scidash.sciunitmodels.serializers import ModelClassSerializer -SAMPLE_FILE = os.path.join(os.path.dirname(os.path.dirname(__file__)), +SAMPLE_FILE = os.path.join(os.path.dirname(__file__), 'test_data/score_object.json') @@ -152,3 +152,4 @@ def test_is_model_class_match_the_same_object(self): parsed_response = response.json() self.assertEqual(len(parsed_response), 1) + diff --git a/sciunitmodels/views.py b/scidash/sciunitmodels/views.py similarity index 100% rename from sciunitmodels/views.py rename to scidash/sciunitmodels/views.py diff --git a/sciunittests/migrations/__init__.py b/scidash/sciunittests/__init__.py similarity index 100% rename from sciunittests/migrations/__init__.py rename to scidash/sciunittests/__init__.py diff --git a/sciunittests/admin.py b/scidash/sciunittests/admin.py similarity index 85% rename from sciunittests/admin.py rename to scidash/sciunittests/admin.py index 9bc24319..3b114ec8 100644 --- a/sciunittests/admin.py +++ b/scidash/sciunittests/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from sciunittests.models import ScoreInstance, TestInstance, TestClass, TestSuite +from scidash.sciunittests.models import ScoreInstance, TestInstance, TestClass, TestSuite # Register your models here. diff --git a/scidash/sciunittests/api/__init__.py b/scidash/sciunittests/api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sciunittests/api/views.py b/scidash/sciunittests/api/views.py similarity index 88% rename from sciunittests/api/views.py rename to scidash/sciunittests/api/views.py index 976baf43..4c7be806 100644 --- a/sciunittests/api/views.py +++ b/scidash/sciunittests/api/views.py @@ -1,14 +1,14 @@ from rest_framework import viewsets, permissions -from sciunittests.serializers import ScoreInstanceSerializer, \ +from scidash.sciunittests.serializers import ScoreInstanceSerializer, \ TestInstanceSerializer, \ TestSuiteSerializer, TestClassSerializer, \ ScoreClassSerializer -from sciunittests.models import ScoreInstance, \ +from scidash.sciunittests.models import ScoreInstance, \ TestInstance, TestSuite, TestClass, \ ScoreClass -from sciunittests.filters import ScoreFilter, TestSuiteFilter, \ +from scidash.sciunittests.filters import ScoreFilter, TestSuiteFilter, \ TestInstanceFilter diff --git a/sciunittests/apps.py b/scidash/sciunittests/apps.py similarity index 100% rename from sciunittests/apps.py rename to scidash/sciunittests/apps.py diff --git a/sciunittests/filters.py b/scidash/sciunittests/filters.py similarity index 97% rename from sciunittests/filters.py rename to scidash/sciunittests/filters.py index 1239c1fc..1c91e314 100644 --- a/sciunittests/filters.py +++ b/scidash/sciunittests/filters.py @@ -1,7 +1,7 @@ from django.db.models import Count, Subquery, Q from django_filters import rest_framework as filters -from sciunittests.models import ScoreInstance, TestSuite, TestInstance +from scidash.sciunittests.models import ScoreInstance, TestSuite, TestInstance class ScoreFilter(filters.FilterSet): diff --git a/sciunittests/migrations/0001_initial.py b/scidash/sciunittests/migrations/0001_initial.py similarity index 100% rename from sciunittests/migrations/0001_initial.py rename to scidash/sciunittests/migrations/0001_initial.py diff --git a/sciunittests/migrations/0002_auto_20171226_1339.py b/scidash/sciunittests/migrations/0002_auto_20171226_1339.py similarity index 100% rename from sciunittests/migrations/0002_auto_20171226_1339.py rename to scidash/sciunittests/migrations/0002_auto_20171226_1339.py diff --git a/sciunittests/migrations/0003_auto_20171226_1757.py b/scidash/sciunittests/migrations/0003_auto_20171226_1757.py similarity index 100% rename from sciunittests/migrations/0003_auto_20171226_1757.py rename to scidash/sciunittests/migrations/0003_auto_20171226_1757.py diff --git a/sciunittests/migrations/0003_auto_20180115_1232.py b/scidash/sciunittests/migrations/0003_auto_20180115_1232.py similarity index 100% rename from sciunittests/migrations/0003_auto_20180115_1232.py rename to scidash/sciunittests/migrations/0003_auto_20180115_1232.py diff --git a/sciunittests/migrations/0004_auto_20180118_1513.py b/scidash/sciunittests/migrations/0004_auto_20180118_1513.py similarity index 100% rename from sciunittests/migrations/0004_auto_20180118_1513.py rename to scidash/sciunittests/migrations/0004_auto_20180118_1513.py diff --git a/sciunittests/migrations/0004_merge_20180119_1445.py b/scidash/sciunittests/migrations/0004_merge_20180119_1445.py similarity index 100% rename from sciunittests/migrations/0004_merge_20180119_1445.py rename to scidash/sciunittests/migrations/0004_merge_20180119_1445.py diff --git a/sciunittests/migrations/0005_auto_20180118_1516.py b/scidash/sciunittests/migrations/0005_auto_20180118_1516.py similarity index 100% rename from sciunittests/migrations/0005_auto_20180118_1516.py rename to scidash/sciunittests/migrations/0005_auto_20180118_1516.py diff --git a/sciunittests/migrations/0006_auto_20180123_1151.py b/scidash/sciunittests/migrations/0006_auto_20180123_1151.py similarity index 100% rename from sciunittests/migrations/0006_auto_20180123_1151.py rename to scidash/sciunittests/migrations/0006_auto_20180123_1151.py diff --git a/sciunittests/migrations/0006_merge_20180119_1504.py b/scidash/sciunittests/migrations/0006_merge_20180119_1504.py similarity index 100% rename from sciunittests/migrations/0006_merge_20180119_1504.py rename to scidash/sciunittests/migrations/0006_merge_20180119_1504.py diff --git a/sciunittests/migrations/0007_merge_20180123_1527.py b/scidash/sciunittests/migrations/0007_merge_20180123_1527.py similarity index 100% rename from sciunittests/migrations/0007_merge_20180123_1527.py rename to scidash/sciunittests/migrations/0007_merge_20180123_1527.py diff --git a/sciunittests/migrations/0007_merge_20180124_2257.py b/scidash/sciunittests/migrations/0007_merge_20180124_2257.py similarity index 100% rename from sciunittests/migrations/0007_merge_20180124_2257.py rename to scidash/sciunittests/migrations/0007_merge_20180124_2257.py diff --git a/sciunittests/migrations/0008_auto_20180124_2257.py b/scidash/sciunittests/migrations/0008_auto_20180124_2257.py similarity index 100% rename from sciunittests/migrations/0008_auto_20180124_2257.py rename to scidash/sciunittests/migrations/0008_auto_20180124_2257.py diff --git a/sciunittests/migrations/0009_merge_20180205_1233.py b/scidash/sciunittests/migrations/0009_merge_20180205_1233.py similarity index 100% rename from sciunittests/migrations/0009_merge_20180205_1233.py rename to scidash/sciunittests/migrations/0009_merge_20180205_1233.py diff --git a/sciunittests/migrations/0009_testsuite_hash.py b/scidash/sciunittests/migrations/0009_testsuite_hash.py similarity index 100% rename from sciunittests/migrations/0009_testsuite_hash.py rename to scidash/sciunittests/migrations/0009_testsuite_hash.py diff --git a/sciunittests/migrations/0010_auto_20180302_0923.py b/scidash/sciunittests/migrations/0010_auto_20180302_0923.py similarity index 100% rename from sciunittests/migrations/0010_auto_20180302_0923.py rename to scidash/sciunittests/migrations/0010_auto_20180302_0923.py diff --git a/sciunittests/migrations/0011_auto_20180309_1229.py b/scidash/sciunittests/migrations/0011_auto_20180309_1229.py similarity index 100% rename from sciunittests/migrations/0011_auto_20180309_1229.py rename to scidash/sciunittests/migrations/0011_auto_20180309_1229.py diff --git a/sciunittests/migrations/0012_merge_20180309_1254.py b/scidash/sciunittests/migrations/0012_merge_20180309_1254.py similarity index 100% rename from sciunittests/migrations/0012_merge_20180309_1254.py rename to scidash/sciunittests/migrations/0012_merge_20180309_1254.py diff --git a/sciunittests/migrations/0013_auto_20180403_1533.py b/scidash/sciunittests/migrations/0013_auto_20180403_1533.py similarity index 100% rename from sciunittests/migrations/0013_auto_20180403_1533.py rename to scidash/sciunittests/migrations/0013_auto_20180403_1533.py diff --git a/sciunittests/migrations/0013_auto_20180404_1607.py b/scidash/sciunittests/migrations/0013_auto_20180404_1607.py similarity index 100% rename from sciunittests/migrations/0013_auto_20180404_1607.py rename to scidash/sciunittests/migrations/0013_auto_20180404_1607.py diff --git a/sciunittests/migrations/0014_merge_20180404_1613.py b/scidash/sciunittests/migrations/0014_merge_20180404_1613.py similarity index 100% rename from sciunittests/migrations/0014_merge_20180404_1613.py rename to scidash/sciunittests/migrations/0014_merge_20180404_1613.py diff --git a/sciunittests/migrations/0015_auto_20180416_1202.py b/scidash/sciunittests/migrations/0015_auto_20180416_1202.py similarity index 100% rename from sciunittests/migrations/0015_auto_20180416_1202.py rename to scidash/sciunittests/migrations/0015_auto_20180416_1202.py diff --git a/sciunittests/migrations/0016_scoreinstance_score_class.py b/scidash/sciunittests/migrations/0016_scoreinstance_score_class.py similarity index 100% rename from sciunittests/migrations/0016_scoreinstance_score_class.py rename to scidash/sciunittests/migrations/0016_scoreinstance_score_class.py diff --git a/sciunittests/migrations/0017_auto_20180425_1811.py b/scidash/sciunittests/migrations/0017_auto_20180425_1811.py similarity index 100% rename from sciunittests/migrations/0017_auto_20180425_1811.py rename to scidash/sciunittests/migrations/0017_auto_20180425_1811.py diff --git a/sciunittests/migrations/0018_testinstance_hash_id.py b/scidash/sciunittests/migrations/0018_testinstance_hash_id.py similarity index 100% rename from sciunittests/migrations/0018_testinstance_hash_id.py rename to scidash/sciunittests/migrations/0018_testinstance_hash_id.py diff --git a/sciunittests/migrations/0019_auto_20180525_1008.py b/scidash/sciunittests/migrations/0019_auto_20180525_1008.py similarity index 100% rename from sciunittests/migrations/0019_auto_20180525_1008.py rename to scidash/sciunittests/migrations/0019_auto_20180525_1008.py diff --git a/sciunittests/migrations/0020_auto_20180812_1634.py b/scidash/sciunittests/migrations/0020_auto_20180812_1634.py similarity index 100% rename from sciunittests/migrations/0020_auto_20180812_1634.py rename to scidash/sciunittests/migrations/0020_auto_20180812_1634.py diff --git a/scidash/sciunittests/migrations/0021_auto_20181203_1227.py b/scidash/sciunittests/migrations/0021_auto_20181203_1227.py new file mode 100644 index 00000000..a778c4a5 --- /dev/null +++ b/scidash/sciunittests/migrations/0021_auto_20181203_1227.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.7 on 2018-12-03 12:27 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('sciunittests', '0020_auto_20180812_1634'), + ] + + operations = [ + migrations.AlterField( + model_name='scoreinstance', + name='timestamp', + field=models.DateField(default=django.utils.timezone.now), + ), + migrations.AlterField( + model_name='testinstance', + name='timestamp', + field=models.DateField(default=django.utils.timezone.now), + ), + migrations.AlterField( + model_name='testsuite', + name='timestamp', + field=models.DateField(default=django.utils.timezone.now), + ), + ] diff --git a/scidash/sciunittests/migrations/__init__.py b/scidash/sciunittests/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sciunittests/models.py b/scidash/sciunittests/models.py similarity index 92% rename from sciunittests/models.py rename to scidash/sciunittests/models.py index 3cfc1932..33b84752 100644 --- a/sciunittests/models.py +++ b/scidash/sciunittests/models.py @@ -4,8 +4,8 @@ from django.contrib.postgres.fields import JSONField, HStoreField from django.utils import timezone -import sciunitmodels -from general import models as general_models +import scidash.sciunitmodels as sciunitmodels +from scidash.general import models as general_models logger = logging.getLogger(__name__) @@ -13,7 +13,7 @@ class TestSuite(models.Model): name = models.CharField(max_length=50) hash = models.CharField(max_length=57, null=True, blank=True) - timestamp = models.DateTimeField(default=timezone.now) + timestamp = models.DateField(default=timezone.now) owner = models.ForeignKey(general_models.ScidashUser, default=None) class Meta: @@ -42,7 +42,7 @@ class TestInstance(models.Model): test_suites = models.ManyToManyField(TestSuite, related_name='tests') description = models.TextField(blank=True, null=True) verbose = models.IntegerField(default=0) - timestamp = models.DateTimeField(default=timezone.now) + timestamp = models.DateField(default=timezone.now) hash_id = models.CharField(max_length=100) hostname = models.CharField(max_length=200, default='', blank=True, null=True) @@ -83,7 +83,7 @@ class ScoreInstance(models.Model): hash_id = models.CharField(max_length=100) summary = models.CharField(max_length=200, default=None, blank=True, null=True) - timestamp = models.DateTimeField(default=timezone.now) + timestamp = models.DateField(default=timezone.now) owner = models.ForeignKey(general_models.ScidashUser, default=None) @property diff --git a/sciunittests/serializers.py b/scidash/sciunittests/serializers.py similarity index 74% rename from sciunittests/serializers.py rename to scidash/sciunittests/serializers.py index d6b143e4..4266dc9e 100644 --- a/sciunittests/serializers.py +++ b/scidash/sciunittests/serializers.py @@ -3,16 +3,16 @@ from rest_framework_cache.registry import cache_registry from rest_framework_cache.serializers import CachedSerializerMixin -from general.serializers import ScidashUserSerializer +from scidash.general.serializers import ScidashUserSerializer -from sciunittests.models import TestClass, TestSuite, TestInstance, \ +from scidash.sciunittests.models import TestClass, TestSuite, TestInstance, \ ScoreInstance, ScoreClass -from sciunitmodels.serializers import ModelInstanceSerializer -from general.mixins import GetOrCreateMixin, GetByKeyOrCreateMixin +from scidash.sciunitmodels.serializers import ModelInstanceSerializer +from scidash.general.mixins import GetOrCreateMixin, GetByKeyOrCreateMixin class TestSuiteSerializer(GetOrCreateMixin, - WritableNestedModelSerializer + WritableNestedModelSerializer, CachedSerializerMixin ): owner = ScidashUserSerializer( @@ -26,7 +26,7 @@ class Meta: class TestClassSerializer(GetByKeyOrCreateMixin, - WritableNestedModelSerializer + WritableNestedModelSerializer, CachedSerializerMixin ): key = 'url' url = serializers.CharField(validators=[]) @@ -37,7 +37,7 @@ class Meta: class TestInstanceSerializer(GetByKeyOrCreateMixin, - WritableNestedModelSerializer + WritableNestedModelSerializer, CachedSerializerMixin ): test_suites = TestSuiteSerializer(many=True) test_class = TestClassSerializer() @@ -51,7 +51,7 @@ class Meta: class ScoreClassSerializer(GetByKeyOrCreateMixin, - WritableNestedModelSerializer + WritableNestedModelSerializer, CachedSerializerMixin ): key = 'class_name' @@ -62,7 +62,7 @@ class Meta: class ScoreInstanceSerializer(GetByKeyOrCreateMixin, - WritableNestedModelSerializer + WritableNestedModelSerializer, CachedSerializerMixin ): test_instance = TestInstanceSerializer() model_instance = ModelInstanceSerializer() @@ -104,8 +104,8 @@ class Meta: exclude = ('prediction_dict', 'prediction_numeric', ) -# cache_registry.register(ScoreInstanceSerializer) -# cache_registry.register(ScoreClassSerializer) -# cache_registry.register(TestClassSerializer) -# cache_registry.register(TestInstanceSerializer) -# cache_registry.register(TestSuiteSerializer) +cache_registry.register(ScoreInstanceSerializer) +cache_registry.register(ScoreClassSerializer) +cache_registry.register(TestClassSerializer) +cache_registry.register(TestInstanceSerializer) +cache_registry.register(TestSuiteSerializer) diff --git a/scidash/sciunittests/tests/__init__.py b/scidash/sciunittests/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/scidash/sciunittests/tests/test_data/score_object.json b/scidash/sciunittests/tests/test_data/score_object.json new file mode 100644 index 00000000..70ad446b --- /dev/null +++ b/scidash/sciunittests/tests/test_data/score_object.json @@ -0,0 +1,43 @@ +{ + "score_class": {"class_name": "ZScore", "url": "http://test-url.for/not-spaming-data/in-database"}, + "hash_id": "111", + "model_instance": { + "model_class": { + "class_name": "ReducedModel", + "url": "http://test-url.for/not-spaming-data/in-database", + "capabilities": [ + { + "class_name": "CanBeReduced" + } + ] + }, + "attributes": {}, + "hash_id": "111", + "name": "Izhikevich", + "run_params": {}, + "url": "https://github.com/scidash/neuronunit/blob/master/neuronunit/models/NeuroML2/LEMS_2007One.xml", + "backend": "JNeuroML" + }, + "prediction": 13, + "score": 1.66666666666667, + "sort_key": 0.738882680363527, + "score_type": "ZType", + "test_instance": { + "description": null, + "hash_id": "111", + "test_suites": [{ + "hash": "testhash", + "name": "ReducedSuite" + }], + "test_class": { + "class_name": "MyTest", + "url": "http://test-url.for/not-spaming-data/in-database" + }, + "observation": { + "mean":"8", + "std": "3", + "url": "" + }, + "verbose": 1 + } +} diff --git a/test_data/score_objects_list.json b/scidash/sciunittests/tests/test_data/score_objects_list.json similarity index 100% rename from test_data/score_objects_list.json rename to scidash/sciunittests/tests/test_data/score_objects_list.json diff --git a/sciunittests/tests.py b/scidash/sciunittests/tests/test_sciunit_tests.py similarity index 98% rename from sciunittests/tests.py rename to scidash/sciunittests/tests/test_sciunit_tests.py index 73d900cb..ebf57763 100644 --- a/sciunittests/tests.py +++ b/scidash/sciunittests/tests/test_sciunit_tests.py @@ -4,12 +4,12 @@ from django.test import TestCase, Client, RequestFactory from django.urls import reverse -from general.models import ScidashUser +from scidash.general.models import ScidashUser -from sciunittests.serializers import ScoreInstanceSerializer, \ +from scidash.sciunittests.serializers import ScoreInstanceSerializer, \ TestClassSerializer, \ ScoreClassSerializer -from sciunittests.models import ScoreInstance +from scidash.sciunittests.models import ScoreInstance SAMPLE_OBJECT = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'test_data/score_object.json') @@ -477,3 +477,4 @@ def test_is_score_class_match_the_same_object(self): parsed_response = response.json() self.assertEqual(len(parsed_response), 1) + diff --git a/sciunittests/views.py b/scidash/sciunittests/views.py similarity index 89% rename from sciunittests/views.py rename to scidash/sciunittests/views.py index 39124296..3fd04135 100644 --- a/sciunittests/views.py +++ b/scidash/sciunittests/views.py @@ -5,7 +5,7 @@ from rest_framework.views import APIView from rest_framework.response import Response -from sciunittests.models import ScoreInstance +from scidash.sciunittests.models import ScoreInstance class DateRangeView(APIView): @@ -35,6 +35,9 @@ def get(self, request, *args, **kwargs): acceptable_period = period break + if acceptable_period is None: + acceptable_period = nine_month_ago + return Response({ "current_date": current_date_iso, "acceptable_period": acceptable_period diff --git a/service/codefresh/codefresh.yml b/service/codefresh/codefresh.yml new file mode 100644 index 00000000..79ff0e60 --- /dev/null +++ b/service/codefresh/codefresh.yml @@ -0,0 +1,30 @@ +version: '1.0' +steps: + InstallFrontend: + image: node:8 + working_directory: ${{main_clone}} + commands: + - make install-frontend + BuildingDockerImage: + title: Building Docker Image + type: build + image_name: metacell/scidash + working_directory: ./ + tag: ${{CF_BRANCH}}-${{CF_BUILD_ID}} + no_cache: true + dockerfile: ./service/docker/Dockerfile-scidash + PushingToDockerRegistry: + title: Pushing to Docker Registry + type: push + candidate: '${{BuildingDockerImage}}' + tag: ${{CF_BRANCH}}-${{CF_BUILD_ID}} + registry: cfcr + Deploy: + type: deploy + kind: kubernetes + cluster: geppetto-cluster + namespace: scidash-testing + file_path: ./service/kubernetes/scidash/scidash-deployment.yaml + candidate: + image: ${{BuildingDockerImage}} + registry: cfcr diff --git a/service/docker/Dockerfile-postgres b/service/docker/Dockerfile-postgres new file mode 100644 index 00000000..e0dd498d --- /dev/null +++ b/service/docker/Dockerfile-postgres @@ -0,0 +1,3 @@ +FROM postgres:9.4 + +ADD ./service/scripts/db-create-psql.sh /docker-entrypoint-initdb.d/db-create-psql.sh diff --git a/service/docker/Dockerfile-scidash b/service/docker/Dockerfile-scidash new file mode 100644 index 00000000..062a297a --- /dev/null +++ b/service/docker/Dockerfile-scidash @@ -0,0 +1,44 @@ +FROM python:3.6 + +# BUILD VARIABLES + +ARG ROOT=/ +ARG APP_DIR=/app +ARG DOTENV_FILE=env-docker +ARG VENV_PATH=./venv/ +ARG STATIC_DIR=$APP_DIR/static +ARG GEPPETTO_DIR=$STATIC_DIR/org.geppetto.frontend/src/main/webapp + +WORKDIR $ROOT + +# PYTHON INSTALL +RUN pip install virtualenv +#ENV PATH $VENV_PATH/bin:$PATH +ENV PYTHONUNBUFFERED 1 + +# CREATING PROJECT FOLDERS + +RUN mkdir $APP_DIR + +#COPYING PROJECT + +WORKDIR $APP_DIR +ADD . $APP_DIR + +# INSTALLING REQUIREMENTS + +RUN apt-get install curl +RUN curl -sL https://deb.nodesource.com/setup_8.x | bash +RUN apt-get update && apt-get install nodejs + +RUN make install-backend-with-env + +WORKDIR $GEPPETTO_DIR +RUN npm run build-dev-noTest + + +WORKDIR $APP_DIR +COPY ./service/dotenv/env-docker $APP_DIR/.env + + +CMD ./service/scripts/run.sh diff --git a/deploy/dotenv/env-docker b/service/dotenv/env-docker similarity index 100% rename from deploy/dotenv/env-docker rename to service/dotenv/env-docker diff --git a/deploy/geppetto/GeppettoConfiguration.json b/service/geppetto/GeppettoConfiguration.json similarity index 100% rename from deploy/geppetto/GeppettoConfiguration.json rename to service/geppetto/GeppettoConfiguration.json diff --git a/deploy/kubernetes/scidash/scidash-deployment.yaml b/service/kubernetes/scidash/scidash-deployment.yaml similarity index 95% rename from deploy/kubernetes/scidash/scidash-deployment.yaml rename to service/kubernetes/scidash/scidash-deployment.yaml index 44cd6de7..e801f960 100644 --- a/deploy/kubernetes/scidash/scidash-deployment.yaml +++ b/service/kubernetes/scidash/scidash-deployment.yaml @@ -21,8 +21,7 @@ spec: app: scidash spec: containers: - - - image: r.cfcr.io/tarelli/metacell/scidash:development + - image: r.cfcr.io/tarelli/metacell/scidash imagePullPolicy: Always name: scidash ports: diff --git a/deploy/kubernetes/scidash/scidash-service.yaml b/service/kubernetes/scidash/scidash-service.yaml similarity index 100% rename from deploy/kubernetes/scidash/scidash-service.yaml rename to service/kubernetes/scidash/scidash-service.yaml diff --git a/deploy/scripts/build-image-db.sh b/service/scripts/build-image-db.sh similarity index 54% rename from deploy/scripts/build-image-db.sh rename to service/scripts/build-image-db.sh index 18bc99a7..728264bc 100755 --- a/deploy/scripts/build-image-db.sh +++ b/service/scripts/build-image-db.sh @@ -1,6 +1,10 @@ #!/bin/bash -if [ -z "$1" ] +echo "Input db image version ('latest' by default): " + +read dbtag + +if [ -z "$dbtag" ] then version="latest" else @@ -9,6 +13,6 @@ fi tag="metacell/scidash-db:$version" directory="." -dockerfile="./deploy/docker/Dockerfile-postgres" +dockerfile="./service/docker/Dockerfile-postgres" docker build -t $tag -f $dockerfile $directory diff --git a/service/scripts/build-image-scidash.sh b/service/scripts/build-image-scidash.sh new file mode 100755 index 00000000..5065a7f3 --- /dev/null +++ b/service/scripts/build-image-scidash.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +echo "Input scidash image version ('latest' by default): " + +read scidashtag + +if [ -z "$scidashtag" ] +then + version="latest" +else + version=$scidashtag +fi + +tag="metacell/scidash:$version" +directory="." +dockerfile="./service/docker/Dockerfile-scidash" + +docker build --no-cache -t $tag -f $dockerfile $directory diff --git a/create_superuser.py b/service/scripts/create_superuser.py similarity index 100% rename from create_superuser.py rename to service/scripts/create_superuser.py diff --git a/db-backup.sh b/service/scripts/db-backup.sh similarity index 100% rename from db-backup.sh rename to service/scripts/db-backup.sh diff --git a/deploy/scripts/db-create-psql.sh b/service/scripts/db-create-psql.sh similarity index 100% rename from deploy/scripts/db-create-psql.sh rename to service/scripts/db-create-psql.sh diff --git a/service/scripts/install-backend.sh b/service/scripts/install-backend.sh new file mode 100755 index 00000000..96df0f94 --- /dev/null +++ b/service/scripts/install-backend.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +virtualenv=false; +pygeppetto_folder="pygeppetto-django" +pygeppetto_django_repo="https://github.com/MetaCell/pygeppetto-django.git -b development-roman $pygeppetto_folder"; + +while getopts "v" opt +do + case $opt in + v) virtualenv=true;; + esac +done + +if [ "$virtualenv" = true ] ; then + virtualenv -p python3 ./venv; + source ./venv/bin/activate; +fi + +pip install -r requirements.txt; + +git clone $pygeppetto_django_repo; + +cd $pygeppetto_folder; + +pip install -e . diff --git a/service/scripts/install-frontend.sh b/service/scripts/install-frontend.sh new file mode 100755 index 00000000..0ddd56bb --- /dev/null +++ b/service/scripts/install-frontend.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +node -v + +root_path=$PWD; + +geppetto_repo="https://github.com/openworm/org.geppetto.frontend.git -b griddle-update"; +extension_repo="https://github.com/MetaCell/geppetto-scidash.git -b refactoring"; + +geppetto_path="./static/org.geppetto.frontend"; +geppetto_app_path="$geppetto_path/src/main/webapp"; +extension_path="$geppetto_app_path/extensions/geppetto-scidash"; +sample_config_path="./service/geppetto/GeppettoConfiguration.json"; +actual_config_path="$geppetto_app_path/GeppettoConfiguration.json"; + +git clone $geppetto_repo $geppetto_path; +git clone $extension_repo $extension_path; + +cd $geppetto_app_path; + +npm install + +cd $root_path; + +cp $sample_config_path $actual_config_path; diff --git a/service/scripts/push-image-scidash-db.sh b/service/scripts/push-image-scidash-db.sh new file mode 100755 index 00000000..e457efa8 --- /dev/null +++ b/service/scripts/push-image-scidash-db.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +echo "Input db image version ('latest' by default): "; + +read dbtag; + +if [ -z "$dbtag" ] +then + docker push metacell/scidash-db; +else + docker push metacell/scidash-db:$dbtag; +fi diff --git a/service/scripts/push-image-scidash.sh b/service/scripts/push-image-scidash.sh new file mode 100755 index 00000000..734f01be --- /dev/null +++ b/service/scripts/push-image-scidash.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +echo "Input scidash image version ('latest' by default): "; + +read scidashtag; + +if [ -z "$scidashtag" ] +then + docker push metacell/scidash; +else + docker push metacell/scidash:$scidashtag; +fi + diff --git a/service/scripts/run.sh b/service/scripts/run.sh new file mode 100755 index 00000000..43a54b09 --- /dev/null +++ b/service/scripts/run.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +source ./venv/bin/activate; +python manage.py migrate; +cat ./service/scripts/create_superuser.py | ./manage.py shell; +python manage.py runserver 0.0.0.0:8000;