Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
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
Justin
slapos
Commits
2f20db4c
Commit
2f20db4c
authored
Oct 06, 2012
by
Alain Takoudjou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update boinc recipe to use a specified python
parent
00c5090c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
41 deletions
+44
-41
slapos/recipe/boinc/__init__.py
slapos/recipe/boinc/__init__.py
+8
-4
slapos/recipe/boinc/configure.py
slapos/recipe/boinc/configure.py
+33
-35
stack/boinc/buildout.cfg
stack/boinc/buildout.cfg
+1
-1
stack/boinc/instance-boinc.cfg
stack/boinc/instance-boinc.cfg
+2
-1
No files found.
slapos/recipe/boinc/__init__.py
View file @
2f20db4c
...
...
@@ -62,6 +62,7 @@ class Recipe(GenericBaseRecipe):
#Get binary path
self
.
svn
=
options
[
'svn-binary'
].
strip
()
self
.
perl
=
options
[
'perl-binary'
].
strip
()
self
.
pythonbin
=
options
[
'python-binary'
].
strip
()
#Apache php informations
self
.
ipv6
=
options
[
'ip'
].
strip
()
...
...
@@ -69,7 +70,6 @@ class Recipe(GenericBaseRecipe):
self
.
htpasswd
=
options
[
'htpasswd'
].
strip
()
self
.
phpini
=
options
[
'php-ini'
].
strip
()
self
.
phpbin
=
options
[
'php-bin'
].
strip
()
self
.
wrapperphp
=
options
[
'php-wrapper'
].
strip
()
#get Mysql parameters
self
.
username
=
options
[
'mysql-username'
].
strip
()
...
...
@@ -103,7 +103,10 @@ class Recipe(GenericBaseRecipe):
slapuser
=
self
.
options
[
'user'
]
#Define environment variable here
python
=
os
.
path
.
join
(
self
.
home
,
'bin/python'
)
python_path
=
self
.
boinc_egg
+
":"
+
os
.
environ
[
'PYTHONPATH'
]
if
not
os
.
path
.
exists
(
python
):
os
.
symlink
(
self
.
pythonbin
,
python
)
for
f
in
os
.
listdir
(
self
.
developegg
):
dir
=
os
.
path
.
join
(
self
.
developegg
,
f
)
if
os
.
path
.
isdir
(
dir
):
...
...
@@ -115,13 +118,14 @@ class Recipe(GenericBaseRecipe):
)
#Generate wrapper for php
php_wrapper
=
self
.
createPythonScript
(
self
.
wrapperphp
,
wrapperphp
=
os
.
path
.
join
(
self
.
home
,
'bin/php'
)
php_wrapper
=
self
.
createPythonScript
(
wrapperphp
,
'slapos.recipe.librecipe.execute.executee'
,
([
self
.
phpbin
,
'-c'
,
self
.
phpini
],
os
.
environ
)
)
path_list
.
append
(
php_wrapper
)
#Generate python script for MySQL database
marker
(starting)
#Generate python script for MySQL database
test
(starting)
file_status
=
os
.
path
.
join
(
self
.
home
,
'.boinc_config'
)
if
os
.
path
.
exists
(
file_status
):
os
.
unlink
(
file_status
)
...
...
@@ -185,7 +189,7 @@ class Recipe(GenericBaseRecipe):
installroot
=
self
.
installroot
,
drop_install
=
drop_install
,
mysql_port
=
self
.
mysqlport
,
mysql_host
=
self
.
mysqlhost
,
mysql_user
=
self
.
username
,
mysql_password
=
self
.
password
,
database
=
self
.
database
,
python_path
=
python_path
)
database
=
self
.
database
,
PATH
=
environment
[
'PATH'
]
)
start_wrapper
=
self
.
createPythonScript
(
os
.
path
.
join
(
self
.
wrapperdir
,
'start_boinc'
),
'%s.configure.restart_boinc'
%
__name__
,
...
...
slapos/recipe/boinc/configure.py
View file @
2f20db4c
...
...
@@ -73,23 +73,15 @@ def services(args):
topath
=
os
.
path
.
join
(
args
[
'installroot'
],
'html/ops/.htpasswd'
)
print
"Generating .htpasswd file... File=%s"
%
topath
passwd
=
open
(
args
[
'passwd'
],
'r'
).
read
()
p_htpasswd
=
subprocess
.
Popen
([
args
[
'htpasswd'
],
'-b'
,
'-c'
,
topath
,
args
[
'username'
],
passwd
],
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
)
result
=
p_htpasswd
.
communicate
()[
0
]
if
p_htpasswd
.
returncode
is
None
or
p_htpasswd
.
returncode
!=
0
:
print
"Failed to create file %s.
\
n
The error was: %s"
%
(
topath
,
result
)
htpwd_args
=
[
args
[
'htpasswd'
],
'-b'
,
'-c'
,
topath
,
args
[
'username'
],
passwd
]
if
not
startProcess
(
htpwd_args
):
return
print
"Running xadd script..."
env
=
os
.
environ
env
[
'PATH'
]
=
args
[
'environment'
][
'PATH'
]
env
[
'PYTHONPATH'
]
=
args
[
'environment'
][
'PYTHONPATH'
]
p_xadd
=
subprocess
.
Popen
([
args
[
'xadd'
]],
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
,
env
=
env
)
result
=
p_xadd
.
communicate
()[
0
]
if
p_xadd
.
returncode
is
None
or
p_xadd
.
returncode
!=
0
:
print
"Failed to execute bin/xadd.
\
n
The error was: %s"
%
result
if
not
startProcess
([
args
[
'xadd'
]],
env
):
return
print
"Update files and directories permissions..."
upload
=
os
.
path
.
join
(
args
[
'installroot'
],
'upload'
)
...
...
@@ -115,12 +107,8 @@ def services(args):
#Execute php create_forum.php...
print
"Boinc Forum: Execute php create_forum.php..."
p_forum
=
subprocess
.
Popen
([
"php"
,
forum_file
],
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
,
env
=
env
,
cwd
=
os
.
path
.
join
(
args
[
'installroot'
],
'html/ops'
))
result
=
p_forum
.
communicate
()[
0
]
if
p_forum
.
returncode
is
None
or
p_forum
.
returncode
!=
0
:
print
"Failed to execute bin/xadd.
\
n
The error was: %s"
%
result
cwd
=
os
.
path
.
join
(
args
[
'installroot'
],
'html/ops'
)
if
not
startProcess
([
"php"
,
forum_file
],
env
,
cwd
):
return
status
=
open
(
args
[
'service_status'
],
"w"
)
...
...
@@ -140,15 +128,18 @@ def restart_boinc(args):
else
:
checkMysql
(
args
)
print
"Restart Boinc..."
os
.
environ
[
'PATH'
]
=
args
[
'PATH'
]
binstart
=
os
.
path
.
join
(
args
[
'installroot'
],
'bin/start'
)
binstop
=
os
.
path
.
join
(
args
[
'installroot'
],
'bin/stop'
)
# startProcess([binstart], env)
# startProcess([binstop], env)
os
.
system
(
binstop
)
os
.
system
(
binstart
)
print
"Done."
def
deployApp
(
args
):
print
"Cheking if needed to install %s..."
%
args
[
'appname'
]
if
os
.
path
.
exists
(
os
.
path
.
join
(
args
[
'installroot'
],
"."
+
args
[
'appname'
])):
if
os
.
path
.
exists
(
os
.
path
.
join
(
args
[
'installroot'
],
"."
+
args
[
'appname'
])):
print
args
[
'appname'
]
+
" is already installed in this Boinc instance... skipped"
return
#Sleep until file .start_service exist (Mark the end of boinc configuration)
...
...
@@ -169,6 +160,8 @@ def deployApp(args):
base_app
=
os
.
path
.
join
(
args
[
'installroot'
],
'apps'
,
args
[
'appname'
])
base_app_version
=
os
.
path
.
join
(
base_app
,
args
[
'version'
])
args
[
'templates'
]
=
os
.
path
.
join
(
args
[
'installroot'
],
'templates'
)
t_result
=
os
.
path
.
join
(
args
[
'templates'
],
args
[
'appname'
]
+
'_result'
)
t_wu
=
os
.
path
.
join
(
args
[
'templates'
],
args
[
'appname'
]
+
'_wu'
)
if
not
os
.
path
.
exists
(
base_app
):
os
.
mkdir
(
base_app
)
if
os
.
path
.
exists
(
base_app_version
):
...
...
@@ -177,11 +170,15 @@ def deployApp(args):
os
.
mkdir
(
args
[
'application'
])
if
not
os
.
path
.
exists
(
args
[
'templates'
]):
os
.
mkdir
(
args
[
'templates'
])
shutil
.
copy
(
args
[
't_result'
],
os
.
path
.
join
(
args
[
'templates'
],
args
[
'appname'
]
+
'_result'
))
shutil
.
copy
(
args
[
't_wu'
],
os
.
path
.
join
(
args
[
'templates'
],
args
[
'appname'
]
+
'_wu'
))
os
.
symlink
(
args
[
't_input'
],
args
[
'inputfile'
])
else
:
if
os
.
path
.
exists
(
t_result
):
os
.
unlink
(
t_result
)
if
os
.
path
.
exists
(
t_result
):
os
.
unlink
(
t_wu
)
shutil
.
copy
(
args
[
't_result'
],
t_result
)
shutil
.
copy
(
args
[
't_wu'
],
t_wu
)
if
not
os
.
path
.
exists
(
args
[
'inputfile'
]):
os
.
symlink
(
args
[
't_input'
],
args
[
'inputfile'
])
shutil
.
copy
(
args
[
'binary'
],
os
.
path
.
join
(
args
[
'application'
],
args
[
'binary_name'
]))
...
...
@@ -190,20 +187,13 @@ def deployApp(args):
project_xml
=
os
.
path
.
join
(
args
[
'installroot'
],
'project.xml'
)
config_xml
=
os
.
path
.
join
(
args
[
'installroot'
],
'config.xml'
)
sed_args
=
[
args
[
'bash'
],
args
[
'appname'
],
args
[
'installroot'
]]
sed
=
subprocess
.
Popen
(
sed_args
,
stderr
=
subprocess
.
STDOUT
,
stdout
=
subprocess
.
PIPE
)
result
=
sed
.
communicate
()[
0
]
print
result
startProcess
(
sed_args
)
print
"Running xadd script..."
env
=
os
.
environ
env
[
'PATH'
]
=
args
[
'environment'
][
'PATH'
]
env
[
'PYTHONPATH'
]
=
args
[
'environment'
][
'PYTHONPATH'
]
p_xadd
=
subprocess
.
Popen
([
os
.
path
.
join
(
args
[
'installroot'
],
'bin/xadd'
)],
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
,
env
=
env
)
result
=
p_xadd
.
communicate
()[
0
]
if
p_xadd
.
returncode
is
None
or
p_xadd
.
returncode
!=
0
:
print
"Failed to execute bin/xadd.
\
n
The error was: %s"
%
result
if
not
startProcess
([
os
.
path
.
join
(
args
[
'installroot'
],
'bin/xadd'
)],
env
):
return
print
"Sign the application binary..."
...
...
@@ -237,6 +227,7 @@ def deployApp(args):
print
"Restart Boinc..."
binstart
=
os
.
path
.
join
(
args
[
'installroot'
],
'bin/start'
)
binstop
=
os
.
path
.
join
(
args
[
'installroot'
],
'bin/stop'
)
sys
.
environ
=
env
os
.
system
(
binstop
)
os
.
system
(
binstart
)
...
...
@@ -255,9 +246,16 @@ def create_wu(args, env):
for
i
in
range
(
count
):
print
"Creating project wroker %s..."
%
str
(
i
+
1
)
launch_args
[
4
]
=
args
[
'wu_name'
]
+
str
(
i
+
1
)
process
=
subprocess
.
Popen
(
launch_args
,
stdout
=
subprocess
.
PIPE
,
startProcess
(
launch_args
,
env
,
args
[
'installroot'
])
def
startProcess
(
launch_args
,
env
=
None
,
cwd
=
None
):
process
=
subprocess
.
Popen
(
launch_args
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
STDOUT
,
env
=
env
,
cwd
=
args
[
'installroot'
])
process
.
communicate
()[
0
]
cwd
=
cwd
)
result
=
process
.
communicate
()[
0
]
if
process
.
returncode
is
None
or
process
.
returncode
!=
0
:
print
"Failed to execute executable.
\
n
The error was: %s"
%
result
return
False
return
True
\ No newline at end of file
stack/boinc/buildout.cfg
View file @
2f20db4c
...
...
@@ -41,7 +41,7 @@ eggs =
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-boinc.cfg
output = ${buildout:directory}/template-boinc.cfg
md5sum =
bf1cafe595dbf694a92dfcc78743b29d
md5sum =
2ab17fad66dd07677367fcb7283d55e5
mode = 0644
#Template for deploying MySQL Database Server
...
...
stack/boinc/instance-boinc.cfg
View file @
2f20db4c
...
...
@@ -134,7 +134,7 @@ project = $${slap-parameter:project}
installroot = $${rootdirectory:project}/$${slap-parameter:project}
[environment]
PATH =
%(PATH)s:$${rootdirectory:bin}:${subversion:location}/bin:${perl:location}/bin
PATH =
$${rootdirectory:bin}:${subversion:location}/bin:${perl:location}/bin:%(PATH)s
# Deploy Apache + PHP application
[apache-php]
...
...
@@ -193,6 +193,7 @@ develop-egg = ${buildout:develop-eggs-directory}
#Other binary path
svn-binary = ${subversion:location}/bin
perl-binary = ${perl:location}/bin
python-binary = ${buildout:executable}
#Apache and php
ip = $${apache-php:ip}
...
...
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