jira.js 4.75 KB
var config=require('config');
var JiraApi = require('jira').JiraApi;
module.exports={
	info:{
		summary:"funzioni atomiche per JIRA",
		state:"ok".red
		},
	execute:function(process,tool){
		
		
		var jira = new JiraApi(config.get('jira4servicenow.protocolJira'), config.get('jira4servicenow.urlJira'),config.get('jira4servicenow.portJira'), config.get('jira4servicenow.userJira'), config.get('jira4servicenow.passwordJira'), config.get('jira4servicenow.jiraApiVersion'),true);
		var nexusJira=this;
		var env = "operations";
		var op = process.argv[3];
		var incId = process.argv[4];
		var assignee = process.argv[5];
		var prioritySn=["1"]
		if(env!=null && op!=null){
			//console.log("finding server "+name.red+" on "+env.red);
			var operations;
			if(env==="operations") operations = nexusJira.list.operations;
				for(i in operations){
					if(operations[i].name===op){
							switch(op){
							case "creaTaskJira":
								this.creaTaskJira("titolo test automatico task da nodejs","descrizione automatica task jira",function(errorJira,responseJira){
									console.log("response "+JSON.stringify(responseJira)+" error: "+JSON.stringify(errorJira));
								});
								break;
							case "creaIncidentJira":
								var priorityJira=getPriorityBySNPriority("4 - Bassa");
								this.creaIncidentJira("titolo test automatico incident da nodejs 8_9 titolo","descrizione automatica incident jira 8_9 descrizione","12725",priorityJira,function(errorJira,responseJira){
									console.log("response "+JSON.stringify(responseJira)+" error: "+JSON.stringify(errorJira));
								});
								break;
							case "findIssueJira":
								this.findIssueJira(incId,function(error,response){				
										console.log("response "+JSON.stringify(response)+" error: "+JSON.stringify(error));
								});
								break;
							default:
								console.log("default case");
							}

							
					}
				}	
		}	

		if(op==null){
			console.log("\n--------------------"+"OPERAZIONI PER JIRA".red+"----------------------------");
			tool.task(this.list.operations);
		}

	},
	/**
	 * [findIssueJira effettua la ricerca di un issue jira ]
	 * @param  {[type]} issueId [issudeId (es:MOB-6822)]
	 * @return {[boolean]}         [ritorna true se la trova e stampa a video]
	 */
	findIssueJira:function(issueId,callback){
		jira.findIssue(issueId, function(error, issue) {
			callback(error,issue);
			return;
		});
	},
	/**
	 * [creaIncidentJira crea un task di tipo incident su jira]
	 * @param  {[type]} titolo      [titolo della issue]
	 * @param  {[type]} descrizione [descrizione della issue]
	 * @return {[type]}             [description]
	 */
	creaIncidentJira:function(titolo,descrizione,componentId,jiraPriority,callback){
		var componentDetail=config.get('jira4servicenow.mapComponent')[componentId];
		var dataissue={"fields": {
			"assignee": {"name": config.get('jira4servicenow.default_assignee_incident')},
	      	"project": {"id": config.get('jira4servicenow.incidentAccountId')},
	      	"summary": titolo,
	      	"description": descrizione,
	      	"issuetype": {"id": config.get('jira4servicenow.incidentIssueType')},
	      	"components": [{"id":componentId}],
	      	"customfield_10602":4,
	      	"priority": {"name": jiraPriority}
	  		}
	  	}

		jira.addNewIssue(dataissue,function(error, response) {
			callback(error,issue);
			return;
		});
							
	},
	/**
	 * [creaTaskJira description]
	 * @param  {[type]} titolo       [description]
	 * @param  {[type]} descrizione  [description]
	 * @param  {[type]} componentId  [description]
	 * @param  {[type]} jiraPriority [description]
	 * @return {[type]}              [description]
	 */
	creaTaskJira:function(titolo,descrizione,componentId,jiraPriority,callback){
		var componentDetail=config.get('jira4servicenow.mapComponent')[componentId];
		var dataissue={"fields": {
			"assignee": {"name": componentDetail.assegneeJira},
	      	"project": {"id": config.get('jira4servicenow.taskAccountId')},
	      	"summary": titolo,
	      	"description": descrizione,
	      	"issuetype": {"id": config.get('jira4servicenow.taskIssueType')},
	      	"components": [{"id":componentId}],
	      	"customfield_10602":4,
	      	"priority": {"name": jiraPriority}
	  		}
	  	}

		jira.addNewIssue(dataissue,function(error,response) {
			callback(error,issue);
			return;
		});
							
	},


	list:{operations:[{
					name:"creaTaskJira",
					summary:"effettua la creazione di un incident per jira",
					state:"1"
				},
				{
					name:"creaIncidentJira",
					summary:"ccrea un incident su jira avente <par1> come titolo e <par2> come descrizione e lo assegna ",
					state:"1"
				},
				{
					name:"findIssueJira",
					summary:"cerca e stampa il JSON relativo  all'issue passata in input su jira",
					state:"1"
				},
				{
					name:"test",
					summary:"test",
					state:"1"
				}
				]
		}
}