This patch uses escapes when submitting some user supplied values to
condor. This combined with the escapes/whitespace patch to condor
allows whitespace in the instance name and account name to work.
Signed-off-by: Ian Main <imain(a)redhat.com>
---
src/app/util/condormatic.rb | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/app/util/condormatic.rb b/src/app/util/condormatic.rb
index ea18308..74c5a80 100644
--- a/src/app/util/condormatic.rb
+++ b/src/app/util/condormatic.rb
@@ -20,6 +20,11 @@
require 'nokogiri'
require 'socket'
+def escape(str)
+ str = str.gsub('\\', '\\\\')
+ str = str.gsub(' ', '\\ ')
+end
+
def condormatic_instance_create(task)
begin
@@ -39,7 +44,7 @@ def condormatic_instance_create(task)
pipe.puts "executable = #{job_name}\n"
Rails.logger.info "executable = #{job_name}\n"
- resource = "grid_resource = dcloud $$(provider_url) $$(username) $$(password)
$$(image_key) #{instance.name}"
+ resource = "grid_resource = dcloud $$(provider_url) $$(username) $$(password)
$$(image_key) #{escape(instance.name)}"
if realm != nil
resource += " $$(realm_key)"
else
@@ -226,7 +231,7 @@ def condormatic_classads_sync
pipe.puts "username=\"#{account.username}\""
pipe.puts "password=\"#{account.password}\""
pipe.puts "cloud_account_id=\"#{account.id}\""
- pipe.puts "keypair=\"#{account.instance_key.name}\""
+ pipe.puts
"keypair=\"#{escape(account.instance_key.name)}\""
pipe.close_write
out = pipe.read
--
1.7.2.3