syntax = "proto3"; package chart.v1; import "google/protobuf/timestamp.proto"; import "proto/chart/v1/instance.proto"; import "proto/chart/v1/dimension.proto"; option go_package = "chart/stream/v1;chartstream"; // StreamChartsAndDimensions is a Command produced by the Cloud, consumed by the Agent. // // It instructs the Agent to start sending ChartsAndDimensionsUpdated messages for a NodeInstance // after the last sequence_id that the Cloud has successfully ingested. message StreamChartsAndDimensions { // claim_id, node_id pair is used to identify the Node Instance string claim_id = 1; string node_id = 2; // sequence_id last verified sequence sent by the Agent uint64 sequence_id = 3; // batch_id identifies the stream_id and gets incremented every time the Cloud sends a new StreamChartsAndDimensions command uint64 batch_id = 4; // seq_id_created_at autogenerated timestamp in Agent's DB upon sequence_id creation google.protobuf.Timestamp seq_id_created_at = 5; } // ChartsAndDimensionsAck is an Event produced by the Cloud, consumed by the Agent. // // This Event is an acknowledgment from the Cloud side that Chart messages up to a specific last_sequence_id // have been successfully ingested, and could be potentially deleted from the Agent's DB. message ChartsAndDimensionsAck { string claim_id = 1; string node_id = 2; // the last verified stored message's seq_id uint64 last_sequence_id = 3; } // ResetChartMessages is a Command produced by the Agent, consumed by the Cloud. // // This Command instructs the Cloud to clear its Chart state for a specific NodeInstance and re-sync // because of a ResetReason. message ResetChartMessages { // claim_id, node_id pair is used to identify the Node Instance string claim_id = 1; string node_id = 2; ResetReason reason = 3; } enum ResetReason { DB_EMPTY = 0; SEQ_ID_NOT_EXISTS = 1; TIMESTAMP_MISMATCH = 2; } // ChartsAndDimensionsUpdated is a wrapper Event (`fat` message) produced by the Agent, consumed by the Cloud. // // It potentially includes a collection of ChartInstanceUpdated messages and|or a collection of ChartDimensionUpdated messages. message ChartsAndDimensionsUpdated { repeated chart.v1.ChartInstanceUpdated charts = 1; repeated chart.v1.ChartDimensionUpdated dimensions = 2; uint64 batch_id = 3; } // RetentionUpdated includes the available retentions (in seconds) of the dimensions - of a specific node instance and memory-mode - // on a per update_every level. // This message is sent over upon Agent Database rotation events to inform the Cloud in total about the newly updated data retentions // of a node instance's dimensions. message RetentionUpdated { // claim_id, node_id pair is used to identify the Node Instance string claim_id = 1; string node_id = 2; // the memory_mode used by the node instance's chart instances chart.v1.MemoryMode memory_mode = 3; // this mapping identifies the newly updated available retention (in seconds) of the node instance's dimensions // the keys are the update_every categories of various dimensions (1, 2, 4, 10 etc.), // and the values are the available retention (in seconds) of each dimension belonging to the update_every category // denoted by the key map interval_durations = 4; // the timestamp when the db rotation event took place. Can be used in conjunction with the interval_durations // to compute the beginning of each `updated_every` group's retention google.protobuf.Timestamp rotation_timestamp = 5; }