Commit e28916c9 authored by Rafael Monnerat's avatar Rafael Monnerat

slapgrid&SlapTool: Don't post if software release state is already the one expected

  Avoid to excessively post to master if the state is the same as the once expected,
  this decreases significantly the number of posts to master.
parent 31dff4c1
......@@ -375,6 +375,8 @@ class TestSlapOSSlapToolComputerAccess(TestSlapOSSlapToolMixin):
<dictionary id='i43'>
<string>_computer_guid</string>
<string>%(computer_id)s</string>
<string>_known_state</string>
<string>error</string>
<string>_requested_state</string>
<string>destroyed</string>
<string>_software_instance_list</string>
......@@ -391,6 +393,8 @@ class TestSlapOSSlapToolComputerAccess(TestSlapOSSlapToolMixin):
<dictionary id='i46'>
<string>_computer_guid</string>
<string>%(computer_id)s</string>
<string>_known_state</string>
<string>error</string>
<string>_requested_state</string>
<string>available</string>
<string>_software_instance_list</string>
......@@ -742,7 +746,7 @@ class TestSlapOSSlapToolComputerAccess(TestSlapOSSlapToolMixin):
<string>created_at</string>
<string>%(created_at)s</string>
<string>text</string>
<string>building software release %(url_string)s</string>
<string>#building software release %(url_string)s</string>
<string>user</string>
<string>%(computer_id)s</string>
</dictionary>
......
......@@ -996,7 +996,7 @@ class SlapTool(BaseTool):
user = self.getPortalObject().portal_membership.\
getAuthenticatedMember().getUserName()
self._logAccess(user, software_installation_reference,
'building software release %s' % url)
'#building software release %s' % url)
@convertToREST
def _availableSoftwareRelease(self, url, computer_id):
......@@ -1596,6 +1596,15 @@ class SlapTool(BaseTool):
software_release_response._requested_state = 'destroyed'
else:
software_release_response._requested_state = 'available'
known_state = self._getTextAccessStatus(software_installation.getReference())
if known_state.startswith("#access"):
software_release_response._known_state = 'available'
elif known_state.startswith("#building"):
software_release_response._known_state = 'building'
else:
software_release_response._known_state = 'error'
software_release_list.append(software_release_response)
return software_release_list
......
......@@ -158,14 +158,17 @@ class SoftwareRelease(SlapDocument):
(logger or fallback_logger).exception('')
def available(self):
self._connection_helper.POST('availableSoftwareRelease', data={
'url': self.getURI(),
'computer_id': self.getComputerId()})
if getattr(self, '_known_state', 'unknown') != "available":
# Not required to repost if not needed.
self._connection_helper.POST('availableSoftwareRelease', data={
'url': self.getURI(),
'computer_id': self.getComputerId()})
def building(self):
self._connection_helper.POST('buildingSoftwareRelease', data={
'url': self.getURI(),
'computer_id': self.getComputerId()})
if getattr(self, '_known_state', 'unknown') != "building":
self._connection_helper.POST('buildingSoftwareRelease', data={
'url': self.getURI(),
'computer_id': self.getComputerId()})
def destroyed(self):
self._connection_helper.POST('destroyedSoftwareRelease', data={
......
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