aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-demo/helloworld-flask
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-demo/helloworld-flask')
-rwxr-xr-xrecipes-demo/helloworld-flask/helloworld-flask/flask-app21
-rw-r--r--recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml32
-rw-r--r--recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml12
-rw-r--r--recipes-demo/helloworld-flask/helloworld-flask_0.1.bb44
4 files changed, 109 insertions, 0 deletions
diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app b/recipes-demo/helloworld-flask/helloworld-flask/flask-app
new file mode 100755
index 00000000..15ecde93
--- /dev/null
+++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app
@@ -0,0 +1,21 @@
+#!/usr/bin/python3
+
+# Example flask application for containerization
+#
+# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com>
+# License: MIT (see COPYING.MIT at the root of the repository for terms)
+
+from flask import Flask
+
+app = Flask(__name__)
+
+@app.route('/yocto/', methods=['GET', 'POST'])
+def welcome():
+ return "Hello from Yocto!"
+
+@app.route('/oe/', methods=['GET', 'POST'])
+def welcometooe():
+ return "Hello from OpenEmbedded!"
+
+if __name__ == '__main__':
+ app.run(host='0.0.0.0', port=9000)
diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml b/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml
new file mode 100644
index 00000000..f2c8bbe2
--- /dev/null
+++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml
@@ -0,0 +1,32 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: @NAME@
+spec:
+ selector:
+ matchLabels:
+ app: @APPNAME@
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: @APPNAME@
+ spec:
+ containers:
+ - name: @CONTAINERNAME@
+ image: @CONTAINERIMAGE@
+ ports:
+ - containerPort: @CONTAINERPORT@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: yocto-flask-service
+spec:
+ ports:
+ - port: @EXTERNALPORT@
+ targetPort: @CONTAINERPORT@
+ name: http
+ selector:
+ app: @APPNAME@
+
diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml b/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml
new file mode 100644
index 00000000..85c0362e
--- /dev/null
+++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Pod
+metadata:
+ name: @NAME@
+spec:
+ containers:
+ - name: @CONTAINERNAME@
+ image: @CONTAINERIMAGE@
+ ports:
+ - containerPort: @CONTAINERPORT@
+
+
diff --git a/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb b/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb
new file mode 100644
index 00000000..896e45fd
--- /dev/null
+++ b/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb
@@ -0,0 +1,44 @@
+DESCRIPTION = "Demo flask application"
+HOMEPAGE = "https://yoctoproject.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = "file://flask-app \
+ file://flask-app.yaml \
+ file://flask-app-service.yaml"
+
+DEPLOY_TYPE ?= "pod"
+
+NAME ?= "demo"
+APPNAME ?= "yocto-app"
+CONTAINERNAME ?= "yocto-container"
+CONTAINERIMAGE ?= "zeddii/app-container:latest"
+CONTAINERPORT ?= "9000"
+EXTERNALPORT ?= "10000"
+
+do_install() {
+
+ for tgt in flask-app.yaml flask-app-service.yaml; do
+ sed -i 's%\@NAME\@%${NAME}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@APPNAME\@%${APPNAME}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@CONTAINERNAME\@%${CONTAINERNAME}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@CONTAINERIMAGE\@%${CONTAINERIMAGE}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@CONTAINERPORT\@%${CONTAINERPORT}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@EXTERNALPORT\@%${EXTERNALPORT}%g' ${WORKDIR}/$tgt
+ done
+
+ install -d ${D}${bindir}/
+ install -m 755 ${WORKDIR}/flask-app ${D}${bindir}/
+
+ install -d ${D}${sysconfdir}/deploy
+ install -m 644 ${WORKDIR}/flask-app.yaml ${D}${sysconfdir}/
+ install -m 644 ${WORKDIR}/flask-app-service.yaml ${D}${sysconfdir}/
+}
+
+RDEPENDS:${PN} += "python3-core python3-flask"
+
+PACKAGES:prepend = "${PN}-deploy "
+FILES:${PN}-deploy = "${sysconfdir}/*"
+
+# this rdepends should be conditional on a debug PACKAGECONFIG
+# RDEPENDS:${PN} += "busybox"