in app/scripts/modules/google/serverGroup/configure/serverGroupConfiguration.service.js [527:648]
function attachEventHandlers(command) {
command.regionalChanged = function regionalChanged() {
var result = { dirty: {} };
var filteredData = command.backingData.filtered;
var defaults = GCEProviderSettings.defaults;
if (command.regional) {
command.zone = null;
} else if (!command.zone) {
if (command.region === defaults.region) {
command.zone = defaults.zone;
} else {
command.zone = filteredData.zones[0];
}
angular.extend(result.dirty, configureZones(command).dirty);
}
command.viewState.dirty = command.viewState.dirty || {};
angular.extend(command.viewState.dirty, result.dirty);
return result;
};
command.regionChanged = function regionChanged() {
var result = { dirty: {} };
var filteredData = command.backingData.filtered;
angular.extend(result.dirty, configureSubnets(command).dirty);
if (command.region) {
angular.extend(result.dirty, configureInstanceTypes(command).dirty);
angular.extend(result.dirty, configureZones(command).dirty);
angular.extend(result.dirty, configureLoadBalancerOptions(command).dirty);
angular.extend(result.dirty, configureImages(command).dirty);
} else {
filteredData.zones = null;
}
command.viewState.dirty = command.viewState.dirty || {};
angular.extend(command.viewState.dirty, result.dirty);
return result;
};
command.credentialsChanged = function credentialsChanged() {
var result = { dirty: {} };
var backingData = command.backingData;
if (command.credentials) {
let regions = backingData.credentialsKeyedByAccount[command.credentials].regions;
if (_.isArray(regions)) {
backingData.filtered.regions = _.map(regions, 'name');
} else {
// TODO(duftler): Remove this once we finish deprecating the old style regions/zones in clouddriver GCE credentials.
backingData.filtered.regions = _.keys(regions);
}
if (!backingData.filtered.regions.includes(command.region)) {
command.region = null;
result.dirty.region = true;
} else {
angular.extend(result.dirty, command.regionChanged().dirty);
}
backingData.filtered.networks = getNetworkNames(command);
if (!backingData.filtered.networks.includes(command.network)) {
command.network = null;
result.dirty.network = true;
} else {
angular.extend(result.dirty, command.networkChanged().dirty);
}
angular.extend(result.dirty, configureHttpHealthChecks(command).dirty);
angular.extend(result.dirty, configureInstanceTypes(command).dirty);
} else {
command.region = null;
}
command.viewState.dirty = command.viewState.dirty || {};
angular.extend(command.viewState.dirty, result.dirty);
return result;
};
command.networkChanged = function networkChanged() {
var result = { dirty: {} };
command.viewState.autoCreateSubnets = _.chain(command.backingData.networks)
.filter({ account: command.credentials, name: command.network })
.map('autoCreateSubnets')
.head()
.value();
command.viewState.subnets = _.chain(command.backingData.networks)
.filter({ account: command.credentials, name: command.network })
.map('subnets')
.head()
.value();
angular.extend(result.dirty, configureSubnets(command).dirty);
angular.extend(result.dirty, configureSecurityGroupOptions(command).dirty);
command.viewState.dirty = command.viewState.dirty || {};
angular.extend(command.viewState.dirty, result.dirty);
return result;
};
command.zoneChanged = function zoneChanged() {
var result = { dirty: { } };
if (command.zone === undefined && !command.regional) {
result.dirty.zone = true;
}
command.viewState.dirty = command.viewState.dirty || {};
angular.extend(command.viewState.dirty, result.dirty);
angular.extend(command.viewState.dirty, configureInstanceTypes(command).dirty);
return result;
};
command.customInstanceChanged = function customInstanceChanged() {
var result = { dirty : { } };
command.viewState.dirty = command.viewState.dirty || {};
angular.extend(result, command.viewState.dirty, configureCustomInstanceTypes(command).dirty);
return result;
};
}