diff --git a/app/scripts/modules/amazon/src/serverGroup/configure/serverGroupCommandBuilder.service.js b/app/scripts/modules/amazon/src/serverGroup/configure/serverGroupCommandBuilder.service.js index c96bc61cfaf..36b128e3e12 100644 --- a/app/scripts/modules/amazon/src/serverGroup/configure/serverGroupCommandBuilder.service.js +++ b/app/scripts/modules/amazon/src/serverGroup/configure/serverGroupCommandBuilder.service.js @@ -189,10 +189,15 @@ module.exports = angular.module('spinnaker.amazon.serverGroupCommandBuilder.serv var useAmiBlockDeviceMappings = applicationAwsSettings.useAmiBlockDeviceMappings || false; const existingTags = {}; + // These tags are applied by Clouddriver (if configured to do so), regardless of what the user might enter + // Might be worth feature flagging this if it turns out other folks are hard-coding these values + const reservedTags = [ 'spinnaker:application', 'spinnaker:stack', 'spinnaker:details' ]; if (serverGroup.asg.tags) { - serverGroup.asg.tags.forEach(tag => { - existingTags[tag.key] = tag.value; - }); + serverGroup.asg.tags + .filter(t => !reservedTags.includes(t.key)) + .forEach(tag => { + existingTags[tag.key] = tag.value; + }); } var command = { diff --git a/app/scripts/modules/amazon/src/serverGroup/configure/serverGroupCommandBuilder.spec.js b/app/scripts/modules/amazon/src/serverGroup/configure/serverGroupCommandBuilder.spec.js index bc13836168b..e614ef41d77 100644 --- a/app/scripts/modules/amazon/src/serverGroup/configure/serverGroupCommandBuilder.spec.js +++ b/app/scripts/modules/amazon/src/serverGroup/configure/serverGroupCommandBuilder.spec.js @@ -142,7 +142,7 @@ describe('awsServerGroupCommandBuilder', function() { expect(command.suspendedProcesses).toEqual([]); }); - it('copies tags', function () { + it('copies tags not in the reserved list:', function () { spyOn(this.instanceTypeService, 'getCategoryForInstanceType').and.returnValue(this.$q.when('selectedProfile')); const baseServerGroup = { @@ -154,11 +154,15 @@ describe('awsServerGroupCommandBuilder', function() { vpczoneIdentifier: '', tags: [ { - key: "some-key", + key: 'some-key', propagateAtLaunch: true, - resourceId: "some-resource-id", - resourceType: "auto-scaling-group", - value: "some-value" + resourceId: 'some-resource-id', + resourceType: 'auto-scaling-group', + value: 'some-value' + }, + { + key: 'spinnaker:application', + value: 'n/a' } ] }, @@ -175,7 +179,7 @@ describe('awsServerGroupCommandBuilder', function() { this.$scope.$digest(); - expect(command.tags).toEqual({"some-key": "some-value"}); + expect(command.tags).toEqual({'some-key': 'some-value'}); }); });