Commit c0794c5f authored by Thomas Gambier's avatar Thomas Gambier 🚴🏼

kvm: NDB server instance is OK even if no image is uploaded

NBD server is not running until an image is uploaded. Make sure that the
promise doesn't fail until the image is there. Also display a WARNING in
the connection parameter to say that the NBD server is not running.
parent aaf60e35
...@@ -47,7 +47,7 @@ md5sum = b617d64de73de1eed518185f310bbc82 ...@@ -47,7 +47,7 @@ md5sum = b617d64de73de1eed518185f310bbc82
[template-nbd] [template-nbd]
filename = instance-nbd.cfg.in filename = instance-nbd.cfg.in
md5sum = c3667c9bbaa8627dad90f1abd62d2f16 md5sum = 70267d09442a7e5a048ebdf06217e21e
[template-ansible-promise] [template-ansible-promise]
filename = template/ansible-promise.in filename = template/ansible-promise.in
......
...@@ -15,6 +15,7 @@ offline = true ...@@ -15,6 +15,7 @@ offline = true
[rootdirectory] [rootdirectory]
recipe = slapos.cookbook:mkdirectory recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
etc = $${buildout:directory}/etc etc = $${buildout:directory}/etc
srv = $${buildout:directory}/srv srv = $${buildout:directory}/srv
log = $${buildout:directory}/log log = $${buildout:directory}/log
...@@ -34,12 +35,18 @@ shell-path = ${dash:location}/bin/dash ...@@ -34,12 +35,18 @@ shell-path = ${dash:location}/bin/dash
# XXX TODO: Wait for the iso to be uploaded (execute_wait) # XXX TODO: Wait for the iso to be uploaded (execute_wait)
path = $${basedirectory:services}/nbdserver path = $${basedirectory:services}/nbdserver
[nbd-checker-bin]
recipe = slapos.recipe.template:jinja2
template = inline:#!/bin/sh
[ ! -f $${onetimeupload-instance:image-path} ] ||
$${buildout:executable} -c 'import socket ; socket.create_connection(("$${nbd-instance:ip}","$${nbd-instance:port}")).close()'
rendered = $${rootdirectory:bin}/check-nbd-running.sh
[nbd-promise] [nbd-promise]
<= monitor-promise-base <= monitor-promise-base
module = check_port_listening module = check_command_execute
name = nbd_promise.py name = nbd_promise.py
config-hostname = $${nbd-instance:ip} config-command = $${nbd-checker-bin:rendered}
config-port = $${nbd-instance:port}
[gen-passwd] [gen-passwd]
recipe = slapos.cookbook:generate.password recipe = slapos.cookbook:generate.password
...@@ -66,6 +73,13 @@ config-port = $${onetimeupload-instance:port} ...@@ -66,6 +73,13 @@ config-port = $${onetimeupload-instance:port}
[publish-connection-information] [publish-connection-information]
recipe = slapos.cookbook:publish recipe = slapos.cookbook:publish
nbd_url = nbd://[$${nbd-instance:ip}]:$${nbd-instance:port} nbd_hostname = $${nbd-instance:ip}
upload_url = http://[$${onetimeupload-instance:ip}]:$${onetimeupload-instance:port}/ nbd_port = $${nbd-instance:port}
upload_url = http://[$${onetimeupload-instance:ip}]:$${onetimeupload-instance:port}
upload_key = $${onetimeupload-instance:key} upload_key = $${onetimeupload-instance:key}
status_message = $${detect-if-cdrom-present:status}
[detect-if-cdrom-present]
recipe = collective.recipe.shelloutput
commands =
status = [ -f $${onetimeupload-instance:image-path} ] && echo "image already uploaded, you can't upload it again" || echo "WARNING: no image yet, the NBD server doesn't work"
...@@ -308,3 +308,22 @@ class TestInstanceResilient(InstanceTestCase): ...@@ -308,3 +308,22 @@ class TestInstanceResilient(InstanceTestCase):
'takeover-kvm-1-password', 'takeover-kvm-1-password',
'takeover-kvm-1-url', 'takeover-kvm-1-url',
'url'])) 'url']))
class TestInstanceNbdServer(InstanceTestCase):
__partition_reference__ = 'ins'
instance_max_retry = 5
@classmethod
def getInstanceSoftwareType(cls):
return 'nbd'
def test(self):
connection_parameter_dict = self.computer_partition\
.getConnectionParameterDict()
result = requests.get(connection_parameter_dict['upload_url'].strip(), verify=False)
self.assertEqual(
httplib.OK,
result.status_code
)
self.assertIn('<title>Upload new File</title>', result.text)
self.assertIn("WARNING", connection_parameter_dict['status_message'])
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment