コード例 #1
0
        public static void Save(GlusterConfigurationModel model)
        {
            var text = JsonConvert.SerializeObject(model, Formatting.Indented);

            FileWithAcl.WriteAllText(CfgFile, text, "644", "root", "wheel");
            ConsoleLogger.Log("[gluster] configuration saved");
        }
コード例 #2
0
ファイル: GlusterConfiguration.cs プロジェクト: pk8est/Antd
        public void Save(GlusterConfigurationModel model)
        {
            var text = JsonConvert.SerializeObject(model, Formatting.Indented);

            if (File.Exists(_cfgFile))
            {
                File.Copy(_cfgFile, _cfgFileBackup, true);
            }
            File.WriteAllText(_cfgFile, text);
            ConsoleLogger.Log("[sync] configuration saved");
        }
コード例 #3
0
ファイル: GlusterConfiguration.cs プロジェクト: pk8est/Antd
 public GlusterConfiguration()
 {
     IoDir.CreateDirectory(Parameter.AntdCfgServices);
     if (!File.Exists(_cfgFile))
     {
         _serviceModel = new GlusterConfigurationModel();
     }
     else
     {
         try {
             var text = File.ReadAllText(_cfgFile);
             var obj  = JsonConvert.DeserializeObject <GlusterConfigurationModel>(text);
             _serviceModel = obj;
         }
         catch (Exception) {
             _serviceModel = new GlusterConfigurationModel();
         }
     }
 }
コード例 #4
0
        private static void SetHostnameFile(GlusterConfigurationModel conf)
        {
            var linesToAdd = new List <string>();

            foreach (var node in conf.Nodes)
            {
                linesToAdd.Add($"{node.Ip} {node.Hostname}.{Host.InternalDomainPrimary} {node.Hostname}");
            }
            const string file       = "/etc/hosts";
            var          hostsLines = File.ReadAllLines(file).ToList();

            foreach (var line in linesToAdd)
            {
                if (!hostsLines.Contains(line))
                {
                    hostsLines.Add(line);
                }
            }
            FileWithAcl.WriteAllLines(file, hostsLines, "644", "root", "wheel");
        }
コード例 #5
0
ファイル: AntdGlusterModule.cs プロジェクト: pk8est/Antd
        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);
            };
        }