Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
enum PolicyTemplateScope {
General,Embedded,
// Customized: possible to support save certain ad-hoc policy as template
}
interface PolicyTemplate { |
Policy Creator UI Design
General Mode
Info |
---|
Policy Editor (General Mode) mainly supports some general alert template and provide easy-to-use template form and general native eagle policy in backend using the submitted form data and policy template. |
Backend Support
Code Block | ||
---|---|---|
| ||
// Template Interface and GeneralPolicyTemplateDesc for API interface GeneralPolicyTemplate { Class<?> getType(); // org.apache.eagle.policy.GeneralPolicyTemplate String getName(); // "SINGLE_SOURCE_THRESHOLD_ALERT" String getDescription(); // "An alert policy template consuming single stream source." String getCreateFormgetFormPath(); // "/path/to/create/form" String getEditForm(); // "/path/to/create/form" String getViewForm(); // "/path/to/create/form" <Class extends PolicyTemplateConfig> getConfigType(); PolicyTemplateScope getScope(); GeneralPolicyConfigPolicyDefinition renderConfigrender(StringPolicyTemplateConfig); } abstract class PolicyTemplateConfig PolicyDefinition renderPolicy(GeneralPolicyConfig);{ internal: String } final class PolicyTemplateEntity { uuid: UUID, enabled: Boolean, // StaticFALSE: Template Metadata GeneralPolicyEntity {save, TRUE: deploy config: GeneralPolicyTemplateConfigPolicyTemplateConfig, template: "org.apache.eagle.policy.GeneralPolicyTemplatePolicyTemplate" } |
General Mode
Info |
---|
Policy Editor (General Mode) mainly supports some general alert template and provide easy-to-use template form and general native eagle policy in backend using the submitted form data and policy template. |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Template Interface and GeneralPolicyTemplateDesc for API abstract class GeneralPolicyTemplate extends PolicyTemplate{ final PolicyTemplateScope getScope() { return PolicyTemplateScope.General; } } // GeneralPolicyTemplateConfig GeneralPolicyTemplateConfig{ internal: String, // json string } // Case Example SingleStreamThresholdPolicyTemplateConfig extend GeneralPolicyTemplateConfigPolicyTemplateConfig { from: HDFS_AUDIT_SRC_STREAM, partition: { type: "GROUPBY",field: "USER" }, window: { type: "SLIDING_WINDOW", configs: { length: "20 hour" } }, aggregators: [ { function: "SUM", field: "USER", alias: "USER_COUNT" } ], filters: [ { field: "USER_COUNT", function: ">", value: 20 }, { field: "USER", function: "NOT IN", value: "HADOOP, HDFS, MAPRED" } ] } |
Embedded Mode (TODO)
Each policy can only be deployed for one time per site, change "Save/Deploy" to "Enable/Disable"
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
abstract class EmbeddedPolicyTemplate extends PolicyTemplate{
final PolicyTemplateScope getScope() {
return PolicyTemplateScope.Embedded;
}
}
// Case Example
TOO_LARGE_DELETION_ALERT_CONFIG extend PolicyTemplateConfig {
users: List<String>,
hdfsSizeThreshhold: Long
} |
Advanced Mode
Gliffy Diagram | ||||
---|---|---|---|---|
|