]> granicus.if.org Git - icinga2/commitdiff
Revert "Add statusmap_image and coords host attributes."
authorMichael Friedrich <michael.friedrich@netways.de>
Tue, 22 Apr 2014 10:09:24 +0000 (12:09 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Tue, 22 Apr 2014 10:09:24 +0000 (12:09 +0200)
This reverts commit 252980a6bdb9a47c1828b2a34a3738e5fa82fe51.

Refs #6044

components/compat/statusdatawriter.cpp
components/livestatus/hoststable.cpp
doc/4.3-object-types.md
doc/8-differences-between-icinga-1x-and-2.md
lib/db_ido/hostdbobject.cpp
lib/icinga/compatutility.cpp
lib/icinga/compatutility.h
lib/icinga/host.ti
lib/icinga/icinga-type.conf
test/livestatus/queries/host/legacy

index dba05b265a2b8b487f7dbc0ca71782d503488914..c0101a4bd4dd2d739287b3471d112386206b74bb 100644 (file)
@@ -235,17 +235,11 @@ void StatusDataWriter::DumpHostObject(std::ostream& fp, const Host::Ptr& host)
        String action_url = host->GetActionUrl();
        String icon_image = host->GetIconImage();
        String icon_image_alt = host->GetIconImageAlt();
-       String statusmap_image = host->GetStatusmapImage();
+       String statusmap_image = CompatUtility::GetCustomAttributeConfig(host, "statusmap_image");
        String display_name = host->GetDisplayName();
        String address = host->GetAddress();
        String address6 = host->GetAddress6();
 
-       double x_2d, y_2d;
-       CompatUtility::GetHost2dCoordX(host, &x_2d);
-       CompatUtility::GetHost2dCoordY(host, &y_2d);
-
-       String coords = Convert::ToString(x_2d) + "," + Convert::ToString(y_2d);
-
        fp << "define host {" "\n"
              "\t" "host_name" "\t" << host->GetName() << "\n";
        if (!display_name.IsEmpty()) {
@@ -268,8 +262,6 @@ void StatusDataWriter::DumpHostObject(std::ostream& fp, const Host::Ptr& host)
              fp << "\t" "icon_image_alt" "\t" << icon_image_alt << "\n";
        if (!statusmap_image.IsEmpty())
              fp << "\t" "statusmap_image" "\t" << statusmap_image << "\n";
-       if (!coords.IsEmpty())
-             fp << "\t" "2d_coords" "\t" << coords << "\n";
 
        std::set<Checkable::Ptr> parents = host->GetParents();
 
index d46246e22a8a43428cb666e28146dbbd8293fba9..5077438c1e52a3d7c8d701f9b68539755d8dd4de 100644 (file)
@@ -821,11 +821,7 @@ Value HostsTable::X2dAccessor(const Value& row)
        if (!host)
                return Empty;
 
-       double coord;
-       if (!CompatUtility::GetHost2dCoordX(host, &coord))
-               return Empty;
-
-       return coord;
+       return CompatUtility::GetHost2dCoordX(host);
 }
 
 Value HostsTable::Y2dAccessor(const Value& row)
@@ -835,11 +831,7 @@ Value HostsTable::Y2dAccessor(const Value& row)
        if (!host)
                return Empty;
 
-       double coord;
-       if (!CompatUtility::GetHost2dCoordY(host, &coord))
-               return Empty;
-
-       return coord;
+       return CompatUtility::GetHost2dCoordY(host);
 }
 
 Value HostsTable::LatencyAccessor(const Value& row)
index 2f14aed065a5a1c008383d49cf17e2574623552f..d467ddca8636b2f48680c577b8068aad75ea5333 100644 (file)
@@ -45,15 +45,17 @@ Attributes:
   notes_url       |**Optional.** Url for notes for the host (for example, in notification commands).
   action_url      |**Optional.** Url for actions for the host (for example, an external graphing tool).
   icon_image      |**Optional.** Icon image for the host. Required for external interfaces only.
-  icon_image_alt  |**Optional.** Icon image description for the host. Required for external interfaces only.
-  statusmap_image |**Optional.** Statusmap image for the host. Required for external interfaces only.
-  coords          |**Optional.** A dictionary containing the keys `x_2d` and `y_2d` as floating point values. Required for external interfaces and status maps.
+  icon_image_alt  |**Optional.** Icon image description for the host. Required for external interface only.
 
 > **Best Practice**
 >
 > The `address` and `address6` attributes are required for running commands using
 > the `$address$` and `$address6` runtime macros.
 
+Unlike Icinga 1.x the `statusmap_image` and `2d_coords` attributes are
+custom attributes only in Icinga 2.
+
+
 ### <a id="objecttype-hostgroup"></a> HostGroup
 
 A group of hosts.
index 9edab9d169b947f7d1bccb004247cbda3566a049..28c99b5ca475d9a5cabfe2d3cd1520d22c72508f 100644 (file)
@@ -168,6 +168,18 @@ Icinga 2 allows you to define custom attributes in the `vars` dictionary.
 The `notes`, `notes_url`, `action_url`, `icon_image`, `icon_image_alt`
 attributes for host and service objects are still available in Icinga 2.
 
+### <a id="differences-1x-2-action-url-notes-url-notes"></a> Statusmap Image, 2D Coords
+
+These attributes can be set using the `vars` dictionary in Icinga 2 `Host`
+or `Service` objects:
+
+    vars = {
+        "2d_coords" = "1,2"
+        statusmap_image = "../../images/logos/icinga.gif"
+    }
+
+External interfaces will recognize and display these attributes accordingly.
+
 ### <a id="differences-1x-2-custom-variables"></a> Custom Variables
 
 Icinga 1.x custom variable attributes must be prefixed using an underscore (`_`).
@@ -178,6 +190,8 @@ In Icinga 2 these attributes must be added to the `vars` dictionary as custom at
         CV = "my custom cmdb description"
     }
 
+TODO
+
 ## <a id="differences-1x-2-host-service-relation"></a> Host Service Relation
 
 In Icinga 1.x a service object is associated with a host by defining the
@@ -518,6 +532,8 @@ object for the escalation itself.
 
 ### <a id="differences-1x-2-notification-options"></a> Notification Options
 
+TODO
+
 Unlike Icinga 1.x with the 'notification_options' attribute with comma-separated
 state and type filters, Icinga 2 uses two configuration attributes for that.
 All state and type filter use long names or'd with a pipe together
index 0e5e1f309ee9ba658cf10fef687734b015c28191..8b597e504128cb911c908b81f814e552b3378284 100644 (file)
@@ -102,15 +102,16 @@ Dictionary::Ptr HostDbObject::GetConfigFields(void) const
        fields->Set("action_url", host->GetActionUrl());
        fields->Set("icon_image", host->GetIconImage());
        fields->Set("icon_image_alt", host->GetIconImageAlt());
-       fields->Set("statusmap_image", host->GetStatusmapImage());
-
-       double x_2d, y_2d;
-       if (CompatUtility::GetHost2dCoordX(host, &x_2d) && CompatUtility::GetHost2dCoordY(host, &y_2d)) {
-               fields->Set("have_2d_coords", 1);
-               fields->Set("x_2d", x_2d);
-               fields->Set("y_2d", y_2d);
-       } else
-               fields->Set("have_2d_coords", 0);
+       fields->Set("statusmap_image", CompatUtility::GetCustomAttributeConfig(host, "statusmap_image"));
+
+       Host2dCoords coords = CompatUtility::GetHost2dCoords(host);
+
+       fields->Set("have_2d_coords", coords.have_2d_coords);
+
+       if (coords.have_2d_coords) {
+               fields->Set("x_2d", coords.x_2d);
+               fields->Set("y_2d", coords.y_2d);
+       }
 
        /* deprecated in 1.x */
        fields->Set("have_3d_coords", 0);
index b7645fd9cad033087182b2f7d8becf3a2a71d5f3..92f67eca6455992f3ad0fb69c3042a0b3653c23b 100644 (file)
@@ -70,28 +70,52 @@ String CompatUtility::GetHostAlias(const Host::Ptr& host)
                return host->GetDisplayName();
 }
 
-bool CompatUtility::GetHost2dCoordX(const Host::Ptr& host, double *coord)
+Host2dCoords CompatUtility::GetHost2dCoords(const Host::Ptr& host)
 {
-       Dictionary::Ptr coords = host->GetCoords();
+       ASSERT(host->OwnsLock());
+
+       Dictionary::Ptr vars = host->GetVars();
+       Host2dCoords bag;
+
+       if (vars) {
+               String coords = vars->Get("2d_coords");
+               bag.have_2d_coords = (!coords.IsEmpty() ? 1 : 0);
+
+               std::vector<String> tokens;
+               boost::algorithm::split(tokens, coords, boost::is_any_of(","));
 
-       if (!coords)
-               return false;
+               if (tokens.size() != 2)
+                       bag.have_2d_coords = 0;
 
-       *coord = coords->Get("x_2d");
+               if (bag.have_2d_coords == 1) {
+                       bag.x_2d = tokens[0];
+                       bag.y_2d = tokens[1];
+               }
+       } else {
+               bag.have_2d_coords = 0;
+       }
 
-       return true;
+       return bag;
 }
 
-bool CompatUtility::GetHost2dCoordY(const Host::Ptr& host, double *coord)
+String CompatUtility::GetHost2dCoordX(const Host::Ptr& host)
 {
-       Dictionary::Ptr coords = host->GetCoords();
+       Host2dCoords bag = GetHost2dCoords(host);
 
-       if (!coords)
-               return false;
+       if (bag.have_2d_coords == 0)
+               return Empty;
+
+       return bag.x_2d;
+}
 
-       *coord = coords->Get("y_2d");
+String CompatUtility::GetHost2dCoordY(const Host::Ptr& host)
+{
+       Host2dCoords bag = GetHost2dCoords(host);
+
+       if (bag.have_2d_coords == 0)
+               return Empty;
 
-       return true;
+       return bag.y_2d;
 }
 
 int CompatUtility::GetHostNotifyOnDown(const Host::Ptr& host)
index 2b05bde314b474c67916cc3b383d4916ed8cac6f..d88109f4f98b3ee0546eec2a6aa469f0ac68ca6e 100644 (file)
 namespace icinga
 {
 
+/**
+ * @ingroup icinga
+ */
+struct Host2dCoords {
+       int have_2d_coords;
+       String x_2d;
+       String y_2d;
+};
+
 /**
  * Compatibility utility functions.
  *
@@ -42,8 +51,9 @@ public:
 
        /* host */
        static String GetHostAlias(const Host::Ptr& host);
-       static bool GetHost2dCoordX(const Host::Ptr& host, double *coord);
-       static bool GetHost2dCoordY(const Host::Ptr& host, double *coord);
+       static Host2dCoords GetHost2dCoords(const Host::Ptr& host);
+       static String GetHost2dCoordX(const Host::Ptr& host);
+       static String GetHost2dCoordY(const Host::Ptr& host);
        static int GetHostNotifyOnDown(const Host::Ptr& host);
        static int GetHostNotifyOnUnreachable(const Host::Ptr& host);
 
index 2028ac1ce4e7c5943e0a9edf3431e173fc867b13..a45493258f90c23248dff48bce2410d7f5c7efeb 100644 (file)
@@ -18,8 +18,6 @@ class Host : Checkable
 
        [config] String address;
        [config] String address6;
-       [config] String statusmap_image;
-       [config] Dictionary::Ptr coords;
 };
 
 }
index 6eb41dc826c334ee1f11d892a48ad169be73b71f..048d6535a6ac031a6ff2a4f77ba0260d8840b85c 100644 (file)
 
        %attribute %string "address",
        %attribute %string "address6",
-       %attribute %string "statusmap_image",
-       %attribute %dictionary "coords" {
-               %attribute %number "x_2d",
-               %attribute %number "y_2d"
-       }
 }
 
 %type HostGroup {
index 38cfd1392e0cf30e206196806d41554a66bb1908..7a949326d52e936fbdd4e92f79a12bf852bc4983 100644 (file)
@@ -1,4 +1,4 @@
 GET hosts
-Columns: name notes notes_url action_url icon_image icon_image_alt statusmap_image x_2d y_2d
+Columns: name notes notes_url action_url icon_image icon_image_alt
 ResponseHeader: fixed16