Skip to content

Commit

Permalink
Add Redirect Page
Browse files Browse the repository at this point in the history
  • Loading branch information
rooftopcellist committed Sep 12, 2024
1 parent a32465c commit 32dfbd2
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 13 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
include:
- SCENARIO: default # tests headless scenario too
- SCENARIO: externaldb
# - SCENARIO: ingress # TODO: This scenario currently fails because ui and event_stream ingress cannot have the same host and path in minikube nginx ingress controller
- SCENARIO: ingress
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand Down Expand Up @@ -71,20 +71,20 @@ jobs:
- name: Test EDA API via API k8s service
run: |
kubectl port-forward service/eda-demo-api 8081:8000 &
sleep 1
sleep 2
curl -s http://localhost:8081/api/eda/v1/status/
if: ${{ matrix.SCENARIO == 'default' }}

- name: Test EDA API via UI k8s service
run: |
kubectl port-forward service/eda-demo-ui 8080:80 &
sleep 1
sleep 2
curl -s http://localhost:8080/api/eda/v1/status/
if: ${{ matrix.SCENARIO != 'default' }}

- name: Test EDA API via k8s ingress
run: |
IP=$(kubectl get ingress -n eda eda-demo-ingress -o json | jq .status.loadBalancer.ingress[0].ip -r)
IP=$(kubectl get ingress -n eda eda-demo-ui-ingress -o json | jq .status.loadBalancer.ingress[0].ip -r)
curl -s http://${IP}:80/api/eda/v1/status/
if: ${{ matrix.SCENARIO == 'ingress' }}

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,20 +65,20 @@ jobs:
- name: Test EDA API via API k8s service
run: |
kubectl port-forward service/eda-demo-api 8081:8000 &
sleep 1
sleep 2
curl -s http://localhost:8081/api/eda/v1/status/
if: ${{ matrix.SCENARIO == 'default' }}

- name: Test EDA API via UI k8s service
run: |
kubectl port-forward service/eda-demo-ui 8080:80 &
sleep 1
sleep 2
curl -s http://localhost:8080/api/eda/v1/status/
if: ${{ matrix.SCENARIO != 'default' }}

- name: Test EDA API via k8s ingress
run: |
IP=$(kubectl get ingress -n eda eda-demo-ingress -o json | jq .status.loadBalancer.ingress[0].ip -r)
IP=$(kubectl get ingress -n eda eda-demo-ui-ingress -o json | jq .status.loadBalancer.ingress[0].ip -r)
curl -s http://${IP}:80/api/eda/v1/status/
if: ${{ matrix.SCENARIO == 'ingress' }}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,8 @@ spec:
path: public_base_url
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:text
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:hidden
- displayName: Automation Server URL
path: automation_server_url
x-descriptors:
Expand Down
7 changes: 7 additions & 0 deletions roles/eda/tasks/deploy_eda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,17 @@
changed_when: false

- name: Apply ConfigMap resources
k8s:
apply: yes
definition: "{{ lookup('template', 'redirect-page.configmap.html.j2') }}"
wait: yes

- name: Apply Redirect Page Configmap
k8s:
apply: yes
definition: "{{ lookup('template', 'eda.configmap.yaml.j2') }}"
wait: yes
when: public_base_url is defined

- name: Apply Backend deployment resources
k8s:
Expand Down
7 changes: 2 additions & 5 deletions roles/eda/templates/eda-api.configmap.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,8 @@ data:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
proxy_pass http://gunicorn; # Forward requests to Django app
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
root {{ static_path }};
try_files /redirect-page.html =404;
access_log /var/log/nginx/proxy_access.log;
error_log /var/log/nginx/proxy_error.log;
}
Expand Down
15 changes: 14 additions & 1 deletion roles/eda/templates/eda-api.deployment.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,12 @@ spec:
- containerPort: {{ api_nginx_port }}
volumeMounts:
- name: static-files
mountPath: {{ static_path }}
mountPath: '{{ static_path }}'
{% if public_base_url is defined %}
- name: redirect-page
mountPath: '{{ static_path }}/redirect-page.html'
subPath: redirect-page.html
{% endif %}
- name: '{{ ansible_operator_meta.name }}-nginx-api-conf'
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
Expand All @@ -387,6 +392,14 @@ spec:
volumes:
- name: static-files
emptyDir: {}
{% if public_base_url is defined %}
- name: redirect-page
configMap:
name: '{{ ansible_operator_meta.name }}-redirect-page'
items:
- key: redirect-page.html
path: redirect-page.html
{% endif %}
- name: '{{ ansible_operator_meta.name }}-nginx-api-conf'
configMap:
name: '{{ ansible_operator_meta.name }}-nginx-api-configmap'
Expand Down
77 changes: 77 additions & 0 deletions roles/eda/templates/redirect-page.configmap.html.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ ansible_operator_meta.name }}-redirect-page
namespace: {{ ansible_operator_meta.namespace }}
data:
redirect-page.html: |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="15; url={{ public_base_url }}">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Redirecting to Ansible Automation Platform</title>

<!-- Favicon links -->
<link rel="icon" type="image/x-icon" href="static/media/favicon.ico">

<!-- Link to DRF's CSS -->
<link rel="stylesheet" type="text/css" href="static/rest_framework/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="static/rest_framework/css/bootstrap-theme.min.css">

<style>
body {
font-family: Arial, sans-serif;
text-align: center;
padding-top: 0px;
/* background-color: rgb(34, 34, 34); */
}
.banner {
background-color: #151414;
color: rgb(255, 255, 255);
padding: 20px;
margin-bottom: 20px;
min-height: 70px; /* Ensure the banner is tall enough to fit the logo */
}
.logo {
width: 150px;
margin-bottom: 20px;
float: left;
}
a {
color: #007BFF;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.doc-note {
font-size: 0.7em; /* Makes the text smaller */
color: #555; /* Optional: Change text color to a lighter shade */
background-color: #f9f9f9; /* Optional: Light background color */
padding: 10px; /* Optional: Add some padding */
margin: 10px 0; /* Optional: Add some margin */
float: left;
}
</style>
</head>
<body>
<!-- Banner Section with Brand Logo -->
<div class="banner">
<img class="logo" src="static/media/logo-header.svg" alt="Brand Logo">
</div>

<h2>Redirecting to Ansible Automation Platform...</h2>
<p>If you are not redirected automatically, <a href="{{ public_base_url }}">click here</a> to go to AAP.</p>
<p class="doc-note">
The API endpoints for this platform service will temporarily remain available at the URL for this service.
Please use the Ansible Automation Platform API endpoints corresponding to this component in the future.
These can be found at <a href="{{ public_base_url }}/api/eda/" target="_blank">{{ public_base_url }}/api/eda</a>.
</p>

<!-- Include any additional scripts if needed -->
<script src="static/rest_framework/js/jquery-3.5.1.min.js"></script>
<script src="static/rest_framework/js/bootstrap.min.js"></script>
</body>
</html>

0 comments on commit 32dfbd2

Please sign in to comment.