Skip to content
This repository was archived by the owner on Oct 3, 2023. It is now read-only.

Commit 2136828

Browse files
Merge pull request #13 from hmrc/release_version_numbers
Allow version numbers to be specified when running a release jar.
2 parents 5c2773e + 626a061 commit 2136828

File tree

5 files changed

+24
-8
lines changed

5 files changed

+24
-8
lines changed

bin/sm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def ServiceCompleter(prefix, **kwargs):
2323
def _process_command():
2424

2525
parser = argparse.ArgumentParser(description='Service Manager - Start, Stop and View services')
26-
parser.add_argument('-r', '--release', action='store_true', help='Used with start to run services using release versions')
26+
parser.add_argument('-r', '--release', type=str, nargs="?", const="LATEST", help='Used with start to run services using the specified release version, or the latest if unspecified')
2727
parser.add_argument('-f', '--fatjar', action='store_true', help='Used with start to run services using fatjars')
2828
parser.add_argument('-F', '--feature', action='append', help='Enable a given feature for all services started')
2929
parser.add_argument('-s', '--status', nargs='*', help='Get the status of a single service or a list of services')

servicemanager/actions/actions.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@ def start_one(context, service_name, fatjar, release, proxy, port=None):
1717
else:
1818
run_from = "SOURCE"
1919

20+
version = release
21+
if version == "LATEST":
22+
version = None
23+
2024
existing_service_status = context.get_service(service_name).status()
2125

2226
if len(existing_service_status) > 0:
2327
print "There is already: '" + str(len(existing_service_status)) + "' instance(s) of the service: '" + service_name + "' running"
2428
return False
2529

26-
if context.start_service(service_name, run_from, proxy, None, None, port):
30+
if context.start_service(service_name, run_from, proxy, port=port, version=version):
2731
if context.get_service(service_name).is_started_on_default_port():
2832
print "Started: " + service_name
2933
return True
@@ -38,7 +42,11 @@ def get_start_cmd(context, service_name, fatjar, release, proxy, port=None):
3842
else:
3943
run_from = "SOURCE"
4044

41-
starter = context.get_service_starter(service_name, run_from, proxy, None, None, port)
45+
version = release
46+
if version == "LATEST":
47+
version = None
48+
49+
starter = context.get_service_starter(service_name, run_from, proxy, port=port, version=version)
4250
return starter.get_start_command(run_from)
4351

4452
def stop_profile(context, profile):

servicemanager/service/smjvmservice.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ def start(self):
2929
return self.start_from_binary()
3030

3131
def process_arguments(self):
32+
run_from = self.run_from
33+
if self.run_from=="RELEASE":
34+
run_from = (self.version or "UNKNOWN") + "-" + run_from
3235
jvm_args = ["-Dservice.manager.serviceName=%s" % self.service_name]
33-
jvm_args += ["-Dservice.manager.runFrom=%s" % self.run_from]
36+
jvm_args += ["-Dservice.manager.runFrom=%s" % run_from]
3437
if self.context.is_test:
3538
jvm_args += ["-Dservice.manager.testId=%s" % self.context.test_id]
3639
jvm_args += ["-Dservice.manager.startTime=%s" % time.time()]

servicemanager/service/smplayservice.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ def start_from_binary(self):
7979

8080
if not self.context.offline:
8181
nexus = SmNexus(self.context, self.service_name)
82+
if not self.version:
83+
self.version = nexus.find_latest_version(self.run_from, self.service_data["binary"]["artifact"])
8284
nexus.download_jar_if_necessary(self.run_from, self.version)
8385

8486
unzip_dir = self._unzip_play_application()

servicemanager/smnexus.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,12 @@ def _get_version_info_from_nexus(self, artifact):
103103
response.close()
104104
return dom
105105

106-
def _find_latest_version(self, repository, artifact):
106+
def find_latest_version(self, run_from, artifact):
107+
if run_from == "RELEASE":
108+
repository = "Release"
109+
else:
110+
repository = "Snapshot"
111+
107112
version_env_var = None
108113
if "versionEnv" in self.context.service_data(self.service_name):
109114
version_env_var = self.context.service_data(self.service_name)["versionEnv"]
@@ -145,14 +150,12 @@ def download_jar_if_necessary(self, run_from, version):
145150
microservice_target_path = self.context.get_microservice_target_path(self.service_name)
146151
repo_mappings = self.context.config_value("nexus")["repoMappings"]
147152
if run_from == "RELEASE":
148-
type_repository = "Release"
149153
url_type_repository = repo_mappings["RELEASE"]
150154
else:
151-
type_repository = "Snapshot"
152155
url_type_repository = repo_mappings["SNAPSHOT"]
153156

154157
if not version:
155-
version = self._find_latest_version(type_repository, artifact)
158+
version = self.find_latest_version(run_from, artifact)
156159

157160
if version:
158161
nexus_extension = self._create_nexus_extension()

0 commit comments

Comments
 (0)