diff --git a/client/autodeploy_client/Client.py b/client/autodeploy_client/Client.py
index 10646ba..3bed9a1 100644
--- a/client/autodeploy_client/Client.py
+++ b/client/autodeploy_client/Client.py
@@ -125,4 +125,15 @@ def getCommitsDiff(self,workdir,commit,owner=''):
for item in res.split("\n"):
if item=="" or item=="Done" : continue
result.append(item)
+ return result
+
+ def getChangeLog(self, workdir, since,to, owner=''):
+ if owner == '':
+ owner = Config.Owner
+ msg = Job.createGetChangeLog(owner, workdir, self.scm,options={"since":since,"to":to})
+ res = self._send(msg)
+ result = []
+ for item in res.split("\n"):
+ if item == "" or item == "Done": continue
+ result.append(item)
return result
\ No newline at end of file
diff --git a/client/autodeploy_client/ClientJob.py b/client/autodeploy_client/ClientJob.py
index 2d410b6..fa6d7ac 100644
--- a/client/autodeploy_client/ClientJob.py
+++ b/client/autodeploy_client/ClientJob.py
@@ -150,6 +150,19 @@ def creategetCommitsDiffMessage(owner, workdir, commit, scm,options=None):
f += '%s'%workdir
f += '%s'%commit
+ if options:
+ f += ''
+ for option in options.keys():
+ f += "" % (option, options[option])
+
+ f += ""
+ f += ''
+ return f
+
+def createGetChangeLog(owner,workdir,scm,options=None):
+ sec = base64.encodestring(importKey().encrypt(owner + scm + "LIST-CHANGES", "")[0])
+ f = '\n' % (owner, "LIST-CHANGES", sec, scm)
+ f += '%s' % workdir
if options:
f += ''
for option in options.keys():
diff --git a/server/Config.cfg b/server/Config.cfg
index c836575..34fc44c 100755
--- a/server/Config.cfg
+++ b/server/Config.cfg
@@ -1,4 +1,4 @@
[Server]
port: 4567
-publicKey: /home/mohamed/autoDeploy/autoDeploy/server/client.pub
+publicKey: /home/mohamed/AutoDeploy/server/client.pub
diff --git a/server/Request.py b/server/Request.py
index 597e820..a115d9c 100755
--- a/server/Request.py
+++ b/server/Request.py
@@ -173,4 +173,24 @@ def parseSwitchCommitJob(message):
def parseGetCommitDiff(message):
- return parseSwitchCommitJob(message)
\ No newline at end of file
+ return parseSwitchCommitJob(message)
+
+def parseGetChangeLog(message):
+ params = {}
+ optionsDict = {}
+ doc = xml.dom.minidom.parseString(message)
+ Job = doc.getElementsByTagName('job')[0]
+ scm = Job.getAttribute("scm")
+ workdir = getValue(Job, 'workdir')
+
+ requestType = Job.getAttribute('type')
+ owner = Job.getAttribute('owner')
+ options = (Job.getElementsByTagName('option'))
+ for option in options:
+ name = option.getAttribute("name")
+ optionsDict[name] = option.firstChild.nodeValue
+
+ print 'Recieved New Job from ' + owner + '.....'
+ params = {"workdir": workdir, "owner": owner, "requestType": requestType,
+ "scm": scm, "options": optionsDict}
+ return params
\ No newline at end of file
diff --git a/server/autodeploy-server.py b/server/autodeploy-server.py
index b90b004..9e99c29 100755
--- a/server/autodeploy-server.py
+++ b/server/autodeploy-server.py
@@ -143,6 +143,26 @@ def HandleClient(clientsock):
if job["scm"]=="git":
gclient=git.GIT(workdir=job["workdir"])
cmd=gclient.commit_diff_cmd(commit=job["commit"])
+
+ elif req["requestType"]=="LIST-CHANGES":
+ job = Request.parseGetChangeLog(msg)
+ if job["scm"] == "git":
+ gclient = git.GIT(workdir=job["workdir"])
+ cmd = gclient.get_changelog(since=job["options"]["since"], to=job["options"]["to"])
+ result = []
+ res = Common.run(cmd)
+ print res
+ if "ERR:" in res:
+ Response.sendData(clientsock, res)
+ else:
+ for line in res.split("\n"):
+ try:
+ if line != "":
+ result.append(line.replace("*", "").strip())
+ except:
+ pass
+ print result
+ Response.sendData(clientsock, "\n".join(result))
elif req["requestType"]=="DEPLOY":
print msg
job = Request.parseDeployJob(msg)
diff --git a/server/scm/Git.py b/server/scm/Git.py
index a815716..4498610 100644
--- a/server/scm/Git.py
+++ b/server/scm/Git.py
@@ -42,3 +42,6 @@ def switch_to_histroy_cmd(self,commit):
def commit_diff_cmd(self,commit):
Common.run(self.get_pull_cmd())
return 'git rev-list %s..HEAD'%(commit)
+ def get_changelog(self,since,to):
+ return "cd %s;git shortlog %s..%s"%(self.workdir,since,to)
+
diff --git a/webapp/autoDeploy/autodeploy/api.py b/webapp/autoDeploy/autodeploy/api.py
index ee6416e..cac9641 100644
--- a/webapp/autoDeploy/autodeploy/api.py
+++ b/webapp/autoDeploy/autodeploy/api.py
@@ -31,6 +31,7 @@ def deploy(request):
import Common
server = Server.objects.get(name=request.session["deploy_server"])
project = Project.objects.get(name=request.session["deploy_project"])
+ last_Deployment=Deployment_Server.objects.filter(server=server,project=project).latest()
D= Deployment_Server()
c = Client(str(project.repo_type), server.ip, server.port)
D.project = project
@@ -60,14 +61,36 @@ def deploy(request):
link="http://"+server.DNS+project.deployment_link
print link
if project.emailUsers!="" or project.emailUsers!=" ":
-# for user in project.emailUsers.split(","):
- Common.send(project.emailUsers.replace(",",";"),"New version of %s deployed"%project.name,"Dear User, This is an automated notification that a new version of %s has been deployed at: %s"%(project.name,link),fromUser=None,cc="",bcc="",)
+ changes=c.getChangeLog(project.working_dir,since=last_Deployment.update_version,to=request.GET["commit"])
+ changes_text="
Changes
"
+ found=False
+ for change in changes:
+ if change.endswith(":"): continue
+ changes_text+="
%s
"%change
+ found=True
+ if found:
+ changes_text+="
"
+ else:
+ changes_text=""
+ Common.send(project.emailUsers.replace(",",";"),"New version of %s deployed"%project.name,"Dear User, This is an automated notification that a new version of %s has been deployed at: %s %s"%(project.name,link,changes_text),fromUser=None,cc="",bcc="",)
return HttpResponse(res+",,"+link)
else:
print "in else"
link=project.deployment_link
if project.emailUsers!="" or project.emailUsers!=" ":
- Common.send(project.emailUsers.replace(",",";"),"New version of %s deployed"%project.name,"Dear User, This is an automated notification that a new version of %s has been deployed at: %s"%(project.name,link),fromUser=None,cc="",bcc="",)
+ changes=c.getChangeLog(project.working_dir,since=last_Deployment.update_version,to=request.GET["commit"])
+ changes_text="
Changes
"
+ found=False
+ for change in changes:
+ if change.endswith(":"): continue
+ changes_text+="
%s
"%change
+ found=True
+ if found:
+ changes_text += "
"
+ else:
+ changes_text = ""
+
+ Common.send(project.emailUsers.replace(",",";"),"New version of %s deployed"%project.name,"Dear User, This is an automated notification that a new version of %s has been deployed at: %s. %s"%(project.name,link,changes_text),fromUser=None,cc="",bcc="",)
return HttpResponse(res+",,"+link)
else: return HttpResponse(res)
diff --git a/webapp/autoDeploy/autodeploy/models.py b/webapp/autoDeploy/autodeploy/models.py
index 242ea3d..15d32a9 100644
--- a/webapp/autoDeploy/autodeploy/models.py
+++ b/webapp/autoDeploy/autodeploy/models.py
@@ -55,6 +55,9 @@ class Deployment_Server(models.Model):
project = models.ForeignKey(Project)
server = models.ForeignKey(Server)
+ class Meta:
+ get_latest_by="id"
+
class Plugins(models.Model):
name=models.CharField(max_length=50)
settings=models.TextField()
diff --git a/webapp/autoDeploy/media/AutoDeploy/autodeploy.yaml b/webapp/autoDeploy/media/AutoDeploy/autodeploy.yaml
deleted file mode 100644
index f0ee7f2..0000000
--- a/webapp/autoDeploy/media/AutoDeploy/autodeploy.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-files:
- - source: /webapp/autoDeploy/*
- destination: /var/www/autodeploy/
-
-permissions:
- - object: /var/www/autodeploy/
- owner: mohamed
- group: users
- mode: 755
- type: directory
-
-events:
- beforeInstall:
- - location: "/bin/rm -rf /var/www/autodeploy"
- afterInstall:
- - location: "/var/www/autodeploy/manage.py runserver 0.0.0.0:9002 &"
- interpreter: python
- wait: False