Print this page
6774 - create-client should take imagepath as optional argument

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/installadm/create-client.sh
          +++ new/usr/src/cmd/installadm/create-client.sh
↓ open down ↓ 85 lines elided ↑ open up ↑
  86   86  #
  87   87  # Purpose : Print the usage message in the event the user
  88   88  #           has input illegal command line parameters and
  89   89  #           then exit
  90   90  #
  91   91  # Arguments : 
  92   92  #   none
  93   93  #
  94   94  usage () {
  95   95          echo "Usage: $0 [-b <property>=<value>,...]"
  96      -        echo "\t\t-e <macaddr> -t <imagepath> -n <svcname>"
       96 +        echo "\t\t-e <macaddr> -n <svcname> [-t <imagepath>]"
  97   97          
  98   98          exit 1
  99   99  }
 100  100  
 101  101  abort()
 102  102  {
 103  103          echo "${myname}: Aborted"
 104  104          exit 1
 105  105  }
 106  106  
↓ open down ↓ 62 lines elided ↑ open up ↑
 169  169          fi
 170  170          IMAGE_SERVER=`expr $2 : '\(.*\):.*'`
 171  171          if [ -n "${IMAGE_SERVER}" ]; then
 172  172                  IMAGE_PATH=`expr $2 : '.*:\(.*\)'`
 173  173          else
 174  174                  # no server provided, just get path
 175  175                  IMAGE_PATH=$2
 176  176          fi
 177  177          if [ ! "$IMAGE_PATH" ]; then
 178  178                  echo "${myname}: Invalid image pathname"
 179      -            usage ;
      179 +                usage ;
 180  180          fi
 181  181          shift 2;;
 182  182      -f) BOOT_FILE=$2
 183  183          if [ ! "$BOOT_FILE" ] ; then
 184  184              usage ;
 185  185          fi
 186  186          shift 2;;
 187  187  
 188  188      # -b option is used to introduce changes in a client,
 189  189      # e.g. console=ttya
↓ open down ↓ 3 lines elided ↑ open up ↑
 193  193  
 194  194      -*) # -anything else is an unknown argument
 195  195          usage ;
 196  196          ;;
 197  197      *)  # all else is spurious
 198  198          usage ;
 199  199          ;;
 200  200      esac
 201  201  done
 202  202  
 203      -if [ -z "${MAC_ADDR}" -o -z "${IMAGE_PATH}" -o -z "${SERVICE_NAME}" ]; then
      203 +if [ -z "${MAC_ADDR}" -o -z "${SERVICE_NAME}" ]; then
 204  204          echo "${myname}: Missing one or more required options."
 205  205          usage
 206  206  fi 
 207  207  
      208 +
      209 +# Verify that service corresponding to SERVICE_NAME exists
      210 +#
      211 +# Check the service exists in SMF
      212 +svcprop -p AI${SERVICE_NAME}/image_path \
      213 +    -c svc:/system/install/server:default 1>/dev/null 2>&1
      214 +if [ $? -ne 0 ]; then
      215 +        echo "${myname}: Service does not exist: ${SERVICE_NAME}"
      216 +        exit 1
      217 +fi
      218 +# Check that the service is running
      219 +${DIRNAME}/setup-service lookup ${SERVICE_NAME} ${INSTALL_TYPE} local
      220 +if [ $? -ne 0 ] ; then
      221 +        echo "${myname}: Service does not exist: ${SERVICE_NAME}"
      222 +        exit 1
      223 +fi
      224 +
      225 +
      226 +# Determine IMAGE PATH if not provided
      227 +#
      228 +if [ -z "${IMAGE_PATH}" ]; then
      229 +                # Find IMAGE PATH from SMF
      230 +                IMAGE_PATH="`svcprop -p AI${SERVICE_NAME}/image_path \
      231 +                    -c svc:/system/install/server:default 2>/dev/null`"
      232 +                if [ $? -ne 0 ]; then
      233 +                        echo "${myname}: Image-path record for service" \
      234 +                            "${SERVICE_NAME} is missing."
      235 +                        exit 1
      236 +                fi
      237 +fi
      238 +
 208  239  # If IMAGE_SERVER is passed in, check that it is equal to the local system
 209  240  # since we don't yet support a remote system being the image server.
 210  241  #
 211  242  if [ -n "${IMAGE_SERVER}" ]; then
 212  243          IMAGE_IP=`get_host_ip ${IMAGE_SERVER}`
 213  244          if [ -z $IMAGE_IP ] ; then
 214  245                  echo "${myname}: Failed to get IP address for ${IMAGE_SERVER}"
 215  246                  exit 1
 216  247          fi
 217  248  
↓ open down ↓ 26 lines elided ↑ open up ↑
 244  275  # For sparc, make sure the user hasn't specified a boot file via
 245  276  # the "-f" option. If they have, the BOOT_FILE variable will be set.
 246  277  #
 247  278  if [ "${IMAGE_TYPE}" = "${SPARC_IMAGE}" ]; then
 248  279          if [ "X$BOOT_FILE" != "X" ] ; then
 249  280              echo "${myname}: \"-f\" is an invalid option for SPARC"
 250  281              exit 1
 251  282          fi
 252  283  fi
 253  284  
 254      -# Verify that service corresponding to SERVICE_NAME exists
 255      -#
 256      -${DIRNAME}/setup-service lookup ${SERVICE_NAME} ${INSTALL_TYPE} local
 257      -if [ $? -ne 0 ] ; then
 258      -        echo "${myname}: Service does not exist: ${SERVICE_NAME}"
 259      -        exit 1
 260      -fi
 261      -
 262  285  
 263  286  # Convert the Ethernet address to DHCP "default client-ID" form:
 264  287  #    uppercase hex, preceded by the hardware
 265  288  #    address type ("01" for ethernet)
 266  289  #
 267  290  DHCP_CLIENT_ID=01`echo "${MAC_ADDR}" | ${TR} '[a-z]' '[A-Z]' |
 268  291      awk -F: '
 269  292          {
 270  293              for (i = 1; i <= 6 ; i++)
 271  294                  if (length($i) == 1) {
↓ open down ↓ 69 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX