@axway/axway-central-cli 3.9.0 → 3.9.2

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.
@@ -0,0 +1,18 @@
1
+ {
2
+ "version": "1.0",
3
+ "project": "Amplify - APIC CLI",
4
+ "repo_url": "https://git.ecd.axway.org/apigov/apicentral-cli",
5
+ "security_guide": "https://docs.axway.com/bundle/axway_resources/page/amplify_api_management_platform_security_white_paper.html",
6
+ "requirements": {
7
+ "fortify": true,
8
+ "irius-risk": false,
9
+ "pentest": false,
10
+ "twistlock": false,
11
+ "blackduck": false,
12
+ "third-party-policy-violation": false,
13
+ "appspider": false,
14
+ "insightvm": false
15
+ },
16
+ "suppressions": [
17
+ ]
18
+ }
@@ -12,6 +12,8 @@ var _resultsRenderers = require("../../common/resultsRenderers");
12
12
  var _TmpFile = _interopRequireDefault(require("../../common/TmpFile"));
13
13
  var _types = require("../../common/types");
14
14
  var _utils = require("../../common/utils");
15
+ var _ApiServerClient = require("../../common/ApiServerClient");
16
+ var _DefinitionsManager = require("../../common/DefinitionsManager");
15
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
18
  const {
17
19
  log
@@ -25,19 +27,35 @@ const action = async ({
25
27
  account,
26
28
  name,
27
29
  output,
28
- region
30
+ region,
31
+ cache
29
32
  } = argv;
30
33
  log(`editing ${name} env`);
31
34
  let file;
32
35
  let commandIsSuccessful = true;
33
36
  const render = new _Renderer.default(console, output).startSpin(`Fetching details of "environment/${name}".`);
34
37
  try {
38
+ var _defsManager$findDefs, _defsManager$findDefs2;
39
+ const client = new _ApiServerClient.ApiServerClient({
40
+ baseUrl,
41
+ account,
42
+ region,
43
+ useCache: cache
44
+ });
45
+ const defsManager = new _DefinitionsManager.DefinitionsManager(client);
46
+ await defsManager.init();
47
+ const def = (_defsManager$findDefs = defsManager.findDefsByWord('env')) === null || _defsManager$findDefs === void 0 ? void 0 : (_defsManager$findDefs2 = _defsManager$findDefs.find(def => def)) === null || _defsManager$findDefs2 === void 0 ? void 0 : _defsManager$findDefs2.resource;
35
48
  const service = await (0, _dataService.dataService)({
36
49
  baseUrl,
37
50
  account,
38
51
  region
39
52
  });
40
- let response = await service.get(`/management/v1alpha1/environments/${name}`);
53
+ let response;
54
+ let version = "v1alpha1";
55
+ if (def) {
56
+ version = (0, _utils.getLatestServedAPIVersion)(def);
57
+ }
58
+ response = await service.get(`/management/${version}/environments/${name}`);
41
59
  file = new _TmpFile.default(response);
42
60
  // stop spinner or it will interfere stdio of editor
43
61
  render.stopSpin();
@@ -49,7 +67,7 @@ const action = async ({
49
67
  const {
50
68
  docs
51
69
  } = await (0, _utils.loadAndVerifySpecs)(file.path, new Set([_types.Kind.Environment]));
52
- response = await service.put(`/management/v1alpha1/environments/${name}`, docs[0]);
70
+ response = await service.put(`/management/${version}/environments/${name}`, docs[0]);
53
71
  render.success((0, _cliKit.chalk)`{greenBright "environment/${name}" has successfully been edited.}`);
54
72
  // render result if output flag has been provided
55
73
  output && (0, _resultsRenderers.renderResponse)(console, response, output);
@@ -62,5 +62,5 @@ const GitLabRegexPatterns = exports.GitLabRegexPatterns = {
62
62
  };
63
63
  const KafkaRegexPatterns = exports.KafkaRegexPatterns = {
64
64
  bootstrapServerRegex: '^(SASL_SSL:\/\/|SASL_PLAINTEXT:\/\/|PLAINTEXT:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z0-9]{1,5}(:[0-9]{1,5})$',
65
- schemaRegistryURLRegex: '^(http:\/\/|https:\/\/)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$'
65
+ urlRegex: '^(http:\/\/|https:\/\/)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$'
66
66
  };
@@ -24,6 +24,10 @@ class KafkaAgentValues {
24
24
  _defineProperty(this, "clusterSaslMechanism", void 0);
25
25
  _defineProperty(this, "clusterSaslUser", void 0);
26
26
  _defineProperty(this, "clusterSaslPassword", void 0);
27
+ _defineProperty(this, "saslOauthTokenUrl", void 0);
28
+ _defineProperty(this, "saslOauthClientId", void 0);
29
+ _defineProperty(this, "saslOauthClientSecret", void 0);
30
+ _defineProperty(this, "saslOauthClientScopes", void 0);
27
31
  _defineProperty(this, "schemaRegistryEnabled", void 0);
28
32
  _defineProperty(this, "schemaRegistryUrl", void 0);
29
33
  _defineProperty(this, "schemaRegistryAuthEnabled", void 0);
@@ -42,6 +46,10 @@ class KafkaAgentValues {
42
46
  this.clusterSaslMechanism = '';
43
47
  this.clusterSaslUser = '';
44
48
  this.clusterSaslPassword = '';
49
+ this.saslOauthTokenUrl = '';
50
+ this.saslOauthClientId = '';
51
+ this.saslOauthClientSecret = '';
52
+ this.saslOauthClientScopes = '';
45
53
  this.schemaRegistryEnabled = false;
46
54
  this.schemaRegistryUrl = '';
47
55
  this.schemaRegistryAuthEnabled = true;
@@ -70,9 +78,19 @@ KAFKA_CLUSTER_AUTH_APIKEY_SECRET={{clusterAPISecret}}
70
78
  KAFKA_CLUSTER_SERVERS={{clusterServer}}
71
79
  {{#compare . clusterSaslMechanism "NONE" operator="!="}}
72
80
  KAFKA_CLUSTER_AUTH_SASL_MECHANISM={{clusterSaslMechanism}}
81
+ {{#compare . clusterSaslMechanism "OAUTHBEARER" operator="=="}}
82
+ KAFKA_CLUSTER_AUTH_SASL_OAUTH_TOKENURL={{saslOauthTokenUrl}}
83
+ KAFKA_CLUSTER_AUTH_SASL_OAUTH_CLIENTID={{saslOauthClientId}}
84
+ KAFKA_CLUSTER_AUTH_SASL_OAUTH_CLIENTSECRET={{saslOauthClientSecret}}
85
+ {{#compare . saslOauthClientScopes "" operator="!=" }}
86
+ KAFKA_CLUSTER_AUTH_SASL_OAUTH_SCOPES={{saslOauthClientScopes}}
87
+ {{/compare}}
88
+ {{/compare}}
89
+ {{#compare . clusterSaslMechanism "OAUTHBEARER" operator="!="}}
73
90
  KAFKA_CLUSTER_AUTH_SASL_USERNAME={{clusterSaslUser}}
74
91
  KAFKA_CLUSTER_AUTH_SASL_PASSWORD={{clusterSaslPassword}}
75
92
  {{/compare}}
93
+ {{/compare}}
76
94
  {{/if}}
77
95
 
78
96
  {{#if cloudEnabled}}
@@ -85,8 +103,18 @@ KAFKA_SCHEMAREGISTRY_ENABLED=true
85
103
  KAFKA_SCHEMAREGISTRY_URL={{schemaRegistryUrl}}
86
104
  {{#if schemaRegistryAuthEnabled}}
87
105
  KAFKA_SCHEMAREGISTRY_AUTH_SASL_MECHANISM={{clusterSaslMechanism}}
106
+ {{#compare . clusterSaslMechanism "OAUTHBEARER" operator="=="}}
107
+ KAFKA_SCHEMAREGISTRY_AUTH_SASL_OAUTH_TOKENURL={{saslOauthTokenUrl}}
108
+ KAFKA_SCHEMAREGISTRY_AUTH_SASL_OAUTH_CLIENTID={{saslOauthClientId}}
109
+ KAFKA_SCHEMAREGISTRY_AUTH_SASL_OAUTH_CLIENTSECRET={{saslOauthClientSecret}}
110
+ {{#compare . saslOauthClientScopes "" operator="!=" }}
111
+ KAFKA_SCHEMAREGISTRY_AUTH_SASL_OAUTH_SCOPES={{saslOauthClientScopes}}
112
+ {{/compare}}
113
+ {{/compare}}
114
+ {{#compare . clusterSaslMechanism "OAUTHBEARER" operator="!="}}
88
115
  KAFKA_SCHEMAREGISTRY_AUTH_SASL_USERNAME={{clusterSaslUser}}
89
116
  KAFKA_SCHEMAREGISTRY_AUTH_SASL_PASSWORD={{clusterSaslPassword}}
117
+ {{/compare}}
90
118
  {{/if}}
91
119
  {{/if}}
92
120
  {{/if}}
@@ -129,9 +157,19 @@ KAFKA_CLUSTER_AUTH_APIKEY_SECRET={{clusterAPISecret}}
129
157
  KAFKA_CLUSTER_SERVERS={{clusterServer}}
130
158
  {{#compare . clusterSaslMechanism "NONE" operator="!="}}
131
159
  KAFKA_CLUSTER_AUTH_SASL_MECHANISM={{clusterSaslMechanism}}
160
+ {{#compare . clusterSaslMechanism "OAUTHBEARER" operator="=="}}
161
+ KAFKA_CLUSTER_AUTH_SASL_OAUTH_TOKENURL={{saslOauthTokenUrl}}
162
+ KAFKA_CLUSTER_AUTH_SASL_OAUTH_CLIENTID={{saslOauthClientId}}
163
+ KAFKA_CLUSTER_AUTH_SASL_OAUTH_CLIENTSECRET={{saslOauthClientSecret}}
164
+ {{#compare . saslOauthClientScopes "" operator="!=" }}
165
+ KAFKA_CLUSTER_AUTH_SASL_OAUTH_SCOPES={{saslOauthClientScopes}}
166
+ {{/compare}}
167
+ {{/compare}}
168
+ {{#compare . clusterSaslMechanism "OAUTHBEARER" operator="!="}}
132
169
  KAFKA_CLUSTER_AUTH_SASL_USERNAME={{clusterSaslUser}}
133
170
  KAFKA_CLUSTER_AUTH_SASL_PASSWORD={{clusterSaslPassword}}
134
171
  {{/compare}}
172
+ {{/compare}}
135
173
  {{/if}}
136
174
 
137
175
  # Amplify Central configs
@@ -37,6 +37,7 @@ let SaslMechanismTypes = exports.SaslMechanismTypes = /*#__PURE__*/function (Sas
37
37
  SaslMechanismTypes["SCRAM_SHA_256"] = "SCRAM-SHA-256";
38
38
  SaslMechanismTypes["SCRAM_SHA_512"] = "SCRAM-SHA-512";
39
39
  SaslMechanismTypes["PLAIN"] = "PLAIN";
40
+ SaslMechanismTypes["OAUTHBEARER"] = "OAUTHBEARER";
40
41
  SaslMechanismTypes["NONE"] = "NONE";
41
42
  return SaslMechanismTypes;
42
43
  }({}); // KafkaPrompts - prompts for user inputs
@@ -52,9 +53,13 @@ const prompts = {
52
53
  saslMechanismMsg: "Select the SASL Mechanism you wish to use for authentication",
53
54
  enterSaslUsername: "Enter the SASL Username",
54
55
  enterSaslPassword: "Enter the SASL Password",
56
+ enterSaslOAuthTokenUrl: "Enter the SASL/OAUTHBEARER Token Url",
57
+ enterSaslOAuthClientId: "Enter the SASL/OAUTHBEARER Client Id",
58
+ enterSaslOAuthClientSecret: "Enter the SASL/OAUTHBEARER Client Secret",
59
+ enterSaslOAuthClientScopes: "Enter the SASL/OAUTHBEARER Client Scopes(comma separated list)",
55
60
  schemaRegistryEnabledMsg: 'Do you want to use Schema Registry with Kafka cluster?',
56
61
  enterSchemaRegistryUrl: 'Enter the Schema Registry Url',
57
- schemaRegistryAuthEnabled: 'Do you want to authenticate Schema Registry with SASL User?',
62
+ schemaRegistryAuthEnabled: 'Do you want to authenticate Schema Registry with SASL mechanism?',
58
63
  enterSchemaRegistryAPIKey: 'Enter the Schema Registry API Key Id',
59
64
  enterSchemaRegistryAPISecret: 'Enter the Schema Registry API Key Secret'
60
65
  };
@@ -126,10 +131,30 @@ const askSaslMechanism = async () => {
126
131
  }, {
127
132
  name: SaslMechanismTypes.SCRAM_SHA_512,
128
133
  value: SaslMechanismTypes.SCRAM_SHA_512
134
+ }, {
135
+ name: SaslMechanismTypes.OAUTHBEARER,
136
+ value: SaslMechanismTypes.OAUTHBEARER
129
137
  }]
130
138
  });
131
139
  };
132
140
  exports.askSaslMechanism = askSaslMechanism;
141
+ const askSaslOAuthBearerTokenUrl = async () => await (0, _basicPrompts.askInput)({
142
+ msg: prompts.enterSaslOAuthTokenUrl,
143
+ allowEmptyInput: false,
144
+ validate: (0, _basicPrompts.validateRegex)(helpers.KafkaRegexPatterns.urlRegex, helpers.invalidValueExampleErrMsg('Token URL', 'https://www.testdomain.com/oauth/token'))
145
+ });
146
+ const askSaslOAuthBearerClientId = async () => await (0, _basicPrompts.askInput)({
147
+ msg: prompts.enterSaslOAuthClientId,
148
+ allowEmptyInput: false
149
+ });
150
+ const askSaslOAuthBearerClientSecret = async () => await (0, _basicPrompts.askInput)({
151
+ msg: prompts.enterSaslOAuthClientSecret,
152
+ allowEmptyInput: false
153
+ });
154
+ const askSaslOAuthBearerScopes = async () => await (0, _basicPrompts.askInput)({
155
+ msg: prompts.enterSaslOAuthClientScopes,
156
+ allowEmptyInput: true
157
+ });
133
158
  const askSaslUsername = async () => await (0, _basicPrompts.askInput)({
134
159
  msg: prompts.enterSaslUsername
135
160
  });
@@ -155,7 +180,7 @@ const askIsSchemaRegistryAuthEnabled = async () => {
155
180
  exports.askIsSchemaRegistryAuthEnabled = askIsSchemaRegistryAuthEnabled;
156
181
  const askSchemaRegistryUrl = async () => await (0, _basicPrompts.askInput)({
157
182
  msg: prompts.enterSchemaRegistryUrl,
158
- validate: (0, _basicPrompts.validateRegex)(helpers.KafkaRegexPatterns.schemaRegistryURLRegex, helpers.invalidValueExampleErrMsg('Schema Registry Url', 'https://www.testdomain.com'))
183
+ validate: (0, _basicPrompts.validateRegex)(helpers.KafkaRegexPatterns.urlRegex, helpers.invalidValueExampleErrMsg('Schema Registry Url', 'https://www.testdomain.com'))
159
184
  });
160
185
  const askSchemaRegistryAPIKey = async () => await (0, _basicPrompts.askInput)({
161
186
  msg: prompts.enterSchemaRegistryAPIKey
@@ -177,8 +202,15 @@ const gatewayConnectivity = async installConfig => {
177
202
  kafkaAgentValues.clusterServer = await askClusterServer();
178
203
  kafkaAgentValues.clusterSaslMechanism = await askSaslMechanism();
179
204
  if (kafkaAgentValues.clusterSaslMechanism !== SaslMechanismTypes.NONE) {
180
- kafkaAgentValues.clusterSaslUser = await askSaslUsername();
181
- kafkaAgentValues.clusterSaslPassword = await askSaslPassword();
205
+ if (kafkaAgentValues.clusterSaslMechanism == SaslMechanismTypes.OAUTHBEARER) {
206
+ kafkaAgentValues.saslOauthTokenUrl = await askSaslOAuthBearerTokenUrl();
207
+ kafkaAgentValues.saslOauthClientId = await askSaslOAuthBearerClientId();
208
+ kafkaAgentValues.saslOauthClientSecret = await askSaslOAuthBearerClientSecret();
209
+ kafkaAgentValues.saslOauthClientScopes = await askSaslOAuthBearerScopes();
210
+ } else {
211
+ kafkaAgentValues.clusterSaslUser = await askSaslUsername();
212
+ kafkaAgentValues.clusterSaslPassword = await askSaslPassword();
213
+ }
182
214
  }
183
215
  }
184
216
  if (installConfig.switches.isDaEnabled) {
@@ -126,7 +126,7 @@ class ApiServerClient {
126
126
  * @param {ResourceDefinition} args.resourceDef resource definition
127
127
  * @param {string} [args.scopeName] scope name
128
128
  * @param {ResourceDefinition} [args.scopeDef] scope definition
129
- * @param {ApiServerVersions} [args.version] api's version
129
+ * @param {string} [args.version] api's version
130
130
  * @returns {Promise<Array<() => Promise<any> | null>} returns an array of "request creators" functions
131
131
  * that will be used in {@link resolveSubResourcesRequests} to create sub-resources when needed
132
132
  */
@@ -137,7 +137,7 @@ class ApiServerClient {
137
137
  resourceDef,
138
138
  scopeDef,
139
139
  scopeName,
140
- version = ApiServerVersions.v1alpha1,
140
+ version,
141
141
  createAction,
142
142
  language
143
143
  }) {
@@ -288,7 +288,6 @@ class ApiServerClient {
288
288
  resource,
289
289
  scopeDef,
290
290
  scopeName,
291
- version = ApiServerVersions.v1alpha1,
292
291
  withSubResources = true,
293
292
  language
294
293
  }) {
@@ -306,6 +305,7 @@ class ApiServerClient {
306
305
  account: this.account,
307
306
  team: this.team
308
307
  });
308
+ const version = resource.apiVersion === undefined ? (0, _utils.getLatestServedAPIVersion)(resourceDef) : resource.apiVersion;
309
309
  const urlPath = this.buildResourceUrlPath({
310
310
  resourceDef,
311
311
  scopeDef,
@@ -362,7 +362,6 @@ class ApiServerClient {
362
362
  resource,
363
363
  scopeDef,
364
364
  scopeName,
365
- version = ApiServerVersions.v1alpha1,
366
365
  subResourceName,
367
366
  language
368
367
  }) {
@@ -373,6 +372,7 @@ class ApiServerClient {
373
372
  pending: null
374
373
  };
375
374
  const canUpdateMainResource = !language && !subResourceName;
375
+ const version = resource.apiVersion === undefined ? (0, _utils.getLatestServedAPIVersion)(resourceDef) : resource.apiVersion;
376
376
  if (canUpdateMainResource) {
377
377
  try {
378
378
  const service = await (0, _dataService.dataService)({
@@ -441,8 +441,7 @@ class ApiServerClient {
441
441
  resource,
442
442
  subResourceName,
443
443
  scopeDef,
444
- scopeName,
445
- version = ApiServerVersions.v1alpha1
444
+ scopeName
446
445
  }) {
447
446
  log(`updateSubResource, spec.kind = ${resourceDef.spec.kind}, name = ${resource.name}`);
448
447
  const result = {
@@ -450,6 +449,7 @@ class ApiServerClient {
450
449
  error: null,
451
450
  pending: null
452
451
  };
452
+ const version = (0, _utils.getLatestServedAPIVersion)(resourceDef);
453
453
  try {
454
454
  var _resourceDef$spec$sub3, _resourceDef$spec$sub4;
455
455
  const service = await (0, _dataService.dataService)({
@@ -500,14 +500,15 @@ class ApiServerClient {
500
500
  scopeDef,
501
501
  scopeName,
502
502
  wait,
503
- version = ApiServerVersions.v1alpha1,
504
- forceDelete = false
503
+ forceDelete = false,
504
+ resourceAPIVersion
505
505
  }) {
506
506
  log(`deleteResourceByName, spec.kind = ${resourceDef.spec.kind}, name = ${resourceName}, scope.kind = ${scopeDef === null || scopeDef === void 0 ? void 0 : scopeDef.spec.kind}, scope.name = ${scopeName}`);
507
507
  const result = {
508
508
  data: null,
509
509
  error: null
510
510
  };
511
+ const version = resourceAPIVersion === undefined ? (0, _utils.getLatestServedAPIVersion)(resourceDef) : resourceAPIVersion;
511
512
  try {
512
513
  const service = await (0, _dataService.dataService)({
513
514
  baseUrl: this.baseUrl,
@@ -538,8 +539,7 @@ class ApiServerClient {
538
539
  resourceDef,
539
540
  resourceName,
540
541
  scopeDef,
541
- scopeName,
542
- version
542
+ scopeName
543
543
  });
544
544
  if (!!res.data) {
545
545
  result.data = null;
@@ -577,7 +577,6 @@ class ApiServerClient {
577
577
  resourceDef,
578
578
  scopeDef,
579
579
  scopeName,
580
- version = ApiServerVersions.v1alpha1,
581
580
  query,
582
581
  progressListener,
583
582
  expand,
@@ -585,6 +584,7 @@ class ApiServerClient {
585
584
  fieldSet
586
585
  }) {
587
586
  log(`getResourcesList, spec.kind = ${resourceDef.spec.kind}`);
587
+ const version = (0, _utils.getLatestServedAPIVersion)(resourceDef);
588
588
  const result = {
589
589
  data: null,
590
590
  error: null
@@ -633,12 +633,13 @@ class ApiServerClient {
633
633
  resourceName,
634
634
  scopeDef,
635
635
  scopeName,
636
- version = ApiServerVersions.v1alpha1,
637
636
  expand,
638
637
  langDef,
639
- fieldSet
638
+ fieldSet,
639
+ resourceVersion
640
640
  }) {
641
641
  log(`getResourceByName, spec.kind = ${resourceDef.spec.kind}, name = ${resourceName}`);
642
+ const version = resourceVersion === undefined ? (0, _utils.getLatestServedAPIVersion)(resourceDef) : resourceVersion;
642
643
  const result = {
643
644
  data: null,
644
645
  error: null
@@ -736,7 +737,7 @@ class ApiServerClient {
736
737
  * sorting of the array of resources with "compareResourcesByKindAsc".
737
738
  * @param resources array of resources to create
738
739
  */
739
- async bulkCreate(resources, sortedDefsMap, version) {
740
+ async bulkCreate(resources, sortedDefsMap) {
740
741
  log(`bulk create`);
741
742
  const sortedDefsArray = Array.from(sortedDefsMap.values());
742
743
  const pendingSubResources = [];
@@ -773,8 +774,7 @@ class ApiServerClient {
773
774
  resource,
774
775
  resourceDef,
775
776
  scopeDef,
776
- scopeName,
777
- version
777
+ scopeName
778
778
  });
779
779
  if (res.data && !res.error) {
780
780
  // note: bulk operation requires creation of sub-resources after all main resources created
@@ -826,7 +826,7 @@ class ApiServerClient {
826
826
  * sorting of the array of resources with "compareResourcesByKindAsc".
827
827
  * @param resources array of resources to create
828
828
  */
829
- async bulkCreateOrUpdate(resources, sortedDefsMap, language, subResourceName, version) {
829
+ async bulkCreateOrUpdate(resources, sortedDefsMap, language, subResourceName) {
830
830
  log(`bulk create or update`);
831
831
  const sortedDefsArray = Array.from(sortedDefsMap.values());
832
832
  const applyResults = [];
@@ -864,7 +864,8 @@ class ApiServerClient {
864
864
  resourceDef,
865
865
  resourceName: resource.name,
866
866
  scopeDef,
867
- scopeName
867
+ scopeName,
868
+ resourceVersion: resource.apiVersion
868
869
  }) : null;
869
870
 
870
871
  // Create new resources first
@@ -877,7 +878,6 @@ class ApiServerClient {
877
878
  resourceDef,
878
879
  scopeDef,
879
880
  scopeName,
880
- version,
881
881
  language
882
882
  });
883
883
  } else if (getResult.data) {
@@ -887,7 +887,6 @@ class ApiServerClient {
887
887
  resourceDef,
888
888
  scopeDef,
889
889
  scopeName,
890
- version,
891
890
  language,
892
891
  subResourceName
893
892
  });
@@ -953,7 +952,7 @@ class ApiServerClient {
953
952
  * Order of calls calculated by sorting of the array of resources with "compareResourcesByKindDesc".
954
953
  * @param resources array of resources to create
955
954
  */
956
- async bulkDelete(resources, sortedDefsMap, wait, forceDelete, version) {
955
+ async bulkDelete(resources, sortedDefsMap, wait, forceDelete) {
957
956
  log(`bulk delete`);
958
957
  const sortedDefsArray = Array.from(sortedDefsMap.values());
959
958
  const bulkResult = {
@@ -990,8 +989,8 @@ class ApiServerClient {
990
989
  resourceDef,
991
990
  scopeDef,
992
991
  scopeName,
993
- version,
994
- forceDelete
992
+ forceDelete,
993
+ resourceAPIVersion: resource.apiVersion
995
994
  });
996
995
  if (res.error) {
997
996
  for (const nextError of res.error) {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.FormatString = FormatString;
7
7
  exports.KeyValueMapToNameValueArray = KeyValueMapToNameValueArray;
8
8
  exports.ValueFromKey = ValueFromKey;
9
- exports.parseScopeParam = exports.loadAndVerifySpecs = exports.loadAndVerifyApigeeXCredentialFile = exports.isWindows = exports.isValidJson = exports.isApiServerErrorType = exports.isApiServerErrorResponseType = exports.hbsCompare = exports.getConfig = exports.createLanguageSubresourceNames = exports.configFile = exports.compareResourcesByKindDesc = exports.compareResourcesByKindAsc = exports.buildTemplate = exports.buildGenericResource = void 0;
9
+ exports.parseScopeParam = exports.loadAndVerifySpecs = exports.loadAndVerifyApigeeXCredentialFile = exports.isWindows = exports.isValidJson = exports.isApiServerErrorType = exports.isApiServerErrorResponseType = exports.hbsCompare = exports.getLatestServedAPIVersion = exports.getConfig = exports.createLanguageSubresourceNames = exports.configFile = exports.compareResourcesByKindDesc = exports.compareResourcesByKindAsc = exports.buildTemplate = exports.buildGenericResource = void 0;
10
10
  exports.sanitizeMetadata = sanitizeMetadata;
11
11
  exports.writeToFile = exports.writeTemplates = exports.verifyScopeParam = exports.verifyFile = exports.transformSimpleFilters = void 0;
12
12
  var _fsExtra = require("fs-extra");
@@ -14,6 +14,7 @@ var _handlebars = _interopRequireDefault(require("handlebars"));
14
14
  var _jsYaml = require("js-yaml");
15
15
  var _os = require("os");
16
16
  var _path = require("path");
17
+ var _ApiServerClient = require("./ApiServerClient");
17
18
  var _CompositeError = require("./CompositeError");
18
19
  var _types = require("./types");
19
20
  var _chalk = _interopRequireDefault(require("chalk"));
@@ -414,4 +415,18 @@ function ValueFromKey(stringEnum, key) {
414
415
  if (k === stringEnum[key]) return k;
415
416
  }
416
417
  return undefined;
417
- }
418
+ }
419
+ const getLatestServedAPIVersion = resourceDef => {
420
+ let apiVersions = resourceDef.spec.apiVersions;
421
+ if (apiVersions && apiVersions.length > 0) {
422
+ for (const version of apiVersions) {
423
+ if (version.served && !version.deprecated) {
424
+ return version.name;
425
+ }
426
+ }
427
+ return _ApiServerClient.ApiServerVersions.v1alpha1;
428
+ }
429
+ // if the apiVersions are not set on the resource definition, fallback to v1alpha1 version
430
+ return _ApiServerClient.ApiServerVersions.v1alpha1;
431
+ };
432
+ exports.getLatestServedAPIVersion = getLatestServedAPIVersion;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axway/axway-central-cli",
3
- "version": "3.9.0",
3
+ "version": "3.9.2",
4
4
  "description": "Manage APIs, services and publish to the Amplify Marketplace",
5
5
  "homepage": "https://platform.axway.com",
6
6
  "author": {