@ibm-cloud/cd-tools 1.14.1 → 1.15.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.
@@ -270,21 +270,34 @@ async function main(options) {
270
270
  }
271
271
 
272
272
  await setupTerraformFiles({
273
- token: bearer,
274
- srcRegion: sourceRegion,
275
- targetRegion: targetRegion,
276
- targetTag: targetTag,
277
- targetToolchainName: targetToolchainName,
278
- targetRgId: targetRgId,
279
- disableTriggers: disableTriggers,
280
- isCompact: isCompact,
281
- outputDir: outputDir,
282
- tempDir: TEMP_DIR,
283
- moreTfResources: moreTfResources,
284
- gritMapping: gritMapping,
285
- skipUserConfirmation: skipUserConfirmation,
286
- includeS2S: includeS2S,
287
- timeSuffix: TIME_SUFFIX
273
+ auth: {
274
+ token: bearer
275
+ },
276
+ source: {
277
+ srcRegion: sourceRegion,
278
+ srcToolchainId: sourceToolchainId
279
+ },
280
+ target: {
281
+ targetRegion: targetRegion,
282
+ targetRgId: targetRgId,
283
+ targetToolchainName: targetToolchainName,
284
+ targetTag: targetTag
285
+ },
286
+ options: {
287
+ disableTriggers: disableTriggers,
288
+ includeS2S: includeS2S,
289
+ isCompact: isCompact,
290
+ skipUserConfirmation: skipUserConfirmation
291
+ },
292
+ paths: {
293
+ tempDir: TEMP_DIR,
294
+ outputDir: outputDir
295
+ },
296
+ additional: {
297
+ gritMapping: gritMapping,
298
+ moreTfResources: moreTfResources,
299
+ timeSuffix: TIME_SUFFIX
300
+ }
288
301
  });
289
302
  } catch (err) {
290
303
  if (err.message && err.stack) {
@@ -13,6 +13,8 @@ import axiosRetry from 'axios-retry';
13
13
  import mocks from '../../test/data/mocks.js'
14
14
  import { logger, LOG_STAGES } from './logger.js';
15
15
 
16
+ import packageJson from '../../package.json' with { type: 'json' };
17
+
16
18
  const CLOUD_PLATFORM = process.env['IBMCLOUD_PLATFORM_DOMAIN'] || 'cloud.ibm.com';
17
19
  const DEV_MODE = CLOUD_PLATFORM !== 'cloud.ibm.com';
18
20
  const IAM_BASE_URL = DEV_MODE ? process.env['IBMCLOUD_IAM_API_ENDPOINT'] : 'https://iam.cloud.ibm.com';
@@ -117,6 +119,7 @@ async function getToolchain(bearer, toolchainId, region) {
117
119
  'Accept': 'application/json',
118
120
  'Authorization': `Bearer ${bearer}`,
119
121
  'Content-Type': 'application/json',
122
+ 'User-Agent': `${packageJson.name}/${packageJson.version}`
120
123
  },
121
124
  validateStatus: () => true
122
125
  };
@@ -68,7 +68,16 @@ async function initProviderFile(targetRegion, dir) {
68
68
  return writeFilePromise(`${dir}/provider.tf`, jsonToTf(newProviderTfStr));
69
69
  }
70
70
 
71
- async function setupTerraformFiles({ token, srcRegion, targetRegion, targetTag, targetToolchainName, targetRgId, disableTriggers, isCompact, outputDir, tempDir, moreTfResources, gritMapping, skipUserConfirmation, includeS2S, timeSuffix }) {
71
+ async function setupTerraformFiles(config) {
72
+ const {
73
+ auth: { token },
74
+ source: { srcRegion, srcToolchainId },
75
+ target: { targetRegion, targetRgId, targetToolchainName, targetTag },
76
+ options: { disableTriggers, includeS2S, isCompact, skipUserConfirmation },
77
+ paths: { tempDir, outputDir },
78
+ additional: { gritMapping, moreTfResources, timeSuffix }
79
+ } = config;
80
+
72
81
  const promises = [];
73
82
 
74
83
  const writeProviderPromise = await initProviderFile(targetRegion, outputDir);
@@ -230,6 +239,19 @@ async function setupTerraformFiles({ token, srcRegion, targetRegion, targetTag,
230
239
  ];
231
240
  if (targetToolchainName) newTfFileObj['resource']['ibm_cd_toolchain'][newTcId]['name'] = targetToolchainName;
232
241
  if (targetRgId) newTfFileObj['resource']['ibm_cd_toolchain'][newTcId]['resource_group_id'] = targetRgId;
242
+
243
+ // set new description
244
+ const oldDesc = newTfFileObj['resource']['ibm_cd_toolchain'][newTcId]['description'];
245
+ let newDesc = `Copied from https://cloud.ibm.com/devops/toolchains/${srcToolchainId}?env_id=ibm:yp:${srcRegion}` +
246
+ (oldDesc && oldDesc != newTfFileObj['resource']['ibm_cd_toolchain'][newTcId]['name'] ?
247
+ `; Original description: ${oldDesc}`
248
+ : '')
249
+ // if greater than 500 chars, truncate to fit within 500 chars and add a marker`
250
+ if (newDesc.length > 500) {
251
+ const marker = ' (truncated)';
252
+ newDesc = newDesc.substring(0, 500 - marker.length) + marker;
253
+ }
254
+ newTfFileObj['resource']['ibm_cd_toolchain'][newTcId]['description'] = newDesc;
233
255
  }
234
256
 
235
257
  if (isCompact || resourceName === 'ibm_cd_tekton_pipeline_trigger') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibm-cloud/cd-tools",
3
- "version": "1.14.1",
3
+ "version": "1.15.0",
4
4
  "description": "Tools and utilities for the IBM Cloud Continuous Delivery service and resources",
5
5
  "repository": {
6
6
  "type": "git",