├── .dockerignore ├── .env ├── .env.example ├── .github └── workflows │ ├── dockerimage.yml │ └── dockerimage2.yml.bkp ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── babel.config.js ├── docker-compose.yml ├── docs └── screen-shots │ ├── Home.png │ ├── action.png │ ├── detail.png │ └── list-images.png ├── flux-ui ├── .helmignore ├── Chart.yaml ├── flux-ui-0.1.0.tgz ├── index.yaml ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── configmap.yml │ ├── deployment.yaml │ ├── ingress.yaml │ ├── service.yaml │ └── tests │ │ └── test-connection.yaml └── values.yaml ├── nginx.conf.esh ├── package.json ├── public ├── favicon.png └── index.html ├── setup.sh ├── src ├── App.vue ├── assets │ └── logo.png ├── components │ ├── ContainerInfo.vue │ ├── JobStatus.vue │ └── ListImages.vue └── main.js ├── vue.config.js └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | flux-ui 2 | dist 3 | node_modules 4 | .github 5 | .idea 6 | docker-compose.yml 7 | README.md 8 | Dockerfile 9 | docs -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | VUE_APP_API=/api/ 2 | VUE_APP_PROXY_TARGET=http://flux/ 3 | 4 | #docker env 5 | BASE_API=/api/ 6 | END_POINT=http://flux/ -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | VUE_APP_API=/api/ 2 | VUE_APP_PROXY_TARGET=http://flux/ 3 | 4 | #docker env 5 | BASE_API=/api/ 6 | END_POINT=http://flux/ -------------------------------------------------------------------------------- /.github/workflows/dockerimage.yml: -------------------------------------------------------------------------------- 1 | name: Publish Docker 2 | on: [push] 3 | jobs: 4 | build: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@master 8 | # - name: Build, Tag, Publish Docker 9 | # uses: HurricanKai/Publish-Docker-Github-Action@1.12.1 10 | # if: contains(github.ref, 'refs/tags/v') 11 | # with: 12 | # name: sureshamk/flux-ui 13 | # username: ${{ secrets.DOCKER_USERNAME }} 14 | # password: ${{ secrets.DOCKER_PASSWORD }} 15 | # cache: true 16 | # tagging: true 17 | - name: Build, Tag, Publish Docker 18 | uses: mr-smithers-excellent/docker-build-push@v1.0 19 | with: 20 | image: sureshamk/flux-ui 21 | registry: docker.io 22 | dockerfile: Dockerfile 23 | username: ${{ secrets.DOCKER_USERNAME }} 24 | password: ${{ secrets.DOCKER_PASSWORD }} -------------------------------------------------------------------------------- /.github/workflows/dockerimage2.yml.bkp: -------------------------------------------------------------------------------- 1 | name: Docker Image CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v1 10 | - name: Docker login 11 | run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} 12 | - name: Build the Docker image 13 | run: docker build . --file Dockerfile --tag my-image-name:$(date +%s) 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | # Log files 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.sw? 21 | *.gor -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # build stage 2 | FROM node:lts-alpine as build-stage 3 | WORKDIR /app 4 | COPY package*.json ./ 5 | RUN npm install 6 | COPY . . 7 | RUN npm run build 8 | 9 | # production stage 10 | FROM nginx:stable-alpine as production-stage 11 | COPY --from=build-stage /app/dist /usr/share/nginx/html 12 | RUN apk add esh 13 | COPY nginx.conf.esh setup.sh / 14 | EXPOSE 80 15 | ENV BASE_API '/' 16 | ENV END_POINT 'http://flux' 17 | CMD ["sh", "-c", "sh setup.sh && nginx -g 'daemon off;'"] 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020 Suresh Velusamy (Naereen), https://github.com/sureshamk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/sureshamk/flux-ui/graphs/commit-activity) 2 | [![GitHub license](https://img.shields.io/github/license/sureshamk/flux-ui.svg)](https://github.com/sureshamk/flux-ui/blob/master/LICENSE) 3 | [![GitHub contributors](https://img.shields.io/github/contributors/sureshamk/flux-ui.svg)](https://GitHub.com/sureshamk/flux-ui/graphs/contributors/) 4 | [![GitHub issues](https://img.shields.io/github/issues/sureshamk/flux-ui.svg)](https://GitHub.com/sureshamk/flux-ui/issues/) 5 | 6 | # Flux-ui 7 | This is project for providing web ui for fluxctl. 8 | 9 | ## Install through helm (tested in helm-v3) 10 | 11 | ```shell script 12 | 13 | $ helm repo add flux-ui 'https://raw.githubusercontent.com/sureshamk/flux-ui/master/flux-ui' 14 | $ helm repo update 15 | $ helm search repo flux-ui 16 | NAME CHART VERSION APP VERSION DESCRIPTION 17 | flux-ui/flux-ui 0.1.0 1.0 A Helm chart for flux-ui to interact with fluxctl 18 | 19 | $ helm install flux-web-ui flux-ui/flux-ui --set config.END_POINT="http://flux:3030/" 20 | ``` 21 | Note: `config.END_POINT="http://flux:3030/"` this end point should be valid flux service running on your cluster 22 | 23 | 24 | ### Home 25 | 26 | 27 | ### View workloads 28 | 29 | 30 | ### deal with actions 31 | * Lock / unlock the workload 32 | * Automate / de-automate the workload 33 | * Release the workload 34 | * sync 35 | 36 | 37 | 38 | ### List images 39 | 40 | 41 | #### Built with 42 | * vue.js 43 | 44 | ##### TODO 45 | * please raise a feature request :) 46 | 47 | ## Support 48 | 49 | * Please don't write mails directly to the maintainers. 50 | * Use the Github issue tracker instead. 51 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | client: 4 | build: . 5 | ports: 6 | - "8081:80" 7 | env_file: 8 | - .env.local 9 | # volumes: 10 | # - ./nginx.conf:/etc/nginx/conf.d/default.conf 11 | # - ./nginx.conf.esh:/nginx.conf.esh 12 | # - ./setup.sh:/setup.sh -------------------------------------------------------------------------------- /docs/screen-shots/Home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshamk/flux-ui/e7a6c463e704d18c2ec57aa54d7a9090d3a99869/docs/screen-shots/Home.png -------------------------------------------------------------------------------- /docs/screen-shots/action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshamk/flux-ui/e7a6c463e704d18c2ec57aa54d7a9090d3a99869/docs/screen-shots/action.png -------------------------------------------------------------------------------- /docs/screen-shots/detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshamk/flux-ui/e7a6c463e704d18c2ec57aa54d7a9090d3a99869/docs/screen-shots/detail.png -------------------------------------------------------------------------------- /docs/screen-shots/list-images.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshamk/flux-ui/e7a6c463e704d18c2ec57aa54d7a9090d3a99869/docs/screen-shots/list-images.png -------------------------------------------------------------------------------- /flux-ui/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | .vscode/ 23 | -------------------------------------------------------------------------------- /flux-ui/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for flux-ui to interact with fluxctl 4 | name: flux-ui 5 | version: 0.1.0 6 | -------------------------------------------------------------------------------- /flux-ui/flux-ui-0.1.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshamk/flux-ui/e7a6c463e704d18c2ec57aa54d7a9090d3a99869/flux-ui/flux-ui-0.1.0.tgz -------------------------------------------------------------------------------- /flux-ui/index.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | entries: 3 | flux-ui: 4 | - apiVersion: v1 5 | appVersion: "1.0" 6 | created: "2020-01-11T01:54:28.916949+05:30" 7 | description: A Helm chart for flux-ui to interact with fluxctl 8 | digest: c06168b3d06ada4b772b525e7db6033a762d305edbbb3df97eadbe3c28d09d82 9 | name: flux-ui 10 | urls: 11 | - flux-ui-0.1.0.tgz 12 | version: 0.1.0 13 | generated: "2020-01-11T01:54:28.916161+05:30" 14 | -------------------------------------------------------------------------------- /flux-ui/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application URL by running these commands: 2 | {{- if .Values.ingress.enabled }} 3 | {{- range $host := .Values.ingress.hosts }} 4 | {{- range .paths }} 5 | http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }} 6 | {{- end }} 7 | {{- end }} 8 | {{- else if contains "NodePort" .Values.service.type }} 9 | export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "flux-ui.fullname" . }}) 10 | export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") 11 | echo http://$NODE_IP:$NODE_PORT 12 | {{- else if contains "LoadBalancer" .Values.service.type }} 13 | NOTE: It may take a few minutes for the LoadBalancer IP to be available. 14 | You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "flux-ui.fullname" . }}' 15 | export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "flux-ui.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') 16 | echo http://$SERVICE_IP:{{ .Values.service.port }} 17 | {{- else if contains "ClusterIP" .Values.service.type }} 18 | export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "flux-ui.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 19 | echo "Visit http://127.0.0.1:8080 to use your application" 20 | kubectl port-forward $POD_NAME 8080:80 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /flux-ui/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "flux-ui.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "flux-ui.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "flux-ui.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "flux-ui.labels" -}} 38 | app.kubernetes.io/name: {{ include "flux-ui.name" . }} 39 | helm.sh/chart: {{ include "flux-ui.chart" . }} 40 | app.kubernetes.io/instance: {{ .Release.Name }} 41 | {{- if .Chart.AppVersion }} 42 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 43 | {{- end }} 44 | app.kubernetes.io/managed-by: {{ .Release.Service }} 45 | {{- end -}} 46 | -------------------------------------------------------------------------------- /flux-ui/templates/configmap.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ include "flux-ui.fullname" . }} 5 | data: 6 | {{- toYaml .Values.config | nindent 4 }} 7 | 8 | -------------------------------------------------------------------------------- /flux-ui/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ include "flux-ui.fullname" . }} 5 | labels: 6 | {{ include "flux-ui.labels" . | indent 4 }} 7 | spec: 8 | replicas: {{ .Values.replicaCount }} 9 | selector: 10 | matchLabels: 11 | app.kubernetes.io/name: {{ include "flux-ui.name" . }} 12 | app.kubernetes.io/instance: {{ .Release.Name }} 13 | template: 14 | metadata: 15 | labels: 16 | app.kubernetes.io/name: {{ include "flux-ui.name" . }} 17 | app.kubernetes.io/instance: {{ .Release.Name }} 18 | spec: 19 | {{- with .Values.imagePullSecrets }} 20 | imagePullSecrets: 21 | {{- toYaml . | nindent 8 }} 22 | {{- end }} 23 | containers: 24 | - name: {{ .Chart.Name }} 25 | image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" 26 | imagePullPolicy: {{ .Values.image.pullPolicy }} 27 | ports: 28 | - name: http 29 | containerPort: 80 30 | protocol: TCP 31 | envFrom: 32 | - configMapRef: 33 | name: {{ include "flux-ui.fullname" . }} 34 | livenessProbe: 35 | httpGet: 36 | path: / 37 | port: http 38 | readinessProbe: 39 | httpGet: 40 | path: / 41 | port: http 42 | resources: 43 | {{- toYaml .Values.resources | nindent 12 }} 44 | {{- with .Values.nodeSelector }} 45 | nodeSelector: 46 | {{- toYaml . | nindent 8 }} 47 | {{- end }} 48 | {{- with .Values.affinity }} 49 | affinity: 50 | {{- toYaml . | nindent 8 }} 51 | {{- end }} 52 | {{- with .Values.tolerations }} 53 | tolerations: 54 | {{- toYaml . | nindent 8 }} 55 | {{- end }} 56 | -------------------------------------------------------------------------------- /flux-ui/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress.enabled -}} 2 | {{- $fullName := include "flux-ui.fullname" . -}} 3 | apiVersion: extensions/v1beta1 4 | kind: Ingress 5 | metadata: 6 | name: {{ $fullName }} 7 | labels: 8 | {{ include "flux-ui.labels" . | indent 4 }} 9 | {{- with .Values.ingress.annotations }} 10 | annotations: 11 | {{- toYaml . | nindent 4 }} 12 | {{- end }} 13 | spec: 14 | {{- if .Values.ingress.tls }} 15 | tls: 16 | {{- range .Values.ingress.tls }} 17 | - hosts: 18 | {{- range .hosts }} 19 | - {{ . | quote }} 20 | {{- end }} 21 | secretName: {{ .secretName }} 22 | {{- end }} 23 | {{- end }} 24 | rules: 25 | {{- range .Values.ingress.hosts }} 26 | - host: {{ .host | quote }} 27 | http: 28 | paths: 29 | {{- range .paths }} 30 | - path: {{ . }} 31 | backend: 32 | serviceName: {{ $fullName }} 33 | servicePort: http 34 | {{- end }} 35 | {{- end }} 36 | {{- end }} 37 | -------------------------------------------------------------------------------- /flux-ui/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "flux-ui.fullname" . }} 5 | labels: 6 | {{ include "flux-ui.labels" . | indent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: http 12 | protocol: TCP 13 | name: http 14 | selector: 15 | app.kubernetes.io/name: {{ include "flux-ui.name" . }} 16 | app.kubernetes.io/instance: {{ .Release.Name }} 17 | -------------------------------------------------------------------------------- /flux-ui/templates/tests/test-connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: "{{ include "flux-ui.fullname" . }}-test-connection" 5 | labels: 6 | {{ include "flux-ui.labels" . | indent 4 }} 7 | annotations: 8 | "helm.sh/hook": test-success 9 | spec: 10 | containers: 11 | - name: wget 12 | image: busybox 13 | command: ['wget'] 14 | args: ['{{ include "flux-ui.fullname" . }}:{{ .Values.service.port }}'] 15 | restartPolicy: Never 16 | -------------------------------------------------------------------------------- /flux-ui/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for flux-ui. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | replicaCount: 1 6 | 7 | image: 8 | repository: sureshamk/flux-ui 9 | tag: latest 10 | # pullPolicy: Always 11 | pullPolicy: IfNotPresent 12 | 13 | imagePullSecrets: [] 14 | nameOverride: "" 15 | fullnameOverride: "" 16 | config: 17 | END_POINT: "http://flux:3030/" 18 | BASE_API: "/api/" 19 | 20 | service: 21 | type: ClusterIP 22 | port: 80 23 | 24 | ingress: 25 | enabled: false 26 | annotations: {} 27 | # kubernetes.io/ingress.class: nginx 28 | # kubernetes.io/tls-acme: "true" 29 | hosts: 30 | - host: example.mysite.tk 31 | paths: 32 | - / 33 | 34 | tls: [] 35 | # - secretName: chart-example-tls 36 | # hosts: 37 | # - chart-example.local 38 | 39 | resources: {} 40 | # We usually recommend not to specify default resources and to leave this as a conscious 41 | # choice for the user. This also increases chances charts run on environments with little 42 | # resources, such as Minikube. If you do want to specify resources, uncomment the following 43 | # lines, adjust them as necessary, and remove the curly braces after 'resources:'. 44 | # limits: 45 | # cpu: 100m 46 | # memory: 128Mi 47 | # requests: 48 | # cpu: 100m 49 | # memory: 128Mi 50 | 51 | nodeSelector: {} 52 | 53 | tolerations: [] 54 | 55 | affinity: {} 56 | -------------------------------------------------------------------------------- /nginx.conf.esh: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name localhost; 4 | 5 | #charset koi8-r; 6 | #access_log /var/log/nginx/host.access.log main; 7 | 8 | location / { 9 | root /usr/share/nginx/html; 10 | index index.html index.htm; 11 | } 12 | 13 | #error_page 404 /404.html; 14 | 15 | # redirect server error pages to the static page /50x.html 16 | # 17 | error_page 500 502 503 504 /50x.html; 18 | location = /50x.html { 19 | root /usr/share/nginx/html; 20 | } 21 | <%# if [ -z $api ]; then -%> 22 | location /api/ { 23 | proxy_pass <%= $api %>; 24 | } 25 | <%# fi -%> 26 | 27 | 28 | } 29 | 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flux-ui", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "axios": "^0.19.0", 12 | "core-js": "^3.3.2", 13 | "vue": "^2.6.10" 14 | }, 15 | "devDependencies": { 16 | "@vue/cli-plugin-babel": "^4.0.0", 17 | "@vue/cli-plugin-eslint": "^4.0.0", 18 | "@vue/cli-service": "^4.0.0", 19 | "babel-eslint": "^10.0.3", 20 | "eslint": "^5.16.0", 21 | "eslint-plugin-vue": "^5.0.0", 22 | "vue-template-compiler": "^2.6.10" 23 | }, 24 | "eslintConfig": { 25 | "root": true, 26 | "env": { 27 | "node": true 28 | }, 29 | "extends": [ 30 | "plugin:vue/essential", 31 | "eslint:recommended" 32 | ], 33 | "rules": {}, 34 | "parserOptions": { 35 | "parser": "babel-eslint" 36 | } 37 | }, 38 | "postcss": { 39 | "plugins": { 40 | "autoprefixer": {} 41 | } 42 | }, 43 | "browserslist": [ 44 | "> 1%", 45 | "last 2 versions" 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshamk/flux-ui/e7a6c463e704d18c2ec57aa54d7a9090d3a99869/public/favicon.png -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | flux-ui 11 | 14 | 15 | 16 | 20 |
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | sed -i "s,,," /usr/share/nginx/html/index.html 3 | 4 | echo "configured" $BASE_API 5 | echo "seting nginx " $END_POINT 6 | esh -o /etc/nginx/conf.d/default.conf /nginx.conf.esh api=$END_POINT 7 | echo "seting nginx done" 8 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 239 | 240 | 500 | 501 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sureshamk/flux-ui/e7a6c463e704d18c2ec57aa54d7a9090d3a99869/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/ContainerInfo.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 22 | 23 | 24 | 27 | -------------------------------------------------------------------------------- /src/components/JobStatus.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 25 | 26 | -------------------------------------------------------------------------------- /src/components/ListImages.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 41 | 42 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | Vue.prototype.base_api = window.BASE_API || '/' 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | devServer: { 3 | proxy: { 4 | '^/api': { 5 | target: process.env.VUE_APP_PROXY_TARGET 6 | } 7 | } 8 | } 9 | }; --------------------------------------------------------------------------------