Alexandros Kosiaris has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/313650 )

Change subject: Rework network::subnets
......................................................................


Rework network::subnets

network::subnets was recently made a hiera variable instead of a puppet
hash. Various realms were meant to use it as is without really
overriding it however. The nature of the different hiera configurations
of the realms also meant it was difficult to create a cross realm hiera
variable. Due to this, move the data into the module, into a YAML file
and away from hiera. Amend network::constants to load it into scope and
amend slice_network_constants to use that Puppet variable to get the
data instead of using a hiera lookup

Change-Id: Ia80e5263db88a0b3a845ae6ac21548725120f0eb
---
M hieradata/labs.yaml
M hieradata/regex.yaml
R modules/network/data/data.yaml
M modules/network/lib/puppet/parser/functions/slice_network_constants.rb
M modules/network/manifests/constants.pp
D modules/network/spec/fixtures/hiera.yaml
D modules/network/spec/fixtures/hieradata/common.yaml
M modules/network/spec/functions/slice_network_constants_spec.rb
M modules/network/spec/spec_helper.rb
9 files changed, 33 insertions(+), 720 deletions(-)

Approvals:
  Alexandros Kosiaris: Verified; Looks good to me, approved



diff --git a/hieradata/labs.yaml b/hieradata/labs.yaml
index aab2e75..c20b7a6 100644
--- a/hieradata/labs.yaml
+++ b/hieradata/labs.yaml
@@ -138,197 +138,6 @@
   hostname: ldap-labs.eqiad.wikimedia.org
   secondary_hostname: ldap-labs.codfw.wikimedia.org
 
-network::subnets:
-  production:
-    eqiad:
-      public:
-        public1-a-eqiad:
-          ipv4: 208.80.154.0/26
-          ipv6: 2620:0:861:1::/64
-        public1-b-eqiad:
-          ipv4: 208.80.154.128/26
-          ipv6: 2620:0:861:2::/64
-        public1-c-eqiad:
-          ipv4: 208.80.154.64/26
-          ipv6: 2620:0:861:3::/64
-        public1-d-eqiad:
-          ipv4: 208.80.155.96/27
-          ipv6: 2620:0:861:4::/64
-        public1-lvs-eqiad:
-          ipv4: 208.80.154.224/27
-          ipv6: 2620:0:861:ed1a::/64
-      private:
-        private1-a-eqiad:
-          ipv4: 10.64.0.0/22
-          ipv6: 2620:0:861:101::/64
-        private1-b-eqiad:
-          ipv4: 10.64.16.0/22
-          ipv6: 2620:0:861:102::/64
-        private1-c-eqiad:
-          ipv4: 10.64.32.0/22
-          ipv6: 2620:0:861:103::/64
-        private1-d-eqiad:
-          ipv4: 10.64.48.0/22
-          ipv6: 2620:0:861:107::/64
-        labs-hosts1-a-eqiad:
-          ipv4: 10.64.4.0/24
-          ipv6: 2620:0:861:117::/64
-        labs-hosts1-b-eqiad:
-          ipv4: 10.64.20.0/24
-          ipv6: 2620:0:861:118::/64
-        labs-hosts1-d-eqiad:
-          ipv4: 10.64.52.0/24
-        labs-support1-c-eqiad:
-          ipv4: 10.64.37.0/24
-          ipv6: 2620:0:861:119::/64
-        analytics1-a-eqiad:
-          ipv4: 10.64.5.0/24
-          ipv6: 2620:0:861:104::/64
-        analytics1-b-eqiad:
-          ipv4: 10.64.21.0/24
-          ipv6: 2620:0:861:105::/64
-        analytics1-c-eqiad:
-          ipv4: 10.64.36.0/24
-          ipv6: 2620:0:861:106::/64
-        analytics1-d-eqiad:
-          ipv4: 10.64.53.0/24
-          ipv6: 2620:0:861:108::/64
-    codfw:
-      public:
-        public1-a-codfw:
-          ipv4: 208.80.153.0/27
-          ipv6: 2620:0:860:1::/64
-        public1-b-codfw:
-          ipv4: 208.80.153.32/27
-          ipv6: 2620:0:860:2::/64
-        public1-c-codfw:
-          ipv4: 208.80.153.64/27
-          ipv6: 2620:0:860:3::/64
-        public1-d-codfw:
-          ipv4: 208.80.153.96/27
-          ipv6: 2620:0:860:4::/64
-        public1-lvs-codfw:
-          ipv4: 208.80.153.224/27
-          ipv6: 2620:0:860:ed1a::/64
-      private:
-        private1-a-codfw:
-          ipv4: 10.192.0.0/22
-          ipv6: 2620:0:860:101::/64
-        private1-b-codfw:
-          ipv4: 10.192.16.0/22
-          ipv6: 2620:0:860:102::/64
-        private1-c-codfw:
-          ipv4: 10.192.32.0/22
-          ipv6: 2620:0:860:103::/64
-        private1-d-codfw:
-          ipv4: 10.192.48.0/22
-          ipv6: 2620:0:860:104::/64
-    esams:
-      public:
-        public1-esams:
-          ipv4: 91.198.174.0/25
-          ipv6: 2620:0:862:1::/64
-        public1-lvs-esams:
-          ipv4: 91.198.174.192/27
-          ipv6: 2620:0:862:ed1a::/64
-      private:
-        private1-esams:
-          ipv4: 10.20.0.0/24
-          ipv6: 2620:0:862:102::/64
-    ulsfo:
-      public:
-        public1-ulsfo:
-          ipv4: 198.35.26.0/28
-          ipv6: 2620:0:863:1::/64
-        public1-lvs-ulsfo:
-          ipv4: 198.35.26.96/27
-          ipv6: 2620:0:863:ed1a::/64
-      private:
-        private1-ulsfo:
-          ipv4: 10.128.0.0/24
-          ipv6: 2620:0:863:101::/64
-  frack:
-    eqiad:
-      public:
-        frack-external1-c-eqiad:
-          ipv4: 208.80.155.0/27
-      private:
-        frack-payments1-c-eqiad:
-          ipv4: 10.64.40.0/27
-        frack-bastion1-c-eqiad:
-          ipv4: 10.64.40.32/27
-        frack-administration1-c-eqiad:
-          ipv4: 10.64.40.64/27
-        frack-fundraising1-c-eqiad:
-          ipv4: 10.64.40.96/27
-        frack-DMZ1-c-eqiad:
-          ipv4: 10.64.40.128/27
-        frack-listenerdmz1-c-eqiad:
-          ipv4: 10.64.40.160/27
-    codfw:
-      public:
-        frack-external-codfw:
-          ipv4: 208.80.152.224/28
-      private:
-        frack-payments-codfw:
-          ipv4: 10.195.0.0/27
-        frack-bastion-codfw:
-          ipv4: 10.195.0.64/29
-        frack-administration-codfw:
-          ipv4: 10.195.0.72/29
-        frack-fundraising-codfw:
-          ipv4: 10.195.0.32/27
-        frack-listenerdmz-codfw:
-          ipv4: 10.195.0.80/29
-        frack-management-codfw:
-          ipv4: 10.195.0.96/27
-  sandbox:
-    eqiad:
-      public:
-        sandbox1-b-eqiad:
-          ipv4: 208.80.155.64/28
-          ipv6: 2620:0:861:202::/64
-    codfw:
-      public:
-        sandbox1-a-codfw:
-          ipv4: 208.80.152.240/28
-          ipv6: 2620:0:860:201::/64
-    ulsfo:
-      public:
-        sandbox1-ulsfo:
-          ipv4: 198.35.26.240/28
-          ipv6: 2620:0:863:201::/64
-  labs:
-    eqiad:
-      private:
-        labs-instances1-a-eqiad:
-          ipv4: 10.68.0.0/24
-          ipv6: 2620:0:861:201::/64
-        labs-instances1-b-eqiad:
-          ipv4: 10.68.16.0/21
-          ipv6: 2620:0:861:202::/64
-        labs-instances1-c-eqiad:
-          ipv4: 10.68.32.0/24
-          ipv6: 2620:0:861:203::/64
-        labs-instances1-d-eqiad:
-          ipv4: 10.68.48.0/24
-          ipv6: 2620:0:861:204::/64
-    codfw:
-      private:
-        labs-instances1-a-codfw:
-          ipv4: 10.196.0.0/24
-          ipv6: 2620:0:860:201::/64
-        labs-instances1-b-codfw:
-          ipv4: 10.196.16.0/21
-          ipv6: 2620:0:860:202::/64
-        labs-instances1-c-codfw:
-          ipv4: 10.196.32.0/24
-          ipv6: 2620:0:860:203::/64
-        labs-instances1-d-codfw:
-          ipv4: 10.196.48.0/24
-          ipv6: 2620:0:860:204::/64
-
-
 # These are needed on labs for, among other things, observerenv.sh
 labs_nova_controller: &labsnovacontroller "labcontrol1001.wikimedia.org"
 novaconfig:
diff --git a/hieradata/regex.yaml b/hieradata/regex.yaml
index 132f323..1e59764 100644
--- a/hieradata/regex.yaml
+++ b/hieradata/regex.yaml
@@ -486,313 +486,4 @@
   openstack::horizon::service::webserver_hostname: 
'labtesthorizon.wikimedia.org'
   admin::groups:
     - labtest-roots
-  network::subnets:
-    labtest:
-      eqiad:
-        public:
-          public1-a-eqiad:
-            ipv4: 208.80.154.0/26
-            ipv6: 2620:0:861:1::/64
-          public1-b-eqiad:
-            ipv4: 208.80.154.128/26
-            ipv6: 2620:0:861:2::/64
-          public1-c-eqiad:
-            ipv4: 208.80.154.64/26
-            ipv6: 2620:0:861:3::/64
-          public1-d-eqiad:
-            ipv4: 208.80.155.96/27
-            ipv6: 2620:0:861:4::/64
-          public1-lvs-eqiad:
-            ipv4: 208.80.154.224/27
-            ipv6: 2620:0:861:ed1a::/64
-        private:
-          private1-a-eqiad:
-            ipv4: 10.64.0.0/22
-            ipv6: 2620:0:861:101::/64
-          private1-b-eqiad:
-            ipv4: 10.64.16.0/22
-            ipv6: 2620:0:861:102::/64
-          private1-c-eqiad:
-            ipv4: 10.64.32.0/22
-            ipv6: 2620:0:861:103::/64
-          private1-d-eqiad:
-            ipv4: 10.64.48.0/22
-            ipv6: 2620:0:861:107::/64
-          labs-hosts1-a-eqiad:
-            ipv4: 10.64.4.0/24
-            ipv6: 2620:0:861:117::/64
-          labs-hosts1-b-eqiad:
-            ipv4: 10.64.20.0/24
-            ipv6: 2620:0:861:118::/64
-          labs-hosts1-d-eqiad:
-            ipv4: 10.64.52.0/24
-          labs-support1-c-eqiad:
-            ipv4: 10.64.37.0/24
-            ipv6: 2620:0:861:119::/64
-          analytics1-a-eqiad:
-            ipv4: 10.64.5.0/24
-            ipv6: 2620:0:861:104::/64
-          analytics1-b-eqiad:
-            ipv4: 10.64.21.0/24
-            ipv6: 2620:0:861:105::/64
-          analytics1-c-eqiad:
-            ipv4: 10.64.36.0/24
-            ipv6: 2620:0:861:106::/64
-          analytics1-d-eqiad:
-            ipv4: 10.64.53.0/24
-            ipv6: 2620:0:861:108::/64
-      codfw:
-        public:
-          public1-a-codfw:
-            ipv4: 208.80.153.0/27
-            ipv6: 2620:0:860:1::/64
-          public1-b-codfw:
-            ipv4: 208.80.153.32/27
-            ipv6: 2620:0:860:2::/64
-          public1-c-codfw:
-            ipv4: 208.80.153.64/27
-            ipv6: 2620:0:860:3::/64
-          public1-d-codfw:
-            ipv4: 208.80.153.96/27
-            ipv6: 2620:0:860:4::/64
-          public1-lvs-codfw:
-            ipv4: 208.80.153.224/27
-            ipv6: 2620:0:860:ed1a::/64
-        private:
-          private1-a-codfw:
-            ipv4: 10.192.0.0/22
-            ipv6: 2620:0:860:101::/64
-          private1-b-codfw:
-            ipv4: 10.192.16.0/22
-            ipv6: 2620:0:860:102::/64
-          private1-c-codfw:
-            ipv4: 10.192.32.0/22
-            ipv6: 2620:0:860:103::/64
-          private1-d-codfw:
-            ipv4: 10.192.48.0/22
-            ipv6: 2620:0:860:104::/64
-          labs-hosts1-b-codfw:
-            ipv4: 10.192.20.0/24
-            ipv6: 2620:0:860:118::/64
-          labs-support1-b-codfw:
-            ipv4: 10.192.21.0/24
-            ipv6: 2620:0:860:122::/64
-      esams:
-        public:
-          public1-esams:
-            ipv4: 91.198.174.0/25
-            ipv6: 2620:0:862:1::/64
-          public1-lvs-esams:
-            ipv4: 91.198.174.192/27
-            ipv6: 2620:0:862:ed1a::/64
-        private:
-          private1-esams:
-            ipv4: 10.20.0.0/24
-            ipv6: 2620:0:862:102::/64
-      ulsfo:
-        public:
-          public1-ulsfo:
-            ipv4: 198.35.26.0/28
-            ipv6: 2620:0:863:1::/64
-          public1-lvs-ulsfo:
-            ipv4: 198.35.26.96/27
-            ipv6: 2620:0:863:ed1a::/64
-        private:
-          private1-ulsfo:
-            ipv4: 10.128.0.0/24
-            ipv6: 2620:0:863:101::/64
-    production:
-      eqiad:
-        public:
-          public1-a-eqiad:
-            ipv4: 208.80.154.0/26
-            ipv6: 2620:0:861:1::/64
-          public1-b-eqiad:
-            ipv4: 208.80.154.128/26
-            ipv6: 2620:0:861:2::/64
-          public1-c-eqiad:
-            ipv4: 208.80.154.64/26
-            ipv6: 2620:0:861:3::/64
-          public1-d-eqiad:
-            ipv4: 208.80.155.96/27
-            ipv6: 2620:0:861:4::/64
-          public1-lvs-eqiad:
-            ipv4: 208.80.154.224/27
-            ipv6: 2620:0:861:ed1a::/64
-        private:
-          private1-a-eqiad:
-            ipv4: 10.64.0.0/22
-            ipv6: 2620:0:861:101::/64
-          private1-b-eqiad:
-            ipv4: 10.64.16.0/22
-            ipv6: 2620:0:861:102::/64
-          private1-c-eqiad:
-            ipv4: 10.64.32.0/22
-            ipv6: 2620:0:861:103::/64
-          private1-d-eqiad:
-            ipv4: 10.64.48.0/22
-            ipv6: 2620:0:861:107::/64
-          labs-hosts1-a-eqiad:
-            ipv4: 10.64.4.0/24
-            ipv6: 2620:0:861:117::/64
-          labs-hosts1-b-eqiad:
-            ipv4: 10.64.20.0/24
-            ipv6: 2620:0:861:118::/64
-          labs-hosts1-d-eqiad:
-            ipv4: 10.64.52.0/24
-          labs-support1-c-eqiad:
-            ipv4: 10.64.37.0/24
-            ipv6: 2620:0:861:119::/64
-          analytics1-a-eqiad:
-            ipv4: 10.64.5.0/24
-            ipv6: 2620:0:861:104::/64
-          analytics1-b-eqiad:
-            ipv4: 10.64.21.0/24
-            ipv6: 2620:0:861:105::/64
-          analytics1-c-eqiad:
-            ipv4: 10.64.36.0/24
-            ipv6: 2620:0:861:106::/64
-          analytics1-d-eqiad:
-            ipv4: 10.64.53.0/24
-            ipv6: 2620:0:861:108::/64
-      codfw:
-        public:
-          public1-a-codfw:
-            ipv4: 208.80.153.0/27
-            ipv6: 2620:0:860:1::/64
-          public1-b-codfw:
-            ipv4: 208.80.153.32/27
-            ipv6: 2620:0:860:2::/64
-          public1-c-codfw:
-            ipv4: 208.80.153.64/27
-            ipv6: 2620:0:860:3::/64
-          public1-d-codfw:
-            ipv4: 208.80.153.96/27
-            ipv6: 2620:0:860:4::/64
-          public1-lvs-codfw:
-            ipv4: 208.80.153.224/27
-            ipv6: 2620:0:860:ed1a::/64
-        private:
-          private1-a-codfw:
-            ipv4: 10.192.0.0/22
-            ipv6: 2620:0:860:101::/64
-          private1-b-codfw:
-            ipv4: 10.192.16.0/22
-            ipv6: 2620:0:860:102::/64
-          private1-c-codfw:
-            ipv4: 10.192.32.0/22
-            ipv6: 2620:0:860:103::/64
-          private1-d-codfw:
-            ipv4: 10.192.48.0/22
-            ipv6: 2620:0:860:104::/64
-          labs-hosts1-b-codfw:
-            ipv4: 10.192.20.0/24
-            ipv6: 2620:0:860:118::/64
-          labs-support1-b-codfw:
-            ipv4: 10.192.21.0/24
-            ipv6: 2620:0:860:122::/64
-      esams:
-        public:
-          public1-esams:
-            ipv4: 91.198.174.0/25
-            ipv6: 2620:0:862:1::/64
-          public1-lvs-esams:
-            ipv4: 91.198.174.192/27
-            ipv6: 2620:0:862:ed1a::/64
-        private:
-          private1-esams:
-            ipv4: 10.20.0.0/24
-            ipv6: 2620:0:862:102::/64
-      ulsfo:
-        public:
-          public1-ulsfo:
-            ipv4: 198.35.26.0/28
-            ipv6: 2620:0:863:1::/64
-          public1-lvs-ulsfo:
-            ipv4: 198.35.26.96/27
-            ipv6: 2620:0:863:ed1a::/64
-        private:
-          private1-ulsfo:
-            ipv4: 10.128.0.0/24
-            ipv6: 2620:0:863:101::/64
-    frack:
-      eqiad:
-        public:
-          frack-external1-c-eqiad:
-            ipv4: 208.80.155.0/27
-        private:
-          frack-payments1-c-eqiad:
-            ipv4: 10.64.40.0/27
-          frack-bastion1-c-eqiad:
-            ipv4: 10.64.40.32/27
-          frack-administration1-c-eqiad:
-            ipv4: 10.64.40.64/27
-          frack-fundraising1-c-eqiad:
-            ipv4: 10.64.40.96/27
-          frack-DMZ1-c-eqiad:
-            ipv4: 10.64.40.128/27
-          frack-listenerdmz1-c-eqiad:
-            ipv4: 10.64.40.160/27
-      codfw:
-        public:
-          frack-external-codfw:
-            ipv4: 208.80.152.224/28
-        private:
-          frack-payments-codfw:
-            ipv4: 10.195.0.0/27
-          frack-bastion-codfw:
-            ipv4: 10.195.0.64/29
-          frack-administration-codfw:
-            ipv4: 10.195.0.72/29
-          frack-fundraising-codfw:
-            ipv4: 10.195.0.32/27
-          frack-listenerdmz-codfw:
-            ipv4: 10.195.0.80/29
-          frack-management-codfw:
-            ipv4: 10.195.0.96/27
-    sandbox:
-      eqiad:
-        public:
-          sandbox1-b-eqiad:
-            ipv4: 208.80.155.64/28
-            ipv6: 2620:0:861:202::/64
-      codfw:
-        public:
-          sandbox1-a-codfw:
-            ipv4: 208.80.152.240/28
-            ipv6: 2620:0:860:201::/64
-      ulsfo:
-        public:
-          sandbox1-ulsfo:
-            ipv4: 198.35.26.240/28
-            ipv6: 2620:0:863:201::/64
-    labs:
-      eqiad:
-        private:
-          labs-instances1-a-eqiad:
-            ipv4: 10.68.0.0/24
-            ipv6: 2620:0:861:201::/64
-          labs-instances1-b-eqiad:
-            ipv4: 10.68.16.0/21
-            ipv6: 2620:0:861:202::/64
-          labs-instances1-c-eqiad:
-            ipv4: 10.68.32.0/24
-            ipv6: 2620:0:861:203::/64
-          labs-instances1-d-eqiad:
-            ipv4: 10.68.48.0/24
-            ipv6: 2620:0:861:204::/64
-      codfw:
-        private:
-          labs-instances1-a-codfw:
-            ipv4: 10.196.0.0/24
-            ipv6: 2620:0:860:201::/64
-          labs-instances1-b-codfw:
-            ipv4: 10.196.16.0/21
-            ipv6: 2620:0:860:202::/64
-          labs-instances1-c-codfw:
-            ipv4: 10.196.32.0/24
-            ipv6: 2620:0:860:203::/64
-          labs-instances1-d-codfw:
-            ipv4: 10.196.48.0/24
-            ipv6: 2620:0:860:204::/64
   openstack::version: 'liberty'
diff --git a/hieradata/common/network.yaml b/modules/network/data/data.yaml
similarity index 100%
rename from hieradata/common/network.yaml
rename to modules/network/data/data.yaml
diff --git 
a/modules/network/lib/puppet/parser/functions/slice_network_constants.rb 
b/modules/network/lib/puppet/parser/functions/slice_network_constants.rb
index 35f2a0c..d4c6b33 100644
--- a/modules/network/lib/puppet/parser/functions/slice_network_constants.rb
+++ b/modules/network/lib/puppet/parser/functions/slice_network_constants.rb
@@ -39,7 +39,7 @@
   newfunction(:slice_network_constants, :type => :rvalue, :arity => -2) do 
|args|
     fail ArgumentError, 'slice_network_constants() requires an argument' if 
args.empty?
     fail ArgumentError, 'slice_network_constants() cannot handle more than 2 
values' if args.length > 2
-    all_network_subnets = function_hiera(['network::subnets'])
+    all_network_subnets = lookupvar('all_network_subnets')
     realm = args[0]
     options = args[1] if args.length > 1
     requested_site = options['site'] if options
diff --git a/modules/network/manifests/constants.pp 
b/modules/network/manifests/constants.pp
index d8779be..7bc9fd8 100644
--- a/modules/network/manifests/constants.pp
+++ b/modules/network/manifests/constants.pp
@@ -10,6 +10,9 @@
         '185.15.56.0/22',
         '2a02:ec80::/32',
     ]
+    $module_path = get_module_path($module_name)
+    $network_data = loadyaml("${module_path}/data/data.yaml")
+    $all_network_subnets = $network_data['network::subnets']
 
     # are you really sure you want to use this? maybe what you really
     # the trusted/production networks. See $production_networks for this.
@@ -90,7 +93,6 @@
             }
     }
 
-    $all_network_subnets = hiera('network::subnets')
 
     # Networks hosting MediaWiki application servers
     # These are:
diff --git a/modules/network/spec/fixtures/hiera.yaml 
b/modules/network/spec/fixtures/hiera.yaml
deleted file mode 100644
index 4f2ee1c..0000000
--- a/modules/network/spec/fixtures/hiera.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-:backends:
-  - yaml
-:yaml:
-  :datadir: 'spec/fixtures/hieradata'
-:hierarchy:
-  - common
diff --git a/modules/network/spec/fixtures/hieradata/common.yaml 
b/modules/network/spec/fixtures/hieradata/common.yaml
deleted file mode 100644
index fb63041..0000000
--- a/modules/network/spec/fixtures/hieradata/common.yaml
+++ /dev/null
@@ -1,197 +0,0 @@
-# TODO: Once all usages of all_network_constants have migrated to use the
-# slice_network_subnets functions, this should be turned into dummy data
-network::subnets:
-  production:
-    eqiad:
-      public:
-        public1-a-eqiad:
-          ipv4: 208.80.154.0/26
-          ipv6: 2620:0:861:1::/64
-        public1-b-eqiad:
-          ipv4: 208.80.154.128/26
-          ipv6: 2620:0:861:2::/64
-        public1-c-eqiad:
-          ipv4: 208.80.154.64/26
-          ipv6: 2620:0:861:3::/64
-        public1-d-eqiad:
-          ipv4: 208.80.155.96/27
-          ipv6: 2620:0:861:4::/64
-        public1-lvs-eqiad:
-          ipv4: 208.80.154.224/27
-          ipv6: 2620:0:861:ed1a::/64
-      private:
-        private1-a-eqiad:
-          ipv4: 10.64.0.0/22
-          ipv6: 2620:0:861:101::/64
-        private1-b-eqiad:
-          ipv4: 10.64.16.0/22
-          ipv6: 2620:0:861:102::/64
-        private1-c-eqiad:
-          ipv4: 10.64.32.0/22
-          ipv6: 2620:0:861:103::/64
-        private1-d-eqiad:
-          ipv4: 10.64.48.0/22
-          ipv6: 2620:0:861:107::/64
-        labs-hosts1-a-eqiad:
-          ipv4: 10.64.4.0/24
-          ipv6: 2620:0:861:117::/64
-        labs-hosts1-b-eqiad:
-          ipv4: 10.64.20.0/24
-          ipv6: 2620:0:861:118::/64
-        labs-hosts1-d-eqiad:
-          ipv4: 10.64.52.0/24
-        labs-support1-c-eqiad:
-          ipv4: 10.64.37.0/24
-          ipv6: 2620:0:861:119::/64
-        analytics1-a-eqiad:
-          ipv4: 10.64.5.0/24
-          ipv6: 2620:0:861:104::/64
-        analytics1-b-eqiad:
-          ipv4: 10.64.21.0/24
-          ipv6: 2620:0:861:105::/64
-        analytics1-c-eqiad:
-          ipv4: 10.64.36.0/24
-          ipv6: 2620:0:861:106::/64
-        analytics1-d-eqiad:
-          ipv4: 10.64.53.0/24
-          ipv6: 2620:0:861:108::/64
-    codfw:
-      public:
-        public1-a-codfw:
-          ipv4: 208.80.153.0/27
-          ipv6: 2620:0:860:1::/64
-        public1-b-codfw:
-          ipv4: 208.80.153.32/27
-          ipv6: 2620:0:860:2::/64
-        public1-c-codfw:
-          ipv4: 208.80.153.64/27
-          ipv6: 2620:0:860:3::/64
-        public1-d-codfw:
-          ipv4: 208.80.153.96/27
-          ipv6: 2620:0:860:4::/64
-        public1-lvs-codfw:
-          ipv4: 208.80.153.224/27
-          ipv6: 2620:0:860:ed1a::/64
-      private:
-        private1-a-codfw:
-          ipv4: 10.192.0.0/22
-          ipv6: 2620:0:860:101::/64
-        private1-b-codfw:
-          ipv4: 10.192.16.0/22
-          ipv6: 2620:0:860:102::/64
-        private1-c-codfw:
-          ipv4: 10.192.32.0/22
-          ipv6: 2620:0:860:103::/64
-        private1-d-codfw:
-          ipv4: 10.192.48.0/22
-          ipv6: 2620:0:860:104::/64
-        labs-hosts1-b-codfw:
-          ipv4: 10.192.20.0/24
-          ipv6: 2620:0:860:118::/64
-        labs-support1-b-codfw:
-          ipv4: 10.192.21.0/24
-          ipv6: 2620:0:860:122::/64
-    esams:
-      public:
-        public1-esams:
-          ipv4: 91.198.174.0/25
-          ipv6: 2620:0:862:1::/64
-        public1-lvs-esams:
-          ipv4: 91.198.174.192/27
-          ipv6: 2620:0:862:ed1a::/64
-      private:
-        private1-esams:
-          ipv4: 10.20.0.0/24
-          ipv6: 2620:0:862:102::/64
-    ulsfo:
-      public:
-        public1-ulsfo:
-          ipv4: 198.35.26.0/28
-          ipv6: 2620:0:863:1::/64
-        public1-lvs-ulsfo:
-          ipv4: 198.35.26.96/27
-          ipv6: 2620:0:863:ed1a::/64
-      private:
-        private1-ulsfo:
-          ipv4: 10.128.0.0/24
-          ipv6: 2620:0:863:101::/64
-  frack:
-    eqiad:
-      public:
-        frack-external1-c-eqiad:
-          ipv4: 208.80.155.0/27
-      private:
-        frack-payments1-c-eqiad:
-          ipv4: 10.64.40.0/27
-        frack-bastion1-c-eqiad:
-          ipv4: 10.64.40.32/27
-        frack-administration1-c-eqiad:
-          ipv4: 10.64.40.64/27
-        frack-fundraising1-c-eqiad:
-          ipv4: 10.64.40.96/27
-        frack-DMZ1-c-eqiad:
-          ipv4: 10.64.40.128/27
-        frack-listenerdmz1-c-eqiad:
-          ipv4: 10.64.40.160/27
-    codfw:
-      public:
-        frack-external-codfw:
-          ipv4: 208.80.152.224/28
-      private:
-        frack-payments-codfw:
-          ipv4: 10.195.0.0/27
-        frack-bastion-codfw:
-          ipv4: 10.195.0.64/29
-        frack-administration-codfw:
-          ipv4: 10.195.0.72/29
-        frack-fundraising-codfw:
-          ipv4: 10.195.0.32/27
-        frack-listenerdmz-codfw:
-          ipv4: 10.195.0.80/29
-        frack-management-codfw:
-          ipv4: 10.195.0.96/27
-  sandbox:
-    eqiad:
-      public:
-        sandbox1-b-eqiad:
-          ipv4: 208.80.155.64/28
-          ipv6: 2620:0:861:202::/64
-    codfw:
-      public:
-        sandbox1-a-codfw:
-          ipv4: 208.80.152.240/28
-          ipv6: 2620:0:860:201::/64
-    ulsfo:
-      public:
-        sandbox1-ulsfo:
-          ipv4: 198.35.26.240/28
-          ipv6: 2620:0:863:201::/64
-  labs:
-    eqiad:
-      private:
-        labs-instances1-a-eqiad:
-          ipv4: 10.68.0.0/24
-          ipv6: 2620:0:861:201::/64
-        labs-instances1-b-eqiad:
-          ipv4: 10.68.16.0/21
-          ipv6: 2620:0:861:202::/64
-        labs-instances1-c-eqiad:
-          ipv4: 10.68.32.0/24
-          ipv6: 2620:0:861:203::/64
-        labs-instances1-d-eqiad:
-          ipv4: 10.68.48.0/24
-          ipv6: 2620:0:861:204::/64
-    codfw:
-      private:
-        labs-instances1-a-codfw:
-          ipv4: 10.196.0.0/24
-          ipv6: 2620:0:860:201::/64
-        labs-instances1-b-codfw:
-          ipv4: 10.196.16.0/21
-          ipv6: 2620:0:860:202::/64
-        labs-instances1-c-codfw:
-          ipv4: 10.196.32.0/24
-          ipv6: 2620:0:860:203::/64
-        labs-instances1-d-codfw:
-          ipv4: 10.196.48.0/24
-          ipv6: 2620:0:860:204::/64
diff --git a/modules/network/spec/functions/slice_network_constants_spec.rb 
b/modules/network/spec/functions/slice_network_constants_spec.rb
index a3c9821..ec2a7ba 100644
--- a/modules/network/spec/functions/slice_network_constants_spec.rb
+++ b/modules/network/spec/functions/slice_network_constants_spec.rb
@@ -1,74 +1,90 @@
 require 'spec_helper'
+require 'puppetlabs_spec_helper/puppetlabs_spec/puppet_internals'
+require 'yaml'
 
 describe "slice_network_constants" do
+  all_network_subnets = YAML.load_file(File.dirname(__FILE__) + 
"/../../data/data.yaml")['network::subnets']
+  let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
+
   it "should exist" do
     expect(Puppet::Parser::Functions.function("slice_network_constants")).to 
eq "function_slice_network_constants"
   end
 
   it "should raise a ParseError if there are less than 1 arguments" do
-    expect { subject.call([]) }.to raise_error(ArgumentError)
+    expect { scope.function_slice_network_constants([])}.to 
raise_error(ArgumentError)
   end
 
   it "should raise a ParseError if there are more than 2 arguments" do
-    expect { subject.call(['a', 'b', 'c']) }.to raise_error(ArgumentError)
+    expect { scope.function_slice_network_constants(['a', 'b', 'c']) }.to 
raise_error(ArgumentError)
   end
 
   # Test realm
   it "should complain about invalid realm" do
-    expect { subject.call(['nosuchrealm']) }.to raise_error(ArgumentError)
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    expect { scope.function_slice_network_constants(['nosuchrealm']) }.to 
raise_error(ArgumentError)
   end
 
   it "should return for valid realm" do
-    result = subject.call(['production'])
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    result = scope.function_slice_network_constants(['production'])
     expect(result).to be_an Array
   end
 
   # Test site
   it "should complain about invalid site" do
-    expect { subject.call(['production', { 'site' => 'nosuchsite'}])}.to 
raise_error(ArgumentError)
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    expect { scope.function_slice_network_constants(['production', { 'site' => 
'nosuchsite'}])}.to raise_error(ArgumentError)
   end
 
   it "should return for valid site" do
-    result = subject.call(['production', { 'site' => 'eqiad'}])
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    result = scope.function_slice_network_constants(['production', { 'site' => 
'eqiad'}])
     expect(result).to be_an Array
     # TODO: After migrating to dummy data actually test this result for 
equality
   end
 
   # Test sphere
   it "should complain about invalid sphere" do
-    expect{ subject.call(['production', { 'sphere' => 'nosuchsphere'}])}.to 
raise_error(ArgumentError)
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    expect{ scope.function_slice_network_constants(['production', { 'sphere' 
=> 'nosuchsphere'}])}.to raise_error(ArgumentError)
   end
 
   it "should return for valid sphere" do
-    result = subject.call(['production', { 'sphere' => 'public'}])
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    result = scope.function_slice_network_constants(['production', { 'sphere' 
=> 'public'}])
     expect(result).to be_an Array
     # TODO: After migrating to dummy data actually test this result for 
equality
   end
 
   # Test AF
   it "should complain about invalid af" do
-    expect{ subject.call(['production', { 'af' => 'nosuchaf'}])}.to 
raise_error(ArgumentError)
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    expect{ scope.function_slice_network_constants(['production', { 'af' => 
'nosuchaf'}])}.to raise_error(ArgumentError)
   end
 
   it "should return for valid af" do
-    result = subject.call(['production', { 'af' => 'ipv6'}])
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    result = scope.function_slice_network_constants(['production', { 'af' => 
'ipv6'}])
     expect(result).to be_an Array
     # TODO: After migrating to dummy data actually test this result for 
equality
   end
 
   # Multiple together
   it "should return for valid site/af" do
-    result = subject.call(['production', { 'site' => 'eqiad', 'af' => 'ipv6'}])
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    result = scope.function_slice_network_constants(['production', { 'site' => 
'eqiad', 'af' => 'ipv6'}])
     expect(result).to be_an Array
     # TODO: After migrating to dummy data actually test this result for 
equality
   end
   it "should return for valid site/sphere" do
-    result = subject.call(['production', { 'site' => 'eqiad', 'sphere' => 
'public'}])
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    result = scope.function_slice_network_constants(['production', { 'site' => 
'eqiad', 'sphere' => 'public'}])
     expect(result).to be_an Array
     # TODO: After migrating to dummy data actually test this result for 
equality
   end
   it "should return for valid description" do
-    result = subject.call(['production', { 'site' => 'eqiad', 'description' => 
'analytics'}])
+    
scope.stubs(:lookupvar).with('all_network_subnets').returns(all_network_subnets)
+    result = scope.function_slice_network_constants(['production', { 'site' => 
'eqiad', 'description' => 'analytics'}])
     expect(result).to be_an Array
     # TODO: After migrating to dummy data actually test this result for 
equality
   end
diff --git a/modules/network/spec/spec_helper.rb 
b/modules/network/spec/spec_helper.rb
index 7965c90..421fd71 100644
--- a/modules/network/spec/spec_helper.rb
+++ b/modules/network/spec/spec_helper.rb
@@ -6,6 +6,4 @@
 RSpec.configure do |c|
   c.module_path = File.join(fixture_path, 'modules')
   c.manifest_dir = File.join(fixture_path, 'manifests')
-  c.environmentpath = File.join(Dir.pwd, 'spec')
-  c.hiera_config = File.join(fixture_path, 'hiera.yaml')
 end

-- 
To view, visit https://gerrit.wikimedia.org/r/313650
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia80e5263db88a0b3a845ae6ac21548725120f0eb
Gerrit-PatchSet: 4
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Alexandros Kosiaris <akosia...@wikimedia.org>
Gerrit-Reviewer: Alexandros Kosiaris <akosia...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to