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
18
Merge Requests
18
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
f03386a3
Commit
f03386a3
authored
Jun 27, 2013
by
Marco Mariani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
grid: logger usage % -> ,
parent
0018e9a2
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
75 deletions
+73
-75
slapos/grid/SlapObject.py
slapos/grid/SlapObject.py
+26
-28
slapos/grid/slapgrid.py
slapos/grid/slapgrid.py
+28
-26
slapos/grid/svcbackend.py
slapos/grid/svcbackend.py
+3
-3
slapos/grid/utils.py
slapos/grid/utils.py
+16
-18
No files found.
slapos/grid/SlapObject.py
View file @
f03386a3
...
@@ -124,7 +124,7 @@ class Software(object):
...
@@ -124,7 +124,7 @@ class Software(object):
""" Fetches binary cache if possible.
""" Fetches binary cache if possible.
Installs from buildout otherwise.
Installs from buildout otherwise.
"""
"""
self
.
logger
.
info
(
"Installing software release %s..."
%
self
.
url
)
self
.
logger
.
info
(
'Installing software release %s...'
,
self
.
url
)
cache_dir
=
tempfile
.
mkdtemp
()
cache_dir
=
tempfile
.
mkdtemp
()
try
:
try
:
tarpath
=
os
.
path
.
join
(
cache_dir
,
self
.
software_url_hash
)
tarpath
=
os
.
path
.
join
(
cache_dir
,
self
.
software_url_hash
)
...
@@ -263,11 +263,11 @@ class Software(object):
...
@@ -263,11 +263,11 @@ class Software(object):
func
(
path
)
func
(
path
)
try
:
try
:
if
os
.
path
.
exists
(
self
.
software_path
):
if
os
.
path
.
exists
(
self
.
software_path
):
self
.
logger
.
info
(
'Removing path %r'
%
self
.
software_path
)
self
.
logger
.
info
(
'Removing path %r'
,
self
.
software_path
)
shutil
.
rmtree
(
self
.
software_path
,
onerror
=
retry
)
shutil
.
rmtree
(
self
.
software_path
,
onerror
=
retry
)
else
:
else
:
self
.
logger
.
info
(
'Path %r does not exist
s, no need to remove.'
%
self
.
logger
.
info
(
'Path %r does not exist
, no need to remove.'
,
self
.
software_path
)
self
.
software_path
)
except
IOError
as
exc
:
except
IOError
as
exc
:
raise
IOError
(
"I/O error while removing software (%s): %s"
%
(
self
.
url
,
exc
))
raise
IOError
(
"I/O error while removing software (%s): %s"
%
(
self
.
url
,
exc
))
...
@@ -334,9 +334,9 @@ class Partition(object):
...
@@ -334,9 +334,9 @@ class Partition(object):
if
old_content
!=
new_content
:
if
old_content
!=
new_content
:
if
old_content
is
None
:
if
old_content
is
None
:
self
.
logger
.
info
(
'Missing %s file. Creating %r'
%
(
name
,
path
)
)
self
.
logger
.
info
(
'Missing %s file. Creating %r'
,
name
,
path
)
else
:
else
:
self
.
logger
.
info
(
'Changed %s content. Updating %r'
%
(
name
,
path
)
)
self
.
logger
.
info
(
'Changed %s content. Updating %r'
,
name
,
path
)
with
os
.
fdopen
(
os
.
open
(
path
,
os
.
O_CREAT
|
os
.
O_WRONLY
|
os
.
O_TRUNC
,
0o400
),
'wb'
)
as
fout
:
with
os
.
fdopen
(
os
.
open
(
path
,
os
.
O_CREAT
|
os
.
O_WRONLY
|
os
.
O_TRUNC
,
0o400
),
'wb'
)
as
fout
:
fout
.
write
(
new_content
)
fout
.
write
(
new_content
)
...
@@ -391,8 +391,8 @@ class Partition(object):
...
@@ -391,8 +391,8 @@ class Partition(object):
""" Creates configuration file from template in software_path, then
""" Creates configuration file from template in software_path, then
installs the software partition with the help of buildout
installs the software partition with the help of buildout
"""
"""
self
.
logger
.
info
(
"Installing Computer Partition %s..."
self
.
logger
.
info
(
'Installing Computer Partition %s...'
,
%
self
.
computer_partition
.
getId
())
self
.
computer_partition
.
getId
())
# Checks existence and permissions of Partition directory
# Checks existence and permissions of Partition directory
# Note : Partitions have to be created and configured before running slapgrid
# Note : Partitions have to be created and configured before running slapgrid
if
not
os
.
path
.
isdir
(
self
.
instance_path
):
if
not
os
.
path
.
isdir
(
self
.
instance_path
):
...
@@ -430,7 +430,7 @@ class Partition(object):
...
@@ -430,7 +430,7 @@ class Partition(object):
self
.
software_release_url
,
instance_cfg
))
self
.
software_release_url
,
instance_cfg
))
buildout_cfg
=
os
.
path
.
join
(
self
.
instance_path
,
'buildout.cfg'
)
buildout_cfg
=
os
.
path
.
join
(
self
.
instance_path
,
'buildout.cfg'
)
self
.
logger
.
debug
(
"Copying %r to %r"
%
(
instance_cfg
,
buildout_cfg
)
)
self
.
logger
.
debug
(
'Copying %r to %r'
,
instance_cfg
,
buildout_cfg
)
with
open
(
buildout_cfg
,
'w'
)
as
fout
:
with
open
(
buildout_cfg
,
'w'
)
as
fout
:
fout
.
write
(
open
(
instance_cfg
).
read
())
fout
.
write
(
open
(
instance_cfg
).
read
())
...
@@ -462,8 +462,7 @@ class Partition(object):
...
@@ -462,8 +462,7 @@ class Partition(object):
os
.
chown
(
buildout_cfg
,
-
1
,
int
(
gid
))
os
.
chown
(
buildout_cfg
,
-
1
,
int
(
gid
))
if
len
(
bootstrap_candidate_list
)
==
0
:
if
len
(
bootstrap_candidate_list
)
==
0
:
buildout_binary
=
os
.
path
.
join
(
self
.
software_path
,
'bin'
,
'buildout'
)
buildout_binary
=
os
.
path
.
join
(
self
.
software_path
,
'bin'
,
'buildout'
)
self
.
logger
.
warning
(
"Falling back to default buildout %r"
%
self
.
logger
.
warning
(
'Falling back to default buildout %r'
,
buildout_binary
)
buildout_binary
)
else
:
else
:
if
len
(
bootstrap_candidate_list
)
!=
1
:
if
len
(
bootstrap_candidate_list
)
!=
1
:
raise
ValueError
(
'More than one bootstrap candidate found.'
)
raise
ValueError
(
'More than one bootstrap candidate found.'
)
...
@@ -477,8 +476,8 @@ class Partition(object):
...
@@ -477,8 +476,8 @@ class Partition(object):
invocation_list
=
first_line
[
2
:].
split
()
invocation_list
=
first_line
[
2
:].
split
()
invocation_list
.
append
(
bootstrap_file
)
invocation_list
.
append
(
bootstrap_file
)
self
.
logger
.
debug
(
'Invoking %r in %r'
%
(
' '
.
join
(
invocation_list
),
self
.
logger
.
debug
(
'Invoking %r in %r'
,
' '
.
join
(
invocation_list
),
self
.
instance_path
)
)
self
.
instance_path
)
process_handler
=
SlapPopen
(
invocation_list
,
process_handler
=
SlapPopen
(
invocation_list
,
preexec_fn
=
lambda
:
dropPrivileges
(
uid
,
gid
,
logger
=
self
.
logger
),
preexec_fn
=
lambda
:
dropPrivileges
(
uid
,
gid
,
logger
=
self
.
logger
),
cwd
=
self
.
instance_path
,
cwd
=
self
.
instance_path
,
...
@@ -526,8 +525,8 @@ class Partition(object):
...
@@ -526,8 +525,8 @@ class Partition(object):
if
os
.
path
.
isdir
(
self
.
service_path
):
if
os
.
path
.
isdir
(
self
.
service_path
):
service_list
=
os
.
listdir
(
self
.
service_path
)
service_list
=
os
.
listdir
(
self
.
service_path
)
if
len
(
runner_list
)
==
0
and
len
(
service_list
)
==
0
:
if
len
(
runner_list
)
==
0
and
len
(
service_list
)
==
0
:
self
.
logger
.
warning
(
'No runners nor services found for partition %r'
%
self
.
logger
.
warning
(
'No runners nor services found for partition %r'
,
self
.
partition_id
)
self
.
partition_id
)
if
os
.
path
.
exists
(
self
.
supervisord_partition_configuration_path
):
if
os
.
path
.
exists
(
self
.
supervisord_partition_configuration_path
):
os
.
unlink
(
self
.
supervisord_partition_configuration_path
)
os
.
unlink
(
self
.
supervisord_partition_configuration_path
)
else
:
else
:
...
@@ -557,10 +556,9 @@ class Partition(object):
...
@@ -557,10 +556,9 @@ class Partition(object):
supervisor
.
startProcessGroup
(
partition_id
,
False
)
supervisor
.
startProcessGroup
(
partition_id
,
False
)
except
xmlrpclib
.
Fault
as
exc
:
except
xmlrpclib
.
Fault
as
exc
:
if
exc
.
faultString
.
startswith
(
'BAD_NAME:'
):
if
exc
.
faultString
.
startswith
(
'BAD_NAME:'
):
self
.
logger
.
info
(
"Nothing to start on %s..."
%
self
.
logger
.
info
(
'Nothing to start on %s...'
,
self
.
computer_partition
.
getId
())
self
.
computer_partition
.
getId
())
else
:
else
:
self
.
logger
.
info
(
"Requested start of %s..."
%
self
.
computer_partition
.
getId
())
self
.
logger
.
info
(
'Requested start of %s...'
,
self
.
computer_partition
.
getId
())
def
stop
(
self
):
def
stop
(
self
):
"""Asks supervisord to stop the instance."""
"""Asks supervisord to stop the instance."""
...
@@ -570,9 +568,9 @@ class Partition(object):
...
@@ -570,9 +568,9 @@ class Partition(object):
supervisor
.
stopProcessGroup
(
partition_id
,
False
)
supervisor
.
stopProcessGroup
(
partition_id
,
False
)
except
xmlrpclib
.
Fault
as
exc
:
except
xmlrpclib
.
Fault
as
exc
:
if
exc
.
faultString
.
startswith
(
'BAD_NAME:'
):
if
exc
.
faultString
.
startswith
(
'BAD_NAME:'
):
self
.
logger
.
info
(
'Partition %s not known in supervisord, ignoring'
%
partition_id
)
self
.
logger
.
info
(
'Partition %s not known in supervisord, ignoring'
,
partition_id
)
else
:
else
:
self
.
logger
.
info
(
"Requested stop of %s..."
%
self
.
computer_partition
.
getId
())
self
.
logger
.
info
(
'Requested stop of %s...'
,
self
.
computer_partition
.
getId
())
def
_pre_destroy
(
self
,
destroy_binary
):
def
_pre_destroy
(
self
,
destroy_binary
):
uid
,
gid
=
self
.
getUserGroupId
()
uid
,
gid
=
self
.
getUserGroupId
()
...
@@ -593,8 +591,8 @@ class Partition(object):
...
@@ -593,8 +591,8 @@ class Partition(object):
def
destroy
(
self
):
def
destroy
(
self
):
"""Destroys the partition and makes it available for subsequent use."
"""Destroys the partition and makes it available for subsequent use."
"""
"""
self
.
logger
.
info
(
"Destroying Computer Partition %s..."
self
.
logger
.
info
(
'Destroying Computer Partition %s...'
,
%
self
.
computer_partition
.
getId
())
self
.
computer_partition
.
getId
())
# Launches "destroy" binary if exists
# Launches "destroy" binary if exists
destroy_binary
=
os
.
path
.
join
(
self
.
instance_path
,
'sbin'
,
'destroy'
)
destroy_binary
=
os
.
path
.
join
(
self
.
instance_path
,
'sbin'
,
'destroy'
)
...
@@ -644,21 +642,21 @@ class Partition(object):
...
@@ -644,21 +642,21 @@ class Partition(object):
fails
=
[
res
for
res
in
results
fails
=
[
res
for
res
in
results
if
res
[
'status'
]
==
xmlrpc
.
Faults
.
FAILED
]
if
res
[
'status'
]
==
xmlrpc
.
Faults
.
FAILED
]
if
fails
:
if
fails
:
self
.
logger
.
warning
(
'Problem while stopping process %r, will try later'
%
gname
)
self
.
logger
.
warning
(
'Problem while stopping process %r, will try later'
,
gname
)
else
:
else
:
self
.
logger
.
info
(
'Stopped %r'
%
gname
)
self
.
logger
.
info
(
'Stopped %r'
,
gname
)
supervisor
.
removeProcessGroup
(
gname
)
supervisor
.
removeProcessGroup
(
gname
)
self
.
logger
.
info
(
'Removed %r'
%
gname
)
self
.
logger
.
info
(
'Removed %r'
,
gname
)
for
gname
in
changed
:
for
gname
in
changed
:
results
=
supervisor
.
stopProcessGroup
(
gname
)
results
=
supervisor
.
stopProcessGroup
(
gname
)
self
.
logger
.
info
(
'Stopped %r'
%
gname
)
self
.
logger
.
info
(
'Stopped %r'
,
gname
)
supervisor
.
removeProcessGroup
(
gname
)
supervisor
.
removeProcessGroup
(
gname
)
supervisor
.
addProcessGroup
(
gname
)
supervisor
.
addProcessGroup
(
gname
)
self
.
logger
.
info
(
'Updated %r'
%
gname
)
self
.
logger
.
info
(
'Updated %r'
,
gname
)
for
gname
in
added
:
for
gname
in
added
:
supervisor
.
addProcessGroup
(
gname
)
supervisor
.
addProcessGroup
(
gname
)
self
.
logger
.
info
(
'Updated %r'
%
gname
)
self
.
logger
.
info
(
'Updated %r'
,
gname
)
self
.
logger
.
debug
(
'Supervisord updated'
)
self
.
logger
.
debug
(
'Supervisord updated'
)
slapos/grid/slapgrid.py
View file @
f03386a3
...
@@ -426,9 +426,9 @@ class Slapgrid(object):
...
@@ -426,9 +426,9 @@ class Slapgrid(object):
fout
.
write
(
time
.
asctime
())
fout
.
write
(
time
.
asctime
())
elif
state
==
'destroyed'
:
elif
state
==
'destroyed'
:
if
os
.
path
.
exists
(
software_path
):
if
os
.
path
.
exists
(
software_path
):
self
.
logger
.
info
(
'Destroying %r...'
%
software_release_uri
)
self
.
logger
.
info
(
'Destroying %r...'
,
software_release_uri
)
software
.
destroy
()
software
.
destroy
()
self
.
logger
.
info
(
'Destroyed %r.'
%
software_release_uri
)
self
.
logger
.
info
(
'Destroyed %r.'
,
software_release_uri
)
# Send log before exiting
# Send log before exiting
except
(
SystemExit
,
KeyboardInterrupt
):
except
(
SystemExit
,
KeyboardInterrupt
):
software_release
.
error
(
traceback
.
format_exc
(),
logger
=
self
.
logger
)
software_release
.
error
(
traceback
.
format_exc
(),
logger
=
self
.
logger
)
...
@@ -540,7 +540,7 @@ class Slapgrid(object):
...
@@ -540,7 +540,7 @@ class Slapgrid(object):
(
computer_partition_id
not
in
self
.
computer_partition_filter_list
):
(
computer_partition_id
not
in
self
.
computer_partition_filter_list
):
return
return
self
.
logger
.
info
(
'Processing Computer Partition %s.'
%
computer_partition_id
)
self
.
logger
.
info
(
'Processing Computer Partition %s.'
,
computer_partition_id
)
instance_path
=
os
.
path
.
join
(
self
.
instance_root
,
computer_partition_id
)
instance_path
=
os
.
path
.
join
(
self
.
instance_root
,
computer_partition_id
)
...
@@ -606,9 +606,9 @@ class Slapgrid(object):
...
@@ -606,9 +606,9 @@ class Slapgrid(object):
os
.
remove
(
timestamp_path
)
os
.
remove
(
timestamp_path
)
self
.
logger
.
exception
(
''
)
self
.
logger
.
exception
(
''
)
self
.
logger
.
info
(
' Software URL: %s'
%
software_url
)
self
.
logger
.
info
(
' Software URL: %s'
,
software_url
)
self
.
logger
.
info
(
' Software path: %s'
%
software_path
)
self
.
logger
.
info
(
' Software path: %s'
,
software_path
)
self
.
logger
.
info
(
' Instance path: %s'
%
instance_path
)
self
.
logger
.
info
(
' Instance path: %s'
,
instance_path
)
local_partition
=
Partition
(
local_partition
=
Partition
(
software_path
=
software_path
,
software_path
=
software_path
,
...
@@ -791,8 +791,8 @@ class Slapgrid(object):
...
@@ -791,8 +791,8 @@ class Slapgrid(object):
try
:
try
:
document
=
etree
.
fromstring
(
to_be_validated
)
document
=
etree
.
fromstring
(
to_be_validated
)
except
(
etree
.
XMLSyntaxError
,
etree
.
DocumentInvalid
)
as
exc
:
except
(
etree
.
XMLSyntaxError
,
etree
.
DocumentInvalid
)
as
exc
:
self
.
logger
.
info
(
'Failed to parse this XML report : %s
\
n
%s'
%
self
.
logger
.
info
(
'Failed to parse this XML report : %s
\
n
%s'
,
(
to_be_validated
,
_formatXMLError
(
exc
)
))
to_be_validated
,
_formatXMLError
(
exc
))
self
.
logger
.
error
(
_formatXMLError
(
exc
))
self
.
logger
.
error
(
_formatXMLError
(
exc
))
return
False
return
False
...
@@ -823,11 +823,11 @@ class Slapgrid(object):
...
@@ -823,11 +823,11 @@ class Slapgrid(object):
try
:
try
:
root
=
etree
.
fromstring
(
computer_partition_usage
.
usage
)
root
=
etree
.
fromstring
(
computer_partition_usage
.
usage
)
except
UnicodeError
as
exc
:
except
UnicodeError
as
exc
:
self
.
logger
.
info
(
"Failed to read %s."
%
computer_partition_usage
.
usage
)
self
.
logger
.
info
(
'Failed to read %s.'
,
computer_partition_usage
.
usage
)
self
.
logger
.
error
(
UnicodeError
)
self
.
logger
.
error
(
UnicodeError
)
raise
UnicodeError
(
"Failed to read %s: %s"
%
(
computer_partition_usage
.
usage
,
exc
))
raise
UnicodeError
(
"Failed to read %s: %s"
%
(
computer_partition_usage
.
usage
,
exc
))
except
(
etree
.
XMLSyntaxError
,
etree
.
DocumentInvalid
)
as
exc
:
except
(
etree
.
XMLSyntaxError
,
etree
.
DocumentInvalid
)
as
exc
:
self
.
logger
.
info
(
"Failed to parse %s."
%
(
computer_partition_usage
.
usage
)
)
self
.
logger
.
info
(
'Failed to parse %s.'
,
computer_partition_usage
.
usage
)
self
.
logger
.
error
(
exc
)
self
.
logger
.
error
(
exc
)
raise
_formatXMLError
(
exc
)
raise
_formatXMLError
(
exc
)
except
Exception
as
exc
:
except
Exception
as
exc
:
...
@@ -934,13 +934,13 @@ class Slapgrid(object):
...
@@ -934,13 +934,13 @@ class Slapgrid(object):
if
process_handler
.
returncode
!=
0
:
if
process_handler
.
returncode
!=
0
:
clean_run
=
False
clean_run
=
False
failed_script_list
.
append
(
"Script %r failed."
%
script
)
failed_script_list
.
append
(
"Script %r failed."
%
script
)
self
.
logger
.
warning
(
'Failed to run %r'
%
invocation_list
)
self
.
logger
.
warning
(
'Failed to run %r'
,
invocation_list
)
if
len
(
failed_script_list
):
if
len
(
failed_script_list
):
computer_partition
.
error
(
'
\
n
'
.
join
(
failed_script_list
),
logger
=
self
.
logger
)
computer_partition
.
error
(
'
\
n
'
.
join
(
failed_script_list
),
logger
=
self
.
logger
)
# Whatever happens, don't stop processing other instances
# Whatever happens, don't stop processing other instances
except
Exception
:
except
Exception
:
self
.
logger
.
exception
(
'Cannot run usage script(s) for %r:'
%
self
.
logger
.
exception
(
'Cannot run usage script(s) for %r:'
,
computer_partition
.
getId
())
computer_partition
.
getId
())
#Now we loop through the different computer partitions to report
#Now we loop through the different computer partitions to report
report_usage_issue_cp_list
=
[]
report_usage_issue_cp_list
=
[]
...
@@ -968,7 +968,7 @@ class Slapgrid(object):
...
@@ -968,7 +968,7 @@ class Slapgrid(object):
if
not
self
.
validateXML
(
usage
,
partition_consumption_model
):
if
not
self
.
validateXML
(
usage
,
partition_consumption_model
):
self
.
logger
.
info
(
'WARNING: The XML file %s generated by slapreport is '
self
.
logger
.
info
(
'WARNING: The XML file %s generated by slapreport is '
'not valid - This report is left as is at %s where you can '
'not valid - This report is left as is at %s where you can '
'inspect what went wrong
'
%
(
filename
,
dir_reports
)
)
'inspect what went wrong
'
,
filename
,
dir_reports
)
# Warn the SlapOS Master that a partition generates corrupted xml
# Warn the SlapOS Master that a partition generates corrupted xml
# report
# report
else
:
else
:
...
@@ -978,7 +978,7 @@ class Slapgrid(object):
...
@@ -978,7 +978,7 @@ class Slapgrid(object):
computer_partition_usage_list
.
append
(
computer_partition_usage
)
computer_partition_usage_list
.
append
(
computer_partition_usage
)
filename_delete_list
.
append
(
filename
)
filename_delete_list
.
append
(
filename
)
else
:
else
:
self
.
logger
.
debug
(
'Usage report %r not found, ignored'
%
file_path
)
self
.
logger
.
debug
(
'Usage report %r not found, ignored'
,
file_path
)
#After sending the aggregated file we remove all the valid xml reports
#After sending the aggregated file we remove all the valid xml reports
for
filename
in
filename_delete_list
:
for
filename
in
filename_delete_list
:
...
@@ -986,12 +986,13 @@ class Slapgrid(object):
...
@@ -986,12 +986,13 @@ class Slapgrid(object):
# Whatever happens, don't stop processing other instances
# Whatever happens, don't stop processing other instances
except
Exception
:
except
Exception
:
self
.
logger
.
exception
(
'Cannot run usage script(s) for %r:'
%
self
.
logger
.
exception
(
'Cannot run usage script(s) for %r:'
,
computer_partition
.
getId
())
computer_partition
.
getId
())
for
computer_partition_usage
in
computer_partition_usage_list
:
for
computer_partition_usage
in
computer_partition_usage_list
:
self
.
logger
.
info
(
'computer_partition_usage_list: %s - %s'
%
self
.
logger
.
info
(
'computer_partition_usage_list: %s - %s'
,
(
computer_partition_usage
.
usage
,
computer_partition_usage
.
getId
()))
computer_partition_usage
.
usage
,
computer_partition_usage
.
getId
())
#If there is, at least, one report
#If there is, at least, one report
if
computer_partition_usage_list
!=
[]:
if
computer_partition_usage_list
!=
[]:
...
@@ -999,7 +1000,7 @@ class Slapgrid(object):
...
@@ -999,7 +1000,7 @@ class Slapgrid(object):
#We generate the final XML report with asXML method
#We generate the final XML report with asXML method
computer_consumption
=
self
.
asXML
(
computer_partition_usage_list
)
computer_consumption
=
self
.
asXML
(
computer_partition_usage_list
)
self
.
logger
.
info
(
'Final xml report: %s'
%
computer_consumption
)
self
.
logger
.
info
(
'Final xml report: %s'
,
computer_consumption
)
#We test the XML report before sending it
#We test the XML report before sending it
if
self
.
validateXML
(
computer_consumption
,
computer_consumption_model
):
if
self
.
validateXML
(
computer_consumption
,
computer_consumption_model
):
...
@@ -1052,8 +1053,8 @@ class Slapgrid(object):
...
@@ -1052,8 +1053,8 @@ class Slapgrid(object):
except
Exception
:
except
Exception
:
pass
pass
if
computer_partition
.
getId
()
in
report_usage_issue_cp_list
:
if
computer_partition
.
getId
()
in
report_usage_issue_cp_list
:
self
.
logger
.
info
(
'Ignoring destruction of %r, as no report usage was sent'
%
self
.
logger
.
info
(
'Ignoring destruction of %r, as no report usage was sent'
,
computer_partition
.
getId
())
computer_partition
.
getId
())
continue
continue
local_partition
.
destroy
()
local_partition
.
destroy
()
except
(
SystemExit
,
KeyboardInterrupt
):
except
(
SystemExit
,
KeyboardInterrupt
):
...
@@ -1068,12 +1069,13 @@ class Slapgrid(object):
...
@@ -1068,12 +1069,13 @@ class Slapgrid(object):
computer_partition
.
destroyed
()
computer_partition
.
destroyed
()
except
NotFoundError
:
except
NotFoundError
:
self
.
logger
.
debug
(
'Ignored slap error while trying to inform about '
self
.
logger
.
debug
(
'Ignored slap error while trying to inform about '
'destroying not fully configured Computer Partition %r'
%
'destroying not fully configured Computer Partition %r'
,
computer_partition
.
getId
())
computer_partition
.
getId
())
except
ServerError
as
server_error
:
except
ServerError
as
server_error
:
self
.
logger
.
debug
(
'Ignored server error while trying to inform about '
self
.
logger
.
debug
(
'Ignored server error while trying to inform about '
'destroying Computer Partition %r. Error is:
\
n
%r'
%
'destroying Computer Partition %r. Error is:
\
n
%r'
,
(
computer_partition
.
getId
(),
server_error
.
args
[
0
]))
computer_partition
.
getId
(),
server_error
.
args
[
0
])
self
.
logger
.
info
(
'Finished usage reports.'
)
self
.
logger
.
info
(
'Finished usage reports.'
)
...
...
slapos/grid/svcbackend.py
View file @
f03386a3
...
@@ -92,7 +92,7 @@ def launchSupervisord(socket, configuration_file, logger):
...
@@ -92,7 +92,7 @@ def launchSupervisord(socket, configuration_file, logger):
result
=
supervisord_popen
.
communicate
()[
0
]
result
=
supervisord_popen
.
communicate
()[
0
]
if
supervisord_popen
.
returncode
:
if
supervisord_popen
.
returncode
:
logger
.
warning
(
'Supervisord unknown problem: %s'
%
result
)
logger
.
warning
(
'Supervisord unknown problem: %s'
,
result
)
return
return
try
:
try
:
...
@@ -107,13 +107,13 @@ def launchSupervisord(socket, configuration_file, logger):
...
@@ -107,13 +107,13 @@ def launchSupervisord(socket, configuration_file, logger):
if
status
[
'statename'
]
==
'RUNNING'
and
status
[
'statecode'
]
==
1
:
if
status
[
'statename'
]
==
'RUNNING'
and
status
[
'statecode'
]
==
1
:
return
return
logger
.
warning
(
'Wrong status name %(statename)r and code '
logger
.
warning
(
'Wrong status name %(statename)r and code '
'%(statecode)r, trying again'
%
status
)
'%(statecode)r, trying again'
,
status
)
trynum
+=
1
trynum
+=
1
except
Exception
:
except
Exception
:
current_timeout
=
5
*
trynum
current_timeout
=
5
*
trynum
trynum
+=
1
trynum
+=
1
else
:
else
:
logger
.
info
(
'Supervisord started correctly in try %s.'
%
trynum
)
logger
.
info
(
'Supervisord started correctly in try %s.'
,
trynum
)
return
return
logger
.
warning
(
'Issue while checking supervisord.'
)
logger
.
warning
(
'Issue while checking supervisord.'
)
finally
:
finally
:
...
...
slapos/grid/utils.py
View file @
f03386a3
...
@@ -130,8 +130,8 @@ def getCleanEnvironment(logger, home_path='/tmp'):
...
@@ -130,8 +130,8 @@ def getCleanEnvironment(logger, home_path='/tmp'):
removed_env
.
append
(
k
)
removed_env
.
append
(
k
)
changed_env
[
'HOME'
]
=
env
[
'HOME'
]
=
home_path
changed_env
[
'HOME'
]
=
env
[
'HOME'
]
=
home_path
for
k
in
sorted
(
changed_env
.
iterkeys
()):
for
k
in
sorted
(
changed_env
.
iterkeys
()):
logger
.
debug
(
'Overridden %s = %r'
%
(
k
,
changed_env
[
k
])
)
logger
.
debug
(
'Overridden %s = %r'
,
k
,
changed_env
[
k
]
)
logger
.
debug
(
'Removed from environment: %s'
%
', '
.
join
(
sorted
(
removed_env
)))
logger
.
debug
(
'Removed from environment: %s'
,
', '
.
join
(
sorted
(
removed_env
)))
return
env
return
env
...
@@ -146,9 +146,9 @@ def setRunning(logger, pidfile):
...
@@ -146,9 +146,9 @@ def setRunning(logger, pidfile):
# XXX This could use psutil library.
# XXX This could use psutil library.
if
pid
and
os
.
path
.
exists
(
"/proc/%s"
%
pid
):
if
pid
and
os
.
path
.
exists
(
"/proc/%s"
%
pid
):
logger
.
info
(
'New slapos process started, but another slapos '
logger
.
info
(
'New slapos process started, but another slapos '
'process is aleady running with pid %s, exiting.'
%
pid
)
'process is aleady running with pid %s, exiting.'
,
pid
)
sys
.
exit
(
10
)
sys
.
exit
(
10
)
logger
.
info
(
'Existing pid file %r was stale, overwritten'
%
pidfile
)
logger
.
info
(
'Existing pid file %r was stale, overwritten'
,
pidfile
)
# Start new process
# Start new process
write_pid
(
logger
,
pidfile
)
write_pid
(
logger
,
pidfile
)
...
@@ -165,7 +165,7 @@ def write_pid(logger, pidfile):
...
@@ -165,7 +165,7 @@ def write_pid(logger, pidfile):
with
open
(
pidfile
,
'w'
)
as
fout
:
with
open
(
pidfile
,
'w'
)
as
fout
:
fout
.
write
(
'%s'
%
os
.
getpid
())
fout
.
write
(
'%s'
%
os
.
getpid
())
except
(
IOError
,
OSError
):
except
(
IOError
,
OSError
):
logger
.
critical
(
'slapgrid could not write pidfile %s'
%
pidfile
)
logger
.
critical
(
'slapgrid could not write pidfile %s'
,
pidfile
)
raise
raise
...
@@ -185,7 +185,7 @@ def dropPrivileges(uid, gid, logger):
...
@@ -185,7 +185,7 @@ def dropPrivileges(uid, gid, logger):
'gid = %r is too dangerous'
%
(
uid
,
gid
))
'gid = %r is too dangerous'
%
(
uid
,
gid
))
if
current_uid
or
current_gid
:
if
current_uid
or
current_gid
:
logger
.
debug
(
'Running as uid = %r, gid = %r, dropping '
logger
.
debug
(
'Running as uid = %r, gid = %r, dropping '
'not needed and not possible'
%
(
current_uid
,
current_gid
)
)
'not needed and not possible'
,
current_uid
,
current_gid
)
return
return
# drop privileges
# drop privileges
user_name
=
pwd
.
getpwuid
(
uid
)[
0
]
user_name
=
pwd
.
getpwuid
(
uid
)[
0
]
...
@@ -224,7 +224,7 @@ def dropPrivileges(uid, gid, logger):
...
@@ -224,7 +224,7 @@ def dropPrivileges(uid, gid, logger):
else
:
else
:
raise
ValueError
(
'%s it was possible to go back to uid = %r and gid = '
raise
ValueError
(
'%s it was possible to go back to uid = %r and gid = '
'%r which is fatal.'
%
(
message_pre
,
current_uid
,
current_gid
))
'%r which is fatal.'
%
(
message_pre
,
current_uid
,
current_gid
))
logger
.
debug
(
'Succesfully dropped privileges to uid=%r gid=%r'
%
(
uid
,
gid
)
)
logger
.
debug
(
'Succesfully dropped privileges to uid=%r gid=%r'
,
uid
,
gid
)
def
bootstrapBuildout
(
path
,
logger
,
buildout
=
None
,
def
bootstrapBuildout
(
path
,
logger
,
buildout
=
None
,
...
@@ -245,7 +245,7 @@ def bootstrapBuildout(path, logger, buildout=None,
...
@@ -245,7 +245,7 @@ def bootstrapBuildout(path, logger, buildout=None,
__import__
(
'zc.buildout'
)
__import__
(
'zc.buildout'
)
except
ImportError
:
except
ImportError
:
logger
.
warning
(
'Using old style bootstrap of included bootstrap file. '
logger
.
warning
(
'Using old style bootstrap of included bootstrap file. '
'Consider having zc.buildout available in search path.'
)
'Consider having zc.buildout available in search path.'
)
invocation_list
.
append
(
pkg_resources
.
resource_filename
(
__name__
,
invocation_list
.
append
(
pkg_resources
.
resource_filename
(
__name__
,
'zc.buildout-bootstap.py'
))
'zc.buildout-bootstap.py'
))
invocation_list
.
extend
(
additional_buildout_parameter_list
)
invocation_list
.
extend
(
additional_buildout_parameter_list
)
...
@@ -260,9 +260,8 @@ def bootstrapBuildout(path, logger, buildout=None,
...
@@ -260,9 +260,8 @@ def bootstrapBuildout(path, logger, buildout=None,
invocation_list
.
append
(
'bootstrap'
)
invocation_list
.
append
(
'bootstrap'
)
try
:
try
:
umask
=
os
.
umask
(
SAFE_UMASK
)
umask
=
os
.
umask
(
SAFE_UMASK
)
logger
.
debug
(
'Set umask from %03o to %03o'
%
(
umask
,
SAFE_UMASK
))
logger
.
debug
(
'Set umask from %03o to %03o'
,
umask
,
SAFE_UMASK
)
logger
.
debug
(
'Invoking: %r in directory %r'
%
(
' '
.
join
(
invocation_list
),
logger
.
debug
(
'Invoking: %r in directory %r'
,
' '
.
join
(
invocation_list
),
path
)
path
))
process_handler
=
SlapPopen
(
invocation_list
,
process_handler
=
SlapPopen
(
invocation_list
,
preexec_fn
=
lambda
:
dropPrivileges
(
uid
,
gid
,
logger
=
logger
),
preexec_fn
=
lambda
:
dropPrivileges
(
uid
,
gid
,
logger
=
logger
),
cwd
=
path
,
cwd
=
path
,
...
@@ -274,11 +273,11 @@ def bootstrapBuildout(path, logger, buildout=None,
...
@@ -274,11 +273,11 @@ def bootstrapBuildout(path, logger, buildout=None,
logger
.
error
(
message
)
logger
.
error
(
message
)
raise
BuildoutFailedError
(
'%s:
\
n
%s
\
n
'
%
(
message
,
process_handler
.
output
))
raise
BuildoutFailedError
(
'%s:
\
n
%s
\
n
'
%
(
message
,
process_handler
.
output
))
except
OSError
as
exc
:
except
OSError
as
exc
:
logger
.
exception
(
exc
)
logger
.
exception
(
''
)
raise
BuildoutFailedError
(
exc
)
raise
BuildoutFailedError
(
exc
)
finally
:
finally
:
old_umask
=
os
.
umask
(
umask
)
old_umask
=
os
.
umask
(
umask
)
logger
.
debug
(
'Restore umask from %03o to %03o'
%
(
old_umask
,
umask
)
)
logger
.
debug
(
'Restore umask from %03o to %03o'
,
old_umask
,
umask
)
def
launchBuildout
(
path
,
buildout_binary
,
logger
,
def
launchBuildout
(
path
,
buildout_binary
,
logger
,
...
@@ -302,9 +301,8 @@ def launchBuildout(path, buildout_binary, logger,
...
@@ -302,9 +301,8 @@ def launchBuildout(path, buildout_binary, logger,
invocation_list
.
extend
(
additional_buildout_parameter_list
)
invocation_list
.
extend
(
additional_buildout_parameter_list
)
try
:
try
:
umask
=
os
.
umask
(
SAFE_UMASK
)
umask
=
os
.
umask
(
SAFE_UMASK
)
logger
.
debug
(
'Set umask from %03o to %03o'
%
(
umask
,
SAFE_UMASK
))
logger
.
debug
(
'Set umask from %03o to %03o'
,
umask
,
SAFE_UMASK
)
logger
.
debug
(
'Invoking: %r in directory %r'
%
(
' '
.
join
(
invocation_list
),
logger
.
debug
(
'Invoking: %r in directory %r'
,
' '
.
join
(
invocation_list
),
path
)
path
))
process_handler
=
SlapPopen
(
invocation_list
,
process_handler
=
SlapPopen
(
invocation_list
,
preexec_fn
=
lambda
:
dropPrivileges
(
uid
,
gid
,
logger
=
logger
),
preexec_fn
=
lambda
:
dropPrivileges
(
uid
,
gid
,
logger
=
logger
),
cwd
=
path
,
cwd
=
path
,
...
@@ -318,11 +316,11 @@ def launchBuildout(path, buildout_binary, logger,
...
@@ -318,11 +316,11 @@ def launchBuildout(path, buildout_binary, logger,
logger
.
error
(
message
)
logger
.
error
(
message
)
raise
BuildoutFailedError
(
'%s:
\
n
%s
\
n
'
%
(
message
,
process_handler
.
output
))
raise
BuildoutFailedError
(
'%s:
\
n
%s
\
n
'
%
(
message
,
process_handler
.
output
))
except
OSError
as
exc
:
except
OSError
as
exc
:
logger
.
exception
(
exc
)
logger
.
exception
(
''
)
raise
BuildoutFailedError
(
exc
)
raise
BuildoutFailedError
(
exc
)
finally
:
finally
:
old_umask
=
os
.
umask
(
umask
)
old_umask
=
os
.
umask
(
umask
)
logger
.
debug
(
'Restore umask from %03o to %03o'
%
(
old_umask
,
umask
)
)
logger
.
debug
(
'Restore umask from %03o to %03o'
,
old_umask
,
umask
)
def
updateFile
(
file_path
,
content
,
mode
=
0o600
):
def
updateFile
(
file_path
,
content
,
mode
=
0o600
):
...
...
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