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:
parent
68cbbe24bc
commit
1abe276bae
|
@ -91,6 +91,6 @@ ENV/
|
||||||
# Rope project settings
|
# Rope project settings
|
||||||
.ropeproject
|
.ropeproject
|
||||||
|
|
||||||
/db.sqlite3
|
.*/db.sqlite3
|
||||||
www/
|
www/
|
||||||
data/
|
data/
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
__import__('pkg_resources').declare_namespace(__name__)
|
|
@ -1,4 +1,4 @@
|
||||||
from api import models
|
from ara.api import models
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
|
|
|
@ -2,4 +2,4 @@ from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
class ApiConfig(AppConfig):
|
class ApiConfig(AppConfig):
|
||||||
name = 'api'
|
name = 'ara.api'
|
|
@ -19,13 +19,13 @@ import json
|
||||||
import hashlib
|
import hashlib
|
||||||
import logging
|
import logging
|
||||||
import zlib
|
import zlib
|
||||||
from api import models
|
from ara.api import models
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
DATE_FORMAT = "(iso-8601: 2016-05-06T17:20:25.749489-04:00)"
|
DATE_FORMAT = "(iso-8601: 2016-05-06T17:20:25.749489-04:00)"
|
||||||
DURATION_FORMAT = "([DD] [HH:[MM:]]ss[.uuuuuu])"
|
DURATION_FORMAT = "([DD] [HH:[MM:]]ss[.uuuuuu])"
|
||||||
logger = logging.getLogger('api.serializers')
|
logger = logging.getLogger('ara.api.serializers')
|
||||||
|
|
||||||
|
|
||||||
class CompressedTextField(serializers.CharField):
|
class CompressedTextField(serializers.CharField):
|
|
@ -1,6 +1,6 @@
|
||||||
import factory
|
import factory
|
||||||
|
|
||||||
from api import models
|
from ara.api import models
|
||||||
|
|
||||||
|
|
||||||
class FileContentFactory(factory.DjangoModelFactory):
|
class FileContentFactory(factory.DjangoModelFactory):
|
|
@ -1,7 +1,7 @@
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
from api import models, serializers
|
from ara.api import models, serializers
|
||||||
from api.tests import factories
|
from ara.api.tests import factories
|
||||||
|
|
||||||
|
|
||||||
class FileTestCase(APITestCase):
|
class FileTestCase(APITestCase):
|
|
@ -1,7 +1,7 @@
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
from api import serializers, models
|
from ara.api import serializers, models
|
||||||
from api.tests import factories
|
from ara.api.tests import factories
|
||||||
|
|
||||||
|
|
||||||
class FileContentTestCase(APITestCase):
|
class FileContentTestCase(APITestCase):
|
|
@ -2,8 +2,8 @@ import datetime
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
from api import models, serializers
|
from ara.api import models, serializers
|
||||||
from api.tests import factories
|
from ara.api.tests import factories
|
||||||
|
|
||||||
|
|
||||||
class PlaybookTestCase(APITestCase):
|
class PlaybookTestCase(APITestCase):
|
|
@ -1,8 +1,8 @@
|
||||||
import time
|
import time
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
from api import models
|
from ara.api import models
|
||||||
from api.tests import factories
|
from ara.api.tests import factories
|
||||||
|
|
||||||
|
|
||||||
class PlaybookFileTestCase(APITestCase):
|
class PlaybookFileTestCase(APITestCase):
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
from rest_framework.urlpatterns import format_suffix_patterns
|
from rest_framework.urlpatterns import format_suffix_patterns
|
||||||
from api import views
|
from ara.api import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^$', views.api_root),
|
url(r'^$', views.api_root),
|
|
@ -18,7 +18,7 @@ from rest_framework.decorators import api_view, detail_route
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.reverse import reverse
|
from rest_framework.reverse import reverse
|
||||||
|
|
||||||
from api import models, serializers
|
from ara.api import models, serializers
|
||||||
|
|
||||||
from rest_framework import generics, status
|
from rest_framework import generics, status
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
__import__('pkg_resources').declare_namespace(__name__)
|
|
@ -4,7 +4,7 @@ import random
|
||||||
import sys
|
import sys
|
||||||
from envparse import env
|
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):
|
def get_secret_key(secret_key):
|
||||||
|
@ -29,7 +29,7 @@ INSTALLED_APPS = [
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
'api'
|
'ara.api'
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
@ -44,7 +44,7 @@ MIDDLEWARE = [
|
||||||
|
|
||||||
CORS_ORIGIN_ALLOW_ALL = True
|
CORS_ORIGIN_ALLOW_ALL = True
|
||||||
|
|
||||||
ROOT_URLCONF = 'ara.urls'
|
ROOT_URLCONF = 'ara.server.urls'
|
||||||
|
|
||||||
TEMPLATES = [
|
TEMPLATES = [
|
||||||
{
|
{
|
||||||
|
@ -62,7 +62,7 @@ TEMPLATES = [
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
WSGI_APPLICATION = 'ara.wsgi.application'
|
WSGI_APPLICATION = 'ara.server.wsgi.application'
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
|
@ -7,7 +7,7 @@ admin.site.site_header = 'Administration'
|
||||||
admin.site.index_title = 'Administration Ara'
|
admin.site.index_title = 'Administration Ara'
|
||||||
|
|
||||||
routes = [
|
routes = [
|
||||||
url(r'^api/v1/', include('api.urls')),
|
url(r'^api/v1/', include('ara.api.urls')),
|
||||||
url(r'^admin/', admin.site.urls),
|
url(r'^admin/', admin.site.urls),
|
||||||
]
|
]
|
||||||
urlpatterns = routes + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
urlpatterns = routes + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
|
@ -2,6 +2,6 @@ import os
|
||||||
|
|
||||||
from django.core.wsgi import get_wsgi_application
|
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()
|
application = get_wsgi_application()
|
|
@ -3,7 +3,7 @@ import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
if __name__ == "__main__":
|
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
|
from django.core.management import execute_from_command_line
|
||||||
|
|
||||||
|
|
12
setup.cfg
12
setup.cfg
|
@ -1,11 +1,11 @@
|
||||||
[metadata]
|
[metadata]
|
||||||
name = ara-backend
|
name = ara-server
|
||||||
summary = ARA Records Ansible backend
|
summary = ARA Records Ansible API and Server components
|
||||||
description-file =
|
description-file =
|
||||||
README.rst
|
README.rst
|
||||||
author = OpenStack Community
|
author = OpenStack Community
|
||||||
author-email = openstack-dev@lists.openstack.org
|
author-email = openstack-dev@lists.openstack.org
|
||||||
home-page = https://github.com/openstack/ara-backend
|
home-page = https://github.com/openstack/ara-server
|
||||||
classifier =
|
classifier =
|
||||||
Environment :: OpenStack
|
Environment :: OpenStack
|
||||||
Intended Audience :: Information Technology
|
Intended Audience :: Information Technology
|
||||||
|
@ -26,8 +26,11 @@ setup-hooks =
|
||||||
pbr.hooks.setup_hook
|
pbr.hooks.setup_hook
|
||||||
|
|
||||||
[files]
|
[files]
|
||||||
|
namespace_packages =
|
||||||
|
ara.api
|
||||||
|
ara.server
|
||||||
packages =
|
packages =
|
||||||
ara-backend
|
ara
|
||||||
|
|
||||||
[build_sphinx]
|
[build_sphinx]
|
||||||
source-dir = doc/source
|
source-dir = doc/source
|
||||||
|
@ -41,7 +44,6 @@ upload-dir = docs/html
|
||||||
ignore_errors = True
|
ignore_errors = True
|
||||||
include =
|
include =
|
||||||
ara/*
|
ara/*
|
||||||
api/*
|
|
||||||
omit =
|
omit =
|
||||||
/usr*
|
/usr*
|
||||||
setup.py
|
setup.py
|
||||||
|
|
10
tox.ini
10
tox.ini
|
@ -19,11 +19,11 @@ commands = sphinx-build -W -b html doc/source doc/build/html
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
commands =
|
commands =
|
||||||
flake8 ara api
|
flake8 ara
|
||||||
bandit -r ara api
|
bandit -r ara
|
||||||
|
|
||||||
[testenv:py35]
|
[testenv:py35]
|
||||||
commands = python manage.py test
|
commands = python manage.py test ara
|
||||||
|
|
||||||
[testenv:runserver]
|
[testenv:runserver]
|
||||||
commands =
|
commands =
|
||||||
|
@ -44,8 +44,8 @@ setenv =
|
||||||
[testenv:cover]
|
[testenv:cover]
|
||||||
commands =
|
commands =
|
||||||
coverage erase
|
coverage erase
|
||||||
coverage run {toxinidir}/manage.py test ara
|
coverage run {toxinidir}/manage.py test ara/server
|
||||||
coverage run -a {toxinidir}/manage.py test api
|
coverage run -a {toxinidir}/manage.py test ara/api
|
||||||
coverage html
|
coverage html
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
|
|
Loading…
Reference in New Issue