Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions src/main/resources/xlr_xldeploy/XLDeployClient.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import ast
import json
import time
import re
from xlrelease.HttpRequest import HttpRequest
from xml.etree import ElementTree as ET

Expand Down Expand Up @@ -107,6 +108,18 @@ def check_response(response, message):
raise Exception(message)


# Both functions bellow are used to sort a list containing strings and numbers
def atof(text):
try:
retval = float(text)
except ValueError:
retval = text
return retval

def natural_keys(text):
return [ atof(c) for c in re.split('(\d+)', text) ]


class XLDeployClient(object):
def __init__(self, http_connection, username=None, password=None):
self.http_request = HttpRequest(http_connection, username, password)
Expand Down Expand Up @@ -299,17 +312,21 @@ def fetch_package2(self, url, user_name, password):
response.status, response.response))

def get_latest_package_version(self, application_id):
query_task = "/deployit/repository/query?parent=%s&resultsPerPage=-1" % application_id
query_task = "/deployit/repository/query?parent=%s" % application_id
query_task_response = self.http_request.get(query_task, contentType='application/xml')
root = ET.fromstring(query_task_response.getResponse())
items = root.findall('ci')
latest_package = ''
if len(items) > 0:
latest_package = items[-1].attrib['ref']
all_package = list()
for item in items:
all_package.append(item.attrib['ref'])
if all_package:
all_package.sort(key=natural_keys)
latest_package = all_package[-1]
return latest_package

def get_all_package_version(self, application_id):
query_task = "/deployit/repository/query?parent=%s&resultsPerPage=-1" % application_id
query_task = "/deployit/repository/query?parent=%s" % application_id
query_task_response = self.http_request.get(query_task, contentType='application/xml')
root = ET.fromstring(query_task_response.getResponse())
items = root.findall('ci')
Expand Down