mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-31 01:34:12 +02:00
parent
bff76dad8e
commit
a48e0c6dda
@ -60,14 +60,7 @@ class AssignRenderer
|
|||||||
|
|
||||||
protected function renderEquals($column, $expression)
|
protected function renderEquals($column, $expression)
|
||||||
{
|
{
|
||||||
if ($column[0] === '"') {
|
if (substr($column, -7) === '.groups') {
|
||||||
// "me"=vars.users -> "me" in vars.users
|
|
||||||
return sprintf(
|
|
||||||
'%s in %s',
|
|
||||||
$column,
|
|
||||||
$expression
|
|
||||||
);
|
|
||||||
} elseif (substr($column, -7) === '.groups') {
|
|
||||||
return sprintf(
|
return sprintf(
|
||||||
'%s in %s',
|
'%s in %s',
|
||||||
$expression,
|
$expression,
|
||||||
@ -82,8 +75,21 @@ class AssignRenderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function renderContains(FilterExpression $filter)
|
||||||
|
{
|
||||||
|
return sprintf(
|
||||||
|
'%s in %s',
|
||||||
|
$this->renderExpressionValue(json_decode($filter->getColumn())),
|
||||||
|
$filter->getExpression()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
protected function renderFilterExpression(FilterExpression $filter)
|
protected function renderFilterExpression(FilterExpression $filter)
|
||||||
{
|
{
|
||||||
|
if ($this->columnIsJson($filter)) {
|
||||||
|
return $this->renderContains($filter);
|
||||||
|
}
|
||||||
|
|
||||||
$column = $filter->getColumn();
|
$column = $filter->getColumn();
|
||||||
$expression = $this->renderExpressionValue(json_decode($filter->getExpression()));
|
$expression = $this->renderExpressionValue(json_decode($filter->getExpression()));
|
||||||
|
|
||||||
@ -160,6 +166,12 @@ class AssignRenderer
|
|||||||
return IcingaConfigHelper::renderPhpValue($value);
|
return IcingaConfigHelper::renderPhpValue($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function columnIsJson(FilterExpression $filter)
|
||||||
|
{
|
||||||
|
$col = $filter->getColumn();
|
||||||
|
return strlen($col) && $col[0] === '"';
|
||||||
|
}
|
||||||
|
|
||||||
protected function renderFilterChain(FilterChain $filter)
|
protected function renderFilterChain(FilterChain $filter)
|
||||||
{
|
{
|
||||||
// TODO: brackets if deeper level?
|
// TODO: brackets if deeper level?
|
||||||
|
@ -54,6 +54,27 @@ class AssignRendererTest extends BaseTestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testWhetherFakeContainsOperatorRendersCorrectly()
|
||||||
|
{
|
||||||
|
$string = json_encode('member') . '=host.groups';
|
||||||
|
|
||||||
|
$expected = 'assign where "member" in host.groups';
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
$this->renderer($string)->renderAssign()
|
||||||
|
);
|
||||||
|
|
||||||
|
$string = json_encode('member') . '=host.vars.some_array';
|
||||||
|
|
||||||
|
$expected = 'assign where "member" in host.vars.some_array';
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
$this->renderer($string)->renderAssign()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
protected function renderer($string)
|
protected function renderer($string)
|
||||||
{
|
{
|
||||||
return AssignRenderer::forFilter(Filter::fromQueryString($string));
|
return AssignRenderer::forFilter(Filter::fromQueryString($string));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user