HubConfig constructor

HubConfig({
  1. required Authenticator authenticator,
  2. SecurityContext? securityContext,
  3. String? tlsDirectory,
  4. Duration tlsReloadInterval = const Duration(hours: 12),
  5. Object host = '0.0.0.0',
  6. int port = 8443,
  7. Authorizer? authorizer,
  8. String nodeMount = '/node',
  9. String shellMount = '/shell',
  10. List<String> corsOrigins = const [],
  11. Duration heartbeatInterval = const Duration(seconds: 15),
  12. Duration heartbeatTimeout = const Duration(seconds: 45),
  13. Duration requestTimeout = const Duration(seconds: 30),
  14. Clock clock = const SystemClock(),
  15. IdGenerator idGenerator = const UuidGenerator(),
  16. EventBus? eventBus,
  17. NodeRepository? nodeRepository,
  18. AuditRepository? auditRepository,
  19. MetricRepository? metricRepository,
  20. FormulaRepository? formulaRepository,
  21. PresetRepository? presetRepository,
  22. GrantRepository? grantRepository,
  23. DesiredStateRepository? desiredStateRepository,
  24. StateReconciler? reconciler,
  25. List<AlertRule> alertRules = const [],
  26. Duration alertInterval = const Duration(seconds: 15),
  27. int logCapacityPerNode = 500,
  28. void logger(
    1. String message
    )?,
})

Creates a Hub configuration.

Provide exactly one TLS source: a static securityContext, or a tlsDirectory the Hub reloads on renewal.

Implementation

HubConfig({
  required this.authenticator,
  this.securityContext,
  this.tlsDirectory,
  this.tlsReloadInterval = const Duration(hours: 12),
  this.host = '0.0.0.0',
  this.port = 8443,
  Authorizer? authorizer,
  this.nodeMount = '/node',
  this.shellMount = '/shell',
  this.corsOrigins = const [],
  this.heartbeatInterval = const Duration(seconds: 15),
  this.heartbeatTimeout = const Duration(seconds: 45),
  this.requestTimeout = const Duration(seconds: 30),
  this.clock = const SystemClock(),
  this.idGenerator = const UuidGenerator(),
  EventBus? eventBus,
  NodeRepository? nodeRepository,
  AuditRepository? auditRepository,
  MetricRepository? metricRepository,
  FormulaRepository? formulaRepository,
  PresetRepository? presetRepository,
  GrantRepository? grantRepository,
  DesiredStateRepository? desiredStateRepository,
  StateReconciler? reconciler,
  this.alertRules = const [],
  this.alertInterval = const Duration(seconds: 15),
  this.logCapacityPerNode = 500,
  this.logger,
}) : assert(
       (securityContext == null) != (tlsDirectory == null),
       'provide exactly one of securityContext or tlsDirectory',
     ),
     authorizer = authorizer ?? const RoleBasedAuthorizer(),
     eventBus = eventBus ?? BroadcastEventBus(),
     nodeRepository = nodeRepository ?? MemoryNodeRepository(),
     auditRepository = auditRepository ?? MemoryAuditRepository(),
     metricRepository = metricRepository ?? MemoryMetricRepository(),
     formulaRepository = formulaRepository ?? MemoryFormulaRepository(),
     presetRepository = presetRepository ?? MemoryPresetRepository(),
     grantRepository = grantRepository ?? MemoryGrantRepository(),
     desiredStateRepository =
         desiredStateRepository ?? MemoryDesiredStateRepository(),
     reconciler = reconciler ?? const DefaultStateReconciler();