Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packaging/package-manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ source.rust.binary_names = ["propolis-server"]
source.rust.release = true
source.paths = [
{ from = "packaging/smf/propolis-server", to = "/var/svc/manifest/site/propolis-server" },
{ from = "packaging/smf/method_script.sh", to = "/opt/oxide/lib/svc/manifest/propolis/propolis.sh" },
]
source.blobs = [ "alpine.iso" ]
output.type = "zone"
Expand Down
32 changes: 32 additions & 0 deletions packaging/smf/method_script.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash

set -o errexit
set -o pipefail
set -o xtrace

. /lib/svc/share/smf_include.sh

DATALINK="$(svcprop -c -p config/datalink "${SMF_FMRI}")"
GATEWAY="$(svcprop -c -p config/gateway "${SMF_FMRI}")"
LISTEN_ADDR="$(svcprop -c -p config/listen_addr "${SMF_FMRI}")"
LISTEN_PORT="$(svcprop -c -p config/listen_port "${SMF_FMRI}")"
METRIC_ADDR="$(svcprop -c -p config/metric_addr "${SMF_FMRI}")"

if [[ $DATALINK == unknown ]] || [[ $GATEWAY == unknown ]]; then
printf 'ERROR: missing datalink or gateway' >&2
exit "$SMF_EXIT_ERR_CONFIG"
fi

ipadm delete-if "$DATALINK" || true
ipadm show-addr "$DATALINK/ll" || ipadm create-addr -t -T addrconf "$DATALINK/ll"
ipadm show-addr "$DATALINK/omicron6" || ipadm create-addr -t -T static -a "$LISTEN_ADDR" "$DATALINK/omicron6"
route get -inet6 default -inet6 "$GATEWAY" || route add -inet6 default -inet6 "$GATEWAY"

args=(
'run'
'/var/svc/manifest/site/propolis-server/config.toml'
"[$LISTEN_ADDR]:$LISTEN_PORT"
'--metric-addr' "$METRIC_ADDR"
)

ctrun -l child -o noorphan,regent /opt/oxide/propolis-server/bin/propolis-server "${args[@]}" &
17 changes: 11 additions & 6 deletions packaging/smf/propolis-server/manifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,32 @@
<service_bundle type='manifest' name='propolis-server'>

<service name='system/illumos/propolis-server' type='service' version='1'>
<create_default_instance enabled='true' />
<dependency name='network' grouping='require_all' restart_on='none'
type='service'>
<service_fmri value='svc:/milestone/network:default' />
</dependency>
<dependency name='multi_user' grouping='require_all' restart_on='none'
type='service'>
<service_fmri value='svc:/milestone/multi-user:default' />
</dependency>

<method_context>
<method_environment>
<envvar name="LD_LIBRARY_PATH" value="/opt/ooce/pgsql-13/lib/amd64" />
</method_environment>
</method_context>
<exec_method type='method' name='start'
exec='ctrun -l child -o noorphan,regent /opt/oxide/propolis-server/bin/propolis-server run /var/svc/manifest/site/propolis-server/config.toml %{config/server_addr} --metric-addr %{config/metric_addr} &amp;'
exec='/opt/oxide/lib/svc/manifest/propolis/propolis.sh'
timeout_seconds='0' />
<exec_method type='method' name='stop' exec=':kill' timeout_seconds='0' />

<property_group name='config' type='application'>
<propval name='server_addr' type='astring' value='unknown' />
</property_group>

<property_group name='config' type='application'>
<propval name='metric_addr' type='astring' value='unknown' />
<propval name='datalink' type='astring' value='unknown' />
<propval name='gateway' type='astring' value='unknown' />
<propval name='listen_addr' type='astring' value='127.0.0.1' />
<propval name='listen_port' type='astring' value='12400' />
<propval name='metric_addr' type='astring' value='127.0.0.1' />
</property_group>

<property_group name='startd' type='framework'>
Expand Down