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) -> Result<()> {
debug!("starting authority node");
let authority = Authority::create(configuration).await?;
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)
.await?;
debug!("direct authenticator started");
authority
.start_enrollment_services(ctx, &secure_channel_flow_control_id, configuration)
.await?;
debug!("enrollment services started");
authority
.start_credential_issuer(ctx, &secure_channel_flow_control_id, configuration)
.await?;
debug!("credential issuer started");
authority
.start_okta(ctx, &secure_channel_flow_control_id, configuration)
.await?;
debug!("okta service started");
authority
.start_echo_service(ctx, &secure_channel_flow_control_id)
.await?;
debug!("echo service started");
info!("authority node started");
Ok(())
}