]> granicus.if.org Git - icinga2/commitdiff
Add {Host,Service}Group attributes: notes, notes_url, action_url.
authorMichael Friedrich <michael.friedrich@netways.de>
Thu, 24 Apr 2014 12:48:57 +0000 (14:48 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Thu, 24 Apr 2014 12:48:57 +0000 (14:48 +0200)
Fixes #6057

12 files changed:
components/compat/statusdatawriter.cpp
components/db_ido_mysql/schema/mysql.sql
components/db_ido_mysql/schema/upgrade/0.0.10.sql [new file with mode: 0644]
components/db_ido_pgsql/schema/pgsql.sql
components/db_ido_pgsql/schema/upgrade/0.0.10.sql [new file with mode: 0644]
components/livestatus/hostgroupstable.cpp
components/livestatus/servicegroupstable.cpp
lib/db_ido/hostgroupdbobject.cpp
lib/db_ido/servicegroupdbobject.cpp
lib/icinga/hostgroup.ti
lib/icinga/icinga-type.conf
lib/icinga/servicegroup.ti

index d45dc1317d7950c5fae86f9e221abd06b8b3c534..ea9fe55151fe0d7c8f466811f60adfb9cbcb36bc 100644 (file)
@@ -564,9 +564,23 @@ void StatusDataWriter::UpdateObjectsCache(void)
                std::ostringstream tempobjectfp;
                tempobjectfp << std::fixed;
 
+               String display_name = hg->GetDisplayName();
+               String notes = hg->GetNotes();
+               String notes_url = hg->GetNotesUrl();
+               String action_url = hg->GetActionUrl();
+
                tempobjectfp << "define hostgroup {" "\n"
                                "\t" "hostgroup_name" "\t" << hg->GetName() << "\n";
 
+               if (!display_name.IsEmpty())
+                       tempobjectfp << "\t" "alias" "\t" << display_name << "\n";
+               if (!notes.IsEmpty())
+                       tempobjectfp << "\t" "notes" "\t" << notes << "\n";
+               if (!notes_url.IsEmpty())
+                       tempobjectfp << "\t" "notes_url" "\t" << notes_url << "\n";
+               if (!action_url.IsEmpty())
+                       tempobjectfp << "\t" "action_url" "\t" << action_url << "\n";
+
                DumpCustomAttributes(tempobjectfp, hg);
 
                tempobjectfp << "\t" "members" "\t";
@@ -581,9 +595,23 @@ void StatusDataWriter::UpdateObjectsCache(void)
                std::ostringstream tempobjectfp;
                tempobjectfp << std::fixed;
 
+               String display_name = sg->GetDisplayName();
+               String notes = sg->GetNotes();
+               String notes_url = sg->GetNotesUrl();
+               String action_url = sg->GetActionUrl();
+
                tempobjectfp << "define servicegroup {" "\n"
                                "\t" "servicegroup_name" "\t" << sg->GetName() << "\n";
 
+               if (!display_name.IsEmpty())
+                       tempobjectfp << "\t" "alias" "\t" << display_name << "\n";
+               if (!notes.IsEmpty())
+                       tempobjectfp << "\t" "notes" "\t" << notes << "\n";
+               if (!notes_url.IsEmpty())
+                       tempobjectfp << "\t" "notes_url" "\t" << notes_url << "\n";
+               if (!action_url.IsEmpty())
+                       tempobjectfp << "\t" "action_url" "\t" << action_url << "\n";
+
                DumpCustomAttributes(tempobjectfp, sg);
 
                tempobjectfp << "\t" "members" "\t";
index 06d2dd80745f8387a09a309efd1eeb48bb1b6ad1..a462e2a55dd00a073f351e994922e8ca3e00c0c5 100644 (file)
@@ -600,6 +600,9 @@ CREATE TABLE IF NOT EXISTS icinga_hostgroups (
   config_type smallint default 0,
   hostgroup_object_id bigint unsigned default 0,
   alias TEXT character set latin1  default '',
+  notes TEXT character set latin1  default NULL,
+  notes_url TEXT character set latin1  default NULL,
+  action_url TEXT character set latin1  default NULL,
   PRIMARY KEY  (hostgroup_id),
   UNIQUE KEY instance_id (instance_id,hostgroup_object_id)
 ) ENGINE=InnoDB  COMMENT='Hostgroup definitions';
@@ -1086,6 +1089,9 @@ CREATE TABLE IF NOT EXISTS icinga_servicegroups (
   config_type smallint default 0,
   servicegroup_object_id bigint unsigned default 0,
   alias TEXT character set latin1  default '',
+  notes TEXT character set latin1  default NULL,
+  notes_url TEXT character set latin1  default NULL,
+  action_url TEXT character set latin1  default NULL,
   PRIMARY KEY  (servicegroup_id),
   UNIQUE KEY instance_id (instance_id,config_type,servicegroup_object_id)
 ) ENGINE=InnoDB  COMMENT='Servicegroup definitions';
diff --git a/components/db_ido_mysql/schema/upgrade/0.0.10.sql b/components/db_ido_mysql/schema/upgrade/0.0.10.sql
new file mode 100644 (file)
index 0000000..1fdff95
--- /dev/null
@@ -0,0 +1,8 @@
+
+
+ALTER TABLE icinga_hostgroups ADD COLUMN notes TEXT character set latin1  default NULL;
+ALTER TABLE icinga_hostgroups ADD COLUMN notes_url TEXT character set latin1  default NULL;
+ALTER TABLE icinga_hostgroups ADD COLUMN action_url TEXT character set latin1  default NULL;
+ALTER TABLE icinga_servicegroups ADD COLUMN notes TEXT character set latin1  default NULL;
+ALTER TABLE icinga_servicegroups ADD COLUMN notes_url TEXT character set latin1  default NULL;
+ALTER TABLE icinga_servicegroups ADD COLUMN action_url TEXT character set latin1  default NULL;
index eb6ab4234d208c6c5bad035a931d71e333e1872a..f568ca8ccf88dc5610eba6c497a7fc12cf2fd67f 100644 (file)
@@ -627,6 +627,9 @@ CREATE TABLE  icinga_hostgroups (
   config_type INTEGER  default 0,
   hostgroup_object_id bigint default 0,
   alias TEXT  default '',
+  notes TEXT  default NULL,
+  notes_url TEXT  default NULL,
+  action_url TEXT  default NULL,
   CONSTRAINT PK_hostgroup_id PRIMARY KEY (hostgroup_id) ,
   CONSTRAINT UQ_hostgroups UNIQUE (instance_id,hostgroup_object_id)
 ) ;
@@ -1113,6 +1116,9 @@ CREATE TABLE  icinga_servicegroups (
   config_type INTEGER  default 0,
   servicegroup_object_id bigint default 0,
   alias TEXT  default '',
+  notes TEXT  default NULL,
+  notes_url TEXT  default NULL,
+  action_url TEXT  default NULL,
   CONSTRAINT PK_servicegroup_id PRIMARY KEY (servicegroup_id) ,
   CONSTRAINT UQ_servicegroups UNIQUE (instance_id,config_type,servicegroup_object_id)
 ) ;
diff --git a/components/db_ido_pgsql/schema/upgrade/0.0.10.sql b/components/db_ido_pgsql/schema/upgrade/0.0.10.sql
new file mode 100644 (file)
index 0000000..c801259
--- /dev/null
@@ -0,0 +1,8 @@
+
+
+ALTER TABLE icinga_hostgroups ADD COLUMN notes TEXT default NULL;
+ALTER TABLE icinga_hostgroups ADD COLUMN notes_url TEXT default NULL;
+ALTER TABLE icinga_hostgroups ADD COLUMN action_url TEXT default NULL;
+ALTER TABLE icinga_servicegroups ADD COLUMN notes TEXT default NULL;
+ALTER TABLE icinga_servicegroups ADD COLUMN notes_url TEXT default NULL;
+ALTER TABLE icinga_servicegroups ADD COLUMN action_url TEXT default NULL;
index c9c73a708077f0591dfae9b2fd713436a9f67fd7..2e0c4134f82dc7472ec97710feed84f71ea341eb 100644 (file)
@@ -85,32 +85,17 @@ Value HostGroupsTable::AliasAccessor(const Value& row)
 
 Value HostGroupsTable::NotesAccessor(const Value& row)
 {
-       Dictionary::Ptr vars = static_cast<HostGroup::Ptr>(row)->GetVars();
-
-       if (!vars)
-               return Empty;
-
-       return vars->Get("notes");
+       return static_cast<HostGroup::Ptr>(row)->GetNotes();
 }
 
 Value HostGroupsTable::NotesUrlAccessor(const Value& row)
 {
-       Dictionary::Ptr vars = static_cast<HostGroup::Ptr>(row)->GetVars();
-
-       if (!vars)
-               return Empty;
-
-       return vars->Get("notes_url");
+       return static_cast<HostGroup::Ptr>(row)->GetNotesUrl();
 }
 
 Value HostGroupsTable::ActionUrlAccessor(const Value& row)
 {
-       Dictionary::Ptr vars = static_cast<HostGroup::Ptr>(row)->GetVars();
-
-       if (!vars)
-               return Empty;
-
-       return vars->Get("action_url");
+       return static_cast<HostGroup::Ptr>(row)->GetActionUrl();
 }
 
 Value HostGroupsTable::MembersAccessor(const Value& row)
index 7e48eb0d7fd64cd4ff5b4a66b49425985461c592..7f4a20afdd539237aa6740a71f9611780c8c6807 100644 (file)
@@ -76,32 +76,17 @@ Value ServiceGroupsTable::AliasAccessor(const Value& row)
 
 Value ServiceGroupsTable::NotesAccessor(const Value& row)
 {
-       Dictionary::Ptr vars = static_cast<ServiceGroup::Ptr>(row)->GetVars();
-
-       if (!vars)
-               return Empty;
-
-       return vars->Get("notes");
+       return static_cast<ServiceGroup::Ptr>(row)->GetNotes();
 }
 
 Value ServiceGroupsTable::NotesUrlAccessor(const Value& row)
 {
-       Dictionary::Ptr vars = static_cast<ServiceGroup::Ptr>(row)->GetVars();
-
-       if (!vars)
-               return Empty;
-
-       return vars->Get("notes_url");
+       return static_cast<ServiceGroup::Ptr>(row)->GetNotesUrl();
 }
 
 Value ServiceGroupsTable::ActionUrlAccessor(const Value& row)
 {
-       Dictionary::Ptr vars = static_cast<ServiceGroup::Ptr>(row)->GetVars();
-
-       if (!vars)
-               return Empty;
-
-       return vars->Get("action_url");
+       return static_cast<ServiceGroup::Ptr>(row)->GetActionUrl();
 }
 
 Value ServiceGroupsTable::MembersAccessor(const Value& row)
index 1f2945b57d1366f744a483bf31969ebb8215406a..e569ff5d78f9b4912e85784381432c57c44ba6c2 100644 (file)
@@ -39,6 +39,9 @@ Dictionary::Ptr HostGroupDbObject::GetConfigFields(void) const
        HostGroup::Ptr group = static_pointer_cast<HostGroup>(GetObject());
 
        fields->Set("alias", group->GetDisplayName());
+       fields->Set("notes", group->GetNotes());
+       fields->Set("notes_url", group->GetNotesUrl());
+       fields->Set("action_url", group->GetActionUrl());
 
        return fields;
 }
index 5faf2bd68301bd024e07b545350d66df847f48b2..a119bcb34ef1572d48fb90d591162404fb2d8803 100644 (file)
@@ -38,6 +38,9 @@ Dictionary::Ptr ServiceGroupDbObject::GetConfigFields(void) const
        ServiceGroup::Ptr group = static_pointer_cast<ServiceGroup>(GetObject());
 
        fields->Set("alias", group->GetDisplayName());
+       fields->Set("notes", group->GetNotes());
+       fields->Set("notes_url", group->GetNotesUrl());
+       fields->Set("action_url", group->GetActionUrl());
 
        return fields;
 }
index 43f54c8f63a5b9369b41991038b9f9ccc4a18d78..a254856a72cb79283a35ee81517f0143367ebeea 100644 (file)
@@ -15,6 +15,9 @@ class HostGroup : DynamicObject
        };
 
        [config] Array::Ptr groups;
+       [config] String notes;
+       [config] String notes_url;
+       [config] String action_url;
 };
 
 }
index 048d6535a6ac031a6ff2a4f77ba0260d8840b85c..e648dabd1f35fa878cc749cafe6499341e6555f9 100644 (file)
        %attribute %array "groups" {
                %attribute %name(HostGroup) "*"
        },
+
+       %attribute %string "notes",
+       %attribute %string "notes_url",
+       %attribute %string "action_url",
 }
 
 %type Service %inherits Checkable {
        %attribute %array "groups" {
                %attribute %name(ServiceGroup) "*"
        },
+
+       %attribute %string "notes",
+       %attribute %string "notes_url",
+       %attribute %string "action_url",
 }
 
 %type Notification {
index 5d79331eef67424c3ccbe29d6743978672944353..383e993bc2670ac722221cfb45230cff67eabc88 100644 (file)
@@ -15,6 +15,9 @@ class ServiceGroup : DynamicObject
        };
 
        [config] Array::Ptr groups;
+       [config] String notes;
+       [config] String notes_url;
+       [config] String action_url;
 };
 
 }