]> granicus.if.org Git - icinga2/commitdiff
Unify setting the master zone name for 'node wizard|setup` in master mode
authorMichael Friedrich <michael.friedrich@icinga.com>
Fri, 6 Apr 2018 15:29:37 +0000 (17:29 +0200)
committerMichael Friedrich <michael.friedrich@icinga.com>
Fri, 6 Apr 2018 15:29:37 +0000 (17:29 +0200)
lib/cli/nodesetupcommand.cpp
lib/cli/nodeutility.cpp
lib/cli/nodeutility.hpp
lib/cli/nodewizardcommand.cpp

index bd7d7d409e0b99ecf206d0ae7838e1e2b3650062..dca96ff294bd61821a1ad9c1825bad2cbbd151db 100644 (file)
@@ -129,6 +129,15 @@ int NodeSetupCommand::SetupMaster(const boost::program_options::variables_map& v
        if (vm.count("cn"))
                cn = vm["cn"].as<std::string>();
 
+       /* Setup command hardcodes this as FQDN */
+       String endpointName = cn;
+
+       /* Allow to specify zone name. */
+       String zoneName = "master";
+
+       if (vm.count("zone"))
+               zoneName = vm["zone"].as<std::string>();
+
        /* check whether the user wants to generate a new certificate or not */
        String existingPath = ApiListener::GetCertsDir() + "/" + cn + ".crt";
 
@@ -174,9 +183,10 @@ int NodeSetupCommand::SetupMaster(const boost::program_options::variables_map& v
 
        globalZones.insert(globalZones.end(), setupGlobalZones.begin(), setupGlobalZones.end());
 
-       NodeUtility::GenerateNodeMasterIcingaConfig(globalZones);
+       /* Generate master configuration. */
+       NodeUtility::GenerateNodeMasterIcingaConfig(endpointName, zoneName, globalZones);
 
-       /* update the ApiListener config - SetupMaster() will always enable it */
+       /* Update the ApiListener config. */
        Log(LogInformation, "cli", "Updating the APIListener feature.");
 
        String apipath = FeatureUtility::GetFeaturesAvailablePath() + "/api.conf";
index 82417d5621acbe89cffd744e8551a6d80bc0dca4..5d4c6c90aac87138d2337e4b10b78e6ac6ea6453 100644 (file)
@@ -124,20 +124,21 @@ int NodeUtility::GenerateNodeIcingaConfig(const std::vector<std::string>& endpoi
        return 0;
 }
 
-int NodeUtility::GenerateNodeMasterIcingaConfig(const std::vector<String>& globalZones)
+int NodeUtility::GenerateNodeMasterIcingaConfig(const String& endpointName, const String& zoneName,
+       const std::vector<String>& globalZones)
 {
        Array::Ptr my_config = new Array();
 
        /* store the local generated node master configuration */
        my_config->Add(new Dictionary({
-               { "__name", new ConfigIdentifier("NodeName") },
+               { "__name", endpointName },
                { "__type", "Endpoint" }
        }));
 
        my_config->Add(new Dictionary({
-               { "__name", new ConfigIdentifier("ZoneName") },
+               { "__name", zoneName },
                { "__type", "Zone" },
-               { "endpoints", new Array({ new ConfigIdentifier("NodeName") }) }
+               { "endpoints", new Array({ endpointName }) }
        }));
 
        for (const String& globalzone : globalZones) {
index c9339bf1e4e2bba02538a841785657a139b2b572..b9c66ff64a14097a4e39915a4f041111077070a2 100644 (file)
@@ -47,7 +47,8 @@ public:
 
        /* node setup helpers */
        static int GenerateNodeIcingaConfig(const std::vector<std::string>& endpoints, const std::vector<String>& globalZones);
-       static int GenerateNodeMasterIcingaConfig(const std::vector<String>& globalZones);
+       static int GenerateNodeMasterIcingaConfig(const String& endpointName, const String& zoneName,
+               const std::vector<String>& globalZones);
 
 private:
        NodeUtility();
index 07a743c85b1f666e97769ad5f28cb43b35262d0d..384d8e5f2f6f71118dcc43472469a1240fa5f5eb 100644 (file)
@@ -623,6 +623,7 @@ int NodeWizardCommand::MasterSetup() const
        std::cout << ConsoleColorTag(Console_Bold)
                << "Generating master configuration for Icinga 2.\n"
                << ConsoleColorTag(Console_Normal);
+
        ApiSetupUtility::SetupMasterApiUser();
 
        if (!FeatureUtility::CheckFeatureEnabled("api"))
@@ -630,6 +631,20 @@ int NodeWizardCommand::MasterSetup() const
        else
                std::cout << "'api' feature already enabled.\n";
 
+       /* Setup command hardcodes this as FQDN */
+       String endpointName = cn;
+
+       /* Different zone name. */
+       std::cout << "\nMaster zone name [master]: ";
+       std::getline(std::cin, answer);
+
+       if (answer.empty())
+               answer = "master";
+
+       String zoneName = answer;
+       zoneName = zoneName.Trim();
+
+       /* Global zones. */
        std::vector<String> globalZones { "global-templates", "director-global" };
 
        std::cout << "\nDo you want to specify additional global zones? [y/N]: ";
@@ -671,7 +686,8 @@ wizard_global_zone_loop_start:
        } else
                Log(LogInformation, "cli", "No additional global Zones have been specified");
 
-       NodeUtility::GenerateNodeMasterIcingaConfig(globalZones);
+       /* Generate master configuration. */
+       NodeUtility::GenerateNodeMasterIcingaConfig(endpointName, zoneName, globalZones);
 
        /* apilistener config */
        std::cout << ConsoleColorTag(Console_Bold)