Skip to content
Snippets Groups Projects
pnd.proto 2.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • Manuel Kieweg's avatar
    Manuel Kieweg committed
    syntax = "proto3";
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    package gosdn.pnd;
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    import "google/protobuf/descriptor.proto";
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    import "github.com/openconfig/gnmi/proto/gnmi/gnmi.proto";
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    option go_package = "proto/gosdn/pnd";
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    service pnd {
      rpc Get(GetRequest) returns (GetResponse);
      rpc Set(SetRequest) returns (SetResponse);
    }
    
    message GetRequest {
      int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
      enum get_type {
        PND = 0;
        OND = 1;
        ONDS = 2;
        SBI = 3;
        SBIS = 4;
        Changes = 5;
      }
      get_type type = 2;
      string id = 3;
    }
    
    message GetResponse {
      int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
    
      oneof payload {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
        PrincipalNetworkDomain pnd = 2;
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
        OrchestratedNetworkingDevice ond = 3;
        OrchestratedNetworkingDevices onds = 4;
        SouthboundInterface sbi = 5;
        SouthboundInterfaces sbis = 6;
        Changes changes = 7;
      }
    
    }
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    message PrincipalNetworkDomain {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      string id = 1;
      string name = 2;
      string description = 3;
    
      OrchestratedNetworkingDevices onds = 4;
      SouthboundInterfaces sbis = 5;
      Changes changes = 6;
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    message SouthboundInterface {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      string id = 1;
      string schema = 2;
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    message OrchestratedNetworkingDevice {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      string id = 1;
      string name = 2;
      gnmi.Notification device = 3;
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    message SouthboundInterfaces {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      map<string, SouthboundInterface> sbis = 1;
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    message OrchestratedNetworkingDevices {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      map<string, OrchestratedNetworkingDevice> sbis = 1;
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    message Change {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      string id = 1;
      int64 age = 2;
      enum State {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
        PENDING = 0;
        COMMITTED = 1;
        CONFIRMED = 2;
      }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      State state = 3;
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    message Changes {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      map<string, Change> sbis = 1;
    }
    
    message SetRequest {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
      oneof request {
        ChangeRequest change = 2;
        OrchestratedNetworkingDevice ond = 3;
        SouthboundInterface sbi = 4;
      }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    message SetResponse{
      int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
      enum status {
        OK = 0;
        ERROR = 1;
      }
    }
    
    message ChangeRequest {
      enum Operation {
        CREATE = 0;
        COMMIT = 1;
        CONFIRM = 2;
      }
      enum ApiOperation {
        UPDATE = 0;
        REPLACE = 1;
        DELETE = 2;
      }
      string id = 1;
      string path = 2;
      string value = 3;
      ApiOperation apiOp = 4;
      Operation op = 5;
    }