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