(→List Contents of a Build Life's Artifacts)
|
(→AHPSCRIPTS-109)
|
Line 50: | |||
uow.close();</pre> | uow.close();</pre> | ||
+ | = Update Environment Properties for All Projects = | ||
+ | The idea here is that you may have secure value that is the same for all projects that are in a particular environment. Especially for passwords which could change regularly, going into each project to enter this is lame. Here's a remote script to do it. | ||
+ | Something like: | ||
+ | ah3client updateProjectEnvrionmentProperty.bsh user password Production password secret | ||
+ | ==== AHPSCRIPTS-14 ==== | ||
+ | <pre>import com.urbancode.anthill3.main.client.AnthillClient; | ||
+ | import com.urbancode.anthill3.persistence.UnitOfWork; | ||
+ | import com.urbancode.anthill3.domain.project.*; | ||
+ | import com.urbancode.anthill3.domain.project.envprops.*; | ||
+ | import com.urbancode.anthill3.domain.servergroup.*; | ||
+ | import java.util.*; | ||
+ | String serverHost = "localhost"; | ||
+ | int serverPort = 4567; | ||
+ | String userName = "admin"; | ||
+ | String password = "admin"; | ||
+ | String environmentName = "Password"; | ||
+ | String variableName = "my.var.name"; | ||
+ | String newVariableValue = "new value"; | ||
+ | //serverHost = bsh.args[0]; | ||
+ | //serverPort = Integer.parseInt(bsh.args[1]); | ||
+ | if (bsh.args.length != 5) { | ||
+ | print(""); | ||
+ | print("Invalid snyax. Please enter the command as: "); | ||
+ | print("ah3client updateProjectEnvrionmentProperty.bsh [user name] [password] [environment name] [env property name] [new property value]"); | ||
+ | return 0; | ||
+ | } | ||
+ | userName = bsh.args[0]; | ||
+ | password = bsh.args[1]; | ||
+ | environmentName = bsh.args[2]; | ||
+ | variableName = bsh.args[3]; | ||
+ | newVariableValue = bsh.args[4]; | ||
+ | // obtain connection to the Anthill server | ||
+ | AnthillClient anthill = AnthillClient.connect(serverHost, serverPort, | ||
+ | userName, password); | ||
+ | // create a Unit of Work | ||
+ | UnitOfWork uow = anthill.createUnitOfWork(); | ||
+ | ServerGroup environment = ServerGroupFactory.getInstance().restoreForName(environmentName); | ||
+ | if (environment == null) { | ||
+ | print("Unknown environment: " + environmentName); | ||
+ | throw new IllegalArgumentException("Unknown environment: " + environmentName); | ||
+ | } | ||
+ | // Project | ||
+ | Project[] projects = ProjectFactory.getInstance().restoreAll(); | ||
+ | // Loop through projects. If it has environment props for this, find the | ||
+ | // right one and change it as appropriate. | ||
+ | for (int i = 0; i < projects.length; i++) { | ||
+ | print("Inspecting: " + projects[i].getName()); | ||
+ | |||
+ | ProjectEnvironmentProperty[] envPropArray = environment.getEnvironmentPropertiesForProject(projects[i]); | ||
+ | boolean foundVariable = false; | ||
+ | for (int j = 0; j < envPropArray.length; j++) { | ||
+ | if (envPropArray[j].getName().equals(variableName)) { | ||
+ | foundVariable = true; | ||
+ | envPropArray[j].setValue(newVariableValue); | ||
+ | envPropArray[j].store(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (!foundVariable) { | ||
+ | ProjectEnvironmentProperty newProp = new ProjectEnvironmentProperty(true); | ||
+ | |||
+ | newProp.setProject(projects[i]); | ||
+ | newProp.setServerGroup(environment); | ||
+ | newProp.setName(variableName); | ||
+ | newProp.setValue(newVariableValue); | ||
+ | newProp.setSetAsEnvProp(false); | ||
+ | newProp.setSecureValue(true); | ||
+ | |||
+ | newProp.store(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | print("Committing Changes"); | ||
+ | uow.commitAndClose(); </pre> |