--- a/src/modules/actions/driver.py Fri Sep 23 11:46:56 2016 +0530
+++ b/src/modules/actions/driver.py Fri Sep 23 11:47:00 2016 +0530
@@ -21,7 +21,7 @@
#
#
-# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
#
"""module describing a driver packaging object.
@@ -573,21 +573,16 @@
# with it.
for i in rem_policy:
spec = i.split()
+ if not spec:
+ continue
+
# Test if there is a minor node and if so use it
# for the policy removal. Otherwise, if none is
# supplied, then use the wild card to match.
- if len(spec) == 3:
+ if "=" not in spec[0]:
minornode = spec[0]
- elif len(spec) == 2:
- # This can happen when the policy is defined
- # in the package manifest without an associated
- # minor node.
+ else:
minornode = "*"
- else:
- print "driver (%s) update (removal of " \
- "policy '%s') failed: invalid policy " \
- "spec." % (self.attrs["name"], i)
- continue
args = rem_base + ("-p", minornode, self.attrs["name"])
self.__call(args, "driver (%(name)s) upgrade (removal "
--- a/src/tests/cli/t_pkg_install.py Fri Sep 23 11:46:56 2016 +0530
+++ b/src/tests/cli/t_pkg_install.py Fri Sep 23 11:47:00 2016 +0530
@@ -2583,7 +2583,7 @@
add file tmp/dricon2_da path=/etc/driver_aliases mode=644 owner=root group=sys preserve=true
add file tmp/dricon_n2m path=/etc/name_to_major mode=644 owner=root group=sys preserve=true
add file tmp/dripol1_dp path=/etc/security/device_policy mode=644 owner=root group=sys preserve=true
- add driver name=frigit policy="read_priv_set=net_rawaccess write_priv_set=net_rawaccess"
+ add driver name=frigit policy="read_priv_set=net_rawaccess write_priv_set=net_rawaccess tpd_member=true"
close
"""
@@ -2603,6 +2603,54 @@
close
"""
+ dripol3 = """
+ open dripol@3
+ add dir path=var mode=755 owner=root group=root
+ add dir path=var/run mode=755 owner=root group=root
+ add dir mode=0755 owner=root group=root path=system
+ add dir mode=0755 owner=root group=root path=system/volatile
+ add dir path=/tmp mode=755 owner=root group=root
+ add dir path=/etc mode=755 owner=root group=root
+ add dir path=/etc/security mode=755 owner=root group=root
+ add file tmp/dricon2_da path=/etc/driver_aliases mode=644 owner=root group=sys preserve=true
+ add file tmp/dricon_n2m path=/etc/name_to_major mode=644 owner=root group=sys preserve=true
+ add file tmp/dripol1_dp path=/etc/security/device_policy mode=644 owner=root group=sys preserve=true
+ add driver name=frigit policy="tpd_member=true"
+ close
+ """
+
+ dripol4 = """
+ open dripol@4
+ add dir path=var mode=755 owner=root group=root
+ add dir path=var/run mode=755 owner=root group=root
+ add dir mode=0755 owner=root group=root path=system
+ add dir mode=0755 owner=root group=root path=system/volatile
+ add dir path=/tmp mode=755 owner=root group=root
+ add dir path=/etc mode=755 owner=root group=root
+ add dir path=/etc/security mode=755 owner=root group=root
+ add file tmp/dricon2_da path=/etc/driver_aliases mode=644 owner=root group=sys preserve=true
+ add file tmp/dricon_n2m path=/etc/name_to_major mode=644 owner=root group=sys preserve=true
+ add file tmp/dripol1_dp path=/etc/security/device_policy mode=644 owner=root group=sys preserve=true
+ add driver name=frigit
+ close
+ """
+
+ dripol5 = """
+ open dripol@5
+ add dir path=var mode=755 owner=root group=root
+ add dir path=var/run mode=755 owner=root group=root
+ add dir mode=0755 owner=root group=root path=system
+ add dir mode=0755 owner=root group=root path=system/volatile
+ add dir path=/tmp mode=755 owner=root group=root
+ add dir path=/etc mode=755 owner=root group=root
+ add dir path=/etc/security mode=755 owner=root group=root
+ add file tmp/dricon2_da path=/etc/driver_aliases mode=644 owner=root group=sys preserve=true
+ add file tmp/dricon_n2m path=/etc/name_to_major mode=644 owner=root group=sys preserve=true
+ add file tmp/dripol1_dp path=/etc/security/device_policy mode=644 owner=root group=sys preserve=true
+ add driver name=frigit perms="node1 0666 root sys" policy="node1 read_priv_set=all write_priv_set=all tpd_member=true"
+ close
+ """
+
liveroot10 = """
open [email protected]
add dir path=/etc mode=755 owner=root group=root
@@ -3234,7 +3282,8 @@
self.driver_policy_removal_helper("exact-install")
def driver_policy_removal_helper(self, install_cmd):
- self.pkgsend_bulk(self.rurl, (self.dripol1, self.dripol2))
+ self.pkgsend_bulk(self.rurl, (self.dripol1, self.dripol2,
+ self.dripol3, self.dripol4, self.dripol5))
self.image_create(self.rurl)
@@ -3247,7 +3296,9 @@
# device in /etc/security/device_policy
dp_contents = file(os.path.join(self.get_img_path(),
"etc/security/device_policy")).readlines()
- self.assert_("frigit:*\tread_priv_set=net_rawaccess\twrite_priv_set=net_rawaccess\n" in dp_contents)
+ self.assert_("frigit:*\tread_priv_set=net_rawaccess\t"
+ "write_priv_set=net_rawaccess\ttpd_member=true\n"
+ in dp_contents)
# Should reinstall the frigit driver without a policy.
self.pkg("%s dripol@2" % install_cmd)
@@ -3256,7 +3307,27 @@
# device in /etc/security/device_policy
dp_contents = file(os.path.join(self.get_img_path(),
"etc/security/device_policy")).readlines()
- self.assert_("frigit:*\tread_priv_set=net_rawaccess\twrite_priv_set=net_rawaccess\n" not in dp_contents)
+ self.assert_("frigit:*\tread_priv_set=net_rawaccess\t"
+ "write_priv_set=net_rawaccess\ttpd_member=true\n"
+ not in dp_contents)
+
+ self.pkg("update dripol@3")
+ dp_contents = open(os.path.join(self.get_img_path(),
+ "etc/security/device_policy")).readlines()
+ self.assert_("frigit:*\ttpd_member=true\n"
+ in dp_contents)
+
+ self.pkg("update dripol@5")
+ dp_contents = open(os.path.join(self.get_img_path(),
+ "etc/security/device_policy")).readlines()
+ self.assert_("frigit:node1\tread_priv_set=all"
+ "\twrite_priv_set=all\ttpd_member=true\n"
+ in dp_contents)
+
+ self.pkg("update dripol@4")
+ dp_contents = open(os.path.join(self.get_img_path(),
+ "etc/security/device_policy")).readlines()
+ self.assert_("frigit:node1" not in dp_contents)
def test_file_preserve(self):
"""Verify that file preserve=true works as expected during