Advertisement
Guest User

Untitled

a guest
Mar 25th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.86 KB | None | 0 0
  1. 'use strict';
  2.  
  3. angular
  4. .module('hawk.pipelinesManagement')
  5. .controller('PipelinesController', function ($scope, $log, $interval, pipeStats, pipeConfig, pipeExec, pipesService, authDataService) {
  6. var vm = this;
  7. vm.toggleLogo = 1;
  8.  
  9. vm.defaultPipelineText = {
  10. empty: "No pipelines in "
  11. }
  12.  
  13. vm.formData = {};
  14. vm.allPipelines = [];
  15. vm.allDefinitionsAndRuns = [];
  16.  
  17. vm.materialType = "git";
  18.  
  19. //region add pipeline modal config
  20. vm.bar = 1;
  21. vm.back = function () {
  22. vm.bar--;
  23. };
  24. vm.next = function () {
  25. vm.bar++;
  26. };
  27. vm.close = function () {
  28. vm.bar = 1;
  29. vm.formData = {}
  30. $('#logoTfs').removeClass('l-active2');
  31. $('#logoNuget').removeClass('l-active2');
  32. $('#logoGit').removeClass('l-active2');
  33. };
  34. //endregion
  35.  
  36. //region pipeline controls
  37. vm.play = function (pipeName) {
  38. var tokenIsValid = authDataService.checkTokenExpiration();
  39. if (tokenIsValid) {
  40. var token = window.localStorage.getItem("accessToken");
  41. pipeExec.scheduleLatestPipeline(pipeName, token)
  42. .then(function (res) {
  43. console.log(res);
  44. }, function (err) {
  45. console.log(err);
  46. })
  47. } else {
  48. var currentRefreshToken = window.localStorage.getItem("refreshToken");
  49. authDataService.getNewToken(currentRefreshToken)
  50. .then(function (res) {
  51. var token = res.access_token;
  52. pipeExec.scheduleLatestPipeline(pipeName, token)
  53. .then(function (res) {
  54. console.log(res);
  55. }, function (err) {
  56. console.log(err);
  57. })
  58. }, function (err) {
  59. console.log(err);
  60. })
  61. }
  62. };
  63.  
  64. //TODO Not implemented on the back-end yet
  65. vm.stop = function (pipeId) {
  66. pipeExec.cancelPipeline(pipeId)
  67. .then(function (res) {
  68. console.log(res.Message);
  69. }, function (err) {
  70. console.log(err);
  71. })
  72. };
  73. //endregion
  74.  
  75. vm.getGroupName = function (input) {
  76. vm.groupName = input;
  77. };
  78. vm.getPipeName = function (input) {
  79. vm.pipeName = input[0].OriginalName;
  80. };
  81.  
  82. vm.getAll = function () {
  83. var tokenIsValid = authDataService.checkTokenExpiration();
  84. if (tokenIsValid) {
  85. var token = window.localStorage.getItem("accessToken");
  86.  
  87. pipeConfig.getAllPipelineDefs(token)
  88. .then(function (defs) {
  89. var all = [];
  90. vm.allDefinitionsAndRuns = [];
  91. vm.allDefinitionsAndRuns.push(defs);
  92.  
  93. pipeStats.getAllPipelines(token)
  94. .then(function (runs) {
  95. vm.allDefinitionsAndRuns.push(runs);
  96.  
  97. //Combine definitions and runs of pipelines in one array
  98. all = pipesService.combineDefinitionAndRuns(vm.allDefinitionsAndRuns);
  99.  
  100. //Orders the data by pipeline name sorted by ExecutionID
  101. all = pipesService.arrangePipelinesByNameAndExecution(all);
  102.  
  103. //This method gets last execution for each stage in the last run of each pipeline
  104. all = pipesService.getLastStageRunForLastPipeline(all);
  105.  
  106. //Get groups only - needed for empty groups (no pipelines)
  107. pipeConfig.getAllGroups(token)
  108. .then(function (res) {
  109. for (var i = 0; i < res.length; i++) {
  110. if (res[i].Pipelines.length == 0) {
  111. var name = res[i].Name;
  112. all[name] = res[i];
  113. }
  114. }
  115. vm.allPipelines = all;
  116. }, function (err) {
  117. console.log(err);
  118. })
  119. },
  120. function (err) {
  121. console.log(err);
  122. })
  123. },
  124. function (err) {
  125.  
  126. });
  127. } else {
  128. var currentRefreshToken = window.localStorage.getItem("refreshToken");
  129. authDataService.getNewToken(currentRefreshToken)
  130. .then(function (res) {
  131. var token = res.access_token;
  132. pipeConfig.getAllPipelineDefs(token)
  133. .then(function (defs) {
  134. var all = [];
  135. vm.allDefinitionsAndRuns = [];
  136. vm.allDefinitionsAndRuns.push(defs);
  137.  
  138. pipeStats.getAllPipelines(token)
  139. .then(function (runs) {
  140. vm.allDefinitionsAndRuns.push(runs);
  141. //Combine definitions and runs of pipelines in one array
  142. all = pipesService.combineDefinitionAndRuns(vm.allDefinitionsAndRuns);
  143.  
  144. //Orders the data by pipeline name sorted by ExecutionID
  145. all = pipesService.arrangePipelinesByNameAndExecution(all);
  146.  
  147. //This method gets last execution for each stage in the last run of each pipeline
  148. all = pipesService.getLastStageRunForLastPipeline(all);
  149.  
  150. //Get groups only - needed for empty groups (no pipelines)
  151. pipeConfig.getAllGroups(token)
  152. .then(function (res) {
  153. for (var i = 0; i < res.length; i++) {
  154. if (res[i].Pipelines.length == 0) {
  155. var name = res[i].Name;
  156. all[name] = res[i];
  157. }
  158. }
  159. vm.allPipelines = all;
  160. }, function (err) {
  161. console.log(err);
  162. })
  163. },
  164. function (err) {
  165. console.log(err);
  166. })
  167. },
  168. function (err) {
  169. console.log(err);
  170. });
  171. }, function (err) {
  172. console.log(err);
  173. })
  174. }
  175. };
  176.  
  177. vm.addPipeline = function (formData) {
  178. vm.formData = formData;
  179. var material = {};
  180. if (vm.materialType == 'git') {
  181. material = {
  182. "PipelineName": vm.formData.pipeline.name,
  183. "Name": vm.formData.material.git.name,
  184. "Type": 'GIT',
  185. "Url": vm.formData.material.git.url,
  186. "AutoTriggerOnChange": vm.formData.material.git.poll,
  187. "Destination": vm.formData.material.git.name,
  188. "MaterialSpecificDetails": {
  189. "branch": vm.formData.material.git.branch || 'master'
  190. }
  191. };
  192. if (formData.material.git.credentials) {
  193. material.MaterialSpecificDetails.username = formData.material.git.username;
  194. material.MaterialSpecificDetails.password = formData.material.git.password;
  195. }
  196. }
  197. //TODO
  198. if (vm.formData.material.tfs) {
  199. var tfs = {
  200. "PipelineName": vm.formData.pipeline.name,
  201. "Name": vm.formData.materials.tfs.name,
  202. "Type": 'TFS',
  203. "Url": vm.formData.materials.tfs.url,
  204. "AutoTriggerOnChange": vm.formData.materials.tfs.poll,
  205. "Destination": vm.formData.materials.tfs.name,
  206. "MaterialSpecificDetails": {
  207. "domain": vm.formData.materials.tfs.domain,
  208. "projectPath": vm.formData.materials.tfs.projectPath,
  209. "username": vm.formData.materials.tfs.username,
  210. "password": vm.formData.materials.tfs.password
  211. }
  212. };
  213. materials.push(tfs);
  214. }
  215. //
  216. if (vm.materialType == 'nuget') {
  217. material = {
  218. "PipelineName": vm.formData.pipeline.name,
  219. "Name": vm.formData.material.nuget.name,
  220. "Type": 'NUGET',
  221. "Url": vm.formData.material.nuget.url,
  222. "AutoTriggerOnChange": vm.formData.material.nuget.poll,
  223. "Destination": vm.formData.material.nuget.name,
  224. "MaterialSpecificDetails": {
  225. "packageId": vm.formData.material.nuget.packageId,
  226. "includePrerelease": vm.formData.material.nuget.includePrerelease
  227. }
  228. };
  229. }
  230.  
  231. var pipeline = {
  232. "OriginalName": vm.formData.pipeline.name,
  233. "Name": vm.formData.pipeline.name,
  234. "GroupName": vm.groupName,
  235. "Materials": [material],
  236. "EnvironmentVariables": [],
  237. "Parameters": [],
  238. "Environment": {},
  239. "Stages": [{
  240. "Name": vm.formData.stage.name,
  241. "Jobs": [{
  242. "Name": "defaultJob",
  243. "Tasks": [{
  244. "Command": "cmd",
  245. "Arguments": ["/c"],
  246. "RunIfCondition": 'Passed',
  247. "Type": 'Exec'
  248. }],
  249. "EnvironmentVariables": []
  250. }],
  251. "EnvironmentVariables": [],
  252. "NeverCleanArtifacts": false,
  253. "CleanWorkingDirectory": false,
  254. "StageType": vm.formData.stage.trigger
  255. }],
  256. "AutoScheduling": vm.formData.pipeline.autoSchedule
  257. };
  258.  
  259. var tokenIsValid = authDataService.checkTokenExpiration();
  260. if (tokenIsValid) {
  261. var token = window.localStorage.getItem("accessToken");
  262. pipeConfig.createPipeline(pipeline, token)
  263. .then(function (res) {
  264. vm.formData = {};
  265. vm.getAll();
  266. console.log(res);
  267. }, function (err) {
  268. vm.formData = {};
  269. vm.getAll();
  270. console.log(err);
  271. })
  272. } else {
  273. var currentRefreshToken = window.localStorage.getItem("refreshToken");
  274. authDataService.getNewToken(currentRefreshToken)
  275. .then(function (res) {
  276. var token = res.access_token;
  277. pipeConfig.createPipeline(pipeline, token)
  278. .then(function (res) {
  279. vm.formData = {};
  280. vm.getAll();
  281. console.log(res);
  282. }, function (err) {
  283. vm.formData = {};
  284. vm.getAll();
  285. console.log(err);
  286. })
  287. }, function (err) {
  288. console.log(err);
  289. })
  290. }
  291. };
  292.  
  293. vm.removePipeline = function (pipeName) {
  294. var tokenIsValid = authDataService.checkTokenExpiration();
  295. if (tokenIsValid) {
  296. var token = window.localStorage.getItem("accessToken");
  297. pipeConfig.deletePipeline(pipeName, token)
  298. .then(function (res) {
  299. vm.getAll();
  300. console.log(res);
  301. }, function (err) {
  302. vm.getAll();
  303. console.log(err);
  304. })
  305. } else {
  306. var currentRefreshToken = window.localStorage.getItem("refreshToken");
  307. authDataService.getNewToken(currentRefreshToken)
  308. .then(function (res) {
  309. var token = res.access_token;
  310. pipeConfig.deletePipeline(pipeName, token)
  311. .then(function (res) {
  312. vm.getAll();
  313. console.log(res);
  314. }, function (err) {
  315. vm.getAll();
  316. console.log(err);
  317. })
  318. }, function (err) {
  319. console.log(err);
  320. })
  321. }
  322. };
  323.  
  324. vm.wizardInfo = {
  325. steps: {
  326. first: 'Setup',
  327. second: 'Materials',
  328. third: 'Review'
  329. },
  330. buttons: {
  331. back: 'Back',
  332. continue: 'Continue',
  333. submit: 'Submit'
  334. },
  335. labels: {
  336. autoSchedule: 'Auto Scheduling',
  337. name: 'Name',
  338. pipelineName: 'Pipeline Name',
  339. gitUrl: 'Git URL',
  340. branch: 'Branch',
  341. username: 'Username',
  342. password: 'Password',
  343. tfsDomain: 'Domain',
  344. Url: 'Url',
  345. projectPath: 'Project Path',
  346. stageName: 'Stage Name',
  347. trigger: 'Trigger option',
  348. nugetUrl: 'URL',
  349. nugetPackage: 'Package',
  350. nugetPackageVersion: 'Package Version',
  351. nugetPrerelease: 'Include Prerelease'
  352. },
  353. validationMsg: {
  354. error: "You have some form errors. Please check below.",
  355. success: "Your form validation is successful!"
  356. },
  357. placeholders: {
  358. pipelineName: 'Enter your pipeline name',
  359. gitUrl: 'Enter GIT url',
  360. username: 'Enter TFS username',
  361. password: 'Enter TFS password',
  362. tfsUrl: 'Enter TFS url',
  363. tfsDomain: 'Enter TFS domain',
  364. projectPath: 'Enter TFS project path',
  365. stageName: 'Enter stage name',
  366. materialName: 'Enter material name',
  367. gitUsername: 'Enter GIT username',
  368. gitPassword: 'Enter GIT password',
  369. gitBranch: 'Enter GIT branch (optional)',
  370. nugetUrl: 'Enter NuGet url',
  371. nugetPackage: 'Enter NuGet Package',
  372. nugetPackageVersion: 'Enter NuGet Package Version'
  373. }
  374. };
  375.  
  376. //region Changes class of logos if name is entered by user
  377. vm.gitInputChange = function (gitName) {
  378. if (gitName == undefined || gitName.length == 0) {
  379. $('#logoGit').removeClass('l-active2');
  380. } else {
  381. $('#logoGit').addClass('l-active2');
  382. }
  383. };
  384. vm.tfsInputChange = function (tfsName) {
  385. if (tfsName == undefined || tfsName.length == 0) {
  386. $('#logoTfs').removeClass('l-active2');
  387. } else {
  388. $('#logoTfs').addClass('l-active2');
  389. }
  390. };
  391. vm.nugetInputChange = function (nugetName) {
  392. if (nugetName == undefined || nugetName.length == 0) {
  393. $('#logoNuget').removeClass('l-active2');
  394. } else {
  395. $('#logoNuget').addClass('l-active2');
  396. }
  397. };
  398. //endregion
  399.  
  400. vm.getAll();
  401.  
  402. var interval = $interval(function () {
  403. vm.getAll();
  404. }, 3000);
  405.  
  406. $scope.$on('$destroy', function () {
  407. $interval.cancel(interval);
  408. interval = undefined;
  409. });
  410.  
  411. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement