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) {
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();
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; }}}
};
};
FAEphemeral = 1,
FAConfig = 2,
FAState = 4,
- FAInternal = 64,
- FARequired = 512,
- FANavigation = 1024,
- FANoModify = 2048
+ FARequired = 256,
+ FANavigation = 512,
+ FANoUserModify = 1024,
+ FANoUserView = 2048
};
class 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
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; }}}
};
};
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;
class Host : Checkable
{
- [config, no_modify] array(name(HostGroup)) groups {
+ [config, no_user_modify] array(name(HostGroup)) groups {
default {{{ return new Array(); }}}
};
}}}
};
- [config] array(name(HostGroup)) groups;
+ [config, no_user_modify] array(name(HostGroup)) groups;
[config] String notes;
[config] String notes_url;
[config] String action_url;
}}}
};
- [state] Array::Ptr notified_users {
+ [state, no_user_modify] Array::Ptr notified_users {
default {{{ return new Array(); }}}
};
{
load_after Host;
- [config, no_modify] array(name(ServiceGroup)) groups {
+ [config, no_user_modify] array(name(ServiceGroup)) groups {
default {{{ return new Array(); }}}
};
}}}
};
- [config] array(name(ServiceGroup)) groups;
+ [config, no_user_modify] array(name(ServiceGroup)) groups;
[config] String notes;
[config] String notes_url;
[config] String action_url;
};
[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;
};
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) {
}}}
};
- [config] array(name(UserGroup)) groups;
+ [config, no_user_modify] array(name(UserGroup)) groups;
};
}
[config] String ticket_salt;
- [state] double log_message_timestamp;
+ [state, no_user_modify] double log_message_timestamp;
- String identity;
+ [no_user_modify] String identity;
};
}
class ApiUser : ConfigObject
{
- [config] String password;
+ [config, no_user_view] String password;
[config] String client_cn (ClientCN);
[config] array(Value) permissions;
};
[state] double local_log_position;
[state] double remote_log_position;
- bool connecting;
- bool syncing;
+ [no_user_modify] bool connecting;
+ [no_user_modify] bool syncing;
};
}
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);
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));
}
}
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; }
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