Stanislav Lukyanov created IGNITE-24738:
-------------------------------------------

             Summary: Provide simplified Management API access
                 Key: IGNITE-24738
                 URL: https://issues.apache.org/jira/browse/IGNITE-24738
             Project: Ignite
          Issue Type: Improvement
          Components: rest
            Reporter: Stanislav Lukyanov


h1. Motivation

In Ignite 3, application and management APIs are segregated. The application 
interface's entry point the `Ignite` interface with all the data and compute 
APIs. The management interface is REST, with an option to generate a language 
client via OpenAPI, and with CLI providing a wrapper for scripting and REPL.

While this works fine for production-level setups with standalone node 
deployment, it's cumbersome in two other cases:
 * Examples and experimentation - for that, I often want to have as much as 
possible done in my language of choice without mixing, say, Java and Bash 
scripts.
 * Embedded mode - that often requires management API access for automation 
inside of the app.

An illustration of this is that IgniteServer had already introduced methods for 
cluster initialization. However, these are not the only methods one would need 
for an embedded mode set up.
h1. Proposal

Provide an easier access to Management API. The proposed strategy is to start 
with Java and implement gradual improvements, then expand the same approach to 
other languages.

Improvement steps:
 * Provide docs and examples showing how to generate the OpenAPI client and use 
it in the embedded mode application.
 * Provide a pre-build OpenAPI client.
 * Provide a way to authenticate the OpenAPI client in embedded mode without 
having username and password.
 ** In embedded mode, you typically don't use any credentials. The fact that 
you have access to IgniteServer means the highest level of access.
 ** To simplify embedded mode use cases, local access needs to either be 
auth-less for localhost (less secure) or there has to be a way to extract a 
REST token from the IgniteServer (more secure).
 * Implement a custom, idiomatic management API and management API clients. For 
remote access, the API will wrap the OpenAPI client; for embedded mode, the API 
will access the local node directly, without HTTP.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to