/*
Copyright 2022 Google LLC

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

    https://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 sapagent.protos.hanamonitoringmigration;


import "protos/instanceinfo/instanceinfo.proto";

option go_package = "github.com/GoogleCloudPlatform/sapagent/protos/hanamonitoringmigration";

message HANAMonitoringConfiguration {
  AgentConfig agent = 1;
  repeated Query queries = 2;
  bool enabled = 3;
}

message AgentConfig {
  int64 sample_interval = 1;
  int64 query_timeout = 2;
  int64 execution_threads = 3;
  instanceinfo.CloudProperties cloud_properties = 4;
  GcloudAuth gcloud_auth = 5;
  repeated HANAInstance hana_instances = 6;
}

message GcloudAuth {
  string service_account_json = 1;
}

message HANAInstance {
  string name = 1;
  string sid = 2;
  string host = 3;
  int64 port = 4;
  string user = 5;
  string password = 6 ;
  string secret_name = 7;
  bool enable_ssl = 8;
  bool validate_certificate = 9;
  string host_name_in_certificate = 10;
  int64 connections = 11;
  string key_store = 12;
  string key_store_password = 13 ;
  string key_store_secret_name = 14;
  string trust_store = 15;
  string trust_store_password = 16 ;
  string trust_store_secret_name = 17;
}

message Query {
  bool enabled = 1;
  string name = 2;
  string description = 3;
  string sql = 4;
  int64 sample_interval = 5;
  repeated Column columns = 6;
  bool curated = 7;
}

message Column {
  string name = 1;
  string description = 2;
  string units = 3;
  MetricType metric_type = 4;
  ValueType value_type = 5;
  string name_override = 6;
}

enum MetricType {
  METRIC_UNSPECIFIED = 0;
  LABEL = 1;
  GAUGE = 2;
  CUMULATIVE = 3;
  DELTA = 4;
}

enum ValueType {
  VALUE_UNSPECIFIED = 0;
  BOOL = 1;
  INT64 = 2;
  STRING = 3;
  DOUBLE = 4;
  DISTRIBUTION = 5;
}
