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
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
slapos.core
Commits
a652a610
Commit
a652a610
authored
Oct 11, 2012
by
Cédric de Saint Martin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Factor to help testing + add 'finally' to ALWAYS remove tmpdir
parent
02c94a10
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
48 deletions
+54
-48
slapos/grid/SlapObject.py
slapos/grid/SlapObject.py
+54
-48
No files found.
slapos/grid/SlapObject.py
View file @
a652a610
...
...
@@ -90,58 +90,41 @@ class Software(object):
Installs from buildout otherwise.
"""
self
.
logger
.
info
(
"Installing software release %s..."
%
self
.
url
)
tarname
=
self
.
software_url_hash
cache_dir
=
tempfile
.
mkdtemp
()
tarpath
=
os
.
path
.
join
(
cache_dir
,
tarname
)
# Check if we can download from cache
if
(
not
os
.
path
.
exists
(
self
.
software_path
))
\
and
download_network_cached
(
self
.
download_binary_cache_url
,
self
.
download_binary_dir_url
,
self
.
url
,
self
.
software_root
,
self
.
software_url_hash
,
tarpath
,
self
.
logger
,
self
.
signature_certificate_list
,
self
.
download_from_binary_cache_url_blacklist
):
tar
=
tarfile
.
open
(
tarpath
)
try
:
self
.
logger
.
info
(
"Extracting archive of cached software release..."
)
tar
.
extractall
(
path
=
self
.
software_root
)
finally
:
tar
.
close
()
else
:
self
.
_install_from_buildout
()
# Upload to binary cache if possible
blacklisted
=
False
for
url
in
self
.
upload_to_binary_cache_url_blacklist
:
if
self
.
url
.
startswith
(
url
):
blacklisted
=
True
self
.
logger
.
debug
(
"Can't download from binary cache: "
"Software Release URL is blacklisted."
)
if
(
self
.
software_root
and
self
.
url
and
self
.
software_url_hash
\
and
self
.
upload_binary_cache_url
\
and
self
.
upload_binary_dir_url
\
and
not
blacklisted
):
self
.
logger
.
info
(
"Creating archive of software release..."
)
tar
=
tarfile
.
open
(
tarpath
,
"w:gz"
)
try
:
tarpath
=
os
.
path
.
join
(
cache_dir
,
self
.
software_url_hash
)
# Check if we can download from cache
if
(
not
os
.
path
.
exists
(
self
.
software_path
))
\
and
download_network_cached
(
self
.
download_binary_cache_url
,
self
.
download_binary_dir_url
,
self
.
url
,
self
.
software_root
,
self
.
software_url_hash
,
tarpath
,
self
.
logger
,
self
.
signature_certificate_list
,
self
.
download_from_binary_cache_url_blacklist
):
tar
=
tarfile
.
open
(
tarpath
)
try
:
tar
.
add
(
self
.
software_path
,
arcname
=
self
.
software_url_hash
)
self
.
logger
.
info
(
"Extracting archive of cached software release..."
)
tar
.
extractall
(
path
=
self
.
software_root
)
finally
:
tar
.
close
()
self
.
logger
.
info
(
"Trying to upload archive of software release..."
)
upload_network_cached
(
self
.
software_root
,
self
.
url
,
self
.
software_url_hash
,
self
.
upload_binary_cache_url
,
self
.
upload_binary_dir_url
,
tarpath
,
self
.
logger
,
self
.
signature_private_key_file
,
self
.
shacache_cert_file
,
self
.
shacache_key_file
,
self
.
shadir_cert_file
,
self
.
shadir_key_file
)
shutil
.
rmtree
(
cache_dir
)
else
:
self
.
_install_from_buildout
()
# Upload to binary cache if possible
blacklisted
=
False
for
url
in
self
.
upload_to_binary_cache_url_blacklist
:
if
self
.
url
.
startswith
(
url
):
blacklisted
=
True
self
.
logger
.
debug
(
"Can't upload from binary cache: "
"Software Release URL is blacklisted."
)
if
(
self
.
software_root
and
self
.
url
and
self
.
software_url_hash
\
and
self
.
upload_binary_cache_url
\
and
self
.
upload_binary_dir_url
\
and
not
blacklisted
):
self
.
uploadSoftwareRelease
(
tarpath
)
finally
:
shutil
.
rmtree
(
cache_dir
)
def
_install_from_buildout
(
self
):
""" Fetches buildout configuration from the server, run buildout with
...
...
@@ -192,6 +175,29 @@ class Software(object):
finally
:
shutil
.
rmtree
(
extends_cache
)
def
uploadSoftwareRelease
(
self
,
tarpath
):
"""
Try to tar and upload an installed Software Release.
"""
self
.
logger
.
info
(
"Creating archive of software release..."
)
tar
=
tarfile
.
open
(
tarpath
,
"w:gz"
)
try
:
tar
.
add
(
self
.
software_path
,
arcname
=
self
.
software_url_hash
)
finally
:
tar
.
close
()
self
.
logger
.
info
(
"Trying to upload archive of software release..."
)
upload_network_cached
(
self
.
software_root
,
self
.
url
,
self
.
software_url_hash
,
self
.
upload_binary_cache_url
,
self
.
upload_binary_dir_url
,
tarpath
,
self
.
logger
,
self
.
signature_private_key_file
,
self
.
shacache_cert_file
,
self
.
shacache_key_file
,
self
.
shadir_cert_file
,
self
.
shadir_key_file
)
def
destroy
(
self
):
"""Removes software release."""
def
retry
(
func
,
path
,
exc
):
...
...
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