Package: django-cloudprojects
Cloud Projects for DjangoA pluggable Django web application for onboarding and managing applications
and microservices on cloud platforms, the DevOps (DevSecOps) way.Who Should Use This ApplicationAny sufficiently large organization runs a significant amount of software on
modern cloud infrastructure nowadays, either in public clouds or on premise,
in a private cloud.
Onboarding this software, typically microservice or monolithic applications,
is far from trivial though, especially on premise or with hybrid clouds.
Unlike public clouds, which usually have onboarding processes well-defined
for single applications, corporate environments run highly custom processes.Cloud Projectsallows organizations to build a self-service infrastructure
that can be used by system engineers to automate parts of their usually manual
onboarding activities and monitor the progress of those slow-moving activities.
Mature agile organizations can even allow software development agencies to
service themselves entirely and request corporate project management, DevOps
and security specialists to support their engineering workforce throughCloud Projects.FeaturesMature software development capabilities (Django Web framework)Pluggable infrastructure for flexible application development (Django apps)Usable defaults and easy configuration (Django settings)InstallationThe easiest way to installdjango-cloudprojectsis with pip:pip install django-cloudprojectsSAML support is available as an installation option:pip install django-cloudprojects[saml]Note that SAML support requires additional libraries installed on your target
system, e.g. for Debian/Ubuntu- and RedHat/CentOS-based systems:sudo apt-get install libxml2-dev libxmlsec1-dev libxmlsec1-opensslsudo yum install libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-develBasic UsageIn your Django project settings, addcloudprojectsand its dependencies
toINSTALLED_APPS, optionally omitting the authentication providers you
don’t intend to use, add the required authentication backends for Allauth
and the Django Admin, and make sureSITE_IDis defined, e.g.INSTALLED_APPS=['django.contrib.auth','django.contrib.messages','django.contrib.sites',...# 'django_saml','allauth','allauth.account','allauth.socialaccount',# 'allauth.socialaccount.providers.bitbucket_oauth2',# 'allauth.socialaccount.providers.github','allauth.socialaccount.providers.gitlab','cloudprojects',]AUTHENTICATION_BACKENDS=['django.contrib.auth.backends.ModelBackend','django_saml.backends.SamlUserBackend','allauth.account.auth_backends.AuthenticationBackend',]SITE_ID=1Addcloudprojectsto your project’surlsmodule, e.g.urlpatterns=[...path('',include('cloudprojects.urls')),]In your Django project settings, configure the authentication providers as
described in theAllauth documentation, e.g.SOCIALACCOUNT_PROVIDERS={'github':{'GITHUB_URL':'https://github.enterprise.local','SCOPE':['api'],},'gitlab':{'GITLAB_URL':'https://gitlab.selfhosted.local','SCOPE':['api'],},}Register the authentication apps with your VCS services as described in the
Allauth documentation:Bitbucket providerGitHub providerGitLab providerWe recommend writing a management command to automatically configure those
values during deployment.  See ourtest projectfor a suggestion on how
an implementation may look like.If you intend to use SAML you need to add all required settings to your
project’s Django settings, as described in thepython3-saml-django docs.DevelopmentYou may use the includedtest projectfor developing interactively, e.g.pip install .[saml]
pip install pip-tools tox
pip-compile  # generates requirements.txtSetDEBUG = Truein Django settings to persist changes in a local database,
e.g.export DJANGO_DEBUG=true

tests/testproject/manage.py migrate
tests/testproject/manage.py runserverRun the tests using Tox, e.g.tox -lv
tox -e flake8,py39-django40
tox -e clean