Added deployment and development artifacts. 85/4185/3
authoragrawalgaurav <gaurav.agrawal@huawei.com>
Thu, 25 Mar 2021 05:37:58 +0000 (11:07 +0530)
committeragrawalgaurav <gaurav.agrawal@huawei.com>
Thu, 25 Mar 2021 06:21:55 +0000 (11:51 +0530)
Signed-off-by: agrawalgaurav <gaurav.agrawal@huawei.com>
Change-Id: I0a33be3aa999a7de5693fa5d05646fe5124a2cb1

example-apps/ROBO/Deployment/robo-dep.yaml [deleted file]
example-apps/ROBO/deployment/SmartShelf_description.md [new file with mode: 0644]
example-apps/ROBO/deployment/SmartShelf_icon.png [new file with mode: 0644]
example-apps/ROBO/deployment/smartshelf-deployment.yaml [new file with mode: 0644]

diff --git a/example-apps/ROBO/Deployment/robo-dep.yaml b/example-apps/ROBO/Deployment/robo-dep.yaml
deleted file mode 100644 (file)
index 3137b90..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: robo-deployment
-spec:
-  replicas: 2
-  selector:
-    matchLabels:
-      app: robo
-  template:
-    metadata:
-      labels:
-        app: robo
-    spec:
-      containers:
-        - name: robo
-          image: ealtedge/robo
-          ports:
-            - containerPort: 80
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: robo-service
-spec:
-  type: NodePort
-  selector:
-    app: robo
-  ports:
-    - protocol: "TCP"
-      port: 8000
-      targetPort: 80
-      nodePort: 30001
diff --git a/example-apps/ROBO/deployment/SmartShelf_description.md b/example-apps/ROBO/deployment/SmartShelf_description.md
new file mode 100644 (file)
index 0000000..0835c76
--- /dev/null
@@ -0,0 +1,31 @@
+# Smart Shelf Application
+
+This application is an entry level application to demonstrate Remote Office Branch Office usecase (ROBO) for Retail Enterprise for scenario wherein there is a retail chain comprising of multiple retail stores and a retail headquater. 
+The application provides Smart Shelf solution to monitor shelf's for a retail chain.
+
+Why Smart Shelf solution:
+Smart Shelf is a technological breakthrough that enhances the overall shopping experience and improves a store’s operational efficiency in terms of stock misplacement and notify empty shelves.
+Smart shelf benefits:
+- Smart Shelves can notify empty shelf for items when needed without requiring humans, making it easier to prevent
+ shortages of popular items at peak times.
+- Smart Shelves allow retailers to make more informed decisions about stocking and inventory, notify the back-end
+ system about the existing quantity of items on the shelves, alert when product levels are running low and when items are misplaced.
+- Provides access to the store or shelf information remotely, enables visibility of stock position, cross and up
+ selling of products.
+- Better customer experience with proper inventory for each shelf.
+
+Available Solutions:
+- Camera based with Video analytics solution
+- weight sensors/optical sensors based solutions
+This application is based on 1st solution
+Why Edge: 
+This use case demands for low latency, jitter for scenarios like theft detection, stock misplacement. 
+Currently available in-retail enterprise solutions, wherein in store deployment of compute/storage resources
+ are done, consumes store spaces and are not cost effective. 5G Telco edge based solution is a need here and this
+  application demonstrates the same.
+  
+This application is developed as part of Akraino EALTEdge BP using EdgeGallery as an upstream project. Kindly refer
+ below link to get more insights about this application:
+https://wiki.akraino.org/display/AK/EALT-EDGE+Landing+Application
diff --git a/example-apps/ROBO/deployment/SmartShelf_icon.png b/example-apps/ROBO/deployment/SmartShelf_icon.png
new file mode 100644 (file)
index 0000000..def1751
Binary files /dev/null and b/example-apps/ROBO/deployment/SmartShelf_icon.png differ
diff --git a/example-apps/ROBO/deployment/smartshelf-deployment.yaml b/example-apps/ROBO/deployment/smartshelf-deployment.yaml
new file mode 100644 (file)
index 0000000..8ceb09d
--- /dev/null
@@ -0,0 +1,217 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: robo-deployment
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: robo
+  template:
+    metadata:
+      labels:
+        app: robo
+    spec:
+      containers:
+        - name: robo
+          image: ealtedge/robo
+          ports:
+            - containerPort: 80
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: robo-service
+spec:
+  type: NodePort
+  selector:
+    app: robo
+  ports:
+    - protocol: "TCP"
+      port: 8000
+      targetPort: 80
+      nodePort: 30001
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: backup-be
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: backup
+  template:
+    metadata:
+      labels:
+        app: backup
+    spec:
+      volumes:
+        - name: task-pv-storage
+          persistentVolumeClaim:
+            claimName: task-pv-claim
+      containers:
+        - name: backup-be
+          image: ealtedge/robo-be
+          env:
+            - name: KUBE_CONFIG
+              value: "/usr/app/.kube/config"
+            - name: HOSTIP
+              value: "159.138.129.53"
+          ports:
+            - containerPort: 8091
+          volumeMounts:
+            - name: task-pv-storage
+              mountPath: "/usr/app/.kube/"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: backup-be
+spec:
+  selector:
+    app: backup
+  type: NodePort
+  ports:
+    - port: 8091
+      name: service-port
+      nodePort: 30081
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: task-pv-volume
+  labels:
+    type: local
+spec:
+  storageClassName: manual
+  capacity:
+    storage: 1Gi
+  accessModes:
+    - ReadWriteOnce
+  hostPath:
+    path: "/root/.kube/"
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: task-pv-claim
+spec:
+  storageClassName: manual
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 1Gi
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: inventory-be
+  namespace: my-test
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: inventory
+  template:
+    metadata:
+      labels:
+        app: inventory
+    spec:
+      containers:
+        - name: inventory-be
+          image: ealtedge/inventory-be:v1.3
+          env:
+            - name: INFLUXDB_IP
+              value: "159.138.129.53"
+            - name: INFLUXDB_PORT
+              value: "30270"
+            - name: OBJ_DET_SER_IP
+              value: "159.138.129.53"
+            - name: OBJ_DET_SER_PORT
+              value: "30093"
+          ports:
+            - containerPort: 9995
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: inventory-be
+  namespace: my-test
+spec:
+  selector:
+    app: inventory
+  type: NodePort
+  ports:
+    - port: 9995
+      name: service-port
+      nodePort: 30092
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: obj-detection
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: detection
+  template:
+    metadata:
+      labels:
+        app: detection
+    spec:
+      containers:
+        - name: obj-detection
+          image: ealtedge/obj-detection
+          ports:
+            - containerPort: 9999
+          volumeMounts:
+            - name: host-path-storage
+              mountPath: "/usr/app/model/"
+      volumes:
+        - name: host-path-storage
+          persistentVolumeClaim:
+            claimName: host-path-claim
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: host-path-pv
+  labels:
+    type: local
+spec:
+  storageClassName: manual
+  capacity:
+    storage: 2Gi
+  accessModes:
+    - ReadWriteOnce
+  hostPath:
+    path: "/root/model/"
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: host-path-claim
+spec:
+  storageClassName: manual
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 2Gi
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: obj-detection
+spec:
+  selector:
+    app: detection
+  type: NodePort
+  ports:
+    - port: 9999
+      name: service-port
+      nodePort: 30093