use crate::authority_node::{Authority, Configuration};
use ockam_core::Result;
use ockam_node::Context;
use tracing::info;
pub async fn start_node(
ctx: &Context,
configuration: &Configuration,
authority: Authority,
) -> Result<()> {
debug!("starting authority node");
debug!("starting services");
let secure_channel_flow_control_id = authority
.start_secure_channel_listener(ctx, configuration)
.await?;
debug!("secure channel listener started");
authority.start_direct_authenticator(ctx, &secure_channel_flow_control_id, configuration)?;
debug!("direct authenticator started");
authority.start_enrollment_services(ctx, &secure_channel_flow_control_id, configuration)?;
debug!("enrollment services started");
authority.start_credential_issuer(ctx, &secure_channel_flow_control_id, configuration)?;
debug!("credential issuer started");
authority.start_okta(ctx, &secure_channel_flow_control_id, configuration)?;
debug!("okta service started");
authority.start_echo_service(ctx, &secure_channel_flow_control_id)?;
debug!("echo service started");
authority
.start_grpc_forwarder(ctx, &secure_channel_flow_control_id, configuration)
.await?;
debug!("grpc forwarder started");
info!("authority node started");
Ok(())
}