summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2015-08-07 18:08:14 -0700
committerelijah <elijah@riseup.net>2015-08-07 18:08:14 -0700
commite6f6324ebea9fc46d5d617a08c2eb239349d9f90 (patch)
tree76334f2889abd9348cd38aa8600dfc6115e30b4d
parentfc082470fa945dd5a394057cbea8ea55831b9fad (diff)
move 'enabled service' calculation to a macro.
-rw-r--r--provider_base/files/service-definitions/provider.json.erb5
-rw-r--r--provider_base/lib/macros.rb1
-rw-r--r--provider_base/lib/macros/provider.rb20
-rw-r--r--provider_base/provider.json3
4 files changed, 23 insertions, 6 deletions
diff --git a/provider_base/files/service-definitions/provider.json.erb b/provider_base/files/service-definitions/provider.json.erb
index be8ae484..e51f9c3a 100644
--- a/provider_base/files/service-definitions/provider.json.erb
+++ b/provider_base/files/service-definitions/provider.json.erb
@@ -6,11 +6,6 @@
)
hsh['domain'] = domain.full_suffix
- # advertise services that are 'user services' and for which there are actually nodes
- hsh['services'] ||= global.services[:service_type => :user_service].field(:name).select do |service|
- nodes_like_me[:services => service].any?
- end
-
hsh['api_version'] = "1"
hsh['api_uri'] = ["https://", api.domain, ':', api.port].join
diff --git a/provider_base/lib/macros.rb b/provider_base/lib/macros.rb
index ecc3e6ba..fdb9a94e 100644
--- a/provider_base/lib/macros.rb
+++ b/provider_base/lib/macros.rb
@@ -13,3 +13,4 @@ require_relative 'macros/keys'
require_relative 'macros/nodes'
require_relative 'macros/secrets'
require_relative 'macros/stunnel'
+require_relative 'macros/provider'
diff --git a/provider_base/lib/macros/provider.rb b/provider_base/lib/macros/provider.rb
new file mode 100644
index 00000000..84c4e1b8
--- /dev/null
+++ b/provider_base/lib/macros/provider.rb
@@ -0,0 +1,20 @@
+#
+# These macros are intended only for use in provider.json, although they are
+# currently loaded in all .json contexts.
+#
+
+module LeapCli
+ module Macro
+
+ #
+ # returns an array of the service names, including only those services that
+ # are enabled for this environment.
+ #
+ def enabled_services
+ manager.env(self.environment).services[:service_type => :user_service].field(:name).select { |service|
+ manager.nodes[:environment => self.environment][:services => service].any?
+ }
+ end
+
+ end
+end
diff --git a/provider_base/provider.json b/provider_base/provider.json
index 9b6e73ca..81b2ea98 100644
--- a/provider_base/provider.json
+++ b/provider_base/provider.json
@@ -14,6 +14,7 @@
"languages": ["en"],
"default_language": "en",
"enrollment_policy": "open",
+ "services": "= enabled_services",
"service": {
// bandwidth limit is in Bytes, storage limit is in MB.
// for example:
@@ -31,7 +32,7 @@
"bandwidth_limit": 102400,
"allow_free": "= provider.service.levels.select {|l| l['rate'].nil?}.any?",
"allow_paid": "= provider.service.levels.select {|l| !l['rate'].nil?}.any?",
- "allow_anonymous": "= provider.service.levels.select {|l| l['name'] == 'anonymous'}.any?",
+ "allow_anonymous": "= provider.service.levels.select {|l| l['name'] == 'anonymous'}.any? && services.include?('openvpn')",
"allow_registration": "= provider.enrollment_policy != 'closed' && provider.service.levels.select {|l| l['name'] != 'anonymous'}.any?",
"allow_limited_bandwidth": "= provider.service.levels.select {|l| l['bandwidth'] == 'limited'}.any?",
"allow_unlimited_bandwidth": "= provider.service.levels.select {|l| l['bandwidth'].nil?}.any?"