Skip to content
probes-agent.yang 4.08 KiB
Newer Older
module probes-agent {
namespace "urn:probes-agent";
prefix "probes-agent";
import openconfig-probes { prefix oc-probes; }

organization "EVIDEN";
contact "jose.carcel@eviden.com";
description "Basic example of data model for configuring SmartNICs through Morpheus API";
revision "2023-08-03" {
    description "Basic example of data model for configuring SmartNICs through Morpheus API";
}

augment '/oc-probes:probes/oc-probes:probe' {
Jose Luis Carcel's avatar
Jose Luis Carcel committed
    leaf probe_type {
        type enumeration {
            enum plain_traffic;
            enum morpheus_pipeline;
        }
    }
}

augment '/oc-probes:probes/oc-probes:probe/oc-probes:tests/oc-probes:test/oc-probes:config' {
Jose Luis Carcel's avatar
Jose Luis Carcel committed
    uses morpheus_pipelines;
}

typedef files{
    type enumeration {
        enum "auto";
        enum "csv";
        enum "json";
    }
}

grouping prob{
    leaf value {
        type string; // e.g. "probs"
        description "probs";
    }
}

grouping conf{
    leaf mode {type string; }
    leaf num_threads { type uint16; }
    leaf pipeline_batch_size { type uint64; }
    leaf model_max_batch_size { type uint64; }
    leaf model_fea_length { type uint64; }
    list class_labels {
        key "value";
        uses prob; }
}

Jose Luis Carcel's avatar
Jose Luis Carcel committed
grouping morpheus_pipeline_stage {
    leaf stage_name { type string; }
    choice stage_type {
        case FileSourceStage {
            container FileSourceStage {
                list fs_configuration {key "mode"; uses conf;} 
                leaf filename {type string;}
                leaf iterative {type boolean;}
                leaf file_type {type files;}
                leaf filter_null {type boolean;}
            }
        }
        case DeserializeStage {
            container DeserializeStage {
                list ds_configuration {key "mode"; uses conf;} 
            }
        }
        case AbpPcapPreprocessingStage {
            container AbpPcapPreprocessingStage {
                list apps_configuration {key "mode"; uses conf;} 
            }
        }
        case MonitorStage {
            container MonitorStage {
                list ms_configuration {key "mode"; uses conf;} 
                leaf descriptions {type string;}
                leaf unit {type string;}
            }
        }
        case TritonInferenceStage {
            container TritonInferenceStage {
                list tis_configuration {key "mode"; uses conf;} 
                leaf model_name {type string;}
                leaf server_url {type string;}
                leaf force_convert_inputs {type boolean;}
            }
        }
        case AddClassificationsStage{
            container AddClassificationsStage {
                list acs_configuration {key "mode"; uses conf;} 
                list labels {key "value"; uses prob;}
            }
        }
        case SerializeStage {
            container SerializeStage {
                list ss_configuration {key "mode"; uses conf;} 
                leaf kwargs {type empty;}
            }
        }
        case WriteToFileStage{
            container WriteToFileStage {
                list wfs_configuration {key "mode"; uses conf;} 
                leaf wfs_filename {type string;}
                leaf overwrite {type boolean;}
            }
        }
        case CustomStage {
            list custom {
                key "field_name";
                leaf field_name {type string;}
                leaf field_value {type string;}
            } 
        }
    }
}

grouping morpheus_pipeline {
    leaf pipeline_name {type string;}
    leaf num_threads {type uint16;}
    leaf pipeline_batch_size {type uint64; }
    leaf model_max_batch_size {type uint64; }
    leaf input_file {type string;}
    leaf output_file {type string;}
    leaf model_fea_length {type uint16;}
    leaf model_name {type string;}
    leaf iterative {type boolean;}
    leaf server_url {type string;}
    leaf file_type {type files;}
    list stages {
        key "stage_name";
        uses morpheus_pipeline_stage;
    }
}

grouping morpheus_pipelines {
    list morpheus_pipeline {
        key "pipeline_name";
        uses morpheus_pipeline;
    }
}

container morpheus_pipelines {
    uses morpheus_pipelines;