Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked frompoise/python

Commit7a7beb7

Browse files
dexterousjtimberman
authored and
jtimberman
committed
[COOK-1715] Upgrade pip resource with user & group
- pass user & group to shellout- refactor provider to remove lots of duplication- also set HOME to specified user's home to prevent permission errors when pip attemts to write ~/.pip/pip.log
1 parentc6c891b commit7a7beb7

File tree

2 files changed

+33
-41
lines changed

2 files changed

+33
-41
lines changed

‎providers/pip.rb

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -39,52 +39,40 @@ def whyrun_supported?
3939
install_version=candidate_version
4040
end
4141

42-
# Set the timeout (units in seconds)
43-
timeout=900
44-
if@new_resource.timeout
45-
timeout=@new_resource.timeout
46-
end
47-
4842
ifinstall_version
4943
description="install package#{@new_resource} version#{install_version}"
5044
converge_by(description)do
51-
Chef::Log.info("Installing#{@new_resource} version#{install_version}")
52-
status=install_package(@new_resource.package_name,install_version,timeout)
45+
Chef::Log.info("Installing#{@new_resource} version#{install_version}")
46+
status=install_package(install_version)
47+
ifstatus
48+
@new_resource.updated_by_last_action(true)
49+
end
5350
end
5451
end
5552
end
5653

5754
action:upgradedo
58-
# Set the timeout (units in seconds)
59-
timeout=900
60-
if@new_resource.timeout
61-
timeout=@new_resource.timeout
62-
end
63-
6455
if@current_resource.version !=candidate_version
6556
orig_version=@current_resource.version ||"uninstalled"
6657
description="upgrade#{@current_resource} version from#{@current_resource.version} to#{candidate_version}"
6758
converge_by(description)do
68-
Chef::Log.info("Upgrading#{@new_resource} version from#{orig_version} to#{candidate_version}")
69-
status=upgrade_package(@new_resource.package_name,candidate_version,timeout)
59+
Chef::Log.info("Upgrading#{@new_resource} version from#{orig_version} to#{candidate_version}")
60+
status=upgrade_package(candidate_version)
61+
ifstatus
62+
@new_resource.updated_by_last_action(true)
63+
end
7064
end
7165
end
7266
end
7367

7468
action:removedo
75-
# Set the timeout (units in seconds)
76-
timeout=900
77-
if@new_resource.timeout
78-
timeout=@new_resource.timeout
79-
end
80-
8169
ifremoving_package?
8270
description="remove package#{@new_resource}"
8371
converge_by(description)do
84-
Chef::Log.info("Removing#{@new_resource}")
85-
remove_package(@current_resource.package_name,@new_resource.version,timeout)
72+
Chef::Log.info("Removing#{@new_resource}")
73+
remove_package(@new_resource.version)
74+
@new_resource.updated_by_last_action(true)
8675
end
87-
else
8876
end
8977
end
9078

@@ -100,10 +88,6 @@ def removing_package?
10088
end
10189
end
10290

103-
defexpand_options(options)
104-
options ?"#{options}" :""
105-
end
106-
10791
# these methods are the required overrides of
10892
# a provider that extends from Chef::Provider::Package
10993
# so refactoring into core Chef should be easy
@@ -124,7 +108,7 @@ def current_installed_version
124108
@current_installed_version ||=begin
125109
delimeter=/==/
126110

127-
version_check_cmd="#{pip_cmd(@new_resource)} freeze | grep -i '^#{@new_resource.package_name}=='"
111+
version_check_cmd="#{which_pip(@new_resource)} freeze | grep -i '^#{@new_resource.package_name}=='"
128112
# incase you upgrade pip with pip!
129113
if@new_resource.package_name.eql?('pip')
130114
delimeter=/\s/
@@ -146,23 +130,29 @@ def candidate_version
146130
end
147131
end
148132

149-
definstall_package(name,version,timeout)
150-
v="==#{version}"unlessversion.eql?('latest')
151-
shell_out!("#{pip_cmd(@new_resource)} install#{expand_options(@new_resource.options)}#{name}#{v}",:timeout=>timeout)
133+
definstall_package(version)
134+
pip_cmd('install',version =='latest' ?'' :"==#{version}")
135+
end
136+
137+
defupgrade_package(version)
138+
@new_resource.options"#{@new_resource.options} --upgrade"
139+
install_package(version)
152140
end
153141

154-
defupgrade_package(name,version,timeout)
155-
v="==#{version}"unlessversion.eql?('latest')
156-
shell_out!("#{pip_cmd(@new_resource)} install --upgrade#{expand_options(@new_resource.options)}#{@new_resource.name}#{v}",:timeout=>timeout)
142+
defremove_package(version)
143+
@new_resource.options"#{@new_resource.options} --yes"
144+
pip_cmd('uninstall')
157145
end
158146

159-
defremove_package(name,version,timeout)
160-
shell_out!("#{pip_cmd(@new_resource)} uninstall -y#{expand_options(@new_resource.options)}#{@new_resource.name}",:timeout=>timeout)
147+
defpip_cmd(subcommand,version='')
148+
options={:timeout=>@new_resource.timeout,:user=>@new_resource.user,:group=>@new_resource.group}
149+
options[:environment]={'HOME'=> ::File.expand_path("~#{@new_resource.user}")}if@new_resource.user
150+
shell_out!("#{which_pip(@new_resource)}#{subcommand}#{@new_resource.options}#{@new_resource.name}#{version}",options)
161151
end
162152

163153
# TODO remove when provider is moved into Chef core
164154
# this allows PythonPip to work with Chef::Resource::Package
165-
defpip_cmd(nr)
155+
defwhich_pip(nr)
166156
if(nr.respond_to?("virtualenv") &&nr.virtualenv)
167157
::File.join(nr.virtualenv,'/bin/pip')
168158
elsif"#{node['python']['install_method']}".eql?("source")

‎resources/pip.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
attribute:package_name,:kind_of=>String,:name_attribute=>true
2424
attribute:version,:default=>nil
25-
attribute:timeout,:default=>nil
25+
attribute:timeout,:default=>900
2626
attribute:virtualenv,:kind_of=>String
27-
attribute:options,:kind_of=>String
27+
attribute:user,:regex=>Chef::Config[:user_valid_regex]
28+
attribute:group,:regex=>Chef::Config[:group_valid_regex]
29+
attribute:options,:kind_of=>String,:default=>''

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp