public void AddVolume(GlusterVolume model) { var volume = _serviceModel.Volumes; if (volume.Any(_ => _.Name == model.Name)) { return; } volume.ToList().Add(model); _serviceModel.Volumes = volume; Save(_serviceModel); }
private static void SetVolume(GlusterVolume volumeInfo, List <GlusterNode> nodes) { Directory.CreateDirectory(volumeInfo.MountPoint); var replicaNodes = string.Join(" ", nodes.Select(_ => $"{_.Hostname}:{volumeInfo.Brick}")).TrimEnd(); ConsoleLogger.Log($"[gluster] create {volumeInfo.Name}"); Bash.Execute($"gluster volume create {volumeInfo.Name} replica {nodes.Count} transport tcp {replicaNodes} force", false); Bash.Execute($"gluster volume start {volumeInfo.Name}", false); foreach (var node in nodes) { ConsoleLogger.Log($"[gluster] mount {volumeInfo.Name} {volumeInfo.MountPoint}"); ConsoleLogger.Log($"mount -t glusterfs {node.Hostname}:{volumeInfo.Name} {volumeInfo.MountPoint}"); Bash.Execute($"mount -t glusterfs {node.Hostname}:{volumeInfo.Name} {volumeInfo.MountPoint}", false); } }
public AntdGlusterModule() { Get["/gluster"] = x => { var glusterConfiguration = new GlusterConfiguration(); var glusterIsActive = glusterConfiguration.IsActive(); var model = new PageGlusterModel { GlusterIsActive = glusterIsActive, Nodes = glusterConfiguration.Get()?.Nodes, Volumes = glusterConfiguration.Get()?.Volumes }; return(JsonConvert.SerializeObject(model)); }; Post["/gluster/set"] = x => { var glusterConfiguration = new GlusterConfiguration(); glusterConfiguration.Set(); return(HttpStatusCode.OK); }; Post["/gluster/restart"] = x => { var glusterConfiguration = new GlusterConfiguration(); glusterConfiguration.Start(); return(HttpStatusCode.OK); }; Post["/gluster/stop"] = x => { var glusterConfiguration = new GlusterConfiguration(); glusterConfiguration.Stop(); return(HttpStatusCode.OK); }; Post["/gluster/enable"] = x => { var glusterConfiguration = new GlusterConfiguration(); glusterConfiguration.Enable(); glusterConfiguration.Start(); return(HttpStatusCode.OK); }; Post["/gluster/disable"] = x => { var glusterConfiguration = new GlusterConfiguration(); glusterConfiguration.Disable(); glusterConfiguration.Stop(); return(HttpStatusCode.OK); }; Post["/gluster/options"] = x => { string nodes = Request.Form.GlusterNode; var nodelist = nodes.Split(new[] { "," }, StringSplitOptions.None).ToList(); string volumeNames = Request.Form.GlusterVolumeName; string volumeBrick = Request.Form.GlusterVolumeBrick; string volumeMountPoint = Request.Form.GlusterVolumeMountPoint; var volumeNamesList = volumeNames.Split(new[] { "," }, StringSplitOptions.None); var volumeBrickList = volumeBrick.Split(new[] { "," }, StringSplitOptions.None); var volumeMountPointList = volumeMountPoint.Split(new[] { "," }, StringSplitOptions.None); var volumelist = new List <GlusterVolume>(); for (var i = 0; i < 20; i++) { if (volumeNamesList.Length < i - 1 || volumeBrickList.Length < i - 1 || volumeMountPointList.Length < i - 1) { continue; } try { var vol = new GlusterVolume { Name = volumeNamesList[i], Brick = volumeBrickList[i], MountPoint = volumeMountPointList[i], }; volumelist.Add(vol); } catch (Exception) { continue; } } var config = new GlusterConfigurationModel { Nodes = nodelist.ToArray(), Volumes = volumelist.ToArray() }; var glusterConfiguration = new GlusterConfiguration(); glusterConfiguration.Save(config); return(HttpStatusCode.OK); }; Post["/gluster/node"] = x => { string node = Request.Form.Node; if (string.IsNullOrWhiteSpace(node)) { return(HttpStatusCode.BadRequest); } var glusterConfiguration = new GlusterConfiguration(); glusterConfiguration.AddNode(node); return(HttpStatusCode.OK); }; Post["/gluster/node/del"] = x => { string node = Request.Form.Node; if (string.IsNullOrWhiteSpace(node)) { return(HttpStatusCode.BadRequest); } var glusterConfiguration = new GlusterConfiguration(); glusterConfiguration.RemoveNode(node); return(HttpStatusCode.OK); }; }