private void OnCreateContainer(object sender, ContainerEventArgs e) { foreach (var workSpaceType in e.Type.WorkSpaceTypeWithService(Name)) { var instanceName = e.Container.UniqueInstanceName(workSpaceType); var repository = SVNRepositoryManager.Create(_repoPath, instanceName); if (repository == null) { Logger.Log(String.Format("Service {0} -> Create folder \"{1}\" fail", Name, _repoPath)); continue; } if (!repository.Initialize()) { Logger.Log(String.Format("Service {0} -> Initialize instance \"{1}\" fail", Name, _repoPath)); continue; } var instance = _svnAuthorization.CreateInstance(instanceName); foreach (var role in e.Type.Bindings.SelectMany(binding => binding.Roles)) { var groupName = e.Container.UniqueGroupName(role.RoleTypeName); _svnAuthorization.CreateGroup(groupName); foreach (var rule in role.Rules) { var permissions = rule.Permissions.Where(p => p.ServiceName == Name).Select(p => p.Name); foreach (var permission in permissions) instance.AddGroupPermission(groupName, permission); } } } _svnAuthorization.Save(); }
private void Deletecontainer(object sender, ContainerEventArgs e) { foreach (var repositoryName in e.Type.WorkSpaceTypeWithService(Name).Select(workSpaceType => e.Container.UniqueInstanceName(workSpaceType))) { FileSystem.DeleteRepository(repositoryName); Authorization.DeleteRepository(repositoryName); } }
private void OnCreateContainer(object sender, ContainerEventArgs e) { foreach (var workSpaceType in e.Type.WorkSpaceTypeWithService(Name)) { var contextType = workSpaceType; var envName = e.Container.UniqueInstanceName(workSpaceType); var tracEnvironment = TracEnvironmentManager.Create(_envPath, envName); if (tracEnvironment == null) { Logger.Log(String.Format("Service {0} -> Create folder \"{1}\" fail", Name, envName)); continue; } if (!tracEnvironment.Initialize(workSpaceType.Services.Where(s => s.Name != Name).Select( s => new KeyValuePair<string, string>(s.Name, ServiceFactory.InstancePath(s.Name, e.Container, contextType)) ))) { Logger.Log(String.Format("Service {0} -> Initialize instance \"{1}\" fail", Name, envName)); continue; } var tracPermissions = new TracPermissionManager(tracEnvironment.EnvironmentPath); tracPermissions.RemoveAll(); foreach (var role in e.Type.Bindings.SelectMany(binding => binding.Roles)) { var groupName = e.Container.UniqueGroupName(role.RoleTypeName); foreach (var rule in role.Rules) { var permissions = rule.Permissions.Where(p => p.ServiceName == Name).Select(p => p.Name); foreach (var permission in permissions) tracPermissions.Add(groupName, permission); } } } }
private void OnDeleteContainer(object sender, ContainerEventArgs e) { foreach (var workSpaceType in e.Type.WorkSpaceTypeWithService(Name)) { var envName = e.Container.UniqueInstanceName(workSpaceType); if (!TracEnvironmentManager.Delete(_envPath, envName)) { Logger.Log(String.Format("Service {0} -> Delete instance \"{1}\" fail", Name, envName)); continue; } } }
private void InvokeOnDeleteContainer(Container container, ContainerType containerType) { var eventArgs = new ContainerEventArgs(container, containerType); if (_onDeleteContainer != null) try { _onDeleteContainer(this, eventArgs); }catch(Exception e) { DataBaseManager.Logger.Log(String.Format("InvokeOnDeleteContainer fail - {0}", e.Message)); } }
private void OnDeleteContainer(object sender, ContainerEventArgs e) { foreach (var workSpaceType in e.Type.WorkSpaceTypeWithService(Name)) { var instanceName = e.Container.UniqueInstanceName(workSpaceType); SVNRepositoryManager.Delete(_repoPath, instanceName); _svnAuthorization.RemoveInstance(instanceName); foreach (var role in e.Type.Bindings.SelectMany(binding => binding.Roles)) _svnAuthorization.RemoveGroups(e.Container.UniqueGroupName(role.RoleTypeName)); } _svnAuthorization.Save(); }
// need to create a logger private void OnCreateContainer(object sender, ContainerEventArgs e) { if (!e.Services.ContainsKey(Name)) return; var workspacesType = e.Services[Name]; foreach (var workSpaceTypeView in workspacesType) { var pathRepo = Path.Combine(PathService, "repositories"); //TODO AuthorizationManager Create the name var repoName = String.Format("{0}{1}{2}", e.Strucuture, e.Container.Id, workSpaceTypeView.Name); var repository = SVNRepositoryManager.Create(pathRepo, repoName); if (repository == null) continue; //Servicelogger; if (!repository.Initialize()) continue; //Servicelogger; } }
private void InvokeOnCreateContainer(Container container) { var dicionay = new Dictionary<string, IEnumerable<WorkSpaceTypeView>>(); foreach (var service in _dbContext.Services) { var serviceContext = service; var wk = container.ContainerPrototype.WorkSpaceTypes.Where( w => w.Services.Contains(serviceContext) ).Select( w => w.Convert() ); if (wk.Any()) dicionay.Add(service.Name, wk.ToList()); } var eventArgs = new ContainerEventArgs() { Strucuture = container.ContainerPrototype.StructureId, Container = container.Convert(), Services = dicionay }; var handler = _onCreateContainer; if (handler != null) handler(this, eventArgs); }