Search in sources :

Example 1 with GitContext

use of io.fabric8.api.GitContext in project fabric8 by jboss-fuse.

the class DummyBatchingProgressMonitor method gitOperation.

@Override
public <T> T gitOperation(GitContext context, GitOperation<T> gitop, PersonIdent personIdent) {
    IllegalArgumentAssertion.assertNotNull(gitop, "gitop");
    IllegalArgumentAssertion.assertNotNull(context, "context");
    LockHandle writeLock = aquireWriteLock();
    try {
        assertValid();
        LOGGER.debug("External call to execute a git operation: " + gitop);
        return executeInternal(context, personIdent, gitop);
    } finally {
        writeLock.unlock();
    }
}
Also used : LockHandle(io.fabric8.api.LockHandle)

Example 2 with GitContext

use of io.fabric8.api.GitContext 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);
    }
}
Also used : Path(java.nio.file.Path) ZkPath(io.fabric8.zookeeper.ZkPath) FileVisitResult(java.nio.file.FileVisitResult) IOException(java.io.IOException) File(java.io.File) LockFile(org.eclipse.jgit.internal.storage.file.LockFile) BasicFileAttributes(java.nio.file.attribute.BasicFileAttributes)

Example 3 with GitContext

use of io.fabric8.api.GitContext 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();
    }
}
Also used : LockHandle(io.fabric8.api.LockHandle) Git(org.eclipse.jgit.api.Git) GitVersion(io.fabric8.api.commands.GitVersion) GitVersions(io.fabric8.api.commands.GitVersions) GitContext(io.fabric8.api.GitContext)

Example 4 with GitContext

use of io.fabric8.api.GitContext 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();
    }
}
Also used : LockHandle(io.fabric8.api.LockHandle) Git(org.eclipse.jgit.api.Git) GitContext(io.fabric8.api.GitContext) GitVersion(io.fabric8.api.commands.GitVersion) Version(io.fabric8.api.Version)

Example 5 with GitContext

use of io.fabric8.api.GitContext 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();
    }
}
Also used : LockHandle(io.fabric8.api.LockHandle) Git(org.eclipse.jgit.api.Git) GitContext(io.fabric8.api.GitContext)

Aggregations

GitContext (io.fabric8.api.GitContext)41 Git (org.eclipse.jgit.api.Git)22 DefaultPullPushPolicy (io.fabric8.git.internal.DefaultPullPushPolicy)18 Test (org.junit.Test)18 LockHandle (io.fabric8.api.LockHandle)15 ArrayList (java.util.ArrayList)13 File (java.io.File)12 Ref (org.eclipse.jgit.lib.Ref)11 IOException (java.io.IOException)9 GitAPIException (org.eclipse.jgit.api.errors.GitAPIException)8 PushResult (org.eclipse.jgit.transport.PushResult)8 PersonIdent (org.eclipse.jgit.lib.PersonIdent)7 FabricException (io.fabric8.api.FabricException)5 Profile (io.fabric8.api.Profile)4 RevCommit (org.eclipse.jgit.revwalk.RevCommit)3 GitVersion (io.fabric8.api.commands.GitVersion)2 GitDataStore (io.fabric8.git.GitDataStore)2 GitService (io.fabric8.git.GitService)2 PushPolicyResult (io.fabric8.git.PullPushPolicy.PushPolicyResult)2 GitOperation (io.fabric8.git.internal.GitOperation)2