use of io.fabric8.kubernetes.api.model.Context in project fabric8 by jboss-fuse.
the class DummyBatchingProgressMonitor method setFileConfigurations.
private void setFileConfigurations(GitContext context, final String versionId, final String profileId, final Map<String, byte[]> fileConfigurations) throws IOException, GitAPIException {
assertWriteLock();
// Delete and remove stale file configurations
File profileDir = GitHelpers.getProfileDirectory(getGit(), profileId);
final HashSet<File> filesToDelete = new HashSet<File>();
if (profileDir.exists()) {
final List<File> filesList = new ArrayList<File>();
java.nio.file.Files.walkFileTree(profileDir.toPath(), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {
if (!Constants.AGENT_PROPERTIES.equals(path.getFileName().toString())) {
filesToDelete.add(path.toFile());
}
return super.visitFile(path, attrs);
}
});
}
for (Map.Entry<String, byte[]> entry : fileConfigurations.entrySet()) {
String fileName = entry.getKey();
byte[] newCfg = entry.getValue();
setFileConfiguration(getGit(), profileId, fileName, newCfg);
filesToDelete.remove(new File(profileDir, fileName));
}
for (File file : filesToDelete) {
recursiveDeleteAndRemove(getGit(), file);
}
if (!fileConfigurations.isEmpty() || !filesToDelete.isEmpty()) {
context.commitMessage("Update configurations for profile: " + profileId);
}
}
use of io.fabric8.kubernetes.api.model.Context in project fabric8 by jboss-fuse.
the class DummyBatchingProgressMonitor method gitVersions.
@Override
public GitVersions gitVersions() {
LockHandle readLock = aquireReadLock();
try {
assertValid();
GitOperation<GitVersions> gitop = new GitOperation<GitVersions>() {
public GitVersions call(Git git, GitContext context) throws Exception {
List<GitVersion> localVersions = GitHelpers.gitVersions(git);
return new GitVersions(localVersions);
}
};
return executeInternal(newGitReadContext(), null, gitop);
} finally {
readLock.unlock();
}
}
use of io.fabric8.kubernetes.api.model.Context in project fabric8 by jboss-fuse.
the class DummyBatchingProgressMonitor method createProfile.
@Override
public String createProfile(GitContext context, final Profile profile) {
IllegalStateAssertion.assertNotNull(profile, "profile");
LockHandle writeLock = aquireWriteLock();
try {
assertValid();
GitOperation<String> gitop = new GitOperation<String>() {
public String call(Git git, GitContext context) throws Exception {
String versionId = profile.getVersion();
String profileId = profile.getId();
Version version = getRequiredVersion(versionId);
IllegalStateAssertion.assertFalse(version.hasProfile(profileId), "Profile already exists: " + profileId);
checkoutRequiredProfileBranch(git, context, versionId, profileId);
return createOrUpdateProfile(context, null, profile, new HashSet<String>());
}
};
return executeInternal(context, null, gitop);
} finally {
writeLock.unlock();
}
}
use of io.fabric8.kubernetes.api.model.Context in project fabric8 by jboss-fuse.
the class DummyBatchingProgressMonitor method hasVersion.
@Override
public boolean hasVersion(GitContext context, final String versionId) {
IllegalStateAssertion.assertNotNull(versionId, "versionId");
LockHandle readLock = aquireReadLock();
try {
assertValid();
GitOperation<Boolean> gitop = new GitOperation<Boolean>() {
public Boolean call(Git git, GitContext context) throws Exception {
return versions.contains(versionId);
}
};
return executeInternal(context, null, gitop);
} finally {
readLock.unlock();
}
}
use of io.fabric8.kubernetes.api.model.Context in project fabric8 by jboss-fuse.
the class DummyBatchingProgressMonitor method doPullInternal.
private PullPolicyResult doPullInternal(GitContext context, CredentialsProvider credentialsProvider, boolean allowVersionDelete, boolean allowPush, int forcedTimeoutInSeconds) {
PullPolicyResult pullResult = pullPushPolicy.doPull(context, credentialsProvider, allowVersionDelete, allowPush, forcedTimeoutInSeconds);
if (pullResult.getLastException() == null) {
Map<String, PullPushPolicy.BranchChange> updatedVersions = pullResult.localUpdateVersions();
if (!updatedVersions.isEmpty()) {
if (updatedVersions.containsKey(GitHelpers.MASTER_BRANCH)) {
versionCache.invalidateAll();
} else {
for (String version : updatedVersions.keySet()) {
versionCache.invalidate(version);
}
}
notificationRequired = true;
}
Set<String> pullVersions = pullResult.getVersions();
if (!pullVersions.isEmpty() && !pullVersions.equals(versions)) {
versions.clear();
for (String v : pullVersions) {
if (!v.startsWith("patches-") && !v.startsWith("patch-") && !v.equals(HISTORY_BRANCH) && !v.equals(ADMIN_HISTORY_BRANCH)) {
versions.add(v);
}
}
}
if (pullResult.remoteUpdateRequired()) {
doPushInternal(context, credentialsProvider);
}
}
return pullResult;
}
Aggregations