From f50c4dc4d0b52077232fc04b28dfc7a08d2d54ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20de=20Saint=20Martin?= <cedric.dsm@tiolive.com> Date: Thu, 26 Apr 2012 19:25:17 +0200 Subject: [PATCH] Rework KVM instance to have working frontend Use new recipes in KVM to make instance not raise when no frontend is found, Don't request slave kvm frontend instance on SAME machine, Check if frontend is available using a promise --- software/kvm/instance-kvm.cfg | 32 +++++++++++++++++++++++++------- software/kvm/software.cfg | 4 ++-- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/software/kvm/instance-kvm.cfg b/software/kvm/instance-kvm.cfg index bfd9715ba9..f588342f6b 100644 --- a/software/kvm/instance-kvm.cfg +++ b/software/kvm/instance-kvm.cfg @@ -9,6 +9,7 @@ parts = certificate-authority kvm-promise novnc-promise + frontend-promise publish-kvm-connection-information eggs-directory = ${buildout:eggs-directory} @@ -59,6 +60,7 @@ path = $${basedirectory:promises}/vnc_promise hostname = $${kvm-instance:vnc-ip} port = $${kvm-instance:vnc-port} + [novnc-instance] recipe = slapos.cookbook:novnc path = $${ca-novnc:executable} @@ -104,23 +106,20 @@ path = $${basedirectory:promises}/novnc_promise hostname = $${novnc-instance:ip} port = $${novnc-instance:port} + [kvm-monitor] recipe = slapos.cookbook:generic.slapmonitor db-path = $${rootdirectory:srv}/slapmonitor_database -[request-common] + +[request-slave-frontend] recipe = slapos.cookbook:request software-url = $${slap-connection:software-release-url} -sla = computer_guid -sla-computer_guid = $${slap-connection:computer-id} server-url = $${slap-connection:server-url} key-file = $${slap-connection:key-file} cert-file = $${slap-connection:cert-file} computer-id = $${slap-connection:computer-id} partition-id = $${slap-connection:partition-id} - -[request-slave-frontend] -<=request-common name = SlaveFrontend software-type = frontend slave = true @@ -129,8 +128,27 @@ config-host = $${novnc-instance:ip} config-port = $${novnc-instance:port} return = url resource port domainname +# Will generate, if existing, URL to reach KVM using frontend +[get-slave-connection-url] +recipe = slapos.cookbook:generate_output_if_input_not_null +input-list = + frontend-url request-slave-frontend:connection-url + frontend-port request-slave-frontend:connection-port + frontend-resource request-slave-frontend:connection-resource + frontend-domainname request-slave-frontend:connection-domainname +template = %(frontend-url)s/vnc_auto.html?host=%(frontend-domainname)s&port=%(frontend-port)s&encrypt=1&path=%(frontend-resource)s +# This is default output, if slave is not ready yet +output = Not ready yet. Please use backend URL if possible or wait a few minutes. + +[frontend-promise] +recipe = slapos.cookbook:check_url_available +path = $${basedirectory:promises}/frontend_promise +url = $${get-slave-connection-url:output} +dash_path = ${dash:location}/bin/dash + + [publish-kvm-connection-information] recipe = slapos.cookbook:publish backend_url = https://[$${novnc-instance:ip}]:$${novnc-instance:port}/vnc_auto.html?host=[$${novnc-instance:ip}]&port=$${novnc-instance:port}&encrypt=1 -url = $${request-slave-frontend:connection-url}/vnc_auto.html?host=$${request-slave-frontend:connection-domainname}&port=$${request-slave-frontend:connection-port}&encrypt=1&path=$${request-slave-frontend:connection-resource} +url = $${get-slave-connection-url:output} password = $${kvm-instance:passwd} diff --git a/software/kvm/software.cfg b/software/kvm/software.cfg index 5100d46b33..037c6ab3cd 100644 --- a/software/kvm/software.cfg +++ b/software/kvm/software.cfg @@ -132,7 +132,7 @@ command = [template-kvm] recipe = slapos.recipe.template url = ${:_profile_base_location_}/instance-kvm.cfg -md5sum = b6572c018e44d4676e76805116bcade0 +md5sum = 8d67a6cabe4fbce2bd44aa006a0d0cf8 output = ${buildout:directory}/template-kvm.cfg mode = 0644 @@ -286,4 +286,4 @@ zc.recipe.egg = 1.3.2 # Required by: # slapos.core==0.23 -zope.interface = 3.8.0 \ No newline at end of file +zope.interface = 3.8.0 -- 2.30.9