public ReturnStatus Execute()
 {
     ReturnStatus returnStatus = new ReturnStatus();
     try
     {
         ApplicationContainer container = ApplicationContainer.GetFromUuid(GearUuid);
         Manifest cartridge = container.GetCartridge(CartName);
         if (cartridge != null)
         {
             returnStatus.Output = "true";
             returnStatus.ExitCode = 0;
         }
         else
         {
             returnStatus.Output = "false";
             returnStatus.ExitCode = 1;
         }
     }
     catch (Exception ex)
     {
         Logger.Error("Error running has-app-cartridge-action command: {0} - {1}", ex.Message, ex.StackTrace);
         returnStatus.Output = "false";
         returnStatus.ExitCode = 1;
     }
     return returnStatus;
 }
Example #2
0
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            try
            {
                ApplicationContainer container = ApplicationContainer.GetFromUuid(GearUuid);
                Manifest             cartridge = container.GetCartridge(CartName);
                if (cartridge != null)
                {
                    returnStatus.Output   = "true";
                    returnStatus.ExitCode = 0;
                }
                else
                {
                    returnStatus.Output   = "false";
                    returnStatus.ExitCode = 1;
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Error running has-app-cartridge-action command: {0} - {1}", ex.Message, ex.StackTrace);
                returnStatus.Output   = "false";
                returnStatus.ExitCode = 1;
            }
            return(returnStatus);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            try
            {
                NodeConfig config = new NodeConfig();

                string distrinctHome = Path.Combine(config.Get("GEAR_BASE_DIR"), ".settings");

                if (!Directory.Exists(distrinctHome))
                {
                    Directory.CreateDirectory(distrinctHome);
                }

                File.WriteAllText(Path.Combine(distrinctHome, "district.info"),
                                  string.Format("#Do not  modify manually!\nuuid='{0}'\nactive='{1}'\nfirst_uid={2}\nmax_uid={3}", Uuid, Active, FirstUid, MaxUid));

                //TODO handle profiling

                returnStatus.Output   = string.Format("created/updated district {0} with active = {1}, first_uid = {2}, max_uid = {3}", Uuid, Active, FirstUid, MaxUid);
                returnStatus.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error(ex.ToString());
                returnStatus.Output   = ex.ToString();
                returnStatus.ExitCode = 255;
            }
            return(returnStatus);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                      WithContainerName, WithNamespace, null, null, null, WithUid);

            try
            {
                string   output = string.Empty;
                string[] keys   = null;
                if (!string.IsNullOrEmpty(WithKeys))
                {
                    keys = WithKeys.Split(' ');
                }

                Dictionary <string, string> variables = container.UserVarList(keys);

                status.Output   = string.Format("{0}CLIENT_RESULT: {1}{0}", Environment.NewLine, JsonConvert.SerializeObject(variables));
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-user-var-list command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            try
            {
                NodeConfig config = new NodeConfig();

                string distrinctHome = Path.Combine(config.Get("GEAR_BASE_DIR"), ".settings");

                if (!Directory.Exists(distrinctHome))
                {
                    Directory.CreateDirectory(distrinctHome);
                }

                File.WriteAllText(Path.Combine(distrinctHome, "district.info"),
                    string.Format("#Do not  modify manually!\nuuid='{0}'\nactive='{1}'\nfirst_uid={2}\nmax_uid={3}", Uuid, Active, FirstUid, MaxUid));

                //TODO handle profiling

                returnStatus.Output = string.Format("created/updated district {0} with active = {1}, first_uid = {2}, max_uid = {3}", Uuid, Active, FirstUid, MaxUid);
                returnStatus.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error(ex.ToString());
                returnStatus.Output = ex.ToString();
                returnStatus.ExitCode = 255;
            }
            return returnStatus;
        }
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();
            try
            {
                NodeConfig config = new NodeConfig();

                string distrinctInfoPath = Path.Combine(config.Get("GEAR_BASE_DIR"), ".settings", "district.info");

                string districtInfo = File.ReadAllText(distrinctInfoPath);

                districtInfo = Regex.Replace(districtInfo, "first_uid=\\d+",
                    string.Format("first_uid={0}", FirstUid), RegexOptions.Multiline);

                districtInfo = Regex.Replace(districtInfo, "max_uid=\\d+",
                    string.Format("max_uid={0}", MaxUid), RegexOptions.Multiline);

                File.WriteAllText(distrinctInfoPath, districtInfo);

                //TODO handle profiling

                returnStatus.Output = string.Format("updated district uid limits with first_uid = {0}, max_uid = {1}", FirstUid, MaxUid);
                returnStatus.ExitCode = 0;


            }
            catch (Exception ex)
            {
                Logger.Error(ex.ToString());
                returnStatus.Output = ex.ToString();
                returnStatus.ExitCode = 255;
            }

            return returnStatus;
        }
Example #7
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();
            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                WithContainerName, WithNamespace, null, null, null, WithUid);
                RubyHash options = new RubyHash();
                options["all"] = All;
                if (ParallelConcurrencyRatio != 0.0)
                {
                    options["parallelConcurrencyRatio"] = ParallelConcurrencyRatio;
                }

                status.Output = container.Restart(CartName, options);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-restart command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;

            }
            return status;
        }        
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();
            try
            {
                string gearDir = NodeConfig.Values["GEAR_BASE_DIR"];
                int gearCount = Directory.GetDirectories(gearDir).Length;

                if (gearCount == 0)
                {
                    status.Output = "OK: No apps found. Nothing to monitor.";
                }
                else
                {
                    status.Output = String.Format("{0} running, 0 idled", gearCount);
                }
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-idler-start command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
Example #9
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                      WithContainerName, WithNamespace, null, null, null);

            try
            {
                List <string> gears = null;
                List <string> keys  = WithKeys.Split(' ').ToList();
                if (!string.IsNullOrEmpty(WithGears))
                {
                    gears = new List <string>();
                    JArray gearsObj = (JArray)JsonConvert.DeserializeObject(WithGears);
                    foreach (var gearObj in gearsObj)
                    {
                        gears.Add(gearObj.ToString());
                    }
                }

                status.Output   = container.UserVarRemove(keys, gears);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-user-var-remove command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }

            return(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
             WithContainerName, WithNamespace, null, null, null);
            try
            {
                List<string> gears = null;
                List<string> keys = WithKeys.Split(' ').ToList();
                if (!string.IsNullOrEmpty(WithGears))
                {
                    gears = new List<string>();
                    JArray gearsObj = (JArray)JsonConvert.DeserializeObject(WithGears);
                    foreach (var gearObj in gearsObj)
                    {
                        gears.Add(gearObj.ToString());
                    }
                }

                status.Output = container.UserVarRemove(keys, gears);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-user-var-remove command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }

            return status;
        }
        protected override void ProcessRecord()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            try
            {
                ApplicationContainer container = ApplicationContainer.GetFromUuid(GearUuid);
                Manifest             cartridge = container.GetCartridge(CartName);
                if (cartridge != null)
                {
                    returnStatus.Output   = "true";
                    returnStatus.ExitCode = 0;
                }
                else
                {
                    returnStatus.Output   = "false";
                    returnStatus.ExitCode = 1;
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Error running has-app-cartridge-action command: {0} - {1}", ex.Message, ex.StackTrace);
                returnStatus.Output   = "false";
                returnStatus.ExitCode = 1;
            }

            this.WriteObject(returnStatus);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                WithContainerName, WithNamespace, null, null, null, WithUid);
            try
            {
                string output = string.Empty;
                string[] keys = null;
                if (!string.IsNullOrEmpty(WithKeys))
                {
                    keys = WithKeys.Split(' ');
                }

                Dictionary<string, string> variables = container.UserVarList(keys);

                status.Output = string.Format("{0}CLIENT_RESULT: {1}{0}", Environment.NewLine, JsonConvert.SerializeObject(variables));
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-user-var-list command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
Example #13
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                          WithContainerName, WithNamespace, null, null, null, WithUid);
                RubyHash options = new RubyHash();
                options["all"] = All;
                if (ParallelConcurrencyRatio != 0.0)
                {
                    options["parallelConcurrencyRatio"] = ParallelConcurrencyRatio;
                }

                status.Output   = container.Restart(CartName, options);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-restart command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
Example #14
0
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            try
            {
                NodeConfig config = new NodeConfig();

                string distrinctInfoPath = Path.Combine(config.Get("GEAR_BASE_DIR"), ".settings", "district.info");

                string districtInfo = File.ReadAllText(distrinctInfoPath);

                districtInfo = Regex.Replace(districtInfo, "first_uid=\\d+",
                                             string.Format("first_uid={0}", FirstUid), RegexOptions.Multiline);

                districtInfo = Regex.Replace(districtInfo, "max_uid=\\d+",
                                             string.Format("max_uid={0}", MaxUid), RegexOptions.Multiline);

                File.WriteAllText(distrinctInfoPath, districtInfo);

                //TODO handle profiling

                returnStatus.Output   = string.Format("updated district uid limits with first_uid = {0}, max_uid = {1}", FirstUid, MaxUid);
                returnStatus.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error(ex.ToString());
                returnStatus.Output   = ex.ToString();
                returnStatus.ExitCode = 255;
            }

            return(returnStatus);
        }
Example #15
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();
            try
            {
                string gearDir = NodeConfig.Values["GEAR_BASE_DIR"];
                int gearCount = Directory.GetDirectories(gearDir).Length;

                if (gearCount == 0)
                {
                    status.Output = "OK: No apps found. Nothing to monitor.";
                }
                else
                {
                    status.Output = String.Format("{0} running, 0 idled", gearCount);
                }
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-idler-start command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
Example #16
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                                                          WithNamespace, null, null, null, WithUid);
                List <SshKey> keys = new List <SshKey>();
                if (!string.IsNullOrWhiteSpace(WithSshKeys))
                {
                    JArray varsArray = (JArray)JsonConvert.DeserializeObject(WithSshKeys);
                    keys = varsArray.ToObject <List <SshKey> >();
                }
                container.ReplaceSshKeys(keys);
                status.ExitCode = 0;
                status.Output   = string.Empty;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-authorized-ssh-keys-replace command: {0} - {1}", ex.Message, ex.StackTrace);
                status.ExitCode = 1;
                status.Output   = ex.Message;
            }
            return(status);
        }
 public ReturnStatus Execute()
 {
     ReturnStatus status = new ReturnStatus();
     try
     {
         ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
             WithNamespace, null, null, null);
         List<SshKey> keys = new List<SshKey>();
         if (!string.IsNullOrWhiteSpace(WithSshKeys))
         {
             JArray varsArray = (JArray)JsonConvert.DeserializeObject(WithSshKeys);
             keys = varsArray.ToObject<List<SshKey>>();
         }
         container.ReplaceSshKeys(keys);
         status.ExitCode = 0;
         status.Output = string.Empty;
     }
     catch(Exception ex)
     {
         Logger.Error("Error running oo-authorized-ssh-keys-replace command: {0} - {1}", ex.Message, ex.StackTrace);
         status.ExitCode = 1;
         status.Output = ex.Message;
     }
     return status;
 }
        public ReturnStatus Execute()
        {
            status = new ReturnStatus();
            status.ExitCode = 0;

            LoadNodeConf();
            FindExtNetDev();
            LoadUsers();

            if (RunUpgradeChecks)
            {
                CheckUpgrades();
            }
            else
            {
                //ValidateEnv();
                CheckNodePublicResolution();
                //CheckSelinux();
                //CheckPackages();
                CheckServices();
                //CheckServiceContexts();
                //CheckSemaphores();
                //CheckCgroupConfig();
                //CheckCgroupProcs();
                //CheckTcConfig();
                //CheckQuotas();
                CheckUsers();
                CheckAppDirs();
                //CheckSystemHttpdConfigs();
                CheckCartridgeRepository();
            }

            return status;
        }
Example #19
0
        protected override void ProcessRecord()
        {
            status          = new ReturnStatus();
            status.ExitCode = 0;

            LoadNodeConf();
            FindExtNetDev();
            LoadUsers();

            if (RunUpgradeChecks)
            {
                CheckUpgrades();
            }
            else
            {
                //ValidateEnv();
                CheckNodePublicResolution();
                //CheckSelinux();
                //CheckPackages();
                CheckServices();
                //CheckServiceContexts();
                //CheckSemaphores();
                //CheckCgroupConfig();
                //CheckCgroupProcs();
                //CheckTcConfig();
                //CheckQuotas();
                CheckUsers();
                CheckAppDirs();
                //CheckSystemHttpdConfigs();
                CheckCartridgeRepository();
            }

            this.WriteObject(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                Dictionary <string, string> envVars = new Dictionary <string, string>();

                //string homeDir = Environment.GetEnvironmentVariable("HOME");
                string homeDir = Path.Combine(@"C:\openshift\gears", Uuid);

                UserShellTrap.SetupGearEnv(envVars, homeDir);

                string userHomeDir = envVars.ContainsKey("OPENSHIFT_HOMEDIR") && Directory.Exists(envVars["OPENSHIFT_HOMEDIR"]) ? envVars["OPENSHIFT_HOMEDIR"] : string.Empty;

                var prison = Prison.Prison.LoadPrisonAndAttach(Guid.Parse(Uuid.PadLeft(32, '0')));

                UserShellTrap.FixHomeDir(userHomeDir, prison.User.Username, Uuid);

                if (Directory.Exists(Path.Combine(homeDir, "mssql")))
                {
                    string[] instancefolderinfo = Directory.GetDirectories(Path.Combine(homeDir, "mssql", "bin")).First().Split('.');
                    instancefolderinfo[0] = instancefolderinfo[0].Substring(instancefolderinfo[0].LastIndexOf('\\') + 1);
                    Logger.Info("Reconfiguring registry after move with parameters {0},{1} for user {2}", instancefolderinfo[0], instancefolderinfo[1], prison.User.Username);
                    switch (instancefolderinfo[0])
                    {
                    case "MSSQL11": { Prison.MsSqlInstanceTool.ConfigureMsSqlInstanceRegistry(prison, instancefolderinfo[0], "MSSQLSERVER2012"); break; }

                    case "MSSQL10_50": { Prison.MsSqlInstanceTool.ConfigureMsSqlInstanceRegistry(prison, instancefolderinfo[0], "MSSQLSERVER"); break; }

                    default: { throw new Exception("Unsupported MSSQL version!"); }
                    }

                    foreach (string file in Directory.GetFiles(Path.Combine(homeDir, "mssql", "bin", instancefolderinfo[0] + "." + instancefolderinfo[1], "mssql", "DATA")))
                    {
                        FileSecurity fSecurity = File.GetAccessControl(file);
                        fSecurity.AddAccessRule(new FileSystemAccessRule(prison.User.Username, FileSystemRights.FullControl
                                                                         , AccessControlType.Allow));
                        File.SetAccessControl(file, fSecurity);
                    }
                }

                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-admin-restore-acls command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }

            return(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {                
                Dictionary<string, string> envVars = new Dictionary<string, string>();

                //string homeDir = Environment.GetEnvironmentVariable("HOME");
                string homeDir = Path.Combine(@"C:\openshift\gears", Uuid);

                UserShellTrap.SetupGearEnv(envVars, homeDir);

                string userHomeDir = envVars.ContainsKey("OPENSHIFT_HOMEDIR") && Directory.Exists(envVars["OPENSHIFT_HOMEDIR"]) ? envVars["OPENSHIFT_HOMEDIR"] : string.Empty;

                var prison = Prison.Prison.LoadPrisonAndAttach(PrisonIdConverter.Generate(Uuid));
                
                UserShellTrap.FixHomeDir(userHomeDir, prison.User.Username, Uuid);
                
                if (Directory.Exists(Path.Combine(homeDir, "mssql")))
                {                  
                  string[] instancefolderinfo=Directory.GetDirectories(Path.Combine(homeDir,"mssql","bin")).First().Split('.');
                  instancefolderinfo[0] = instancefolderinfo[0].Substring(instancefolderinfo[0].LastIndexOf('\\')+1);
                  Logger.Info("Reconfiguring registry after move with parameters {0},{1} for user {2}", instancefolderinfo[0], instancefolderinfo[1], prison.User.Username);
                  switch (instancefolderinfo[0]) {
                      case "MSSQL11": { Prison.MsSqlInstanceTool.ConfigureMsSqlInstanceRegistry(prison, instancefolderinfo[0], "MSSQLSERVER2012"); break; }
                      case "MSSQL10_50": { Prison.MsSqlInstanceTool.ConfigureMsSqlInstanceRegistry(prison, instancefolderinfo[0], "MSSQLSERVER"); break; }
                      default:{throw new Exception("Unsupported MSSQL version!");}
                  }

                  foreach (string file in Directory.GetFiles(Path.Combine(homeDir, "mssql", "bin",instancefolderinfo[0]+"."+instancefolderinfo[1],"mssql","DATA")))
                  {
                      FileSecurity fSecurity = File.GetAccessControl(file);
                      fSecurity.AddAccessRule(new FileSystemAccessRule(prison.User.Username, FileSystemRights.FullControl
                          , AccessControlType.Allow));
                      File.SetAccessControl(file, fSecurity);                      
                  }
                }                
                 
                status.ExitCode = 0;                
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-admin-restore-acls command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }

            return status;
        }
Example #22
0
        protected override void ProcessRecord()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            try
            {
                returnStatus.ExitCode = 0;
                switch (Action.ToLower())
                {
                case "install":
                {
                    Logger.Debug("Cartridge repository action install");
                    CartridgeRepository.Instance.Install(Path);
                    break;
                }

                case "erase":
                {
                    Logger.Debug("Cartridge repository action erase");
                    CartridgeRepository.Instance.Erase(Name, Version, CartridgeVersion);
                    break;
                }

                case "list":
                {
                    Logger.Debug("Cartridge repository action list");
                    returnStatus.Output = CartridgeRepository.Instance.ToString();
                    break;
                }

                default:
                {
                    returnStatus.Output   = string.Format("{0} is not implemented. openshift.ddl may be out of date", Action);
                    returnStatus.ExitCode = 2;
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Error running cartridge-repository-actions command: {0} - {1}", ex.Message, ex.StackTrace);
                returnStatus.Output   = string.Format("{0} failed for {1} {2}", Action, Path, ex.Message);
                returnStatus.ExitCode = 4;
            }

            WriteObject(returnStatus);
        }
Example #23
0
        protected override void ProcessRecord()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                status.Output   = Node.GetCartridgeList(WithDescriptors, Porcelain, false);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-cartridge-list command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            this.WriteObject(status);
        }
 public ReturnStatus Execute()
 {
     ReturnStatus status = new ReturnStatus();
     try
     {
         ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
            WithNamespace, null, null, new Hourglass(235));
         status.Output = container.PostConfigure(CartName, WithTemplateGitUrl);
         status.ExitCode = 0;
     }
     catch (Exception ex)
     {
         Logger.Error("Error running oo-post-configure command: {0} - {1}", ex.Message, ex.StackTrace);
         status.Output = ex.ToString();
         status.ExitCode = 1;
     }
     return status;
 }
Example #25
0
 public ReturnStatus Execute()
 {
     ReturnStatus status = new ReturnStatus();
     try
     {
         ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
         WithContainerName, WithNamespace, null, null, null, WithUid);            
         status.Output = container.Reload(CartName);
         status.ExitCode = 0;
     }
     catch (Exception ex)
     {
         Logger.Error("Error running oo-reload command: {0} - {1}", ex.Message, ex.StackTrace);
         status.Output = ex.ToString();
         status.ExitCode = 1;
     }
     return status;
 }        
 public ReturnStatus Execute()
 {
     ReturnStatus status = new ReturnStatus();
     try
     {               
         ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                 WithContainerName, WithNamespace, null, null, null);
         status.Output = string.Format("{0}CLIENT_RESULT: {1}{0}", Environment.NewLine, container.State.Value().ToLower());
         status.ExitCode = 0;
     }
     catch (Exception ex)
     {
         Logger.Error("Error running oo-app-state-show command: {0} - {1}", ex.Message, ex.StackTrace);
         status.Output = ex.ToString();
         status.ExitCode = 1;
     }
     return status;
 }
 public ReturnStatus Execute()
 {
     ReturnStatus status = new ReturnStatus();
     try
     {
         ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
             WithNamespace, null, null, null);
         status.Output = container.AddSshKey(WithSshKey, WithSshKeyType, WithSshKeyComment);
         status.ExitCode = 0;
     }
     catch (Exception ex)
     {
         Logger.Error("Error running oo-authorized-ssh-key-add command: {0} - {1}", ex.Message, ex.StackTrace);
         status.Output = ex.ToString();
         status.ExitCode = 1;
     }
     return status;
 }
Example #28
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                status.Output   = Node.GetCartridgeList(WithDescriptors, Porcelain, false);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-cartridge-list command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }

            return(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            try
            {
                returnStatus.ExitCode = 0;
                switch (Action.ToLower())
                {
                    case "install":
                        {
                            Logger.Debug("Cartridge repository action install");
                            CartridgeRepository.Instance.Install(Path);
                            break;
                        }
                    case "erase":
                        {
                            Logger.Debug("Cartridge repository action erase");
                            CartridgeRepository.Instance.Erase(Name, Version, CartridgeVersion);
                            break;
                        }
                    case "list":
                        {
                            Logger.Debug("Cartridge repository action list");
                            returnStatus.Output = CartridgeRepository.Instance.ToString();
                            break;
                        }
                    default:
                        {
                            returnStatus.Output = string.Format("{0} is not implemented. openshift.ddl may be out of date", Action);
                            returnStatus.ExitCode = 2;
                            break;
                        }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Error running cartridge-repository-actions command: {0} - {1}", ex.Message, ex.StackTrace);
                returnStatus.Output = string.Format("{0} failed for {1} {2}", Action, Path, ex.Message);
                returnStatus.ExitCode = 4;
            }

            return returnStatus;
        }
Example #30
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                                                          WithNamespace, null, null, null);
                status.Output   = container.CreatePublicEndpoints(this.CartName);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-expose-port command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
 public ReturnStatus Execute()
 {
     ReturnStatus status = new ReturnStatus();
     try
     {
         ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
             WithContainerName, WithNamespace, null, null, null);
         container.RemoveEnvVar(WithKey);
         status.Output = string.Empty;
         status.ExitCode = 0;
     }
     catch (Exception ex)
     {
         Logger.Error("Error running oo-env-var-remove command: {0} - {1}", ex.Message, ex.StackTrace);
         status.Output = ex.ToString();
         status.ExitCode = -1;
     }
     return status;
 }
Example #32
0
        public ReturnStatus Execute()
        {           
            ReturnStatus status = new ReturnStatus();

            try
            {                
                ApplicationContainer container = ApplicationContainer.GetFromUuid(Uuid);
                status.Output = container.GetQuota(CartName);                           
                status.ExitCode = 0;
            }
            catch(Exception ex)
            {
                Logger.Error("Error running oo-get-quota command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }

            return status;
        }
 public ReturnStatus Execute()
 {
     ReturnStatus returnStatus = new ReturnStatus();
     try
     {
         Logger.Debug(string.Format("Running Get-Gear-Envs-Action for {0}", Uuid));
         string containerDir = ApplicationContainer.GetFromUuid(Uuid).ContainerDir;
         Dictionary<string, string> envVars = Environ.ForGear(containerDir);
         returnStatus.Output = JsonConvert.SerializeObject(envVars);
         Logger.Debug(string.Format("Output for Get-Gear-Envs-Action{0} ", returnStatus.Output));
         returnStatus.ExitCode = 0;
     }
     catch (Exception ex)
     {
         Logger.Error("Error running get-gear-envs-actions command: {0} - {1}", ex.Message, ex.StackTrace);
         returnStatus.ExitCode = 1;
     }
     return returnStatus;
 }
Example #34
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();
            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                WithNamespace, null, null, null, WithUid);

                status.Output = container.Configure(CartName, WithTemplateGitUrl, WithCartridgeManifest, bool.Parse(WithExposePorts));
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-configure command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
Example #35
0
        protected override void ProcessRecord()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                                                          WithNamespace, null, null, null);
                status.Output   = container.AddSshKey(WithSshKey, WithSshKeyType, WithSshKeyComment);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-authorized-ssh-key-add command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            this.WriteObject(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();
            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                    WithNamespace, null, null, null);

                status.Output = container.ConnectorExecute(CartName, HookName, PublishingCartName, ConnectionType, InputArgs);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-connector-execute command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
Example #37
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                                                          WithNamespace, null, null, null, WithUid);
                status.Output   = container.Destroy();
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-app-destroy command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
Example #38
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                                                          WithNamespace, null, null, null);
                status.Output   = container.AddSshKey(WithSshKey, WithSshKeyType, WithSshKeyComment);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-authorized-ssh-key-add command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                          WithContainerName, WithNamespace, null, null, null, WithUid);
                status.Output   = string.Format("{0}CLIENT_RESULT: {1}{0}", Environment.NewLine, container.State.Value().ToLower());
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-app-state-show command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
Example #40
0
        protected override void ProcessRecord()
        {
            ReturnStatus         status    = new ReturnStatus();
            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                      WithContainerName, WithNamespace, null, null, null);

            try
            {
                status.Output   = container.Start(CartName);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-start command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            this.WriteObject(status);
        }
Example #41
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                                                          WithNamespace, null, null, new Hourglass(235));
                status.Output   = container.PostConfigure(CartName, WithTemplateGitUrl);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-post-configure command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
Example #42
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = ApplicationContainer.GetFromUuid(Uuid);
                status.Output   = container.GetQuota(CartName);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-get-quota command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }

            return(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();
            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                    WithContainerName, WithNamespace, null, null, null);

                status.Output = container.ForceStop();
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-force-stop command: {0} - {1}", ex.Message, ex.StackTrace);
                status.ExitCode = 1;
                status.Output = ex.Message;
            }
            return status;
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();
            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                   WithContainerName, WithNamespace, null, null, null);

                status.Output = container.AddBrokerAuth(WithIv, WithToken);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-broker-auth-key-add command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
Example #45
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                                                          WithNamespace, null, null, null, WithUid);

                status.Output   = container.Configure(CartName, WithTemplateGitUrl, WithCartridgeManifest, bool.Parse(WithExposePorts));
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-configure command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
Example #46
0
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            try
            {
                Logger.Debug(string.Format("Running Get-Gear-Envs-Action for {0}", Uuid));
                string containerDir = ApplicationContainer.GetFromUuid(Uuid).ContainerDir;
                Dictionary <string, string> envVars = Environ.ForGear(containerDir);
                returnStatus.Output = JsonConvert.SerializeObject(envVars);
                Logger.Debug(string.Format("Output for Get-Gear-Envs-Action{0} ", returnStatus.Output));
                returnStatus.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running get-gear-envs-actions command: {0} - {1}", ex.Message, ex.StackTrace);
                returnStatus.ExitCode = 1;
            }
            return(returnStatus);
        }
Example #47
0
        protected override void ProcessRecord()
        {
            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                      WithContainerName, WithNamespace, null, null, null);
            ReturnStatus status = new ReturnStatus();

            try
            {
                container.RemoveEnvVar(WithKey);
                status.Output   = string.Empty;
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-env-var-remove command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = -1;
            }
            this.WriteObject(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName, WithContainerName,
                                                                          WithNamespace, null, null, null, WithUid);

                status.Output   = container.ConnectorExecute(CartName, HookName, PublishingCartName, ConnectionType, InputArgs);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-connector-execute command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                          WithContainerName, WithNamespace, null, null, null, WithUid);
                container.RemoveEnvVar(WithKey);
                status.Output   = string.Empty;
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-env-var-remove command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = -1;
            }
            return(status);
        }
Example #50
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                          WithContainerName, WithNamespace, null, null, null);

                status.Output   = container.ForceStop();
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-force-stop command: {0} - {1}", ex.Message, ex.StackTrace);
                status.ExitCode = 1;
                status.Output   = ex.Message;
            }
            return(status);
        }
Example #51
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                          WithContainerName, WithNamespace, null, null, null);

                status.Output   = container.RemoveBrokerAuth();
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-broker-auth-key-remove command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            return(status);
        }
Example #52
0
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();
            try
            {
            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                WithContainerName, WithNamespace, null, null, null, WithUid);

                RubyHash options = new RubyHash();
                options["deployment_id"] = WithDeploymentId;
                status.Output = container.Activate(options);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-activate command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
Example #53
0
        protected override void ProcessRecord()
        {
            ReturnStatus         status    = new ReturnStatus();
            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                                                                      WithContainerName, WithNamespace, null, null, null);

            try
            {
                RubyHash options = new RubyHash();
                options["deployment_id"] = DeploymentId;
                status.Output            = container.Activate(options);
                status.ExitCode          = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-activate command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output   = ex.ToString();
                status.ExitCode = 1;
            }
            this.WriteObject(status);
        }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            try
            {
                string token = null;
                if (!string.IsNullOrEmpty(WithSecretToken))
                    token = WithSecretToken;
                ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
                    WithContainerName, WithNamespace, null, null, null);
                status.Output = container.Create(token);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-app-create command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
 public ReturnStatus Execute()
 {
     ReturnStatus status = new ReturnStatus();
     try
     {
         ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
             WithContainerName, WithNamespace, null, null, null);
         container.SetAutoDeploy(AutoDeploy);
         container.SetDeploymentBranch(DeploymentBranch);
         container.SetKeepDeployments(KeepDeployments);
         container.SetDeploymentType(DeploymentType);
         status.ExitCode = 0;
         status.Output = string.Empty;
     }
     catch (Exception ex)
     {
         Logger.Error("Error running oo-update-configuration command: {0} - {1}", ex.Message, ex.StackTrace);
         status.Output = ex.ToString();
         status.ExitCode = 1;
     }
     return status;
 }
        public ReturnStatus Execute()
        {
            ReturnStatus status = new ReturnStatus();

            ApplicationContainer container = new ApplicationContainer(WithAppUuid, WithContainerUuid, null, WithAppName,
               WithContainerName, WithNamespace, null, null, null);

            try
            {
                Dictionary<string, string> variables = new Dictionary<string, string>();

                if (!string.IsNullOrWhiteSpace(WithVariables))
                {
                    foreach (string variable in WithVariables.Trim().Split(' '))
                    {
                        variables.Add(variable.Split('=')[0].Trim(), variable.Split('=')[1].Trim());
                    }

                }

                List<string> gears = new List<string>();

                if (!string.IsNullOrEmpty(WithGears))
                {
                    gears = this.WithGears.Split(';').ToList();
                }

                status.Output = container.AddUserVar(variables, gears);
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running oo-user-var-add command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            return status;
        }
Example #57
0
        public ReturnStatus Execute()
        {
            Logger.Debug("Running gear command: '{0}'", Environment.CommandLine);

            ReturnStatus status = new ReturnStatus();
            try
            {
                string appUuid = Environment.GetEnvironmentVariable("OPENSHIFT_APP_UUID");
                string gearUuid = Environment.GetEnvironmentVariable("OPENSHIFT_GEAR_UUID");
                string appName = Environment.GetEnvironmentVariable("OPENSHIFT_APP_NAME");
                string gearName = Environment.GetEnvironmentVariable("OPENSHIFT_GEAR_NAME");
                string nmSpace = Environment.GetEnvironmentVariable("OPENSHIFT_NAMESPACE");

                NodeConfig config = new NodeConfig();
                EtcUser etcUser = new Etc(config).GetPwanam(gearUuid);

                container = new ApplicationContainer(appUuid, gearUuid, etcUser, appName, gearName, nmSpace, null, null, null);
                repo = new ApplicationRepository(container);

                if (Prereceive)
                {
                    Dictionary<string, object> options = new Dictionary<string, object>();
                    options["init"] = Init;
                    options["hotDeploy"] = true;
                    options["forceCleanBuild"] = true;
                    options["ref"] = container.DetermineDeploymentRef();
                    container.PreReceive(options);
                }
                else if (Postreceive)
                {
                    RubyHash options = new RubyHash();
                    options["init"] = Init;
                    options["all"] = true;
                    options["reportDeployment"] = true;
                    options["ref"] = container.DetermineDeploymentRef();
                    container.PostReceive(options);
                }
                else if (Build)
                {
                    string ciRepoPath = Path.Combine(Environment.GetEnvironmentVariable("OPENSHIFT_REPO_DIR"), ".git");
                    string repoDir = null;
                    if(Directory.Exists(ciRepoPath))
                    {
                        repoDir = ciRepoPath;
                    }
                    repo = new ApplicationRepository(this.container, repoDir);
                    string gitRef = null;
                    bool archive =false;
                    if(repoDir == null)
                    {
                        gitRef = this.container.DetermineDeploymentRef(this.RefId);
                        archive = true;
                    }
                    else
                    {
                        gitRef = Environment.GetEnvironmentVariable("GIT_BRANCH");
                    }
                    if(!ValidGitRef(gitRef))
                    {
                        throw new Exception(string.Format("Git ref {0} is invalid", gitRef));
                    }
                    if(archive)
                    {
                        repo.Archive(Environment.GetEnvironmentVariable("OPENSHIFT_REPO_DIR"), gitRef);
                    }

                    RubyHash options = new RubyHash();
                    options["ref"] = gitRef;
                    options["hot_deploy"] = repo.FileExists(HOT_DEPLOY_MARKER, gitRef);
                    options["force_clean_build"] = repo.FileExists(FORCE_CLEAN_BUILD_MARKER, gitRef);
                    options["git_repo"] = repo;

                    Console.WriteLine(container.Build(options));
                }
                else if (Prepare)
                {
                    throw new NotImplementedException();
                }
                else if (Deploy)
                {
                    if (Environment.GetEnvironmentVariable("OPENSHIFT_DEPLOYMENT_TYPE") == "binary")
                    {
                        throw new Exception("OPENSHIFT_DEPLOYMENT_TYPE is 'binary' - git-based deployments are disabled.");
                    }
                    string refToDeploy = container.DetermineDeploymentRef(this.DeployRefId);
                    if (!ValidGitRef(refToDeploy))
                    {
                        throw new Exception("Git ref " + refToDeploy + " is not valid");
                    }
                    RubyHash options = new RubyHash();
                    options["hot_deploy"] = this.HotDeploy;
                    options["force_clean_build"] = this.ForceCleanBuild;
                    options["ref"] = this.DeployRefId;
                    options["report_deployments"] = true;
                    options["all"] = true;
                    container.Deploy(options);
                }
                else if (Activate)
                {
                    status.Output = container.Activate(new RubyHash
                    {
                        {"deployment_id", this.DeploymentId},
                        {"post_install", this.PostInstall.ToBool()},
                        {"all", this.All.ToBool()},
                        {"rotate", this.Rotation && !this.NoRotation},
                        {"report_deployments", true},
                        {"out", !this.AsJson.ToBool()}
                    });
                }
                status.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running gear command: {0} - {1}", ex.Message, ex.StackTrace);
                status.Output = string.Format("{0}", ex.Message, ex.StackTrace);
                status.ExitCode = 255;
            }

            return status;
        }
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();

            CartridgeRepository repository = CartridgeRepository.Instance;

            if(string.IsNullOrEmpty(Action))
            {
                returnStatus.Output = "Usage: --action ACTION [--recursive] [--source directory] [--name NAME --version VERSION --cartridge_version VERSION]";
                returnStatus.ExitCode = 1;
                return returnStatus;
            }

            try
            {
                switch (Action.ToLower())
                {
                    case "install":
                        {                            
                            string[] dirs = null;
                            if (Recursive)
                            {
                                Directory.GetDirectories(Source);
                            }
                            else
                            {
                                dirs = new string[] { Source };
                            }

                            bool success = true;

                            foreach (string dir in dirs)
                            {
                                try
                                {
                                    repository.Install(dir);
                                }
                                catch (Exception e)
                                {
                                    success = false;
                                    Console.Error.WriteLine(string.Format("install failed for {0}: {1}", dir, e.Message));
                                    if (D) Console.Error.WriteLine(e.StackTrace);
                                }
                            }

                            if (success)
                                returnStatus.Output = "succeeded";
                            else
                                returnStatus.Output = "installation failed";

                            break;
                        }
                    case "erase":
                        {
                            try
                            {
                                repository.Erase(Name, Version, CartridgeVersion);
                                returnStatus.Output = "succeeded";
                            }
                            catch (KeyNotFoundException e)
                            {
                                returnStatus.Output = "requested cartridge does not exist: " + e.ToString();
                            }
                            catch (Exception e)
                            {
                                returnStatus.Output = "Couldn't erase cartridge: " + e.ToString();
                            }

                            break;
                        }
                    case "list":
                        {                            
                            if (D)
                            {
                                returnStatus.Output = repository.Inspect();
                            }
                            else
                            {
                                returnStatus.Output = repository.ToString();
                            }
                            break;
                        }
                    default:
                        {
                            break;
                        }
                }
                returnStatus.ExitCode = 0;
            }
            catch (Exception ex)
            {
                returnStatus.ExitCode = 1;
                returnStatus.Output = ex.Message;
                if (D) Console.Error.WriteLine(ex.ToString());
            }

            return returnStatus;
        }
        public ReturnStatus Execute()
        {
            ReturnStatus returnStatus = new ReturnStatus();
            try
            {
                NodeConfig config = new NodeConfig();
                string gearPath = config.Get("GEAR_BASE_DIR");
                string[] folders = Directory.GetDirectories(gearPath);
                List<RubyHash> endpoints = new List<RubyHash>();
                RubyHash outputHash = new RubyHash();


                foreach (string folder in folders)
                {
                    string folderName = Path.GetFileName(folder);
                    if (!folderName.StartsWith("."))
                    {
                        ApplicationContainer container = ApplicationContainer.GetFromUuid(folderName);
                        Dictionary<string, string> env = Environ.ForGear(container.ContainerDir);

                        container.Cartridge.EachCartridge(cart =>
                        {
                            cart.Endpoints.ForEach(endpoint =>
                            {
                                RubyHash endpointHash = new RubyHash();

                                endpointHash.Add("cartridge_name", string.Format("{0}-{1}", cart.Name, cart.Version));
                                if (env.ContainsKey(endpoint.PublicPortName))
                                {
                                    endpointHash.Add("external_port", env[endpoint.PublicPortName]);
                                }
                                else
                                {
                                    endpointHash.Add("external_port", null);
                                }
                                endpointHash.Add("internal_address", env[endpoint.PrivateIpName]);
                                endpointHash.Add("internal_port", endpoint.PrivatePort);
                                endpointHash.Add("protocols", endpoint.Protocols);
                                endpointHash.Add("type", new List<string>());

                                if (cart.WebProxy)
                                {
                                    endpointHash["protocols"] = container.Cartridge.GetPrimaryCartridge().Endpoints.First().Protocols;
                                    endpointHash["type"] = new List<string>() { "load_balancer" };
                                }
                                else if (cart.WebFramework)
                                {
                                    endpointHash["type"] = new List<string>() { "web_framework" };
                                }
                                else if (cart.Categories.Contains("database"))
                                {
                                    endpointHash["type"] = new List<string>() { "web_framework" };
                                }
                                else if (cart.Categories.Contains("plugin"))
                                {
                                    endpointHash["type"] = new List<string>() { "plugin" };
                                }
                                else
                                {
                                    endpointHash["type"] = new List<string>() { "other" };
                                }

                                if (endpoint.Mappings != null && endpoint.Mappings.Count > 0)
                                {
                                    List<RubyHash> mappingsList = new List<RubyHash>();
                                    foreach (Uhuru.Openshift.Common.Models.Endpoint.Mapping mapping in endpoint.Mappings)
                                    {
                                        RubyHash mappings = new RubyHash();
                                        mappings.Add("frontend", mapping.Frontend);
                                        mappings.Add("backend", mapping.Backend);
                                        mappingsList.Add(mappings);
                                    }
                                    endpointHash.Add("mappings", mappingsList);
                                }
                                endpoints.Add(endpointHash);
                            });
                        });
                        if (endpoints.Count > 0)
                        {
                            outputHash.Add(folderName, endpoints);
                        }
                    }
                }
                string output = Newtonsoft.Json.JsonConvert.SerializeObject(outputHash);
                returnStatus.Output = output;
                returnStatus.ExitCode = 0;
            }
            catch (Exception ex)
            {
                Logger.Error("Error running get-all-gears-endpoints-action command: {0} - {1}", ex.Message, ex.StackTrace);
                returnStatus.Output = ex.ToString();
                returnStatus.ExitCode = 1;

            }

            return returnStatus;
        }
        static int Main(string[] args)
        {
            // trim all args first
            args = args.Select(arg => arg.Trim()).ToArray();

            ReturnStatus status = new ReturnStatus();
            try
            {
                Logger.Debug("Running {0}", string.Join(" ", args));

                string method = args[0];

                string className = string.Format("{0}.{1}, {2}",
                    "Uhuru.Openshift.Cmdlets",
                    Regex.Replace(method, @"^(OO|[A-Z])|_[A-Z]|-[A-Z]", m => m.ToString().ToUpper(), RegexOptions.IgnoreCase).Replace("-", "_").Trim(),
                    typeof(ReturnStatus).Assembly.GetName());

                Type t = Type.GetType(className);
                if (t != null)
                {
                    var instance = Activator.CreateInstance(t);
                    Dictionary<string, object> arguments = null;
                    if (args.Length == 1)
                    {
                        string arg = Console.ReadLine();
                        arguments = JsonConvert.DeserializeObject<RubyHash>(arg);                        
                    }
                    else
                    {
                        string[] arg = args.Skip(1).ToArray();
                        arguments = new Arguments(arg).ToDictionary(pair => pair.Key, pair => (object)pair.Value);
                    }
                    switch (method.ToLower())
                    {
                        case "gear":
                            {
                                arguments[args[1]] = true;
                                switch (args[1].ToLower())
                                {

                                    case "activate":
                                        {
                                            arguments["DeploymentId"] = args[2];
                                            break;
                                        }
                                    case "build":
                                        {
                                            if (args.Length > 2)
                                            {
                                                arguments["RefId"] = args[2];
                                            }
                                            break;
                                        }
                                    default:
                                        break;
                                }
                                break;
                            }
                        case "oo-admin-ctl-gears":
                            {
                                arguments["Operation"] = args[1];
                                arguments["UUID"] = args.Skip(2).ToArray();
                                break;
                            }
                        default:
                            {
                                break;
                            }
                    }
                    SetInstanceFields(instance, arguments);
                    MethodInfo process = t.GetMethod("Execute");
                    status = (ReturnStatus)process.Invoke(instance, new object[] { });
                }
                else
                {
                    status.Output = "Command not found";
                    status.ExitCode = 1;
                }
                
            }
            catch(Exception ex)
            {
                status.Output = ex.ToString();
                status.ExitCode = 1;
            }
            Logger.Debug("Finished running {0}. Output: {1}", string.Join(" ", args), status.Output);
            Console.WriteLine(status.Output);
            return status.ExitCode;
        }