示例#1
0
        public void DeleteIteration(string project, string iterationPath, int reclassifyId)
        {
            VssConnection connection = new VssConnection(_uri, _credentials);
            WorkItemTrackingHttpClient workItemTrackingHttpClient = connection.GetClient <WorkItemTrackingHttpClient>();

            workItemTrackingHttpClient.DeleteClassificationNodeAsync(project, TreeStructureGroup.Iterations, iterationPath, reclassifyId).SyncResult();
        }
示例#2
0
        public static async Task DeleteAreaAsync(this WorkItemTrackingHttpClient source, NodePath existingPath, string newPath, CancellationToken cancellationToken)
        {
            var newNode = await source.GetAreaAsync(new NodePath(newPath), true, cancellationToken).ConfigureAwait(false);

            await source.DeleteClassificationNodeAsync(existingPath.Project, TreeStructureGroup.Areas, path : existingPath.RelativePath, reclassifyId : newNode.Id, cancellationToken : cancellationToken).ConfigureAwait(false);

            Logger.Debug($"Deleted area '{existingPath}");
        }
        public bool DeleteIteration()
        {
            string project       = "TBD";
            string iterationPath = "TBD";
            int?   reclassifyId  = null;

            VssConnection connection = Context.Connection;
            WorkItemTrackingHttpClient workItemTrackingClient = connection.GetClient <WorkItemTrackingHttpClient>();

            try
            {
                workItemTrackingClient.DeleteClassificationNodeAsync(
                    project,
                    TreeStructureGroup.Iterations,
                    iterationPath,
                    reclassifyId).SyncResult();

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
示例#4
0
        static void Main(string[] args)
        {
            VssCredentials creds = new VssClientCredentials();

            creds.Storage = new VssClientCredentialStorage();
            VssConnection connection = new VssConnection(new Uri(c_collectionUri), creds);

            v = connection;

            // Dont need this code at the moment.
            GitHttpClient gitClient = connection.GetClient <GitHttpClient>();
            var           repo      = gitClient.GetRepositoryAsync(c_projectname, c_reponame).Result;

            //// Get process templates
            //ProcessHttpClient processClient = connection.GetClient<ProcessHttpClient>();
            //var processes = processClient.GetProcessesAsync().Result;



            // Retrieve a list of projects from the account. (and ask if they should be deleted).  This is to tidy up my test data.
            Console.WriteLine("Preparing a list of projects you may wish to delete!");
            var projectHttpClient = connection.GetClient <ProjectHttpClient>();

            //then - same as above..iterate over the project references(with a hard-coded pagination of the first 10 entries only)
            foreach (var projectReference in projectHttpClient.GetProjects(top: 20, skip: 0).Result)
            {
                var teamProject = projectHttpClient.GetProject(projectReference.Id.ToString()).Result;
                //var urlForTeamProject = ((ReferenceLink)teamProject.Links.Links["web"]).Href;

                //Console.WriteLine("Team Project '{0}' (Id: {1}) at Web Url: '{2}' & API Url: '{3}'",
                //teamProject.Name,
                //teamProject.Id,
                //urlForTeamProject,
                //teamProject.Url);
                if (teamProject.Description == "This is a dummy project")
                {
                    Console.WriteLine("Delete this project {0}? (Y/N) default=No", teamProject.Name);
                    string s = Console.ReadLine();
                    if (s == "Y")
                    {
                        projectHttpClient.QueueDeleteProject(teamProject.Id);
                    }
                }
            }
            // return;

            bool   createVSTSProject = false;
            string p = null;

            if (createVSTSProject)
            {
                // Create a new project
                Console.WriteLine("***************Project Creation ******************");
                Console.WriteLine("Enter your project name");
                p = null;
                do
                {
                    p = Console.ReadLine();
                } while (String.IsNullOrEmpty(p));


                projectHttpClient = connection.GetClient <ProjectHttpClient>();
                string projectName    = CreateProject(connection, projectHttpClient, p);
                var    createdProject = projectHttpClient.GetProject(projectName).Result;

                Console.WriteLine("retrieve and delete default iterations from project");
                WorkHttpClient workClient = connection.GetClient <WorkHttpClient>();
                TeamContext    tc         = new TeamContext(createdProject.Name);
                var            iterations = workClient.GetTeamIterationsAsync(tc).Result;
                foreach (var item in iterations)
                {
                    workClient.DeleteTeamIterationAsync(tc, item.Id).SyncResult();
                    Console.WriteLine("Deleting {0}", item.Name);
                }

                DateTime projectStartDate              = new DateTime(2017, 07, 01);
                int      discoveryIterationDays        = 30;
                int      breathingSpaceDays            = 3;
                int      standardIterationDays         = 14;
                int      alphaStandardIterations       = 4;
                int      privateBetaStandardIterations = 4;
                int      publicBetaStandardIterations  = 6;

                DateTime startDate = projectStartDate;
                DateTime endDate   = startDate.AddDays(discoveryIterationDays);

                // Create a discovery iteration to get hold of a node to use as the re-assignment node when deleting stock iterations.
                Console.WriteLine("Creating a Discovery Phase from {0} to {1}", startDate, endDate);
                var node                  = AddIteration(createdProject.Id, "Discovery", startDate, endDate);
                int discoveryNodeId       = node.Id;
                TeamSettingsIteration tsi = new TeamSettingsIteration();
                tsi.Id = node.Identifier;
                var x = workClient.PostTeamIterationAsync(tsi, tc).Result;

                // Delete the standard iterations that come with a new project
                WorkItemTrackingHttpClient workItemTrackingClient = v.GetClient <WorkItemTrackingHttpClient>();
                workItemTrackingClient.DeleteClassificationNodeAsync(createdProject.Id, TreeStructureGroup.Iterations, "Iteration 1", discoveryNodeId).SyncResult();
                workItemTrackingClient.DeleteClassificationNodeAsync(createdProject.Id, TreeStructureGroup.Iterations, "Iteration 2", discoveryNodeId).SyncResult();
                workItemTrackingClient.DeleteClassificationNodeAsync(createdProject.Id, TreeStructureGroup.Iterations, "Iteration 3", discoveryNodeId).SyncResult();

                // Dont really need this at the moment
                // var processConfiguration = workClient.GetProcessConfigurationAsync(projectName).Result;

                // Add Alpha Phase
                startDate = endDate.AddDays(breathingSpaceDays);
                endDate   = startDate.AddDays((alphaStandardIterations + 2 * standardIterationDays));
                Console.WriteLine("Creating an Alpha Phase from {0} to {1}", startDate, endDate);
                node   = AddIteration(createdProject.Id, "Alpha", startDate, endDate);
                tsi    = new TeamSettingsIteration();
                tsi.Id = node.Identifier;
                x      = workClient.PostTeamIterationAsync(tsi, tc).Result;

                endDate = startDate.AddDays(standardIterationDays);
                Console.WriteLine("Creating an inception iteration from {0} to {1}", startDate, endDate);
                AddIteration(createdProject.Id, "Inception", startDate, endDate, "Alpha");
                tsi    = new TeamSettingsIteration();
                tsi.Id = node.Identifier;
                x      = workClient.PostTeamIterationAsync(tsi, tc).Result;

                for (int i = 0; i < alphaStandardIterations; i++)
                {
                    startDate = endDate.AddDays(1);
                    endDate   = startDate.AddDays(standardIterationDays);
                    Console.WriteLine("Creating a Standard Iteration {0} from {1} to {2}", i + 1, startDate, endDate);
                    AddIteration(createdProject.Id, String.Format("Iteration {0}", i + 1), startDate, endDate, "Alpha");
                    tsi    = new TeamSettingsIteration();
                    tsi.Id = node.Identifier;
                    x      = workClient.PostTeamIterationAsync(tsi, tc).Result;
                }

                startDate = endDate.AddDays(1);
                endDate   = startDate.AddDays(standardIterationDays);
                Console.WriteLine("Creating an conclusion iteration from {0} to {1}", startDate, endDate);
                AddIteration(createdProject.Id, "Conclusion", startDate, endDate, "Alpha");
                tsi    = new TeamSettingsIteration();
                tsi.Id = node.Identifier;
                x      = workClient.PostTeamIterationAsync(tsi, tc).Result;

                startDate = endDate.AddDays(breathingSpaceDays);
                endDate   = startDate.AddDays((privateBetaStandardIterations + publicBetaStandardIterations) * standardIterationDays);
                Console.WriteLine("Creating a Beta Phase from {0} to {1}", startDate, endDate);
                AddIteration(createdProject.Id, "Beta", startDate, endDate);
                tsi    = new TeamSettingsIteration();
                tsi.Id = node.Identifier;
                x      = workClient.PostTeamIterationAsync(tsi, tc).Result;

                // test putting the sample project into GiT.
                // This would actually retrieve the files from the core template project.


                gitClient = connection.GetClient <GitHttpClient>();
                repo      = gitClient.GetRepositoryAsync(createdProject.Name, createdProject.Name).Result;
                GitHelper gh     = new GitHelper(connection);
                var       pushes = gh.ListPushesIntoMaster(c_projectname, c_reponame);
                var       push   = gh.CreatePush(createdProject.Name, repo.Name);
                pushes = gh.ListPushesIntoMaster(createdProject.Name, repo.Name);
            }
            // Create a new project
            Console.WriteLine("***************Create a DevTest Lab ******************");
            Console.WriteLine("Enter a deployment name (need to work out how to capture template paramters here");
            Console.WriteLine("or q to quit");
            p = null;
            do
            {
                p = Console.ReadLine();
            } while (String.IsNullOrEmpty(p));
            if (p == "q")
            {
                return;
            }
            DeployerParameters parameters = new DeployerParameters();

            parameters.ResourceGroupName     = "Xekina-RG";
            parameters.DeploymentName        = "Xekina-Lab-Deployment";
            parameters.ResourceGroupLocation = "North Europe"; // must be specified for creating a new resource group
            parameters.PathToTemplateFile    = "./Files/azuredeploy.json";
            parameters.PathToParameterFile   = "./Files/azuredeploy.parameters.json";
            // TODO: Get this from app.settings
            parameters.TenantId       = CloudConfigurationManager.GetSetting("TenantId");
            parameters.ClientId       = CloudConfigurationManager.GetSetting("ClientId");
            parameters.ClientSecret   = CloudConfigurationManager.GetSetting("ClientSecret");
            parameters.SubscriptionId = CloudConfigurationManager.GetSetting("SubscriptionId");

            string     templateParameters = File.ReadAllText(parameters.PathToParameterFile);
            RootObject ltp = JsonConvert.DeserializeObject <RootObject>(templateParameters);

            ltp.parameters.newLabName.value = "XekinaLab";
            parameters.ParameterFileContent = JsonConvert.SerializeObject(ltp);
            Deployer deployer = new Deployer(parameters);

            deployer.Deploy().SyncResult();
            Console.ReadLine();
            return;
        }