public INeo4jInstance Create(Neo4jVersion neo4jVersion, string id) { Helper.Download(neo4jVersion, neo4JManagerConfig.Neo4jBasePath); Helper.Extract(neo4jVersion, neo4JManagerConfig.Neo4jBasePath); var deploymentFolderName = Helper.GenerateValidFolderName(id); if (string.IsNullOrEmpty(deploymentFolderName)) { throw new ArgumentException("Error creating folder with given Id"); } var targetDeploymentPath = Path.Combine(neo4JManagerConfig.Neo4jBasePath, deploymentFolderName); Helper.SafeDelete(targetDeploymentPath); Helper.CopyDeployment(neo4jVersion, neo4JManagerConfig.Neo4jBasePath, targetDeploymentPath); var endpoints = new Neo4jEndpoints { HttpEndpoint = new Uri($"http://localhost:{neo4JManagerConfig.StartHttpPort + Count}"), }; endpoints.BoltEndpoint = new Uri($"bolt://localhost:{neo4JManagerConfig.StartBoltPort + Count}"); var neo4jFolder = Directory.GetDirectories(targetDeploymentPath) .First(f => f.Contains(neo4jVersion.Version, StringComparison.OrdinalIgnoreCase)); var instance = neo4jInstanceFactory.Create(neo4jFolder, neo4jVersion, endpoints); Add(id, instance); return(instance); }
public string Create(Neo4jDeploymentRequest request) { var id = Guid.NewGuid().ToString(); Helper.Download(request.Version, appSettings.GetString(AppSettingsKeys.Neo4jBasePath)); Helper.Extract(request.Version, appSettings.GetString(AppSettingsKeys.Neo4jBasePath)); var targetDeploymentPath = GetDeploymentPath(id); Helper.SafeDelete(targetDeploymentPath); Helper.CopyDeployment(request.Version, appSettings.GetString(AppSettingsKeys.Neo4jBasePath), targetDeploymentPath); request.Neo4jFolder = Directory.GetDirectories(targetDeploymentPath) .First(f => f.Contains(request.Version.Version, StringComparison.OrdinalIgnoreCase)); lock (_object) { short offset = 0; while (true) { if (this.All(i => i.Value.Offset != offset)) { break; } offset++; } request.Offset = offset; request.Endpoints = new Neo4jEndpoints { HttpEndpoint = new Uri($"http://localhost:{appSettings.Get<long>(AppSettingsKeys.StartHttpPort) + offset}"), BoltEndpoint = new Uri($"bolt://localhost:{appSettings.Get<long>(AppSettingsKeys.StartBoltPort) + offset}"), }; var instance = neo4jInstanceFactory.Create(request); TryAdd(id, instance); return(id); } }