Commit c79ea8d4 authored by Nicolas Wavrant's avatar Nicolas Wavrant

runner: let user delete unused software releases

parent 6cab2fc2
......@@ -144,9 +144,29 @@
</div><!-- end tab4 -->
<div id="tab5" class="tabContents">
<div class="clear"></div>
<h2>List of unused Software Releases</h2>
<p></p>
<p>Request here the deletion of Software Releases.</p>
<p>A Software Release won't be deleted from disk until Build&amp;Run is executed. If you requested a Software Release removal by mistake, and Build&amp;Run didn't run yet, it is still possible to request it again.</p>
<div class="clear"></div>
<table width="100%">
<tr>
<th>Software Release URI</th><th>Ask Deletion</th>
</tr>
{% for software_release_uri in software_release_uri_list %}
<p>{{ software_release_uri }}</p>
<tr>
<td>
{{ software_release_uri }}
</td>
<td>
<form action="/destroySoftwareRelease" method="POST">
<input type="hidden" name="uri" value="{{ software_release_uri }}" />
<input type="submit" class="button" title="Remove this software" value="Remove" />
</form>
</td>
</tr>
{% endfor %}
</table>
</div><!-- end tab5 -->
</div>
</div>
......
......@@ -218,6 +218,30 @@ def supplySoftwareRelease(config, sr_path):
if not getCurrentUsedSoftwareReleaseProfile(config):
setCurrentSoftwareRelease(config, sr_path)
def destroySoftwareRelease(config, uri):
available_sr_list = getAvailableSoftwareReleaseURIList(config)
for available_sr in available_sr_list:
if os.path.realpath(available_sr) == os.path.realpath(uri):
real_uri = available_sr
break
else:
return False
slap = slapos.slap.slap()
slap.initializeConnection(config['master_url'])
try:
software_release, = [
x for x in slap.registerComputer(config['computer_id']).getSoftwareReleaseList()
if x.getURI() == real_uri
]
except ValueError:
return False
slap.registerSupply().supply(
real_uri,
computer_guid=config['computer_id'],
state='destroyed',
)
return True
def updateProxy(config):
"""
......@@ -867,7 +891,7 @@ def relativepath(config, path):
'runner_workdir',
)
for virtual_path in virtual_path_list:
if path.startswith(config[virtual_path]):
if os.path.realpath(path).startswith(os.path.realpath(config[virtual_path])):
return path.replace(os.path.realpath(config[virtual_path]), virtual_path)
return ''
......
......@@ -831,6 +831,15 @@ def getMiniShellHistory():
return json.dumps(history)
def destroySoftwareRelease():
software_release_uri = request.form['uri']
if utils.destroySoftwareRelease(app.config, realpath(app.config, software_release_uri)):
flash('Software Release deleted.')
else:
flash('Error: Software Release not found')
return redirect(url_for('inspectInstance'))
#Setup List of URLs
app.add_url_rule('/', 'home', home)
app.add_url_rule('/browseWorkspace', 'browseWorkspace', browseWorkspace)
......@@ -920,3 +929,4 @@ app.add_url_rule('/addUser', 'addUser', addUser, methods=['POST'])
app.add_url_rule('/getSlapgridParameters', 'getSlapgridParameters', getSlapgridParameters, methods=['GET'])
app.add_url_rule('/runCommand', 'runCommand', runCommand, methods=['POST'])
app.add_url_rule("/getMiniShellHistory", 'getMiniShellHistory', getMiniShellHistory, methods=['GET'])
app.add_url_rule("/destroySoftwareRelease", "destroySoftwareRelease", destroySoftwareRelease, methods=['POST'])
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment