use of io.fabric8.api.FabricService in project fabric8 by jboss-fuse.
the class EnsemblePasswordAction method doExecute.
@Override
protected Object doExecute() throws Exception {
if (!commit) {
if (newPassword == null) {
System.out.println(fabricService.getZookeeperPassword());
} else {
String zookeeperUrl = fabricService.getZookeeperUrl();
String oldPassword = fabricService.getZookeeperPassword();
System.out.println("Updating the password...");
// Since we will be changing the password, create a new ZKClient that won't
// be getting update by the password change.
CuratorACLManager aclManager = new CuratorACLManager();
CuratorFramework curator = CuratorFrameworkFactory.builder().connectString(zookeeperUrl).retryPolicy(new RetryOneTime(500)).aclProvider(aclManager).authorization("digest", ("fabric:" + oldPassword).getBytes()).sessionTimeoutMs(30000).build();
curator.start();
try {
// Lets first adjust the acls so that the new password and old passwords work against the ZK paths.
String digestedIdPass = DigestAuthenticationProvider.generateDigest("fabric:" + newPassword);
aclManager.registerAcl("/fabric", "auth::acdrw,world:anyone:,digest:" + digestedIdPass + ":acdrw");
aclManager.fixAcl(curator, "/fabric", true);
// Ok now lets push out a config update of what the password is.
curator.setData().forPath(ZkPath.CONFIG_ENSEMBLE_PASSWORD.getPath(), PasswordEncoder.encode(newPassword).getBytes(Charsets.UTF_8));
} finally {
curator.close();
}
// Refresh the default profile to cause all nodes to pickup the new password.
ProfileService profileService = fabricService.adapt(ProfileService.class);
for (String ver : profileService.getVersions()) {
Version version = profileService.getVersion(ver);
if (version != null) {
Profile profile = version.getProfile("default");
if (profile != null) {
Profiles.refreshProfile(fabricService, profile);
}
}
}
System.out.println("");
System.out.println("Password updated. Please wait a little while for the new password to");
System.out.println("get delivered as a config update to all the fabric nodes. Once, the ");
System.out.println("nodes all updated (nodes must be online), please run:");
System.out.println("");
System.out.println(" fabric:ensemble-password --commit ");
System.out.println("");
}
} else {
// Now lets connect with the new password and reset the ACLs so that the old password
// does not work anymore.
CuratorACLManager aclManager = new CuratorACLManager();
CuratorFramework curator = CuratorFrameworkFactory.builder().connectString(fabricService.getZookeeperUrl()).retryPolicy(new RetryOneTime(500)).aclProvider(aclManager).authorization("digest", ("fabric:" + fabricService.getZookeeperPassword()).getBytes()).sessionTimeoutMs(30000).build();
curator.start();
try {
aclManager.fixAcl(curator, "/fabric", true);
System.out.println("Only the current password is allowed access to fabric now.");
} finally {
curator.close();
}
}
return null;
}
use of io.fabric8.api.FabricService in project fabric8 by jboss-fuse.
the class EncryptedPropertyResolver method initialize.
/**
* When {@link FabricService} becomes available, we can initialize this {@link PlaceholderResolver}
* @param fabricService
*/
public void initialize(FabricService fabricService) {
this.fabricService = fabricService;
encryptor = getEncryptor(fabricService);
if (bundleContext != null) {
seRegistration = bundleContext.registerService(PBEStringEncryptor.class, encryptor, null);
BundleContext context = FrameworkUtil.getBundle(PersistenceManager.class).getBundleContext();
encryptingPersistenceManager = new EncryptingPersistenceManager(context, context.getProperty(ConfigurationManager.CM_CONFIG_DIR), encryptor);
originalPersistenceManager = inject(configAdmin, encryptingPersistenceManager);
passwordNodeCache = new NodeCacheExtended(fabricService.adapt(CuratorFramework.class), AUTHENTICATION_CRYPT_PASSWORD.getPath());
passwordNodeCache.getListenable().addListener(this);
alogrithmNodeCache = new NodeCacheExtended(fabricService.adapt(CuratorFramework.class), AUTHENTICATION_CRYPT_ALGORITHM.getPath());
alogrithmNodeCache.getListenable().addListener(this);
try {
passwordNodeCache.start();
alogrithmNodeCache.start();
} catch (Exception e) {
throw new FabricException(e);
}
}
}
use of io.fabric8.api.FabricService in project fabric8 by jboss-fuse.
the class ContainerImplTest method testRemoveMissingProfile.
// We should be able to remove a profile that doesn't exist from a container.
// A missing profile may be added to a container during startup (not possible to validate) or after an upgrade / rollback operation.
@Test
@Ignore("[FABRIC-1110] Mocked test makes invalid assumption on the implementation")
public void testRemoveMissingProfile() throws Exception {
String v = "1.0";
String profile1Id = "feature-camel";
String profile2Id = "feature-cxf";
String missing = "missing";
// new VersionImpl(v, fabricService);
Version version = null;
List<String> profiles = Arrays.asList(profile1Id, profile2Id, missing);
List<String> profilesToSet = Arrays.asList(profile1Id, profile2Id);
expect(profileService.getRequiredVersion(eq(v))).andReturn(version).anyTimes();
expect(dataStore.getContainerVersion(eq(CONTAINER_ID))).andReturn(v).anyTimes();
expect(dataStore.getContainerProfiles(eq(CONTAINER_ID))).andReturn(profiles).anyTimes();
expect(profileRegistry.hasProfile(v, profile1Id)).andReturn(true).anyTimes();
expect(profileRegistry.hasProfile(v, profile2Id)).andReturn(true).anyTimes();
expect(profileRegistry.hasProfile(v, missing)).andReturn(false).anyTimes();
// expect(profileRegistry.getProfileAttributes(eq(v), EasyMock.<String>anyObject())).andReturn(Maps.<String, String>newHashMap()).anyTimes();
dataStore.setContainerProfiles(eq(CONTAINER_ID), eq(profilesToSet));
expectLastCall().once();
replay(fabricService);
replay(dataStore);
container.removeProfiles(missing);
verify(fabricService);
verify(dataStore);
}
use of io.fabric8.api.FabricService in project fabric8 by jboss-fuse.
the class ContainerImplTest method testGetMultipleProfiles.
@Test
@Ignore("[FABRIC-1110] Mocked test makes invalid assumption on the implementation")
public void testGetMultipleProfiles() throws Exception {
String v = "1.0";
String profile1Id = "feature-camel";
String profile2Id = "feature-cxf";
// new VersionImpl(v, fabricService);
Version version = null;
List<String> profiles = Arrays.asList(profile1Id, profile2Id);
expect(profileService.getRequiredVersion(eq(v))).andReturn(version).anyTimes();
expect(dataStore.getContainerVersion(eq(CONTAINER_ID))).andReturn(v).anyTimes();
expect(dataStore.getContainerProfiles(eq(CONTAINER_ID))).andReturn(profiles).anyTimes();
expect(profileRegistry.hasProfile(v, profile1Id)).andReturn(true).anyTimes();
expect(profileRegistry.hasProfile(v, profile2Id)).andReturn(true).anyTimes();
replay(fabricService);
replay(dataStore);
Profile[] p = container.getProfiles();
assertNotNull(p);
assertEquals(2, p.length);
assertEquals(profile1Id, p[0].getId());
assertEquals(profile2Id, p[1].getId());
verify(fabricService);
verify(dataStore);
}
use of io.fabric8.api.FabricService in project fabric8 by jboss-fuse.
the class ContainerImplTest method setUp.
@Before
public void setUp() {
fabricService = createMock(FabricService.class);
dataStore = createMock(DataStore.class);
expect(fabricService.adapt(DataStore.class)).andReturn(dataStore).anyTimes();
container = new ContainerImpl(null, CONTAINER_ID, fabricService);
}
Aggregations