(→AHPSCRIPTS-34)
|
(→AHPSCRIPTS-92)
|
Line 1363: | |||
e.printStackTrace(commandOutput); | e.printStackTrace(commandOutput); | ||
}</pre> | }</pre> | ||
+ | = Script to Update Workflow Property with Names of All Agents in Environment = | ||
+ | * You can use the script with an Evaluate Script Step. You need to change the projectName, workflowName, envName and propertyName values to match your requirements. | ||
+ | ==== AHPSCRIPTS-93 ==== | ||
+ | <pre>import com.urbancode.anthill3.domain.agent.Agent; | ||
+ | import com.urbancode.anthill3.domain.agent.AgentFactory; | ||
+ | import com.urbancode.anthill3.domain.project.Project; | ||
+ | import com.urbancode.anthill3.domain.project.ProjectFactory; | ||
+ | import com.urbancode.anthill3.domain.servergroup.ServerGroup; | ||
+ | import com.urbancode.anthill3.domain.servergroup.ServerGroupFactory; | ||
+ | import com.urbancode.anthill3.domain.workflow.Workflow; | ||
+ | import com.urbancode.anthill3.domain.workflow.WorkflowFactory; | ||
+ | import com.urbancode.anthill3.domain.workflow.WorkflowProperty; | ||
+ | import com.urbancode.anthill3.domain.workflow.WorkflowPropertyTypeEnum; | ||
+ | import com.urbancode.devilfish.client.ServiceEndpoint; | ||
+ | import java.io.PrintStream; | ||
+ | import java.util.ArrayList; | ||
+ | import java.util.List; | ||
+ | try { | ||
+ | String projectName = "some project"; | ||
+ | String workflowName = "some workflow that has a multi select property defined"; | ||
+ | String envName = "some environment"; | ||
+ | String propertyName = "the property to update that's defined in the workflow above"; | ||
+ | List valueList = new ArrayList(); | ||
+ | // get all agents that belong to an environment, are configured and not ingnored | ||
+ | ServerGroup envirnoment = ServerGroupFactory.getInstance().restoreForName(envName); | ||
+ | if (envirnoment != null) { | ||
+ | for (ServiceEndpoint endpoint : envirnoment.getServerArray()) { | ||
+ | Agent agent = AgentFactory.getInstance().restoreByEndpoint(endpoint); | ||
+ | if (agent != null && agent.isConfigured() && !agent.isIgnored()) { | ||
+ | valueList.add(agent.getName()); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | // now locate the workflow property that you want to update | ||
+ | Project project = ProjectFactory.getInstance().restoreForName(projectName); | ||
+ | if (project != null) { | ||
+ | Workflow workflow = WorkflowFactory.getInstance().restoreForProjectAndWorkflowName(project, workflowName); | ||
+ | if (workflow != null) { | ||
+ | WorkflowProperty property = workflow.getProperty(propertyName); | ||
+ | // here you can change/remove the check for the property type if you want | ||
+ | if (property != null && property.getType().equals(WorkflowPropertyTypeEnum.MULTI_SELECT)) { | ||
+ | property.setAllowedValues((String[])valueList.toArray(new String[valueList.size()])); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | catch (Exception e) { | ||
+ | e.printStackTrace(commandOutput); | ||
+ | }</pre> |