Tenant Resolver SDK
SDK crate for the Tenant Resolver module, providing public API contracts for multi-tenant hierarchy resolution in CyberFabric.
Overview
This crate defines the transport-agnostic interface for the Tenant Resolver module:
TenantResolverClient— Async trait for consumers (get tenants, traverse hierarchy, check ancestry)TenantResolverPluginClient— Async trait for plugin implementationsTenantInfo/TenantRef— Tenant data models (full info vs. lightweight reference)TenantResolverError— Error types for all operationsTenantResolverPluginSpecV1— GTS schema for plugin registration
Usage
Getting the Client
Consumers obtain the client from ClientHub:
use TenantResolverClient;
let resolver = hub.?;
Get Tenant
let tenant = resolver.get_tenant.await?;
println!;
Get Root Tenant
// The unique tenant with no parent (single-root tree).
let root = resolver.get_root_tenant.await?;
println!;
Batch Get
use ;
// All statuses
let tenants = resolver.get_tenants.await?;
// Active only
let opts = GetTenantsOptions ;
let active = resolver.get_tenants.await?;
Hierarchy Traversal
use ;
// Get ancestor chain (parent → root)
let response = resolver.get_ancestors.await?;
for ancestor in &response.ancestors
// Get descendants (children, grandchildren, ...)
let opts = GetDescendantsOptions ;
let response = resolver.get_descendants.await?;
Ancestry Check
let is_anc = resolver.is_ancestor.await?;
Models
TenantInfo
Full tenant information returned by get_tenant and get_tenants:
TenantRef
Lightweight reference (without name) used by hierarchy operations:
BarrierMode
Controls traversal through self-managed (barrier) tenants:
BarrierMode::Respect(default) — Stop at barrier boundariesBarrierMode::Ignore— Traverse through barriers
Error Handling
use TenantResolverError;
match resolver.get_tenant.await
Implementing a Plugin
Implement TenantResolverPluginClient and register with a GTS instance ID:
use async_trait;
use ;
License
Apache-2.0