Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
21
Merge Requests
21
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
nexedi
slapos.core
Commits
4ba06039
Commit
4ba06039
authored
2 months ago
by
Alain Takoudjou
Browse files
Options
Browse Files
Download
Plain Diff
slapos.grid: fixup! copy .netrc file to buildout home path
See merge request
!727
parents
ed92d54a
755a4688
Pipeline
#38675
failed with stage
in 0 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
35 deletions
+31
-35
slapos/grid/SlapObject.py
slapos/grid/SlapObject.py
+16
-0
slapos/grid/utils.py
slapos/grid/utils.py
+0
-17
slapos/tests/test_slapgrid.py
slapos/tests/test_slapgrid.py
+15
-18
No files found.
slapos/grid/SlapObject.py
View file @
4ba06039
...
...
@@ -273,6 +273,21 @@ class Software(object):
if
value
:
yield
'networkcache:%s=%s'
%
(
networkcache_option
,
value
)
def
_copy_netrc_file
(
self
,
dest_path
):
home_netrc
=
os
.
path
.
join
(
pwd
.
getpwuid
(
os
.
stat
(
self
.
software_root
).
st_uid
).
pw_dir
,
'.netrc'
)
buildout_netrc
=
os
.
path
.
join
(
dest_path
,
'.netrc'
)
if
os
.
path
.
abspath
(
home_netrc
)
==
buildout_netrc
:
return
if
os
.
path
.
exists
(
buildout_netrc
):
os
.
unlink
(
buildout_netrc
)
if
os
.
path
.
exists
(
home_netrc
):
shutil
.
copyfile
(
home_netrc
,
buildout_netrc
)
os
.
chmod
(
buildout_netrc
,
0o600
)
self
.
_set_ownership
(
buildout_netrc
)
def
_install_from_buildout
(
self
):
""" Fetches buildout configuration from the server, run buildout with
it. If it fails, we notify the server.
...
...
@@ -285,6 +300,7 @@ class Software(object):
else
:
os
.
chmod
(
self
.
software_path
,
0o755
)
self
.
_set_ownership
(
self
.
software_path
)
self
.
_copy_netrc_file
(
self
.
software_path
)
f
=
None
extends_cache
=
tempfile
.
mkdtemp
()
...
...
This diff is collapsed.
Click to expand it.
slapos/grid/utils.py
View file @
4ba06039
...
...
@@ -253,21 +253,6 @@ def getCleanEnvironment(logger, home_path='/tmp'):
logger
.
debug
(
'Removed from environment: %s'
,
', '
.
join
(
sorted
(
removed_env
)))
return
env
def
copyNetrcFile
(
dest_path
):
user_home
=
os
.
environ
[
'HOME'
]
netrc_file
=
os
.
path
.
join
(
user_home
,
'.netrc'
)
buildout_netrc
=
os
.
path
.
join
(
dest_path
,
'.netrc'
)
if
os
.
path
.
abspath
(
netrc_file
)
==
buildout_netrc
:
return
if
os
.
path
.
exists
(
netrc_file
):
shutil
.
copyfile
(
netrc_file
,
buildout_netrc
)
os
.
chmod
(
buildout_netrc
,
0o600
)
def
cleanupNetrcFile
(
dest_path
):
buildout_netrc
=
os
.
path
.
join
(
dest_path
,
'.netrc'
)
if
os
.
path
.
exists
(
buildout_netrc
):
os
.
unlink
(
buildout_netrc
)
def
setRunning
(
logger
,
pidfile
):
"""Creates a pidfile. If a pidfile already exists, we exit"""
if
os
.
path
.
exists
(
pidfile
):
...
...
@@ -455,7 +440,6 @@ def launchBuildout(path, buildout_binary, logger,
path
))
if
timeout
is
not
None
:
logger
.
debug
(
'Launching buildout with %ss timeout'
,
timeout
)
copyNetrcFile
(
path
)
process_handler
=
SlapPopen
(
invocation_list
,
preexec_fn
=
lambda
:
dropPrivileges
(
uid
,
gid
,
logger
=
logger
),
cwd
=
path
,
...
...
@@ -472,7 +456,6 @@ def launchBuildout(path, buildout_binary, logger,
logger
.
exception
(
exc
)
raise
BuildoutFailedError
(
exc
)
finally
:
cleanupNetrcFile
(
path
)
old_umask
=
os
.
umask
(
umask
)
logger
.
debug
(
'Restore umask from %03o to %03o'
%
(
old_umask
,
umask
))
...
...
This diff is collapsed.
Click to expand it.
slapos/tests/test_slapgrid.py
View file @
4ba06039
...
...
@@ -40,6 +40,7 @@ import textwrap
import
time
import
unittest
import
six
import
pwd
from
six.moves.urllib
import
parse
import
json
import
re
...
...
@@ -2226,11 +2227,16 @@ class TestSlapgridSoftwareRelease(MasterMixin, unittest.TestCase):
def
setUp
(
self
):
MasterMixin
.
setUp
(
self
)
self
.
orginal_home
=
os
.
environ
[
'HOME'
]
os
.
environ
[
'HOME'
]
=
self
.
_tempdir
self
.
pwuid_patch
=
patch
.
object
(
pwd
,
'getpwuid'
,
new
=
self
.
fake_getpwuid
)
self
.
pwuid_patch
.
start
()
def
tearDown
(
self
):
os
.
environ
[
'HOME'
]
=
self
.
orginal_home
self
.
pwuid_patch
.
stop
()
def
fake_getpwuid
(
self
,
uid
):
return
pwd
.
struct_passwd
(
(
"fake"
,
"x"
,
uid
,
uid
,
""
,
self
.
software_root
,
"/bin/bash"
)
)
fake_waiting_time
=
0.05
def
test_one_software_buildout_fail_is_correctly_logged
(
self
):
...
...
@@ -2301,39 +2307,31 @@ chmod a-rxw directory
def
test_build_software_with_netrc
(
self
):
computer
=
self
.
getTestComputerClass
()(
self
.
software_root
,
self
.
instance_root
,
1
,
1
)
home
=
os
.
environ
[
'HOME'
]
netrc_file
=
os
.
path
.
join
(
home
,
'.netrc'
)
netrc_file
=
os
.
path
.
join
(
self
.
software_root
,
'.netrc'
)
with
open
(
netrc_file
,
'w'
)
as
f
:
f
.
write
(
'machine localhost login foo password bar'
)
with
open
(
os
.
path
.
join
(
home
,
'testing'
),
'w'
)
as
f
:
with
open
(
os
.
path
.
join
(
self
.
software_root
,
'testing'
),
'w'
)
as
f
:
f
.
write
(
'this is not buildout home'
)
os
.
chmod
(
netrc_file
,
0o600
)
with
httmock
.
HTTMock
(
computer
.
request_handler
):
software
=
computer
.
software_list
[
0
]
software_path
=
os
.
path
.
join
(
self
.
software_root
,
software
.
software_hash
)
buildout_netrc
=
os
.
path
.
join
(
software_path
,
'.netrc'
)
test_file
=
os
.
path
.
join
(
software_path
,
'd/file'
)
command
=
"""#!/bin/sh
mkdir -p d
# $HOME is different from buildout netrc home location
if [ -s "$HOME/testing" ]; then
echo "testing file exists"
exit 1
fi
if [ -s "$HOME/.netrc" ]; then
cp $HOME/.netrc d/file
else
echo ".netrc file not found"
rm -f d/file
fi
"""
software
.
setBuildout
(
command
)
self
.
launchSlapgridSoftware
()
self
.
assertTrue
(
os
.
path
.
exists
(
netrc_file
))
self
.
assert
Fals
e
(
os
.
path
.
exists
(
buildout_netrc
))
self
.
assertTrue
(
os
.
path
.
exists
(
test_file
))
with
open
(
test_file
)
as
f
:
self
.
assert
Tru
e
(
os
.
path
.
exists
(
buildout_netrc
))
with
open
(
buildout_netrc
)
as
f
:
content
=
f
.
read
()
self
.
assertEqual
(
content
,
'machine localhost login foo password bar'
)
...
...
@@ -2343,7 +2341,6 @@ fi
os
.
remove
(
completed
)
self
.
launchSlapgridSoftware
()
self
.
assertFalse
(
os
.
path
.
exists
(
buildout_netrc
))
self
.
assertFalse
(
os
.
path
.
exists
(
test_file
))
class
SlapgridInitialization
(
unittest
.
TestCase
):
"""
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment