resolver.t
I think in two options here:
- add some logic inside
http.d/init.conforcli/environment.lua; - a second
conf/nginx.conf.liquidfor tests;
First option can be a problem because it will change some almost static files to a more dynamic one, but this is better than a second file with a lot of duplicated content and another block inside Blackbox.pm
The Problem
- There is two calls to
resty.resolver- one insideenvironment.luaand another insideinit.conf. - These two calls related to
resty.resolverinitialization do not pass thepathparameter, ignoring any attempt to configure a customresolv.conf.
These are the code that APIcast execute:
-- http.d/init.conf
require('resty.resolver').init()
-- cli/environment.lua
local resolver = require('resty.resolver')
resolver.init_nameservers
- If these functions are called without the
pathparameter, the machine/container/etc/resolv.confand theRESOLVERenvironment variable - if defined - will be added to the list of nameservers. - If one of the functions are called with the
pathparameter, the customresolv.confwill be added together with/etc/resolv.confand theRESOLVERenvironment variable.
Proposal
Remove one of the resty.resolver calls and standardize the name of the variable that points to a custom resolv.conf.
Calling both these functions with path parameter will duplicate the nameservers.
Since this needs more modifications than a single file and a environment variable name, I will wait for suggestions.
This pull request https://github.com/3scale/APIcast/pull/1432 is working but since there is a commented line and a "strange" variable name, more discussion is desirable.