Compare commits

...

5 Commits

14 changed files with 46 additions and 32 deletions

View File

@ -1,5 +1,5 @@
[bumpversion] [bumpversion]
current_version = 0.6.0-beta current_version = 0.6.1-beta
tag = True tag = True
commit = True commit = True
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\-(?P<release>.*) parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\-(?P<release>.*)

View File

@ -27,7 +27,7 @@ create-base-image:
before_script: before_script:
- echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json
script: script:
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/base.Dockerfile --destination docker.beryju.org/passbook/base:latest --destination docker.beryju.org/passbook/base:0.6.0-beta - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/base.Dockerfile --destination docker.beryju.org/passbook/base:latest --destination docker.beryju.org/passbook/base:0.6.1-beta
stage: build-base-image stage: build-base-image
only: only:
refs: refs:
@ -41,7 +41,7 @@ build-dev-image:
before_script: before_script:
- echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json
script: script:
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dev.Dockerfile --destination docker.beryju.org/passbook/dev:latest --destination docker.beryju.org/passbook/dev:0.6.0-beta - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dev.Dockerfile --destination docker.beryju.org/passbook/dev:latest --destination docker.beryju.org/passbook/dev:0.6.1-beta
stage: build-dev-image stage: build-dev-image
only: only:
refs: refs:
@ -95,7 +95,7 @@ build-passbook-server:
before_script: before_script:
- echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json
script: script:
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination docker.beryju.org/passbook/server:latest --destination docker.beryju.org/passbook/server:0.6.0-beta - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination docker.beryju.org/passbook/server:latest --destination docker.beryju.org/passbook/server:0.6.1-beta
only: only:
- tags - tags
- /^version/.*$/ - /^version/.*$/
@ -107,7 +107,7 @@ build-passbook-static:
before_script: before_script:
- echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json - echo "{\"auths\":{\"docker.beryju.org\":{\"auth\":\"$DOCKER_AUTH\"}}}" > /kaniko/.docker/config.json
script: script:
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/static.Dockerfile --destination docker.beryju.org/passbook/static:latest --destination docker.beryju.org/passbook/static:0.6.0-beta - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/static.Dockerfile --destination docker.beryju.org/passbook/static:latest --destination docker.beryju.org/passbook/static:0.6.1-beta
only: only:
- tags - tags
- /^version/.*$/ - /^version/.*$/

View File

@ -39,7 +39,7 @@ http {
gzip on; gzip on;
gzip_types application/javascript image/* text/css; gzip_types application/javascript image/* text/css;
gunzip on; gunzip on;
add_header X-passbook-Version 0.6.0-beta; add_header X-passbook-Version 0.6.1-beta;
add_header Vary X-passbook-Version; add_header Vary X-passbook-Version;
root /data/; root /data/;

View File

@ -2,7 +2,7 @@
http = 0.0.0.0:8000 http = 0.0.0.0:8000
chdir = /app chdir = /app
wsgi-file = passbook/root/wsgi.py wsgi-file = passbook/root/wsgi.py
processes = 4 processes = 2
master = true master = true
threads = 2 threads = 2
enable-threads = true enable-threads = true

View File

@ -1,6 +1,6 @@
apiVersion: v1 apiVersion: v1
appVersion: "0.6.0-beta" appVersion: "0.6.1-beta"
description: A Helm chart for passbook. description: A Helm chart for passbook.
name: passbook name: passbook
version: "0.6.0-beta" version: "0.6.1-beta"
icon: https://git.beryju.org/uploads/-/system/project/avatar/108/logo.png icon: https://git.beryju.org/uploads/-/system/project/avatar/108/logo.png

View File

@ -8,7 +8,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
spec: spec:
replicas: {{ .Values.replicaCount }} replicas: 2
selector: selector:
matchLabels: matchLabels:
app.kubernetes.io/name: {{ include "passbook.name" . }} app.kubernetes.io/name: {{ include "passbook.name" . }}
@ -20,6 +20,10 @@ spec:
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
passbook.io/component: web passbook.io/component: web
spec: spec:
volumes:
- name: config-volume
configMap:
name: {{ include "passbook.fullname" . }}-config
initContainers: initContainers:
- name: passbook-database-migrations - name: passbook-database-migrations
image: "docker.beryju.org/passbook/server:{{ .Values.image.tag }}" image: "docker.beryju.org/passbook/server:{{ .Values.image.tag }}"
@ -27,6 +31,9 @@ spec:
- ./manage.py - ./manage.py
args: args:
- migrate - migrate
volumeMounts:
- mountPath: /etc/passbook
name: config-volume
envFrom: envFrom:
- configMapRef: - configMapRef:
name: {{ include "passbook.fullname" . }}-config name: {{ include "passbook.fullname" . }}-config
@ -50,6 +57,9 @@ spec:
- uwsgi - uwsgi
args: args:
- uwsgi.ini - uwsgi.ini
volumeMounts:
- mountPath: /etc/passbook
name: config-volume
envFrom: envFrom:
- configMapRef: - configMapRef:
name: {{ include "passbook.fullname" . }}-config name: {{ include "passbook.fullname" . }}-config
@ -85,8 +95,8 @@ spec:
value: kubernetes-healthcheck-host value: kubernetes-healthcheck-host
resources: resources:
requests: requests:
cpu: 50m cpu: 100m
memory: 150M memory: 200M
limits: limits:
cpu: 200m cpu: 300m
memory: 300M memory: 350M

View File

@ -8,7 +8,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
spec: spec:
replicas: {{ .Values.replicaCount }} replicas: 1
selector: selector:
matchLabels: matchLabels:
app.kubernetes.io/name: {{ include "passbook.name" . }} app.kubernetes.io/name: {{ include "passbook.name" . }}
@ -20,6 +20,10 @@ spec:
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
passbook.io/component: worker passbook.io/component: worker
spec: spec:
volumes:
- name: config-volume
configMap:
name: {{ include "passbook.fullname" . }}-config
containers: containers:
- name: {{ .Chart.Name }} - name: {{ .Chart.Name }}
image: "docker.beryju.org/passbook/server:{{ .Values.image.tag }}" image: "docker.beryju.org/passbook/server:{{ .Values.image.tag }}"
@ -31,7 +35,10 @@ spec:
- --autoscale=10,3 - --autoscale=10,3
- -E - -E
- -B - -B
- -A passbook.root.celery - -A=passbook.root.celery
volumeMounts:
- mountPath: /etc/passbook
name: config-volume
envFrom: envFrom:
- configMapRef: - configMapRef:
name: {{ include "passbook.fullname" . }}-config name: {{ include "passbook.fullname" . }}-config

View File

@ -1,11 +1,8 @@
# Default values for passbook. # Default values for passbook.
# This is a YAML-formatted file. # This is a YAML-formatted file.
# Declare variables to be passed into your templates. # Declare variables to be passed into your templates.
replicaCount: 1
image: image:
tag: 0.6.0-beta tag: 0.6.1-beta
nameOverride: "" nameOverride: ""

View File

@ -1,2 +1,2 @@
"""passbook""" """passbook"""
__version__ = '0.6.0-beta' __version__ = '0.6.1-beta'

View File

@ -50,7 +50,7 @@ class SAMLProvider(Provider):
"""Get link to download XML metadata for admin interface""" """Get link to download XML metadata for admin interface"""
try: try:
# pylint: disable=no-member # pylint: disable=no-member
return reverse('passbook_saml_idp:saml-metadata', return reverse('passbook_providers_saml:saml-metadata',
kwargs={'application': self.application.slug}) kwargs={'application': self.application.slug})
except Provider.application.RelatedObjectDoesNotExist: except Provider.application.RelatedObjectDoesNotExist:
return None return None

View File

@ -39,7 +39,7 @@
</section> </section>
</div> </div>
<div class="card-footer"> <div class="card-footer">
<a href="{% url 'passbook_saml_idp:saml-metadata' %}" class="btn btn-primary"><clr-icon shape="download"></clr-icon>{% trans 'Download Metadata' %}</a> <a href="{% url 'passbook_providers_saml:saml-metadata' %}" class="btn btn-primary"><clr-icon shape="download"></clr-icon>{% trans 'Download Metadata' %}</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -92,7 +92,7 @@ class LoginBeginView(AccessRequiredView):
return HttpResponseBadRequest('the SAML request payload is missing') return HttpResponseBadRequest('the SAML request payload is missing')
request.session['RelayState'] = source.get('RelayState', '') request.session['RelayState'] = source.get('RelayState', '')
return redirect(reverse('passbook_saml_idp:saml-login-process', kwargs={ return redirect(reverse('passbook_providers_saml:saml-login-process', kwargs={
'application': application 'application': application
})) }))
@ -204,10 +204,10 @@ class DescriptorDownloadView(AccessRequiredView):
def get(self, request, application): def get(self, request, application):
"""Replies with the XML Metadata IDSSODescriptor.""" """Replies with the XML Metadata IDSSODescriptor."""
entity_id = self.provider.issuer entity_id = self.provider.issuer
slo_url = request.build_absolute_uri(reverse('passbook_saml_idp:saml-logout', kwargs={ slo_url = request.build_absolute_uri(reverse('passbook_providers_saml:saml-logout', kwargs={
'application': application 'application': application
})) }))
sso_url = request.build_absolute_uri(reverse('passbook_saml_idp:saml-login', kwargs={ sso_url = request.build_absolute_uri(reverse('passbook_providers_saml:saml-login', kwargs={
'application': application 'application': application
})) }))
pubkey = strip_pem_header(self.provider.signing_cert.replace('\r', '')).replace('\n', '') pubkey = strip_pem_header(self.provider.signing_cert.replace('\r', '')).replace('\n', '')

View File

@ -6,12 +6,12 @@
<h1>{{ source.name }}</h1> <h1>{{ source.name }}</h1>
{% if connections.exists %} {% if connections.exists %}
<p>{% trans 'Connected.' %}</p> <p>{% trans 'Connected.' %}</p>
<a class="btn btn-danger" href="{% url 'passbook_oauth_client:oauth-client-disconnect' source_slug=source.slug %}"> <a class="btn btn-danger" href="{% url 'passbook_sources_oauth:oauth-client-disconnect' source_slug=source.slug %}">
{% trans 'Disconnect' %} {% trans 'Disconnect' %}
</a> </a>
{% else %} {% else %}
<p>Not connected.</p> <p>Not connected.</p>
<a class="btn btn-primary" href="{% url 'passbook_oauth_client:oauth-client-login' source_slug=source.slug %}"> <a class="btn btn-primary" href="{% url 'passbook_sources_oauth:oauth-client-login' source_slug=source.slug %}">
{% trans 'Connect' %} {% trans 'Connect' %}
</a> </a>
{% endif %} {% endif %}

View File

@ -47,7 +47,7 @@ class OAuthRedirect(OAuthClientMixin, RedirectView):
def get_callback_url(self, source): def get_callback_url(self, source):
"Return the callback url for this source." "Return the callback url for this source."
return reverse('passbook_oauth_client:oauth-client-callback', return reverse('passbook_sources_oauth:oauth-client-callback',
kwargs={'source_slug': source.slug}) kwargs={'source_slug': source.slug})
def get_redirect_url(self, **kwargs): def get_redirect_url(self, **kwargs):
@ -195,7 +195,7 @@ class OAuthCallback(OAuthClientMixin, View):
messages.success(self.request, _("Successfully linked %(source)s!" % { messages.success(self.request, _("Successfully linked %(source)s!" % {
'source': self.source.name 'source': self.source.name
})) }))
return redirect(reverse('passbook_oauth_client:oauth-client-user', kwargs={ return redirect(reverse('passbook_sources_oauth:oauth-client-user', kwargs={
'source_slug': self.source.slug 'source_slug': self.source.slug
})) }))
# User was not authenticated, new user has been created # User was not authenticated, new user has been created
@ -225,7 +225,7 @@ class DisconnectView(LoginRequiredMixin, View):
# User confirmed deletion # User confirmed deletion
self.aas.delete() self.aas.delete()
messages.success(request, _('Connection successfully deleted')) messages.success(request, _('Connection successfully deleted'))
return redirect(reverse('passbook_oauth_client:oauth-client-user', kwargs={ return redirect(reverse('passbook_sources_oauth:oauth-client-user', kwargs={
'source_slug': self.source.slug 'source_slug': self.source.slug
})) }))
return self.get(request, source_slug) return self.get(request, source_slug)
@ -234,7 +234,7 @@ class DisconnectView(LoginRequiredMixin, View):
"""Show delete form""" """Show delete form"""
return render(request, 'generic/delete.html', { return render(request, 'generic/delete.html', {
'object': self.source, 'object': self.source,
'delete_url': reverse('passbook_oauth_client:oauth-client-disconnect', kwargs={ 'delete_url': reverse('passbook_sources_oauth:oauth-client-disconnect', kwargs={
'source_slug': self.source.slug, 'source_slug': self.source.slug,
}) })
}) })