42 | |
43 |
44 |
45 |
46 | YAML formatted list of agent images. i.e:
47 | my_teamcity_image:
48 | image: ubuntu_trusty_14.04
49 | flavor: m1.small
50 | network: my_openstack_network
51 | security_group: default
52 | *key_pair: my_username_keypair
53 | *auto_floating_ip: boolean (default:false)
54 | *user_script: my_startup_script.sh
55 | *availability_zone: my_zone
56 | starred parameters are optional
57 | user_script should be located at teamcity server in directopy TEAMCITY_DATA_PATH/system/pluginData/openstack
58 |
59 | |
60 |
61 |
--------------------------------------------------------------------------------
/cloud-openstack-server/src/main/java/jetbrains/buildServer/clouds/openstack/OpenstackCloudClientFactory.java:
--------------------------------------------------------------------------------
1 | package jetbrains.buildServer.clouds.openstack;
2 |
3 | import java.util.Collections;
4 | import java.util.Map;
5 | import java.util.concurrent.Executors;
6 |
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 |
10 | import com.intellij.openapi.diagnostic.Logger;
11 |
12 | import jetbrains.buildServer.clouds.CloudClientFactory;
13 | import jetbrains.buildServer.clouds.CloudClientParameters;
14 | import jetbrains.buildServer.clouds.CloudRegistrar;
15 | import jetbrains.buildServer.clouds.CloudState;
16 | import jetbrains.buildServer.log.Loggers;
17 | import jetbrains.buildServer.serverSide.AgentDescription;
18 | import jetbrains.buildServer.serverSide.PropertiesProcessor;
19 | import jetbrains.buildServer.serverSide.ServerPaths;
20 | import jetbrains.buildServer.util.NamedDaemonThreadFactory;
21 | import jetbrains.buildServer.web.openapi.PluginDescriptor;
22 |
23 | public class OpenstackCloudClientFactory implements CloudClientFactory {
24 |
25 | @NotNull
26 | private static final Logger LOG = Logger.getInstance(Loggers.CLOUD_CATEGORY_ROOT);
27 | @NotNull
28 | private final String cloudProfileSettings;
29 | @NotNull
30 | private final ServerPaths serverPaths;
31 |
32 | public OpenstackCloudClientFactory(@NotNull final CloudRegistrar cloudRegistrar, @NotNull final PluginDescriptor pluginDescriptor,
33 | @NotNull final ServerPaths serverPaths) {
34 | cloudProfileSettings = pluginDescriptor.getPluginResourcesPath("profile-settings.jsp");
35 | this.serverPaths = serverPaths;
36 | cloudRegistrar.registerCloudFactory(this);
37 | }
38 |
39 | @NotNull
40 | public String getCloudCode() {
41 | return OpenstackCloudParameters.CLOUD_TYPE;
42 | }
43 |
44 | @NotNull
45 | public String getDisplayName() {
46 | return OpenstackCloudParameters.CLOUD_DISPLAY_NAME;
47 | }
48 |
49 | @Nullable
50 | public String getEditProfileUrl() {
51 | return cloudProfileSettings;
52 | }
53 |
54 | @NotNull
55 | public Map