@ThreadSafe public class GitDataStore extends AbstractDataStore<GitDataStore>
DataStore
which stores the profile configuration
versions in a branch per version and directory per profile.DataStore.ContainerAttribute
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
AGENT_METADATA_FILE |
static java.lang.String |
CONFIGS |
static java.lang.String |
CONFIGS_PROFILES |
static int |
GIT_COMMIT_SHORT_LENGTH |
static java.lang.String |
GIT_EXTERNAL_URL |
static java.lang.String |
GIT_GC_ON_LOAD |
static java.lang.String |
GIT_PULL_PERIOD |
static java.lang.String |
GIT_REMOTE_PASSWORD |
static java.lang.String |
GIT_REMOTE_URL |
static java.lang.String |
GIT_REMOTE_USER |
static java.lang.String |
PROFILE_FOLDER_SUFFIX |
static java.lang.String[] |
SUPPORTED_CONFIGURATION |
static java.lang.String |
TYPE |
static boolean |
useDirectoriesForProfiles
Should we convert a directory of profiles called "foo-bar" into a directory "foo/bar.profile" structure to use
the file system better, to better organise profiles into folders and make it easier to work with profiles in the wiki
|
JVM_OPTIONS_PATH, REQUIREMENTS_JSON_PATH
ATTRIBUTE_PREFIX, DATASTORE_TYPE_PROPERTY, DEFAULT_DATASTORE_TYPE
Constructor and Description |
---|
GitDataStore() |
Modifier and Type | Method and Description |
---|---|
protected void |
activateInternal() |
void |
bindGitService(GitService service) |
protected void |
checkoutVersion(org.eclipse.jgit.api.Git git,
java.lang.String version) |
java.lang.String |
convertProfileIdToDirectory(java.lang.String profileId)
Takes a profile ID of the form "foo-bar" and if we are using directory trees for profiles then
converts it to "foo/bar.profile"
|
protected void |
createOrCheckoutVersion(org.eclipse.jgit.api.Git git,
java.lang.String version) |
void |
createProfile(java.lang.String version,
java.lang.String profile) |
void |
createVersion(java.lang.String version) |
void |
createVersion(java.lang.String parentVersionId,
java.lang.String toVersion) |
protected void |
deactivateInternal() |
void |
deleteProfile(java.lang.String version,
java.lang.String profile) |
void |
deleteVersion(java.lang.String version) |
protected void |
doAddFiles(org.eclipse.jgit.api.Git git,
java.io.File... files) |
protected java.lang.String |
doCreateProfile(org.eclipse.jgit.api.Git git,
GitContext context,
java.lang.String profile,
java.lang.String version)
Creates the given profile directory in the currently checked out version branch
|
protected java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> |
doGetConfigurations(org.eclipse.jgit.api.Git git,
java.lang.String profile) |
protected java.util.Map<java.lang.String,byte[]> |
doGetFileConfigurations(org.eclipse.jgit.api.Git git,
java.lang.String profile) |
protected java.util.Map<java.lang.String,java.lang.String> |
doLoadConfiguration(java.io.File file) |
protected byte[] |
doLoadFileConfiguration(java.io.File file) |
protected void |
doPull(org.eclipse.jgit.api.Git git,
org.eclipse.jgit.transport.CredentialsProvider credentialsProvider,
boolean doDeleteBranches)
Performs a pull so the git repo is pretty much up to date before we start performing operations on it.
|
java.lang.Iterable<org.eclipse.jgit.transport.PushResult> |
doPush(org.eclipse.jgit.api.Git git,
GitContext gitContext)
Pushes any changes - assumed to be invoked within a gitOperation method!
|
protected java.lang.Iterable<org.eclipse.jgit.transport.PushResult> |
doPush(org.eclipse.jgit.api.Git git,
GitContext gitContext,
org.eclipse.jgit.transport.CredentialsProvider credentialsProvider)
Pushes any committed changes to the remote repo
|
protected void |
doRecursiveDeleteAndRemove(org.eclipse.jgit.api.Git git,
java.io.File file) |
protected void |
doSetConfiguration(org.eclipse.jgit.api.Git git,
java.lang.String profile,
java.lang.String pid,
java.util.Map<java.lang.String,java.lang.String> configuration) |
protected void |
doSetConfigurations(org.eclipse.jgit.api.Git git,
java.io.File profileDirectory,
java.lang.String profile,
java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> configurations) |
protected void |
doSetFileConfiguration(org.eclipse.jgit.api.Git git,
java.lang.String profile,
java.lang.String fileName,
byte[] configuration) |
protected void |
doSetFileConfigurations(org.eclipse.jgit.api.Git git,
java.io.File profileDirectory,
java.lang.String profile,
java.util.Map<java.lang.String,byte[]> configurations) |
protected java.util.List<java.lang.String> |
forceGetVersions() |
java.lang.String |
getClusterId() |
java.util.Map<java.lang.String,java.lang.String> |
getConfiguration(java.lang.String version,
java.lang.String profile,
java.lang.String pid) |
protected org.eclipse.jgit.transport.CredentialsProvider |
getCredentialsProvider() |
java.lang.String |
getDefaultJvmOptions() |
java.util.List<java.lang.String> |
getEnsembleContainers() |
byte[] |
getFileConfiguration(java.lang.String version,
java.lang.String profile,
java.lang.String fileName) |
java.util.Map<java.lang.String,byte[]> |
getFileConfigurations(java.lang.String version,
java.lang.String profile) |
protected java.lang.String |
getFilePattern(java.io.File rootDir,
java.io.File file) |
org.eclipse.jgit.api.Git |
getGit() |
java.lang.String |
getLastModified(java.lang.String version,
java.lang.String profile) |
protected java.io.File |
getPidFile(java.io.File profileDirectory,
java.lang.String pid) |
protected java.lang.String |
getPidFromFileName(java.lang.String relativePath) |
java.lang.String |
getProfile(java.lang.String version,
java.lang.String profile,
boolean create) |
java.io.File |
getProfileDirectory(org.eclipse.jgit.api.Git git,
java.lang.String profile) |
java.util.List<java.lang.String> |
getProfiles(java.lang.String version) |
protected java.io.File |
getProfilesDirectory(org.eclipse.jgit.api.Git git) |
java.lang.String |
getRemote() |
FabricRequirements |
getRequirements() |
java.lang.String |
getType() |
java.util.Map<java.lang.String,java.lang.String> |
getVersionAttributes(java.lang.String version) |
java.util.List<java.lang.String> |
getVersions() |
<T> T |
gitOperation(GitOperation<T> operation)
Performs a set of operations on the git repository & avoids concurrency issues
|
<T> T |
gitOperation(GitOperation<T> operation,
boolean pullFirst) |
<T> T |
gitOperation(org.eclipse.jgit.lib.PersonIdent personIdent,
GitOperation<T> operation,
boolean pullFirst) |
<T> T |
gitOperation(org.eclipse.jgit.lib.PersonIdent personIdent,
GitOperation<T> operation,
boolean pullFirst,
GitContext context) |
boolean |
hasVersion(java.lang.String name) |
void |
importFromFileSystem(java.io.File from,
java.lang.String destinationPath,
java.lang.String version,
boolean isProfileDir) |
void |
importFromFileSystem(java.lang.String from) |
protected boolean |
isProfileDirectory(java.io.File profileDir) |
java.util.Collection<java.lang.String> |
listFiles(java.lang.String version,
java.lang.Iterable<java.lang.String> profiles,
java.lang.String path) |
protected void |
pull() |
protected void |
push() |
protected void |
recursiveAddLegacyProfileDirectoryFiles(org.eclipse.jgit.api.Git git,
java.io.File from,
java.io.File toDir,
java.lang.String path)
Recursively copies the profiles in a single flat directory into the new
directory layout; changing "foo-bar" directory into "foo/bar.profile" along the way
|
protected void |
recursiveCopyAndAdd(org.eclipse.jgit.api.Git git,
java.io.File from,
java.io.File toDir,
java.lang.String path,
boolean useToDirAsDestination)
Recursively copies the given files from the given directory to the specified directory
adding them to the git repo along the way
|
void |
setConfiguration(java.lang.String version,
java.lang.String profile,
java.lang.String pid,
java.util.Map<java.lang.String,java.lang.String> configuration) |
void |
setConfigurations(java.lang.String version,
java.lang.String profile,
java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> configurations) |
void |
setDefaultJvmOptions(java.lang.String jvmOptions) |
void |
setFileConfiguration(java.lang.String version,
java.lang.String profile,
java.lang.String fileName,
byte[] configuration) |
void |
setFileConfigurations(java.lang.String version,
java.lang.String profile,
java.util.Map<java.lang.String,byte[]> configurations) |
void |
setRemote(java.lang.String remote)
Sets the name of the remote repository
|
void |
setRequirements(FabricRequirements requirements) |
void |
setVersionAttribute(java.lang.String version,
java.lang.String key,
java.lang.String value) |
bindCurator, bindRegistrationHandler, bindRuntimeProperties, childEvent, clearCaches, createContainerConfig, createContainerConfig, deleteContainer, doRunCallbacks, fireChangeNotifications, getConfigurationFileNames, getConfigurations, getContainerAttribute, getContainerMetadata, getContainerParent, getContainerProfiles, getContainers, getContainerVersion, getCurator, getDataStoreProperties, getDefaultVersion, getProfileAttributes, getRuntimeProperties, getTreeCache, hasContainer, hasProfile, isContainerAlive, protectedActivate, protectedDeactivate, runCallbacks, setContainerAttribute, setContainerMetadata, setContainerProfiles, setContainerVersion, setDefaultVersion, setProfileAttribute, trackConfiguration, unbindCurator, unbindRegistrationHandler, unbindRuntimeProperties, untrackConfiguration
activateComponent, assertValid, deactivateComponent, isValid
public static final java.lang.String GIT_PULL_PERIOD
public static final java.lang.String GIT_REMOTE_URL
public static final java.lang.String GIT_EXTERNAL_URL
public static final java.lang.String GIT_REMOTE_USER
public static final java.lang.String GIT_GC_ON_LOAD
public static final java.lang.String GIT_REMOTE_PASSWORD
public static final java.lang.String[] SUPPORTED_CONFIGURATION
public static final java.lang.String CONFIGS
public static final java.lang.String CONFIGS_PROFILES
public static final java.lang.String AGENT_METADATA_FILE
public static final java.lang.String TYPE
public static final int GIT_COMMIT_SHORT_LENGTH
public static final boolean useDirectoriesForProfiles
public static final java.lang.String PROFILE_FOLDER_SUFFIX
protected void activateInternal()
activateInternal
in class AbstractDataStore<GitDataStore>
protected void deactivateInternal()
deactivateInternal
in class AbstractDataStore<GitDataStore>
public java.lang.String getRemote()
public void setRemote(java.lang.String remote)
public void importFromFileSystem(java.lang.String from)
importFromFileSystem
in interface DataStore
importFromFileSystem
in class AbstractDataStore<GitDataStore>
public void importFromFileSystem(java.io.File from, java.lang.String destinationPath, java.lang.String version, boolean isProfileDir)
public void createVersion(java.lang.String version)
public void createVersion(java.lang.String parentVersionId, java.lang.String toVersion)
public void deleteVersion(java.lang.String version)
public java.util.List<java.lang.String> getVersions()
protected java.util.List<java.lang.String> forceGetVersions()
public boolean hasVersion(java.lang.String name)
public java.util.List<java.lang.String> getProfiles(java.lang.String version)
protected java.io.File getProfilesDirectory(org.eclipse.jgit.api.Git git)
public java.io.File getProfileDirectory(org.eclipse.jgit.api.Git git, java.lang.String profile)
public java.lang.String getProfile(java.lang.String version, java.lang.String profile, boolean create)
public void createProfile(java.lang.String version, java.lang.String profile)
public void deleteProfile(java.lang.String version, java.lang.String profile)
public java.util.Map<java.lang.String,java.lang.String> getVersionAttributes(java.lang.String version)
public void setVersionAttribute(java.lang.String version, java.lang.String key, java.lang.String value)
public java.lang.String getLastModified(java.lang.String version, java.lang.String profile)
public java.util.Collection<java.lang.String> listFiles(java.lang.String version, java.lang.Iterable<java.lang.String> profiles, java.lang.String path)
public java.util.Map<java.lang.String,byte[]> getFileConfigurations(java.lang.String version, java.lang.String profile)
protected java.util.Map<java.lang.String,byte[]> doGetFileConfigurations(org.eclipse.jgit.api.Git git, java.lang.String profile) throws java.io.IOException
java.io.IOException
protected java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> doGetConfigurations(org.eclipse.jgit.api.Git git, java.lang.String profile) throws java.io.IOException
java.io.IOException
public byte[] getFileConfiguration(java.lang.String version, java.lang.String profile, java.lang.String fileName)
public void setFileConfigurations(java.lang.String version, java.lang.String profile, java.util.Map<java.lang.String,byte[]> configurations)
protected void doSetFileConfigurations(org.eclipse.jgit.api.Git git, java.io.File profileDirectory, java.lang.String profile, java.util.Map<java.lang.String,byte[]> configurations) throws java.io.IOException, org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
protected void doSetConfigurations(org.eclipse.jgit.api.Git git, java.io.File profileDirectory, java.lang.String profile, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> configurations) throws java.io.IOException, org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
public void setFileConfiguration(java.lang.String version, java.lang.String profile, java.lang.String fileName, byte[] configuration)
protected void doSetFileConfiguration(org.eclipse.jgit.api.Git git, java.lang.String profile, java.lang.String fileName, byte[] configuration) throws java.io.IOException, org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
protected void doSetConfiguration(org.eclipse.jgit.api.Git git, java.lang.String profile, java.lang.String pid, java.util.Map<java.lang.String,java.lang.String> configuration) throws java.io.IOException, org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
protected java.io.File getPidFile(java.io.File profileDirectory, java.lang.String pid)
protected java.lang.String getPidFromFileName(java.lang.String relativePath) throws java.io.IOException
java.io.IOException
public java.util.Map<java.lang.String,java.lang.String> getConfiguration(java.lang.String version, java.lang.String profile, java.lang.String pid)
public void setConfigurations(java.lang.String version, java.lang.String profile, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> configurations)
public void setConfiguration(java.lang.String version, java.lang.String profile, java.lang.String pid, java.util.Map<java.lang.String,java.lang.String> configuration)
public java.lang.String getDefaultJvmOptions()
public void setDefaultJvmOptions(java.lang.String jvmOptions)
public FabricRequirements getRequirements()
public void setRequirements(FabricRequirements requirements) throws java.io.IOException
java.io.IOException
public java.lang.String getClusterId()
public java.util.List<java.lang.String> getEnsembleContainers()
public org.eclipse.jgit.api.Git getGit() throws java.io.IOException
java.io.IOException
public <T> T gitOperation(GitOperation<T> operation)
public <T> T gitOperation(GitOperation<T> operation, boolean pullFirst)
public <T> T gitOperation(org.eclipse.jgit.lib.PersonIdent personIdent, GitOperation<T> operation, boolean pullFirst)
public <T> T gitOperation(org.eclipse.jgit.lib.PersonIdent personIdent, GitOperation<T> operation, boolean pullFirst, GitContext context)
public java.lang.Iterable<org.eclipse.jgit.transport.PushResult> doPush(org.eclipse.jgit.api.Git git, GitContext gitContext) throws java.lang.Exception
java.lang.Exception
protected java.lang.Iterable<org.eclipse.jgit.transport.PushResult> doPush(org.eclipse.jgit.api.Git git, GitContext gitContext, org.eclipse.jgit.transport.CredentialsProvider credentialsProvider) throws java.lang.Exception
java.lang.Exception
protected org.eclipse.jgit.transport.CredentialsProvider getCredentialsProvider()
protected void doPull(org.eclipse.jgit.api.Git git, org.eclipse.jgit.transport.CredentialsProvider credentialsProvider, boolean doDeleteBranches)
git
- The Git
instance to use.credentialsProvider
- The CredentialsProvider
to use.doDeleteBranches
- Flag that determines wether local branches that don't exist in remote should get deleted.protected java.lang.String doCreateProfile(org.eclipse.jgit.api.Git git, GitContext context, java.lang.String profile, java.lang.String version) throws java.io.IOException, org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
protected void recursiveCopyAndAdd(org.eclipse.jgit.api.Git git, java.io.File from, java.io.File toDir, java.lang.String path, boolean useToDirAsDestination) throws org.eclipse.jgit.api.errors.GitAPIException, java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
protected void recursiveAddLegacyProfileDirectoryFiles(org.eclipse.jgit.api.Git git, java.io.File from, java.io.File toDir, java.lang.String path) throws org.eclipse.jgit.api.errors.GitAPIException, java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
protected boolean isProfileDirectory(java.io.File profileDir)
public java.lang.String convertProfileIdToDirectory(java.lang.String profileId)
protected void pull()
protected void push()
protected void createOrCheckoutVersion(org.eclipse.jgit.api.Git git, java.lang.String version) throws org.eclipse.jgit.api.errors.GitAPIException
org.eclipse.jgit.api.errors.GitAPIException
protected void checkoutVersion(org.eclipse.jgit.api.Git git, java.lang.String version) throws org.eclipse.jgit.api.errors.GitAPIException
org.eclipse.jgit.api.errors.GitAPIException
protected void doAddFiles(org.eclipse.jgit.api.Git git, java.io.File... files) throws org.eclipse.jgit.api.errors.GitAPIException, java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
protected void doRecursiveDeleteAndRemove(org.eclipse.jgit.api.Git git, java.io.File file) throws java.io.IOException, org.eclipse.jgit.api.errors.GitAPIException
java.io.IOException
org.eclipse.jgit.api.errors.GitAPIException
protected byte[] doLoadFileConfiguration(java.io.File file) throws java.io.IOException
java.io.IOException
protected java.util.Map<java.lang.String,java.lang.String> doLoadConfiguration(java.io.File file) throws java.io.IOException
java.io.IOException
protected java.lang.String getFilePattern(java.io.File rootDir, java.io.File file) throws java.io.IOException
java.io.IOException
public java.lang.String getType()
public void bindGitService(GitService service)
Copyright © 2016 Red Hat. All Rights Reserved.