# ol.clave.automation.impl.system

System lifecycle and component wiring for the automation layer.

The system map contains all components and is passed to internal functions.
Components access what they need via destructuring.

## *maintenance-interval-ms*

Maintenance loop interval in milliseconds (1 hour).

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L36-L38)

---

## *maintenance-jitter-ms*

Maximum jitter for maintenance loop (5 minutes).

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L40-L42)

---

## *fast-semaphore-permits*

Concurrent fast command permits (OCSP, ARI).

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L44-L46)

---

## *slow-semaphore-permits*

Concurrent slow command permits (obtain, renew).

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L48-L50)

---

## *shutdown-timeout-ms*

Timeout for graceful shutdown in milliseconds (30 seconds).

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L52-L54)

---

## *config-fn-timeout-ms*

Timeout for config-fn calls in milliseconds (5 seconds).
If config-fn takes longer than this, the domain is skipped.

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L56-L59)

---

## submit-command!

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L62-L62)

---

## trigger-maintenance

```clojure
(trigger-maintenance system)
```

See [`ol.clave.automation/trigger-maintenance`](api/ol-clave-automation.adoc#trigger-maintenance)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L388-L391)

---

## create

```clojure
(create config)
```

See [`ol.clave.automation/create`](api/ol-clave-automation.adoc#create)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L412-L420)

---

## start

```clojure
(start system)
```

See [`ol.clave.automation/start`](api/ol-clave-automation.adoc#start)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L422-L428)

---

## stop

```clojure
(stop system)
```

See [`ol.clave.automation/stop`](api/ol-clave-automation.adoc#stop)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L430-L444)

---

## started?

```clojure
(started? system)
```

See [`ol.clave.automation/started?`](api/ol-clave-automation.adoc#started-QMARK-)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L446-L449)

---

## lookup-cert

```clojure
(lookup-cert system hostname)
```

See [`ol.clave.automation/lookup-cert`](api/ol-clave-automation.adoc#lookup-cert)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L488-L507)

---

## manage-domains

```clojure
(manage-domains system domains)
```

See [`ol.clave.automation/manage-domains`](api/ol-clave-automation.adoc#manage-domains)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L1196-L1232)

---

## unmanage-domains

```clojure
(unmanage-domains system domains)
```

See [`ol.clave.automation/unmanage-domains`](api/ol-clave-automation.adoc#unmanage-domains)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L1234-L1246)

---

## list-domains

```clojure
(list-domains system)
```

See [`ol.clave.automation/list-domains`](api/ol-clave-automation.adoc#list-domains)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L1248-L1257)

---

## get-domain-status

```clojure
(get-domain-status system domain)
```

See [`ol.clave.automation/get-domain-status`](api/ol-clave-automation.adoc#get-domain-status)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L1259-L1267)

---

## has-valid-cert?

```clojure
(has-valid-cert? system domain)
```

See [`ol.clave.automation/has-valid-cert?`](api/ol-clave-automation.adoc#has-valid-cert-QMARK-)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L1269-L1272)

---

## get-event-queue

```clojure
(get-event-queue system)
```

See [`ol.clave.automation/get-event-queue`](api/ol-clave-automation.adoc#get-event-queue)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L1274-L1282)

---

## renew-managed

```clojure
(renew-managed system)
```

See [`ol.clave.automation/renew-managed`](api/ol-clave-automation.adoc#renew-managed)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L1284-L1297)

---

## revoke

```clojure
(revoke system certificate opts)
```

See [`ol.clave.automation/revoke`](api/ol-clave-automation.adoc#revoke)

[source,window=_blank](https://github.com/outskirtslabs/clave/blob/main/src/ol/clave/automation/impl/system.clj#L1299-L1337)
