private static function copyHostTemplates($deployment, $revision, array $htInfo)
 {
     if (self::$init === false) {
         self::init();
     }
     foreach ($htInfo as $ht => $htArray) {
         if ($htArray['deployment'] == self::$m_commonrepo && $htArray['deployment'] == 'common') {
             continue;
         }
         if ($htArray['deployment'] == self::$m_commonrepo) {
             continue;
         }
         unset($htArray['deployment']);
         foreach ($htArray as $key => $value) {
             if (is_array($htArray[$key])) {
                 $htArray[$key] = implode(',', $htArray[$key]);
             }
         }
         RevDeploy::createDeploymentHostTemplate($deployment, $ht, $htArray, $revision);
     }
 }
 public function copy_write()
 {
     $viewData = new ViewData();
     $deployment = $this->getDeployment('host_template_error');
     $this->checkGroupAuth($deployment);
     $this->checkDeploymentRevStatus($deployment);
     $modrevision = RevDeploy::getDeploymentNextRev($deployment);
     $hostName = $this->getParam('hostName');
     $hostInfo = $this->fetchHostTemplateInfo($deployment, 'copy_write', $modrevision);
     if (RevDeploy::existsDeploymentHostTemplate($deployment, $hostName, $modrevision) === true) {
         $viewData->error = 'Host template information exists for ' . $hostName . ' into ' . $deployment . ' Deployment';
         $viewData->action = 'copy_write';
         $viewData->hosttemplate = $hostName;
         $viewData->deployment = $deployment;
         $viewData->hosttemplates = RevDeploy::getCommonMergedDeploymentHostTemplates($deployment, $modrevision);
         $viewData->hostchkcmds = RevDeploy::getCommonMergedDeploymentHostCheckCommands($deployment, $modrevision);
         $viewData->timeperiods = RevDeploy::getCommonMergedDeploymentTimeperiods($deployment, $modrevision);
         $viewData->contacts = RevDeploy::getCommonMergedDeploymentContacts($deployment, $modrevision);
         $viewData->contactgroups = RevDeploy::getCommonMergedDeploymentContactGroups($deployment, $modrevision);
         $viewData->hostInfo = $hostInfo;
         $this->sendResponse('host_template_action_stage', $viewData);
     }
     if (RevDeploy::createDeploymentHostTemplate($deployment, $hostName, $hostInfo, $modrevision) === false) {
         $viewData->header = $this->getErrorHeader('host_template_error');
         $viewData->error = 'Unable to write host tempalte information for ' . $hostName . ' into ' . $deployment . ' Deployment';
         $this->sendError('generic_error', $viewData);
     }
     $viewData->deployment = $deployment;
     $viewData->host = $hostName;
     $this->sendResponse('host_template_write', $viewData);
 }
        // Lets make sure we have the minimum required keys for defining a host template
        validateContacts($app, $deployment, $hostTemplateInfo);
        foreach ($required_keys as $rkey) {
            if (!isset($hostTemplateInfo[$rkey]) || empty($hostTemplateInfo[$rkey])) {
                $apiResponse = new APIViewData(1, $deployment, "Unable to detect required parameter {$rkey} " . hosttemplate_rkeyMessage($rkey));
                $app->halt(404, $apiResponse->returnJson());
            }
        }
    }
    $hostTemplateInfo = hosttemplate_validate($app, $deployment, $hostTemplateInfo);
    $deployRev = RevDeploy::getDeploymentNextRev($deployment);
    if (RevDeploy::existsDeploymentHostTemplate($deployment, $hostTemplateInfo['name'], $deployRev) === true) {
        RevDeploy::modifyDeploymentHostTemplate($deployment, $hostTemplateInfo['name'], $hostTemplateInfo, $deployRev);
        $apiResponse = new APIViewData(0, $deployment, "Successfully Modified Host Template " . $hostTemplateInfo['name']);
    } else {
        RevDeploy::createDeploymentHostTemplate($deployment, $hostTemplateInfo['name'], $hostTemplateInfo, $deployRev);
        $apiResponse = new APIViewData(0, $deployment, "Successfully Created Host Template " . $hostTemplateInfo['name']);
    }
    $apiResponse->printJson();
})->name('saigon-api-create-host-template');
$app->delete('/sapi/hosttemplate/:deployment/:hosttemplate', function ($deployment, $hosttemplate) use($app) {
    check_deployment_exists($app, $deployment);
    check_auth($app, $deployment);
    check_revision_status($deployment);
    $deployRev = RevDeploy::getDeploymentNextRev($deployment);
    if (preg_match('/,/', $hosttemplate)) {
        $hosttemplates = preg_split('/\\s?,\\s?/', $hosttemplate);
        foreach ($hosttemplates as $httemp) {
            RevDeploy::deleteDeploymentHostTemplate($deployment, $httemp, $deployRev);
        }
    } else {