public static function addSettingsFormFields(QuickForm $form) { $pdb = new PuppetDb(); $form->addElement('select', 'api_version', array('label' => 'API version', 'required' => true, 'multiOptions' => array('v4' => 'v4: PuppetDB 2.3, 3.0, 3.1, 3.2, 4.0 (PE 3.8, 2015.2, 2015.3)', 'v3' => 'v3: PuppetDB 1.5, 1.6 (PE 3.1, 3.2, 3.3)', 'v2' => 'v2: PuppetDB 1.1, 1.2, 1.3, 1.4', 'v1' => 'v1: PuppetDB 1.0'))); $form->addElement('select', 'server', array('label' => 'PuppetDB Server', 'required' => true, 'multiOptions' => $form->optionalEnum($pdb->listServers()), 'class' => 'autosubmit')); if (!($server = $form->getSentOrObjectSetting('server'))) { return $form; } $form->addElement('select', 'client_cert', array('label' => 'Client Certificate', 'required' => true, 'class' => 'autosubmit', 'multiOptions' => $form->optionalEnum($pdb->listClientCerts($server)))); if (!($cert = $form->getSentOrObjectSetting('client_cert'))) { return; } $form->addElement('select', 'query_type', array('label' => 'Query type', 'required' => true, 'class' => 'autosubmit', 'multiOptions' => $form->optionalEnum(array('resource' => $form->translate('Resources'), 'node' => $form->translate('Nodes'))))); if (!($queryType = $form->getSentOrObjectSetting('query_type'))) { return; } try { $db = new PuppetDbApi($form->getSentOrObjectSetting('api_version'), $cert, $server); $resourceTypes = $db->enumResourceTypes(); } catch (Exception $e) { $form->addError(sprintf($form->translate('Failed to load resource types: %s'), $e->getMessage())); } if (empty($resourceTypes)) { $form->addElement('text', 'resource_type', array('label' => 'Resource type', 'required' => true)); } else { $form->addElement('select', 'resource_type', array('label' => 'Resource type', 'required' => true, 'class' => 'autosubmit', 'multiOptions' => $form->optionalEnum($resourceTypes))); } }
public function testAction() { $pdb = new PuppetDbApi('v4', 'pe2015.example.com'); // $filter = Filter::fromQueryString('type=Nagios_host&exported=true'); // echo FilterRenderer::forFilter($filter)->toJson(); $facts = $pdb->fetchFacts(Filter::fromQueryString('name=kernel|name=osfamily|name=partitions')); // certname=pe2015.example.com }