[ https://issues.apache.org/jira/browse/IGNITE-24738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17933663#comment-17933663 ]
Stanislav Lukyanov commented on IGNITE-24738: --------------------------------------------- Ideally, you should be able to write something like{{{}{}}} {code:java} IgniteServer embeddedServer = IgniteServer.start(...); IgniteManagement mgmt = embeddedServer.managementApi(); mgmt.nodeConfiguration().update(...); ... mgmt.cluster().init(...); ... Ignite client = embeddedServer.api(); client.catalog().createTable(...) ... {code} > 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 > Priority: Major > Labels: ignite-3 > > 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)