7131650 Temporarily remove add_drivers stanza in ai_manifest.xml
authorJack Schwartz <Jack.Schwartz@Oracle.COM>
Thu, 14 Jun 2012 10:43:29 -0700
changeset 1710 f77129fa2fe3
parent 1709 ee7123806386
child 1711 35f43364976e
7131650 Temporarily remove add_drivers stanza in ai_manifest.xml 7158078 GUI Install fails when bypassing Support registration 7171496 installer summary screens should reflect which of OCM and ASR are configured, if only one is 7174802 Need to update the vanity url in the S11U1 installers with respect to OCM 7161785 WPTG_TBT:Lint:CONCAT:Q&A204721:Solaris 11.1 install_s11 T13Y issue in solaris_install_textinstall.po 7176467 Remove all indentation spacing from localized strings in sysconfig and text-install summary screens
usr/src/cmd/auto-install/manifest/ai_manifest.xml.src
usr/src/cmd/gui-install/aux/INSTALL_SUPPORT_PANEL.txt
usr/src/cmd/gui-install/src/confirm_screen.py
usr/src/cmd/gui-install/src/support_screen.py
usr/src/cmd/gui-install/xml/support.xml
usr/src/cmd/system-config/helpfiles/support_main.txt
usr/src/cmd/system-config/summary.py
usr/src/cmd/system-config/support.py
usr/src/cmd/text-install/summary.py
usr/src/lib/install_manifest_input/test/test_manifest_input_overlay.py
--- a/usr/src/cmd/auto-install/manifest/ai_manifest.xml.src	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/auto-install/manifest/ai_manifest.xml.src	Thu Jun 14 10:43:29 2012 -0700
@@ -313,80 +313,5 @@
       </software_data>
       -->
     </software>
-    <add_drivers>
-      <!--
-            Driver Updates: This section is for adding driver packages to the
-            boot environment before the installation takes place.  The
-            installer can then access all devices on the system.  The
-            packages installed in the boot environment will also be installed
-            on the target.
-
-            A <search_all> entry performs a search for devices which are
-            missing their drivers.  A repository publisher and location
-            may be specified, and that repository and its database will
-            be used.  If no publisher and location is specified, the
-            configured repositories will be used.
-            (See pkg publisher command.)  If <addall> is specified as
-            "true", then drivers the database says are third-party drivers
-            will be added like all others; otherwise third-party drivers
-            will not be added.
-
-                <search_all addall="true">
-                    <source>
-                        <publisher name="solaris">
-                            <origin name="http://pkg.oracle.com/solaris/release"/>
-                        </publisher>
-                    </source>
-                </search_all>
-
-            <software> entries are user-provided specifications of packages
-            needed in order to perform the install.  types are P5I, SVR4, DU.
-            A <software_data> action of "noinstall" inhibits adding to target.
-
-            P5I: A pkg(5) P5I file, full path is in the source/publisher/origin.
-            Path may be to a local file or an http or ftp specification.
-                <software>
-                    <source>
-                        <publisher>
-                            <origin
-                                name=
-        "http://pkg.oracle.com/solaris/release/p5i/0/driver/firewire.p5i"/>
-                        </publisher>
-                    </source>
-                    <software_data type="P5I"/>
-                </software>
-
-            SVR4: An SVR4 package spec. The source/publisher/origin corresponds
-            to the directory containing the packages.  The 
-            software/software_data/name refers tp the package's top level
-            directory or the package's datastream file.
-
-                <software>
-                    <source>
-                        <publisher>
-                            <origin name="/export/package_dir"/>
-                        </publisher>
-                    </source>
-                    <software_data type="SVR4">
-                        <name>my_disk_driver.d</name>
-                    </software_data>
-                </software>
-
-            DU: An ITU (Install Time Update) or Driver Update image.
-            The source/publisher/origin refers to the path just above the 
-            image's DU directory (if expanded) or the name of the .iso image.  
-            All packages in the image will be added.
-
-                <software>
-                    <source>
-                        <publisher>
-                            <origin name="/export/duimages/mydriver.iso"/>
-                        </publisher>
-                    </source>
-                    <software_data type="DU"/>
-                </software>     
-      -->
-      <search_all/>
-    </add_drivers>
   </ai_instance>
 </auto_install>
--- a/usr/src/cmd/gui-install/aux/INSTALL_SUPPORT_PANEL.txt	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/gui-install/aux/INSTALL_SUPPORT_PANEL.txt	Thu Jun 14 10:43:29 2012 -0700
@@ -66,6 +66,6 @@
 
 FOR MORE INFORMATION
 
-For further information about Oracle Configuration Manager, see the "Oracle Configuration Manager Installation and Administration Guide". See also http://www.oracle.com/support/policies.html.
+For further information about Oracle Configuration Manager, see the "Oracle Configuration Manager Installation and Administration Guide". See also http://www.oracle.com/goto/solarisautoreg.
 
 For further information about ASR, see the documentation included at http://www.oracle.com/asr.
--- a/usr/src/cmd/gui-install/src/confirm_screen.py	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/gui-install/src/confirm_screen.py	Thu Jun 14 10:43:29 2012 -0700
@@ -38,7 +38,7 @@
 from solaris_install.engine import InstallEngine
 from solaris_install.gui_install.base_screen import BaseScreen, \
     NotOkToProceedError
-from solaris_install.gui_install.gui_install_common import \
+from solaris_install.gui_install.gui_install_common import _, \
     empty_container, modal_dialog, COLOR_WHITE, RELEASE, GLADE_ERROR_MSG
 from solaris_install.gui_install.install_profile import InstallProfile
 from solaris_install.logger import INSTALL_LOGGER_NAME
@@ -265,23 +265,44 @@
 
         empty_container(self.supportvbox, destroy=True)
         support = from_engine().support
-        support_str = ""
-        if not support.mos_email and not support.mos_password:
-            support_str += _("No support configured")
+        self.logger.info("-- Support --")
+        if ((not support.mos_email and not support.mos_password) or
+            (not support.ocm_available and not support.asr_available)):
+            text_str = _("No OCM or ASR support configured")
+            add_detail_line(self.supportvbox, text_str)
+            self.logger.info('\t' + text_str)
         else:
+            # One or both of OCM and ASR is installed if we got here.
+            ocm_str = asr_str = None
             if not support.mos_password:
-                support_str += _("Anonymous support")
+                ocm_str = _("Anonymous OCM support\n")
             else:
-                support_str += _("My Oracle Support")
-
-            if support.netcfg == SupportInfo.PROXY:
-                support_str += " " + _("via Proxy")
-            elif support.netcfg == SupportInfo.HUB:
-                support_str += " " + _("via Hub")
-        text_str = _("Support configuration: %s") % support_str
-        add_detail_line(self.supportvbox, text_str)
-        self.logger.info("-- Support --")
-        self.logger.info('\t' + text_str)
+                if support.ocm_available:
+                    ocm_str = _("My Oracle Support for OCM")
+                if support.asr_available:
+                    asr_str = _("My Oracle Support for ASR")
+            if ocm_str:
+                add_detail_line(self.supportvbox, ocm_str)
+                self.logger.info('\t' + ocm_str)
+                ocm_str = None
+                if support.netcfg == SupportInfo.PROXY:
+                    ocm_str = _("OCM server contacted via Proxy")
+                elif support.ocm_hub:
+                    ocm_str = _("OCM server contacted via Hub")
+                if ocm_str:
+                    add_detail_line(self.supportvbox, ocm_str)
+                    self.logger.info('\t' + ocm_str)
+            if asr_str:
+                add_detail_line(self.supportvbox, asr_str)
+                self.logger.info('\t' + asr_str)
+                asr_str = None
+                if support.netcfg == SupportInfo.PROXY:
+                    asr_str = _("ASR server contacted via Proxy")
+                elif support.asr_hub:
+                    asr_str = _("ASR server contacted via ASR Manager")
+                if asr_str:
+                    add_detail_line(self.supportvbox, asr_str)
+                    self.logger.info('\t' + asr_str)
 
         empty_container(self.accountvbox, destroy=True)
         if profile.loginname is None:
--- a/usr/src/cmd/gui-install/src/support_screen.py	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/gui-install/src/support_screen.py	Thu Jun 14 10:43:29 2012 -0700
@@ -38,7 +38,7 @@
 
 from solaris_install.gui_install.base_screen import BaseScreen, \
     NotOkToProceedError
-from solaris_install.gui_install.gui_install_common import \
+from solaris_install.gui_install.gui_install_common import _, \
     make_url, modal_dialog, open_browser, GLADE_ERROR_MSG, INTERNAL_ERR_MSG
 from solaris_install.logger import INSTALL_LOGGER_NAME
 from solaris_install.sysconfig.profile import from_engine
@@ -351,25 +351,6 @@
             modal_dialog(msg1, msg2)
             raise NotOkToProceedError(msg1)
 
-        # WARNING - don't allow user to skip registration without
-        # showing them a warning message
-        if not email and not self._allow_no_reg_override:
-            # set flag so we only show this once; next time just proceed
-            self._allow_no_reg_override = True
-            msg1 = SupportInfo.MSGS["no_email"]
-            msg2 = NO_REG_WARN_MSG
-            LOGGER.info("Validation Warning:")
-            LOGGER.info(msg1)
-            ok_to_proceed = modal_dialog(msg1, msg2, two_buttons=True,
-                                         yes_no=True)
-
-            if ok_to_proceed:
-                self._clear_sc_profile()
-                return
-
-            self._support_email_entry.grab_focus()
-            raise NotOkToProceedError(msg1)
-
         # Determine if user inputs have changed in any material way from
         # last time authentication was attempted
         any_changes = False
@@ -408,6 +389,25 @@
                 elif asr_url != self._asr_url:
                     any_changes = True
 
+        # WARNING - don't allow user to skip registration without
+        # showing them a warning message
+        if not email and not self._allow_no_reg_override:
+            # set flag so we only show this once; next time just proceed
+            self._allow_no_reg_override = True
+            msg1 = SupportInfo.MSGS["no_email"]
+            msg2 = NO_REG_WARN_MSG
+            LOGGER.info("Validation Warning:")
+            LOGGER.info(msg1)
+            ok_to_proceed = modal_dialog(msg1, msg2, two_buttons=True,
+                                         yes_no=True)
+
+            if ok_to_proceed:
+                self._clear_sc_profile()
+                return
+
+            self._support_email_entry.grab_focus()
+            raise NotOkToProceedError(msg1)
+
         # Save values entered for comparison next time around
         self._email = email
         self._auth_chosen = auth_chosen
--- a/usr/src/cmd/gui-install/xml/support.xml	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/gui-install/xml/support.xml	Thu Jun 14 10:43:29 2012 -0700
@@ -70,7 +70,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Please see &lt;a href="http://www.oracle.com/support/policies.html"&gt;http://www.oracle.com/support/policies.html&lt;/a&gt; for details.</property>
+                    <property name="label" translatable="yes">Please see &lt;a href="http://www.oracle.com/goto/solarisautoreg"&gt;http://www.oracle.com/goto/solarisautoreg&lt;/a&gt; for details.</property>
                     <property name="use_markup">True</property>
                     <signal name="activate_link" handler="support_header_label_activate_link_cb"/>
                   </object>
--- a/usr/src/cmd/system-config/helpfiles/support_main.txt	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/system-config/helpfiles/support_main.txt	Thu Jun 14 10:43:29 2012 -0700
@@ -34,7 +34,7 @@
 
 FOR MORE INFORMATION
 
-For further information about Oracle Configuration Manager, see the "Oracle Configuration Manager Installation and Administration Guide". See also http://www.oracle.com/support/policies.html.
+For further information about Oracle Configuration Manager, see the "Oracle Configuration Manager Installation and Administration Guide". See also http://www.oracle.com/goto/solarisautoreg.
 
 For further information about ASR, see the documentation included at http://www.oracle.com/asr.
 
--- a/usr/src/cmd/system-config/summary.py	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/system-config/summary.py	Thu Jun 14 10:43:29 2012 -0700
@@ -118,7 +118,7 @@
                                       " when logging in."))
                 if self.sysconfig.system.locale is None:
                     self.sysconfig.system.determine_locale()
-                summary_text.append(_("  Default language: %s") %
+                summary_text.append("  " + _("Default language: %s") %
                                     self.sysconfig.system.actual_lang)
 
             # keyboard layout belongs to SC_GROUP_KBD group
@@ -126,7 +126,7 @@
                 summary_text.append("")
                 summary_text.append(_("Keyboard layout: *The following can be "
                                       "changed when logging in."))
-                summary_text.append(_("  Default keyboard layout: %s") %
+                summary_text.append("  " + _("Default keyboard layout: %s") %
                                     self.sysconfig.system.keyboard)
                 summary_text.append("")
 
@@ -166,7 +166,7 @@
 
         # hostname belongs to 'identity' group
         if configure_group(SC_GROUP_IDENTITY):
-            network_summary.append(_("  Computer name: %s") %
+            network_summary.append("  " + _("Computer name: %s") %
                                    self.sysconfig.system.hostname)
 
         if not configure_group(SC_GROUP_NETWORK):
@@ -174,19 +174,21 @@
 
         nic = self.sysconfig.nic
         if nic.type == NetworkInfo.AUTOMATIC:
-            network_summary.append(_("  Network Configuration: Automatic"))
+            network_summary.append("  " +
+                                   _("Network Configuration: Automatic"))
         elif nic.type == NetworkInfo.NONE:
-            network_summary.append(_("  Network Configuration: None"))
+            network_summary.append("  " + _("Network Configuration: None"))
         elif nic.type == NetworkInfo.FROMGZ:
-            network_summary.append(_("  Network Configuration:"
+            network_summary.append("  " + _("Network Configuration:"
                                      " Mandated from global zone"))
         elif nic.type == NetworkInfo.MANUAL:
-            network_summary.append(_("  Manual Configuration: %s")
+            network_summary.append("  " + _("Manual Configuration: %s")
                                    % NetworkInfo.get_nic_desc(nic.nic_iface))
-            network_summary.append(_("IP Address: %s") % nic.ip_address)
-            network_summary.append(_("Netmask: %s") % nic.netmask)
+            network_summary.append("    " +
+                                   _("IP Address: %s") % nic.ip_address)
+            network_summary.append("    " + _("Netmask: %s") % nic.netmask)
             if nic.gateway:
-                network_summary.append(_("Router: %s") % nic.gateway)
+                network_summary.append("    " + _("Router: %s") % nic.gateway)
         return network_summary
 
     def _get_nameservice(self, summary):
@@ -202,11 +204,11 @@
         primary = self.sysconfig.users.user
         user_summary = []
         if not root.password:
-            user_summary.append(_("  Warning: No root password set"))
+            user_summary.append("  " + _("Warning: No root password set"))
         if primary.login_name:
-            user_summary.append(_("  Username: %s") % primary.login_name)
+            user_summary.append("  " + _("Username: %s") % primary.login_name)
         else:
-            user_summary.append(_("  No user account"))
+            user_summary.append("  " + _("No user account"))
         return user_summary
 
     def get_tz_summary(self):
@@ -220,9 +222,9 @@
         support = self.sysconfig.support
 
         if support.netcfg == SupportInfo.NOSVC:
-            support_summary.append(_("  Not generating a Support profile as "
-                                     "OCM and ASR services are not "
-                                     "installed."))
+            support_summary.append("  " + _("Not generating a Support "
+                                            "profile as OCM and ASR services "
+                                            "are not installed."))
             return support_summary
 
         ocm_level = None
@@ -237,67 +239,76 @@
                 asr_level = "auth"
 
         if (ocm_level == None and asr_level == None):
-            support_summary.append(_("  No telemetry will be "
-                                     "sent automatically"))
+            support_summary.append("  " + _("No telemetry will be "
+                                            "sent automatically"))
         elif ocm_level == "unauth":
             # No need to check ASR; ocm_level == unauth implies no password
             # given, so asr_level will never be auth here.
-            support_summary.append(_("  Telemetry will be sent and associated "
-                                     "with email address:"))
-            support_summary.append("       %s" % support.mos_email)
-            support_summary.append(_("    but will not be registered with My "
-                                     "Oracle Support because"))
-            support_summary.append(_("    no password was saved."))
+            support_summary.append("  " + _("OCM telemetry will be sent and "
+                                            "associated with email address:\n"
+                                            "       %s") % support.mos_email)
+            support_summary.append("  " + _("Telemetry will not be registered "
+                                            "with My Oracle Support because "
+                                            "no password was saved."))
         else:
             # Equivalent to (ocm_level == "auth" or asr_level == "auth")
-            support_summary.append(_("  Telemetry will be sent and will be "
-                                     "registered with My Oracle Support"))
-            support_summary.append(_("    using email address:"))
-            support_summary.append("       %s" % support.mos_email)
+            if ocm_level is not None:
+                support_summary.append("  " + _("OCM telemetry will be sent."))
+            if asr_level is not None:
+                support_summary.append("  " + _("ASR telemetry will be sent."))
+            support_summary.append("  " + _("Telemetry will be registered "
+                                            "with My Oracle Support using "
+                                            "email address:\n"
+                                            "       %s") % support.mos_email)
 
             # Use the presence of OCM ciphertext to assume that successful OCM
             # validation took place.
             if support.ocm_ciphertext:
-                support_summary.append(_("  MOS credentials validated "
-                                         "for OCM"))
+                support_summary.append("  " + _("MOS credentials validated "
+                                                "for OCM"))
             elif support.ocm_available:
-                support_summary.append(_("  MOS credentials NOT validated "
-                                         "for OCM"))
+                support_summary.append("  " + _("MOS credentials NOT yet "
+                                                "validated for OCM"))
 
             # Use the presence of ASR private_key to assume that successful ASR
             # validation took place.
             if support.asr_private_key:
-                support_summary.append(_("  MOS credentials validated "
-                                         "for ASR"))
+                support_summary.append("  " + _("MOS credentials validated "
+                                                "for ASR"))
             elif support.asr_available:
-                support_summary.append(_("  MOS credentials NOT validated "
-                                         "for ASR"))
+                support_summary.append("  " + _("MOS credentials NOT yet "
+                                                "validated for ASR"))
 
             # Display different messages for different situations.
             if ((support.ocm_available and not support.ocm_ciphertext) or
                 (support.asr_available and not support.asr_private_key)):
                 # Installed systems may have different network config.
-                support_summary.append(_("  Validation will be attempted "
-                                         "again on (re)boot of "
-                                         "target system(s)"))
+                support_summary.append("  " + _("Validation will be attempted "
+                                                "again on (re)boot of "
+                                                "target system(s)"))
         if support.netcfg == SupportInfo.PROXY:
             if support.proxy_user:
-                proxy_line = (_("  Secure proxy "))
+                support_summary.append("  " +
+                                       _("Secure proxy specified: "
+                                         "Host and port: %s:%s ") %
+                                         (support.proxy_hostname,
+                                          support.proxy_port))
             else:
-                proxy_line = (_("  Proxy "))
-            proxy_line += (_("specified: host: %s" %
-                             support.proxy_hostname))
-            if support.proxy_port:
-                proxy_line += (_("  port: %s" % support.proxy_port))
+                support_summary.append("  " +
+                                       _("Proxy specified: "
+                                         "Host and port: %s:%s ") %
+                                         (support.proxy_hostname,
+                                          support.proxy_port))
             if support.proxy_user:
-                proxy_line += (_("  user: %s" % support.proxy_user))
-            support_summary.append(proxy_line)
+                support_summary.append("    " +
+                                       _("User: %s") % support.proxy_user)
         elif support.netcfg == SupportInfo.HUB:
             if support.ocm_hub:
-                support_summary.append(_("  OCM hub: %s" % support.ocm_hub))
+                support_summary.append("  " + _("OCM hub: %s") %
+                                                support.ocm_hub)
             if support.asr_hub:
-                support_summary.append(_("  ASR hub: %s" % support.asr_hub))
-
+                support_summary.append("  " + _("ASR hub: %s") %
+                                                support.asr_hub)
         return support_summary
 
 
--- a/usr/src/cmd/system-config/support.py	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/system-config/support.py	Thu Jun 14 10:43:29 2012 -0700
@@ -85,7 +85,7 @@
         "Provide your email address to be informed of security issues, "
         "install the product and initiate configuration manager.")
     INTRO_2 = _(
-        "Please see http://www.oracle.com/support/policies.html for details.")
+        "Please see http://www.oracle.com/goto/solarisautoreg for details.")
     EMAIL_LABEL = _("Email:")
     EMAIL_FOOTER_TEXT = _("Easier for you if you use your My Oracle Support "
                           "email address/username.")
--- a/usr/src/cmd/text-install/summary.py	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/cmd/text-install/summary.py	Thu Jun 14 10:43:29 2012 -0700
@@ -118,12 +118,12 @@
                        "logging in."))
         if self.sysconfig.system.locale is None:
             self.sysconfig.system.determine_locale()
-        lines.append(_("  Default language: %s") %
+        lines.append("  " + _("Default language: %s") %
                      self.sysconfig.system.actual_lang)
         lines.append("")
         lines.append(_("Keyboard layout: *The following can be "
                        "changed when logging in."))
-        lines.append(_("  Default keyboard layout: %s") %
+        lines.append("  " + _("Default keyboard layout: %s") %
                      self.sysconfig.system.keyboard)
         lines.append("")
         lines.append(_("Terminal type: %s") %
@@ -147,21 +147,24 @@
 
         '''
         network_summary = []
-        network_summary.append(_("  Computer name: %s") %
+        network_summary.append("  " + _("Computer name: %s") %
                                self.sysconfig.system.hostname)
         nic = self.sysconfig.nic
 
         if nic.type == NetworkInfo.AUTOMATIC:
-            network_summary.append(_("  Network Configuration: Automatic"))
+            network_summary.append("  " +
+                                   _("Network Configuration: Automatic"))
         elif nic.type == NetworkInfo.NONE:
-            network_summary.append(_("  Network Configuration: None"))
+            network_summary.append("  " + _("Network Configuration: None"))
         elif nic.type == NetworkInfo.MANUAL:
-            network_summary.append(_("  Manual Configuration: %s")
+            network_summary.append("  " + _("Manual Configuration: %s")
                                    % NetworkInfo.get_nic_desc(nic.nic_iface))
-            network_summary.append(_("    IP Address: %s") % nic.ip_address)
-            network_summary.append(_("    Netmask: %s") % nic.netmask)
+            network_summary.append("    " +
+                                   _("IP Address: %s") % nic.ip_address)
+            network_summary.append("    " +
+                                   _("Netmask: %s") % nic.netmask)
             if nic.gateway:
-                network_summary.append(_("    Router: %s") % nic.gateway)
+                network_summary.append("    " + _("Router: %s") % nic.gateway)
         return network_summary
 
     def _get_nameservice(self, summary):
@@ -178,11 +181,11 @@
         primary = self.sysconfig.users.user
         user_summary = []
         if not root.password:
-            user_summary.append(_("  Warning: No root password set"))
+            user_summary.append("  " + _("Warning: No root password set"))
         if primary.login_name:
-            user_summary.append(_("  Username: %s") % primary.login_name)
+            user_summary.append("  " + _("Username: %s") % primary.login_name)
         else:
-            user_summary.append(_("  No user account"))
+            user_summary.append("  " + _("No user account"))
         return user_summary
 
     def get_disk_summary(self):
@@ -261,7 +264,7 @@
         support = self.sysconfig.support
 
         if support.netcfg == SupportInfo.NOSVC:
-            support_summary.append(_("  OCM and ASR services are not "
+            support_summary.append("  " + _("OCM and ASR services are not "
                                      "installed."))
             return support_summary
 
@@ -277,64 +280,75 @@
                 asr_level = "auth"
 
         if (ocm_level == None and asr_level == None):
-            support_summary.append(_("  No telemetry will be "
-                                     "sent automatically"))
+            support_summary.append("  " + _("No telemetry will be "
+                                            "sent automatically"))
         elif ocm_level == "unauth":
             # No need to check ASR; ocm_level == unauth implies no password
             # given, so asr_level will never be auth here.
-            support_summary.append(_("  Telemetry will be sent and associated "
-                                     "with email address:"))
-            support_summary.append("       %s" % support.mos_email)
-            support_summary.append(_("    but will not be registered with My "
-                                     "Oracle Support because"))
-            support_summary.append(_("    no password was saved."))
+            support_summary.append("  " + _("OCM telemetry will be sent and "
+                                            "associated with email address:\n"
+                                            "       %s") % support.mos_email)
+            support_summary.append("  " + _("Telemetry will not be registered "
+                                            "with My Oracle Support because "
+                                            "no password was saved."))
         else:
             # Equivalent to (ocm_level == "auth" or asr_level == "auth")
-            support_summary.append(_("  Telemetry will be sent and will be "
-                                     "registered with My Oracle Support"))
-            support_summary.append(_("    using email address:"))
-            support_summary.append("       %s" % support.mos_email)
+            if ocm_level is not None:
+                support_summary.append("  " + _("OCM telemetry will be sent."))
+            if asr_level is not None:
+                support_summary.append("  " + _("ASR telemetry will be sent."))
+            support_summary.append("  " + _("Telemetry will be registered "
+                                            "with My Oracle Support using "
+                                            "email address:\n"
+                                            "       %s") % support.mos_email)
 
             # Use the presence of OCM ciphertext to assume that successful OCM
             # validation took place.
             if support.ocm_ciphertext:
-                support_summary.append(_("  MOS credentials validated "
+                support_summary.append("  " + _("MOS credentials validated "
                                          "for OCM"))
             elif support.ocm_available:
-                support_summary.append(_("  MOS credentials NOT validated "
-                                         "for OCM"))
+                support_summary.append("  " + _("MOS credentials NOT yet "
+                                                "validated for OCM"))
 
             # Use the presence of ASR private_key to assume that successful ASR
             # validation took place.
             if support.asr_private_key:
-                support_summary.append(_("  MOS credentials validated "
-                                         "for ASR"))
+                support_summary.append("  " + _("MOS credentials validated "
+                                                "for ASR"))
             elif support.asr_available:
-                support_summary.append(_("  MOS credentials NOT validated "
-                                         "for ASR"))
+                support_summary.append("  " + _("MOS credentials NOT yet "
+                                                "validated for ASR"))
 
             # Display different messages for different situations.
             if ((support.ocm_available and not support.ocm_ciphertext) or
                 (support.asr_available and not support.asr_private_key)):
                 # Installer environment.
-                support_summary.append(_("  Validation will be attempted "
-                                         "again when target (re)boots."))
+                support_summary.append("  " + _("Validation will be attempted "
+                                                "again when target "
+                                                "(re)boots."))
         if support.netcfg == SupportInfo.PROXY:
             if support.proxy_user:
-                proxy_line = (_("  Secure proxy "))
+                support_summary.append("  " +
+                                       _("Secure proxy specified: "
+                                         "Host and port: %s:%s ") %
+                                         (support.proxy_hostname,
+                                          support.proxy_port))
             else:
-                proxy_line = (_("  Proxy "))
-            proxy_line += (_("specified: host: %s" %
-                             support.proxy_hostname))
-            if support.proxy_port:
-                proxy_line += (_("  port: %s" % support.proxy_port))
+                support_summary.append("  " +
+                                       _("Proxy specified: "
+                                         "Host and port: %s:%s ") %
+                                         (support.proxy_hostname,
+                                          support.proxy_port))
             if support.proxy_user:
-                proxy_line += (_("  user: %s" % support.proxy_user))
-            support_summary.append(proxy_line)
+                support_summary.append("    " +
+                                       _("User: %s") % support.proxy_user)
         elif support.netcfg == SupportInfo.HUB:
             if support.ocm_hub:
-                support_summary.append(_("  OCM hub: %s" % support.ocm_hub))
+                support_summary.append("  " + _("OCM hub: %s") %
+                                                support.ocm_hub)
             if support.asr_hub:
-                support_summary.append(_("  ASR hub: %s" % support.asr_hub))
+                support_summary.append("  " + _("ASR hub: %s") %
+                                                support.asr_hub)
 
         return support_summary
--- a/usr/src/lib/install_manifest_input/test/test_manifest_input_overlay.py	Wed Jun 13 13:50:25 2012 -0600
+++ b/usr/src/lib/install_manifest_input/test/test_manifest_input_overlay.py	Thu Jun 14 10:43:29 2012 -0700
@@ -21,7 +21,7 @@
 #
 
 #
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 '''
 Tests of Manifest Input Module overlay() functionality.
@@ -42,6 +42,7 @@
 # unit test framework looks at them to know the length of the full message
 # string to print.  Please do not delete them.
 
+
 class TestMIMOverlayCommon(unittest.TestCase):
     '''
     Common setup for Overlay testing.
@@ -101,8 +102,8 @@
     Break a manifest apart and piece it together using overlay functionality.
 
     This class orchestrates a test whereby a proper manifest (BASE_MANIFEST)
-    which (is assumed to) contain <sc_embedded_manifest>, <add_drivers> and
-    <software> is split into three sections, each containing one section, and
+    which (is assumed to) contain <target>, <software> and <configuration>
+    is split into three sections, each containing one section, and
     overlay is used to put the sections back together into a viable manifest
     again.
     '''
@@ -113,12 +114,12 @@
     # Names of the XML files which hold one section apiece.
     TARGET_XML = "/tmp/test_target.xml"
     SOFTWARE_XML = "/tmp/test_software.xml"
-    ADD_DRIVER_XML = "/tmp/test_add_drivers.xml"
+    CONFIG_XML = "/tmp/test_config.xml"
 
     # Paths to roots of each of the three sections.
     TARGET_SUBTREE = "/auto_install/ai_instance/target"
     SOFTWARE_SUBTREE = "/auto_install/ai_instance/software"
-    ADD_DRIVER_SUBTREE = "/auto_install/ai_instance/add_drivers"
+    CONFIG_SUBTREE = "/auto_install/ai_instance/configuration"
 
     # Diff command.
     DIFF = "/usr/bin/diff"
@@ -149,7 +150,7 @@
         TestMIMOverlayCommon.setUp(self)
 
         # Assume the manifest used has separate sibling sections for
-        # add_drivers, software and sc_embedded_manifest, and no others.
+        # configuration, software and sc_embedded_manifest, and no others.
         # Create three files, each with one of the sections.
 
         # Read in base manifest, and write it out, stripping whitespace lines.
@@ -159,20 +160,13 @@
         TestOverlayA.strip_blank_lines(self.FULL_XML)
 
         # Generate the three files with subsections.
-        self.prune(self.ADD_DRIVER_SUBTREE)
         self.prune(self.SOFTWARE_SUBTREE)
         self.tree.write(self.TARGET_XML, pretty_print=True)
 
         self.tree = etree.parse(self.BASE_MANIFEST, parser)
-        self.prune(self.ADD_DRIVER_SUBTREE)
         self.prune(self.TARGET_SUBTREE)
         self.tree.write(self.SOFTWARE_XML, pretty_print=True)
 
-        self.tree = etree.parse(self.BASE_MANIFEST, parser)
-        self.prune(self.TARGET_SUBTREE)
-        self.prune(self.SOFTWARE_SUBTREE)
-        self.tree.write(self.ADD_DRIVER_XML, pretty_print=True)
-
     def tearDown(self):
         '''
         Remove files created during testing.
@@ -184,17 +178,14 @@
             os.unlink(self.TARGET_XML)
         if os.path.exists(self.SOFTWARE_XML):
             os.unlink(self.SOFTWARE_XML)
-        if os.path.exists(self.ADD_DRIVER_XML):
-            os.unlink(self.ADD_DRIVER_XML)
 
     def test_overlay_1(self):
         '''
         Put original manifest together from pieces, and verify it.
         '''
         mim = ManifestInput(self.AIM_MANIFEST_FILE)
-        mim.load(self.TARGET_XML, not self.OVERLAY)
-        mim.load(self.ADD_DRIVER_XML, self.OVERLAY)
-        mim.load(self.SOFTWARE_XML, self.OVERLAY)
+        mim.load(self.SOFTWARE_XML, not self.OVERLAY)
+        mim.load(self.TARGET_XML, self.OVERLAY)
         mim.commit()
         TestOverlayA.strip_blank_lines(self.AIM_MANIFEST_FILE)
 
@@ -581,34 +572,34 @@
     '''
     def check_insertion_order(self):
         '''
-        Verify that target, sofware, add_drivers nodes are present and in order
+        Verify that target, sofware, configuration nodes exist and in order
         '''
         mim = ManifestInput(self.AIM_MANIFEST_FILE, self.SCHEMA)
         mim.load(self.MAIN_XML_FILE, not self.OVERLAY)
         mim.load(self.OVERLAY_XML_FILE, self.OVERLAY)
         ai_instance_node = mim._xpath_search("/auto_install[1]/ai_instance[1]")
-        found_target = found_software = found_add_drivers = False
+        found_target = found_software = found_config = False
         for child in ai_instance_node[0]:
             if child.tag == "target":
-                self.assertTrue(not found_software and not found_add_drivers,
-                                "Target element not added before software " + 
-                                "or add_drivers elements")
+                self.assertTrue(not found_software and not found_config,
+                                "Target element not added before software " +
+                                "or configuration elements")
                 found_target = True
                 continue
             if child.tag == "software":
-                self.assertTrue(found_target and not found_add_drivers,
+                self.assertTrue(found_target and not found_config,
                                 "Software element not added between target " +
-                                "and add_drivers elements")
+                                "and configuration elements")
                 found_software = True
                 continue
-            if child.tag == "add_drivers":
+            if child.tag == "configuration":
                 self.assertTrue(found_target and found_software,
-                                "Add_drivers element not added after target " +
-                                "and software elements")
+                                "Configuration element not added after "
+                                "target and software elements")
                 return
         self.assertTrue(found_target, "Target element not added")
         self.assertTrue(found_software, "Software element not added")
-        self.assertTrue(found_add_drivers, "Add_drivers element not added")
+        self.assertTrue(found_config, "Configuration element not added")
 
 
 class TestOverlay11(TestOverlayInsertionOrderCommon):
@@ -617,13 +608,13 @@
     def setUp(self):
         TestOverlayInsertionOrderCommon.setUp(self)
 
-        # Set up initial file with <target> and <add_drivers> sections.  DTD
-        # specifies that <software> goes between <target> and <add_drivers>.
+        # Set up initial file with <target> and <configuration> sections.  DTD
+        # specifies that <software> goes between <target> and <configuration>.
         with open(self.MAIN_XML_FILE, "w") as main_xml:
             main_xml.write('<auto_install>\n')
             main_xml.write('  <ai_instance name="firstname">\n')
             main_xml.write('    <target/>\n')
-            main_xml.write('    <add_drivers/>\n')
+            main_xml.write('    <configuration source="abc" name="def"/>\n')
             main_xml.write('  </ai_instance>\n')
             main_xml.write('</auto_install>\n')
 
@@ -647,7 +638,7 @@
 
     def test_overlay_11(self):
         '''
-        Verify that software section went between target and add_drivers.
+        Verify that software section went between target and configuration.
         '''
         self.check_insertion_order()
 
@@ -664,12 +655,12 @@
             main_xml.write('<auto_install>\n')
             main_xml.write('  <ai_instance name="firstname">\n')
             main_xml.write('    <software/>\n')
-            main_xml.write('    <add_drivers/>\n')
+            main_xml.write('    <configuration source="abc" name="def"/>\n')
             main_xml.write('  </ai_instance>\n')
             main_xml.write('</auto_install>\n')
 
         # Set up overlay file with <target> that goes before <software> and
-        # <add_drivers>
+        # <configuration>
         with open(self.OVERLAY_XML_FILE, "w") as ovrl_xml:
             ovrl_xml.write('<auto_install>\n')
             ovrl_xml.write('  <ai_instance>\n')
@@ -690,7 +681,7 @@
 
     def test_overlay_12(self):
         '''
-        Verify that target section went before software and add_drivers.
+        Verify that target section went before software and configuration.
         '''
         self.check_insertion_order()
 
@@ -703,8 +694,8 @@
     def setUp(self):
         TestOverlayInsertionOrderCommon.setUp(self)
 
-        # Set up initial file with <target> and <add_drivers> sections.  DTD
-        # specifies that <add_drivers> goes after <target> and <software>.
+        # Set up initial file with <target> and <configuration> sections.  DTD
+        # specifies that <configuration> goes after <target> and <software>.
         with open(self.MAIN_XML_FILE, "w") as main_xml:
             main_xml.write('<auto_install>\n')
             main_xml.write('  <ai_instance name="firstname">\n')
@@ -716,7 +707,7 @@
         with open(self.OVERLAY_XML_FILE, "w") as ovrl_xml:
             ovrl_xml.write('<auto_install>\n')
             ovrl_xml.write('  <ai_instance>\n')
-            ovrl_xml.write('    <add_drivers/>\n')
+            ovrl_xml.write('    <configuration source="abc" name="def"/>\n')
             ovrl_xml.write('  </ai_instance>\n')
             ovrl_xml.write('</auto_install>\n')
 
@@ -733,7 +724,7 @@
 
     def test_overlay_13(self):
         '''
-        Verify that add_drivers section went after target and software.
+        Verify that configuration section went after target and software.
         '''
         self.check_insertion_order()
 
@@ -742,15 +733,15 @@
     '''
     Place element which normally goes after an element that is not present.
 
-    Like above, but <software> node is missing.  Tests that <add_drivers> gets
-    added after <target>.
+    Like above, but <software> node is missing.  Tests that <configuration>
+    gets added after <target>.
     '''
 
     def setUp(self):
         TestMIMOverlayCommon.setUp(self)
 
-        # Set up initial file with <target> and <add_drivers> sections.  DTD
-        # specifies that <software> goes between <target> and <add_drivers>.
+        # Set up initial file with <target> and <configuration> sections.  DTD
+        # specifies that <software> goes between <target> and <configuration>.
         with open(self.MAIN_XML_FILE, "w") as main_xml:
             main_xml.write('<auto_install>\n')
             main_xml.write('  <ai_instance name="firstname">\n')
@@ -761,7 +752,7 @@
         with open(self.OVERLAY_XML_FILE, "w") as ovrl_xml:
             ovrl_xml.write('<auto_install>\n')
             ovrl_xml.write('  <ai_instance>\n')
-            ovrl_xml.write('    <add_drivers/>\n')
+            ovrl_xml.write('    <configuration source="abc" name="def"/>\n')
             ovrl_xml.write('  </ai_instance>\n')
             ovrl_xml.write('</auto_install>\n')
 
@@ -778,7 +769,7 @@
 
     def test_overlay_14(self):
         '''
-        Verify that add_drivers goes after target.
+        Verify that configuration goes after target.
 
         Normally it would go after software, but software is missing and
         software comes after target.
@@ -787,21 +778,21 @@
         mim.load(self.MAIN_XML_FILE, not self.OVERLAY)
         mim.load(self.OVERLAY_XML_FILE, self.OVERLAY)
         ai_instance_node = mim._xpath_search("/auto_install[1]/ai_instance[1]")
-        found_target = found_add_drivers = False
+        found_target = found_config = False
         for child in ai_instance_node[0]:
             if child.tag == "target":
-                self.assertTrue(not found_add_drivers,
+                self.assertTrue(not found_config,
                                 "Target element not added before software " +
-                                "or add_drivers elements")
+                                "or configuration elements")
                 found_target = True
                 continue
-            if child.tag == "add_drivers":
+            if child.tag == "configuration":
                 self.assertTrue(found_target,
-                                "Add_drivers element not added after target " +
-                                "and software elements")
+                                "Configuration element not added after "
+                                "target and software elements")
                 return
         self.assertTrue(found_target, "Target element not added")
-        self.assertTrue(found_add_drivers, "Add_drivers element not added")
+        self.assertTrue(found_config, "Configure element not added")
 
 
 class TestOverlay15(TestMIMOverlayCommon):
@@ -816,8 +807,8 @@
     def setUp(self):
         TestMIMOverlayCommon.setUp(self)
 
-        # Set up initial file with <target> and <add_drivers> sections.  DTD
-        # specifies that <software> goes between <target> and <add_drivers>.
+        # Set up initial file with <target> and <configuration> sections.  DTD
+        # specifies that <software> goes between <target> and <configuration>.
         with open(self.MAIN_XML_FILE, "w") as main_xml:
             main_xml.write('<auto_install>\n')
             main_xml.write('  <ai_instance name="firstname">\n')