k2hr3-api 1.0.23 → 1.0.25

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 (42) hide show
  1. package/ChangeLog +12 -0
  2. package/app.js +63 -30
  3. package/bin/run.sh +14 -0
  4. package/config/default.json +3 -2
  5. package/lib/k2hr3config.js +12 -0
  6. package/lib/k2hr3dkc.js +903 -13
  7. package/lib/k2hr3keys.js +1 -0
  8. package/lib/k2hr3tokens.js +53 -0
  9. package/package.json +11 -6
  10. package/routes/tenant.js +1014 -0
  11. package/tests/auto_all_spec.js +4 -0
  12. package/tests/auto_extdata.js +2 -0
  13. package/tests/auto_tenant.js +989 -0
  14. package/tests/auto_tenant_spec.js +79 -0
  15. package/tests/auto_userdata.js +15 -12
  16. package/tests/manual_acr_delete.js +1 -0
  17. package/tests/manual_acr_get.js +1 -0
  18. package/tests/manual_acr_postput.js +1 -0
  19. package/tests/manual_allusertenant_get.js +58 -3
  20. package/tests/manual_extdata_get.js +1 -0
  21. package/tests/manual_list_gethead.js +1 -0
  22. package/tests/manual_policy_delete.js +1 -0
  23. package/tests/manual_policy_gethead.js +3 -1
  24. package/tests/manual_policy_postput.js +1 -0
  25. package/tests/manual_resource_delete.js +1 -0
  26. package/tests/manual_resource_gethead.js +1 -0
  27. package/tests/manual_resource_postput.js +1 -0
  28. package/tests/manual_role_delete.js +2 -0
  29. package/tests/manual_role_gethead.js +4 -0
  30. package/tests/manual_role_postput.js +2 -0
  31. package/tests/manual_service_delete.js +1 -0
  32. package/tests/manual_service_gethead.js +1 -0
  33. package/tests/manual_service_postput.js +1 -0
  34. package/tests/manual_tenant_delete.js +152 -0
  35. package/tests/manual_tenant_gethead.js +268 -0
  36. package/tests/manual_tenant_postput.js +293 -0
  37. package/tests/manual_test.sh +21 -7
  38. package/tests/manual_userdata_get.js +1 -0
  39. package/tests/manual_usertoken_gethead.js +1 -0
  40. package/tests/manual_usertoken_postput.js +1 -0
  41. package/tests/manual_version_get.js +1 -0
  42. package/tests/test.sh +2 -0
package/lib/k2hr3keys.js CHANGED
@@ -76,6 +76,7 @@ exports.getK2hr3Keys = function(user, tenant, service)
76
76
  'VALUE_KEYSTONE_SUB': 'kstype_substitute',
77
77
  'VALUE_OPENSTACK_V1': 'openstack-auto-v1', // used/set from k2hr3-init.sh
78
78
  'VALUE_K8S_V1': 'k8s-auto-v1', // used/set from k2hr3-kube-init.sh
79
+ 'VALUE_PREFIX_LOCAL_TENANT': 'local@',
79
80
 
80
81
  // common keywords( part of keyname )
81
82
  'POLICIES_KW': 'policies',
@@ -237,6 +237,34 @@ function rawGetScopedUserToken(unscopedtoken, username, userid, tenant, callback
237
237
  }
238
238
  _tenant_list.push(jsonres[cnt].name);
239
239
  }
240
+
241
+ // get and add local tenants
242
+ var tmpresobj = k2hr3.listLocalTenant(_username, true);
243
+ if(!apiutil.isSafeEntity(tmpresobj) || !apiutil.isSafeEntity(tmpresobj.result) || false === tmpresobj.result){
244
+ if(apiutil.isSafeEntity(tmpresobj) && apiutil.isSafeString(tmpresobj.message)){
245
+ r3logger.wlog('failed to get local tenant list by ' + tmpresobj.message);
246
+ }else{
247
+ r3logger.wlog('failed to get local tenant list.');
248
+ }
249
+ }else{
250
+ if(!apiutil.isEmptyArray(tmpresobj.tenants)){
251
+ for(var cnt2 = 0; cnt2 < tmpresobj.tenants.length; ++cnt2){
252
+ var one_tenant = tmpresobj.tenants[cnt2];
253
+ if(!apiutil.isSafeEntity(tmpresobj.tenants[cnt2])){
254
+ continue;
255
+ }
256
+ if(apiutil.compareCaseString(tmpresobj.tenants[cnt2].name, _tenant)){
257
+ // find target tenant
258
+ _tenant_id = tmpresobj.tenants[cnt2].id;
259
+ _tenant_name = tmpresobj.tenants[cnt2].name;
260
+ _tenant_desc = tmpresobj.tenants[cnt2].desc; // eslint-disable-line no-unused-vars
261
+ _tenant_display = tmpresobj.tenants[cnt2].display; // eslint-disable-line no-unused-vars
262
+ }
263
+ _tenant_list.push(one_tenant);
264
+ }
265
+ }
266
+ }
267
+
240
268
  // check and remove old tenant for user
241
269
  if(!k2hr3.removeComprehensionByNewTenants(_username, _tenant_list)){
242
270
  r3logger.elog('failed to remove some tenant for user, but continue...');
@@ -2328,6 +2356,31 @@ function rawInitializeTenantListByToken(unscopedtoken, username, userid, callbac
2328
2356
  display: jsonres[cnt].display
2329
2357
  });
2330
2358
  }
2359
+
2360
+ // get and add local tenants
2361
+ var tmpresobj = k2hr3.listLocalTenant(_username, true);
2362
+ if(!apiutil.isSafeEntity(tmpresobj) || !apiutil.isSafeEntity(tmpresobj.result) || false === tmpresobj.result){
2363
+ if(apiutil.isSafeEntity(tmpresobj) && apiutil.isSafeString(tmpresobj.message)){
2364
+ r3logger.wlog('failed to get local tenant list by ' + tmpresobj.message);
2365
+ }else{
2366
+ r3logger.wlog('failed to get local tenant list.');
2367
+ }
2368
+ }else{
2369
+ if(!apiutil.isEmptyArray(tmpresobj.tenants)){
2370
+ for(var cnt2 = 0; cnt2 < tmpresobj.tenants.length; ++cnt2){
2371
+ var one_tenant = tmpresobj.tenants[cnt2];
2372
+ if(!apiutil.isSafeEntity(one_tenant)){
2373
+ continue;
2374
+ }
2375
+ _name_list.push(one_tenant.name);
2376
+ _tenant_list.push({
2377
+ name: one_tenant.name,
2378
+ display: one_tenant.display
2379
+ });
2380
+ }
2381
+ }
2382
+ }
2383
+
2331
2384
  // check and remove old tenant for user
2332
2385
  if(!k2hr3.removeComprehensionByNewTenants(_username, _name_list)){
2333
2386
  r3logger.elog('failed to remove some tenant for user, but continue...');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "k2hr3-api",
3
- "version": "1.0.23",
3
+ "version": "1.0.25",
4
4
  "dependencies": {
5
5
  "@kubernetes/client-node": "^0.18.1",
6
6
  "body-parser": "^1.20.2",
@@ -29,13 +29,13 @@
29
29
  },
30
30
  "devDependencies": {
31
31
  "chai": "^4.3.7",
32
- "chai-http": "^4.3.0",
33
- "eslint": "^8.41.0",
32
+ "chai-http": "^4.4.0",
33
+ "eslint": "^8.44.0",
34
34
  "mocha": "^10.2.0",
35
35
  "nyc": "^15.1.0"
36
36
  },
37
37
  "scripts": {
38
- "help": "echo 'command list:\n npm run start\n npm run start:prod\n npm run start:production\n npm run start:prod:dbg\n npm run start:prod:debug\n npm run start:prod:debug:break\n npm run start:prod:debug:nobreak\n npm run start:dev\n npm run start:develop\n npm run start:dev:dbg\n npm run start:dev:debug\n npm run start:dev:debug:break\n npm run start:dev:debug:nobreak\n npm run start:watcher:prod\n npm run start:watcher:production\n npm run start:watcher:dev\n npm run start:watcher:develop\n npm run start:watcher:dbg\n npm run start:watcher:debug\n npm run start:watcher:debug:break\n npm run start:watcher:debug:nobreak\n npm run start:watcher:oneshot:prod\n npm run start:watcher:oneshot:production\n npm run start:watcher:oneshot:dev\n npm run start:watcher:oneshot:develop\n npm run start:watcher:oneshot:dbg\n npm run start:watcher:oneshot:debug\n npm run start:watcher:oneshot:debug:break\n npm run start:watcher:oneshot:debug:nobreak\n npm run stop\n npm run stop:watcher\n npm run test\n npm run test:lint\n npm run test:cover\n npm run test:auto:all{:dbg}\n npm run test:auto:version{:dbg}\n npm run test:auto:usertokens{:dbg}\n npm run test:auto:list{:dbg}\n npm run test:auto:resource{:dbg}\n npm run test:auto:policy{:dbg}\n npm run test:auto:role{:dbg}\n npm run test:auto:service{:dbg}\n npm run test:auto:acr{:dbg}\n npm run test:auto:userdata{:dbg}\n npm run test:auto:extdata{:dbg}\n npm run test:auto:watcher{:dbg}\n npm run test:auto:templengine\n npm run test:auto:templengine:async\n npm run test:manual:apis:version_get\n npm run test:manual:apis:usertoken_postput\n npm run test:manual:apis:usertoken_gethead\n npm run test:manual:apis:policy_postput\n npm run test:manual:apis:policy_gethead\n npm run test:manual:apis:policy_delete\n npm run test:manual:apis:resource_postput\n npm run test:manual:apis:resource_gethead\n npm run test:manual:apis:resource_delete\n npm run test:manual:apis:role_postput\n npm run test:manual:apis:role_gethead\n npm run test:manual:apis:role_delete\n npm run test:manual:apis:service_postput\n npm run test:manual:apis:service_gethead\n npm run test:manual:apis:service_delete\n npm run test:manual:apis:acr_postput\n npm run test:manual:apis:acr_get\n npm run test:manual:apis:acr_delete\n npm run test:manual:apis:list_gethead\n npm run test:manual:apis:userdata_get\n npm run test:manual:apis:extdata_get\n npm run test:manual:apis:allusertenant_get\n npm run test:manual:apis:k2hr3keys_get\n npm run test:manual:load:k2hdkcdata:auto\n npm run test:manual:load:k2hdkcdata:local\n npm run test:manual:templengine\n npm run test:manual:templengine:async\n'",
38
+ "help": "echo 'command list:\n npm run start\n npm run start:prod\n npm run start:production\n npm run start:prod:dbg\n npm run start:prod:debug\n npm run start:prod:debug:break\n npm run start:prod:debug:nobreak\n npm run start:dev\n npm run start:develop\n npm run start:dev:dbg\n npm run start:dev:debug\n npm run start:dev:debug:break\n npm run start:dev:debug:nobreak\n npm run start:watcher:prod\n npm run start:watcher:production\n npm run start:watcher:dev\n npm run start:watcher:develop\n npm run start:watcher:dbg\n npm run start:watcher:debug\n npm run start:watcher:debug:break\n npm run start:watcher:debug:nobreak\n npm run start:watcher:oneshot:prod\n npm run start:watcher:oneshot:production\n npm run start:watcher:oneshot:dev\n npm run start:watcher:oneshot:develop\n npm run start:watcher:oneshot:dbg\n npm run start:watcher:oneshot:debug\n npm run start:watcher:oneshot:debug:break\n npm run start:watcher:oneshot:debug:nobreak\n npm run stop\n npm run stop:watcher\n npm run test\n npm run test:lint\n npm run test:cover\n npm run test:auto:all{:dbg}\n npm run test:auto:version{:dbg}\n npm run test:auto:usertokens{:dbg}\n npm run test:auto:list{:dbg}\n npm run test:auto:resource{:dbg}\n npm run test:auto:policy{:dbg}\n npm run test:auto:role{:dbg}\n npm run test:auto:service{:dbg}\n npm run test:auto:acr{:dbg}\n npm run test:auto:userdata{:dbg}\n npm run test:auto:extdata{:dbg}\n npm run test:auto:watcher{:dbg}\n npm run test:auto:templengine\n npm run test:auto:templengine:async\n npm run test:manual:apis:version_get\n npm run test:manual:apis:usertoken_postput\n npm run test:manual:apis:usertoken_gethead\n npm run test:manual:apis:policy_postput\n npm run test:manual:apis:policy_gethead\n npm run test:manual:apis:policy_delete\n npm run test:manual:apis:resource_postput\n npm run test:manual:apis:resource_gethead\n npm run test:manual:apis:resource_delete\n npm run test:manual:apis:role_postput\n npm run test:manual:apis:role_gethead\n npm run test:manual:apis:role_delete\n npm run test:manual:apis:tenant_postput\n npm run test:manual:apis:tenant_gethead\n npm run test:manual:apis:tenant_delete\n npm run test:manual:apis:service_postput\n npm run test:manual:apis:service_gethead\n npm run test:manual:apis:service_delete\n npm run test:manual:apis:acr_postput\n npm run test:manual:apis:acr_get\n npm run test:manual:apis:acr_delete\n npm run test:manual:apis:list_gethead\n npm run test:manual:apis:userdata_get\n npm run test:manual:apis:extdata_get\n npm run test:manual:apis:allusertenant_get\n npm run test:manual:apis:k2hr3keys_get\n npm run test:manual:load:k2hdkcdata:auto\n npm run test:manual:load:k2hdkcdata:local\n npm run test:manual:templengine\n npm run test:manual:templengine:async\n'",
39
39
  "start": "npm run start:production",
40
40
  "start:prod": "npm run start:production",
41
41
  "start:production": "bin/run.sh -bg --production && echo '' && echo 'Start on production - Success' && echo ''",
@@ -70,7 +70,7 @@
70
70
  "test": "npm run test:cover",
71
71
  "test:lint": "eslint lib/*.js app.js bin/www bin/watcher routes/*.js tests/*.js",
72
72
  "test:cover": "echo 'Test with coverage' && nyc --reporter=lcov --reporter=text npm run test:auto:all",
73
- "test:auto": "echo 'Auto test : npm run test:auto:*\n test:auto:all{:dbg}\n test:auto:version{:dbg}\n test:auto:usertokens{:dbg}\n test:auto:list{:dbg}\n test:auto:resource{:dbg}\n test:auto:policy{:dbg}\n test:auto:role{:dbg}\n test:auto:service{:dbg}\n test:auto:acr{:dbg}\n test:auto:userdata{:dbg}\n test:auto:extdata{:dbg}\n test:auto:watcher{:dbg}\n test:auto:templengine\n test:auto:templengine:async\n'",
73
+ "test:auto": "echo 'Auto test : npm run test:auto:*\n test:auto:all{:dbg}\n test:auto:version{:dbg}\n test:auto:usertokens{:dbg}\n test:auto:list{:dbg}\n test:auto:resource{:dbg}\n test:auto:policy{:dbg}\n test:auto:role{:dbg}\n test:auto:tenant{:dbg}\n test:auto:service{:dbg}\n test:auto:acr{:dbg}\n test:auto:userdata{:dbg}\n test:auto:extdata{:dbg}\n test:auto:watcher{:dbg}\n test:auto:templengine\n test:auto:templengine:async\n'",
74
74
  "test:auto:all": "echo 'All test' && npm run test:lint && tests/test.sh -t 8000 all && npm run test:auto:templengine && npm run test:auto:templengine:async && echo 'Succeed test' && echo ''",
75
75
  "test:auto:all:dbg": "echo 'All test with debugging' && npm run test:lint && tests/test.sh -t 8000 -d dbg all && echo 'Succeed test' && echo ''",
76
76
  "test:auto:version": "echo 'Test Version' && tests/test.sh -t 8000 version && echo 'Succeed test' && echo ''",
@@ -85,6 +85,8 @@
85
85
  "test:auto:policy:dbg": "echo 'Test Policy with debugging' && tests/test.sh -t 8000 -d dbg policy && echo 'Succeed test' && echo ''",
86
86
  "test:auto:role": "echo 'Test Role' && tests/test.sh -t 8000 role && echo 'Succeed test' && echo ''",
87
87
  "test:auto:role:dbg": "echo 'Test Role with debugging' && tests/test.sh -t 8000 -d dbg role && echo 'Succeed test' && echo ''",
88
+ "test:auto:tenant": "echo 'Test Tenant' && tests/test.sh -t 8000 tenant && echo 'Succeed test' && echo ''",
89
+ "test:auto:tenant:dbg": "echo 'Test Tenant with debugging' && tests/test.sh -t 8000 -d dbg tenant && echo 'Succeed test' && echo ''",
88
90
  "test:auto:service": "echo 'Test Service' && tests/test.sh -t 8000 service && echo 'Succeed test' && echo ''",
89
91
  "test:auto:service:dbg": "echo 'Test Service with debugging' && tests/test.sh -t 8000 -d dbg service && echo 'Succeed test' && echo ''",
90
92
  "test:auto:acr": "echo 'Test ACR' && tests/test.sh -t 8000 acr && echo 'Succeed test' && echo ''",
@@ -97,7 +99,7 @@
97
99
  "test:auto:watcher:dbg": "echo 'Test Watcher Process with debugging' && tests/test.sh -t 8000 -d dbg watcher && echo 'Succeed test' && echo ''",
98
100
  "test:auto:templengine": "echo 'Test template engine' && tests/auto_template.sh && echo 'Succeed test' && echo ''",
99
101
  "test:auto:templengine:async": "echo 'Test asynchronous template engine' && tests/auto_template.sh -a && echo 'Succeed test' && echo ''",
100
- "test:manual": "echo 'Manual test : npm run test:manual:*\n test:manual:apis:version_get\n test:manual:apis:usertoken_postput\n test:manual:apis:usertoken_gethead\n test:manual:apis:policy_postput\n test:manual:apis:policy_gethead\n test:manual:apis:policy_delete\n test:manual:apis:resource_postput\n test:manual:apis:resource_gethead\n test:manual:apis:resource_delete\n test:manual:apis:role_postput\n test:manual:apis:role_gethead\n test:manual:apis:role_delete\n test:manual:apis:service_postput\n test:manual:apis:service_gethead\n test:manual:apis:service_delete\n test:manual:apis:acr_postput\n test:manual:apis:acr_get\n test:manual:apis:acr_delete\n test:manual:apis:list_gethead\n test:manual:apis:userdata_get\n test:manual:apis:extdata_get\n test:manual:apis:allusertenant_get\n test:manual:apis:k2hr3keys_get\n test:manual:load:k2hdkcdata:auto\n test:manual:load:k2hdkcdata:local\n test:manual:templengine\n test:manual:templengine:async\n'",
102
+ "test:manual": "echo 'Manual test : npm run test:manual:*\n test:manual:apis:version_get\n test:manual:apis:usertoken_postput\n test:manual:apis:usertoken_gethead\n test:manual:apis:policy_postput\n test:manual:apis:policy_gethead\n test:manual:apis:policy_delete\n test:manual:apis:resource_postput\n test:manual:apis:resource_gethead\n test:manual:apis:resource_delete\n test:manual:apis:role_postput\n test:manual:apis:role_gethead\n test:manual:apis:role_delete\n test:manual:apis:tenant_postput\n test:manual:apis:tenant_gethead\n test:manual:apis:tenant_delete\n test:manual:apis:service_postput\n test:manual:apis:service_gethead\n test:manual:apis:service_delete\n test:manual:apis:acr_postput\n test:manual:apis:acr_get\n test:manual:apis:acr_delete\n test:manual:apis:list_gethead\n test:manual:apis:userdata_get\n test:manual:apis:extdata_get\n test:manual:apis:allusertenant_get\n test:manual:apis:k2hr3keys_get\n test:manual:load:k2hdkcdata:auto\n test:manual:load:k2hdkcdata:local\n test:manual:templengine\n test:manual:templengine:async\n'",
101
103
  "test:manual:apis:version_get": "tests/manual_test.sh version_get",
102
104
  "test:manual:apis:usertoken_postput": "tests/manual_test.sh usertoken_postput",
103
105
  "test:manual:apis:usertoken_gethead": "tests/manual_test.sh usertoken_gethead",
@@ -110,6 +112,9 @@
110
112
  "test:manual:apis:role_postput": "tests/manual_test.sh role_postput",
111
113
  "test:manual:apis:role_gethead": "tests/manual_test.sh role_gethead",
112
114
  "test:manual:apis:role_delete": "tests/manual_test.sh role_delete",
115
+ "test:manual:apis:tenant_postput": "tests/manual_test.sh tenant_postput",
116
+ "test:manual:apis:tenant_gethead": "tests/manual_test.sh tenant_gethead",
117
+ "test:manual:apis:tenant_delete": "tests/manual_test.sh tenant_delete",
113
118
  "test:manual:apis:service_postput": "tests/manual_test.sh service_postput",
114
119
  "test:manual:apis:service_gethead": "tests/manual_test.sh service_gethead",
115
120
  "test:manual:apis:service_delete": "tests/manual_test.sh service_delete",