Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
beat
beat.core
Commits
81e48009
Commit
81e48009
authored
Apr 16, 2018
by
Philip ABBET
Browse files
Merge branch 'list_environment_packages' into '1.6.x'
List environment packages See merge request
!16
parents
78ec5204
f0780463
Pipeline
#19058
passed with stage
in 9 minutes and 57 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
beat/core/dock.py
View file @
81e48009
...
...
@@ -409,7 +409,7 @@ class Host(object):
if
container
.
id
is
not
None
:
self
.
rm
(
container
)
raise
Exception
(
message
)
raise
RuntimeError
(
message
)
logger
.
debug
(
"Container ID: '%s'"
,
container
.
id
)
...
...
beat/core/environments.py
0 → 100644
View file @
81e48009
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
###############################################################################
# #
# Copyright (c) 2018 Idiap Research Institute, http://www.idiap.ch/ #
# Contact: beat.support@idiap.ch #
# #
# This file is part of the beat.core module of the BEAT platform. #
# #
# Commercial License Usage #
# Licensees holding valid commercial BEAT licenses may use this file in #
# accordance with the terms contained in a written agreement between you #
# and Idiap. For further information contact tto@idiap.ch #
# #
# Alternatively, this file may be used under the terms of the GNU Affero #
# Public License version 3 as published by the Free Software and appearing #
# in the file LICENSE.AGPL included in the packaging of this file. #
# The BEAT platform is distributed in the hope that it will be useful, but #
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY #
# or FITNESS FOR A PARTICULAR PURPOSE. #
# #
# You should have received a copy of the GNU Affero Public License along #
# with the BEAT platform. If not, see http://www.gnu.org/licenses/. #
# #
###############################################################################
"""
Helper functions related to environment management
"""
import
re
import
logging
logger
=
logging
.
getLogger
(
__name__
)
def
enumerate_packages
(
host
,
environment_name
):
"""
Enumerate the packages installed in given environment.
"""
packages
=
[]
if
environment_name
not
in
host
.
processing_environments
:
logger
.
error
(
'Environment "{}" not found'
.
format
(
environment_name
))
return
packages
cmd
=
[
"conda"
,
"list"
]
container
=
host
.
create_container
(
environment_name
,
cmd
)
try
:
host
.
start
(
container
)
except
RuntimeError
:
logger
.
exception
(
"Failed to list packages"
)
return
packages
status
=
host
.
wait
(
container
)
if
status
!=
0
:
logger
.
error
(
'Command error: {}'
.
format
(
status
))
return
packages
output
=
host
.
logs
(
container
)
package_lines
=
output
.
split
(
"
\n
"
)
for
package_line
in
package_lines
:
information
=
re
.
split
(
'\s+'
,
package_line
)
if
len
(
information
)
==
4
:
packages
.
append
({
'name'
:
information
[
0
],
'version'
:
information
[
1
]
})
return
packages
beat/core/test/test_environments.py
0 → 100644
View file @
81e48009
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :
###############################################################################
# #
# Copyright (c) 2018 Idiap Research Institute, http://www.idiap.ch/ #
# Contact: beat.support@idiap.ch #
# #
# This file is part of the beat.core module of the BEAT platform. #
# #
# Commercial License Usage #
# Licensees holding valid commercial BEAT licenses may use this file in #
# accordance with the terms contained in a written agreement between you #
# and Idiap. For further information contact tto@idiap.ch #
# #
# Alternatively, this file may be used under the terms of the GNU Affero #
# Public License version 3 as published by the Free Software and appearing #
# in the file LICENSE.AGPL included in the packaging of this file. #
# The BEAT platform is distributed in the hope that it will be useful, but #
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY #
# or FITNESS FOR A PARTICULAR PURPOSE. #
# #
# You should have received a copy of the GNU Affero Public License along #
# with the BEAT platform. If not, see http://www.gnu.org/licenses/. #
# #
###############################################################################
import
unittest
from
..dock
import
Host
from
..
import
environments
from
.utils
import
slow
class
EnvironmentTest
(
unittest
.
TestCase
):
def
setUp
(
self
):
self
.
host
=
Host
(
raise_on_errors
=
False
)
self
.
test_environment
=
\
self
.
host
.
full_environment_name
(
'Cxx development environment'
)
def
tearDown
(
self
):
self
.
host
.
teardown
()
assert
not
self
.
host
.
containers
# All containers are gone
@
slow
def
test_package_enumeration
(
self
):
package_list
=
environments
.
enumerate_packages
(
self
.
host
,
self
.
test_environment
)
self
.
assertTrue
(
len
(
package_list
)
>
0
)
for
package
in
package_list
:
self
.
assertListEqual
(
package
.
keys
(),
[
'version'
,
'name'
])
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