// Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";
package osmClient;

import "context.proto";

service OsmService {
  rpc NsiCreate   (CreateRequest)   returns(CreateResponse) {}
  rpc NsiList     (context.Empty)   returns(NsiListResponse) {}
  rpc NsiGet      (GetRequest)      returns(GetResponse) {}
  rpc NsiDelete   (DeleteRequest)   returns(DeleteResponse) {}
}

message CreateRequest {
  string nst_name = 1;
  string nsi_name = 2;
  string config = 3;
  string ssh_key = 4;
  string account = 5;
}

//OSM library doesn't return nsi ID, just an exception
message CreateResponse {
  bool succeded = 1;
  string errormessage = 2;
}

message NsiListResponse {
  repeated string id = 1;
}

message GetRequest {
  string id = 1;
}

message GetResponse {
  NsiObject nsi = 1;
}

message NsiObject {
  string nst_name = 1;
  string nsi_name = 2;
  string description = 3;
  string VimAccountId = 4;
  string Netslice_Subnet_id = 5;
  string Netslice_vld_ip = 6;
}

message DeleteRequest {
  string id = 1;
}

//OSM library doesn't return nsi ID, just an exception
message DeleteResponse {
  bool succeded = 1;
  string errormessage = 2;
}

