Refactor ara-server into namespaced python modules

This is a structure that will allow us to install everything under
"ara" as separate packages but inside the same module.

For example, installing ara-server will provide ara.server and
ara.api.
Installing ara-clients will provide ara.clients, ara-plugins will
supply ara.plugins, etc.

Change-Id: I27ee431c4e5d946f558befc12937ba2f3c0d020b
This commit is contained in:
David Moreau Simard 2018-06-19 23:51:33 -04:00
parent 68cbbe24bc
commit 1abe276bae
No known key found for this signature in database
GPG Key ID: 33A07694CBB71ECC
25 changed files with 37 additions and 33 deletions

2
.gitignore vendored
View File

@ -91,6 +91,6 @@ ENV/
# Rope project settings
.ropeproject
/db.sqlite3
.*/db.sqlite3
www/
data/

View File

1
ara/api/__init__.py Normal file
View File

@ -0,0 +1 @@
__import__('pkg_resources').declare_namespace(__name__)

View File

@ -1,4 +1,4 @@
from api import models
from ara.api import models
from django.contrib import admin
from django.contrib.auth.models import Group

View File

@ -2,4 +2,4 @@ from django.apps import AppConfig
class ApiConfig(AppConfig):
name = 'api'
name = 'ara.api'

View File

@ -19,13 +19,13 @@ import json
import hashlib
import logging
import zlib
from api import models
from ara.api import models
from django.utils import timezone
from rest_framework import serializers
DATE_FORMAT = "(iso-8601: 2016-05-06T17:20:25.749489-04:00)"
DURATION_FORMAT = "([DD] [HH:[MM:]]ss[.uuuuuu])"
logger = logging.getLogger('api.serializers')
logger = logging.getLogger('ara.api.serializers')
class CompressedTextField(serializers.CharField):

View File

@ -1,6 +1,6 @@
import factory
from api import models
from ara.api import models
class FileContentFactory(factory.DjangoModelFactory):

View File

@ -1,7 +1,7 @@
from rest_framework.test import APITestCase
from api import models, serializers
from api.tests import factories
from ara.api import models, serializers
from ara.api.tests import factories
class FileTestCase(APITestCase):

View File

@ -1,7 +1,7 @@
from rest_framework.test import APITestCase
from api import serializers, models
from api.tests import factories
from ara.api import serializers, models
from ara.api.tests import factories
class FileContentTestCase(APITestCase):

View File

@ -2,8 +2,8 @@ import datetime
from django.utils import timezone
from rest_framework.test import APITestCase
from api import models, serializers
from api.tests import factories
from ara.api import models, serializers
from ara.api.tests import factories
class PlaybookTestCase(APITestCase):

View File

@ -1,8 +1,8 @@
import time
from rest_framework.test import APITestCase
from api import models
from api.tests import factories
from ara.api import models
from ara.api.tests import factories
class PlaybookFileTestCase(APITestCase):

View File

@ -17,7 +17,7 @@
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from api import views
from ara.api import views
urlpatterns = [
url(r'^$', views.api_root),

View File

@ -18,7 +18,7 @@ from rest_framework.decorators import api_view, detail_route
from rest_framework.response import Response
from rest_framework.reverse import reverse
from api import models, serializers
from ara.api import models, serializers
from rest_framework import generics, status

1
ara/server/__init__.py Normal file
View File

@ -0,0 +1 @@
__import__('pkg_resources').declare_namespace(__name__)

View File

@ -4,7 +4,7 @@ import random
import sys
from envparse import env
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__))))
def get_secret_key(secret_key):
@ -29,7 +29,7 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'api'
'ara.api'
]
MIDDLEWARE = [
@ -44,7 +44,7 @@ MIDDLEWARE = [
CORS_ORIGIN_ALLOW_ALL = True
ROOT_URLCONF = 'ara.urls'
ROOT_URLCONF = 'ara.server.urls'
TEMPLATES = [
{
@ -62,7 +62,7 @@ TEMPLATES = [
},
]
WSGI_APPLICATION = 'ara.wsgi.application'
WSGI_APPLICATION = 'ara.server.wsgi.application'
DATABASES = {
'default': {

View File

@ -7,7 +7,7 @@ admin.site.site_header = 'Administration'
admin.site.index_title = 'Administration Ara'
routes = [
url(r'^api/v1/', include('api.urls')),
url(r'^api/v1/', include('ara.api.urls')),
url(r'^admin/', admin.site.urls),
]
urlpatterns = routes + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@ -2,6 +2,6 @@ import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ara.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ara.server.settings")
application = get_wsgi_application()

View File

@ -3,7 +3,7 @@ import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ara.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ara.server.settings")
from django.core.management import execute_from_command_line

View File

@ -1,11 +1,11 @@
[metadata]
name = ara-backend
summary = ARA Records Ansible backend
name = ara-server
summary = ARA Records Ansible API and Server components
description-file =
README.rst
author = OpenStack Community
author-email = openstack-dev@lists.openstack.org
home-page = https://github.com/openstack/ara-backend
home-page = https://github.com/openstack/ara-server
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
@ -26,8 +26,11 @@ setup-hooks =
pbr.hooks.setup_hook
[files]
namespace_packages =
ara.api
ara.server
packages =
ara-backend
ara
[build_sphinx]
source-dir = doc/source
@ -41,7 +44,6 @@ upload-dir = docs/html
ignore_errors = True
include =
ara/*
api/*
omit =
/usr*
setup.py

10
tox.ini
View File

@ -19,11 +19,11 @@ commands = sphinx-build -W -b html doc/source doc/build/html
[testenv:pep8]
commands =
flake8 ara api
bandit -r ara api
flake8 ara
bandit -r ara
[testenv:py35]
commands = python manage.py test
commands = python manage.py test ara
[testenv:runserver]
commands =
@ -44,8 +44,8 @@ setenv =
[testenv:cover]
commands =
coverage erase
coverage run {toxinidir}/manage.py test ara
coverage run -a {toxinidir}/manage.py test api
coverage run {toxinidir}/manage.py test ara/server
coverage run -a {toxinidir}/manage.py test ara/api
coverage html
[flake8]