mirror of https://github.com/Icinga/icinga2.git
parent
b77c9edca0
commit
d01f09f3ef
|
@ -130,7 +130,7 @@ void ConfigObject::ModifyAttribute(const String& attr, const Value& value, bool
|
|||
int fid = type->GetFieldId(fieldName);
|
||||
Field field = type->GetFieldInfo(fid);
|
||||
|
||||
if (field.Attributes & FAInternal || field.Attributes & FANoModify)
|
||||
if (field.Attributes & FANoUserModify)
|
||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Attribute cannot be modified."));
|
||||
|
||||
if (field.Attributes & FAConfig) {
|
||||
|
|
|
@ -68,8 +68,8 @@ private:
|
|||
|
||||
abstract class ConfigObject : ConfigObjectBase
|
||||
{
|
||||
[config, internal, no_modify] String __name (Name);
|
||||
[config, no_modify] String "name" (ShortName) {
|
||||
[config, no_user_modify] String __name (Name);
|
||||
[config, no_user_modify] String "name" (ShortName) {
|
||||
get {{{
|
||||
if (m_ShortName.IsEmpty())
|
||||
return GetName();
|
||||
|
@ -77,24 +77,24 @@ abstract class ConfigObject : ConfigObjectBase
|
|||
return m_ShortName;
|
||||
}}}
|
||||
};
|
||||
[config, internal, get_protected, no_modify] String type (TypeNameV);
|
||||
[config, get_protected, no_user_modify] String type (TypeNameV);
|
||||
[config] name(Zone) zone (ZoneName);
|
||||
[config] String package;
|
||||
[config, internal, get_protected, no_modify] Array::Ptr templates;
|
||||
[get_protected] bool active;
|
||||
[get_protected] bool paused {
|
||||
[config, no_user_modify] String package;
|
||||
[config, get_protected, no_user_modify] Array::Ptr templates;
|
||||
[get_protected, no_user_modify] bool active;
|
||||
[get_protected, no_user_modify] bool paused {
|
||||
default {{{ return true; }}}
|
||||
};
|
||||
[get_protected, internal, no_modify] bool start_called;
|
||||
[get_protected, internal, no_modify] bool stop_called;
|
||||
[get_protected, internal, no_modify] bool pause_called;
|
||||
[get_protected, internal, no_modify] bool resume_called;
|
||||
[get_protected, no_user_view, no_user_modify] bool start_called;
|
||||
[get_protected, no_user_view, no_user_modify] bool stop_called;
|
||||
[get_protected, no_user_view, no_user_modify] bool pause_called;
|
||||
[get_protected, no_user_view, no_user_modify] bool resume_called;
|
||||
[enum] HAMode ha_mode (HAMode);
|
||||
[protected, no_modify] Dictionary::Ptr extensions;
|
||||
[protected, no_user_view, no_user_modify] Dictionary::Ptr extensions;
|
||||
|
||||
[protected, no_modify] bool state_loaded;
|
||||
Dictionary::Ptr original_attributes;
|
||||
[state] double version {
|
||||
[protected, no_user_view, no_user_modify] bool state_loaded;
|
||||
[no_user_modify] Dictionary::Ptr original_attributes;
|
||||
[state, no_user_modify] double version {
|
||||
default {{{ return 0; }}}
|
||||
};
|
||||
};
|
||||
|
|
|
@ -36,10 +36,10 @@ enum FieldAttribute
|
|||
FAEphemeral = 1,
|
||||
FAConfig = 2,
|
||||
FAState = 4,
|
||||
FAInternal = 64,
|
||||
FARequired = 512,
|
||||
FANavigation = 1024,
|
||||
FANoModify = 2048
|
||||
FARequired = 256,
|
||||
FANavigation = 512,
|
||||
FANoUserModify = 1024,
|
||||
FANoUserView = 2048
|
||||
};
|
||||
|
||||
class Type;
|
||||
|
|
|
@ -73,7 +73,7 @@ std::vector<String> icinga::GetFieldCompletionSuggestions(const Type::Ptr& type,
|
|||
for (int i = 0; i < type->GetFieldCount(); i++) {
|
||||
Field field = type->GetFieldInfo(i);
|
||||
|
||||
if (!(field.Attributes & FAConfig) || field.Attributes & FAInternal)
|
||||
if (field.Attributes & FANoUserView)
|
||||
continue;
|
||||
|
||||
if (strcmp(field.TypeName, "int") != 0 && strcmp(field.TypeName, "double") != 0
|
||||
|
|
|
@ -51,9 +51,9 @@ abstract class DbConnection : ConfigObject
|
|||
default {{{ return 60; }}}
|
||||
};
|
||||
|
||||
String schema_version;
|
||||
bool connected;
|
||||
bool should_connect {
|
||||
[no_user_modify] String schema_version;
|
||||
[no_user_modify] bool connected;
|
||||
[no_user_modify] bool should_connect {
|
||||
default {{{ return true; }}}
|
||||
};
|
||||
};
|
||||
|
|
|
@ -137,10 +137,10 @@ abstract class Checkable : CustomVarObject
|
|||
default {{{ return AcknowledgementNone; }}}
|
||||
};
|
||||
[state] double acknowledgement_expiry;
|
||||
[state] Dictionary::Ptr comments {
|
||||
[state, no_user_modify] Dictionary::Ptr comments {
|
||||
default {{{ return new Dictionary(); }}}
|
||||
};
|
||||
[state] Dictionary::Ptr downtimes {
|
||||
[state, no_user_modify] Dictionary::Ptr downtimes {
|
||||
default {{{ return new Dictionary(); }}}
|
||||
};
|
||||
[state] bool force_next_notification;
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace icinga
|
|||
|
||||
class Host : Checkable
|
||||
{
|
||||
[config, no_modify] array(name(HostGroup)) groups {
|
||||
[config, no_user_modify] array(name(HostGroup)) groups {
|
||||
default {{{ return new Array(); }}}
|
||||
};
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ class HostGroup : CustomVarObject
|
|||
}}}
|
||||
};
|
||||
|
||||
[config] array(name(HostGroup)) groups;
|
||||
[config, no_user_modify] array(name(HostGroup)) groups;
|
||||
[config] String notes;
|
||||
[config] String notes_url;
|
||||
[config] String action_url;
|
||||
|
|
|
@ -86,7 +86,7 @@ class Notification : CustomVarObject < NotificationNameComposer
|
|||
}}}
|
||||
};
|
||||
|
||||
[state] Array::Ptr notified_users {
|
||||
[state, no_user_modify] Array::Ptr notified_users {
|
||||
default {{{ return new Array(); }}}
|
||||
};
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ class Service : Checkable < ServiceNameComposer
|
|||
{
|
||||
load_after Host;
|
||||
|
||||
[config, no_modify] array(name(ServiceGroup)) groups {
|
||||
[config, no_user_modify] array(name(ServiceGroup)) groups {
|
||||
default {{{ return new Array(); }}}
|
||||
};
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ class ServiceGroup : CustomVarObject
|
|||
}}}
|
||||
};
|
||||
|
||||
[config] array(name(ServiceGroup)) groups;
|
||||
[config, no_user_modify] array(name(ServiceGroup)) groups;
|
||||
[config] String notes;
|
||||
[config] String notes_url;
|
||||
[config] String action_url;
|
||||
|
|
|
@ -37,9 +37,9 @@ class TimePeriod : CustomVarObject
|
|||
};
|
||||
[config] Dictionary::Ptr ranges;
|
||||
[config, required] Function::Ptr update;
|
||||
[state] Value valid_begin;
|
||||
[state] Value valid_end;
|
||||
[state] Array::Ptr segments;
|
||||
[state, no_user_modify] Value valid_begin;
|
||||
[state, no_user_modify] Value valid_end;
|
||||
[state, no_user_modify] Array::Ptr segments;
|
||||
[no_storage] bool is_inside {
|
||||
get;
|
||||
};
|
||||
|
|
|
@ -35,7 +35,7 @@ class User : CustomVarObject
|
|||
return m_DisplayName;
|
||||
}}}
|
||||
};
|
||||
[config, no_modify] array(name(UserGroup)) groups {
|
||||
[config, no_user_modify] array(name(UserGroup)) groups {
|
||||
default {{{ return new Array(); }}}
|
||||
};
|
||||
[config, navigation] name(TimePeriod) period (PeriodRaw) {
|
||||
|
|
|
@ -35,7 +35,7 @@ class UserGroup : CustomVarObject
|
|||
}}}
|
||||
};
|
||||
|
||||
[config] array(name(UserGroup)) groups;
|
||||
[config, no_user_modify] array(name(UserGroup)) groups;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -43,9 +43,9 @@ class ApiListener : ConfigObject
|
|||
|
||||
[config] String ticket_salt;
|
||||
|
||||
[state] double log_message_timestamp;
|
||||
[state, no_user_modify] double log_message_timestamp;
|
||||
|
||||
String identity;
|
||||
[no_user_modify] String identity;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace icinga
|
|||
|
||||
class ApiUser : ConfigObject
|
||||
{
|
||||
[config] String password;
|
||||
[config, no_user_view] String password;
|
||||
[config] String client_cn (ClientCN);
|
||||
[config] array(Value) permissions;
|
||||
};
|
||||
|
|
|
@ -37,8 +37,8 @@ class Endpoint : ConfigObject
|
|||
[state] double local_log_position;
|
||||
[state] double remote_log_position;
|
||||
|
||||
bool connecting;
|
||||
bool syncing;
|
||||
[no_user_modify] bool connecting;
|
||||
[no_user_modify] bool syncing;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -160,6 +160,10 @@ bool ObjectQueryHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& re
|
|||
|
||||
Value val = joinedObj->GetField(fid);
|
||||
|
||||
/* hide attributes which shouldn't be user-visible */
|
||||
if (field.Attributes & FANoUserView)
|
||||
continue;
|
||||
|
||||
/* hide internal navigation fields */
|
||||
if (field.Attributes & FANavigation) {
|
||||
Value nval = joinedObj->NavigateField(fid);
|
||||
|
|
|
@ -148,9 +148,10 @@ bool TypeQueryHandler::HandleRequest(const ApiUser::Ptr& user, HttpRequest& requ
|
|||
|
||||
attributeInfo->Set("config", static_cast<bool>(field.Attributes & FAConfig));
|
||||
attributeInfo->Set("state", static_cast<bool>(field.Attributes & FAState));
|
||||
attributeInfo->Set("internal", static_cast<bool>(field.Attributes & FAInternal));
|
||||
attributeInfo->Set("required", static_cast<bool>(field.Attributes & FARequired));
|
||||
attributeInfo->Set("navigation", static_cast<bool>(field.Attributes & FANavigation));
|
||||
attributeInfo->Set("no_user_modify", static_cast<bool>(field.Attributes & FANoUserModify));
|
||||
attributeInfo->Set("no_user_view", static_cast<bool>(field.Attributes & FANoUserView));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -143,10 +143,10 @@ enum { yylval->num = FAEnum; return T_FIELD_ATTRIBUTE; }
|
|||
get_protected { yylval->num = FAGetProtected; return T_FIELD_ATTRIBUTE; }
|
||||
set_protected { yylval->num = FASetProtected; return T_FIELD_ATTRIBUTE; }
|
||||
protected { yylval->num = FAGetProtected | FASetProtected; return T_FIELD_ATTRIBUTE; }
|
||||
internal { yylval->num = FAInternal; return T_FIELD_ATTRIBUTE; }
|
||||
no_storage { yylval->num = FANoStorage; return T_FIELD_ATTRIBUTE; }
|
||||
no_user_modify { yylval->num = FANoUserModify; return T_FIELD_ATTRIBUTE; }
|
||||
no_user_view { yylval->num = FANoUserView; return T_FIELD_ATTRIBUTE; }
|
||||
navigation { return T_NAVIGATION; }
|
||||
no_modify { yylval->num = FANoModify; return T_FIELD_ATTRIBUTE; }
|
||||
validator { return T_VALIDATOR; }
|
||||
required { return T_REQUIRED; }
|
||||
name { return T_NAME; }
|
||||
|
|
|
@ -67,12 +67,12 @@ enum FieldAttribute
|
|||
FAEnum = 8,
|
||||
FAGetProtected = 16,
|
||||
FASetProtected = 32,
|
||||
FAInternal = 64,
|
||||
FANoStorage = 128,
|
||||
FALoadDependency = 256,
|
||||
FARequired = 512,
|
||||
FANavigation = 1024,
|
||||
FANoModify = 2048
|
||||
FANoStorage = 64,
|
||||
FALoadDependency = 128,
|
||||
FARequired = 256,
|
||||
FANavigation = 512,
|
||||
FANoUserModify = 1024,
|
||||
FANoUserView = 2048
|
||||
};
|
||||
|
||||
struct FieldType
|
||||
|
|
Loading…
Reference in New Issue