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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
slapos
Commits
37cb0fff
Commit
37cb0fff
authored
Sep 17, 2021
by
Julien Muchembled
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kvm: small cleanup before further changes about iso image path
parent
840f25fb
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
52 deletions
+38
-52
software/kvm/buildout.hash.cfg
software/kvm/buildout.hash.cfg
+1
-1
software/kvm/instance.cfg.in
software/kvm/instance.cfg.in
+1
-1
software/kvm/test/test.py
software/kvm/test/test.py
+36
-50
No files found.
software/kvm/buildout.hash.cfg
View file @
37cb0fff
...
...
@@ -15,7 +15,7 @@
[template]
filename = instance.cfg.in
md5sum = 0d
34ff81779115bf899f7bc752877b70
md5sum = 0d
9d24ef59248da8fa47535f54b83ba8
[template-kvm]
filename = instance-kvm.cfg.jinja2
...
...
software/kvm/instance.cfg.in
View file @
37cb0fff
...
...
@@ -82,7 +82,7 @@ extra-context =
raw dash_executable_location ${dash:location}/bin/dash
raw dnsresolver_executable ${buildout:bin-directory}/dnsresolver
raw dcron_executable_location ${dcron:location}/sbin/crond
raw debian_amd64_netinst_location ${debian-amd64-netinst.iso:
location}/${debian-amd64-netinst.iso:filename
}
raw debian_amd64_netinst_location ${debian-amd64-netinst.iso:
target
}
raw whitelist_domains_default ${whitelist-domains-default:location}/${whitelist-domains-default:filename}
raw whitelist_firewall_download_controller ${whitelist-firewall-download-controller:target}
raw image_download_controller ${image-download-controller:target}
...
...
software/kvm/test/test.py
View file @
37cb0fff
...
...
@@ -31,10 +31,12 @@ import os
import
glob
import
hashlib
import
psutil
import
re
import
requests
import
six
import
slapos.util
import
sqlite3
import
stat
from
six.moves.urllib.parse
import
parse_qs
,
urlparse
import
unittest
import
subprocess
...
...
@@ -812,6 +814,28 @@ class TestBootImageUrlList(InstanceTestCase, FakeImageServerMixin):
self
.
stopImageHttpServer
()
super
(
InstanceTestCase
,
self
).
tearDown
()
def
getRunningImageList
(
self
,
kvm_instance_partition
,
_match_cdrom
=
re
.
compile
(
'file=(.+),media=cdrom$'
).
match
,
):
with
self
.
slap
.
instance_supervisor_rpc
as
instance_supervisor
:
kvm_pid
=
next
(
q
for
q
in
instance_supervisor
.
getAllProcessInfo
()
if
'kvm-'
in
q
[
'name'
])[
'pid'
]
software_root
=
os
.
path
.
join
(
self
.
slap
.
software_directory
,
hashlib
.
md5
(
self
.
getSoftwareURL
().
encode
()).
hexdigest
())
image_list
=
[]
for
entry
in
psutil
.
Process
(
kvm_pid
).
cmdline
():
m
=
_match_cdrom
(
entry
)
if
m
:
path
=
m
.
group
(
1
)
st
=
os
.
stat
(
path
)
if
stat
.
S_ISREG
(
st
.
st_mode
)
and
st
.
st_size
:
image_list
.
append
(
path
.
replace
(
kvm_instance_partition
,
'${inst}'
)
.
replace
(
software_root
,
'${soft}'
)
)
return
image_list
def
test
(
self
):
partition_parameter_kw
=
{
self
.
key
:
self
.
test_input
%
(
...
...
@@ -843,23 +867,6 @@ class TestBootImageUrlList(InstanceTestCase, FakeImageServerMixin):
self
.
assertTrue
(
os
.
path
.
islink
(
image2_link
))
self
.
assertEqual
(
os
.
readlink
(
image2_link
),
image2
)
def
getRunningImageList
():
running_image_list
=
[]
with
self
.
slap
.
instance_supervisor_rpc
as
instance_supervisor
:
kvm_pid
=
[
q
for
q
in
instance_supervisor
.
getAllProcessInfo
()
if
'kvm-'
in
q
[
'name'
]][
0
][
'pid'
]
kvm_process
=
psutil
.
Process
(
kvm_pid
)
software_root
=
'/'
.
join
([
self
.
slap
.
software_directory
,
hashlib
.
md5
(
self
.
getSoftwareURL
().
encode
(
'utf-8'
)).
hexdigest
()])
for
entry
in
kvm_process
.
cmdline
():
if
entry
.
startswith
(
'file'
)
and
'media=cdrom'
in
entry
:
# do cleanups
entry
=
entry
.
replace
(
software_root
,
''
)
entry
=
entry
.
replace
(
kvm_instance_partition
,
''
)
running_image_list
.
append
(
entry
)
return
running_image_list
# mimic the requirement: restart the instance by requesting it stopped and
# then started started, like user have to do it
self
.
rerequestInstance
(
partition_parameter_kw
,
state
=
'stopped'
)
...
...
@@ -869,12 +876,11 @@ class TestBootImageUrlList(InstanceTestCase, FakeImageServerMixin):
self
.
assertEqual
(
[
'file=/srv/%s/image_001,media=cdrom'
%
(
self
.
image_directory
,),
'file=/srv/%s/image_002,media=cdrom'
%
(
self
.
image_directory
,),
'file=/parts/debian-amd64-netinst.iso/debian-amd64-netinst.iso,'
'media=cdrom'
'${inst}/srv/%s/image_001'
%
self
.
image_directory
,
'${inst}/srv/%s/image_002'
%
self
.
image_directory
,
'${soft}/parts/debian-amd64-netinst.iso/debian-amd64-netinst.iso'
,
],
getRunningImageList
(
)
self
.
getRunningImageList
(
kvm_instance_partition
)
)
# cleanup of images works, also asserts that configuration changes are
...
...
@@ -896,9 +902,8 @@ class TestBootImageUrlList(InstanceTestCase, FakeImageServerMixin):
# again only default image is available in the running process
self
.
assertEqual
(
[
'file=/parts/debian-amd64-netinst.iso/debian-amd64-netinst.iso,'
'media=cdrom'
],
getRunningImageList
()
[
'${soft}/parts/debian-amd64-netinst.iso/debian-amd64-netinst.iso'
],
self
.
getRunningImageList
(
kvm_instance_partition
)
)
def
assertPromiseFails
(
self
,
promise
):
...
...
@@ -1032,23 +1037,6 @@ class TestBootImageUrlSelect(TestBootImageUrlList):
kvm_instance_partition
=
os
.
path
.
join
(
self
.
slap
.
instance_directory
,
self
.
kvm_instance_partition_reference
)
def
getRunningImageList
():
running_image_list
=
[]
with
self
.
slap
.
instance_supervisor_rpc
as
instance_supervisor
:
kvm_pid
=
[
q
for
q
in
instance_supervisor
.
getAllProcessInfo
()
if
'kvm-'
in
q
[
'name'
]][
0
][
'pid'
]
kvm_process
=
psutil
.
Process
(
kvm_pid
)
software_root
=
'/'
.
join
([
self
.
slap
.
software_directory
,
hashlib
.
md5
(
self
.
getSoftwareURL
().
encode
(
'utf-8'
)).
hexdigest
()])
for
entry
in
kvm_process
.
cmdline
():
if
entry
.
startswith
(
'file'
)
and
'media=cdrom'
in
entry
:
# do cleanups
entry
=
entry
.
replace
(
software_root
,
''
)
entry
=
entry
.
replace
(
kvm_instance_partition
,
''
)
running_image_list
.
append
(
entry
)
return
running_image_list
# mimic the requirement: restart the instance by requesting it stopped and
# then started started, like user have to do it
self
.
rerequestInstance
(
partition_parameter_kw
,
state
=
'stopped'
)
...
...
@@ -1058,12 +1046,11 @@ class TestBootImageUrlSelect(TestBootImageUrlList):
self
.
assertEqual
(
[
'file=/srv/boot-image-url-select-repository/image_001,media=cdrom'
,
'file=/srv/boot-image-url-list-repository/image_001,media=cdrom'
,
'file=/parts/debian-amd64-netinst.iso/debian-amd64-netinst.iso,'
'media=cdrom'
'${inst}/srv/boot-image-url-select-repository/image_001'
,
'${inst}/srv/boot-image-url-list-repository/image_001'
,
'${soft}/parts/debian-amd64-netinst.iso/debian-amd64-netinst.iso'
,
],
getRunningImageList
(
)
self
.
getRunningImageList
(
kvm_instance_partition
)
)
# cleanup of images works, also asserts that configuration changes are
...
...
@@ -1100,9 +1087,8 @@ class TestBootImageUrlSelect(TestBootImageUrlList):
# again only default image is available in the running process
self
.
assertEqual
(
[
'file=/parts/debian-amd64-netinst.iso/debian-amd64-netinst.iso,'
'media=cdrom'
],
getRunningImageList
()
[
'${soft}/parts/debian-amd64-netinst.iso/debian-amd64-netinst.iso'
],
self
.
getRunningImageList
(
kvm_instance_partition
)
)
...
...
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