manifest-import revision 7c478bd95313f5f23a4c958a745db2134aa03244
9174efb969475801d0dc88eee35aae40c748d450nd#!/sbin/sh
ec79b29695b183f794264bbb578c51e93d1f9b1emartin#
6aa2272cc4af77e605ba2c4a4781f8567408b7e3pquerna# CDDL HEADER START
ee508128c414648982d1cca7801f63b01a0a4f8aminfrin#
0b4b04d8621478ba59f0a6ba2950ddc02ab92b58colm# The contents of this file are subject to the terms of the
0b4b04d8621478ba59f0a6ba2950ddc02ab92b58colm# Common Development and Distribution License, Version 1.0 only
0b4b04d8621478ba59f0a6ba2950ddc02ab92b58colm# (the "License"). You may not use this file except in compliance
2f1bb5376c5c4022383bb729679ca751dd75a2eabrianp# with the License.
2f1bb5376c5c4022383bb729679ca751dd75a2eabrianp#
ad862ab5716726a2d72a292ba1dfb29566c86153brianp# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
ad862ab5716726a2d72a292ba1dfb29566c86153brianp# or http://www.opensolaris.org/os/licensing.
ad862ab5716726a2d72a292ba1dfb29566c86153brianp# See the License for the specific language governing permissions
347c9301068524042be654db3b2b055a9ec20633rpluem# and limitations under the License.
347c9301068524042be654db3b2b055a9ec20633rpluem#
347c9301068524042be654db3b2b055a9ec20633rpluem# When distributing Covered Code, include this CDDL HEADER in each
1266e0c1535091b37a0c6ea86183094e575cb8dagregames# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1266e0c1535091b37a0c6ea86183094e575cb8dagregames# If applicable, add the following below this CDDL HEADER, with the
29d3b95754d5730dde08bbda9dc76785894f10f8rpluem# fields enclosed by brackets "[]" replaced with your own identifying
dfd7e0be46ab5ef5b84339b4645d60fdc44cb4a5rpluem# information: Portions Copyright [yyyy] [name of copyright owner]
dfd7e0be46ab5ef5b84339b4645d60fdc44cb4a5rpluem#
dfd7e0be46ab5ef5b84339b4645d60fdc44cb4a5rpluem# CDDL HEADER END
dfd7e0be46ab5ef5b84339b4645d60fdc44cb4a5rpluem#
7461431ba407b0e1eac3d6a81440a4184e652e9fniq#
7461431ba407b0e1eac3d6a81440a4184e652e9fniq# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
17d53ea32c4968e47733f1c2c063ae07d280efd6jerenkrantz# Use is subject to license terms.
17d53ea32c4968e47733f1c2c063ae07d280efd6jerenkrantz#
17d53ea32c4968e47733f1c2c063ae07d280efd6jerenkrantz#ident "%Z%%M% %I% %E% SMI"
2d5532b13110a8d85653da92e97795b09cc25cc2trawick
b38565306421ff53e9f7499bc728d6df5cec294dpquerna# 0. Initialization.
b38565306421ff53e9f7499bc728d6df5cec294dpquerna
b38565306421ff53e9f7499bc728d6df5cec294dpquerna[ -f /lib/svc/share/smf_include.sh ] || exit 1
b38565306421ff53e9f7499bc728d6df5cec294dpquerna
3aeb30211790fef38a8297f990b7ad3b2c46ece9colmactivity=false
3aeb30211790fef38a8297f990b7ad3b2c46ece9colm
79d1d5666b3ceb59c959b09600aa2bce32324677rpluemX=
79d1d5666b3ceb59c959b09600aa2bce32324677rpluemwhile getopts n opt; do
79d1d5666b3ceb59c959b09600aa2bce32324677rpluem case $opt in
a6ea86151dd968120a12b48867d45947ef2bb9darpluem n) X=echo;;
a6ea86151dd968120a12b48867d45947ef2bb9darpluem ?) echo "Usage: /lib/svc/method/manifest-import [-n]\n"
a6ea86151dd968120a12b48867d45947ef2bb9darpluem exit 2;;
a6ea86151dd968120a12b48867d45947ef2bb9darpluem esac
a17ca1093e7dc28c1a54cfd9741f65653f5b2b19jimdone
a17ca1093e7dc28c1a54cfd9741f65653f5b2b19jim
a17ca1093e7dc28c1a54cfd9741f65653f5b2b19jimsvccfg_apply () {
fa735cac4e86858f11c0de4f7cea50fa63eab87ecolm $X /usr/sbin/svccfg apply $1
fa735cac4e86858f11c0de4f7cea50fa63eab87ecolm if [ $? -ne 0 ]; then
fa735cac4e86858f11c0de4f7cea50fa63eab87ecolm echo "WARNING: svccfg apply $1 failed" | tee /dev/msglog
dbb3b82abaa9c0ad199a0a3d6a7a505136137c61colm fi
dbb3b82abaa9c0ad199a0a3d6a7a505136137c61colm}
dbb3b82abaa9c0ad199a0a3d6a7a505136137c61colm
3d76cdd5855071bbfb95a27de7d77a8855d1e893niqsvccfg_import () {
3d76cdd5855071bbfb95a27de7d77a8855d1e893niq $X /usr/sbin/svccfg import $1 2>>/tmp/manifest_import.$$
3d76cdd5855071bbfb95a27de7d77a8855d1e893niq if [ $? -ne 0 ]; then
3d76cdd5855071bbfb95a27de7d77a8855d1e893niq echo > /dev/msglog
3d76cdd5855071bbfb95a27de7d77a8855d1e893niq echo "WARNING: svccfg import $1 failed" | tee /dev/msglog
3d76cdd5855071bbfb95a27de7d77a8855d1e893niq fi
3d76cdd5855071bbfb95a27de7d77a8855d1e893niq}
3d76cdd5855071bbfb95a27de7d77a8855d1e893niq
bf0dec31a67271a4a67a6d3a3a9b3cdb41278390rpluemprophist_upgrade () {
bf0dec31a67271a4a67a6d3a3a9b3cdb41278390rpluem #
bf0dec31a67271a4a67a6d3a3a9b3cdb41278390rpluem # A property has changed in the manifest that we wish to propagate into
bf0dec31a67271a4a67a6d3a3a9b3cdb41278390rpluem # the repository during manifest import. We don't want to pollute
7612604db51e61f6ec4a6593c188e6d0640646abwrowe # manifests with overrides, so handle explicitly here.
7612604db51e61f6ec4a6593c188e6d0640646abwrowe #
7612604db51e61f6ec4a6593c188e6d0640646abwrowe fmri=$1
7612604db51e61f6ec4a6593c188e6d0640646abwrowe pgrp=$2
7612604db51e61f6ec4a6593c188e6d0640646abwrowe prop=$3
7612604db51e61f6ec4a6593c188e6d0640646abwrowe nval=$4
0a2c6381b34b977101327f412a4b1ddc8a361ae7rpluem shift 4
0a2c6381b34b977101327f412a4b1ddc8a361ae7rpluem
0a2c6381b34b977101327f412a4b1ddc8a361ae7rpluem /lib/svc/bin/prophist upgrade -e $fmri -g $pgrp -p $prop -n "$nval" \
0a2c6381b34b977101327f412a4b1ddc8a361ae7rpluem "$@"
8828f8c859fabac8c0080440392bc279877f9802rpluem [ $? = 0 ] && instance_refresh $fmri
8828f8c859fabac8c0080440392bc279877f9802rpluem}
8828f8c859fabac8c0080440392bc279877f9802rpluem
0830215c2542165c027f092c18924f2885c98b49trawickprophist_override () {
0830215c2542165c027f092c18924f2885c98b49trawick #
0830215c2542165c027f092c18924f2885c98b49trawick # A property has changed in the manifest that we wish to propagate
0830215c2542165c027f092c18924f2885c98b49trawick # into the repository during manifest import.
be2abc811ae62b872703a7b43235598d641f8d8dmjc #
8f1c5a2aca731a7676bf74cdce67ec28557ec299trawick fmri=$1
bc886ee8559b4feb30d32dc8a50ba2c013c3cc02trawick pgrp=$2
8f1c5a2aca731a7676bf74cdce67ec28557ec299trawick prop=$3
9505e1a9012d92bfd2b6228e675156f44a27aa04colm nval=$4
9505e1a9012d92bfd2b6228e675156f44a27aa04colm
3aeb30211790fef38a8297f990b7ad3b2c46ece9colm /lib/svc/bin/prophist overwrite -e $fmri -g $pgrp -p $prop -n "$nval"
3aeb30211790fef38a8297f990b7ad3b2c46ece9colm [ $? = 0 ] && instance_refresh $fmri
3aeb30211790fef38a8297f990b7ad3b2c46ece9colm}
3aeb30211790fef38a8297f990b7ad3b2c46ece9colm
6eb3a057b5e4f046faba79104d7941552de755dacolmprophist_delete_svc_pg () {
6eb3a057b5e4f046faba79104d7941552de755dacolm #
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton # Certain property groups have migrated from the service level to the
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton # instance level. We don't care if they are at both, as the instance
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton # level will trump. But having neither could be bad. So check and if
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton # the given pg exists at both levels, delete the service-level one only.
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton #
c07be90520f577cdffc0ee59a81e7f2be4ab24c6martin service=$1
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton instance=$2
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton property_group=$3
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton /usr/bin/svcprop -q -p $property_group $service
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton res1=$?
6a9a6a63bae82591ea75fc602d5260109b8fa02ccolm /usr/bin/svcprop -q -c -p $property_group $service:$instance
70706a4d1ead0d72a443eac1cc446a0f1a4de069colm res2=$?
70706a4d1ead0d72a443eac1cc446a0f1a4de069colm if [ $res1 -eq 0 -a $res2 -eq 0 ]; then
70706a4d1ead0d72a443eac1cc446a0f1a4de069colm /lib/svc/bin/prophist delete -e $service -g $property_group
70706a4d1ead0d72a443eac1cc446a0f1a4de069colm instance_refresh $service:$instance
70706a4d1ead0d72a443eac1cc446a0f1a4de069colm fi
9cfe09f7e922f7bdf61bfe10a47e8f25145cdf92colm}
9cfe09f7e922f7bdf61bfe10a47e8f25145cdf92colm
9cfe09f7e922f7bdf61bfe10a47e8f25145cdf92colmprophist_delete_dependency () {
9cfe09f7e922f7bdf61bfe10a47e8f25145cdf92colm #
be2abc811ae62b872703a7b43235598d641f8d8dmjc # Some services have stale dependencies that need to be removed.
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton # This is done by removing the dependency property group.
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton #
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton fmri=$1
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton property_group=$2
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton /usr/bin/svcprop -q -c -p $property_group $fmri
2e02c854b4531480fe3f7ab353154c99c5bd97e8jorton if [ $? -eq 0 ]; then
a09378e32e823d5619f766394fcdde1cfa16c5dajim /lib/svc/bin/prophist delete -e $fmri -g $property_group
a09378e32e823d5619f766394fcdde1cfa16c5dajim else
a09378e32e823d5619f766394fcdde1cfa16c5dajim [ -n "$_MFST_DEBUG" ] && \
a09378e32e823d5619f766394fcdde1cfa16c5dajim echo "Dependency $property_group not defined on $fmri"
a09378e32e823d5619f766394fcdde1cfa16c5dajim fi
a09378e32e823d5619f766394fcdde1cfa16c5dajim}
a09378e32e823d5619f766394fcdde1cfa16c5dajim
ce8e09ffeb8c696f7fc6c5dfa8814c52caaac59bcolmprophist_delete_pg () {
ce8e09ffeb8c696f7fc6c5dfa8814c52caaac59bcolm # Delete obsolete property groups from old manifests. Instances
ce8e09ffeb8c696f7fc6c5dfa8814c52caaac59bcolm # should be refreshed for changes to take effect.
ce8e09ffeb8c696f7fc6c5dfa8814c52caaac59bcolm fmri=$1
5340bb8547e62ec8ede44b1b086b7da37ee64eefcolm pg=$2
5340bb8547e62ec8ede44b1b086b7da37ee64eefcolm
5340bb8547e62ec8ede44b1b086b7da37ee64eefcolm /usr/bin/svcprop -Cqp $pg $fmri &&
f6e71f622ffde40c654288851ff65b8505cf7596colm /lib/svc/bin/prophist delete -e $fmri -g $pg
f6e71f622ffde40c654288851ff65b8505cf7596colm}
f6e71f622ffde40c654288851ff65b8505cf7596colm
f8ae06c7d0615d8b9441099794fe80a3f2915469colmprophist_addprop () {
f8ae06c7d0615d8b9441099794fe80a3f2915469colm #
f8ae06c7d0615d8b9441099794fe80a3f2915469colm # If a property doesn't exist, create it. Instances should be
6eb3a057b5e4f046faba79104d7941552de755dacolm # refreshed for changes to take effect.
6eb3a057b5e4f046faba79104d7941552de755dacolm #
6eb3a057b5e4f046faba79104d7941552de755dacolm if [ $# -lt 6 ]; then
6aa2272cc4af77e605ba2c4a4781f8567408b7e3pquerna echo "prophist_addprop(): Insufficient arguments ($*)."
6eb3a057b5e4f046faba79104d7941552de755dacolm exit 1
be2abc811ae62b872703a7b43235598d641f8d8dmjc fi
dface6840439ab84a36749f40e7773ebfdc2066ejorton
dface6840439ab84a36749f40e7773ebfdc2066ejorton fmri=$1
dface6840439ab84a36749f40e7773ebfdc2066ejorton /usr/bin/svcprop -q $fmri || return
dface6840439ab84a36749f40e7773ebfdc2066ejorton
1febae173a82bc2a71c3c0ba4105cf674000791bjim pg=$2
1febae173a82bc2a71c3c0ba4105cf674000791bjim pgtype=$3
1febae173a82bc2a71c3c0ba4105cf674000791bjim prop=$4
1febae173a82bc2a71c3c0ba4105cf674000791bjim
1febae173a82bc2a71c3c0ba4105cf674000791bjim /usr/bin/svcprop -Cqp $pg/$prop $fmri && return
2b409b0583ef844d6f85002160cbc6df95b9afa8jerenkrantz
2b409b0583ef844d6f85002160cbc6df95b9afa8jerenkrantz shift 4
2b409b0583ef844d6f85002160cbc6df95b9afa8jerenkrantz
2b409b0583ef844d6f85002160cbc6df95b9afa8jerenkrantz /usr/bin/svcprop -Cqp $pg $fmri || \
454d060a0d7b13606978c536f632be71e311959djerenkrantz /usr/sbin/svccfg -s $fmri addpg $pg $pgtype
454d060a0d7b13606978c536f632be71e311959djerenkrantz /usr/sbin/svccfg -s $fmri setprop $pg/$prop = $*
454d060a0d7b13606978c536f632be71e311959djerenkrantz}
454d060a0d7b13606978c536f632be71e311959djerenkrantz
1392b9997000dceb6aca39da0a1e6405ccb6f0a6jerenkrantzprophist_addmeth () {
1392b9997000dceb6aca39da0a1e6405ccb6f0a6jerenkrantz #
1392b9997000dceb6aca39da0a1e6405ccb6f0a6jerenkrantz # If a method doesn't exist, create it. Instances should be refreshed
4b0a0ae3fd77f8fc8fd2a693be33ffe4d99cb94ajerenkrantz # for changes to take effect.
4b0a0ae3fd77f8fc8fd2a693be33ffe4d99cb94ajerenkrantz #
4b0a0ae3fd77f8fc8fd2a693be33ffe4d99cb94ajerenkrantz if [ $# -ne 4 ]; then
4b0a0ae3fd77f8fc8fd2a693be33ffe4d99cb94ajerenkrantz echo "prophist_addmeth(): Insufficient arguments ($*)"
4b0a0ae3fd77f8fc8fd2a693be33ffe4d99cb94ajerenkrantz exit 1
4b0a0ae3fd77f8fc8fd2a693be33ffe4d99cb94ajerenkrantz fi
ee508128c414648982d1cca7801f63b01a0a4f8aminfrin
ee508128c414648982d1cca7801f63b01a0a4f8aminfrin fmri=$1
ee508128c414648982d1cca7801f63b01a0a4f8aminfrin /usr/bin/svcprop -q $fmri || return
ee508128c414648982d1cca7801f63b01a0a4f8aminfrin
f07ae092933846055c4ca046c5a65de83d79c9c6pquerna name=$2
f07ae092933846055c4ca046c5a65de83d79c9c6pquerna /usr/bin/svcprop -Cqp $name $fmri && return
f07ae092933846055c4ca046c5a65de83d79c9c6pquerna
9b88ec397b4155f3ff79bf7c08de5f15d21765b3pquerna exec=$3
9b88ec397b4155f3ff79bf7c08de5f15d21765b3pquerna to=$4
9b88ec397b4155f3ff79bf7c08de5f15d21765b3pquerna
a42c13195a5c68d55f6b2bbf5b5e1e66ab45d5d4pquerna /usr/sbin/svccfg -s $fmri <<END
a42c13195a5c68d55f6b2bbf5b5e1e66ab45d5d4pquerna addpg $name method
a42c13195a5c68d55f6b2bbf5b5e1e66ab45d5d4pquerna setprop $name/type = astring: method
2a90918318af50d5712ae7159e5625476332c184pquerna setprop $name/exec = astring: "$exec"
2a90918318af50d5712ae7159e5625476332c184pquerna setprop $name/timeout_seconds = count: $to
2a90918318af50d5712ae7159e5625476332c184pquernaEND
ede0584e7ec53cc1ea832c5c50281431d9ecc576pquerna}
ede0584e7ec53cc1ea832c5c50281431d9ecc576pquerna
ede0584e7ec53cc1ea832c5c50281431d9ecc576pquernaprophist_adddep () {
ede0584e7ec53cc1ea832c5c50281431d9ecc576pquerna #
82d2a5debc5a6ed2118ac5916d9ba36ad0b5d78btrawick # If a dependency doesn't exist, create it. Instances should be
42167da203d969a1402cf7ce09c14586c04af1dfjim # refreshed for changes to take effect.
42167da203d969a1402cf7ce09c14586c04af1dfjim #
42167da203d969a1402cf7ce09c14586c04af1dfjim if [ $# -lt 6 ]; then
81ebf4d4f943d1ec988dd10105354e510c2da1d8jim echo "prophist_adddep(): Insufficient arguments ($*)"
e62b34b26eb8e82bf6f06ff99a08e304b48792ecpquerna exit 1
e62b34b26eb8e82bf6f06ff99a08e304b48792ecpquerna fi
e62b34b26eb8e82bf6f06ff99a08e304b48792ecpquerna
27420b7ba57bf78f7a85b19fb0155053a3aff80dwrowe fmri=$1
27420b7ba57bf78f7a85b19fb0155053a3aff80dwrowe /usr/bin/svcprop -q $fmri || return
27420b7ba57bf78f7a85b19fb0155053a3aff80dwrowe
ceeb4b77f172b9d0125f1b4b323675d700b2c43bminfrin name=$2
ceeb4b77f172b9d0125f1b4b323675d700b2c43bminfrin /usr/bin/svcprop -Cqp $name $fmri && return
ceeb4b77f172b9d0125f1b4b323675d700b2c43bminfrin
9152b0c4366af633c4b7982af01bd9a821f410d5pquerna type=$3
9152b0c4366af633c4b7982af01bd9a821f410d5pquerna group=$4
9152b0c4366af633c4b7982af01bd9a821f410d5pquerna ro=$5
9152b0c4366af633c4b7982af01bd9a821f410d5pquerna shift 5
87d944bf70927764edf8ef69e46d3b4b8fa09131pquerna
87d944bf70927764edf8ef69e46d3b4b8fa09131pquerna /usr/sbin/svccfg -s $fmri <<END
424c1a743525e9c5008e29b39a99363723409a1dtrawick addpg $name dependency
424c1a743525e9c5008e29b39a99363723409a1dtrawick setprop $name/type = astring: $type
424c1a743525e9c5008e29b39a99363723409a1dtrawick setprop $name/grouping = astring: $group
4375cabac8fc22b3717687ffdbce9bbdf095f255trawick setprop $name/restart_on = astring: $ro
4375cabac8fc22b3717687ffdbce9bbdf095f255trawick setprop $name/entities = fmri: $*
4375cabac8fc22b3717687ffdbce9bbdf095f255trawickEND
39dbd3f60b93f5e0fbf46d9ae237f6742e113442pquerna}
39dbd3f60b93f5e0fbf46d9ae237f6742e113442pquerna
89211a3153be8b03353c3bfbca45fed67cb80f0bpquernaprophist_adddpt () {
89211a3153be8b03353c3bfbca45fed67cb80f0bpquerna #
89211a3153be8b03353c3bfbca45fed67cb80f0bpquerna # If a dependent doesn't exist, create it. Instances should be
89211a3153be8b03353c3bfbca45fed67cb80f0bpquerna # refresh for changes to take effect.
89211a3153be8b03353c3bfbca45fed67cb80f0bpquerna #
89211a3153be8b03353c3bfbca45fed67cb80f0bpquerna if [ $# -ne 5 ]; then
89211a3153be8b03353c3bfbca45fed67cb80f0bpquerna echo "prophist_adddpt(): Incorrect arguments ($*).\n"
89211a3153be8b03353c3bfbca45fed67cb80f0bpquerna exit 1
a14ccf0f7e9b44c6848334823542a1799577f669pquerna fi
a14ccf0f7e9b44c6848334823542a1799577f669pquerna
a14ccf0f7e9b44c6848334823542a1799577f669pquerna fmri=$1
43c24b7301a9df7014ce54c0bc55ac4754cf5b0dpquerna /usr/bin/svcprop -q $fmri || return
43c24b7301a9df7014ce54c0bc55ac4754cf5b0dpquerna
a2e37e48efb113e8e4f9d9ca9c8286aaac6c936cpquerna name=$2
a2e37e48efb113e8e4f9d9ca9c8286aaac6c936cpquerna /usr/bin/svcprop -Cqp dependents/$name $fmri && return
a2e37e48efb113e8e4f9d9ca9c8286aaac6c936cpquerna
007ba11dc68651df7f872f35947ae82a595d9e02pquerna group=$3
007ba11dc68651df7f872f35947ae82a595d9e02pquerna ro=$4
007ba11dc68651df7f872f35947ae82a595d9e02pquerna target=$5
44ca834b970b454b844efb96f219bdf49fee71e5trawick
44ca834b970b454b844efb96f219bdf49fee71e5trawick prophist_addprop $fmri dependents framework $name fmri: $target
44ca834b970b454b844efb96f219bdf49fee71e5trawick prophist_adddep $target $name service $group $ro $fmri
eb8430fd3bc941c0b3ba8bba3884b7fc464bf458pquerna}
eb8430fd3bc941c0b3ba8bba3884b7fc464bf458pquerna
eb8430fd3bc941c0b3ba8bba3884b7fc464bf458pquernainstance_refresh () {
fde88bb682426885c679198ee130d2d5a29e8c0fbnicholes echo $1 >> /etc/svc/volatile/refreshes
fde88bb682426885c679198ee130d2d5a29e8c0fbnicholes}
fde88bb682426885c679198ee130d2d5a29e8c0fbnicholes
fde88bb682426885c679198ee130d2d5a29e8c0fbnicholesrefresh_instances () {
fde88bb682426885c679198ee130d2d5a29e8c0fbnicholes [ -r /etc/svc/volatile/refreshes ] && {
fde88bb682426885c679198ee130d2d5a29e8c0fbnicholes sort -u /etc/svc/volatile/refreshes | xargs -l svcadm refresh
fde88bb682426885c679198ee130d2d5a29e8c0fbnicholes }
fde88bb682426885c679198ee130d2d5a29e8c0fbnicholes}
60e385aa992e11a6cb0504e8d4fc35186e8d848bpquerna
60e385aa992e11a6cb0504e8d4fc35186e8d848bpquernainstance_clear () {
60e385aa992e11a6cb0504e8d4fc35186e8d848bpquerna echo $1 >> /etc/svc/volatile/clears
d66ac514cc15e99228d72c56c6c3daf25da8d360niq}
d66ac514cc15e99228d72c56c6c3daf25da8d360niq
d66ac514cc15e99228d72c56c6c3daf25da8d360niqclear_conditionally () {
d66ac514cc15e99228d72c56c6c3daf25da8d360niq [ "`/usr/bin/svcprop -p restarter/state $1`" = "maintenance" ] && \
e23b77006a8b079c0ad52e42ba2029e759455b8fjorton /usr/sbin/svcadm clear $1
e23b77006a8b079c0ad52e42ba2029e759455b8fjorton}
e23b77006a8b079c0ad52e42ba2029e759455b8fjorton
e23b77006a8b079c0ad52e42ba2029e759455b8fjortonclear_instances () {
22c347c08cd77d5e2c32536b467b389fd33d631fpquerna [ -r /etc/svc/volatile/clears ] && {
8c46f9f81ae6357dc97560d6d85154f19cf251aejim for inst in `/usr/bin/sort -u /etc/svc/volatile/clears`; do
b6e2b36d6972a0e243368eb567e91d511fb40b1bbnicholes clear_conditionally $inst
b6e2b36d6972a0e243368eb567e91d511fb40b1bbnicholes done
b6e2b36d6972a0e243368eb567e91d511fb40b1bbnicholes }
b6e2b36d6972a0e243368eb567e91d511fb40b1bbnicholes}
b6e2b36d6972a0e243368eb567e91d511fb40b1bbnicholes
ad4a5834dfdf9488af4ac3238ea4d8b18dce49acpquernaprepare_last_import () {
e5882a36d7756850cc829f5f2286120b877458b1pquerna # Preserve the five hashes for the profiles: generic (two
e5882a36d7756850cc829f5f2286120b877458b1pquerna # cases), platform (uname -i, uname -m outputs), and site.
8b7594c66e764f5cd3506b6f2459497ab65a8b03pquerna
8b7594c66e764f5cd3506b6f2459497ab65a8b03pquerna gn="var_svc_profile_generic_open_xml"
8b7594c66e764f5cd3506b6f2459497ab65a8b03pquerna gh=`/usr/bin/svcprop -p ${gn}/md5sum smf/manifest 2>/dev/null`
8c46f9f81ae6357dc97560d6d85154f19cf251aejim [ $? = 0 ] || gh=""
8c46f9f81ae6357dc97560d6d85154f19cf251aejim
20f1b1a67eef5ab0f3295608c89964a7dca4fdd1pquerna gln="var_svc_profile_generic_limited_net_xml"
20f1b1a67eef5ab0f3295608c89964a7dca4fdd1pquerna glh=`/usr/bin/svcprop -p ${gln}/md5sum smf/manifest 2>/dev/null`
20f1b1a67eef5ab0f3295608c89964a7dca4fdd1pquerna [ $? = 0 ] || glh=""
20f1b1a67eef5ab0f3295608c89964a7dca4fdd1pquerna
599c5abcc7fec60611956f56b732eca033c287d2pquerna LC_ALL=C pl=`/usr/bin/uname -i | /usr/bin/tr , _`
599c5abcc7fec60611956f56b732eca033c287d2pquerna pln="var_svc_profile_platform_${pl}_xml"
599c5abcc7fec60611956f56b732eca033c287d2pquerna plh=`/usr/bin/svcprop -p ${pln}/md5sum smf/manifest 2>/dev/null`
e76fdcdfb8994ad70776526f50fa013b3e9a6033bnicholes [ $? = 0 ] || plh=""
e76fdcdfb8994ad70776526f50fa013b3e9a6033bnicholes
e76fdcdfb8994ad70776526f50fa013b3e9a6033bnicholes LC_ALL=C plm=`/usr/bin/uname -m | /usr/bin/tr , _`
eb9b491d7b262dad572ec2f1f75eea592283f81apquerna if [ $plm != $pl ]; then
eb9b491d7b262dad572ec2f1f75eea592283f81apquerna plmn="var_svc_profile_platform_${plm}_xml"
1ef90d1763e489969ec7a01c77bcb158ece5ae83jorton plmh=`/usr/bin/svcprop -p ${plmn}/md5sum smf/manifest \
c5cb4c9e7c8696907ddebab2a0037717c710b0f6jorton 2>/dev/null`
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive [ $? = 0 ] || plmh=""
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive else
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive plmh=""
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive fi
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive sn="var_svc_profile_site_xml"
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive sh=`/usr/bin/svcprop -p $sn/md5sum smf/manifest 2>/dev/null`
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive [ $? = 0 ] || sh=""
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive # Remove all manifest hashes.
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive /usr/sbin/svccfg delete smf/manifest
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive # Restore smf/manifest and hash values.
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive /usr/sbin/svccfg add smf/manifest
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive [ -n "$gh" ] && {
6d00a5e2c08ddbff9614ecc17a1c085462811f89slive echo "Preserving generic hash ($gh)."
4f6e78091b3f45a5782389ae25b62516a7a0c842bnicholes /usr/sbin/svccfg -s smf/manifest addpg ${gn} framework
4f6e78091b3f45a5782389ae25b62516a7a0c842bnicholes /usr/sbin/svccfg -s smf/manifest setprop ${gn}/md5sum = \
4f6e78091b3f45a5782389ae25b62516a7a0c842bnicholes opaque: $gh
4f6e78091b3f45a5782389ae25b62516a7a0c842bnicholes }
4f6e78091b3f45a5782389ae25b62516a7a0c842bnicholes [ -n "$glh" ] && {
7d15331eeb5429d7148d13d6fd914a641bf1c000pquerna echo "Preserving generic_limited hash ($glh)."
7d15331eeb5429d7148d13d6fd914a641bf1c000pquerna /usr/sbin/svccfg -s smf/manifest addpg ${gln} framework
7d15331eeb5429d7148d13d6fd914a641bf1c000pquerna /usr/sbin/svccfg -s smf/manifest setprop ${gln}/md5sum = \
e9be3aacfd6c0a1208e6c91a133be92ed0f94fe1bnicholes opaque: $glh
e9be3aacfd6c0a1208e6c91a133be92ed0f94fe1bnicholes }
e9be3aacfd6c0a1208e6c91a133be92ed0f94fe1bnicholes [ -n "$plh" ] && {
e9be3aacfd6c0a1208e6c91a133be92ed0f94fe1bnicholes echo "Preserving platform hash ($plh)."
1d14622beee568462689b2bbc6a9e0e9b6a40583striker /usr/sbin/svccfg -s smf/manifest addpg $pln framework
1d14622beee568462689b2bbc6a9e0e9b6a40583striker /usr/sbin/svccfg -s smf/manifest setprop $pln/md5sum = \
6e5f5644328bf50c3aa295d0ab20903369010829gregames opaque: $plh
6e5f5644328bf50c3aa295d0ab20903369010829gregames }
6e5f5644328bf50c3aa295d0ab20903369010829gregames [ -n "$plmh" ] && {
e978097e0bf2ae161b6f9dde40eaf089bf046c89ake echo "Preserving platform hash ($plmh)."
e978097e0bf2ae161b6f9dde40eaf089bf046c89ake /usr/sbin/svccfg -s smf/manifest addpg $plmn framework
e978097e0bf2ae161b6f9dde40eaf089bf046c89ake /usr/sbin/svccfg -s smf/manifest setprop $plmn/md5sum = \
275419d6395e6f072962fb701b89accaff1f3690jerenkrantz opaque: $plmh
275419d6395e6f072962fb701b89accaff1f3690jerenkrantz }
275419d6395e6f072962fb701b89accaff1f3690jerenkrantz [ -n "$sh" ] && {
e777da9fa7ff3138fead7860b53ef00e67a40e26jerenkrantz echo "Preserving site hash ($sh)."
e777da9fa7ff3138fead7860b53ef00e67a40e26jerenkrantz /usr/sbin/svccfg -s smf/manifest addpg $sn framework
e777da9fa7ff3138fead7860b53ef00e67a40e26jerenkrantz /usr/sbin/svccfg -s smf/manifest setprop $sn/md5sum = \
e777da9fa7ff3138fead7860b53ef00e67a40e26jerenkrantz opaque: $sh
8bdea88407c848c1c2693655e2f8b23abde12307bnicholes }
8bdea88407c848c1c2693655e2f8b23abde12307bnicholes}
8bdea88407c848c1c2693655e2f8b23abde12307bnicholes
275419d6395e6f072962fb701b89accaff1f3690jerenkrantzSVCCFG_CHECKHASH=1 export SVCCFG_CHECKHASH
8e7fb6968047a527d1ccde25ad2aed20da5150ddjerenkrantz
8e7fb6968047a527d1ccde25ad2aed20da5150ddjerenkrantz#
8e7fb6968047a527d1ccde25ad2aed20da5150ddjerenkrantz# 0. Clean up repository
5a9fa4d75086e942f6e850e1a2e96c4c27a845d0jerenkrantz#
5a9fa4d75086e942f6e850e1a2e96c4c27a845d0jerenkrantzif [ -z "$X" ] && /usr/bin/svcprop smf/manifest 2>/dev/null |
5a9fa4d75086e942f6e850e1a2e96c4c27a845d0jerenkrantz /usr/bin/grep '^ar_svc_[^/]*/md5sum opaque ' >/dev/null
5a9fa4d75086e942f6e850e1a2e96c4c27a845d0jerenkrantzthen
5a9fa4d75086e942f6e850e1a2e96c4c27a845d0jerenkrantz set -- `
5a9fa4d75086e942f6e850e1a2e96c4c27a845d0jerenkrantz /usr/bin/svcprop smf/manifest 2>/dev/null |
36c8049de63c446926139936c3d195330a0539cetrawick /usr/bin/grep '^ar_svc[^/]*/md5sum opaque ' |
36c8049de63c446926139936c3d195330a0539cetrawick /usr/bin/tr '/' ' ' |
36c8049de63c446926139936c3d195330a0539cetrawick while read pg prop type value; do
36c8049de63c446926139936c3d195330a0539cetrawick echo "$pg/$value"
36c8049de63c446926139936c3d195330a0539cetrawick done
36c8049de63c446926139936c3d195330a0539cetrawick `
0206c121a68a63559b2e843288e81bcf16093e46jerenkrantz backup=`echo "$#/$#" | sed 's/.//g'`
9174efb969475801d0dc88eee35aae40c748d450nd fwidth=`echo "$#\c" | wc -c`
0206c121a68a63559b2e843288e81bcf16093e46jerenkrantz
8ff094bdec6a2e1c355c1e6e95e9952d4fae7766jerenkrantz echo "Converting obsolete repository entries: \c" > /dev/msglog
8ff094bdec6a2e1c355c1e6e95e9952d4fae7766jerenkrantz i=1; n=$#
628cf3411e8a6d09e27b3666312e43832dda93f3jorton while [ $# -gt 0 ]; do
628cf3411e8a6d09e27b3666312e43832dda93f3jorton printf "%${fwidth}s/%${fwidth}s" $i $n > /dev/msglog
628cf3411e8a6d09e27b3666312e43832dda93f3jorton echo $1 | sed 's:/: :' | (
f0d89a5a23222e031db8113478645f28688fa748jorton read pg value
f0d89a5a23222e031db8113478645f28688fa748jorton
f0d89a5a23222e031db8113478645f28688fa748jorton (echo "select /smf/manifest"; echo "delpg v$pg") |
f0d89a5a23222e031db8113478645f28688fa748jorton /usr/sbin/svccfg 2>/dev/null >/dev/null
f0d89a5a23222e031db8113478645f28688fa748jorton (echo "select /smf/manifest"; echo "delpg $pg") |
f0d89a5a23222e031db8113478645f28688fa748jorton /usr/sbin/svccfg 2>/dev/null >/dev/null
f0d89a5a23222e031db8113478645f28688fa748jorton (echo "select /smf/manifest";
f0d89a5a23222e031db8113478645f28688fa748jorton echo "addpg v$pg framework") |
f0d89a5a23222e031db8113478645f28688fa748jorton /usr/sbin/svccfg 2>/dev/null >/dev/null
f0d89a5a23222e031db8113478645f28688fa748jorton (echo "select /smf/manifest";
65d743d7fbb53143636ee2dec8fe8d8a1a581a6bjerenkrantz echo "setprop v$pg/md5sum = opaque: $value") |
65d743d7fbb53143636ee2dec8fe8d8a1a581a6bjerenkrantz /usr/sbin/svccfg 2>/dev/null >/dev/null
65d743d7fbb53143636ee2dec8fe8d8a1a581a6bjerenkrantz )
afc08f35f5f387896bc625cdee21b88c7fe7699djerenkrantz i=`expr $i + 1`
a0fd132e01ab69f1c48e3d6a6791447cb6d65e51jerenkrantz shift
a0fd132e01ab69f1c48e3d6a6791447cb6d65e51jerenkrantz echo "$backup\c" > /dev/msglog
a6bb6f2fb734e488a9b6335fabea3431f9dcf253jerenkrantz done
a6bb6f2fb734e488a9b6335fabea3431f9dcf253jerenkrantz echo > /dev/msglog
a6bb6f2fb734e488a9b6335fabea3431f9dcf253jerenkrantz echo "Converted $n obsolete repository entries"
3ca80e703a960eca0760c23636b7fe502a8f0342bnicholes activity=true
3ca80e703a960eca0760c23636b7fe502a8f0342bnicholesfi
3ca80e703a960eca0760c23636b7fe502a8f0342bnicholes
3ca80e703a960eca0760c23636b7fe502a8f0342bnicholes#
3ca80e703a960eca0760c23636b7fe502a8f0342bnicholes# If no last-import snapshots are present on critical services, then we are
5300d4a4fabe3b594da950e4b9ab0f90e076546ejerenkrantz# creating the last-import snapshots for the first time post upgrade.
5300d4a4fabe3b594da950e4b9ab0f90e076546ejerenkrantz#
5300d4a4fabe3b594da950e4b9ab0f90e076546ejerenkrantzcreate_last_import=1
b1306729566b49fb30aed5c46adaf07a637115afjerenkrantzfor svc in single-user multi-user multi-user-server; do
b1306729566b49fb30aed5c46adaf07a637115afjerenkrantz if /usr/bin/svcprop -s last-import svc:/milestone/$svc:default \
b1306729566b49fb30aed5c46adaf07a637115afjerenkrantz >/dev/null 2>&1
aa50e6503e0c7fbdc7d9bfab7d3a5fa640c2c8c1wrowe then
aa50e6503e0c7fbdc7d9bfab7d3a5fa640c2c8c1wrowe create_last_import=
418ee053321d0ee451bb482a9becdfcd3344201fjim break
5c6cb72bfeee541644cea8177aefce1157571d3bjerenkrantz fi
5c6cb72bfeee541644cea8177aefce1157571d3bjerenkrantzdone
5c6cb72bfeee541644cea8177aefce1157571d3bjerenkrantz
db8551deeb08fa799e7f27e8b748a9397f747bdcjortonif [ $create_last_import ]; then
db8551deeb08fa799e7f27e8b748a9397f747bdcjorton echo "Last import snapshots absent; preparing for re-import"
db8551deeb08fa799e7f27e8b748a9397f747bdcjorton prepare_last_import
db8551deeb08fa799e7f27e8b748a9397f747bdcjorton
9e3209bc06ddf32f23e4b254faa45914bc323cc9jim #
9e3209bc06ddf32f23e4b254faa45914bc323cc9jim # Apply property history files.
9e3209bc06ddf32f23e4b254faa45914bc323cc9jim #
45ed846f4ed90f05c084f6a33d688e642be4e623jerenkrantz echo "Upgrade detected; applying property history"
45ed846f4ed90f05c084f6a33d688e642be4e623jerenkrantz for phist in /var/svc/profile/prophist.*; do
45ed846f4ed90f05c084f6a33d688e642be4e623jerenkrantz /lib/svc/bin/prophist hash $phist
54d22ed1c429b903b029bbd62621f11a9e286137minfrin if [ $? = 3 ]; then
54d22ed1c429b903b029bbd62621f11a9e286137minfrin echo "Sourcing $phist"
54d22ed1c429b903b029bbd62621f11a9e286137minfrin . $phist
54d22ed1c429b903b029bbd62621f11a9e286137minfrin fi
54d22ed1c429b903b029bbd62621f11a9e286137minfrin done
54d22ed1c429b903b029bbd62621f11a9e286137minfrin
54d22ed1c429b903b029bbd62621f11a9e286137minfrin /usr/bin/rm -f /var/svc/profile/.upgrade_prophist
54d22ed1c429b903b029bbd62621f11a9e286137minfrinfi
92e8e44864d94866eefcbfde0a53fa3d12855149jerenkrantz
92e8e44864d94866eefcbfde0a53fa3d12855149jerenkrantz#
92e8e44864d94866eefcbfde0a53fa3d12855149jerenkrantz# 2. Manifest import. Application directories first, then
06106b6b63b112a09de1b66fa29596035c0176ffthommay# site-specific manifests.
06106b6b63b112a09de1b66fa29596035c0176ffthommay#
06106b6b63b112a09de1b66fa29596035c0176ffthommaynonsite_dirs=`/usr/bin/find /var/svc/manifest/* -name site -prune -o -type d \
e335319a08e12eb7daff9afa80e985dc53f652b8jorton -print -prune`
e335319a08e12eb7daff9afa80e985dc53f652b8jorton
e335319a08e12eb7daff9afa80e985dc53f652b8jortonnonsite_manifests=`/lib/svc/bin/mfstscan $nonsite_dirs`
e335319a08e12eb7daff9afa80e985dc53f652b8jortonsite_manifests=`/lib/svc/bin/mfstscan /var/svc/manifest/site`
e335319a08e12eb7daff9afa80e985dc53f652b8jorton
c8794ec1e4c474ae101ce3835080f638136e7860erikabelemanifests="$nonsite_manifests $site_manifests"
c8794ec1e4c474ae101ce3835080f638136e7860erikabele
c8794ec1e4c474ae101ce3835080f638136e7860erikabele[ -n "$_MFST_DEBUG" ] && {
c8794ec1e4c474ae101ce3835080f638136e7860erikabele echo "Changed manifests to import:"
c8794ec1e4c474ae101ce3835080f638136e7860erikabele for m in $manifests; do echo " $m"; done
bb07ee33bce1a448bcc60ca43720b1ab1c413f87minfrin}
bb07ee33bce1a448bcc60ca43720b1ab1c413f87minfrin
22dda44322067379eeba28d7ec7fc833cb04c0dfminfrin#
22dda44322067379eeba28d7ec7fc833cb04c0dfminfrin# 2b. Import the manifests while giving a running display of imports on
7b6ba9c468f26bdb3492d5e8cb79628a3b04e8c8wrowe# console, and a final count in the logfile.
7b6ba9c468f26bdb3492d5e8cb79628a3b04e8c8wrowe#
7b6ba9c468f26bdb3492d5e8cb79628a3b04e8c8wroweif [ -n "$nonsite_manifests" -o -n "$site_manifests" ]; then
7b6ba9c468f26bdb3492d5e8cb79628a3b04e8c8wrowe rm -f /tmp/manifest_import.$$
77edcaaccc089335938f3844b752e1044f7eb278trawick
77edcaaccc089335938f3844b752e1044f7eb278trawick set -- $manifests
77edcaaccc089335938f3844b752e1044f7eb278trawick backup=`echo "$#/$#" | sed 's/.//g'`
77edcaaccc089335938f3844b752e1044f7eb278trawick fwidth=`echo "$#\c" | wc -c`
59b1b6c3fd51c83c3bb9f02a8f08751335f9fb1dminfrin
59b1b6c3fd51c83c3bb9f02a8f08751335f9fb1dminfrin echo "Loading smf(5) service descriptions: \c" > /dev/msglog
59b1b6c3fd51c83c3bb9f02a8f08751335f9fb1dminfrin
59b1b6c3fd51c83c3bb9f02a8f08751335f9fb1dminfrin i=1; n=$#
9f1a88897168c3f1e5009acb585daf01e38a0299jim while [ $# -gt 0 ]; do
9f1a88897168c3f1e5009acb585daf01e38a0299jim printf "%${fwidth}s/%${fwidth}s" $i $n > /dev/msglog
9f1a88897168c3f1e5009acb585daf01e38a0299jim svccfg_import $1
9f1a88897168c3f1e5009acb585daf01e38a0299jim i=`expr $i + 1`
616a448c1fca1648622707df5a1aae7316bb3d5djim shift
616a448c1fca1648622707df5a1aae7316bb3d5djim echo "$backup\c" > /dev/msglog
616a448c1fca1648622707df5a1aae7316bb3d5djim done
616a448c1fca1648622707df5a1aae7316bb3d5djim
36bfefb6940a90242290e5b5713a2d831275eef1jim echo > /dev/msglog
5a8bb5948d2a258145174320587706de3219d8a3pquerna echo "Loaded $n smf(5) service descriptions"
5a8bb5948d2a258145174320587706de3219d8a3pquerna activity=true
5a8bb5948d2a258145174320587706de3219d8a3pquerna
5a8bb5948d2a258145174320587706de3219d8a3pquerna if [ -s /tmp/manifest_import.$$ ]; then
0cba3a63e59bfa77f67955cb4e034264ed6c5523jerenkrantz echo "svccfg warnings:"
0cba3a63e59bfa77f67955cb4e034264ed6c5523jerenkrantz cat /tmp/manifest_import.$$
e5abee85fe751fc27c5d4fc9a8ebe3b80f3d6603trawick
e5abee85fe751fc27c5d4fc9a8ebe3b80f3d6603trawick msg="svccfg import warnings. See"
e5abee85fe751fc27c5d4fc9a8ebe3b80f3d6603trawick msg="$msg /var/svc/log/system-manifest-import:default.log ."
ca3a25d12c5fe0926aa97550be39f0d88d0decb1pquerna echo $msg > /dev/msglog
ca3a25d12c5fe0926aa97550be39f0d88d0decb1pquerna fi
ca3a25d12c5fe0926aa97550be39f0d88d0decb1pquerna rm -f /tmp/manifest_import.$$
ca3a25d12c5fe0926aa97550be39f0d88d0decb1pquernafi
74def8815c725f8128a4e76ab1f5704df80b024ajerenkrantz
74def8815c725f8128a4e76ab1f5704df80b024ajerenkrantz#
4d553781254e46f1dfc8d86b79667a74fb8a3eb5brianp# 3. Profile application. We must create the platform profile upon
74def8815c725f8128a4e76ab1f5704df80b024ajerenkrantz# first boot, as we may be a diskless client of a platform or
8f868f15482c7406db01216b6e4778ddabb26898trawick# architecture distinct from our NFS server.
8f868f15482c7406db01216b6e4778ddabb26898trawick#
8f868f15482c7406db01216b6e4778ddabb26898trawicksvccfg_apply /var/svc/profile/generic.xml
8f868f15482c7406db01216b6e4778ddabb26898trawick
f902601ea431a9b56106e0f5f641dd5fd7efbc30jortonif [ ! -f /var/svc/profile/platform.xml ]; then
f902601ea431a9b56106e0f5f641dd5fd7efbc30jorton this_karch=`uname -m`
f902601ea431a9b56106e0f5f641dd5fd7efbc30jorton this_plat=`uname -i`
f902601ea431a9b56106e0f5f641dd5fd7efbc30jorton
1e1e4f4f810b99732f06fc05141f42ca1965a9edpquerna if [ -f /var/svc/profile/platform_$this_plat.xml ]; then
1e1e4f4f810b99732f06fc05141f42ca1965a9edpquerna platform_profile=platform_$this_plat.xml
1e1e4f4f810b99732f06fc05141f42ca1965a9edpquerna elif [ -f /var/svc/profile/platform_$this_karch.xml ]; then
1e1e4f4f810b99732f06fc05141f42ca1965a9edpquerna platform_profile=platform_$this_karch.xml
5f80956ca9d98d5482f38eef0c465df0923d7781jerenkrantz else
5f80956ca9d98d5482f38eef0c465df0923d7781jerenkrantz platform_profile=platform_none.xml
78fcc425fc9fc58202a1693fe40dd0ce75c031ffjorton fi
78fcc425fc9fc58202a1693fe40dd0ce75c031ffjorton
78fcc425fc9fc58202a1693fe40dd0ce75c031ffjorton ln -s $platform_profile /var/svc/profile/platform.xml
78fcc425fc9fc58202a1693fe40dd0ce75c031ffjortonfi
d2ffb32434f79782ff7a364ffa31064698c5c645jorton
d2ffb32434f79782ff7a364ffa31064698c5c645jortonsvccfg_apply /var/svc/profile/platform.xml
d2ffb32434f79782ff7a364ffa31064698c5c645jorton
d2ffb32434f79782ff7a364ffa31064698c5c645jorton#
01847067cfc639c14e1aa77d3b3e98f239447a12jerenkrantz# 4. Upgrade handling. The upgrade file generally consists of a series
01847067cfc639c14e1aa77d3b3e98f239447a12jerenkrantz# of svcadm(1M) and svccfg(1M) commands.
01847067cfc639c14e1aa77d3b3e98f239447a12jerenkrantz#
01847067cfc639c14e1aa77d3b3e98f239447a12jerenkrantz(
9fe74ffcdea85800f04a7222f716f78ae60cce51jerenkrantz unset SVCCFG_CHECKHASH
9fe74ffcdea85800f04a7222f716f78ae60cce51jerenkrantz
9fe74ffcdea85800f04a7222f716f78ae60cce51jerenkrantz if [ -f /var/svc/profile/upgrade ]; then
dae3cb64cc6681b5f6b0fd12e7f8f6296ffaa19abnicholes . /var/svc/profile/upgrade
dae3cb64cc6681b5f6b0fd12e7f8f6296ffaa19abnicholes
d2ffb32434f79782ff7a364ffa31064698c5c645jorton /usr/bin/mv /var/svc/profile/upgrade \
9fe74ffcdea85800f04a7222f716f78ae60cce51jerenkrantz /var/svc/profile/upgrade.app.`date +\%Y\%m\%d\%H\%M\%S`
81540a0eb1da2c687e22de3367d8ded55e17e330pquerna activity=true
d2ffb32434f79782ff7a364ffa31064698c5c645jorton fi
81540a0eb1da2c687e22de3367d8ded55e17e330pquerna)
ce66c67eba79a20118d8664b65b0c9eeec1bebdabnicholes
ce66c67eba79a20118d8664b65b0c9eeec1bebdabnicholes#
ce66c67eba79a20118d8664b65b0c9eeec1bebdabnicholes# 5. Site profile is applied last to give administrator the final say.
ce66c67eba79a20118d8664b65b0c9eeec1bebdabnicholes#
ce66c67eba79a20118d8664b65b0c9eeec1bebdabnicholesif [ -f /var/svc/profile/site.xml ]; then
ce66c67eba79a20118d8664b65b0c9eeec1bebdabnicholes svccfg_apply /var/svc/profile/site.xml
6cfc2ed5a8e633c5a40fec65775868d53952d992trawickfi
6cfc2ed5a8e633c5a40fec65775868d53952d992trawick
6cfc2ed5a8e633c5a40fec65775868d53952d992trawick#
6cfc2ed5a8e633c5a40fec65775868d53952d992trawick# 6. Final actions.
6cfc2ed5a8e633c5a40fec65775868d53952d992trawick#
6cfc2ed5a8e633c5a40fec65775868d53952d992trawickrefresh_instances
5159c40648868a58745aa11981f706948ff0f0d1pquernaclear_instances
5159c40648868a58745aa11981f706948ff0f0d1pquerna
5159c40648868a58745aa11981f706948ff0f0d1pquernaif $activity; then
c178b761acd6bffa199c2fd28c4469492b989699nd svcadm _smf_backup "manifest_import" || true
9174efb969475801d0dc88eee35aae40c748d450ndfi
c178b761acd6bffa199c2fd28c4469492b989699nd
9c6bbd67082b5a47fb17cfa5b61b8a7e1fb01875pquernaexit 0
9c6bbd67082b5a47fb17cfa5b61b8a7e1fb01875pquerna