Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions sandbox-demo-builder/blocks/rapidpro/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: v2
name: rapidpro
description: RapidPro is an implementation of message building block

type: application
version: 0.0.1
appVersion: v4

dependencies:
- name: minio
version: 5.2.0
repository: "https://charts.min.io/"
47 changes: 47 additions & 0 deletions sandbox-demo-builder/blocks/rapidpro/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# RapidPro / Message Building Block
RapidPro is a platform for visually building interactive messaging applications. To learn more, please visit the project site at http://rapidpro.github.io/rapidpro.

## Deployment

https://github.com/rapidpro/rapidpro-docker

https://riseuplabs.com/rapidpro-installation-guide/

https://github.com/nyaruka/rapidpro



### Useful commands

```shell
helm install rapidpro ./rapidpro/ --create-namespace --namespace rapidpro
```

```shell
helm upgrade --install rapidpro ./rapidpro/ --create-namespace --namespace rapidpro
```

```shell
helm install --debug --dry-run rapidpro ./rapidpro/ --create-namespace --namespace rapidpro
```

```shell
helm uninstall rapidpro --namespace rapidpro
```

### Installing separetly the MiniO helm Chart (toy-setup)

Minimal toy setup for testing purposes can be deployed using:

```bash
helm repo add minio https://charts.min.io/
```

```bash
helm install --set resources.requests.memory=512Mi --set replicas=1 --set persistence.enabled=false --set mode=standalone --set rootUser=rootuser,rootPassword=rootpass123 --generate-name minio/minio --namespace rapidpro
```


## Alternatives repositories

https://github.com/onaio/helm-chart-rapidpro
12 changes: 12 additions & 0 deletions sandbox-demo-builder/blocks/rapidpro/client/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM python:3.9

ADD connect.py .

RUN pip install minio

# Set environment variables
ENV MINIO_HOST=rapidpro-minio
ENV MINIO_ACCESS_KEY=admin
ENV MINIO_SECRET_KEY=admin123

CMD ["python", "./connect.py"]
23 changes: 23 additions & 0 deletions sandbox-demo-builder/blocks/rapidpro/client/connect.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import os
import logging
from minio import Minio
logging.basicConfig(level=logging.INFO)

# Read environment variables
minio_host = os.getenv('MINIO_HOST', 'localhost:9000') # Default to 'localhost:9000' if not set
minio_access_key = os.getenv('MINIO_ACCESS_KEY', 'admin')
minio_secret_key = os.getenv('MINIO_SECRET_KEY', 'admin123')

client = Minio(
minio_host,
minio_access_key,
minio_secret_key,
secure=False
)

buckets = client.list_buckets()
logging.info("print buckets names ...")

for bucket in buckets:
print(bucket.name)
logging.info(bucket.name)
63 changes: 63 additions & 0 deletions sandbox-demo-builder/blocks/rapidpro/templates/mailroom.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.mailroom.name }}
labels:
app: {{ .Values.mailroom.name }}
spec:
replicas: 1
selector:
matchLabels:
app: {{ .Values.mailroom.name }}
template:
metadata:
labels:
app: {{ .Values.mailroom.name }}
spec:
containers:
- name: {{ .Values.mailroom.name }}
image: {{ .Values.mailroom.containers.image }}
imagePullPolicy: {{ .Values.mailroom.containers.imagePullPolicy }}

ports:
- containerPort: {{.Values.mailroom.service.port }}
env:
- name: MAILROOM_PORT
value: "{{.Values.mailroom.service.port }}"
- name: MAILROOM_DB
value: "postgres://temba:temba@postgres:5432/temba?sslmode=disable"
- name: MAILROOM_REDIS
value: "redis://redis:6379/15"
- name: MAILROOM_LOG_LEVEL
value: "DEBUG"
- name: MAILROOM_AWS_ACCESS_KEY_ID
value: "admin"
- name: MAILROOM_AWS_SECRET_ACCESS_KEY
value: "admin123"
- name: MAILROOM_SECURE
value: "false"
- name: MAILROOM_S3_ENDPOINT
value: "rapidpro-minio:9000"
- name: MAILROOM_S3_SESSIONS_BUCKET
value: temba-sessions
- name: MAILROOM_S3_ATTACHMENTS_BUCKET
value: temba-attachments
- name: MAILROOM_S3_LOGS_BUCKET
value: temba-logs


---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.mailroom.service.name }}
labels:
app: {{ .Values.mailroom.name }}
spec:
ports:
- port: {{ .Values.mailroom.service.port }}
targetPort: {{ .Values.mailroom.service.targetPort }}
protocol: TCP
name: http
selector:
app: {{ .Values.mailroom.service.name }}
31 changes: 31 additions & 0 deletions sandbox-demo-builder/blocks/rapidpro/templates/minio-client.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: minio-client
labels:
app: minio-client
spec:
replicas: 1
selector:
matchLabels:
app: minio-client
template:
metadata:
labels:
app: minio-client
spec:
containers:
- name: minio-client
image: oleksiidn/minio-client:logs
imagePullPolicy: {{ .Values.mailroom.containers.imagePullPolicy }}

ports:
- containerPort: 8060
env:
- name: MINIO_HOST
value: "rapidpro-minio:9000"
- name: MINIO_ACCESS_KEY
value: "admin"
- name: MINIO_SECRET_KEY
value: "admin123"

61 changes: 61 additions & 0 deletions sandbox-demo-builder/blocks/rapidpro/templates/postgres.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ .Values.postgresql.service.name }}
namespace: {{ .Release.Namespace }}
labels:
app: {{ .Values.postgresql.service.name }}
spec:
replicas: 1
serviceName: {{ .Values.postgresql.service.name }}
selector:
matchLabels:
app: {{ .Values.postgresql.service.name }}
template:
metadata:
labels:
app: {{ .Values.postgresql.service.name }}
spec:
containers:
- image: {{ .Values.postgresql.containers.image }}
name: {{ .Values.postgresql.containers.name }}
env:
- name: POSTGRES_DB
value: {{ .Values.postgresql.statefulset.databaseName }}
- name: POSTGRES_PASSWORD
value: {{ .Values.postgresql.statefulset.password }}
- name: POSTGRES_USER
value: {{ .Values.postgresql.statefulset.username }}

ports:
- containerPort: {{ .Values.postgresql.service.port }}
name: postgres
volumeMounts:
- name: {{ .Values.global.name }}
mountPath: {{ .Values.postgresql.statefulset.spec.mountPath }}
volumeClaimTemplates:
- metadata:
name: {{ .Values.global.name }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.postgresql.statefulset.spec.storage }}

---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.postgresql.service.name }}
namespace: {{ .Release.Namespace }}
labels:
app: {{ .Values.postgresql.service.name }}
spec:
ports:
- protocol: TCP
port: {{ .Values.postgresql.service.port }}
targetPort: {{ .Values.postgresql.service.port }}
selector:
app: {{ .Values.postgresql.service.name }}
clusterIP: None
102 changes: 102 additions & 0 deletions sandbox-demo-builder/blocks/rapidpro/templates/rapidpro.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.rapidpro.name }}
labels:
app: {{ .Values.rapidpro.name }}
spec:
replicas: 1
selector:
matchLabels:
app: rapidpro
template:
metadata:
labels:
app: {{ .Values.rapidpro.name }}
spec:
containers:
- name: {{ .Values.rapidpro.name }}
image: {{ .Values.rapidpro.containers.image }}
imagePullPolicy: {{ .Values.rapidpro.containers.imagePullPolicy }}
command: [ "/bin/sh", "-c" ]
args:
- |
set -e;
echo "DB_HOST: ${DB_HOST:-Not Set}"
echo "DB_USER: ${DB_USER:-Not Set}"
echo "DB_PORT: ${DB_PORT:-Not Set}"
echo "DB_PASSWORD: ${DB_PASSWORD:-Not Set}"
echo "CSRF_TRUSTED_ORIGINS: ${CSRF_TRUSTED_ORIGINS:-Not Set}"
echo "Running database migrations...";
poetry run python3 manage.py migrate;
echo "Starting the RapidPro web server...";
poetry run python3 manage.py runserver 0.0.0.0:8000;
ports:
- containerPort: {{.Values.rapidpro.service.port }}
env:
- name: DOMAIN_NAME
value: "https://rapidpro-bb.playground.sandbox-playground.com"
- name: ALLOWED_HOSTS
value: "https://rapidpro-bb.playground.sandbox-playground.com"
- name: TEMBA_HOST
value: "https://rapidpro-bb.playground.sandbox-playground.com"
- name: CSRF_TRUSTED_ORIGINS
value: "https://rapidpro-bb.playground.sandbox-playground.com"
- name: CORS_ORIGIN_WHITELIST
value: "https://rapidpro-bb.playground.sandbox-playground.com"
- name: CSRF_COOKIE_DOMAIN
value: ".sandbox-playground.com"
- name: DEBUG
value: "True"
- name: DJANGO_LOG_LEVEL
value: "DEBUG"
- name: DJANGO_REQUEST_LOG_LEVEL
value: "DEBUG"
- name: DJANGO_SECURITY_LOG_LEVEL
value: "DEBUG"
- name: DB_HOST
value: {{.Values.postgresql.service.name}}
- name: DB_PORT
value: "5432"
- name: DB_NAME
value: {{.Values.postgresql.statefulset.databaseName}}
- name: DB_USER
value: {{.Values.postgresql.statefulset.username}}
- name: DB_PASSWORD
value: {{.Values.postgresql.statefulset.password}}
- name: REMOTE_CONTAINERS
value: "true"
- name: CSRF_COOKIE_SAMESITE
value: "None"
- name: CSRF_COOKIE_SECURE
value: "False"
- name: SECURE_BROWSER_XSS_FILTER
value: "False"
- name: SECURE_CONTENT_TYPE_NOSNIFF
value: "False"
- name: SECURE_HSTS_INCLUDE_SUBDOMAINS
value: "False"
- name: SECURE_SSL_REDIRECT
value: "True"
- name: SESSION_COOKIE_SECURE
value: "False"
- name: MAILROOM_URL
value: "http://mailroom:8090"



---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.rapidpro.service.name }}
labels:
app: {{ .Values.rapidpro.name }}
spec:
ports:
- port: {{ .Values.rapidpro.service.port }}
targetPort: {{ .Values.rapidpro.service.targetPort }}
protocol: TCP
name: http
selector:
app: {{ .Values.rapidpro.service.name }}
Loading