@quantum-hub/qhubctl 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +41 -0
  3. package/bin/dev.cmd +3 -0
  4. package/bin/dev.js +15 -0
  5. package/bin/run.cmd +3 -0
  6. package/bin/run.js +12 -0
  7. package/dist/client/kqh/apis/ServicePlatformApplicationsApi.d.ts +89 -0
  8. package/dist/client/kqh/apis/ServicePlatformApplicationsApi.js +259 -0
  9. package/dist/client/kqh/apis/ServicePlatformDashboardApi.d.ts +44 -0
  10. package/dist/client/kqh/apis/ServicePlatformDashboardApi.js +143 -0
  11. package/dist/client/kqh/apis/ServicePlatformDataPoolsApi.d.ts +133 -0
  12. package/dist/client/kqh/apis/ServicePlatformDataPoolsApi.js +410 -0
  13. package/dist/client/kqh/apis/ServicePlatformJobsApi.d.ts +101 -0
  14. package/dist/client/kqh/apis/ServicePlatformJobsApi.js +298 -0
  15. package/dist/client/kqh/apis/ServicePlatformMarketplaceApi.d.ts +48 -0
  16. package/dist/client/kqh/apis/ServicePlatformMarketplaceApi.js +152 -0
  17. package/dist/client/kqh/apis/ServicePlatformMeteringAPIApi.d.ts +29 -0
  18. package/dist/client/kqh/apis/ServicePlatformMeteringAPIApi.js +90 -0
  19. package/dist/client/kqh/apis/ServicePlatformServicesApi.d.ts +501 -0
  20. package/dist/client/kqh/apis/ServicePlatformServicesApi.js +1509 -0
  21. package/dist/client/kqh/apis/ServicePlatformSubscriptionsApi.d.ts +66 -0
  22. package/dist/client/kqh/apis/ServicePlatformSubscriptionsApi.js +194 -0
  23. package/dist/client/kqh/apis/TaxonomiesApi.d.ts +90 -0
  24. package/dist/client/kqh/apis/TaxonomiesApi.js +309 -0
  25. package/dist/client/kqh/apis/index.d.ts +9 -0
  26. package/dist/client/kqh/apis/index.js +27 -0
  27. package/dist/client/kqh/index.d.ts +3 -0
  28. package/dist/client/kqh/index.js +21 -0
  29. package/dist/client/kqh/models/AccessTokenDto.d.ts +81 -0
  30. package/dist/client/kqh/models/AccessTokenDto.js +66 -0
  31. package/dist/client/kqh/models/AmountMajorDto.d.ts +37 -0
  32. package/dist/client/kqh/models/AmountMajorDto.js +46 -0
  33. package/dist/client/kqh/models/ApiDto.d.ts +144 -0
  34. package/dist/client/kqh/models/ApiDto.js +99 -0
  35. package/dist/client/kqh/models/ApiOverviewDto.d.ts +119 -0
  36. package/dist/client/kqh/models/ApiOverviewDto.js +90 -0
  37. package/dist/client/kqh/models/ApplicationDto.d.ts +64 -0
  38. package/dist/client/kqh/models/ApplicationDto.js +60 -0
  39. package/dist/client/kqh/models/BuildJobDto.d.ts +75 -0
  40. package/dist/client/kqh/models/BuildJobDto.js +71 -0
  41. package/dist/client/kqh/models/CpuConfiguration.d.ts +38 -0
  42. package/dist/client/kqh/models/CpuConfiguration.js +49 -0
  43. package/dist/client/kqh/models/CreateApplicationRequest.d.ts +31 -0
  44. package/dist/client/kqh/models/CreateApplicationRequest.js +44 -0
  45. package/dist/client/kqh/models/CreateDataPoolRequest.d.ts +31 -0
  46. package/dist/client/kqh/models/CreateDataPoolRequest.js +46 -0
  47. package/dist/client/kqh/models/CreateExternalServicePricingPlanRequest.d.ts +46 -0
  48. package/dist/client/kqh/models/CreateExternalServicePricingPlanRequest.js +57 -0
  49. package/dist/client/kqh/models/CreateJobRequest.d.ts +62 -0
  50. package/dist/client/kqh/models/CreateJobRequest.js +57 -0
  51. package/dist/client/kqh/models/CreateManagedServicePricingPlanRequest.d.ts +73 -0
  52. package/dist/client/kqh/models/CreateManagedServicePricingPlanRequest.js +79 -0
  53. package/dist/client/kqh/models/CreateProductRequest.d.ts +43 -0
  54. package/dist/client/kqh/models/CreateProductRequest.js +52 -0
  55. package/dist/client/kqh/models/CreateSubscriptionRequest.d.ts +37 -0
  56. package/dist/client/kqh/models/CreateSubscriptionRequest.js +50 -0
  57. package/dist/client/kqh/models/CreateWorkflowServiceRequest.d.ts +37 -0
  58. package/dist/client/kqh/models/CreateWorkflowServiceRequest.js +48 -0
  59. package/dist/client/kqh/models/DataPoolDto.d.ts +166 -0
  60. package/dist/client/kqh/models/DataPoolDto.js +105 -0
  61. package/dist/client/kqh/models/DataPoolRef.d.ts +43 -0
  62. package/dist/client/kqh/models/DataPoolRef.js +48 -0
  63. package/dist/client/kqh/models/DataSourceDescriptorDto.d.ts +89 -0
  64. package/dist/client/kqh/models/DataSourceDescriptorDto.js +69 -0
  65. package/dist/client/kqh/models/FileDto.d.ts +73 -0
  66. package/dist/client/kqh/models/FileDto.js +51 -0
  67. package/dist/client/kqh/models/FileSource.d.ts +26 -0
  68. package/dist/client/kqh/models/FileSource.js +34 -0
  69. package/dist/client/kqh/models/GpuConfiguration.d.ts +49 -0
  70. package/dist/client/kqh/models/GpuConfiguration.js +60 -0
  71. package/dist/client/kqh/models/JobDto.d.ts +117 -0
  72. package/dist/client/kqh/models/JobDto.js +82 -0
  73. package/dist/client/kqh/models/JobOverviewDto.d.ts +74 -0
  74. package/dist/client/kqh/models/JobOverviewDto.js +67 -0
  75. package/dist/client/kqh/models/MemoryConfiguration.d.ts +38 -0
  76. package/dist/client/kqh/models/MemoryConfiguration.js +49 -0
  77. package/dist/client/kqh/models/MeteringRequest.d.ts +43 -0
  78. package/dist/client/kqh/models/MeteringRequest.js +48 -0
  79. package/dist/client/kqh/models/MeteringResponse.d.ts +49 -0
  80. package/dist/client/kqh/models/MeteringResponse.js +50 -0
  81. package/dist/client/kqh/models/MonthAmountDto.d.ts +51 -0
  82. package/dist/client/kqh/models/MonthAmountDto.js +52 -0
  83. package/dist/client/kqh/models/OwnerDto.d.ts +67 -0
  84. package/dist/client/kqh/models/OwnerDto.js +56 -0
  85. package/dist/client/kqh/models/PageDataPoolDto.d.ts +94 -0
  86. package/dist/client/kqh/models/PageDataPoolDto.js +67 -0
  87. package/dist/client/kqh/models/PageableObject.d.ts +62 -0
  88. package/dist/client/kqh/models/PageableObject.js +55 -0
  89. package/dist/client/kqh/models/PricingPlanDto.d.ts +52 -0
  90. package/dist/client/kqh/models/PricingPlanDto.js +57 -0
  91. package/dist/client/kqh/models/ProductAmountDto.d.ts +38 -0
  92. package/dist/client/kqh/models/ProductAmountDto.js +47 -0
  93. package/dist/client/kqh/models/ProductDto.d.ts +83 -0
  94. package/dist/client/kqh/models/ProductDto.js +76 -0
  95. package/dist/client/kqh/models/ProductGroupDto.d.ts +45 -0
  96. package/dist/client/kqh/models/ProductGroupDto.js +50 -0
  97. package/dist/client/kqh/models/ProductUsageDto.d.ts +61 -0
  98. package/dist/client/kqh/models/ProductUsageDto.js +54 -0
  99. package/dist/client/kqh/models/RegistrySource.d.ts +52 -0
  100. package/dist/client/kqh/models/RegistrySource.js +55 -0
  101. package/dist/client/kqh/models/RepositorySource.d.ts +32 -0
  102. package/dist/client/kqh/models/RepositorySource.js +47 -0
  103. package/dist/client/kqh/models/ResourceConfiguration.d.ts +31 -0
  104. package/dist/client/kqh/models/ResourceConfiguration.js +58 -0
  105. package/dist/client/kqh/models/ReviewDto.d.ts +51 -0
  106. package/dist/client/kqh/models/ReviewDto.js +56 -0
  107. package/dist/client/kqh/models/RuntimeConfiguration.d.ts +53 -0
  108. package/dist/client/kqh/models/RuntimeConfiguration.js +56 -0
  109. package/dist/client/kqh/models/ServiceDefinitionCommand.d.ts +39 -0
  110. package/dist/client/kqh/models/ServiceDefinitionCommand.js +52 -0
  111. package/dist/client/kqh/models/ServiceDefinitionDto.d.ts +180 -0
  112. package/dist/client/kqh/models/ServiceDefinitionDto.js +108 -0
  113. package/dist/client/kqh/models/ServiceDefinitionDtoSource.d.ts +23 -0
  114. package/dist/client/kqh/models/ServiceDefinitionDtoSource.js +54 -0
  115. package/dist/client/kqh/models/ServiceDefinitionOverviewDto.d.ts +79 -0
  116. package/dist/client/kqh/models/ServiceDefinitionOverviewDto.js +71 -0
  117. package/dist/client/kqh/models/ServiceDto.d.ts +59 -0
  118. package/dist/client/kqh/models/ServiceDto.js +59 -0
  119. package/dist/client/kqh/models/ServiceExecutionConsumerDto.d.ts +67 -0
  120. package/dist/client/kqh/models/ServiceExecutionConsumerDto.js +64 -0
  121. package/dist/client/kqh/models/ServiceExecutionDto.d.ts +49 -0
  122. package/dist/client/kqh/models/ServiceExecutionDto.js +50 -0
  123. package/dist/client/kqh/models/ServiceOverviewDto.d.ts +115 -0
  124. package/dist/client/kqh/models/ServiceOverviewDto.js +92 -0
  125. package/dist/client/kqh/models/ServiceSource.d.ts +31 -0
  126. package/dist/client/kqh/models/ServiceSource.js +58 -0
  127. package/dist/client/kqh/models/SortObject.d.ts +43 -0
  128. package/dist/client/kqh/models/SortObject.js +48 -0
  129. package/dist/client/kqh/models/SubscriptionDto.d.ts +58 -0
  130. package/dist/client/kqh/models/SubscriptionDto.js +55 -0
  131. package/dist/client/kqh/models/TaxonomyElement.d.ts +43 -0
  132. package/dist/client/kqh/models/TaxonomyElement.js +48 -0
  133. package/dist/client/kqh/models/UpdateDataPoolRequest.d.ts +109 -0
  134. package/dist/client/kqh/models/UpdateDataPoolRequest.js +72 -0
  135. package/dist/client/kqh/models/UpdateResourceConfigurationRequest.d.ts +23 -0
  136. package/dist/client/kqh/models/UpdateResourceConfigurationRequest.js +54 -0
  137. package/dist/client/kqh/models/UpdateVersionRequest.d.ts +44 -0
  138. package/dist/client/kqh/models/UpdateVersionRequest.js +49 -0
  139. package/dist/client/kqh/models/UpdateWorkflowServiceRequest.d.ts +31 -0
  140. package/dist/client/kqh/models/UpdateWorkflowServiceRequest.js +44 -0
  141. package/dist/client/kqh/models/ValidationResult.d.ts +52 -0
  142. package/dist/client/kqh/models/ValidationResult.js +57 -0
  143. package/dist/client/kqh/models/index.d.ts +57 -0
  144. package/dist/client/kqh/models/index.js +75 -0
  145. package/dist/client/kqh/runtime.d.ts +181 -0
  146. package/dist/client/kqh/runtime.js +340 -0
  147. package/dist/client/users/apis/AuthenticationApi.d.ts +31 -0
  148. package/dist/client/users/apis/AuthenticationApi.js +83 -0
  149. package/dist/client/users/apis/ExpertsApi.d.ts +44 -0
  150. package/dist/client/users/apis/ExpertsApi.js +112 -0
  151. package/dist/client/users/apis/SearchApi.d.ts +46 -0
  152. package/dist/client/users/apis/SearchApi.js +134 -0
  153. package/dist/client/users/apis/UserSettingsApi.d.ts +139 -0
  154. package/dist/client/users/apis/UserSettingsApi.js +417 -0
  155. package/dist/client/users/apis/UserSettingsPersonalAccessTokensApi.d.ts +64 -0
  156. package/dist/client/users/apis/UserSettingsPersonalAccessTokensApi.js +184 -0
  157. package/dist/client/users/apis/UsersApi.d.ts +70 -0
  158. package/dist/client/users/apis/UsersApi.js +170 -0
  159. package/dist/client/users/apis/index.d.ts +6 -0
  160. package/dist/client/users/apis/index.js +24 -0
  161. package/dist/client/users/index.d.ts +3 -0
  162. package/dist/client/users/index.js +21 -0
  163. package/dist/client/users/models/AccessTokenCreateRequest.d.ts +51 -0
  164. package/dist/client/users/models/AccessTokenCreateRequest.js +60 -0
  165. package/dist/client/users/models/AccessTokenDto.d.ts +75 -0
  166. package/dist/client/users/models/AccessTokenDto.js +68 -0
  167. package/dist/client/users/models/AccessTokensResponse.d.ts +38 -0
  168. package/dist/client/users/models/AccessTokensResponse.js +47 -0
  169. package/dist/client/users/models/DefaultAccessTokenResponse.d.ts +31 -0
  170. package/dist/client/users/models/DefaultAccessTokenResponse.js +44 -0
  171. package/dist/client/users/models/Language.d.ts +31 -0
  172. package/dist/client/users/models/Language.js +44 -0
  173. package/dist/client/users/models/PageUserDto.d.ts +94 -0
  174. package/dist/client/users/models/PageUserDto.js +67 -0
  175. package/dist/client/users/models/Pageable.d.ts +43 -0
  176. package/dist/client/users/models/Pageable.js +48 -0
  177. package/dist/client/users/models/PageableObject.d.ts +62 -0
  178. package/dist/client/users/models/PageableObject.js +55 -0
  179. package/dist/client/users/models/PersonalAccessTokenPrincipal.d.ts +38 -0
  180. package/dist/client/users/models/PersonalAccessTokenPrincipal.js +47 -0
  181. package/dist/client/users/models/Skill.d.ts +31 -0
  182. package/dist/client/users/models/Skill.js +44 -0
  183. package/dist/client/users/models/SortObject.d.ts +43 -0
  184. package/dist/client/users/models/SortObject.js +48 -0
  185. package/dist/client/users/models/UpdateUserRequest.d.ts +61 -0
  186. package/dist/client/users/models/UpdateUserRequest.js +54 -0
  187. package/dist/client/users/models/UserDto.d.ts +111 -0
  188. package/dist/client/users/models/UserDto.js +72 -0
  189. package/dist/client/users/models/UserOverviewDto.d.ts +67 -0
  190. package/dist/client/users/models/UserOverviewDto.js +56 -0
  191. package/dist/client/users/models/index.d.ts +14 -0
  192. package/dist/client/users/models/index.js +32 -0
  193. package/dist/client/users/runtime.d.ts +181 -0
  194. package/dist/client/users/runtime.js +340 -0
  195. package/dist/commands/compress/index.d.ts +6 -0
  196. package/dist/commands/compress/index.js +31 -0
  197. package/dist/commands/datapool/upload.d.ts +23 -0
  198. package/dist/commands/datapool/upload.js +266 -0
  199. package/dist/commands/get-context/index.d.ts +6 -0
  200. package/dist/commands/get-context/index.js +13 -0
  201. package/dist/commands/init/index.d.ts +10 -0
  202. package/dist/commands/init/index.js +81 -0
  203. package/dist/commands/list-contexts/index.d.ts +9 -0
  204. package/dist/commands/list-contexts/index.js +36 -0
  205. package/dist/commands/login/index.d.ts +10 -0
  206. package/dist/commands/login/index.js +68 -0
  207. package/dist/commands/logout/index.d.ts +6 -0
  208. package/dist/commands/logout/index.js +21 -0
  209. package/dist/commands/openapi/index.d.ts +26 -0
  210. package/dist/commands/openapi/index.js +313 -0
  211. package/dist/commands/run/index.d.ts +18 -0
  212. package/dist/commands/run/index.js +155 -0
  213. package/dist/commands/serve/index.d.ts +13 -0
  214. package/dist/commands/serve/index.js +93 -0
  215. package/dist/commands/services/index.d.ts +14 -0
  216. package/dist/commands/services/index.js +71 -0
  217. package/dist/commands/set-context/index.d.ts +17 -0
  218. package/dist/commands/set-context/index.js +69 -0
  219. package/dist/commands/up/index.d.ts +19 -0
  220. package/dist/commands/up/index.js +196 -0
  221. package/dist/index.d.ts +1 -0
  222. package/dist/index.js +4 -0
  223. package/dist/lib/command.d.ts +6 -0
  224. package/dist/lib/command.js +21 -0
  225. package/dist/lib/debug.d.ts +1 -0
  226. package/dist/lib/debug.js +5 -0
  227. package/dist/lib/entrypoint-resolver.d.ts +52 -0
  228. package/dist/lib/entrypoint-resolver.js +125 -0
  229. package/dist/lib/error.d.ts +1 -0
  230. package/dist/lib/error.js +20 -0
  231. package/dist/lib/fetch.d.ts +7 -0
  232. package/dist/lib/fetch.js +43 -0
  233. package/dist/lib/init-user-input.d.ts +18 -0
  234. package/dist/lib/init-user-input.js +87 -0
  235. package/dist/lib/random-name.d.ts +1 -0
  236. package/dist/lib/random-name.js +161 -0
  237. package/dist/lib/random-string.d.ts +1 -0
  238. package/dist/lib/random-string.js +12 -0
  239. package/dist/lib/repository.d.ts +3 -0
  240. package/dist/lib/repository.js +51 -0
  241. package/dist/lib/stream-to-blob.d.ts +2 -0
  242. package/dist/lib/stream-to-blob.js +27 -0
  243. package/dist/lib/up/get-description.d.ts +1 -0
  244. package/dist/lib/up/get-description.js +29 -0
  245. package/dist/lib/up/ignore.d.ts +1 -0
  246. package/dist/lib/up/ignore.js +21 -0
  247. package/dist/lib/up/zip.d.ts +1 -0
  248. package/dist/lib/up/zip.js +40 -0
  249. package/dist/model/account.d.ts +5 -0
  250. package/dist/model/account.js +2 -0
  251. package/dist/model/command.d.ts +12 -0
  252. package/dist/model/command.js +55 -0
  253. package/dist/model/managed-service-config.d.ts +28 -0
  254. package/dist/model/managed-service-config.js +16 -0
  255. package/dist/model/user-config.d.ts +22 -0
  256. package/dist/model/user-config.js +8 -0
  257. package/dist/service/auth-service.d.ts +9 -0
  258. package/dist/service/auth-service.js +38 -0
  259. package/dist/service/command-service.d.ts +9 -0
  260. package/dist/service/command-service.js +14 -0
  261. package/dist/service/quantum-hub-service.d.ts +24 -0
  262. package/dist/service/quantum-hub-service.js +222 -0
  263. package/dist/service/service-config-service.d.ts +3 -0
  264. package/dist/service/service-config-service.js +26 -0
  265. package/dist/service/user-config-service.d.ts +3 -0
  266. package/dist/service/user-config-service.js +26 -0
  267. package/dist/service/user-service.d.ts +9 -0
  268. package/dist/service/user-service.js +35 -0
  269. package/oclif.manifest.json +530 -0
  270. package/package.json +107 -0
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultBasePath = exports.AuthType = void 0;
4
+ var AuthType;
5
+ (function (AuthType) {
6
+ AuthType["API_KEY"] = "API_KEY";
7
+ })(AuthType || (exports.AuthType = AuthType = {}));
8
+ exports.defaultBasePath = 'https://api.hub.kipu-quantum.com';
@@ -0,0 +1,9 @@
1
+ import { UserDto } from '../client/users';
2
+ import UserConfig from '../model/user-config';
3
+ import UserService from './user-service';
4
+ export default class AuthService {
5
+ userConfig: UserConfig;
6
+ userService: UserService;
7
+ constructor(userConfig: UserConfig);
8
+ authenticate(apiKey: string): Promise<UserDto>;
9
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fetch_1 = require("../lib/fetch");
7
+ const user_config_1 = require("../model/user-config");
8
+ const user_service_1 = __importDefault(require("./user-service"));
9
+ class AuthService {
10
+ userConfig;
11
+ userService;
12
+ constructor(userConfig) {
13
+ this.userConfig = userConfig;
14
+ this.userService = new user_service_1.default(userConfig);
15
+ }
16
+ async authenticate(apiKey) {
17
+ try {
18
+ const basePath = (this.userConfig.endpoint?.basePath || user_config_1.defaultBasePath) + '/qc-catalog';
19
+ await (0, fetch_1.fetchOrThrow)(basePath + '/authorize', {
20
+ headers: { 'X-Auth-Token': apiKey },
21
+ method: 'POST',
22
+ });
23
+ return await this.userService.getCurrentUser(apiKey);
24
+ }
25
+ catch (error) {
26
+ if (error instanceof fetch_1.PlatformError) {
27
+ if (error.response.status === 401) {
28
+ throw new Error('Invalid API key');
29
+ }
30
+ const errorMessage = await error.getErrorMessage();
31
+ throw new Error(errorMessage);
32
+ }
33
+ console.error(JSON.stringify(error));
34
+ throw new Error('Internal error occurred, please contact your Quantum Hub administrator');
35
+ }
36
+ }
37
+ }
38
+ exports.default = AuthService;
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ import { Config } from '@oclif/core/lib/config';
3
+ import UserConfig from '../model/user-config';
4
+ export declare class CommandService {
5
+ cmd: Command;
6
+ config: Config;
7
+ userConfig: UserConfig;
8
+ constructor(cmd: Command, config: Config, userConfig: UserConfig);
9
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandService = void 0;
4
+ class CommandService {
5
+ cmd;
6
+ config;
7
+ userConfig;
8
+ constructor(cmd, config, userConfig) {
9
+ this.cmd = cmd;
10
+ this.config = config;
11
+ this.userConfig = userConfig;
12
+ }
13
+ }
14
+ exports.CommandService = CommandService;
@@ -0,0 +1,24 @@
1
+ import { Command } from '@oclif/core';
2
+ import { Config } from '@oclif/core/lib/config';
3
+ import { HubPlatformClient } from "@quantum-hub/qhub-api/dist/api/platform";
4
+ import { BuildJobDto, ServiceDefinitionDto, ServiceDto, ServiceOverviewDto, ServicePlatformServicesApi } from '../client/kqh';
5
+ import Account from '../model/account';
6
+ import ManagedServiceConfig from '../model/managed-service-config';
7
+ import UserConfig from '../model/user-config';
8
+ import { CommandService } from './command-service';
9
+ import { CreateServiceJobRequest, ServiceJobDto } from "@quantum-hub/qhub-api/dist/api/platform/api";
10
+ export default class QuantumHubService extends CommandService {
11
+ serviceApi: ServicePlatformServicesApi;
12
+ apiClient: HubPlatformClient;
13
+ constructor(cmd: Command, config: Config, userConfig: UserConfig);
14
+ createService(serviceConfig: ManagedServiceConfig, sourceCode: Blob, apiDefinition?: Blob): Promise<ServiceDto>;
15
+ getAccounts(): Promise<Account[]>;
16
+ getBuildJob(service: ServiceDto, serviceDefinition: ServiceDefinitionDto): Promise<BuildJobDto>;
17
+ getJobById(id: string): Promise<ServiceJobDto>;
18
+ getService(id: string): Promise<ServiceDto>;
19
+ getServices(): Promise<ServiceOverviewDto[]>;
20
+ runJob(request: CreateServiceJobRequest): Promise<ServiceJobDto>;
21
+ updateDescription(serviceConfig: ManagedServiceConfig, description: string): Promise<void>;
22
+ updateOpenapi(serviceConfig: ManagedServiceConfig, apiDefinition: Blob): Promise<void>;
23
+ updateService(serviceConfig: ManagedServiceConfig, description: string, sourceCode: Blob, apiDefinition?: Blob): Promise<ServiceDto>;
24
+ }
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const platform_1 = require("@quantum-hub/qhub-api/dist/api/platform");
4
+ const kqh_1 = require("../client/kqh");
5
+ const error_1 = require("../lib/error");
6
+ const fetch_1 = require("../lib/fetch");
7
+ const user_config_1 = require("../model/user-config");
8
+ const command_service_1 = require("./command-service");
9
+ class QuantumHubService extends command_service_1.CommandService {
10
+ serviceApi;
11
+ apiClient;
12
+ constructor(cmd, config, userConfig) {
13
+ super(cmd, config, userConfig);
14
+ const basePath = (userConfig.endpoint?.basePath || user_config_1.defaultBasePath) + '/qc-catalog';
15
+ const defaultHeaders = userConfig.endpoint?.defaultHeaders || {};
16
+ const apiKey = userConfig.auth?.value;
17
+ const organizationId = this.userConfig.context?.isOrganization ? this.userConfig.context.id : undefined;
18
+ this.serviceApi = new kqh_1.ServicePlatformServicesApi(new kqh_1.Configuration({
19
+ apiKey,
20
+ basePath,
21
+ headers: defaultHeaders,
22
+ }));
23
+ this.apiClient = new platform_1.HubPlatformClient({
24
+ apiKey,
25
+ baseUrl: basePath,
26
+ organizationId
27
+ });
28
+ }
29
+ async createService(serviceConfig, sourceCode, apiDefinition) {
30
+ const organizationId = this.userConfig.context?.isOrganization ? this.userConfig.context.id : undefined;
31
+ const milliCpus = (serviceConfig.resources?.cpu || 1) * 1000;
32
+ const memoryInMegabytes = (serviceConfig.resources?.memory || 2) * 1024;
33
+ const gpuAccelerator = serviceConfig.resources?.gpu?.type || 'NONE';
34
+ const gpuCount = serviceConfig.resources?.gpu?.count || 0;
35
+ try {
36
+ return await this.serviceApi.createManagedService({
37
+ apiDefinition,
38
+ gpuAccelerator,
39
+ gpuCount,
40
+ memoryInMegabytes,
41
+ milliCpus,
42
+ name: serviceConfig.name,
43
+ runtime: serviceConfig.runtime,
44
+ userCode: sourceCode,
45
+ xOrganizationId: organizationId,
46
+ });
47
+ }
48
+ catch (error) {
49
+ const errorMessage = await (0, error_1.handleError)(error);
50
+ throw new Error(errorMessage);
51
+ }
52
+ }
53
+ async getAccounts() {
54
+ const basePath = (this.userConfig.endpoint?.basePath || user_config_1.defaultBasePath) + '/qc-catalog';
55
+ try {
56
+ const response = await (0, fetch_1.fetchOrThrow)(basePath + '/my/accounts', {
57
+ headers: { 'X-Auth-Token': this.userConfig.auth.value },
58
+ });
59
+ return (await response.json());
60
+ }
61
+ catch (error) {
62
+ const errorMessage = await (0, error_1.handleError)(error);
63
+ throw new Error(errorMessage);
64
+ }
65
+ }
66
+ async getBuildJob(service, serviceDefinition) {
67
+ const organizationId = this.userConfig.context?.isOrganization ? this.userConfig.context.id : undefined;
68
+ try {
69
+ return await this.serviceApi.getBuildStatus({
70
+ serviceId: service.id,
71
+ versionId: serviceDefinition.id,
72
+ xOrganizationId: organizationId,
73
+ });
74
+ }
75
+ catch (error) {
76
+ const errorMessage = await (0, error_1.handleError)(error);
77
+ throw new Error(errorMessage);
78
+ }
79
+ }
80
+ async getJobById(id) {
81
+ try {
82
+ return await this.apiClient.serviceJobs.getServiceJob({ "id": id });
83
+ }
84
+ catch (error) {
85
+ const errorMessage = await (0, error_1.handleError)(error);
86
+ throw new Error(errorMessage);
87
+ }
88
+ }
89
+ async getService(id) {
90
+ const organizationId = this.userConfig.context?.isOrganization ? this.userConfig.context.id : undefined;
91
+ try {
92
+ return await this.serviceApi.getService({ id, xOrganizationId: organizationId });
93
+ }
94
+ catch (error) {
95
+ const errorMessage = await (0, error_1.handleError)(error);
96
+ throw new Error(errorMessage);
97
+ }
98
+ }
99
+ async getServices() {
100
+ const organizationId = this.userConfig.context?.isOrganization ? this.userConfig.context.id : undefined;
101
+ try {
102
+ return await this.serviceApi.getServices({ xOrganizationId: organizationId });
103
+ }
104
+ catch (error) {
105
+ const errorMessage = await (0, error_1.handleError)(error);
106
+ throw new Error(errorMessage);
107
+ }
108
+ }
109
+ async runJob(request) {
110
+ try {
111
+ return await this.apiClient.serviceJobs.createServiceJob(request);
112
+ }
113
+ catch (error) {
114
+ const errorMessage = await (0, error_1.handleError)(error);
115
+ throw new Error(errorMessage);
116
+ }
117
+ }
118
+ async updateDescription(serviceConfig, description) {
119
+ const organizationId = this.userConfig.context?.isOrganization ? this.userConfig.context.id : undefined;
120
+ const service = await this.serviceApi.getService({ id: serviceConfig.serviceId, xOrganizationId: organizationId });
121
+ const serviceDefinition = service?.serviceDefinitions?.[0];
122
+ try {
123
+ await this.serviceApi.updateServiceVersion({
124
+ serviceId: service.id,
125
+ updateVersionRequest: { description },
126
+ versionId: serviceDefinition.id,
127
+ xOrganizationId: organizationId,
128
+ });
129
+ }
130
+ catch (error) {
131
+ const errorMessage = await (0, error_1.handleError)(error);
132
+ throw new Error(errorMessage);
133
+ }
134
+ }
135
+ async updateOpenapi(serviceConfig, apiDefinition) {
136
+ const organizationId = this.userConfig.context?.isOrganization ? this.userConfig.context.id : undefined;
137
+ const service = await this.serviceApi.getService({ id: serviceConfig.serviceId, xOrganizationId: organizationId });
138
+ const serviceDefinition = service?.serviceDefinitions?.[0];
139
+ if (apiDefinition) {
140
+ await this.serviceApi.updateApiDefinition({
141
+ file: apiDefinition,
142
+ serviceId: service.id,
143
+ versionId: serviceDefinition.id,
144
+ xOrganizationId: organizationId,
145
+ });
146
+ }
147
+ }
148
+ async updateService(serviceConfig, description, sourceCode, apiDefinition) {
149
+ const organizationId = this.userConfig.context?.isOrganization ? this.userConfig.context.id : undefined;
150
+ const service = await this.serviceApi.getService({ id: serviceConfig.serviceId, xOrganizationId: organizationId });
151
+ const serviceDefinition = service?.serviceDefinitions?.[0];
152
+ const milliCpus = (serviceConfig.resources?.cpu || 1) * 1000;
153
+ const cpuConfiguration = {
154
+ amount: milliCpus,
155
+ type: 'cpu',
156
+ unit: 'm',
157
+ };
158
+ const memoryInMegabytes = (serviceConfig.resources?.memory || 2) * 1024;
159
+ const memoryConfiguration = {
160
+ amount: memoryInMegabytes,
161
+ type: 'memory',
162
+ unit: 'M',
163
+ };
164
+ const gpuAccelerator = serviceConfig.resources?.gpu?.type || 'NONE';
165
+ const gpuCount = serviceConfig.resources?.gpu?.count || 0;
166
+ const gpuConfiguration = {
167
+ accelerator: gpuAccelerator,
168
+ amount: gpuCount,
169
+ type: 'gpu',
170
+ };
171
+ try {
172
+ if (description) {
173
+ await this.serviceApi.updateServiceVersion({
174
+ serviceId: service.id,
175
+ updateVersionRequest: {
176
+ description,
177
+ },
178
+ versionId: serviceDefinition.id,
179
+ xOrganizationId: organizationId,
180
+ });
181
+ }
182
+ await this.serviceApi.updateResourceConfiguration({
183
+ serviceId: service.id,
184
+ updateResourceConfigurationRequest: cpuConfiguration,
185
+ versionId: serviceDefinition.id,
186
+ xOrganizationId: organizationId,
187
+ });
188
+ await this.serviceApi.updateResourceConfiguration({
189
+ serviceId: service.id,
190
+ updateResourceConfigurationRequest: memoryConfiguration,
191
+ versionId: serviceDefinition.id,
192
+ xOrganizationId: organizationId,
193
+ });
194
+ await this.serviceApi.updateResourceConfiguration({
195
+ serviceId: service.id,
196
+ updateResourceConfigurationRequest: gpuConfiguration,
197
+ versionId: serviceDefinition.id,
198
+ xOrganizationId: organizationId,
199
+ });
200
+ if (apiDefinition) {
201
+ await this.serviceApi.updateApiDefinition({
202
+ file: apiDefinition,
203
+ serviceId: service.id,
204
+ versionId: serviceDefinition.id,
205
+ xOrganizationId: organizationId,
206
+ });
207
+ }
208
+ await this.serviceApi.updateSourceCodePost({
209
+ file: sourceCode,
210
+ serviceId: service.id,
211
+ versionId: serviceDefinition.id,
212
+ xOrganizationId: organizationId,
213
+ });
214
+ return service;
215
+ }
216
+ catch (error) {
217
+ const errorMessage = await (0, error_1.handleError)(error);
218
+ throw new Error(errorMessage);
219
+ }
220
+ }
221
+ }
222
+ exports.default = QuantumHubService;
@@ -0,0 +1,3 @@
1
+ import ManagedServiceConfig from '../model/managed-service-config';
2
+ export declare const readServiceConfig: (location: string) => ManagedServiceConfig;
3
+ export declare const writeServiceConfig: (location: string, serviceConfig: ManagedServiceConfig) => ManagedServiceConfig;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.writeServiceConfig = exports.readServiceConfig = void 0;
7
+ const fs_extra_1 = require("fs-extra");
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const readServiceConfig = (location) => {
11
+ const file = node_path_1.default.join(location, 'qhub.json');
12
+ if (!node_fs_1.default.existsSync(file)) {
13
+ throw new Error('No qhub.json file found in current directory');
14
+ }
15
+ return (0, fs_extra_1.readJsonSync)(file, { encoding: 'utf8' });
16
+ };
17
+ exports.readServiceConfig = readServiceConfig;
18
+ const writeServiceConfig = (location, serviceConfig) => {
19
+ const file = node_path_1.default.join(location, 'qhub.json');
20
+ if (!node_fs_1.default.existsSync(file)) {
21
+ (0, fs_extra_1.createFileSync)(file);
22
+ }
23
+ (0, fs_extra_1.writeJsonSync)(file, serviceConfig, { encoding: 'utf8', spaces: 2 });
24
+ return (0, exports.readServiceConfig)(location);
25
+ };
26
+ exports.writeServiceConfig = writeServiceConfig;
@@ -0,0 +1,3 @@
1
+ import UserConfig from '../model/user-config';
2
+ export declare const readUserConfig: (location: string) => UserConfig;
3
+ export declare const writeUserConfig: (location: string, userConfig: UserConfig) => UserConfig;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.writeUserConfig = exports.readUserConfig = void 0;
7
+ const fs_extra_1 = require("fs-extra");
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const readUserConfig = (location) => {
11
+ const file = node_path_1.default.join(location, 'config.json');
12
+ if (!node_fs_1.default.existsSync(file)) {
13
+ return {};
14
+ }
15
+ return (0, fs_extra_1.readJsonSync)(file, { encoding: 'utf8' });
16
+ };
17
+ exports.readUserConfig = readUserConfig;
18
+ const writeUserConfig = (location, userConfig) => {
19
+ const file = node_path_1.default.join(location, 'config.json');
20
+ if (!node_fs_1.default.existsSync(file)) {
21
+ (0, fs_extra_1.createFileSync)(file);
22
+ }
23
+ (0, fs_extra_1.writeJsonSync)(file, userConfig, { encoding: 'utf8', spaces: 2 });
24
+ return (0, exports.readUserConfig)(location);
25
+ };
26
+ exports.writeUserConfig = writeUserConfig;
@@ -0,0 +1,9 @@
1
+ import { UserDto, UserSettingsApi } from '../client/users';
2
+ import UserConfig from '../model/user-config';
3
+ export default class UserService {
4
+ basePath: string;
5
+ defaultHeaders: Record<string, string>;
6
+ userSettingsApi: UserSettingsApi;
7
+ constructor(userConfig: UserConfig);
8
+ getCurrentUser(apiKey: string): Promise<UserDto>;
9
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const users_1 = require("../client/users");
4
+ const error_1 = require("../lib/error");
5
+ const user_config_1 = require("../model/user-config");
6
+ class UserService {
7
+ basePath;
8
+ defaultHeaders;
9
+ userSettingsApi;
10
+ constructor(userConfig) {
11
+ this.basePath = (userConfig.endpoint?.basePath || user_config_1.defaultBasePath) + '/user-service';
12
+ this.defaultHeaders = userConfig.endpoint?.defaultHeaders || {};
13
+ const apiKey = userConfig.auth?.value;
14
+ this.userSettingsApi = new users_1.UserSettingsApi(new users_1.Configuration({
15
+ apiKey,
16
+ basePath: this.basePath,
17
+ headers: this.defaultHeaders,
18
+ }));
19
+ }
20
+ async getCurrentUser(apiKey) {
21
+ const userSettingsApi = new users_1.UserSettingsApi(new users_1.Configuration({
22
+ apiKey,
23
+ basePath: this.basePath,
24
+ headers: this.defaultHeaders,
25
+ }));
26
+ try {
27
+ return await userSettingsApi.getUser();
28
+ }
29
+ catch (error) {
30
+ const errorMessage = await (0, error_1.handleError)(error);
31
+ throw new Error(errorMessage);
32
+ }
33
+ }
34
+ }
35
+ exports.default = UserService;