コード例 #1
0
        public ActionResult GetReleaseDefinition([DataSourceRequest] DataSourceRequest request, string id)
        {
            Classes.VSTS.VstsReleaseDefinition def = null;

            while (_cache.Get <Classes.VSTS.VstsReleaseDefinitions>(CACHE.RELEASES) == null)
            {
            }

            def = _cache.Get <Classes.VSTS.VstsReleaseDefinitions>(CACHE.RELEASES).ReleaseDefinitions.Where(t => t.Id == id).FirstOrDefault();

            List <RepoReleaseDefinitionVM> details = new List <RepoReleaseDefinitionVM>();

            if (def != null)
            {
                details.Add(new RepoReleaseDefinitionVM()
                {
                    Id         = def.Id,
                    CreatedOn  = System.Convert.ToDateTime(def.CreatedOn),
                    ModifiedOn = System.Convert.ToDateTime(def.ModifiedOn),
                    Revisions  = System.Convert.ToInt32(def.Revision)
                });
            }

            return(Json(details.ToDataSourceResult(request)));
        }
コード例 #2
0
        public ActionResult GetEnvironmentsForDefinition([DataSourceRequest] DataSourceRequest request, string defId)
        {
            Classes.VSTS.VstsReleaseDefinition def = null;

            while (_cache.Get <Classes.VSTS.VstsReleaseDefinitions>(CACHE.RELEASES) == null)
            {
            }

            def = _cache.Get <Classes.VSTS.VstsReleaseDefinitions>(CACHE.RELEASES).ReleaseDefinitions.Where(t => t.Id == defId).FirstOrDefault();

            List <RepoReleaseEnvironmentVM> details = new List <RepoReleaseEnvironmentVM>();

            if (def != null)
            {
                foreach (var env in def.Environments)
                {
                    var newEnv = new RepoReleaseEnvironmentVM()
                    {
                        DefId          = def.Id,
                        Id             = env.Id,
                        DaysToKeep     = env.RetentionPolicy.DaysToKeep,
                        Name           = env.Name,
                        Rank           = env.Rank,
                        ReleasesToKeep = env.RetentionPolicy.ReleasesToKeep
                    };
                    foreach (var tsk in env.DeployPhases)
                    {
                        foreach (var phs in tsk.WorkflowTasks)
                        {
                            if (!string.IsNullOrEmpty(phs.Inputs.ApplicationDirectory))
                            {
                                newEnv.ApplicationDirectory = phs.Inputs.ApplicationDirectory;
                            }
                            if (!string.IsNullOrEmpty(phs.Inputs.AppPoolName))
                            {
                                newEnv.AppPoolName = phs.Inputs.AppPoolName;
                            }
                            if (!string.IsNullOrEmpty(phs.Inputs.MachinesList))
                            {
                                newEnv.MachinesList = phs.Inputs.MachinesList;
                            }
                        }
                    }


                    details.Add(newEnv);
                }
            }

            return(Json(details.ToDataSourceResult(request)));
        }
コード例 #3
0
        public RepoReleaseVariableVM BuildTokenData(string releaseId)
        {
            Classes.VSTS.VstsReleaseDefinition def = null;

            ////TODO: add timeout stuff
            while (_cache.Get <Classes.VSTS.VstsReleaseDefinitions>(CACHE.RELEASES) == null)
            {
            }

            def = _cache.Get <Classes.VSTS.VstsReleaseDefinitions>(CACHE.RELEASES).ReleaseDefinitions.Where(t => t.Id == releaseId).FirstOrDefault();

            RepoReleaseVariableVM item = new RepoReleaseVariableVM();

            item.Columns = new List <VSTSDataColumn>();
            List <List <string> > tempData = new List <List <string> >();

            if (def != null)
            {
                // add columns
                var tok = new VSTSDataColumn("Token", typeof(string));
                tok.Caption  = "Token";
                tok.IsLocked = true;
                item.Columns.Add(tok);
                foreach (var col in def.Environments)
                {
                    tok          = new VSTSDataColumn(col.Name, typeof(string));
                    tok.Caption  = col.Name;
                    tok.IsLocked = false;

                    tok.ColumnName = System.Text.RegularExpressions.Regex
                                     .Replace(tok.ColumnName, @"[\[\]\\\^\$\.\|\?\*\+\(\)\{\}%,;><!@#&\-\+\ /]", string.Empty);

                    item.Columns.Add(tok);
                }
                // now values.
                foreach (var env in def.Environments)
                {
                    foreach (var v in env.Variables)
                    {
                        string varName  = v.Key;
                        string varValue = ((Classes.VSTS.VstsValue)v.Value).Value;
                        string envName  = env.Name;

                        // I could use RANK but to be safe, I'll use the column position to know where to put
                        // variable value
                        bool found    = false;
                        int  foundPos = -1;
                        for (int j = 0; j < tempData.Count; j++)
                        {
                            if (tempData[j][0] == varName)
                            {
                                found    = true;
                                foundPos = j;
                                break;
                            }
                        }
                        var pos = item.Columns.FindIndex(t => t.Caption == envName);

                        if (!found)
                        {
                            var toAdd = new List <string>();
                            for (int x = 0; x < item.Columns.Count; x++)
                            {
                                toAdd.Add(string.Empty);
                            }
                            toAdd[0]   = varName;
                            toAdd[pos] = varValue;
                            tempData.Add(toAdd);
                        }
                        else // found so obtain position of env
                        {
                            var fullItem = tempData[foundPos];
                            fullItem[pos] = varValue;
                        }
                    }
                }

                // Now build dictionary
                item.Data = new List <Dictionary <string, string> >();
                foreach (var element in tempData)
                {
                    var itemToAdd = new Dictionary <string, string>();
                    for (int x = 0; x < item.Columns.Count; x++)
                    {
                        itemToAdd.Add(item.Columns[x].ColumnName, element[x]);
                    }
                    item.Data.Add(itemToAdd);
                }
            }
            return(item);
        }