Skip to content

Feature/data governance cleanup #755

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 41 commits into from
Apr 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ff8d69a
feat: Storage manager cleanup
satlead Mar 11, 2025
7ad61eb
refactor: Cleanup Data Governance and related APIs
satlead Mar 18, 2025
daecacd
merge from main
satlead Mar 18, 2025
baf8b6c
cp: Cleanup account link and data governance
satlead Mar 21, 2025
b18dcfb
cp: Cleanup context managaer
satlead Mar 21, 2025
799e2a5
cp: existing unit tests passed
satlead Mar 25, 2025
d649536
merge from main
satlead Mar 26, 2025
28a17d6
cp: Cleanup Metrics Context
satlead Mar 26, 2025
8df8b99
fix: format
satlead Mar 26, 2025
738ed1d
fix: Move LCM to internal for appcatalogId
satlead Mar 26, 2025
db90ebe
fix: contracts
satlead Mar 26, 2025
e6e0e70
fix: thunder_device_info
satlead Mar 26, 2025
9b2a81b
Fix: Unit tests and cleanup manifests
satlead Mar 28, 2025
3c7b8c7
fix: Clippy errors
satlead Mar 28, 2025
53a148b
Merge branch 'main' of https://github.com/rdkcentral/Ripple into feat…
satlead Mar 28, 2025
c9a4923
fix: formatter
satlead Mar 28, 2025
604ca59
Cleanup: Large enum unused variants
satlead Mar 28, 2025
c08b632
fix: cleanup internet connection
satlead Mar 31, 2025
193fb0f
fix: unused imports
satlead Mar 31, 2025
3faccae
feat: Cleanup Device Events
satlead Mar 31, 2025
1574137
merge from main
satlead Mar 31, 2025
c0f57bf
fix: format
satlead Mar 31, 2025
aea9085
fix: unit tests
satlead Mar 31, 2025
24a7ce7
feat: Upgrade Thunder Mock to support Async events
satlead Apr 2, 2025
4bfacc7
Merge branch 'main' of https://github.com/rdkcentral/Ripple into feat…
satlead Apr 2, 2025
51efb3f
rename: Otel to Metrics
satlead Apr 2, 2025
f98e9f9
rename: OpMetrics
satlead Apr 2, 2025
6bd31ce
fix: Remove Refresh context
satlead Apr 2, 2025
fae02b6
merge from main
satlead Apr 3, 2025
f633b99
merge from main
satlead Apr 4, 2025
6dd6275
Cleanup metrics
satlead Apr 4, 2025
cccfcb5
Merge branch 'main' of https://github.com/rdkcentral/Ripple into feat…
satlead Apr 7, 2025
c2edfa2
fix: PR comments
satlead Apr 7, 2025
5c832fe
Merge branch 'main' of https://github.com/rdkcentral/Ripple into feat…
satlead Apr 8, 2025
9abefd6
fix: merge and other issues
satlead Apr 9, 2025
04a20e0
fix: clippy
satlead Apr 9, 2025
4c45f85
fix: cleanup error noise
satlead Apr 10, 2025
5b984fe
fix: format
satlead Apr 10, 2025
d9b8a1e
fix: Event dispatching
satlead Apr 10, 2025
7469d5a
feat: Add Privacy Adapter Methods
satlead Apr 14, 2025
02529af
Merge branch 'main' of https://github.com/rdkcentral/Ripple into feat…
satlead Apr 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 0 additions & 9 deletions core/main/src/bootstrap/extn/load_session_step.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,10 @@
//

use ripple_sdk::framework::bootstrap::Bootstep;
use ripple_sdk::tokio;
use ripple_sdk::{async_trait::async_trait, framework::RippleResponse};

use crate::processor::main_context_processor::MainContextProcessor;
use crate::service::context_manager::ContextManager;
use crate::state::bootstrap_state::BootstrapState;
use crate::state::metrics_state::MetricsState;

pub struct LoadDistributorValuesStep;

Expand All @@ -33,14 +30,8 @@ impl Bootstep<BootstrapState> for LoadDistributorValuesStep {
}

async fn setup(&self, s: BootstrapState) -> RippleResponse {
let mut ps = s.platform_state.clone();
tokio::spawn(async move {
MetricsState::initialize(&mut ps).await;
});

MainContextProcessor::remove_expired_and_inactive_entries(&s.platform_state);

ContextManager::setup(&s.platform_state).await;
if !s.platform_state.supports_session() {
return Ok(());
}
Expand Down
5 changes: 1 addition & 4 deletions core/main/src/bootstrap/setup_extn_client_step.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ use ripple_sdk::{
async_trait::async_trait, framework::bootstrap::Bootstep, utils::error::RippleError,
};

use crate::processor::account_link_processor::AccountLinkProcessor;
use crate::processor::metrics_processor::{MetricsProcessor, OpMetricsProcessor};
use crate::processor::metrics_processor::OpMetricsProcessor;
use crate::processor::settings_processor::SettingsProcessor;
use crate::processor::{
store_privacy_settings_processor::StorePrivacySettingsProcessor,
Expand Down Expand Up @@ -60,9 +59,7 @@ impl Bootstep<BootstrapState> for SetupExtnClientStep {
state.platform_state.clone(),
));
client.add_request_processor(AuthorizedInfoProcessor::new(state.platform_state.clone()));
client.add_request_processor(AccountLinkProcessor::new(state.platform_state.clone()));
client.add_request_processor(SettingsProcessor::new(state.platform_state.clone()));
client.add_request_processor(MetricsProcessor::new(state.platform_state.clone()));
client.add_request_processor(OpMetricsProcessor::new(state.platform_state.clone()));
Ok(())
}
Expand Down
10 changes: 4 additions & 6 deletions core/main/src/bootstrap/start_fbgateway_step.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,9 @@ use crate::{
audio_description_rpc::AudioDescriptionRPCProvider,
authentication_rpc::AuthRPCProvider, capabilities_rpc::CapRPCProvider,
closed_captions_rpc::ClosedcaptionsRPCProvider, device_rpc::DeviceRPCProvider,
discovery_rpc::DiscoveryRPCProvider, keyboard_rpc::KeyboardRPCProvider,
lcm_rpc::LifecycleManagementProvider, lifecycle_rpc::LifecycleRippleProvider,
localization_rpc::LocalizationRPCProvider,
metrics_management_rpc::MetricsManagementProvider, metrics_rpc::MetricsRPCProvider,
discovery_rpc::DiscoveryRPCProvider, internal_rpc::InternalProvider,
keyboard_rpc::KeyboardRPCProvider, lcm_rpc::LifecycleManagementProvider,
lifecycle_rpc::LifecycleRippleProvider, localization_rpc::LocalizationRPCProvider,
parameters_rpc::ParametersRPCProvider, privacy_rpc::PrivacyProvider,
profile_rpc::ProfileRPCProvider, provider_registrar::ProviderRegistrar,
second_screen_rpc::SecondScreenRPCProvider,
Expand Down Expand Up @@ -70,14 +69,13 @@ impl FireboltGatewayStep {
let _ = methods.merge(ParametersRPCProvider::provide_with_alias(state.clone()));
let _ = methods.merge(SecureStorageRPCProvider::provide_with_alias(state.clone()));
let _ = methods.merge(AdvertisingRPCProvider::provide_with_alias(state.clone()));
let _ = methods.merge(MetricsRPCProvider::provide_with_alias(state.clone()));
let _ = methods.merge(DiscoveryRPCProvider::provide_with_alias(state.clone()));
let _ = methods.merge(AuthRPCProvider::provide_with_alias(state.clone()));
let _ = methods.merge(AccountRPCProvider::provide_with_alias(state.clone()));
let _ = methods.merge(MetricsManagementProvider::provide_with_alias(state.clone()));
let _ = methods.merge(AudioDescriptionRPCProvider::provide_with_alias(
state.clone(),
));
let _ = methods.merge(InternalProvider::provide_with_alias(state.clone()));

// LCM Api(s) not required for internal launcher
if !state.has_internal_launcher() {
Expand Down
18 changes: 18 additions & 0 deletions core/main/src/broker/broker_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,17 @@ impl BrokerUtils {
}
}

pub async fn process_for_app_main_request(
state: &mut PlatformState,
method: &str,
params: Option<Value>,
app_id: &str,
) -> RpcResult<Value> {
let mut rpc_request = RpcRequest::internal(method, None).with_params(params);
rpc_request.ctx.app_id = app_id.to_owned();
Self::internal_request(state, rpc_request).await
}

pub async fn process_internal_main_request<'a>(
state: &mut PlatformState,
method: &'a str,
Expand All @@ -90,7 +101,14 @@ impl BrokerUtils {
state
.metrics
.add_api_stats(&rpc_request.ctx.request_id, method);
Self::internal_request(state, rpc_request).await
}

async fn internal_request(
state: &mut PlatformState,
rpc_request: RpcRequest,
) -> RpcResult<Value> {
let method = rpc_request.method.clone();
match state.internal_rpc_request(&rpc_request).await {
Ok(res) => match res.as_value() {
Some(v) => Ok(v),
Expand Down
16 changes: 10 additions & 6 deletions core/main/src/broker/endpoint_broker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ use crate::{
broker::broker_utils::BrokerUtils,
firebolt::firebolt_gateway::{FireboltGatewayCommand, JsonRpcError},
service::extn::ripple_client::RippleClient,
state::{metrics_state::MetricsState, platform_state::PlatformState, session_state::Session},
state::{otel_state::OpMetricState, platform_state::PlatformState, session_state::Session},
utils::router_utils::{
add_telemetry_status_code, capture_stage, get_rpc_header, return_extn_response,
},
Expand Down Expand Up @@ -372,7 +372,7 @@ pub struct EndpointBrokerState {
cleaner_list: Arc<RwLock<Vec<BrokerCleaner>>>,
reconnect_tx: Sender<BrokerConnectRequest>,
provider_broker_state: ProvideBrokerState,
metrics_state: MetricsState,
metrics_state: OpMetricState,
}
impl Default for EndpointBrokerState {
fn default() -> Self {
Expand All @@ -385,14 +385,14 @@ impl Default for EndpointBrokerState {
cleaner_list: Arc::new(RwLock::new(Vec::new())),
reconnect_tx: mpsc::channel(2).0,
provider_broker_state: ProvideBrokerState::default(),
metrics_state: MetricsState::default(),
metrics_state: OpMetricState::default(),
}
}
}

impl EndpointBrokerState {
pub fn new(
metrics_state: MetricsState,
metrics_state: OpMetricState,
tx: Sender<BrokerOutput>,
rule_engine: RuleEngine,
ripple_client: RippleClient,
Expand Down Expand Up @@ -843,6 +843,10 @@ impl EndpointBrokerState {
}
}

pub fn has_rule(&self, method: &str) -> bool {
self.rule_engine.has_rule(method)
}

pub fn get_rule(&self, rpc_request: &RpcRequest) -> Option<Rule> {
self.rule_engine.get_rule(rpc_request)
}
Expand Down Expand Up @@ -1607,7 +1611,7 @@ mod tests {
endpoint_broker::tests::RippleClient,
rules_engine::{Rule, RuleEngine, RuleSet, RuleTransform},
},
state::{bootstrap_state::ChannelsState, metrics_state::MetricsState},
state::{bootstrap_state::ChannelsState, otel_state::OpMetricState},
};

use super::EndpointBrokerState;
Expand All @@ -1617,7 +1621,7 @@ mod tests {
let (tx, _) = channel(2);
let client = RippleClient::new(ChannelsState::new());
let state = EndpointBrokerState::new(
MetricsState::default(),
OpMetricState::default(),
tx,
RuleEngine {
rules: RuleSet::default(),
Expand Down
6 changes: 2 additions & 4 deletions core/main/src/broker/rules_engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -249,10 +249,8 @@ impl RuleEngine {
}
}

pub fn has_rule(&self, request: &RpcRequest) -> bool {
self.rules
.rules
.contains_key(&request.ctx.method.to_lowercase())
pub fn has_rule(&self, request: &str) -> bool {
self.rules.rules.contains_key(&request.to_lowercase())
}

pub fn get_rule(&self, rpc_request: &RpcRequest) -> Option<Rule> {
Expand Down
27 changes: 2 additions & 25 deletions core/main/src/firebolt/firebolt_gateway.rs
Original file line number Diff line number Diff line change
Expand Up @@ -303,11 +303,6 @@ impl FireboltGateway {
.metrics
.add_api_stats(&request_c.ctx.request_id, &request_c.method);

let metrics_timer = TelemetryBuilder::start_firebolt_metrics_timer(
&platform_state.get_client().get_extn_client(),
request_c.method.clone(),
request_c.ctx.app_id.clone(),
);
let fail_open = matches!(
platform_state
.get_device_manifest()
Expand All @@ -322,13 +317,6 @@ impl FireboltGateway {
capture_stage(&platform_state.metrics, &request_c, "context_ready");
// Validate incoming request parameters.
if let Err(error_string) = validate_request(open_rpc_state, &request_c, fail_open) {
TelemetryBuilder::stop_and_send_firebolt_metrics_timer(
&platform_state.clone(),
metrics_timer,
format!("{}", JSON_RPC_STANDARD_ERROR_INVALID_PARAMS),
)
.await;

let json_rpc_error = JsonRpcError {
code: JSON_RPC_STANDARD_ERROR_INVALID_PARAMS,
message: error_string,
Expand Down Expand Up @@ -418,13 +406,8 @@ impl FireboltGateway {
.emit_debug();

// if the websocket disconnects before the session is recieved this leads to an error
RpcRouter::route(
platform_state.clone(),
request_c,
session,
metrics_timer.clone(),
)
.await;
RpcRouter::route(platform_state.clone(), request_c, session)
.await;
} else {
error!("session is missing request is not forwarded for request {:?}", request_c.ctx);
}
Expand All @@ -435,12 +418,6 @@ impl FireboltGateway {
Err(e) => {
let deny_reason = e.reason;
// log firebolt response message in RDKTelemetry 1.0 friendly format
TelemetryBuilder::stop_and_send_firebolt_metrics_timer(
&platform_state.clone(),
metrics_timer,
format!("{}", deny_reason.get_observability_error_code()),
)
.await;

error!(
"Failed gateway present error {:?} {:?}",
Expand Down
Loading