feat(settings): Add runtime settings management, node & baremetal managers, and settings UI
This commit is contained in:
		
							
								
								
									
										22
									
								
								ts_interfaces/requests/baremetal.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								ts_interfaces/requests/baremetal.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| import * as plugins from '../plugins.js'; | ||||
| import type { IBareMetal } from '../data/baremetal.js'; | ||||
|  | ||||
| export interface IRequest_Any_Cloudly_GetBaremetalServers { | ||||
|   method: 'getBaremetalServers'; | ||||
|   request: {}; | ||||
|   response: { | ||||
|     baremetals: IBareMetal[]; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| export interface IRequest_Any_Cloudly_ControlBaremetal { | ||||
|   method: 'controlBaremetal'; | ||||
|   request: { | ||||
|     baremetalId: string; | ||||
|     action: 'powerOn' | 'powerOff' | 'reset'; | ||||
|   }; | ||||
|   response: { | ||||
|     success: boolean; | ||||
|     message: string; | ||||
|   }; | ||||
| } | ||||
| @@ -1,6 +1,7 @@ | ||||
| import * as plugins from '../plugins.js'; | ||||
|  | ||||
| import * as adminRequests from './admin.js'; | ||||
| import * as baremetalRequests from './baremetal.js'; | ||||
| import * as certificateRequests from './certificate.js'; | ||||
| import * as clusterRequests from './cluster.js'; | ||||
| import * as configRequests from './config.js'; | ||||
| @@ -10,16 +11,19 @@ import * as imageRequests from './image.js'; | ||||
| import * as informRequests from './inform.js'; | ||||
| import * as logRequests from './log.js'; | ||||
| import * as networkRequests from './network.js'; | ||||
| import * as nodeRequests from './node.js'; | ||||
| import * as routingRequests from './routing.js'; | ||||
| import * as secretBundleRequests from './secretbundle.js'; | ||||
| import * as secretGroupRequests from './secretgroup.js';  | ||||
| import * as serverRequests from './server.js'; | ||||
| import * as serviceRequests from './service.js'; | ||||
| import * as settingsRequests from './settings.js'; | ||||
| import * as statusRequests from './status.js'; | ||||
| import * as versionRequests from './version.js'; | ||||
|  | ||||
| export { | ||||
|   adminRequests as admin, | ||||
|   baremetalRequests as baremetal, | ||||
|   certificateRequests as certificate, | ||||
|   clusterRequests as cluster, | ||||
|   configRequests as config, | ||||
| @@ -29,11 +33,13 @@ export { | ||||
|   informRequests as inform, | ||||
|   logRequests as log, | ||||
|   networkRequests as network, | ||||
|   nodeRequests as node, | ||||
|   routingRequests as routing, | ||||
|   secretBundleRequests as secretbundle, | ||||
|   secretGroupRequests as secretgroup, | ||||
|   serverRequests as server, | ||||
|   serviceRequests as service, | ||||
|   settingsRequests as settings, | ||||
|   statusRequests as status, | ||||
|   versionRequests as version, | ||||
| }; | ||||
|   | ||||
							
								
								
									
										33
									
								
								ts_interfaces/requests/node.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								ts_interfaces/requests/node.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| import * as plugins from '../plugins.js'; | ||||
| import type { IClusterNode } from '../data/clusternode.js'; | ||||
| import type { IDeployment } from '../data/deployment.js'; | ||||
|  | ||||
| export interface IRequest_Any_Cloudly_GetNodeConfig { | ||||
|   method: 'getNodeConfig'; | ||||
|   request: { | ||||
|     nodeId: string; | ||||
|   }; | ||||
|   response: { | ||||
|     configData: IClusterNode; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| export interface IRequest_Any_Cloudly_GetNodesByCluster { | ||||
|   method: 'getNodesByCluster'; | ||||
|   request: { | ||||
|     clusterId: string; | ||||
|   }; | ||||
|   response: { | ||||
|     nodes: IClusterNode[]; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| export interface IRequest_Any_Cloudly_GetNodeDeployments { | ||||
|   method: 'getNodeDeployments'; | ||||
|   request: { | ||||
|     nodeId: string; | ||||
|   }; | ||||
|   response: { | ||||
|     deployments: IDeployment[]; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										59
									
								
								ts_interfaces/requests/settings.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								ts_interfaces/requests/settings.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| import * as plugins from '../plugins.js'; | ||||
| import type { ICloudlySettings, ICloudlySettingsMasked } from '../data/settings.js'; | ||||
|  | ||||
| // Get Settings | ||||
| export interface IRequest_GetSettings extends plugins.typedrequestInterfaces.ITypedRequest { | ||||
|   method: 'getSettings'; | ||||
|   request: {}; | ||||
|   response: { | ||||
|     settings: ICloudlySettingsMasked; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| // Update Settings | ||||
| export interface IRequest_UpdateSettings extends plugins.typedrequestInterfaces.ITypedRequest { | ||||
|   method: 'updateSettings'; | ||||
|   request: { | ||||
|     updates: Partial<ICloudlySettings>; | ||||
|   }; | ||||
|   response: { | ||||
|     success: boolean; | ||||
|     message: string; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| // Clear Specific Setting | ||||
| export interface IRequest_ClearSetting extends plugins.typedrequestInterfaces.ITypedRequest { | ||||
|   method: 'clearSetting'; | ||||
|   request: { | ||||
|     key: keyof ICloudlySettings; | ||||
|   }; | ||||
|   response: { | ||||
|     success: boolean; | ||||
|     message: string; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| // Test Provider Connection | ||||
| export interface IRequest_TestProviderConnection extends plugins.typedrequestInterfaces.ITypedRequest { | ||||
|   method: 'testProviderConnection'; | ||||
|   request: { | ||||
|     provider: 'hetzner' | 'cloudflare' | 'aws' | 'digitalocean' | 'azure' | 'google' | 'vultr' | 'linode' | 'ovh' | 'scaleway'; | ||||
|   }; | ||||
|   response: { | ||||
|     success: boolean; | ||||
|     message: string; | ||||
|     connectionValid: boolean; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| // Get Single Setting (for internal use, not exposed to frontend) | ||||
| export interface IRequest_GetSetting extends plugins.typedrequestInterfaces.ITypedRequest { | ||||
|   method: 'getSetting'; | ||||
|   request: { | ||||
|     key: keyof ICloudlySettings; | ||||
|   }; | ||||
|   response: { | ||||
|     value: string | undefined; | ||||
|   }; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user