}
}
protected void doCreateDockerContainer(CreateKubernetesContainerOptions options, DockerCreateContainerParameters parameters) throws Exception {
Kubernetes kubernetes = getKubernetes();
Objects.notNull(kubernetes, "kubernetes");
ContainerConfig containerConfig = parameters.getContainerConfig();
Map<String, String> environmentVariables = parameters.getEnvironmentVariables();
environmentVariables.put(EnvironmentVariables.FABRIC8_LISTEN_ADDRESS, "0.0.0.0");
//environmentVariables.put(EnvironmentVariables.FABRIC8_FABRIC_ENVIRONMENT, "kubernetes");
environmentVariables.remove(EnvironmentVariables.FABRIC8_GLOBAL_RESOLVER);
environmentVariables.remove(EnvironmentVariables.FABRIC8_MANUALIP);
String containerType = parameters.getContainerType();
String jolokiaUrl = parameters.getJolokiaUrl();
String name = options.getName();
String image = containerConfig.getImage();
Set<String> profileIds = options.getProfiles();
String versionId = options.getVersion();
FabricService service = getFabricService();
PodSchema pod = new PodSchema();
pod.setId(KubernetesHelpers.containerNameToPodId(name));
Map<String, String> labels = updateLabels(null, service, name, profileIds, versionId);
pod.setLabels(labels);
DesiredState desiredState = new DesiredState();
pod.setDesiredState(desiredState);
ManifestSchema manifest = new ManifestSchema();
manifest.setVersion(ManifestSchema.Version.V_1_BETA_1);
desiredState.setManifest(manifest);
ManifestContainer manifestContainer = new ManifestContainer();
manifestContainer.setName(name);
manifestContainer.setImage(image);
List<String> cmd = options.getCmd();
if (cmd != null && !cmd.isEmpty()) {
manifestContainer.setCommand(cmd);
}
manifestContainer.setWorkingDir(options.getWorkingDir());
manifestContainer.setEnv(KubernetesHelper.createEnv(environmentVariables));
// TODO
//manifestContainer.setVolumeMounts();
Map<String, String> portConfigurations = Profiles.getOverlayConfiguration(service, profileIds, versionId, Constants.PORTS_PID, "kubernetes");
if (portConfigurations != null && portConfigurations.size() > 0) {
List<Port> ports = new ArrayList<>();
Set<Map.Entry<String, String>> entries = portConfigurations.entrySet();
for (Map.Entry<String, String> entry : entries) {
String portName = entry.getKey();
String defaultPortValue = entry.getValue();
if (Strings.isNotBlank(defaultPortValue)) {
Integer portNumber = null;
try {
portNumber = Integer.parseInt(defaultPortValue);
} catch (NumberFormatException e) {
LOG.warn("Could not parse '" + defaultPortValue
+ "' as integer for port " + portName
+ " for profiles " + profileIds + " " + versionId + ". " + e, e);
}
String hostPortText = environmentVariables.get("FABRIC8_" + portName + "_PROXY_PORT");
Integer hostPort = null;
if (hostPortText != null) {
try {
hostPort = Integer.parseInt(hostPortText);
} catch (NumberFormatException e) {
LOG.warn("Could not parse '" + hostPortText
+ "' as integer for port " + portName
+ " for profiles " + profileIds + " " + versionId + ". " + e, e);
}
}
if (portNumber != null && hostPort != null) {
Port port = new Port();
//port.setName(portName);
//port.setProtocol(portName.toLowerCase());
//port.setProtocol("tcp");
port.setContainerPort(portNumber);
port.setHostPort(hostPort);
ports.add(port);
}
}
}
manifestContainer.setPorts(ports);
}
List<ManifestContainer> containers = new ArrayList<>();
containers.add(manifestContainer);
manifest.setContainers(containers);
try {
LOG.info("About to create pod with image " + image + " on " + getKubernetesAddress() + " with " + pod);
Object answer = kubernetes.createPod(pod);
LOG.info("Go answer: " + answer);
} catch (Exception e) {
LOG.info("Failed to create pod " + name + " from config " + pod
+ ": " + e + Dockers.dockerErrorMessage(e), e);
throw e;