1- import { getAddon as getAddonProvider } from '@clevercloud/client/esm/api/v2/providers.js' ;
2- import { ONE_SECOND } from '@clevercloud/client/esm/with-cache.js' ;
3- import { sendToApi } from '../../lib/send-to-api.js' ;
1+ import { GetElasticsearchInfoCommand } from '@clevercloud/client/cc-api-commands/elasticsearch/get-elasticsearch-info-command.js' ;
2+ import { getCcApiClientWithOAuth } from '../../lib/cc-api-client.js' ;
43import { defineSmartComponent } from '../../lib/smart/define-smart-component.js' ;
54import '../cc-smart-container/cc-smart-container.js' ;
6- import { CcAddonCredentialsClient } from './cc-addon-credentials.client.js' ;
75import './cc-addon-credentials.js' ;
86
97/** @type {AddonCredentialsStateLoading } */
@@ -56,13 +54,11 @@ const LOADING_STATE = {
5654 } ,
5755 } ,
5856} ;
59- const PROVIDER_ID = 'es-addon' ;
6057
6158/**
6259 * @import { CcAddonCredentials } from './cc-addon-credentials.js'
63- * @import { AddonCredentialsStateLoaded, AddonCredentialsStateLoading, ElasticProviderInfo } from './cc-addon-credentials.types.js'
60+ * @import { AddonCredentialsStateLoaded, AddonCredentialsStateLoading } from './cc-addon-credentials.types.js'
6461 * @import { AddonCredential } from '../cc-addon-credentials-content/cc-addon-credentials-content.types.js'
65- * @import { ApiConfig } from '../../lib/send-to-api.types.js'
6662 * @import { OnContextUpdateArgs } from '../../lib/smart/smart-component.types.js'
6763 */
6864
@@ -77,39 +73,82 @@ defineSmartComponent({
7773 * @param {OnContextUpdateArgs<CcAddonCredentials> } args
7874 */
7975 onContextUpdate ( { context, updateComponent, signal } ) {
80- const { apiConfig, addonId, ownerId } = context ;
81- const api = new Api ( { apiConfig, ownerId , addonId , signal } ) ;
76+ const { apiConfig, addonId } = context ;
77+ const ccApiClient = getCcApiClientWithOAuth ( apiConfig ) ;
8278
8379 updateComponent ( 'state' , LOADING_STATE ) ;
8480
85- api
86- . getAllCredentials ( )
87- . then ( ( { elastic, kibana, apm } ) => {
81+ ccApiClient
82+ . send ( new GetElasticsearchInfoCommand ( { addonId } ) , { signal } )
83+ . then ( ( esInfo ) => {
84+ const kibanaService = esInfo . services . find ( ( service ) => service . name === 'kibana' ) ;
85+ const apmService = esInfo . services . find ( ( service ) => service . name === 'apm' ) ;
86+ const isKibanaEnabled = kibanaService ?. enabled ?? false ;
87+ const isApmEnabled = apmService ?. enabled ?? false ;
88+
89+ /** @type {AddonCredential[] } */
90+ const elasticCredentials = [
91+ {
92+ code : 'host' ,
93+ value : esInfo . config . host ,
94+ } ,
95+ {
96+ code : 'user' ,
97+ value : esInfo . config . user ,
98+ } ,
99+ {
100+ code : 'password' ,
101+ value : esInfo . config . password ,
102+ } ,
103+ ] ;
104+
88105 updateComponent (
89106 'state' ,
90107 /** @param {AddonCredentialsStateLoaded|AddonCredentialsStateLoading } state */
91108 ( state ) => {
92109 state . type = 'loaded' ;
93- // Build tabs object with only enabled services
110+
94111 /** @type {Record<string, {content: AddonCredential[]}> } */
95112 const updatedTabs = {
96113 elastic : {
97114 ...state . tabs . elastic ,
98- content : elastic ,
115+ content : elasticCredentials ,
99116 } ,
100117 } ;
101118
102- if ( apm != null ) {
119+ if ( isApmEnabled ) {
103120 updatedTabs . apm = {
104121 ...state . tabs . apm ,
105- content : apm ,
122+ content : [
123+ {
124+ code : 'user' ,
125+ value : esInfo . config . apmUser ,
126+ } ,
127+ {
128+ code : 'password' ,
129+ value : esInfo . config . apmPassword ,
130+ } ,
131+ {
132+ code : 'token' ,
133+ value : esInfo . config . apmAuthToken ,
134+ } ,
135+ ] ,
106136 } ;
107137 }
108138
109- if ( kibana != null ) {
139+ if ( isKibanaEnabled ) {
110140 updatedTabs . kibana = {
111141 ...state . tabs . kibana ,
112- content : kibana ,
142+ content : [
143+ {
144+ code : 'user' ,
145+ value : esInfo . config . kibanaUser ,
146+ } ,
147+ {
148+ code : 'password' ,
149+ value : esInfo . config . kibanaPassword ,
150+ } ,
151+ ] ,
113152 } ;
114153 }
115154
@@ -123,103 +162,3 @@ defineSmartComponent({
123162 } ) ;
124163 } ,
125164} ) ;
126-
127- class Api extends CcAddonCredentialsClient {
128- /**
129- * @param {object } params
130- * @param {ApiConfig } params.apiConfig
131- * @param {string } params.ownerId
132- * @param {string } params.addonId
133- * @param {AbortSignal } params.signal
134- */
135- constructor ( { apiConfig, ownerId, addonId, signal } ) {
136- super ( { apiConfig, ownerId, addonId, providerId : PROVIDER_ID , signal } ) ;
137- }
138-
139- /**
140- *
141- * @param {string } providerId
142- * @returns {Promise<ElasticProviderInfo> }
143- */
144- _getAddonProvider ( providerId ) {
145- return getAddonProvider ( { providerId, addonId : this . _addonId } ) . then (
146- sendToApi ( { apiConfig : this . _apiConfig , signal : this . _signal , cacheDelay : ONE_SECOND } ) ,
147- ) ;
148- }
149-
150- /**
151- * @param {'elastic' | 'apm' | 'kibana' } tabType
152- * @return {Promise<AddonCredential[]> }
153- */
154- async getCredentials ( tabType ) {
155- const addonProvider = await this . _getAddonProvider ( this . _providerId ) ;
156- switch ( tabType ) {
157- case 'elastic' :
158- return [
159- {
160- code : 'host' ,
161- value : addonProvider . config . host ,
162- } ,
163- {
164- code : 'user' ,
165- value : addonProvider . config . user ,
166- } ,
167- {
168- code : 'password' ,
169- value : addonProvider . config . password ,
170- } ,
171- ] ;
172- case 'apm' :
173- return [
174- {
175- code : 'user' ,
176- value : addonProvider . config . apm_user ,
177- } ,
178- {
179- code : 'password' ,
180- value : addonProvider . config . apm_password ,
181- } ,
182- {
183- code : 'token' ,
184- value : addonProvider . config . apm_auth_token ,
185- } ,
186- ] ;
187- case 'kibana' :
188- return [
189- {
190- code : 'user' ,
191- value : addonProvider . config . kibana_user ,
192- } ,
193- {
194- code : 'password' ,
195- value : addonProvider . config . kibana_password ,
196- } ,
197- ] ;
198- }
199- }
200-
201- /**
202- * @return {Promise<{elastic: AddonCredential[], kibana: AddonCredential[] | null, apm: AddonCredential[] | null}> }
203- */
204- async getAllCredentials ( ) {
205- const addonProvider = await this . _getAddonProvider ( this . _providerId ) ;
206-
207- // Check which services are enabled
208- const kibanaService = addonProvider . services . find ( ( service ) => service . name === 'kibana' ) ;
209- const apmService = addonProvider . services . find ( ( service ) => service . name === 'apm' ) ;
210- const isKibanaEnabled = kibanaService ?. enabled ?? false ;
211- const isApmEnabled = apmService ?. enabled ?? false ;
212-
213- const [ elasticCredentials , kibanaCredentials , apmCredentials ] = await Promise . all ( [
214- this . getCredentials ( 'elastic' ) ,
215- isKibanaEnabled ? this . getCredentials ( 'kibana' ) : null ,
216- isApmEnabled ? this . getCredentials ( 'apm' ) : null ,
217- ] ) ;
218-
219- return {
220- elastic : elasticCredentials ,
221- kibana : kibanaCredentials ,
222- apm : apmCredentials ,
223- } ;
224- }
225- }
0 commit comments