changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/pod/api.lisp

changeset 698: 96958d3eb5b0
parent: fbab9b24fbe6
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
165
fbab9b24fbe6 pod types
ellis <ellis@rwest.io>
parents: 163
diff changeset
1
 ;;; lib/pod/api.lisp --- Libpod API model
142
f85a2fac1ed7 switched to dexador, initialized pod api package
ellis <ellis@rwest.io>
parents:
diff changeset
2
 
f85a2fac1ed7 switched to dexador, initialized pod api package
ellis <ellis@rwest.io>
parents:
diff changeset
3
 ;;
143
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
4
 #|
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
5
 'podman info'
142
f85a2fac1ed7 switched to dexador, initialized pod api package
ellis <ellis@rwest.io>
parents:
diff changeset
6
 
143
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
7
 curl --unix-socket /run/podman/podman.sock http://d/v4.0.0/libpod/info
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
8
 
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
9
 'podman pull quay.io/containers/podman'
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
10
 
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
11
 curl -XPOST --unix-socket /run/podman/podman.sock -v 'http://d/v4.0.0/images/create?fromImage=quay.io%2Fcontainers%2Fpodman'
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
12
 
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
13
 'podman list images'
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
14
 
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
15
 curl --unix-socket /run/podman/podman.sock -v 'http://d/v4.0.0/libpod/images/json' | jq
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
16
 |#
142
f85a2fac1ed7 switched to dexador, initialized pod api package
ellis <ellis@rwest.io>
parents:
diff changeset
17
 ;;; Code:
143
64d36c0e3942 podman shenanigans
ellis <ellis@rwest.io>
parents: 142
diff changeset
18
 (in-package :pod)
142
f85a2fac1ed7 switched to dexador, initialized pod api package
ellis <ellis@rwest.io>
parents:
diff changeset
19
 
163
ellis <ellis@rwest.io>
parents: 161
diff changeset
20
 (eval-always
ellis <ellis@rwest.io>
parents: 161
diff changeset
21
  (defvar *libpod-params* (make-hash-table :test #'equal))
ellis <ellis@rwest.io>
parents: 161
diff changeset
22
  (defvar *libpod-paths* (make-hash-table :test #'equal))
ellis <ellis@rwest.io>
parents: 161
diff changeset
23
  (defun register-libpod-param (name prototype)
ellis <ellis@rwest.io>
parents: 161
diff changeset
24
    (setf (gethash name *libpod-params*) prototype))
ellis <ellis@rwest.io>
parents: 161
diff changeset
25
  (defun register-libpod-path (name prototype)
ellis <ellis@rwest.io>
parents: 161
diff changeset
26
    (setf (gethash name *libpod-params*) prototype)))
157
193d1ea7d684 renamed ascii functions - prefixed with . to prevent conflicts with cl symbol ED
ellis <ellis@rwest.io>
parents: 143
diff changeset
27
 
161
ellis <ellis@rwest.io>
parents: 159
diff changeset
28
 (defmacro register-libpod-params (&rest forms)
ellis <ellis@rwest.io>
parents: 159
diff changeset
29
   (dolist (f forms)
ellis <ellis@rwest.io>
parents: 159
diff changeset
30
     (register-libpod-param (car f) (cdr f))))
ellis <ellis@rwest.io>
parents: 159
diff changeset
31
 
ellis <ellis@rwest.io>
parents: 159
diff changeset
32
 (defmacro register-libpod-paths (&rest forms)
ellis <ellis@rwest.io>
parents: 159
diff changeset
33
   (dolist (f forms)
ellis <ellis@rwest.io>
parents: 159
diff changeset
34
     (register-libpod-path (car f) (cdr f))))
142
f85a2fac1ed7 switched to dexador, initialized pod api package
ellis <ellis@rwest.io>
parents:
diff changeset
35
 
161
ellis <ellis@rwest.io>
parents: 159
diff changeset
36
 ;; we should really group these better
ellis <ellis@rwest.io>
parents: 159
diff changeset
37
 (register-libpod-params ("caCertFile" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
38
                         ("file" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
39
                         ("kubeConfig" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
40
                         ("namespace" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
41
                         ("service" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
42
                         ("detachKeys" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
43
                         ("logs" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
44
                         ("stderr" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
45
                         ("stdin" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
46
                         ("stdout" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
47
                         ("stream" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
48
                         ("name" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
49
                         ("export" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
50
                         ("fileLocks" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
51
                         ("ignoreRootFS" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
52
                         ("ignoreVolumes" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
53
                         ("keep" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
54
                         ("leaveRunning" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
55
                         ("preCheckpoint" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
56
                         ("printStats" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
57
                         ("tcpEstablished" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
58
                         ("withPrevious" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
59
                         ("author" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
60
                         ("changes" (vector string))
ellis <ellis@rwest.io>
parents: 159
diff changeset
61
                         ("comment" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
62
                         ("container" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
63
                         ("format" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
64
                         ("pause" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
65
                         ("repo" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
66
                         ("squash" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
67
                         ("stream" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
68
                         ("tag" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
69
                         ("path" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
70
                         ("depend" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
71
                         ("force" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
72
                         ("ignore" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
73
                         ("timeout" int)
ellis <ellis@rwest.io>
parents: 159
diff changeset
74
                         ("v" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
75
                         ("until" time)
ellis <ellis@rwest.io>
parents: 159
diff changeset
76
                         ("label" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
77
                         ("label!" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
78
                         ("names" (vector string))
ellis <ellis@rwest.io>
parents: 159
diff changeset
79
                         ("noTrunc" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
80
                         ("podmanOnly" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
81
                         ("replicas" int)
ellis <ellis@rwest.io>
parents: 159
diff changeset
82
                         ("service" boolean)
ellis <ellis@rwest.io>
parents: 159
diff changeset
83
                         ("type" string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
84
                         ("additionalEnvVariables" (vector string)))
157
193d1ea7d684 renamed ascii functions - prefixed with . to prevent conflicts with cl symbol ED
ellis <ellis@rwest.io>
parents: 143
diff changeset
85
 
161
ellis <ellis@rwest.io>
parents: 159
diff changeset
86
 (register-libpod-paths
ellis <ellis@rwest.io>
parents: 159
diff changeset
87
  ;; system
ellis <ellis@rwest.io>
parents: 159
diff changeset
88
  ("libpod/info" (:get))
ellis <ellis@rwest.io>
parents: 159
diff changeset
89
  ("libpod/_ping" (:get))
ellis <ellis@rwest.io>
parents: 159
diff changeset
90
  ("libpod/system/df" (:get))
ellis <ellis@rwest.io>
parents: 159
diff changeset
91
  ;; container
ellis <ellis@rwest.io>
parents: 159
diff changeset
92
  ("libpod/containers/json" (:get (all filters limit namespace pod size sync)))
ellis <ellis@rwest.io>
parents: 159
diff changeset
93
  ;; image
ellis <ellis@rwest.io>
parents: 159
diff changeset
94
  ("libpod/images/json" (:get (all filters)))
ellis <ellis@rwest.io>
parents: 159
diff changeset
95
  ;; pod
ellis <ellis@rwest.io>
parents: 159
diff changeset
96
  ("libpod/pods/json" (:get (filters)))
ellis <ellis@rwest.io>
parents: 159
diff changeset
97
  ;; volume
ellis <ellis@rwest.io>
parents: 159
diff changeset
98
  ("libpod/volumes/json" (:get (filters)))
ellis <ellis@rwest.io>
parents: 159
diff changeset
99
  ;; secret
ellis <ellis@rwest.io>
parents: 159
diff changeset
100
  ("libpod/secrets/json" (:get (filters)))
ellis <ellis@rwest.io>
parents: 159
diff changeset
101
  ;; network
ellis <ellis@rwest.io>
parents: 159
diff changeset
102
  ("libpod networks/json" (:get (filters))))
ellis <ellis@rwest.io>
parents: 159
diff changeset
103
 
ellis <ellis@rwest.io>
parents: 159
diff changeset
104
 (defstruct libpod-param 
ellis <ellis@rwest.io>
parents: 159
diff changeset
105
   (name "" :type string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
106
   (val nil))
ellis <ellis@rwest.io>
parents: 159
diff changeset
107
 
ellis <ellis@rwest.io>
parents: 159
diff changeset
108
 (defstruct (libpod-request (:conc-name "REQUEST-"))
ellis <ellis@rwest.io>
parents: 159
diff changeset
109
   (path "" :type string)
ellis <ellis@rwest.io>
parents: 159
diff changeset
110
   (method :get :type keyword)
ellis <ellis@rwest.io>
parents: 159
diff changeset
111
   (params (make-array 0 :element-type 'libpod-param :fill-pointer 0 :adjustable t) :type (vector libpod-param))
ellis <ellis@rwest.io>
parents: 159
diff changeset
112
   (body nil))
ellis <ellis@rwest.io>
parents: 159
diff changeset
113
 
ellis <ellis@rwest.io>
parents: 159
diff changeset
114
 (defmethod push-param ((param libpod-param) (request libpod-request))
ellis <ellis@rwest.io>
parents: 159
diff changeset
115
   (vector-push param (request-params request)))
ellis <ellis@rwest.io>
parents: 159
diff changeset
116
 
ellis <ellis@rwest.io>
parents: 159
diff changeset
117
 (defmethod build-request ((self libpod-request))
ellis <ellis@rwest.io>
parents: 159
diff changeset
118
   "Return a function that calls DEX:REQUEST with args filled in from
ellis <ellis@rwest.io>
parents: 159
diff changeset
119
 SELF. Holes are left open and exposed as arguments to the returned
ellis <ellis@rwest.io>
parents: 159
diff changeset
120
 function as in the below lambda-list:
ellis <ellis@rwest.io>
parents: 159
diff changeset
121
 
ellis <ellis@rwest.io>
parents: 159
diff changeset
122
 (SOCKET ENDPOINT &OPTIONAL CALLBACK)."
ellis <ellis@rwest.io>
parents: 159
diff changeset
123
   (compile nil 
ellis <ellis@rwest.io>
parents: 159
diff changeset
124
            (lambda (socket endpoint &optional callback)
ellis <ellis@rwest.io>
parents: 159
diff changeset
125
              (declare (ignorable socket endpoint callback)))))
ellis <ellis@rwest.io>
parents: 159
diff changeset
126
   
ellis <ellis@rwest.io>
parents: 159
diff changeset
127
 (defstruct libpod-response 
ellis <ellis@rwest.io>
parents: 159
diff changeset
128
   (status)
ellis <ellis@rwest.io>
parents: 159
diff changeset
129
   (headers)
ellis <ellis@rwest.io>
parents: 159
diff changeset
130
   (body nil :type (or null vector)))
ellis <ellis@rwest.io>
parents: 159
diff changeset
131
 
ellis <ellis@rwest.io>
parents: 159
diff changeset
132
 ;; (defmacro define-libpod-request (path))
ellis <ellis@rwest.io>
parents: 159
diff changeset
133
 ;; (defmacro define-libpod-response (name))