]> granicus.if.org Git - icinga2/commitdiff
Include default global zones during node wizard/setup 5710/head
authorMichael <mcktr55@gmail.com>
Mon, 30 Oct 2017 18:49:54 +0000 (19:49 +0100)
committerMichael Friedrich <michael.friedrich@icinga.com>
Tue, 31 Oct 2017 11:07:12 +0000 (12:07 +0100)
This changes the GenerateNodeMasterIcingaConfig and GenerateNodeIcingaConfig
functions inside the nodeutillity class to the effect, that the default global
zones global-templates and director-global will be written to the generated
zones.conf that is created during the node wizard/setup.

refs #5707

Signed-off-by: Michael Friedrich <michael.friedrich@icinga.com>
lib/cli/nodesetupcommand.cpp
lib/cli/nodeutility.cpp
lib/cli/nodeutility.hpp
lib/cli/nodewizardcommand.cpp

index c452c226799a8bec67086bdda1eaff952cc65e7d..60bdef14368fc228aca84e0574d0336f3e6503e5 100644 (file)
@@ -159,7 +159,12 @@ int NodeSetupCommand::SetupMaster(const boost::program_options::variables_map& v
        /* write zones.conf and update with zone + endpoint information */
        Log(LogInformation, "cli", "Generating zone and object configuration.");
 
-       NodeUtility::GenerateNodeMasterIcingaConfig();
+       std::vector<String> globalZones;
+
+       globalZones.push_back("global-templates");
+       globalZones.push_back("director-global");
+
+       NodeUtility::GenerateNodeMasterIcingaConfig(globalZones);
 
        /* update the ApiListener config - SetupMaster() will always enable it */
        Log(LogInformation, "cli", "Updating the APIListener feature.");
@@ -419,7 +424,12 @@ int NodeSetupCommand::SetupNode(const boost::program_options::variables_map& vm,
 
        Log(LogInformation, "cli", "Generating zone and object configuration.");
 
-       NodeUtility::GenerateNodeIcingaConfig(vm["endpoint"].as<std::vector<std::string> >());
+       std::vector<String> globalZones;
+
+       globalZones.push_back("global-templates");
+       globalZones.push_back("director-global");
+
+       NodeUtility::GenerateNodeIcingaConfig(vm["endpoint"].as<std::vector<std::string> >(), globalZones);
 
        /* update constants.conf with NodeName = CN */
        if (cn != Utility::GetFQDN()) {
index 21c0e815ae22f44e5e7b7ec2d1bcdeb5c624460a..945ef0d3bf2680397cf0fa60be91e972ec770b20 100644 (file)
@@ -47,7 +47,7 @@ using namespace icinga;
  * Node Setup helpers
  */
 
-int NodeUtility::GenerateNodeIcingaConfig(const std::vector<std::string>& endpoints)
+int NodeUtility::GenerateNodeIcingaConfig(const std::vector<std::string>& endpoints, const std::vector<String>& globalZones)
 {
        Array::Ptr my_config = new Array();
 
@@ -111,6 +111,16 @@ int NodeUtility::GenerateNodeIcingaConfig(const std::vector<std::string>& endpoi
 
        my_zone->Set("endpoints", my_zone_members);
 
+       for (const String& globalzone : globalZones) {
+               Dictionary::Ptr myGlobalZone = new Dictionary();
+
+               myGlobalZone->Set("__name", globalzone);
+               myGlobalZone->Set("__type", "Zone");
+               myGlobalZone->Set("global", true);
+
+               my_config->Add(myGlobalZone);
+    }
+
        /* store the local config */
        my_config->Add(my_endpoint);
        my_config->Add(my_zone);
@@ -123,13 +133,14 @@ int NodeUtility::GenerateNodeIcingaConfig(const std::vector<std::string>& endpoi
        return 0;
 }
 
-int NodeUtility::GenerateNodeMasterIcingaConfig(void)
+int NodeUtility::GenerateNodeMasterIcingaConfig(const std::vector<String>& globalZones)
 {
        Array::Ptr my_config = new Array();
 
        /* store the local generated node master configuration */
        Dictionary::Ptr my_master_endpoint = new Dictionary();
        Dictionary::Ptr my_master_zone = new Dictionary();
+
        Array::Ptr my_master_zone_members = new Array();
 
        my_master_endpoint->Set("__name", new ConfigIdentifier("NodeName"));
@@ -145,6 +156,16 @@ int NodeUtility::GenerateNodeMasterIcingaConfig(void)
        my_config->Add(my_master_endpoint);
        my_config->Add(my_master_zone);
 
+       for (const String& globalzone : globalZones) {
+               Dictionary::Ptr myGlobalZone = new Dictionary();
+
+               myGlobalZone->Set("__name", globalzone);
+               myGlobalZone->Set("__type", "Zone");
+               myGlobalZone->Set("global", true);
+
+               my_config->Add(myGlobalZone);
+       }
+
        /* write the newly generated configuration */
        String zones_path = Application::GetSysconfDir() + "/icinga2/zones.conf";
 
index ba3be55c2b537d521b71d0e65f4b2f0912bd77b7..be345d3b81a84ab90cf22dce4a5f51a96b485dbe 100644 (file)
@@ -44,8 +44,8 @@ public:
        static void UpdateConstant(const String& name, const String& value);
 
        /* node setup helpers */
-       static int GenerateNodeIcingaConfig(const std::vector<std::string>& endpoints);
-       static int GenerateNodeMasterIcingaConfig(void);
+       static int GenerateNodeIcingaConfig(const std::vector<std::string>& endpoints, const std::vector<String>& globalZones);
+       static int GenerateNodeMasterIcingaConfig(const std::vector<String>& globalZones);
 
 private:
        NodeUtility(void);
index c3c003204e7ff1a5003b34fabbddbe5f85ba5389..905e4084ac9715d1ebaf6bb9c2373d53df46e310 100644 (file)
@@ -498,7 +498,12 @@ wizard_ticket:
        /* apilistener config */
        Log(LogInformation, "cli", "Generating local zones.conf.");
 
-       NodeUtility::GenerateNodeIcingaConfig(endpoints);
+       std::vector<String> globalZones;
+
+       globalZones.push_back("global-templates");
+       globalZones.push_back("director-global");
+
+       NodeUtility::GenerateNodeIcingaConfig(endpoints, globalZones);
 
        if (cn != Utility::GetFQDN()) {
                Log(LogWarning, "cli")
@@ -594,7 +599,12 @@ int NodeWizardCommand::MasterSetup(void) const
        else
                std::cout << "'api' feature already enabled.\n";
 
-       NodeUtility::GenerateNodeMasterIcingaConfig();
+       std::vector<String> globalZones;
+
+       globalZones.push_back("global-templates");
+       globalZones.push_back("director-global");
+
+       NodeUtility::GenerateNodeMasterIcingaConfig(globalZones);
 
        /* apilistener config */
        std::cout << ConsoleColorTag(Console_Bold)