@contrail/cli 1.0.71 → 2.0.1

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 +21 -0
  2. package/README.md +1034 -5
  3. package/bin/dev +17 -0
  4. package/bin/dev.cmd +3 -0
  5. package/bin/run +5 -0
  6. package/bin/run.cmd +3 -0
  7. package/{lib → dist}/api/apps.d.ts +13 -13
  8. package/dist/api/apps.js +96 -0
  9. package/{lib → dist}/api/event-workflow-action-definition.d.ts +1 -1
  10. package/dist/api/event-workflow-action-definition.js +11 -0
  11. package/{lib → dist}/api/event-workflow-template-definition.d.ts +6 -6
  12. package/dist/api/event-workflow-template-definition.js +26 -0
  13. package/{lib → dist}/api/event-workflow-templates.d.ts +7 -7
  14. package/dist/api/event-workflow-templates.js +32 -0
  15. package/dist/api/types.d.ts +7 -0
  16. package/dist/api/types.js +52 -0
  17. package/{lib → dist}/auth/auth.d.ts +9 -9
  18. package/dist/auth/auth.js +6 -0
  19. package/{lib → dist}/auth/login.d.ts +2 -2
  20. package/{lib → dist}/auth/login.js +146 -141
  21. package/dist/commands/app/create.d.ts +6 -0
  22. package/dist/commands/app/create.js +15 -0
  23. package/dist/commands/app/delete.d.ts +7 -0
  24. package/dist/commands/app/delete.js +38 -0
  25. package/dist/commands/app/install.d.ts +11 -0
  26. package/dist/commands/app/install.js +117 -0
  27. package/dist/commands/app/publish.d.ts +7 -0
  28. package/dist/commands/app/publish.js +45 -0
  29. package/dist/commands/app/uninstall.d.ts +10 -0
  30. package/dist/commands/app/uninstall.js +58 -0
  31. package/dist/commands/app/upgrade.d.ts +11 -0
  32. package/dist/commands/app/upgrade.js +79 -0
  33. package/dist/commands/colors/deleteAll.d.ts +6 -0
  34. package/dist/commands/colors/deleteAll.js +30 -0
  35. package/dist/commands/colors/load.d.ts +6 -0
  36. package/dist/commands/colors/load.js +29 -0
  37. package/dist/commands/config/list.d.ts +6 -0
  38. package/dist/commands/config/list.js +15 -0
  39. package/dist/commands/config/remove.d.ts +14 -0
  40. package/dist/commands/config/remove.js +26 -0
  41. package/dist/commands/config/set.d.ts +13 -0
  42. package/dist/commands/config/set.js +29 -0
  43. package/dist/commands/loader-process/load.d.ts +9 -0
  44. package/dist/commands/loader-process/load.js +33 -0
  45. package/dist/commands/loader-process/upload-and-load.d.ts +10 -0
  46. package/dist/commands/loader-process/upload-and-load.js +35 -0
  47. package/dist/commands/projects/export.d.ts +10 -0
  48. package/dist/commands/projects/export.js +34 -0
  49. package/dist/commands/projects/list.d.ts +6 -0
  50. package/dist/commands/projects/list.js +34 -0
  51. package/dist/commands/projects/load.d.ts +9 -0
  52. package/{lib/projects/project-uploader.js → dist/commands/projects/load.js} +106 -105
  53. package/dist/commands/types/exportOptionSetHierarchies.d.ts +7 -0
  54. package/{lib/types/option-set-hierarchy-exporter.js → dist/commands/types/exportOptionSetHierarchies.js} +130 -113
  55. package/{lib/types/types-extractor.d.ts → dist/commands/types/getAll.d.ts} +29 -27
  56. package/{lib/types/types-extractor.js → dist/commands/types/getAll.js} +267 -318
  57. package/dist/commands/types/loadAll.d.ts +7 -0
  58. package/dist/commands/types/loadAll.js +41 -0
  59. package/dist/commands/types/mergeOptionSets.d.ts +9 -0
  60. package/{lib/types/option-set-merger.js → dist/commands/types/mergeOptionSets.js} +114 -105
  61. package/dist/commands/types/mergeTypeProperties.d.ts +11 -0
  62. package/dist/commands/types/mergeTypeProperties.js +89 -0
  63. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.d.ts +10 -0
  64. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.js +112 -0
  65. package/dist/commands/types/parseOptionSetsLocalFiles.d.ts +14 -0
  66. package/dist/commands/types/parseOptionSetsLocalFiles.js +153 -0
  67. package/dist/commands/types/parseOptionSetsToFolderStructure.d.ts +10 -0
  68. package/dist/commands/types/parseOptionSetsToFolderStructure.js +104 -0
  69. package/dist/commands/types/parseTypesFromFiles.d.ts +10 -0
  70. package/dist/commands/types/parseTypesFromFiles.js +34 -0
  71. package/dist/commands/types/parseTypesFromLocalFiles.d.ts +10 -0
  72. package/dist/commands/types/parseTypesFromLocalFiles.js +34 -0
  73. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.d.ts +11 -0
  74. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.js +36 -0
  75. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.d.ts +10 -0
  76. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.js +35 -0
  77. package/dist/commands/types/uploadOptionSetHierarchies.d.ts +7 -0
  78. package/{lib/types/option-set-hierarchy-uploader.js → dist/commands/types/uploadOptionSetHierarchies.js} +130 -113
  79. package/dist/commands/types/uploadOptionSets.d.ts +7 -0
  80. package/{lib/types/option-set-uploader.js → dist/commands/types/uploadOptionSets.js} +115 -98
  81. package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.d.ts +11 -0
  82. package/{lib/types/option-set-hierarchy-parser.js → dist/commands/types/uploadOptionSetsHierarchyLocalFile.js} +128 -140
  83. package/dist/commands/types/uploadRuleSets.d.ts +7 -0
  84. package/{lib/types/rule-set-uploader.js → dist/commands/types/uploadRuleSets.js} +189 -172
  85. package/dist/commands/types/uploadTypePropertyPolicies.d.ts +7 -0
  86. package/{lib/types/type-property-policy-uploader.js → dist/commands/types/uploadTypePropertyPolicies.js} +195 -178
  87. package/dist/commands/types/uploadUsageInfo.d.ts +7 -0
  88. package/{lib/types/usage-info-uploader.js → dist/commands/types/uploadUsageInfo.js} +149 -132
  89. package/dist/commands/users/export.d.ts +9 -0
  90. package/dist/commands/users/export.js +60 -0
  91. package/dist/commands/users/upload.d.ts +9 -0
  92. package/dist/commands/users/upload.js +65 -0
  93. package/dist/commands/workflow-template-definitions/install.d.ts +6 -0
  94. package/dist/commands/workflow-template-definitions/install.js +17 -0
  95. package/dist/commands/workflow-template-definitions/list.d.ts +6 -0
  96. package/dist/commands/workflow-template-definitions/list.js +17 -0
  97. package/dist/commands/workflow-templates/delete.d.ts +6 -0
  98. package/dist/commands/workflow-templates/delete.js +17 -0
  99. package/dist/commands/workflow-templates/list.d.ts +6 -0
  100. package/dist/commands/workflow-templates/list.js +17 -0
  101. package/dist/commands/workflow-templates/load.d.ts +9 -0
  102. package/dist/commands/workflow-templates/load.js +21 -0
  103. package/{lib → dist}/common.d.ts +1 -1
  104. package/dist/common.js +9 -0
  105. package/{lib/apps/deploy-app → dist/helpers/app}/actions-deployer.d.ts +11 -11
  106. package/{lib/apps/deploy-app → dist/helpers/app}/actions-deployer.js +122 -114
  107. package/{lib/apps/deploy-app → dist/helpers/app}/app-deployer.d.ts +8 -8
  108. package/{lib/apps/deploy-app → dist/helpers/app}/app-deployer.js +98 -93
  109. package/{lib/apps/deploy-app → dist/helpers/app}/app-template-parsers.d.ts +7 -7
  110. package/{lib/apps/deploy-app → dist/helpers/app}/app-template-parsers.js +43 -38
  111. package/dist/helpers/app/load-app-config.d.ts +1 -0
  112. package/dist/helpers/app/load-app-config.js +18 -0
  113. package/dist/helpers/app/setup-template.d.ts +1 -0
  114. package/dist/helpers/app/setup-template.js +38 -0
  115. package/dist/helpers/colors/helpers.d.ts +4 -0
  116. package/dist/helpers/colors/helpers.js +74 -0
  117. package/{lib → dist/helpers}/config/config.d.ts +6 -6
  118. package/dist/helpers/config/config.js +76 -0
  119. package/dist/helpers/loader-process/helpers.d.ts +2 -0
  120. package/{lib/loader-process/loader-process.js → dist/helpers/loader-process/helpers.js} +98 -120
  121. package/dist/helpers/projects/helpers.d.ts +2 -0
  122. package/{lib/projects/project-exporter.js → dist/helpers/projects/helpers.js} +165 -187
  123. package/{lib → dist/helpers}/types/csv-parser.d.ts +1 -1
  124. package/{lib → dist/helpers}/types/csv-parser.js +56 -51
  125. package/dist/helpers/types/type-extractor.d.ts +1 -0
  126. package/dist/helpers/types/type-extractor.js +32 -0
  127. package/dist/helpers/types/type-parser.d.ts +4 -0
  128. package/dist/helpers/types/type-parser.js +118 -0
  129. package/{lib/types/types-uploader.d.ts → dist/helpers/types/type-uploader.d.ts} +1 -1
  130. package/{lib/types/types-uploader.js → dist/helpers/types/type-uploader.js} +244 -239
  131. package/{lib → dist/helpers}/workflow-template-definitions/workflow-template-definition-deployer.d.ts +12 -12
  132. package/{lib → dist/helpers}/workflow-template-definitions/workflow-template-definition-deployer.js +156 -151
  133. package/{lib/workflow-templates/local-workflow-template-deployer.d.ts → dist/helpers/workflow-templates/helper.d.ts} +17 -11
  134. package/dist/helpers/workflow-templates/helper.js +166 -0
  135. package/dist/index.d.ts +1 -0
  136. package/dist/index.js +5 -0
  137. package/{lib → dist}/interfaces.d.ts +323 -191
  138. package/dist/interfaces.js +63 -0
  139. package/{templates → dist/templates}/typescript/Dockerfile +15 -15
  140. package/{templates → dist/templates}/typescript/README.md +10 -10
  141. package/{templates → dist/templates}/typescript/app.yml +49 -49
  142. package/{templates → dist/templates}/typescript/docker_deploy.bat +1 -1
  143. package/{templates → dist/templates}/typescript/package.json +54 -54
  144. package/{templates → dist/templates}/typescript/src/actions/logItem.ts +25 -25
  145. package/{templates → dist/templates}/typescript/src/framework/action-dispatcher.ts +89 -89
  146. package/{templates → dist/templates}/typescript/src/framework/app-config.ts +26 -26
  147. package/{templates → dist/templates}/typescript/src/framework/handler.ts +11 -11
  148. package/{templates → dist/templates}/typescript/src/framework/index.ts +2 -2
  149. package/{templates → dist/templates}/typescript/src/framework/interfaces.ts +32 -32
  150. package/{templates → dist/templates}/typescript/src/framework/logger.ts +21 -21
  151. package/{templates → dist/templates}/typescript/src/framework/mock-server.ts +31 -31
  152. package/{templates → dist/templates}/typescript/tsconfig.json +28 -28
  153. package/oclif.manifest.json +821 -0
  154. package/package.json +116 -72
  155. package/.eslintrc.js +0 -53
  156. package/.vscode/settings.json +0 -6
  157. package/bin/init +0 -4
  158. package/lib/api/apps.js +0 -85
  159. package/lib/api/event-workflow-action-definition.js +0 -7
  160. package/lib/api/event-workflow-template-definition.js +0 -20
  161. package/lib/api/event-workflow-templates.js +0 -25
  162. package/lib/apps/create-app/create.d.ts +0 -1
  163. package/lib/apps/create-app/create.js +0 -60
  164. package/lib/apps/create-app/setup-template.d.ts +0 -1
  165. package/lib/apps/create-app/setup-template.js +0 -34
  166. package/lib/apps/deploy-app/deploy.d.ts +0 -2
  167. package/lib/apps/deploy-app/deploy.js +0 -58
  168. package/lib/apps/install-app/app-installer.d.ts +0 -2
  169. package/lib/apps/install-app/app-installer.js +0 -120
  170. package/lib/apps/upgrade-app/app-upgrader.d.ts +0 -3
  171. package/lib/apps/upgrade-app/app-upgrader.js +0 -126
  172. package/lib/auth/auth.js +0 -2
  173. package/lib/cli.d.ts +0 -5
  174. package/lib/cli.js +0 -524
  175. package/lib/colors/color-loader.d.ts +0 -2
  176. package/lib/colors/color-loader.js +0 -96
  177. package/lib/common.js +0 -5
  178. package/lib/config/config.js +0 -70
  179. package/lib/config/configCommands.d.ts +0 -3
  180. package/lib/config/configCommands.js +0 -34
  181. package/lib/interfaces.js +0 -25
  182. package/lib/loader-process/loader-process.d.ts +0 -2
  183. package/lib/projects/interfaces.d.ts +0 -77
  184. package/lib/projects/interfaces.js +0 -23
  185. package/lib/projects/project-exporter.d.ts +0 -2
  186. package/lib/projects/project-uploader.d.ts +0 -1
  187. package/lib/types/allUploader.d.ts +0 -1
  188. package/lib/types/allUploader.js +0 -24
  189. package/lib/types/interfaces.d.ts +0 -55
  190. package/lib/types/interfaces.js +0 -1
  191. package/lib/types/option-set-hierarchy-exporter.d.ts +0 -1
  192. package/lib/types/option-set-hierarchy-parser.d.ts +0 -2
  193. package/lib/types/option-set-hierarchy-uploader.d.ts +0 -1
  194. package/lib/types/option-set-merger.d.ts +0 -1
  195. package/lib/types/option-set-parser.d.ts +0 -3
  196. package/lib/types/option-set-parser.js +0 -140
  197. package/lib/types/option-set-uploader.d.ts +0 -1
  198. package/lib/types/parse-types.d.ts +0 -4
  199. package/lib/types/parse-types.js +0 -189
  200. package/lib/types/rule-set-uploader.d.ts +0 -1
  201. package/lib/types/type-property-policy-uploader.d.ts +0 -1
  202. package/lib/types/types-properties-merger.d.ts +0 -1
  203. package/lib/types/types-properties-merger.js +0 -75
  204. package/lib/types/usage-info-uploader.d.ts +0 -1
  205. package/lib/users/user-exporter.d.ts +0 -1
  206. package/lib/users/user-exporter.js +0 -41
  207. package/lib/users/user-uploader.d.ts +0 -1
  208. package/lib/users/user-uploader.js +0 -45
  209. package/lib/workflow-template-definitions/workflow-template-definition-commands.d.ts +0 -2
  210. package/lib/workflow-template-definitions/workflow-template-definition-commands.js +0 -10
  211. package/lib/workflow-templates/local-workflow-template-deployer.js +0 -102
  212. package/lib/workflow-templates/workflow-template-commands.d.ts +0 -4
  213. package/lib/workflow-templates/workflow-template-commands.js +0 -51
  214. package/lib/workflow-templates/workflow-template-deployer.d.ts +0 -4
  215. package/lib/workflow-templates/workflow-template-deployer.js +0 -26
  216. package/publish.bat +0 -5
  217. package/publish.sh +0 -5
  218. package/src/api/apps.ts +0 -97
  219. package/src/api/event-workflow-action-definition.ts +0 -8
  220. package/src/api/event-workflow-template-definition.ts +0 -23
  221. package/src/api/event-workflow-templates.ts +0 -29
  222. package/src/apps/create-app/create.ts +0 -74
  223. package/src/apps/create-app/setup-template.ts +0 -38
  224. package/src/apps/deploy-app/actions-deployer.ts +0 -140
  225. package/src/apps/deploy-app/app-deployer.ts +0 -105
  226. package/src/apps/deploy-app/app-template-parsers.ts +0 -44
  227. package/src/apps/deploy-app/deploy.ts +0 -66
  228. package/src/apps/install-app/app-installer.ts +0 -126
  229. package/src/apps/upgrade-app/app-upgrader.ts +0 -132
  230. package/src/auth/auth.ts +0 -10
  231. package/src/auth/login.ts +0 -155
  232. package/src/cli.ts +0 -540
  233. package/src/colors/color-loader.ts +0 -112
  234. package/src/colors/colors.csv +0 -866
  235. package/src/common.ts +0 -5
  236. package/src/config/config.ts +0 -74
  237. package/src/config/configCommands.ts +0 -38
  238. package/src/interfaces.ts +0 -200
  239. package/src/loader-process/loader-process.ts +0 -152
  240. package/src/projects/interfaces.ts +0 -73
  241. package/src/projects/project-exporter.ts +0 -225
  242. package/src/projects/project-uploader.ts +0 -131
  243. package/src/types/allUploader.ts +0 -28
  244. package/src/types/csv-parser.ts +0 -59
  245. package/src/types/interfaces.ts +0 -58
  246. package/src/types/option-set-hierarchy-exporter.ts +0 -125
  247. package/src/types/option-set-hierarchy-parser.ts +0 -169
  248. package/src/types/option-set-hierarchy-uploader.ts +0 -122
  249. package/src/types/option-set-merger.ts +0 -124
  250. package/src/types/option-set-parser.ts +0 -166
  251. package/src/types/option-set-uploader.ts +0 -108
  252. package/src/types/parse-types.ts +0 -227
  253. package/src/types/rule-set-uploader.ts +0 -187
  254. package/src/types/type-property-policy-uploader.ts +0 -192
  255. package/src/types/types-extractor.ts +0 -369
  256. package/src/types/types-properties-merger.ts +0 -90
  257. package/src/types/types-uploader.ts +0 -271
  258. package/src/types/usage-info-uploader.ts +0 -139
  259. package/src/users/user-exporter.ts +0 -52
  260. package/src/users/user-uploader.ts +0 -58
  261. package/src/workflow-template-definitions/workflow-template-definition-commands.ts +0 -13
  262. package/src/workflow-template-definitions/workflow-template-definition-deployer.ts +0 -184
  263. package/src/workflow-templates/local-workflow-template-deployer.ts +0 -126
  264. package/src/workflow-templates/workflow-template-commands.ts +0 -59
  265. package/src/workflow-templates/workflow-template-deployer.ts +0 -30
  266. package/templates/javascript/actions/example/action.js +0 -38
  267. package/templates/javascript/app.yml +0 -53
  268. package/templates/javascript/package.json +0 -23
  269. package/templates/typescript/package-lock.json +0 -14
  270. package/tsconfig.json +0 -32
@@ -1,172 +1,189 @@
1
- import { Entities } from '@contrail/sdk';
2
- import fs from 'fs';
3
- import * as path from 'path';
4
- import { authUser } from '../auth/login';
5
- import chalk from 'chalk';
6
- const yaml = require('js-yaml');
7
- export async function uploadRuleSets(args) {
8
- try {
9
- await authUser();
10
- console.log('%s Uploading', chalk.yellow.bold('RULE SET'));
11
- const [reducedRuleSets, reducedRuleSetLinks] = await loadReducedRuleSets();
12
- await uploadRuleSetObjects(reducedRuleSets);
13
- await uploadRuleSetLinkObjects(reducedRuleSetLinks);
14
- console.log('%s Uploaded', chalk.yellow.bold('RULE SET'));
15
- }
16
- catch (e) {
17
- console.log(`%s Rule Set Upload Failed. ${e}`, chalk.red.bold('FAIL'));
18
- return;
19
- }
20
- console.log('%s Rule set Upload Complete.', chalk.green.bold('COMPLETE'));
21
- }
22
- function loadReducedRuleSets() {
23
- const ruleSets = [];
24
- let ruleSetLinks = [];
25
- const TARGET_DIR = process.cwd();
26
- try {
27
- const files = fs.readdirSync(path.join(TARGET_DIR, 'rule-sets'));
28
- for (const file of files) {
29
- ruleSets.push(yaml.load(fs.readFileSync(path.join(TARGET_DIR, 'rule-sets', file), 'utf8')));
30
- }
31
- ruleSetLinks = yaml.load(fs.readFileSync(path.join(TARGET_DIR, 'rule-set-links.yml'), 'utf8'));
32
- return [ruleSets, ruleSetLinks];
33
- }
34
- catch (e) {
35
- throw new Error(`ERROR PARSING YAML: ${e}`);
36
- }
37
- }
38
- async function uploadRuleSetObjects(reducedRuleSets) {
39
- const currentRuleSets = await new Entities().get({
40
- entityName: 'type-rule-set',
41
- });
42
- const currentRuleSetsByName = {};
43
- for (const currentRuleSet of currentRuleSets) {
44
- currentRuleSetsByName[currentRuleSet.name] = currentRuleSet;
45
- }
46
- const loadedRuleSetsByName = {};
47
- for (const loadedRuleSet of reducedRuleSets) {
48
- loadedRuleSetsByName[loadedRuleSet.name] = loadedRuleSet;
49
- }
50
- console.debug('current rule sets:', currentRuleSets);
51
- console.debug('reduced rule sets:', reducedRuleSets);
52
- for (const reducedRuleSet of reducedRuleSets) {
53
- try {
54
- const found = currentRuleSetsByName[reducedRuleSet.name];
55
- if (!found) {
56
- console.log('Creating: ', reducedRuleSet.name);
57
- await new Entities().create({
58
- entityName: 'type-rule-set',
59
- object: reducedRuleSet
60
- });
61
- }
62
- else {
63
- console.log('Updating: ', reducedRuleSet.name);
64
- await new Entities().update({
65
- entityName: 'type-rule-set',
66
- id: found.id,
67
- object: reducedRuleSet,
68
- });
69
- }
70
- }
71
- catch (err) {
72
- throw new Error(`Error Uploading rule sets: ${err}`);
73
- }
74
- }
75
- for (const currentRuleSet of currentRuleSets) {
76
- try {
77
- const found = loadedRuleSetsByName[currentRuleSet.name];
78
- if (!found) {
79
- console.log('Deleting: ', currentRuleSet.name);
80
- await new Entities().delete({
81
- entityName: 'type-rule-set',
82
- id: currentRuleSet.id,
83
- });
84
- }
85
- }
86
- catch (err) {
87
- throw new Error(`Error Deleting rule set: ${err}`);
88
- }
89
- }
90
- }
91
- async function uploadRuleSetLinkObjects(loadedRuleSetLinks) {
92
- const types = await new Entities().get({
93
- entityName: 'type',
94
- });
95
- const currentRuleSets = await new Entities().get({
96
- entityName: 'type-rule-set',
97
- });
98
- const currentRuleSetLinks = await new Entities().get({
99
- entityName: 'type-rule-set-link',
100
- });
101
- const currentLinksHashes = {};
102
- for (const currentLink of currentRuleSetLinks) {
103
- const foundType = types.find(t => t.id === currentLink.typeId);
104
- const foundRuleSet = currentRuleSets.find(rs => rs.id === currentLink.typeRuleSetId);
105
- const hash = `${foundType.slug}|${foundRuleSet.name}`;
106
- currentLinksHashes[hash] = currentLink;
107
- }
108
- const reducedLinksByHashes = {};
109
- for (const loadedLink of loadedRuleSetLinks) {
110
- const hash = `${loadedLink.type}|${loadedLink.ruleSet}`;
111
- reducedLinksByHashes[hash] = loadedLink;
112
- }
113
- console.debug('current rule set links:', currentLinksHashes);
114
- console.debug('reduced rule set links:', reducedLinksByHashes);
115
- for (const loadedRuleSetLink of loadedRuleSetLinks) {
116
- try {
117
- const found = currentLinksHashes[`${loadedRuleSetLink.type}|${loadedRuleSetLink.ruleSet}`];
118
- if (!found) {
119
- if (!transformReducedLink(loadedRuleSetLink, types, currentRuleSets)) {
120
- continue;
121
- }
122
- console.log('Creating: ', loadedRuleSetLink);
123
- await new Entities().create({
124
- entityName: 'type-rule-set-link',
125
- object: {
126
- typeRuleSetId: loadedRuleSetLink.ruleSet,
127
- typeId: loadedRuleSetLink.type,
128
- },
129
- });
130
- }
131
- else {
132
- if (!transformReducedLink(loadedRuleSetLink, types, currentRuleSets)) {
133
- continue;
134
- }
135
- console.log('skipping updating existing rule set link: ', loadedRuleSetLink);
136
- }
137
- }
138
- catch (err) {
139
- throw new Error(`Error Uploading rule set links: ${err}`);
140
- }
141
- }
142
- for (const [currentLinkHash, currentLink] of Object.entries(currentLinksHashes)) {
143
- try {
144
- const found = reducedLinksByHashes[currentLinkHash];
145
- if (!found) {
146
- console.log('Deleting: ', currentLinkHash);
147
- await new Entities().delete({
148
- entityName: 'type-rule-set-link',
149
- id: currentLink['id'],
150
- });
151
- }
152
- }
153
- catch (err) {
154
- throw new Error(`Error Deleting rule set link: ${err}`);
155
- }
156
- }
157
- }
158
- function transformReducedLink(ruleSetLink, types, ruleSets) {
159
- const foundType = types.find(t => t.slug === ruleSetLink.type);
160
- if (!foundType) {
161
- console.error('Could not find type with name', ruleSetLink.type);
162
- return false;
163
- }
164
- ruleSetLink.type = foundType.id;
165
- const foundRuleSet = ruleSets.find(rs => rs.name === ruleSetLink.ruleSet);
166
- if (!foundRuleSet) {
167
- console.error('Could not find rule set with name', foundType.ruleSet);
168
- return false;
169
- }
170
- ruleSetLink.ruleSet = foundRuleSet.id;
171
- return true;
172
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uploadRuleSets = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sdk_1 = require("@contrail/sdk");
6
+ const fs_1 = tslib_1.__importDefault(require("fs"));
7
+ const path = tslib_1.__importStar(require("path"));
8
+ const login_1 = require("../../auth/login");
9
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
10
+ const core_1 = require("@oclif/core");
11
+ const yaml = require('js-yaml');
12
+ class UploadRuleSets extends core_1.Command {
13
+ async run() {
14
+ await uploadRuleSets();
15
+ }
16
+ }
17
+ exports.default = UploadRuleSets;
18
+ UploadRuleSets.description = 'Upload an extracted rule set';
19
+ UploadRuleSets.examples = [
20
+ `$ contrail types uploadRuleSets
21
+ `,
22
+ ];
23
+ async function uploadRuleSets() {
24
+ try {
25
+ await (0, login_1.authUser)();
26
+ console.log('%s Uploading', chalk_1.default.yellow.bold('RULE SET'));
27
+ const [reducedRuleSets, reducedRuleSetLinks] = await loadReducedRuleSets();
28
+ await uploadRuleSetObjects(reducedRuleSets);
29
+ await uploadRuleSetLinkObjects(reducedRuleSetLinks);
30
+ console.log('%s Uploaded', chalk_1.default.yellow.bold('RULE SET'));
31
+ }
32
+ catch (e) {
33
+ console.log(`%s Rule Set Upload Failed. ${e}`, chalk_1.default.red.bold('FAIL'));
34
+ return;
35
+ }
36
+ console.log('%s Rule set Upload Complete.', chalk_1.default.green.bold('COMPLETE'));
37
+ }
38
+ exports.uploadRuleSets = uploadRuleSets;
39
+ function loadReducedRuleSets() {
40
+ const ruleSets = [];
41
+ let ruleSetLinks = [];
42
+ const TARGET_DIR = process.cwd();
43
+ try {
44
+ const files = fs_1.default.readdirSync(path.join(TARGET_DIR, 'rule-sets'));
45
+ for (const file of files) {
46
+ ruleSets.push(yaml.load(fs_1.default.readFileSync(path.join(TARGET_DIR, 'rule-sets', file), 'utf8')));
47
+ }
48
+ ruleSetLinks = yaml.load(fs_1.default.readFileSync(path.join(TARGET_DIR, 'rule-set-links.yml'), 'utf8'));
49
+ return [ruleSets, ruleSetLinks];
50
+ }
51
+ catch (e) {
52
+ throw new Error(`ERROR PARSING YAML: ${e}`);
53
+ }
54
+ }
55
+ async function uploadRuleSetObjects(reducedRuleSets) {
56
+ const currentRuleSets = await new sdk_1.Entities().get({
57
+ entityName: 'type-rule-set',
58
+ });
59
+ const currentRuleSetsByName = {};
60
+ for (const currentRuleSet of currentRuleSets) {
61
+ currentRuleSetsByName[currentRuleSet.name] = currentRuleSet;
62
+ }
63
+ const loadedRuleSetsByName = {};
64
+ for (const loadedRuleSet of reducedRuleSets) {
65
+ loadedRuleSetsByName[loadedRuleSet.name] = loadedRuleSet;
66
+ }
67
+ console.debug('current rule sets:', currentRuleSets);
68
+ console.debug('reduced rule sets:', reducedRuleSets);
69
+ for (const reducedRuleSet of reducedRuleSets) {
70
+ try {
71
+ const found = currentRuleSetsByName[reducedRuleSet.name];
72
+ if (!found) {
73
+ console.log('Creating: ', reducedRuleSet.name);
74
+ await new sdk_1.Entities().create({
75
+ entityName: 'type-rule-set',
76
+ object: reducedRuleSet
77
+ });
78
+ }
79
+ else {
80
+ console.log('Updating: ', reducedRuleSet.name);
81
+ await new sdk_1.Entities().update({
82
+ entityName: 'type-rule-set',
83
+ id: found.id,
84
+ object: reducedRuleSet,
85
+ });
86
+ }
87
+ }
88
+ catch (err) {
89
+ throw new Error(`Error Uploading rule sets: ${err}`);
90
+ }
91
+ }
92
+ for (const currentRuleSet of currentRuleSets) {
93
+ try {
94
+ const found = loadedRuleSetsByName[currentRuleSet.name];
95
+ if (!found) {
96
+ console.log('Deleting: ', currentRuleSet.name);
97
+ await new sdk_1.Entities().delete({
98
+ entityName: 'type-rule-set',
99
+ id: currentRuleSet.id,
100
+ });
101
+ }
102
+ }
103
+ catch (err) {
104
+ throw new Error(`Error Deleting rule set: ${err}`);
105
+ }
106
+ }
107
+ }
108
+ async function uploadRuleSetLinkObjects(loadedRuleSetLinks) {
109
+ const types = await new sdk_1.Entities().get({
110
+ entityName: 'type',
111
+ });
112
+ const currentRuleSets = await new sdk_1.Entities().get({
113
+ entityName: 'type-rule-set',
114
+ });
115
+ const currentRuleSetLinks = await new sdk_1.Entities().get({
116
+ entityName: 'type-rule-set-link',
117
+ });
118
+ const currentLinksHashes = {};
119
+ for (const currentLink of currentRuleSetLinks) {
120
+ const foundType = types.find(t => t.id === currentLink.typeId);
121
+ const foundRuleSet = currentRuleSets.find(rs => rs.id === currentLink.typeRuleSetId);
122
+ const hash = `${foundType.slug}|${foundRuleSet.name}`;
123
+ currentLinksHashes[hash] = currentLink;
124
+ }
125
+ const reducedLinksByHashes = {};
126
+ for (const loadedLink of loadedRuleSetLinks) {
127
+ const hash = `${loadedLink.type}|${loadedLink.ruleSet}`;
128
+ reducedLinksByHashes[hash] = loadedLink;
129
+ }
130
+ console.debug('current rule set links:', currentLinksHashes);
131
+ console.debug('reduced rule set links:', reducedLinksByHashes);
132
+ for (const loadedRuleSetLink of loadedRuleSetLinks) {
133
+ try {
134
+ const found = currentLinksHashes[`${loadedRuleSetLink.type}|${loadedRuleSetLink.ruleSet}`];
135
+ if (!found) {
136
+ if (!transformReducedLink(loadedRuleSetLink, types, currentRuleSets)) {
137
+ continue;
138
+ }
139
+ console.log('Creating: ', loadedRuleSetLink);
140
+ await new sdk_1.Entities().create({
141
+ entityName: 'type-rule-set-link',
142
+ object: {
143
+ typeRuleSetId: loadedRuleSetLink.ruleSet,
144
+ typeId: loadedRuleSetLink.type,
145
+ },
146
+ });
147
+ }
148
+ else {
149
+ if (!transformReducedLink(loadedRuleSetLink, types, currentRuleSets)) {
150
+ continue;
151
+ }
152
+ console.log('skipping updating existing rule set link: ', loadedRuleSetLink);
153
+ }
154
+ }
155
+ catch (err) {
156
+ throw new Error(`Error Uploading rule set links: ${err}`);
157
+ }
158
+ }
159
+ for (const [currentLinkHash, currentLink] of Object.entries(currentLinksHashes)) {
160
+ try {
161
+ const found = reducedLinksByHashes[currentLinkHash];
162
+ if (!found) {
163
+ console.log('Deleting: ', currentLinkHash);
164
+ await new sdk_1.Entities().delete({
165
+ entityName: 'type-rule-set-link',
166
+ id: currentLink['id'],
167
+ });
168
+ }
169
+ }
170
+ catch (err) {
171
+ throw new Error(`Error Deleting rule set link: ${err}`);
172
+ }
173
+ }
174
+ }
175
+ function transformReducedLink(ruleSetLink, types, ruleSets) {
176
+ const foundType = types.find(t => t.slug === ruleSetLink.type);
177
+ if (!foundType) {
178
+ console.error('Could not find type with name', ruleSetLink.type);
179
+ return false;
180
+ }
181
+ ruleSetLink.type = foundType.id;
182
+ const foundRuleSet = ruleSets.find(rs => rs.name === ruleSetLink.ruleSet);
183
+ if (!foundRuleSet) {
184
+ console.error('Could not find rule set with name', foundType.ruleSet);
185
+ return false;
186
+ }
187
+ ruleSetLink.ruleSet = foundRuleSet.id;
188
+ return true;
189
+ }
@@ -0,0 +1,7 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class UploadTypePropertyPolicies extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
7
+ export declare function uploadTypePropertyPolicies(): Promise<void>;