niwaki v1.1.0
The observation / query surface — which 1.0.0 declared still-evolving — gets
its read foundation: the full APIC query grammar, expressed as a fluent, typed
API and validated against a live controller. The configuration API (design
DSL, push modes) is unchanged and remains stable; the breaking changes below are
confined to reading.
Added
- Filter operators.
anybit,allbit(emulated asand_(anybit, …)),
xorandrawjoineq/ne/lt/le/gt/ge/bw/wcardand
and_/or_/not_.anybitcloses the write-but-not-filter gap on bitmask
(Flags) fields — you can now filter "where this flag is set". - Smart values in
where(...). A list or tuple means membership, a*in a
string means wildcard, asetstays bitmask equality; explicit wrappers
any_of(...),like(pattern)andbetween(start, end)remove any ambiguity. - Response shaping — full GET grammar.
self_only(),also(...),
subtree_full(), andinclude_subtree(...)with theSubtreeIncludefacets
(faults, health, stats, audit/event/fault/health records, tasks, count, …);
multi-keyorder_by. - Executors and Python protocols. A query is a lazy iterable
(for mo in q,list(q));q[:n]sets a server-side limit;.one()and
.exists();execute_raw().count()andexists()honor the limit. New
typedNoResultError/MultipleResultsError. - Uniform result access on every object, generated model or operational
class alike:.dn,mo["wireName"], and.attrs(the full wire view).
Changed
with_faults()no longer filters. It embeds faults on each object without
restricting the result; chainonly_faulted()to return only faulted objects.
(Previouslywith_faults()implicitly restricted to faulted objects.)bool(query)/if query:now raisesTypeError. A query is lazy, so
truthiness would hide a network call — use.exists().subtree_where(prop=value)qualifies the property with the included subtree
class.include(fvSubnet).subtree_where(scope=...)filtersfvSubnet.scope,
not the queried class; when several classes are included, pass an explicitly
qualified expression (subtree_where(eq("fvSubnet.scope", …))).
Removed
contains()andisdigit()filter operators — the APIC has no such filter
types (verified on 6.0(9c)). Uselike("*x*")(subject to the property's
format) orraw(...).