Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Code Block
languagejs
titleFramework Interface
collapsetrue
enum PolicyTemplateScope {
	General,Embedded, 
	// Customized: possible to support save certain ad-hoc policy as template
}
 
interface PolicyTemplate {	
	String getName(); // 

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.

Image Removed

Backend Support

 

Code Block
languagejs
// Interface
interface org.apache.eagle.policy.GeneralPolicyTemplateBuilder {
    PolicyDefinition build(GeneralPolicyConfigs);
}
 
// Metadata
GeneralPolicyTemplate {
    type: "SINGLE_SOURCE_THRESHOLD_ALERT"
	String    name: "Single Source Threshold Alert", 
    description: "getDescription(); // "An alert policy template consuming single stream source."
	String getFormPath(); //  view: "/path/to/form"
 
     <Class extends PolicyTemplateConfig> getConfigType();
	 PolicyTemplateScope getScope();
     PolicyDefinition render(PolicyTemplateConfig);
}
 
abstract class PolicyTemplateConfig {
	internal: String
}
 
final class PolicyTemplateEntity {
	uuid: UUID,
	enabled: Boolean, //  builderFALSE: save, TRUE: deploy
	config: PolicyTemplateConfig,
	template: "org.apache.eagle.policy.PolicyTemplate"
}

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.

Image Added

Code Block
languagejs
titleBackend Support for General Template
collapsetrue
// Template Interface and GeneralPolicyTemplateDesc for API
abstract class GeneralPolicyTemplate extends PolicyTemplate{
	final PolicyTemplateScope getScope() {
		return PolicyTemplateScope.General;
	}
}

// Case Example
SingleStreamThresholdPolicyTemplateConfig extend PolicyTemplateConfig {
GeneralPolicyTemplateBuilder",
    configs: {
        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"

Image Added

Code Block
languagejs
titleBackend Support for Embedded Template
collapsetrue
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
}

Embedded Mode

Image Removed

Advanced Mode

Image Modified

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gliffy Diagram
namepolicy_view