use of io.fabric8.docker.client.Config in project fabric8 by jboss-fuse.
the class FeatureConfigInstaller method installFeatureConfigs.
void installFeatureConfigs(Feature feature) throws IOException, InvalidSyntaxException {
for (Config config : feature.getConfigurations()) {
Properties props = config.getProperties();
String[] split = parsePid(config.getName());
// see http://felix.apache.org/documentation/subprojects/apache-felix-file-install.html#configurations
String pid = split[0];
String subname = split[1];
Configuration cfg = findExistingConfiguration(configAdmin, pid, subname);
if (cfg == null) {
Dictionary<String, String> cfgProps = convertToDict(props);
cfg = createConfiguration(configAdmin, pid, subname);
String key = createConfigurationKey(pid, subname);
cfgProps.put(CONFIG_KEY, key);
cfg.update(cfgProps);
} else if (config.isAppend()) {
Dictionary<String, Object> properties = cfg.getProperties();
// Ignore already managed configurations
String fabricManagedPid = (String) properties.get(FABRIC_ZOOKEEPER_PID);
if (Strings.isNotBlank(fabricManagedPid)) {
continue;
}
for (Enumeration<String> propKeys = properties.keys(); propKeys.hasMoreElements(); ) {
String key = propKeys.nextElement();
// remove existing entry, since it's about appending.
if (props.containsKey(key)) {
props.remove(key);
}
}
if (props.size() > 0) {
// convert props to dictionary
Dictionary<String, String> cfgProps = convertToDict(props);
cfg.update(cfgProps);
}
}
}
for (ConfigFile configFile : feature.getConfigurationFiles()) {
installConfigurationFile(configFile.getLocation(), configFile.getFinalname(), configFile.isOverride());
}
}
use of io.fabric8.docker.client.Config in project fabric8 by jboss-fuse.
the class DeployToProfileMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
if (isIgnoreProject())
return;
try {
ProjectRequirements requirements = new ProjectRequirements();
if (isIncludeArtifact()) {
DependencyDTO rootDependency = loadRootDependency();
requirements.setRootDependency(rootDependency);
}
configureRequirements(requirements);
// validate requirements
if (requirements.getProfileId() != null) {
// make sure the profile id is a valid name
FabricValidations.validateProfileName(requirements.getProfileId());
}
boolean newUserAdded = false;
fabricServer = mavenSettings.getServer(serverId);
// we may have username and password from jolokiaUrl
String jolokiaUsername = null;
String jolokiaPassword = null;
try {
URL url = new URL(jolokiaUrl);
String s = url.getUserInfo();
if (Strings.isNotBlank(s) && s.indexOf(':') > 0) {
int idx = s.indexOf(':');
jolokiaUsername = s.substring(0, idx);
jolokiaPassword = s.substring(idx + 1);
customUsernameAndPassword = true;
}
} catch (MalformedURLException e) {
throw new IllegalArgumentException("Option jolokiaUrl is invalid due " + e.getMessage());
}
// jolokia url overrides username/password configured in maven settings
if (jolokiaUsername != null) {
if (fabricServer == null) {
fabricServer = new Server();
}
getLog().info("Using username: " + jolokiaUsername + " and password from provided jolokiaUrl option");
fabricServer.setId(serverId);
fabricServer.setUsername(jolokiaUsername);
fabricServer.setPassword(jolokiaPassword);
}
if (fabricServer == null) {
boolean create = false;
if (mavenSettings.isInteractiveMode() && mavenSettingsWriter != null) {
System.out.println("Maven settings file: " + mavenSettingsFile.getAbsolutePath());
System.out.println();
System.out.println();
System.out.println("There is no <server> section in your ~/.m2/settings.xml file for the server id: " + serverId);
System.out.println();
System.out.println("You can enter the username/password now and have the settings.xml updated or you can do this by hand if you prefer.");
System.out.println();
while (true) {
String value = readInput("Would you like to update the settings.xml file now? (y/n): ").toLowerCase();
if (value.startsWith("n")) {
System.out.println();
System.out.println();
break;
} else if (value.startsWith("y")) {
create = true;
break;
}
}
if (create) {
System.out.println("Please let us know the login details for this server: " + serverId);
System.out.println();
String userName = readInput("Username: ");
String password = readPassword("Password: ");
String password2 = readPassword("Repeat Password: ");
while (!password.equals(password2)) {
System.out.println("Passwords do not match, please try again.");
password = readPassword("Password: ");
password2 = readPassword("Repeat Password: ");
}
System.out.println();
fabricServer = new Server();
fabricServer.setId(serverId);
fabricServer.setUsername(userName);
fabricServer.setPassword(password);
mavenSettings.addServer(fabricServer);
if (mavenSettingsFile.exists()) {
int counter = 1;
while (true) {
File backupFile = new File(mavenSettingsFile.getAbsolutePath() + ".backup-" + counter++ + ".xml");
if (!backupFile.exists()) {
System.out.println("Copied original: " + mavenSettingsFile.getAbsolutePath() + " to: " + backupFile.getAbsolutePath());
Files.copy(mavenSettingsFile, backupFile);
break;
}
}
}
Map<String, Object> config = new HashMap<String, Object>();
mavenSettingsWriter.write(mavenSettingsFile, config, mavenSettings);
System.out.println("Updated settings file: " + mavenSettingsFile.getAbsolutePath());
System.out.println();
newUserAdded = true;
}
}
}
if (fabricServer == null) {
String message = "No <server> element can be found in ~/.m2/settings.xml for the server <id>" + serverId + "</id> so we cannot connect to fabric8!\n\n" + "Please add the following to your ~/.m2/settings.xml file (using the correct user/password values):\n\n" + "<servers>\n" + " <server>\n" + " <id>" + serverId + "</id>\n" + " <username>admin</username>\n" + " <password>admin</password>\n" + " </server>\n" + "</servers>\n";
getLog().error(message);
throw new MojoExecutionException(message);
}
// now lets invoke the mbean
J4pClient client = createJolokiaClient();
if (upload) {
uploadDeploymentUnit(client, newUserAdded || customUsernameAndPassword);
} else {
getLog().info("Uploading to the fabric8 maven repository is disabled");
}
DeployResults results = uploadRequirements(client, requirements);
if (results != null) {
uploadReadMeFile(client, results);
uploadProfileConfigurations(client, results);
refreshProfile(client, results);
}
} catch (MojoExecutionException e) {
throw e;
} catch (Exception e) {
throw new MojoExecutionException("Error executing", e);
}
}
use of io.fabric8.docker.client.Config in project fabric8 by jboss-fuse.
the class DeployToProfileMojoTest method shouldExpandAnyPlaceholder.
@Test
public void shouldExpandAnyPlaceholder() throws IOException, J4pException, MalformedObjectNameException, MojoExecutionException {
// Given
File root = new File("src/test/fabric8");
File config = new File(root, "pid.properties");
// When
mojo.uploadProfileConfigFile(jolokiaClient, deployResults, root, config);
String decodedConfig = decodeSentConfig();
// Then
assertTrue(decodedConfig.contains("artifactId = " + "fabric8-maven-plugin"));
}
use of io.fabric8.docker.client.Config in project fabric8 by jboss-fuse.
the class DeployToProfileMojoTest method shouldExpandProjectVersionPlaceholder.
@Test
public void shouldExpandProjectVersionPlaceholder() throws IOException, J4pException, MalformedObjectNameException, MojoExecutionException {
// Given
File config = new File(root, randomUUID().toString());
String property = "project = " + PLACEHOLDER_PROJECT_VERSION;
writeToFile(config, property.getBytes());
// When
mojo.uploadProfileConfigFile(jolokiaClient, deployResults, root, config);
String decodedConfig = decodeSentConfig();
// Then
assertEquals("project = " + FABRIC_VERSION, decodedConfig);
}
use of io.fabric8.docker.client.Config in project fabric8 by jboss-fuse.
the class FabricServiceImpl method setConfigurationValue.
@Override
public void setConfigurationValue(String versionId, String profileId, String pid, String key, String value) {
assertValid();
Version version = profileService.get().getRequiredVersion(versionId);
Profile profile = version.getRequiredProfile(profileId);
ProfileBuilder builder = ProfileBuilder.Factory.createFrom(profile);
Map<String, String> config = builder.getConfiguration(pid);
config.put(key, value);
builder.addConfiguration(pid, config);
profileService.get().updateProfile(builder.getProfile());
}
Aggregations