SPEKTRA Edge Wide-Column Annotations

Understanding the SPEKTRA Edge Wide-Column Annotations.

Those four resource types in SPEKTRA Edge (TimeSerie, ActivityLog, ResourceChangeLog, Log) are still declared as Goten resources, but have several opt-outs that make them unique. See in SPEKTRA Edge repo:

  • Audit API-Skeleton: audit/proto/api-skeleton-v1.yaml, resources: ActivityLog, ResourceChangeLog
  • Logging API-Skeleton: logging/proto/api-skeleton-v1.yaml, resources: Log
  • Monitoring API-Skeleton: monitoring/proto/api-skeleton-v4.yaml, resources: TimeSerie

See opt-out settings: They don’t have a metadata field, standard CRUD is disabled, and pagination and resource change are also not present. For TimeSerie, we are also disabling the name field (more for historical reasons, to match to Google Stackdriver API in version v3). We also disabled “basicActions” for all (by specifying *), but this option is not necessary, since disabling standard CRUD ensures that no basic actions (like Create, Get, BatchGet…) are generated.

As a result, Goten will not generate anything for these resources in the access or store packages, nor server will have any basics related to them. Some standard types in the resources package will also be missing.

They will still get Descriptor instances, and they will still satisfy the gotenresource.Resource interface (as defined in the runtime/resource/resource.go file in the Goten repo), but for example EnsureMetadata will return nil value. Function SupportsMetadata in the gotenresource.Descriptor interface will return false.

This is how we are taking control of resources from Goten to us, and we can use a different storage type.