usr/src/cmd/auto-install/auto_install.h
changeset 862 e9f31f2f2f2d
parent 846 70dd9e819f25
child 867 cfbbedf29419
--- a/usr/src/cmd/auto-install/auto_install.h	Tue Aug 17 18:22:44 2010 -0400
+++ b/usr/src/cmd/auto-install/auto_install.h	Fri Aug 20 11:31:18 2010 -0600
@@ -58,10 +58,10 @@
 
 #define	AUTO_VALID_MANIFEST	0
 #define	AUTO_INVALID_MANIFEST	-1
-#define	AI_MANIFEST_BEGIN_MARKER	"<ai_manifest"
-#define	AI_MANIFEST_END_MARKER		"</ai_manifest>"
 #define	SC_MANIFEST_BEGIN_MARKER	"<?xml version='1.0'?>"
 #define	SC_MANIFEST_END_MARKER		"</service_bundle>"
+#define	SC_EMBEDDED_BEGIN_MARKER	"<sc_embedded_manifest"
+#define	SC_EMBEDDED_END_MARKER		"</sc_embedded_manifest>"
 #define	SC_PROPVAL_MARKER		"<propval"
 #define	AUTO_PROPERTY_ROOTPASS		"rootpass"
 #define	AUTO_PROPERTY_TIMEZONE		"timezone"
@@ -82,8 +82,8 @@
  */
 #define	AUTO_REMOVE_PKG_LIST_FILE	"/tmp/remove.pkg.list"
 
-#define	AI_MANIFEST_FILE	"/tmp/ai_manifest.xml"
-#define	AI_MANIFEST_SCHEMA	"/tmp/ai_manifest.rng"
+#define	AI_MANIFEST_FILE	"/tmp/ai.xml"
+#define	AI_MANIFEST_SCHEMA	"/tmp/ai.dtd"
 #define	SC_MANIFEST_FILE	"/tmp/sc_manifest.xml"
 
 /* Script for converting legacy System Configuration manifest to new format */
@@ -98,153 +98,103 @@
 	((units) == AI_SIZE_UNITS_SECTORS ? "sectors": \
 	"(unknown)"))))
 
-/*
- * RNG schema definitions - see ai_manifest.rng
- */
-#define	AIM_TARGET_DEVICE_NAME "ai_manifest/ai_target_device/target_device_name"
-#define	AIM_TARGET_DEVICE_BOOT_DISK "boot_disk"
-#define	AIM_TARGET_DEVICE_SELECT_VOLUME_NAME \
-	"ai_manifest/ai_target_device/target_device_select_volume_name"
-#define	AIM_TARGET_DEVICE_SELECT_DEVICE_ID \
-	"ai_manifest/ai_target_device/target_device_select_id"
-#define	AIM_TARGET_DEVICE_SELECT_DEVICE_PATH \
-	"ai_manifest/ai_target_device/target_device_select_device_path"
-#define	AIM_TARGET_DEVICE_TYPE "ai_manifest/ai_target_device/target_device_type"
-#define	AIM_TARGET_DEVICE_SIZE	\
-	"ai_manifest/ai_target_device/target_device_size"
-#define	AIM_TARGET_DEVICE_VENDOR	\
-	"ai_manifest/ai_target_device/target_device_vendor"
-#define	AIM_TARGET_DEVICE_USE_SOLARIS_PARTITION	\
-	"ai_manifest/ai_target_device/target_device_use_solaris_partition"
-#define	AIM_TARGET_DEVICE_OVERWRITE_ROOT_ZFS_POOL \
-	"ai_manifest/ai_target_device/target_device_overwrite_root_zfs_pool"
-#define	AIM_TARGET_DEVICE_INSTALL_SLICE_NUMBER \
-	"ai_manifest/ai_target_device/target_device_install_slice_number"
-#define	AIM_TARGET_DEVICE_ISCSI_TARGET_NAME \
-	"ai_manifest/ai_target_device/target_device_iscsi_target_name"
-#define	AIM_TARGET_DEVICE_ISCSI_TARGET_IP \
-	"ai_manifest/ai_target_device/target_device_iscsi_target_ip"
-#define	AIM_TARGET_DEVICE_ISCSI_TARGET_LUN \
-	"ai_manifest/ai_target_device/target_device_iscsi_target_lun"
-#define	AIM_TARGET_DEVICE_ISCSI_TARGET_PORT \
-	"ai_manifest/ai_target_device/target_device_iscsi_target_port"
-#define	AIM_TARGET_DEVICE_ISCSI_TARGET_CHAP_NAME \
-	"ai_manifest/ai_target_device/target_device_iscsi_target_chap_name"
-#define	AIM_TARGET_DEVICE_ISCSI_TARGET_CHAP_SECRET \
-	"ai_manifest/ai_target_device/target_device_iscsi_target_chap_secret"
-#define	AIM_TARGET_DEVICE_ISCSI_TARGET_INITIATOR \
-	"ai_manifest/ai_target_device/target_device_iscsi_initiator_name"
-#define	AIM_TARGET_DEVICE_ISCSI_PARAMETER_SOURCE \
-	"ai_manifest/ai_target_device/target_device_iscsi_parameter_source"
-#define	AIM_SWAP_SIZE	\
-	"ai_manifest/ai_swap_device/ai_swap_size"
-#define	AIM_DUMP_SIZE	\
-	"ai_manifest/ai_dump_device/ai_dump_size"
+#define MB_TO_SECTORS	((uint64_t)2048)
+#define GB_TO_MB	((uint64_t)1024)
+#define TB_TO_GB	((uint64_t)1024)
 
-#define	AIM_PARTITION_ACTION	\
-	"ai_manifest/ai_device_partitioning/partition_action"
-#define	AIM_PARTITION_NUMBER	\
-	"ai_manifest/ai_device_partitioning/partition_number"
-#define	AIM_PARTITION_START_SECTOR	\
-	"ai_manifest/ai_device_partitioning/partition_start_sector"
-#define	AIM_PARTITION_SIZE	\
-	"ai_manifest/ai_device_partitioning/partition_size"
-#define	AIM_PARTITION_TYPE	\
-	"ai_manifest/ai_device_partitioning/partition_type"
-#define	AIM_PARTITION_SIZE_UNITS	\
-	"ai_manifest/ai_device_partitioning/partition_size_units"
-#define	AIM_PARTITION_IS_LOGICAL	\
-	"ai_manifest/ai_device_partitioning/partition_is_logical"
-
-#define	AIM_SLICE_ACTION "ai_manifest/ai_device_vtoc_slices/slice_action"
-#define	AIM_SLICE_NUMBER "ai_manifest/ai_device_vtoc_slices/slice_number"
-#define	AIM_SLICE_SIZE "ai_manifest/ai_device_vtoc_slices/slice_size"
-#define	AIM_SLICE_SIZE_UNITS	\
-	"ai_manifest/ai_device_vtoc_slices/slice_size_units"
-#define	AIM_SLICE_ON_EXISTING	\
-	"ai_manifest/ai_device_vtoc_slices/slice_on_existing"
-#define	AIM_AUTO_REBOOT	"ai_manifest/ai_auto_reboot"
-
-#define	AIM_PROXY_URL "ai_manifest/ai_http_proxy/url"
 
 /*
- * There are two tags supported for specifying list
- * of packages to be installed in order to keep
- * backward compatibility
- */
-#define	AIM_OLD_PACKAGE_INSTALL_NAME "ai_manifest/ai_packages/package_name"
-#define	AIM_PACKAGE_INSTALL_NAME "ai_manifest/ai_install_packages/pkg/name"
-
-#define	AIM_PACKAGE_REMOVE_NAME "ai_manifest/ai_uninstall_packages/pkg/name"
-
-/*
- * Define default publisher
+ * DTD schema nodepaths - see ai.dtd
  */
-#define	AIM_IPS_DEFAULT_PUBLISHER_NAME	\
-	"ai_manifest/ai_pkg_repo_default_publisher/main/publisher"
-#define	AIM_IPS_DEFAULT_PUBLISHER_URL	\
-	"ai_manifest/ai_pkg_repo_default_publisher/main/url"
-#define	AIM_IPS_DEFAULT_PUBLISHER_MIRROR	\
-	"ai_manifest/ai_pkg_repo_default_publisher/mirror/url"
-/*
- * define default authority (backward compatibility)
- */
-#define	AIM_IPS_DEFAULT_AUTH_NAME	\
-	"ai_manifest/ai_pkg_repo_default_authority/main/authname"
-#define	AIM_IPS_DEFAULT_AUTH_URL	\
-	"ai_manifest/ai_pkg_repo_default_authority/main/url"
-#define	AIM_IPS_DEFAULT_AUTH_MIRROR	\
-	"ai_manifest/ai_pkg_repo_default_authority/mirror/url"
+#define	AIM_TARGET_DISK_KEYWORD "auto_install/ai_instance/target/target_device/disk/disk_keyword/key"
+#define	AIM_TARGET_DEVICE_NAME "auto_install/ai_instance/target/target_device/disk/disk_name[name_type='ctd']/name"
+#define	AIM_TARGET_DEVICE_BOOT_DISK "boot_disk"
+#define	AIM_TARGET_DEVICE_SELECT_VOLUME_NAME \
+	"auto_install/ai_instance/target/target_device/disk/disk_name[name_type='volid']/name"
+#define	AIM_TARGET_DEVICE_SELECT_DEVICE_ID \
+	"auto_install/ai_instance/target/target_device/disk/disk_name[name_type='devid']/name"
+#define	AIM_TARGET_DEVICE_SELECT_DEVICE_PATH \
+	"auto_install/ai_instance/target/target_device/disk/disk_name[name_type='devpath']/name"
+#define	AIM_TARGET_DEVICE_TYPE "auto_install/ai_instance/target/target_device/disk/disk_prop/dev_type"
+#define	AIM_TARGET_DEVICE_SIZE	\
+	"auto_install/ai_instance/target/target_device/disk/disk_prop/dev_size"
+#define	AIM_TARGET_DEVICE_VENDOR	\
+	"auto_install/ai_instance/target/target_device/disk/disk_prop/dev_vendor"
+#define	AIM_TARGET_DEVICE_USE_SOLARIS_PARTITION	\
+	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/action"
+#define	AIM_TARGET_DEVICE_INSTALL_SLICE_NUMBER \
+	"auto_install/ai_instance/target/target_device/disk/slice[is_root='true']/name"
+#define	AIM_TARGET_DEVICE_ISCSI_TARGET_NAME \
+	"auto_install/ai_instance/target/target_device/disk/iscsi/name"
+#define	AIM_TARGET_DEVICE_ISCSI_TARGET_IP \
+	"auto_install/ai_instance/target/target_device/disk/iscsi/ip"
+#define	AIM_TARGET_DEVICE_ISCSI_TARGET_LUN \
+	"auto_install/ai_instance/target/target_device/disk/iscsi/target_lun"
+#define	AIM_TARGET_DEVICE_ISCSI_TARGET_PORT \
+	"auto_install/ai_instance/target/target_device/disk/iscsi/target_port"
+#define	AIM_TARGET_DEVICE_ISCSI_PARAMETER_SOURCE \
+	"auto_install/ai_instance/target/target_device/disk/iscsi/source"
+#define	AIM_SWAP_SIZE	\
+	"auto_install/ai_instance/target/target_device/swap/zvol/size/val"
+#define	AIM_DUMP_SIZE	\
+	"auto_install/ai_instance/target/target_device/dump/zvol/size/val"
+
+#define	AIM_PARTITION_ACTIONS	\
+	"auto_install/ai_instance/target/target_device/disk/partition/action"
+#define	AIM_NUMBERED_PARTITIONS	\
+	"auto_install/ai_instance/target/target_device/disk/partition/name"
+#define	AIM_NUMBERED_PARTITION_NUMBER	\
+	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/name"
+#define	AIM_NUMBERED_PARTITION_ACTION	\
+	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/action"
+#define	AIM_NUMBERED_PARTITION_START_SECTOR	\
+	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/size/start_sector"
+#define	AIM_NUMBERED_PARTITION_SIZE	\
+	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/size/val"
+#define	AIM_NUMBERED_PARTITION_TYPE	\
+	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/part_type"
+
+#define	AIM_USE_EXISTING_PARTITIONS	\
+	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/action"
+#define	AIM_UNNUMBERED_PARTITION_NUMBER	\
+	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/name"
+#define	AIM_UNNUMBERED_PARTITION_ACTION	\
+	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/action"
+#define	AIM_UNNUMBERED_PARTITION_START_SECTOR	\
+	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/size/start_sector"
+#define	AIM_UNNUMBERED_PARTITION_SIZE	\
+	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/size/val"
+#define	AIM_UNNUMBERED_PARTITION_TYPE	\
+	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/part_type"
+
+#define	AIM_SLICE_NUMBER "auto_install/ai_instance/target/target_device/disk/slice/name"
+#define	AIM_SLICE_ACTION "auto_install/ai_instance/target/target_device/disk/slice/action"
+#define	AIM_SLICE_SIZE "auto_install/ai_instance/target/target_device/disk/slice[name=\"%s\":action=\"%s\"]/size/val"
+#define	AIM_SLICE_ON_EXISTING	\
+	"auto_install/ai_instance/target/target_device/disk/slice[name=\"%s\":action=\"%s\"]/force"
+#define	AIM_AUTO_REBOOT	"auto_install/ai_instance/auto_reboot"
+
+#define	AIM_PROXY_URL "auto_install/ai_instance/http_proxy"
+
+#define	AIM_PACKAGE_INSTALL_NAME "auto_install/ai_instance/software/software_data[action='install']/name"
+
+#define	AIM_PACKAGE_REMOVE_NAME "auto_install/ai_instance/software/software_data[action='uninstall']/name"
 
 /*
- * define additional publisher
+ * Primary and secondary publishers
  */
-#define	AIM_IPS_ADDL_PUBLISHER_NAME	\
-	"ai_manifest/ai_pkg_repo_addl_publisher/main/publisher"
-#define	AIM_IPS_ADDL_PUBLISHER_URL	\
-	"ai_manifest/ai_pkg_repo_addl_publisher/main/url"
-#define	AIM_IPS_ADDL_PUBLISHER_MIRROR	\
-	"ai_manifest/ai_pkg_repo_addl_publisher/mirror/url"
-/*
- * define additional authority (backward compatibility)
- */
-#define	AIM_IPS_ADDL_AUTH_NAME	\
-	"ai_manifest/ai_pkg_repo_addl_authority/main/authname"
-#define	AIM_IPS_ADDL_AUTH_URL	\
-	"ai_manifest/ai_pkg_repo_addl_authority/main/url"
-#define	AIM_IPS_ADDL_AUTH_MIRROR	\
-	"ai_manifest/ai_pkg_repo_addl_authority/mirror/url"
+#define	AIM_IPS_PUBLISHER_URL	\
+	"auto_install/ai_instance/software/source/publisher/origin/name"
+#define	AIM_FALLBACK_PUBLISHER_URL	"http://pkg.opensolaris.org/release"
+#define	AIM_FALLBACK_PUBLISHER_NAME	"opensolaris.org"
 
 /*
- * Find default publisher, its mirrors based on url
- */
-#define	AIM_ADD_DEFAULT_URL_PUBLISHER_NAME \
-	"ai_manifest/ai_pkg_repo_default_publisher/main[url=\"%s\"]/publisher"
-#define	AIM_ADD_DEFAULT_URL_PUBLISHER_MIRROR \
-	"ai_manifest/ai_pkg_repo_default_publisher" \
-	"[main/url=\"%s\"]/mirror/url"
-/*
- * Find default authority, its mirrors based on url (backward compatibility)
+ * Find publisher name and mirror based on url
  */
-#define	AIM_ADD_DEFAULT_URL_AUTH_NAME \
-	"ai_manifest/ai_pkg_repo_default_authority/main[url=\"%s\"]/authname"
-#define	AIM_ADD_DEFAULT_URL_AUTH_MIRROR \
-	"ai_manifest/ai_pkg_repo_default_authority" \
-	"[main/url=\"%s\"]/mirror/url"
-/*
- * Find additional publisher, its mirrors based on url
- */
-#define	AIM_ADD_ADDL_URL_PUBLISHER_NAME \
-	"ai_manifest/ai_pkg_repo_addl_publisher/main[url=\"%s\"]/publisher"
-#define	AIM_ADD_ADDL_URL_PUBLISHER_MIRROR \
-	"ai_manifest/ai_pkg_repo_addl_publisher[main/url=\"%s\"]/mirror/url"
-/*
- * Find additional authority, its mirrors based on url (backward compatibility)
- */
-#define	AIM_ADD_ADDL_URL_AUTH_NAME \
-	"ai_manifest/ai_pkg_repo_addl_authority/main[url=\"%s\"]/authname"
-#define	AIM_ADD_ADDL_URL_AUTH_MIRROR \
-	"ai_manifest/ai_pkg_repo_addl_authority[main/url=\"%s\"]/mirror/url"
+#define	AIM_ADD_URL_PUBLISHER_NAME \
+	"auto_install/ai_instance/software/source/publisher[origin/name=\"%s\"]/name"
+#define	AIM_ADD_URL_PUBLISHER_MIRROR \
+	"auto_install/ai_instance/software/source/publisher[origin/name=\"%s\"]/mirror/name"
 
 /* type of package list to be obtained from manifest */
 typedef enum {
@@ -279,9 +229,6 @@
 	char		ip[INSTISCSI_IP_ADDRESS_LEN + 1];
 	uint32_t	port;
 	char		lun[INSTISCSI_MAX_LUN_LEN + 1];
-	char		chapname[INSTISCSI_MAX_CHAP_NAME_LEN + 1];
-	char		chapsecret[INSTISCSI_MAX_CHAP_LEN + 1];
-	char		initiator[INSTISCSI_MAX_INITIATOR_LEN + 1];
 	iscsi_parm_src_t parm_src;
 } iscsi_info_t;
 
@@ -289,6 +236,7 @@
 	/*
 	 * disk criteria for selection of target disk
 	 */
+	char		diskkeyword[10];		/* 'boot_disk' */
 	char		diskname[MAXNAMELEN];
 	char		disktype[MAXNAMELEN];
 	char		diskvendor[MAXNAMELEN];
@@ -299,7 +247,6 @@
 #ifndef	__sparc
 	char		diskusepart[6];		/* 'true' or 'false' */
 #endif
-	char 		diskoverwrite_rpool[6];	/* 'true' or 'false' */
 	iscsi_info_t	diskiscsi;		/* iSCSI target parameters */
 	/*
 	 * other data related to disk target