From 8be357b77bd0bf55c61541f65e2728edaffa7998 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Sat, 30 Jul 2016 19:46:16 +0200 Subject: [PATCH] onion classes updates from tor: support direct onion services also --- modules/onion/manifests/balance.pp | 2 +- modules/onion/manifests/service.pp | 11 ++++++++++- .../parser/functions/onion_global_service_hostname.rb | 5 ++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/modules/onion/manifests/balance.pp b/modules/onion/manifests/balance.pp index 4019e2665..06ada88fc 100644 --- a/modules/onion/manifests/balance.pp +++ b/modules/onion/manifests/balance.pp @@ -32,7 +32,7 @@ class onion::balance { @@concat::fragment { "onion::balance::onionbalance-services.yaml": target => "/srv/puppet.debian.org/puppet-facts/onionbalance-services.yaml", - content => $onion_balance_service_hostname, + content => "${onion_balance_service_hostname}\n", tag => "onionbalance-services.yaml", } } diff --git a/modules/onion/manifests/service.pp b/modules/onion/manifests/service.pp index c8ea548e8..c7f08dd94 100644 --- a/modules/onion/manifests/service.pp +++ b/modules/onion/manifests/service.pp @@ -2,7 +2,8 @@ define onion::service ( $port, $target_address, $target_port, - $ensure = present + $ensure = present, + $direct = false ) { if ($ensure == "ifstatic") { $my_ensure = has_static_component($name) ? { @@ -31,6 +32,14 @@ define onion::service ( order => "50-${name}-20", tag => "onion::balance::$name", } + + if ($direct) { + @@concat::fragment { "onion::balance::onionbalance-services.yaml::${name}": + target => "/srv/puppet.torproject.org/puppet-facts/onionbalance-services.yaml", + content => "{\"${name}\": \"${onion_hn}\"}\n", + tag => "onionbalance-services.yaml", + } + } } } } diff --git a/modules/puppetmaster/lib/puppet/parser/functions/onion_global_service_hostname.rb b/modules/puppetmaster/lib/puppet/parser/functions/onion_global_service_hostname.rb index dce774056..41e160d4f 100644 --- a/modules/puppetmaster/lib/puppet/parser/functions/onion_global_service_hostname.rb +++ b/modules/puppetmaster/lib/puppet/parser/functions/onion_global_service_hostname.rb @@ -14,7 +14,10 @@ module Puppet::Parser::Functions facts = IO.read(fn) require 'json' - parsed = JSON.parse(facts) + parsed = {} + facts.each_line do |l| + p.update(JSON.parse(l)) + end return parsed[servicename] end end -- 2.20.1