k2hr3-api 1.0.24 → 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 (40) hide show
  1. package/ChangeLog +6 -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 +10 -5
  10. package/routes/tenant.js +1014 -0
  11. package/tests/auto_all_spec.js +4 -0
  12. package/tests/auto_tenant.js +989 -0
  13. package/tests/auto_tenant_spec.js +79 -0
  14. package/tests/manual_acr_delete.js +1 -0
  15. package/tests/manual_acr_get.js +1 -0
  16. package/tests/manual_acr_postput.js +1 -0
  17. package/tests/manual_allusertenant_get.js +58 -3
  18. package/tests/manual_extdata_get.js +1 -0
  19. package/tests/manual_list_gethead.js +1 -0
  20. package/tests/manual_policy_delete.js +1 -0
  21. package/tests/manual_policy_gethead.js +3 -1
  22. package/tests/manual_policy_postput.js +1 -0
  23. package/tests/manual_resource_delete.js +1 -0
  24. package/tests/manual_resource_gethead.js +1 -0
  25. package/tests/manual_resource_postput.js +1 -0
  26. package/tests/manual_role_delete.js +2 -0
  27. package/tests/manual_role_gethead.js +4 -0
  28. package/tests/manual_role_postput.js +2 -0
  29. package/tests/manual_service_delete.js +1 -0
  30. package/tests/manual_service_gethead.js +1 -0
  31. package/tests/manual_service_postput.js +1 -0
  32. package/tests/manual_tenant_delete.js +152 -0
  33. package/tests/manual_tenant_gethead.js +268 -0
  34. package/tests/manual_tenant_postput.js +293 -0
  35. package/tests/manual_test.sh +21 -7
  36. package/tests/manual_userdata_get.js +1 -0
  37. package/tests/manual_usertoken_gethead.js +1 -0
  38. package/tests/manual_usertoken_postput.js +1 -0
  39. package/tests/manual_version_get.js +1 -0
  40. package/tests/test.sh +2 -0
package/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ k2hr3-api (1.0.25) unstable; urgency=low
2
+
3
+ * Added TENANT API for Local Tenant and updated etc - #100
4
+
5
+ -- Takeshi Nakatani <ggtakec@gmail.com> Fri, 07 Jul 2023 17:33:33 +0900
6
+
1
7
  k2hr3-api (1.0.24) unstable; urgency=low
2
8
 
3
9
  * Updated dependencies and test code for new chai version - #98
package/app.js CHANGED
@@ -26,33 +26,59 @@ var logger = require('morgan');
26
26
  var cookieParser= require('cookie-parser');
27
27
  var bodyParser = require('body-parser');
28
28
 
29
- //
29
+ //---------------------------------------------------------
30
+ // Utilities
31
+ //---------------------------------------------------------
32
+ var apiutil = require('./lib/k2hr3apiutil');
33
+ var resutil = require('./lib/k2hr3resutil');
34
+
35
+ //---------------------------------------------------------
30
36
  // Load Configuration
31
- //
37
+ //---------------------------------------------------------
32
38
  var r3Conf = require('./lib/k2hr3config').r3ApiConfig;
33
39
  var apiConf = new r3Conf();
34
40
 
35
41
  //
36
- // Debug logging objects
42
+ // Load variables
37
43
  //
38
- var r3logger = require('./lib/dbglogging'); // eslint-disable-line no-unused-vars
39
-
44
+ // - Local Tenants
45
+ // - Load CORS(Cross-Origin Resource Sharing) Setting
40
46
  //
41
- // utility
47
+ // [NOTE][TODO]
48
+ // It specifies a web development machine for temporary debugging.
49
+ // In future we plan to specify with K2HR3 role.
42
50
  //
43
- var apiutil = require('./lib/k2hr3apiutil');
44
- var resutil = require('./lib/k2hr3resutil');
51
+ var is_localtenants = true;
52
+ var cors_ips = [];
45
53
 
46
- //
54
+ (function()
55
+ {
56
+ var k2hr3config = require('config');
57
+
58
+ is_localtenants = apiConf.isLocalTenants();
59
+
60
+ if(apiutil.isSafeEntity(k2hr3config) && !apiutil.isEmptyArray(k2hr3config.corsips)){
61
+ apiutil.mergeArray(cors_ips, k2hr3config.corsips);
62
+ }
63
+ }());
64
+
65
+ //---------------------------------------------------------
66
+ // Debug logging objects
67
+ //---------------------------------------------------------
68
+ var r3logger = require('./lib/dbglogging'); // eslint-disable-line no-unused-vars
69
+
70
+ //---------------------------------------------------------
71
+ // Environments
72
+ //---------------------------------------------------------
47
73
  // NODE_ENV(development or production)
48
74
  // NODE_LOGGER(if 'no', not logging by morgan)
49
75
  //
50
76
  var is_product = apiutil.compareCaseString(apiutil.getSafeString(process.env.NODE_ENV), 'production');
51
77
  var is_logging = !apiutil.compareCaseString(apiutil.getSafeString(process.env.NODE_LOGGER), 'no');
52
78
 
53
- //
79
+ //---------------------------------------------------------
54
80
  // Routes
55
- //
81
+ //---------------------------------------------------------
56
82
  var version = require('./routes/version');
57
83
  var userTokens = require('./routes/userTokens');
58
84
  var policy = require('./routes/policy');
@@ -63,6 +89,10 @@ var acr = require('./routes/acr');
63
89
  var list = require('./routes/list');
64
90
  var userdata = require('./routes/userdata');
65
91
  var extdata = require('./routes/extdata');
92
+ var tenant = null;
93
+ if(is_localtenants){
94
+ tenant = require('./routes/tenant');
95
+ }
66
96
  var verify = null;
67
97
  if(!is_product){
68
98
  verify = require('./routes/debugVerify');
@@ -81,14 +111,18 @@ var acrExp = express();
81
111
  var listExp = express();
82
112
  var userdataExp = express();
83
113
  var extdataExp = express();
114
+ var tenantExp = null;
115
+ if(is_localtenants){
116
+ tenantExp = express();
117
+ }
84
118
  var verifyExp = null;
85
119
  if(!is_product){
86
120
  verifyExp = express();
87
121
  }
88
122
 
89
- //
123
+ //---------------------------------------------------------
90
124
  // Trusted proxy
91
- //
125
+ //---------------------------------------------------------
92
126
  // [NOTE][TODO]
93
127
  // We set trusted proxy as only loopback now.
94
128
  // Here, we need to add CDN/Proxy for our NW, but pending now.
@@ -103,26 +137,13 @@ acrExp.set('trust proxy', 'loopback');
103
137
  listExp.set('trust proxy', 'loopback');
104
138
  userdataExp.set('trust proxy', 'loopback');
105
139
  extdataExp.set('trust proxy', 'loopback');
140
+ if(is_localtenants){
141
+ tenantExp.set('trust proxy','loopback');
142
+ }
106
143
  if(!is_product){
107
144
  verifyExp.set('trust proxy','loopback');
108
145
  }
109
146
 
110
- //
111
- // CORS(Cross-Origin Resource Sharing)
112
- //
113
- // [NOTE][TODO]
114
- // It specifies a web development machine for temporary debugging.
115
- // In future we plan to specify with K2HR3 role.
116
- //
117
- var cors_ips = [];
118
- (function()
119
- {
120
- var k2hr3config = require('config');
121
- if(apiutil.isSafeEntity(k2hr3config) && !apiutil.isEmptyArray(k2hr3config.corsips)){
122
- apiutil.mergeArray(cors_ips, k2hr3config.corsips);
123
- }
124
- }());
125
-
126
147
  //
127
148
  // CORS(Cross-Origin Resource Sharing) Controller
128
149
  //
@@ -175,6 +196,9 @@ app.use(function(req, res, next)
175
196
  next();
176
197
  });
177
198
 
199
+ //---------------------------------------------------------
200
+ // Express
201
+ //---------------------------------------------------------
178
202
  //
179
203
  // Setting for express
180
204
  //
@@ -191,7 +215,7 @@ app.use(express.static(path.join(__dirname, 'public')));
191
215
  app.use('/status.html', express.static(__dirname + '/public/status.html'));
192
216
 
193
217
  //
194
- // route mapping
218
+ // Route mapping
195
219
  //
196
220
  app.use('/', version); // '/'
197
221
  app.use('/v1', version); // '/v1'
@@ -204,6 +228,9 @@ acrExp.use('/*', acr); // '/v1/acr'
204
228
  listExp.use('/*', list); // '/v1/list'
205
229
  userdataExp.use('/*', userdata); // '/v1/userdata'
206
230
  extdataExp.use('/*', extdata); // '/v1/extdata'
231
+ if(is_localtenants){
232
+ tenantExp.use('/*', tenant); // '/v1/tenant'
233
+ }
207
234
  if(!is_product){
208
235
  verifyExp.use('/*', verify); // '/v1/debug/verify*'
209
236
  }
@@ -217,10 +244,16 @@ app.use('/v1/acr', acrExp); // mountpath: '/v1/acr*'
217
244
  app.use('/v1/list', listExp); // mountpath: '/v1/list*'
218
245
  app.use('/v1/userdata', userdataExp); // mountpath: '/v1/userdata*'
219
246
  app.use('/v1/extdata', extdataExp); // mountpath: '/v1/extdata*'
247
+ if(is_localtenants){
248
+ app.use('/v1/tenant', tenantExp); // mountpath: '/v1/tenant*'
249
+ }
220
250
  if(!is_product){
221
251
  app.use('/v1/debug/verify', verifyExp); // mountpath: '/v1/debug/verify*'
222
252
  }
223
253
 
254
+ //---------------------------------------------------------
255
+ // Error handler
256
+ //---------------------------------------------------------
224
257
  //
225
258
  // catch 404 and forward to error handler
226
259
  //
package/bin/run.sh CHANGED
@@ -74,6 +74,9 @@ PrintUsage()
74
74
  echo " --watcher(-w) : Run IP watcher process as daemon"
75
75
  echo " --oneshot(-os) : Run watcher process only once"
76
76
  echo ""
77
+ echo "Environment:"
78
+ echo " DEBUG_LEVEL : Specify DBG/MSG/WARN/ERR. Same as --debuglevel(-dl) option, and --debuglevel(-dl) takes precedence."
79
+ echo ""
77
80
  }
78
81
 
79
82
  #
@@ -388,6 +391,17 @@ elif [ "${DEBUG_ENV_LEVEL}" -ge 1 ]; then
388
391
  DEBUG_ENV_PARAM="LOGLEVEL_ERR"
389
392
  else
390
393
  DEBUG_ENV_PARAM="LOGLEVEL_SILENT"
394
+ if [ -n "${DEBUG_LEVEL}" ]; then
395
+ if [ "${DEBUG_LEVEL}" = "dbg" ] || [ "${DEBUG_LEVEL}" = "DBG" ] || [ "${DEBUG_LEVEL}" = "debug" ] || [ "${DEBUG_LEVEL}" = "DEBUG" ]; then
396
+ DEBUG_ENV_PARAM="LOGLEVEL_DBG"
397
+ elif [ "${DEBUG_LEVEL}" = "msg" ] || [ "${DEBUG_LEVEL}" = "MSG" ] || [ "${DEBUG_LEVEL}" = "message" ] || [ "${DEBUG_LEVEL}" = "MESSAGE" ] || [ "${DEBUG_LEVEL}" = "info" ] || [ "${DEBUG_LEVEL}" = "INFO" ]; then
398
+ DEBUG_ENV_PARAM="LOGLEVEL_MSG"
399
+ elif [ "${DEBUG_LEVEL}" = "warn" ] || [ "${DEBUG_LEVEL}" = "WARN" ] || [ "${DEBUG_LEVEL}" = "warning" ] || [ "${DEBUG_LEVEL}" = "WARNING" ]; then
400
+ DEBUG_ENV_PARAM="LOGLEVEL_WAN"
401
+ elif [ "${DEBUG_LEVEL}" = "err" ] || [ "${DEBUG_LEVEL}" = "ERR" ] || [ "${DEBUG_LEVEL}" = "error" ] || [ "${DEBUG_LEVEL}" = "ERROR" ]; then
402
+ DEBUG_ENV_PARAM="LOGLEVEL_ERR"
403
+ fi
404
+ fi
391
405
  fi
392
406
  if [ -n "${DEBUG_ENV_CUSTOM}" ]; then
393
407
  if [ -n "${DEBUG_ENV_PARAM}" ]; then
@@ -40,8 +40,8 @@
40
40
  },
41
41
 
42
42
  'k2hdkc': {
43
- 'config': '/etc/k2hdkc/slave.ini',
44
- 'port': 8031
43
+ 'config': '/etc/antpickax/slave.ini',
44
+ 'port': 8022
45
45
  },
46
46
 
47
47
  'multiproc': true,
@@ -76,6 +76,7 @@
76
76
  'delhostrole': 'delhostrole'
77
77
  },
78
78
 
79
+ 'localtenants': true,
79
80
  'confirmtenant': false,
80
81
 
81
82
  'chkipconfig': {
@@ -63,6 +63,7 @@ const reserved_key_list = [
63
63
  'userdata',
64
64
  'extdata',
65
65
  'k2hr3admin',
66
+ 'localtenants',
66
67
  'confirmtenant',
67
68
  'chkipconfig',
68
69
  'allowcredauth',
@@ -189,6 +190,7 @@ var loadedConfig = (function()
189
190
  delhostrole: 'delhostrole' // Admin Role name
190
191
  },
191
192
 
193
+ localtenants: true, // Whether to allow K2HR3 cluster local tenants
192
194
  confirmtenant: false, // Whichever confirm tenant when adding service member
193
195
 
194
196
  chkipconfig: { // IP Addresses checker(watcher) type
@@ -392,6 +394,11 @@ var loadedConfig = (function()
392
394
  }
393
395
  }
394
396
 
397
+ // Local tenants
398
+ if(apiutil.isSafeEntity(config.localtenants) && 'boolean' == typeof config.localtenants){
399
+ data.localtenants = config.localtenants;
400
+ }
401
+
395
402
  // Confirm tenant mode for adding service member
396
403
  if(apiutil.isSafeEntity(config.confirmtenant) && 'boolean' == typeof config.confirmtenant){
397
404
  data.confirmtenant = config.confirmtenant;
@@ -758,6 +765,11 @@ var R3ApiConfig = (function()
758
765
  return this.loadedConfig.k2hr3admin;
759
766
  };
760
767
 
768
+ proto.isLocalTenants = function()
769
+ {
770
+ return this.loadedConfig.localtenants;
771
+ };
772
+
761
773
  proto.isConfirmTenantForService = function()
762
774
  {
763
775
  return this.loadedConfig.confirmtenant;