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
 }