mirror of
https://github.com/swarmpit/swarmpit.git
synced 2025-09-10 07:44:31 +08:00
add service mapping
This commit is contained in:
parent
f36a345156
commit
a41b7a4d25
1 changed files with 42 additions and 3 deletions
|
@ -1,9 +1,10 @@
|
|||
(ns swarmpit.domain)
|
||||
(ns swarmpit.domain
|
||||
(:require [clojure.string :as str]))
|
||||
|
||||
(defn ->service-mode
|
||||
[service]
|
||||
(if (= (:mode service) "global")
|
||||
"Global"
|
||||
{:Global {}}
|
||||
{:Replicated
|
||||
{:Replicas (:replicas service)}}))
|
||||
|
||||
|
@ -33,6 +34,44 @@
|
|||
:EndpointSpec
|
||||
{:Ports (->service-ports service)}})
|
||||
|
||||
(defn <-service-ports
|
||||
[service]
|
||||
(->> (get-in service [:Spec :EndpointSpec :Ports])
|
||||
(map (fn [p] {:containerPort (:TargetPort p)
|
||||
:protocol (:Protocol p)
|
||||
:hostPort (:PublishedPort p)}))
|
||||
(into [])))
|
||||
|
||||
(defn <-service-variables
|
||||
[service]
|
||||
(->> (get-in service [:Spec :TaskTemplate :ContainerSpec :Env])
|
||||
(map (fn [p]
|
||||
(let [variable (str/split p #"=")]
|
||||
{:name (first variable)
|
||||
:value (second variable)})))
|
||||
(into [])))
|
||||
|
||||
(defn <-service
|
||||
"Map docker service domain to swarmpit service domain"
|
||||
[service])
|
||||
[service]
|
||||
(let [image (get-in service [:Spec :TaskTemplate :ContainerSpec :Image])
|
||||
image-info (str/split image #"@")
|
||||
image-name (first image-info)
|
||||
image-digest (second image-info)]
|
||||
{:id (get service :ID)
|
||||
:createdAt (get service :CreatedAt)
|
||||
:updatedAt (get service :UpdatedAt)
|
||||
:image image-name
|
||||
:imageDigest image-digest
|
||||
:serviceName (get-in service [:Spec :Name])
|
||||
:mode (str/lower-case (name (first (keys (get-in service [:Spec :Mode])))))
|
||||
:replicas (get-in service [:Spec :Mode :Replicated :Replicas])
|
||||
:autoredeploy false
|
||||
:ports (<-service-ports service)
|
||||
:variables (<-service-variables service)}))
|
||||
|
||||
(defn <-services
|
||||
[services]
|
||||
(->> services
|
||||
(map <-service)
|
||||
(into [])))
|
||||
|
|
Loading…
Add table
Reference in a new issue