usr/src/cmd/auto-install/auto_install.h
changeset 869 424db5e50fb5
parent 867 cfbbedf29419
child 870 1cd031050724
equal deleted inserted replaced
868:ccab1050a371 869:424db5e50fb5
    42 #define	AI_EXIT_SUCCESS		0	/* success - control passed to user */
    42 #define	AI_EXIT_SUCCESS		0	/* success - control passed to user */
    43 #define	AI_EXIT_AUTO_REBOOT	64	/* success - auto reboot enabled */
    43 #define	AI_EXIT_AUTO_REBOOT	64	/* success - auto reboot enabled */
    44 #define	AI_EXIT_FAILURE		1	/* general failure */
    44 #define	AI_EXIT_FAILURE		1	/* general failure */
    45 #define	AI_EXIT_FAILURE_AIM	2	/* failure-invalid manifest provided */
    45 #define	AI_EXIT_FAILURE_AIM	2	/* failure-invalid manifest provided */
    46 
    46 
    47 #define	AUTO_INSTALL_SUCCESS		0
    47 #define	AUTO_INSTALL_SUCCESS	0
    48 #define	AUTO_INSTALL_EMPTY_LIST		1	/* list of packages is empty */
    48 #define	AUTO_INSTALL_EMPTY_LIST	1	/* list of packages is empty */
    49 #define	AUTO_INSTALL_PKG_NOT_FND	2
    49 #define	AUTO_INSTALL_FAILURE	-1
    50 #define	AUTO_INSTALL_FAILURE		-1
    50 #define	AUTO_TD_SUCCESS		0
    51 #define	AUTO_TD_SUCCESS			0
    51 #define	AUTO_TD_FAILURE		-1
    52 #define	AUTO_TD_FAILURE			-1
       
    53 
    52 
    54 #define	INSTALLED_ROOT_DIR	"/a"
    53 #define	INSTALLED_ROOT_DIR	"/a"
    55 #define	AUTO_UNKNOWN_STRING	"unknown"
    54 #define	AUTO_UNKNOWN_STRING	"unknown"
    56 #define	AUTO_DBGLVL_INFO	LS_DBGLVL_INFO
    55 #define	AUTO_DBGLVL_INFO	LS_DBGLVL_INFO
    57 #define	AUTO_DBGLVL_WARN	LS_DBGLVL_WARN
    56 #define	AUTO_DBGLVL_WARN	LS_DBGLVL_WARN
    97 	((units) == AI_SIZE_UNITS_GIGABYTES ? "gigabytes": \
    96 	((units) == AI_SIZE_UNITS_GIGABYTES ? "gigabytes": \
    98 	((units) == AI_SIZE_UNITS_TERABYTES ? "terabytes": \
    97 	((units) == AI_SIZE_UNITS_TERABYTES ? "terabytes": \
    99 	((units) == AI_SIZE_UNITS_SECTORS ? "sectors": \
    98 	((units) == AI_SIZE_UNITS_SECTORS ? "sectors": \
   100 	"(unknown)"))))
    99 	"(unknown)"))))
   101 
   100 
   102 #define	MB_TO_SECTORS	((uint64_t)2048)
   101 #define MB_TO_SECTORS	((uint64_t)2048)
   103 #define	GB_TO_MB	((uint64_t)1024)
   102 #define GB_TO_MB	((uint64_t)1024)
   104 #define	TB_TO_GB	((uint64_t)1024)
   103 #define TB_TO_GB	((uint64_t)1024)
   105 
   104 
   106 
   105 
   107 /*
   106 /*
   108  * DTD schema nodepaths - see ai.dtd
   107  * DTD schema nodepaths - see ai.dtd
   109  */
   108  */
   110 #define	AIM_TARGET_DISK_KEYWORD "auto_install/ai_instance/" \
   109 #define	AIM_TARGET_DISK_KEYWORD "auto_install/ai_instance/target/target_device/disk/disk_keyword/key"
   111 	"target/target_device/disk/disk_keyword/key"
   110 #define	AIM_TARGET_DEVICE_NAME "auto_install/ai_instance/target/target_device/disk/disk_name[name_type='ctd']/name"
   112 #define	AIM_TARGET_DEVICE_NAME "auto_install/ai_instance/" \
       
   113 	"target/target_device/disk/disk_name[name_type='ctd']/name"
       
   114 #define	AIM_TARGET_DEVICE_BOOT_DISK "boot_disk"
   111 #define	AIM_TARGET_DEVICE_BOOT_DISK "boot_disk"
   115 #define	AIM_TARGET_DEVICE_SELECT_VOLUME_NAME \
   112 #define	AIM_TARGET_DEVICE_SELECT_VOLUME_NAME \
   116 	"auto_install/ai_instance/target/target_device/" \
   113 	"auto_install/ai_instance/target/target_device/disk/disk_name[name_type='volid']/name"
   117 	"disk/disk_name[name_type='volid']/name"
       
   118 #define	AIM_TARGET_DEVICE_SELECT_DEVICE_ID \
   114 #define	AIM_TARGET_DEVICE_SELECT_DEVICE_ID \
   119 	"auto_install/ai_instance/target/target_device/" \
   115 	"auto_install/ai_instance/target/target_device/disk/disk_name[name_type='devid']/name"
   120 	"disk/disk_name[name_type='devid']/name"
       
   121 #define	AIM_TARGET_DEVICE_SELECT_DEVICE_PATH \
   116 #define	AIM_TARGET_DEVICE_SELECT_DEVICE_PATH \
   122 	"auto_install/ai_instance/target/target_device/" \
   117 	"auto_install/ai_instance/target/target_device/disk/disk_name[name_type='devpath']/name"
   123 	"disk/disk_name[name_type='devpath']/name"
   118 #define	AIM_TARGET_DEVICE_TYPE "auto_install/ai_instance/target/target_device/disk/disk_prop/dev_type"
   124 #define	AIM_TARGET_DEVICE_TYPE "auto_install/ai_instance/" \
       
   125 	"target/target_device/disk/disk_prop/dev_type"
       
   126 #define	AIM_TARGET_DEVICE_SIZE	\
   119 #define	AIM_TARGET_DEVICE_SIZE	\
   127 	"auto_install/ai_instance/target/target_device/" \
   120 	"auto_install/ai_instance/target/target_device/disk/disk_prop/dev_size"
   128 	"disk/disk_prop/dev_size"
   121 #define	AIM_TARGET_DEVICE_VENDOR	\
   129 #define	AIM_TARGET_DEVICE_VENDOR "auto_install/ai_instance/target/" \
   122 	"auto_install/ai_instance/target/target_device/disk/disk_prop/dev_vendor"
   130 	"target_device/disk/disk_prop/dev_vendor"
       
   131 #define	AIM_TARGET_DEVICE_USE_SOLARIS_PARTITION	\
   123 #define	AIM_TARGET_DEVICE_USE_SOLARIS_PARTITION	\
   132 	"auto_install/ai_instance/target/target_device/disk/" \
   124 	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/action"
   133 	"partition[action='use_existing']/action"
       
   134 #define	AIM_TARGET_DEVICE_INSTALL_SLICE_NUMBER \
   125 #define	AIM_TARGET_DEVICE_INSTALL_SLICE_NUMBER \
   135 	"auto_install/ai_instance/target/target_device/disk/" \
   126 	"auto_install/ai_instance/target/target_device/disk/slice[is_root='true']/name"
   136 	"slice[is_root='true']/name"
       
   137 #define	AIM_TARGET_DEVICE_ISCSI_TARGET_NAME \
   127 #define	AIM_TARGET_DEVICE_ISCSI_TARGET_NAME \
   138 	"auto_install/ai_instance/target/target_device/disk/iscsi/name"
   128 	"auto_install/ai_instance/target/target_device/disk/iscsi/name"
   139 #define	AIM_TARGET_DEVICE_ISCSI_TARGET_IP \
   129 #define	AIM_TARGET_DEVICE_ISCSI_TARGET_IP \
   140 	"auto_install/ai_instance/target/target_device/disk/iscsi/ip"
   130 	"auto_install/ai_instance/target/target_device/disk/iscsi/ip"
   141 #define	AIM_TARGET_DEVICE_ISCSI_TARGET_LUN \
   131 #define	AIM_TARGET_DEVICE_ISCSI_TARGET_LUN \
   152 #define	AIM_PARTITION_ACTIONS	\
   142 #define	AIM_PARTITION_ACTIONS	\
   153 	"auto_install/ai_instance/target/target_device/disk/partition/action"
   143 	"auto_install/ai_instance/target/target_device/disk/partition/action"
   154 #define	AIM_NUMBERED_PARTITIONS	\
   144 #define	AIM_NUMBERED_PARTITIONS	\
   155 	"auto_install/ai_instance/target/target_device/disk/partition/name"
   145 	"auto_install/ai_instance/target/target_device/disk/partition/name"
   156 #define	AIM_NUMBERED_PARTITION_NUMBER	\
   146 #define	AIM_NUMBERED_PARTITION_NUMBER	\
   157 	"auto_install/ai_instance/target/target_device/disk/" \
   147 	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/name"
   158 	"partition[name=\"%s\":action=\"%s\"]/name"
       
   159 #define	AIM_NUMBERED_PARTITION_ACTION	\
   148 #define	AIM_NUMBERED_PARTITION_ACTION	\
   160 	"auto_install/ai_instance/target/target_device/disk/" \
   149 	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/action"
   161 	"partition[name=\"%s\":action=\"%s\"]/action"
       
   162 #define	AIM_NUMBERED_PARTITION_START_SECTOR	\
   150 #define	AIM_NUMBERED_PARTITION_START_SECTOR	\
   163 	"auto_install/ai_instance/target/target_device/disk/" \
   151 	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/size/start_sector"
   164 	"partition[name=\"%s\":action=\"%s\"]/size/start_sector"
       
   165 #define	AIM_NUMBERED_PARTITION_SIZE	\
   152 #define	AIM_NUMBERED_PARTITION_SIZE	\
   166 	"auto_install/ai_instance/target/target_device/disk/" \
   153 	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/size/val"
   167 	"partition[name=\"%s\":action=\"%s\"]/size/val"
       
   168 #define	AIM_NUMBERED_PARTITION_TYPE	\
   154 #define	AIM_NUMBERED_PARTITION_TYPE	\
   169 	"auto_install/ai_instance/target/target_device/disk/" \
   155 	"auto_install/ai_instance/target/target_device/disk/partition[name=\"%s\":action=\"%s\"]/part_type"
   170 	"partition[name=\"%s\":action=\"%s\"]/part_type"
       
   171 
   156 
   172 #define	AIM_USE_EXISTING_PARTITIONS	\
   157 #define	AIM_USE_EXISTING_PARTITIONS	\
   173 	"auto_install/ai_instance/target/target_device/disk/" \
   158 	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/action"
   174 	"partition[action='use_existing']/action"
       
   175 #define	AIM_UNNUMBERED_PARTITION_NUMBER	\
   159 #define	AIM_UNNUMBERED_PARTITION_NUMBER	\
   176 	"auto_install/ai_instance/target/target_device/disk/" \
   160 	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/name"
   177 	"partition[action='use_existing']/name"
       
   178 #define	AIM_UNNUMBERED_PARTITION_ACTION	\
   161 #define	AIM_UNNUMBERED_PARTITION_ACTION	\
   179 	"auto_install/ai_instance/target/target_device/disk/" \
   162 	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/action"
   180 	"partition[action='use_existing']/action"
       
   181 #define	AIM_UNNUMBERED_PARTITION_START_SECTOR	\
   163 #define	AIM_UNNUMBERED_PARTITION_START_SECTOR	\
   182 	"auto_install/ai_instance/target/target_device/disk/" \
   164 	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/size/start_sector"
   183 	"partition[action='use_existing']/size/start_sector"
       
   184 #define	AIM_UNNUMBERED_PARTITION_SIZE	\
   165 #define	AIM_UNNUMBERED_PARTITION_SIZE	\
   185 	"auto_install/ai_instance/target/target_device/disk/" \
   166 	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/size/val"
   186 	"partition[action='use_existing']/size/val"
       
   187 #define	AIM_UNNUMBERED_PARTITION_TYPE	\
   167 #define	AIM_UNNUMBERED_PARTITION_TYPE	\
   188 	"auto_install/ai_instance/target/target_device/disk/" \
   168 	"auto_install/ai_instance/target/target_device/disk/partition[action='use_existing']/part_type"
   189 	"partition[action='use_existing']/part_type"
   169 
   190 
   170 #define	AIM_SLICE_NUMBER "auto_install/ai_instance/target/target_device/disk/slice/name"
   191 #define	AIM_SLICE_NUMBER "auto_install/ai_instance/target/" \
   171 #define	AIM_SLICE_ACTION "auto_install/ai_instance/target/target_device/disk/slice/action"
   192 	"target_device/disk/slice/name"
   172 #define	AIM_SLICE_SIZE "auto_install/ai_instance/target/target_device/disk/slice[name=\"%s\":action=\"%s\"]/size/val"
   193 #define	AIM_SLICE_ACTION "auto_install/ai_instance/target/" \
   173 #define	AIM_SLICE_ON_EXISTING	\
   194 	"target_device/disk/slice/action"
   174 	"auto_install/ai_instance/target/target_device/disk/slice[name=\"%s\":action=\"%s\"]/force"
   195 #define	AIM_SLICE_SIZE "auto_install/ai_instance/target/" \
       
   196 	"target_device/disk/slice[name=\"%s\":action=\"%s\"]/size/val"
       
   197 #define	AIM_SLICE_ON_EXISTING "auto_install/ai_instance/target/" \
       
   198 	"target_device/disk/slice[name=\"%s\":action=\"%s\"]/force"
       
   199 #define	AIM_AUTO_REBOOT	"auto_install/ai_instance/auto_reboot"
   175 #define	AIM_AUTO_REBOOT	"auto_install/ai_instance/auto_reboot"
   200 
   176 
   201 #define	AIM_PROXY_URL "auto_install/ai_instance/http_proxy"
   177 #define	AIM_PROXY_URL "auto_install/ai_instance/http_proxy"
   202 
   178 
   203 #define	AIM_PACKAGE_INSTALL_NAME "auto_install/ai_instance/software/" \
   179 #define	AIM_PACKAGE_INSTALL_NAME "auto_install/ai_instance/software/software_data[action='install']/name"
   204 	"software_data[action='install']/name"
   180 
   205 
   181 #define	AIM_PACKAGE_REMOVE_NAME "auto_install/ai_instance/software/software_data[action='uninstall']/name"
   206 #define	AIM_PACKAGE_REMOVE_NAME "auto_install/ai_instance/software/" \
       
   207 	"software_data[action='uninstall']/name"
       
   208 
   182 
   209 /*
   183 /*
   210  * Primary and secondary publishers
   184  * Primary and secondary publishers
   211  */
   185  */
   212 #define	AIM_IPS_PUBLISHER_URL	\
   186 #define	AIM_IPS_PUBLISHER_URL	\
   215 #define	AIM_FALLBACK_PUBLISHER_NAME	"opensolaris.org"
   189 #define	AIM_FALLBACK_PUBLISHER_NAME	"opensolaris.org"
   216 
   190 
   217 /*
   191 /*
   218  * Find publisher name and mirror based on url
   192  * Find publisher name and mirror based on url
   219  */
   193  */
   220 #define	AIM_ADD_URL_PUBLISHER_NAME "auto_install/ai_instance/software/" \
   194 #define	AIM_ADD_URL_PUBLISHER_NAME \
   221 	"source/publisher[origin/name=\"%s\"]/name"
   195 	"auto_install/ai_instance/software/source/publisher[origin/name=\"%s\"]/name"
   222 #define	AIM_ADD_URL_PUBLISHER_MIRROR "auto_install/ai_instance/software/" \
   196 #define	AIM_ADD_URL_PUBLISHER_MIRROR \
   223 	"source/publisher[origin/name=\"%s\"]/mirror/name"
   197 	"auto_install/ai_instance/software/source/publisher[origin/name=\"%s\"]/mirror/name"
   224 
   198 
   225 /* type of package list to be obtained from manifest */
   199 /* type of package list to be obtained from manifest */
   226 typedef enum {
   200 typedef enum {
   227 	AI_PACKAGE_LIST_INSTALL,
   201 	AI_PACKAGE_LIST_INSTALL,
   228 	AI_PACKAGE_LIST_REMOVE
   202 	AI_PACKAGE_LIST_REMOVE
   367 void	ai_destroy_manifestserv(PyObject *server_obj);
   341 void	ai_destroy_manifestserv(PyObject *server_obj);
   368 char	**ai_lookup_manifest_values(PyObject *server_obj, char *path, int *len);
   342 char	**ai_lookup_manifest_values(PyObject *server_obj, char *path, int *len);
   369 void	ai_free_manifest_value_list(char **value_list);
   343 void	ai_free_manifest_value_list(char **value_list);
   370 
   344 
   371 int	ai_du_get_and_install(char *install_root, boolean_t honor_noinstall,
   345 int	ai_du_get_and_install(char *install_root, boolean_t honor_noinstall,
   372 	    boolean_t update_boot_archive, int *num_installed_pkgs_p);
   346 	    boolean_t update_boot_archive);
   373 int	ai_du_install(char *install_root, boolean_t honor_noinstall,
   347 int	ai_du_install(char *install_root, boolean_t honor_noinstall,
   374 	    boolean_t update_boot_archive, int *num_installed_pkgs_p);
   348 	    boolean_t update_boot_archive);
   375 
   349 
   376 int	mount_iscsi_target_if_requested(auto_disk_info *, char *, int);
   350 int	mount_iscsi_target_if_requested(auto_disk_info *, char *, int);
   377 
   351 
   378 #ifdef __cplusplus
   352 #ifdef __cplusplus
   379 }
   353 }