author | Patrick Einheber <patrick.einheber@oracle.com> |
Wed, 27 Apr 2016 14:55:10 -0700 | |
changeset 5860 | afd31ba91ee9 |
parent 5775 | ecbec224a370 |
child 7565 | 48aa82a0931f |
permissions | -rw-r--r-- |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
1 |
In-house patch to fix Solaris specific bug; not suitible for upstream |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
2 |
Fixing issue with package ensure=>latest by refreshing the pkg cache first with pkg update |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
3 |
Using --parsable=0 option to obsolete pkg list -Hn |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
4 |
Fixing problem with ambiguous package names |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
5 |
Wildcards support |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
6 |
install_options/uninstall_options features support |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
7 |
|
5860
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
8 |
--- puppet-3.8.6/lib/puppet/provider/package/pkg.rb.orig 2016-04-19 15:09:14.789792650 -0700 |
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
9 |
+++ puppet-3.8.6/lib/puppet/provider/package/pkg.rb 2016-04-19 15:09:44.646514474 -0700 |
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
10 |
@@ -5,7 +5,7 @@ |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
11 |
require 'puppet/provider/package' |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
12 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
13 |
Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package do |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
14 |
- desc "OpenSolaris image packaging system. See pkg(5) for more information" |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
15 |
+ desc "Solaris image packaging system. See pkg(5) for more information" |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
16 |
# http://docs.oracle.com/cd/E19963-01/html/820-6572/managepkgs.html |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
17 |
# A few notes before we start : |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
18 |
# Opensolaris pkg has two slightly different formats (as of now.) |
5860
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
19 |
@@ -18,10 +18,10 @@ |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
20 |
# TODO: We still have to allow packages to specify a preferred publisher. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
21 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
22 |
has_feature :versionable |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
23 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
24 |
has_feature :upgradable |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
25 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
26 |
has_feature :holdable |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
27 |
+ has_feature :install_options |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
28 |
+ has_feature :uninstall_options |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
29 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
30 |
commands :pkg => "/usr/bin/pkg" |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
31 |
|
5860
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
32 |
@@ -30,7 +30,7 @@ |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
33 |
defaultfor :osfamily => :solaris, :kernelrelease => ['5.11', '5.12'] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
34 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
35 |
def self.instances |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
36 |
- pkg(:list, '-H').split("\n").map{|l| new(parse_line(l))} |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
37 |
+ pkg(:list, '-Hv').split("\n").map{|l| new(parse_line(l))} |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
38 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
39 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
40 |
# The IFO flag field is just what it names, the first field can have ether |
5860
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
41 |
@@ -73,6 +73,10 @@ |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
42 |
{} |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
43 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
44 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
45 |
+ def self.ufxi_flag(flags) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
46 |
+ {} |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
47 |
+ end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
48 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
49 |
# pkg state was present in the older version of pkg (with UFOXI) but is |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
50 |
# no longer available with the IFO field version. When it was present, |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
51 |
# it was used to indicate that a particular version was present (installed) |
5860
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
52 |
@@ -94,29 +98,73 @@ |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
53 |
# formats of output for different pkg versions. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
54 |
def self.parse_line(line) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
55 |
(case line.chomp |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
56 |
- # NAME (PUBLISHER) VERSION IFO (new:630e1ffc7a19) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
57 |
- # system/core-os 0.5.11-0.169 i-- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
58 |
- when /^(\S+) +(\S+) +(...)$/ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
59 |
- {:name => $1, :ensure => $2}.merge ifo_flag($3) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
60 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
61 |
- # x11/wm/fvwm (fvwm.org) 2.6.1-3 i-- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
62 |
- when /^(\S+) \((.+)\) +(\S+) +(...)$/ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
63 |
- {:name => $1, :publisher => $2, :ensure => $3}.merge ifo_flag($4) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
64 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
65 |
- # NAME (PUBLISHER) VERSION STATE UFOXI (dvd:052adf36c3f4) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
66 |
- # SUNWcs 0.5.11-0.126 installed ----- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
67 |
- when /^(\S+) +(\S+) +(\S+) +(.....)$/ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
68 |
- {:name => $1, :ensure => $2}.merge pkg_state($3).merge(ufoxi_flag($4)) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
69 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
70 |
- # web/firefox/plugin/flash (extra) 10.0.32.18-0.111 installed ----- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
71 |
- when /^(\S+) \((.+)\) +(\S+) +(\S+) +(.....)$/ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
72 |
- {:name => $1, :publisher => $2, :ensure => $3}.merge pkg_state($4).merge(ufoxi_flag($5)) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
73 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
74 |
+ #pkg list -vH output format since build 165 |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
75 |
+ #FMRI IFO |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
76 |
+ #pkg://solaris/system/[email protected]:20151116T010109Z i-- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
77 |
+ when /^(\S+) +(...)$/ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
78 |
+ full_fmri = $1.split('@') |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
79 |
+ {:name => full_fmri[0], :ensure => full_fmri[1]}.merge(ifo_flag($2)) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
80 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
81 |
+ #Solaris11 Express 10/11, OpenSolaris |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
82 |
+ #FMRI STATE UFOXI |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
83 |
+ #pkg://solaris/editor/[email protected],5.11-0.151.0.1:20101105T0540492 installed ----- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
84 |
+ when /^(\S+) +(\S+) +(.....)$/ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
85 |
+ full_fmri = $1.split('@') |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
86 |
+ {:name => full_fmri[0], :ensure => full_fmri[1]}.merge pkg_state($2).merge(ufoxi_flag($3)) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
87 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
88 |
+ #OpenSolaris |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
89 |
+ #FMRI STATE UFXI |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
90 |
+ #pkg:/[email protected],5.11-0.86:20080426T180612Z installed ---- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
91 |
+ when /^(\S+) +(\S+) +(....)$/ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
92 |
+ full_fmri = $1.split('@') |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
93 |
+ {:name => full_fmri[0], :ensure => full_fmri[1]}.merge pkg_state($2).merge(ufxi_flag($3)) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
94 |
else |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
95 |
raise ArgumentError, 'Unknown line format %s: %s' % [self.name, line] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
96 |
end).merge({:provider => self.name}) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
97 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
98 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
99 |
+ def parse_latest_query(exit_code, pkg_fmri_list) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
100 |
+ # Get the current status of the package |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
101 |
+ name = @property_hash[:name] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
102 |
+ provider = @property_hash[:provider] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
103 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
104 |
+ # The package is up-to-date |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
105 |
+ if pkg_fmri_list.empty? && exit_code == 4 |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
106 |
+ status = 'installed' |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
107 |
+ version = @property_hash[:ensure] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
108 |
+ # Latest version is available |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
109 |
+ elsif !pkg_fmri_list.empty? && exit_code == 0 |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
110 |
+ if wildcard? |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
111 |
+ version = '' |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
112 |
+ status = 'known' |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
113 |
+ else |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
114 |
+ # Search for the correct pkg FMRI (to ignore dependencies) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
115 |
+ # search string format will be, i.e., |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
116 |
+ # pkg://test/testing/testpkg@ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
117 |
+ # and retrieve the matched index. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
118 |
+ search_pkg_name = name + '@' |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
119 |
+ index = pkg_fmri_list.index{|l| l[0].include?(search_pkg_name)} |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
120 |
+ raise Puppet::Error, "Cannot retrieve pkg name" if index.nil? |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
121 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
122 |
+ # Parse the fmri of the latest available pkg, i.e., |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
123 |
+ # from: pkg://test/testing/[email protected],5.11:20151112T015434Z |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
124 |
+ # to: 1.0.13,5.11:20151112T015434Z |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
125 |
+ version = pkg_fmri_list[index][1].split('@')[1] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
126 |
+ status = 'known' |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
127 |
+ end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
128 |
+ else |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
129 |
+ raise Puppet::Error, "Cannot retrieve pkg version" |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
130 |
+ end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
131 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
132 |
+ # Store as a desirable query |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
133 |
+ return { |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
134 |
+ :name=>name, |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
135 |
+ :ensure=>version, |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
136 |
+ :status=>status, |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
137 |
+ :provider=>provider |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
138 |
+ } |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
139 |
+ end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
140 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
141 |
def hold |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
142 |
pkg(:freeze, @resource[:name]) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
143 |
end |
5860
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
144 |
@@ -126,31 +174,22 @@ |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
145 |
raise Puppet::Error, "Unable to unfreeze #{r[:out]}" unless [0,4].include? r[:exit] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
146 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
147 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
148 |
- # Return the version of the package. Note that the bug |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
149 |
- # http://defect.opensolaris.org/bz/show_bug.cgi?id=19159% |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
150 |
- # notes that we can't use -Ha for the same even though the manual page reads that way. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
151 |
+ # Return the version of the package. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
152 |
def latest |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
153 |
- lines = pkg(:list, "-Hn", @resource[:name]).split("\n") |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
154 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
155 |
- # remove certificate expiration warnings from the output, but report them |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
156 |
- # Note: we'd like to use select! here to modify the lines array and avoid |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
157 |
- # the second select further down. But Solaris 11 comes with ruby 1.8.7 |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
158 |
- # which doesn't support select!, so do this as two selects. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
159 |
- cert_warnings = lines.select { |line| line =~ /^Certificate/ } |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
160 |
- if cert_warnings |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
161 |
- Puppet.warning("pkg warning: #{cert_warnings}") |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
162 |
- end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
163 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
164 |
- lst = lines.select { |line| line !~ /^Certificate/ }.map { |line| self.class.parse_line(line) } |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
165 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
166 |
- # Now we know there is a newer version. But is that installable? (i.e are there any constraints?) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
167 |
- # return the first known we find. The only way that is currently available is to do a dry run of |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
168 |
- # pkg update and see if could get installed (`pkg update -n res`). |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
169 |
- known = lst.find {|p| p[:status] == 'known' } |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
170 |
- return known[:ensure] if known and exec_cmd(command(:pkg), 'update', '-n', @resource[:name])[:exit].zero? |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
171 |
- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
172 |
- # If not, then return the installed, else nil |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
173 |
- (lst.find {|p| p[:status] == 'installed' } || {})[:ensure] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
174 |
+ # Dry-run package update to check the availability of the latest version |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
175 |
+ # -- return code -- |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
176 |
+ # 0: latest version available |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
177 |
+ # 1: error |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
178 |
+ # 4: already up-to-date |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
179 |
+ r = exec_cmd(command(:pkg), 'update', '-n', '--parsable=0', @resource[:name]) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
180 |
+ raise Puppet::Error, "Cannot update to the latest package: #{r[:out]}\n" \ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
181 |
+ unless [0, 4].include? r[:exit] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
182 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
183 |
+ package_versions = JSON.parse(r[:out])['change-packages'] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
184 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
185 |
+ lst = parse_latest_query(r[:exit], package_versions) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
186 |
+ Puppet.debug "Desirable query status = #{lst}" |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
187 |
+ return lst[:ensure] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
188 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
189 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
190 |
# install the package and accept all licenses. |
5860
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
191 |
@@ -166,19 +205,22 @@ |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
192 |
self.uninstall if Puppet::Util::Package.versioncmp(should, is[:ensure]) < 0 |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
193 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
194 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
195 |
- r = exec_cmd(command(:pkg), 'install', '--accept', name) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
196 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
197 |
+ cmd = ['--accept'] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
198 |
+ cmd << join_options(@resource[:install_options]) if @resource[:install_options] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
199 |
+ r = exec_cmd(command(:pkg), 'install', cmd, name) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
200 |
return r if nofail |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
201 |
raise Puppet::Error, "Unable to update #{r[:out]}" if r[:exit] != 0 |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
202 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
203 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
204 |
- # uninstall the package. The complication comes from the -r_ecursive flag which is no longer |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
205 |
- # present in newer package version. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
206 |
+ # uninstall the package. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
207 |
def uninstall |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
208 |
cmd = [:uninstall] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
209 |
case (pkg :version).chomp |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
210 |
when /052adf36c3f4/ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
211 |
cmd << '-r' |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
212 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
213 |
+ cmd << join_options(@resource[:uninstall_options]) if @resource[:uninstall_options] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
214 |
cmd << @resource[:name] |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
215 |
pkg cmd |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
216 |
end |
5860
afd31ba91ee9
23146903 Puppet and OpenStack modules need modification notices
Patrick Einheber <patrick.einheber@oracle.com>
parents:
5775
diff
changeset
|
217 |
@@ -191,10 +233,22 @@ |
5775
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
218 |
raise Puppet::Error, "Unable to update #{r[:out]}" |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
219 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
220 |
|
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
221 |
+ def wildcard? |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
222 |
+ @resource[:name].include?("*") || @resource[:name].include?("?") |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
223 |
+ end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
224 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
225 |
# list a specific package |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
226 |
def query |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
227 |
- r = exec_cmd(command(:pkg), 'list', '-H', @resource[:name]) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
228 |
+ r = exec_cmd(command(:pkg), 'list', '-Hv', @resource[:name]) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
229 |
return {:ensure => :absent, :name => @resource[:name]} if r[:exit] != 0 |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
230 |
+ |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
231 |
+ # Does input contain wildcard? just pass it down and let pkg decide |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
232 |
+ return {:ensure => :installed, :name => @resource[:name], :provider => self.class.name} if wildcard? |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
233 |
+ # If there are more than one results? this will fail due to the ambiguity. |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
234 |
+ if r[:out].split("\n").length > 1 |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
235 |
+ raise Puppet::Error, "'#{@resource[:name]}' matches multiple packages. \n#{r[:out]}" |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
236 |
+ end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
237 |
+ # Pass the parsed result back to @property_hash |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
238 |
self.class.parse_line(r[:out]) |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
239 |
end |
ecbec224a370
21815619 puppet fails to install latest package versions
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
240 |