From 81e0954a71cb91e82ee576c8210b0032b1ff6229 Mon Sep 17 00:00:00 2001 From: Jaromil Date: Sat, 13 Oct 2018 23:30:00 +0200 Subject: [PATCH] more web usage simplification and dashboard in place --- .../resources/public/static/img/cafudda.jpg | Bin 0 -> 72683 bytes .../resources/public/static/img/ec_logo.png | Bin 0 -> 19902 bytes clojure_frontend/src/toaster/bulma.clj | 17 ++-- clojure_frontend/src/toaster/handler.clj | 94 +++++++++++------- clojure_frontend/src/toaster/jobs.clj | 23 +---- clojure_frontend/src/toaster/session.clj | 17 ---- clojure_frontend/src/toaster/views.clj | 18 ++-- 7 files changed, 83 insertions(+), 86 deletions(-) create mode 100644 clojure_frontend/resources/public/static/img/cafudda.jpg create mode 100644 clojure_frontend/resources/public/static/img/ec_logo.png diff --git a/clojure_frontend/resources/public/static/img/cafudda.jpg b/clojure_frontend/resources/public/static/img/cafudda.jpg new file mode 100644 index 0000000000000000000000000000000000000000..90cf4a857b8eea3f8ace31c7be6f110ce4f2d36d GIT binary patch literal 72683 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 z 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 z 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 V@V&@-8bkm9002ovPDHLkV1nu}pFaQq literal 0 HcmV?d00001 diff --git a/clojure_frontend/src/toaster/bulma.clj b/clojure_frontend/src/toaster/bulma.clj index 26f949f..3c16c41 100644 --- a/clojure_frontend/src/toaster/bulma.clj +++ b/clojure_frontend/src/toaster/bulma.clj @@ -71,20 +71,19 @@ "text/html; charset=utf-8"} :body (page/html5 (render-head) - [:body - ;; navbar-guest - body - (render-footer)])}) + ;; navbar-guest + body + (render-footer))}) ([account body] {:headers {"Content-Type" "text/html; charset=utf-8"} :body (page/html5 (render-head) - [:body ;; (if (empty? account) - ;; navbar-guest - ;; navbar-account) - body - (render-footer)])})) + ;; (if (empty? account) + ;; navbar-guest + ;; navbar-account) + body + (render-footer))})) (defn notify "render a notification message without ending the page" diff --git a/clojure_frontend/src/toaster/handler.clj b/clojure_frontend/src/toaster/handler.clj index 59f526c..30284f1 100644 --- a/clojure_frontend/src/toaster/handler.clj +++ b/clojure_frontend/src/toaster/handler.clj @@ -37,7 +37,7 @@ [toaster.session :as s] [toaster.config :as conf] - [toaster.bulma :as web] + [toaster.bulma :as web :refer [render notify login-form]] [toaster.ring :as ring] [toaster.views :as views] [toaster.jobs :as job]) @@ -46,18 +46,34 @@ (defonce config (conf/load-config "toaster" conf/default-settings)) +(defn auth-wrap [request fun] + (f/attempt-all + [db (s/check-database) + config (s/check-config request) + account (if (conf/q config [:webserver :mock-auth]) + {:email "mock@dyne.org" + :name "MockUser" + :activated true} + ;; else + (s/check-account request))] + (fun request config account) + (f/when-failed [e] + (web/render [:body + (web/notify (f/message e) "is-error") + web/login-form])))) + (defn- login-page [request form] (f/attempt-all [acct (s/check-account request)] (web/render acct - [:div {:class "container"} + [:body [:h1 {:class "title"} (str "Already logged in with account: " (:email acct))] [:h2 {:class "subtitle"} [:a {:href "/logout"} "Logout"]]]) (f/when-failed [e] - (web/render form)))) + (web/render [:body form])))) (defroutes app-routes @@ -67,49 +83,57 @@ [db (s/check-database) conf (s/check-config request)] (f/if-let-ok? [account (s/check-account request)] - (web/render (views/dashboard account)) + (web/render [:body (views/dashboard account)]) ;; else - (web/render web/login-form)) + (web/render [:body web/login-form])) (f/when-failed[e] - (web/render (web/notify (f/message e) "is-error"))))) + (web/render [:body (web/notify (f/message e) "is-error")])))) ;; NEW ROUTES HERE (POST "/dockerfile" request (->> (fn [req conf acct] - (web/render acct - [:span (views/dockerfile-upload-post req conf acct) + (web/render acct + [:body + (views/dockerfile-upload-post req conf acct) (views/dashboard acct)])) - (s/auth-wrap request))) + (auth-wrap request))) ;; (GET "/list" request ;; (->> (fn [req conf acct] ;; (web/render acct (views/list-jobs acct))) - ;; (s/auth-wrap request))) + ;; (auth-wrap request))) (POST "/remove" request (->> (fn [req conf acct] - (web/render acct (views/remove-job req conf acct))) - (s/auth-wrap request))) + (web/render acct [:body + (views/remove-job req conf acct) + (views/dashboard acct)])) + (auth-wrap request))) (POST "/start" request (->> (fn [req conf acct] - (web/render acct (views/start-job req conf acct))) - (s/auth-wrap request))) + (web/render acct [:body + (views/start-job req conf acct) + (views/dashboard acct)])) + (auth-wrap request))) (POST "/view" request (->> (fn [req conf acct] - (web/render acct (views/view-job req conf acct))) - (s/auth-wrap request))) + (web/render acct [:body + (views/view-job req conf acct) + (views/dashboard acct)])) + (auth-wrap request))) (GET "/error" request (->> (fn [req conf acct] - (web/render acct [:div - (web/notify "Generic Error Page" "is-error")])) - (s/auth-wrap request))) + (web/render acct [:body + (web/notify "Generic Error Page" "is-error") + (views/dashboard acct)])) + (auth-wrap request))) ;; JUST-AUTH ROUTES (GET "/login" request (login-page request web/login-form)) - + (POST "/login" request (f/attempt-all [username (s/param request :username) @@ -120,19 +144,19 @@ (let [session {:session {:config config :auth logged}}] (conj session - (web/render logged (views/dashboard logged)))) + (web/render logged [:body (views/dashboard logged)]))) ;; (web/render ;; logged ;; [:div ;; [:h1 "Logged in: " username] ;; views/welcome-menu]))) (f/when-failed [e] - (web/render (web/notify - (str "Login failed: " (f/message e)) "is-error"))))) + (web/render [:body (web/notify + (str "Login failed: " (f/message e)) "is-error")])))) (GET "/logout" request (conj {:session {:config config}} - (web/render [:div {:class "container"} + (web/render [:body [:h1 {:class "title"} "Logged out."]]))) (GET "/signup" request (login-page request web/signup-form)) @@ -154,19 +178,21 @@ password activation [])] - [:div + [:body [:h2 (str "Account created: " name " <" email ">")] [:h3 "Account pending activation."]] - (web/notify - (str "Failure creating account: " - (f/message signup)) "is-error"))) - (web/notify - "Repeat password didnt match" "is-error"))) + [:body + (web/notify + (str "Failure creating account: " + (f/message signup)) "is-error") + (login-page request web/signup-form)])) + [:body (web/notify + "Repeat password didnt match" "is-error")])) (f/when-failed [e] (web/render - (web/notify - (str "Sign-up failure: " (f/message e)) "is-error"))))) + [:body (web/notify + (str "Sign-up failure: " (f/message e)) "is-error")])))) (GET "/activate/:email/:activation-id" [email activation-id :as request] @@ -175,7 +201,7 @@ (get-in request [:headers "host"]) "/activate/" email "/" activation-id)] (web/render - [:div + [:body (f/if-let-failed? [act (auth/activate-account @ring/auth email @@ -195,7 +221,7 @@ (s/param request :message) "is-error"))) (route/resources "/") - (route/not-found (web/render (web/notify "Page Not Found" "is-error"))) + (route/not-found (web/render [:body (web/notify "Page Not Found" "is-error")])) ) ;; end of routes diff --git a/clojure_frontend/src/toaster/jobs.clj b/clojure_frontend/src/toaster/jobs.clj index 23f2576..730ca91 100644 --- a/clojure_frontend/src/toaster/jobs.clj +++ b/clojure_frontend/src/toaster/jobs.clj @@ -34,7 +34,7 @@ (str (q config [:jenkins :user]) "@" (q config [:jenkins :host]))) -(defn- sync_jobs [config arg1 arg2] +(defn sync_jobs [config arg1 arg2] (with-programs [ssh] (try @@ -42,7 +42,8 @@ (ssh-host config) "sync_jobs.py" arg1 arg2) (str/split #"\n")) - (catch Exception e (f/fail (str "ERROR in sync_jobs.py - " (.getMessage e))))))) + (catch Exception e (f/fail (str "ERROR in sync_jobs.py " + arg1 " " arg2 " - " (.getMessage e))))))) (defn- dockerlint [path] (with-programs [node] @@ -55,7 +56,7 @@ (defn add [path config account] (with-programs [ssh scp node] (let [tstamp (tc/to-long (time/now)) - jobname (str (:email account) "-vm_amd64-" tstamp) + jobname (str (:email account) "-vm_amd64_ascii-" tstamp) jobdir (str "/srv/toaster/" jobname)] (f/attempt-all [r_lint (dockerlint path) @@ -70,26 +71,12 @@ :account (dissoc account :password :activation-link) :lint (if (.contains r_lint "is OK") true false) :timestamp tstamp - :type "vm_amd64" + :type "vm_amd64_ascii" :dockerfile (slurp path)})] {:lint r_lint :job r_job} (f/when-failed [e] (f/fail (str "Job add '" jobname "' failure: " (f/message e)))))))) -(defn trash [jobid config] - (f/attempt-all [r_sync (sync_jobs config "-d" jobid)] - jobid - (f/when-failed [e] - (web/render-error - (str "Job remove failure: " (f/message e)))))) - -(defn start [jobid config] - (f/attempt-all [r_sync (sync_jobs config "-r" jobid)] - jobid - (f/when-failed [e] - (web/render-error - (str "Job start failure: " (f/message e)))))) - diff --git a/clojure_frontend/src/toaster/session.clj b/clojure_frontend/src/toaster/session.clj index f2090ce..cf16655 100644 --- a/clojure_frontend/src/toaster/session.clj +++ b/clojure_frontend/src/toaster/session.clj @@ -46,20 +46,3 @@ (if-let [db @ring/db] db (f/fail "No connection to database."))) - -(defn auth-wrap [request fun] - (f/attempt-all - [db (check-database) - config (check-config request) - account (if (conf/q config [:webserver :mock-auth]) - {:email "mock@dyne.org" - :name "MockUser" - :activated true} - ;; else - (check-account request))] - (fun request config account) - (f/when-failed [e] - (web/render [:span - (web/notify (f/message e) "is-error") - web/login-form - ])))) diff --git a/clojure_frontend/src/toaster/views.clj b/clojure_frontend/src/toaster/views.clj index b845512..9b57960 100644 --- a/clojure_frontend/src/toaster/views.clj +++ b/clojure_frontend/src/toaster/views.clj @@ -22,7 +22,7 @@ [clojure.string :as str] [clojure.contrib.humanize :as humanize :refer [datetime]] ;; [clojure.data.json :as json :refer [read-str]] - [toaster.bulma :as web] + [toaster.bulma :as web :refer [button notify render-yaml]] [toaster.session :as s] [toaster.ring :as ring] [toaster.jobs :as job] @@ -38,7 +38,7 @@ [hiccup.form :as hf])) (defn- box-list [account joblist] - [:div {:class "box column"} + [:div {:class "box"} [:h1 {:class "title"} (str "List all toaster jobs for " (:name account))] [:table {:class "table is-fullwidth is-hoverable"} [:thead nil @@ -62,7 +62,7 @@ ))]]]) (defn- box-add [] - [:div {:class "box column"} + [:div {:class "box"} [:h1 {:class "title"} "Upload a Dockerfile to toast"] [:p " Choose the file in your computer and click 'Submit' to proceed to validation."] @@ -117,8 +117,10 @@ [joblist (db/query @ring/jobs {:email (:email account)})] [:div {:class "container has-text-centered"} - [:div {:class "columns"} - (if (> 0 (count joblist)) (box-list account joblist)) + [:span + ;(if (> 0 (count joblist)) + (box-list account joblist) + ;) (box-add) ]] (f/when-failed [e] (web/notify @@ -129,7 +131,7 @@ [jobid (s/param request :jobid) jobfound (db/query @ring/jobs {:jobid jobid}) r_rmjob (db/delete! @ring/jobs jobid) - r_sync (job/trash jobid config)] + r_sync (job/sync_jobs config "-d" jobid)] (web/notify (str "Job removed: " jobid) "is-primary") (f/when-failed [e] (web/notify (str "Failure removing job: " (f/message e)) "is-error")))) @@ -138,7 +140,7 @@ (f/attempt-all [jobid (s/param request :jobid) jobfound (db/query @ring/jobs {:jobid jobid}) - r_sync (job/start jobid config)] + r_sync (job/sync_jobs config "-r" jobid)] (web/notify (str "Job started: " jobid) "is-success") (f/when-failed [e] (web/notify (str "Failure starting job: " (f/message e)) "is-error")))) @@ -148,7 +150,7 @@ [jobid (s/param request :jobid) jobfound (db/fetch @ring/jobs jobid) dockerfile (-> jobfound :dockerfile)] - [:div {:class "container"} + [:div {:class "box"} [:h1 {:class "title"} (str "Viewing job: " jobid)] [:pre dockerfile]] (f/when-failed [e]