diff --git a/confluent_server/confluent/firmwaremanager.py b/confluent_server/confluent/firmwaremanager.py index 10b4c287..0a7c8438 100644 --- a/confluent_server/confluent/firmwaremanager.py +++ b/confluent_server/confluent/firmwaremanager.py @@ -83,17 +83,21 @@ class Updater(object): 'detail': self.detail} -def remove_updates(nodes, tenant, element): - if len(element) < 5: +def remove_updates(nodes, tenant, element, type='firmware'): + if len(element) < 5 and element[:2] != ['media', 'uploads']: raise exc.InvalidArgumentException() upid = element[-1] + if type == 'firmware': + myparty = updatesbytarget + else: + myparty = uploadsbytarget for node in nodes: try: - upd = updatesbytarget[(node, tenant)][upid] + upd = myparty[(node, tenant)][upid] except KeyError: raise exc.NotFoundException('No active update matches request') upd.cancel() - del updatesbytarget[(node, tenant)][upid] + del myparty[(node, tenant)][upid] yield msg.DeletedResource( 'nodes/{0}/inventory/firmware/updates/active/{1}'.format( node, upid)) diff --git a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py index 338f4bb8..e4541e2a 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py @@ -1057,5 +1057,8 @@ def delete(nodes, element, configmanager, inputdata): if '/'.join(element).startswith('inventory/firmware/updates/active'): return firmwaremanager.remove_updates(nodes, configmanager.tenant, element) + elif '/'.join(element).startswith('media/uploads'): + return firmwaremanager.remove_updates(nodes, configmanager.tenant, + element, type='mediaupload') return perform_requests( 'delete', nodes, element, configmanager, inputdata)