v.5.152.0#
Changes
-
New Serving service has been added, which allows adding external HTTP services to the platform, making them available to users through a unified API service — without needing to access them directly.
Serving saves users from manual configuration of load balancing, routing, and authorization: just register the service. All requests go through the API with authorization verification (BasicAuth or BearerAuth). Additionally, blacklists and whitelists can be configured in the token to restrict access to services.
For example, integrating with LUNA Streams previously required writing a plugin. Now LUNA Streams can be used as a user service, which significantly simplifies the process.
Key features:
- Registration of user services via the Admin service (a unique name and address(es) are required; a description and public access to the service are optional).
- Dynamic Traefik configuration — Serving provides the HTTP endpoint
/traefik_config, which returns the current load balancer configuration based on registered services. Traefik offers a variety of settings, including an HTTP server polling interval, which defaults to 5 seconds. This means that after registering a service, it may take up to 5 seconds for it to become available for proxy requests. - Request proxying — After registering and updating the Traefik configuration, a user can access their service by requesting the /service-proxy resource in the API service. All request data will be sent to the
Traefikload balancer, which will then forward it to the target service.
Settings for interaction with the
Traefikload balancer have also been added to the API service: BALANCER_ADDRESS and BALANCER_TIMEOUTS.For more information, see Serving Service and Serving service settings.
-
New permissions set in the token,
serviceandservice_usage, have been added.The
servicepermission controls access to the/6/serviceresource and allows creating, viewing, and deleting user services.The
service_usagepermission controls access to proxying requests to user services (/6/service/{service_name}/proxy) and allows configuring whitelists and blacklists of service names.See the description of the create token request.
-
Pagination support has been added to requests for getting a list of objects or images from a folder (get list of folder images, get list of folder objects).
Previously, all objects were returned at once when a request was made. If a folder contained a large number of objects (e.g., tens of thousands), this created excessive load on the server and led to increased response times.
Now, objects can be retrieved in parts by specifying the
limitparameter (the maximum number of objects per request) andcontinuation_token(a token for retrieving the next page). The token is returned in theX-Luna-Continuation-Tokenresponse header.Use example:
-
The user sends the first request with the parameter
limit=100(get the first 100 objects). In the response, the server returns the first 100 objects and theX-Luna-Continuation-Tokenheader with the token value (e.g., "1ueGcxLPRx1Tr/XYExHnhbYLgveDs2J/wm36Hy4vbOwM="). -
To get the next 100 objects, the user makes a second request, adding the
continuation_tokenparameter with theX-Luna-Continuation-Tokenvalue returned by the server. -
When all objects have been returned, the server returns an empty token ("").
-
-
The ability to run the Video Agent service in autonomous mode has been added.
In this mode, the user has access to Video Agent to create and manage streams (see requests for the /streams resource of the Video Agent service) without using the Video Manager service included in the platform. This allows the use of Video Agent in cases where, for some reason, Video Manager is not available.
However, there are a number of limitations compared to working via Video Manager: the following functionalities are unavailable — splittable streams, schedule templates, stream distribution between agents, stream grouping and automatic stream restart if the server on which the agent is running is unavailable.
New settings for running agents in autonomous mode have also been added:
LUNA_VIDEO_AGENT_SETTINGS.max_direct_streams— the maximum number of simultaneous streams the agent can handle directly (an integer ≥ 0). Default value: 2. If set to 0, the agent will not process streams directly (i.e., autonomous mode is effectively disabled);LUNA_VIDEO_AGENT_STREAMS_AUTORESTARTER_INTERVAL— the automatic stream restart interval;LUNA_VIDEO_AGENT_LOGS_CLEAR_INTERVAL— the log clearing interval.
For more information, see Autonomous Mode of Video Agent Service.
-
A warning has been added to the OpenAPI specification for the create stream request: using the
streamtype with a video file reference can lead to unexpected behavior (for example, endless file processing).The
videofiletype is intended for working with video files. If for some reason you must use thestreamtype, set thebehavior_parameters.eof_retry.attempt_count = 0parameter to disable reconnection attempts after reaching the end of the file. -
The Video Agent service now supports switching to the previous version of the
LivenessandDeepfakealgorithms via the Configurator settings.Previously, changing the algorithm version required manually editing the configuration file inside the container. Version management has now been moved to the Configurator settings: the
versionparameter has been added to the LUNA_VIDEO_AGENT_LIVENESS_ESTIMATOR_SETTINGS and LUNA_VIDEO_AGENT_DEEPFAKE_ESTIMATOR_SETTINGS parameter groups. This parameter accepts integer values:0— the default algorithm version is used.This simplifies setting up and testing different versions of the algorithms. For more information, see Managing Liveness and Deepfake neural network versions.
-
The set of acceptable characters for stream names has been expanded.
Previously, stream names could only contain Latin letters, numbers, hyphens, and underscores. This restriction has now been removed.
See the descriptions of the create stream, put stream, and get streams requests.
-
New series have been added to the Streams Retranslator service monitoring:
retranslate_stream_startedandretranslate_stream_stopped, which record the start and end of the stream retranslation process.For more information, see the "Monitoring" section of the developer manual.
-
The ability to create a lambda in a disabled state (without immediately running) has been added.
To achieve this, the
disabledparameter has been added to the create lambda, put lambda, and import lambda requests. The parameter accepts the following values:false— the lambda is loaded and runs immediately (default behavior);true— the lambda is loaded in a disabled state. This allows you to first load the lambda, make sure that it is created without errors, and only at the right moment run it using the requestswitch lambda.
-
Now the user can independently specify which stream groups their Agent lambda will process.
To do this, in the
user_configsection of the lambda, pass theluna_video_agent_groupsparameter specifying the desired stream groups. This will override the LUNA_LAMBDA_AGENT_UNIT_GROUPS value in the Configurator.See the User settings section of the developer manual and description of create lambda, put lambda, import lambda and update lambda config.
-
The method for installing dependencies for lambda development has changed.
Now, instead of manually installing individual dependencies, it is recommended to use the
luna-lambda-package-helperlibrary with the corresponding extension. It contains all the necessary libraries with with properly limited versions, ensuring correct lambda operation.Available extensions:
base— for thelpa-lambda-baseimage;lambda— for the Lambda service;agent— for thelpa-lambda-agent-baseimage;fsdk— for thelpa-lambda-base-fsdkimage.
For more information and examples, see the "Luna lambda tools" section of the developer's guide.
-
The Lambda - base image requirements section of the Lambda developer documentation has been updated to include a description of the
FSDK_ROOTenvironment variable for specifying the path to the FSDK. -
The Lambda service now supports using uv as a dependency installation tool.
Using
uvis a more modern and performant way of managing dependencies, which can be useful for specific tasks (for example, compatibility issues withpoetry).Note: The methods for installing dependencies via
poetryandpipremain available.See the Python dependencies section in the Lambda service developer guide.
-
The
pod_countparameter has been added to thepatch lambdarequest.This parameter allows you to change the number of lambda pods (range: 0 to 32). Previously, this parameter for an existing lambda could only be changed via the
put lambdarequest, but without the option to set it to 0. Settingpod_count: 0will stop the lambda. -
Starting with the current version of LUNA PLATFORM, generated lambdas ignore unknown configuration parameters, allowing them to function correctly when new parameters are added in future updates.
However, previously created Agent-type lambdas may stop working, requiring updates. To update them, use the "update lambda" request.
-
A new parameter LUNA_BUILDER_BUILD_SETTINGS.K8S_BUILD_TASK_LIMIT has been added to the Builder service.
This parameter limits the number of Docker image build tasks processed by a single Builder instance. If multiple Builder instances are running on the system, the setting applies to each instance independently (i.e., it limits the number of tasks for a specific instance, not the total number of tasks in the cluster). Valid values are integers from 1 to 128; the default value is
10.See the Kubernetes cluster requirements section of the Builder service developer guide.
-
Support for matching general events (
general_events) has been added to LUNA Vector Search Module — previously this feature was available only for regular events (events).When creating collections with the
general_eventsobject type, you must explicitly specify the descriptor parameters:descriptor_lengthandplat_scaling(for collections of theeventstype, these parameters are set automatically).For more information, see the Collections section in the LUNA Vector Search Module documentation.
Fixed errors
-
Fixed an error when create stream with the
group_namespecified if one or more fields in thelocationwere explicitly set tonull.Previously, such a request failed with error code
12022and a detailed description of the problematic field. -
Fixed an issue where extra parameters could be passed to
analytics.parametersin a create stream request.Such parameters had no effect on processing, but could be misleading. Now, only
parameters,callbacks, andtargetsare allowed in theanalytics.parametersobject. Passing any other additional fields will result in a validation error. -
Fixed an issue where feedback was being sent too frequently in the Video Agent service: previously, the
in_progressstatus was sent for every frame being processed, which created an excessive load on the system. -
Fixed an issue with incorrect stream status display.
Previously, if one analytics was paused while others were running, the entire stream's status would sometimes erroneously display as
paused(instead ofin_progress). Additionally, when all analytics were paused, the stream's status would cycle betweenin_progressandpaused. -
The previously missing
retransmission_fallbackandmax_direct_streamsparameters have been added to the LUNA_LAMBDA_AGENT_UNIT_SETTINGS settings group.retransmission_fallbackenables a mechanism for retransmitting streams usingMediaMtxto expand compatibility with previously unsupported formats (e.g., WebRTC). See the "Retransmission fallback" section of the Video Agent service developer guide.max_direct_streamsdefines the maximum number of simultaneous streams the agent processes in autonomous mode. For more information, see Autonomous Mode of Video Agent Service.
These settings are similar to the Video Agent service settings of the same name.