Add delete method of endpoint in RSD 2.3

Change-Id: Ica9c6741b4d2b2edf84a25fa4b1ab383d73b0323
This commit is contained in:
Lin Yang 2019-03-18 11:18:18 -07:00
parent 12bf5e7f54
commit a0843cf6ab
10 changed files with 33 additions and 46 deletions

View File

@ -136,6 +136,10 @@ class Endpoint(base.ResourceBase):
self._conn.patch(self.path, data=data)
def delete(self):
"""Delete this endpoint"""
self._conn.delete(self.path)
class EndpointCollection(base.ResourceCollectionBase):

View File

@ -23,8 +23,7 @@ identifiers_req_schema = {
},
'DurableName': {'type': 'string'}
},
"required": ['DurableNameFormat', 'DurableName'],
'additionalProperties': False
"required": ['DurableNameFormat', 'DurableName']
}
}
@ -38,8 +37,7 @@ connected_entities_req_schema = {
'properties': {
'@odata.id': {'type': 'string'}
},
"required": ['@odata.id'],
'additionalProperties': False
"required": ['@odata.id']
},
'EntityRole': {
'type': 'string',
@ -57,19 +55,16 @@ connected_entities_req_schema = {
},
'DurableName': {'type': 'string'}
},
"required": ['DurableNameFormat', 'DurableName'],
'additionalProperties': False
"required": ['DurableNameFormat', 'DurableName']
}
}
},
"required": ['EntityLink', 'EntityRole'],
'additionalProperties': False
"required": ['EntityLink', 'EntityRole']
}
}
protocol_req_schema = {
'type': 'string',
'enum': ['NVMeOverFabrics', 'iSCSI']
'type': 'string'
}
ip_transport_details_req_schema = {
@ -82,19 +77,16 @@ ip_transport_details_req_schema = {
'type': 'object',
'properties': {
'Address': {'type': 'string'}
},
'additionalProperties': False
}
},
'IPv6Address': {
'type': 'object',
'properties': {
'Address': {'type': 'string'}
},
'additionalProperties': False
}
},
'Port': {'type': 'number'}
},
'additionalProperties': False
}
}
}
@ -107,6 +99,5 @@ authentication_req_schema = {
'properties': {
'Username': {'type': 'string'},
'Password': {'type': 'string'}
},
'additionalProperties': False
}
}

View File

@ -51,7 +51,8 @@ class EventSubscriptionTestCase(testtools.TestCase):
def test_delete(self):
self.event_subscription_inst.delete()
self.event_subscription_inst._conn.delete.assert_called_once()
self.event_subscription_inst._conn.delete.assert_called_once_with(
self.event_subscription_inst.path)
class EventSubscriptionCollectionTestCase(testtools.TestCase):

View File

@ -426,7 +426,8 @@ class NodeTestCase(testtools.TestCase):
def test_delete_node(self):
self.node_inst.delete_node()
self.node_inst._conn.delete.assert_called_once()
self.node_inst._conn.delete.assert_called_once_with(
self.node_inst.path)
class NodeCollectionTestCase(testtools.TestCase):

View File

@ -53,7 +53,8 @@ class TaskTestCase(testtools.TestCase):
def test_delete(self):
self.task_inst.delete()
self.task_inst._conn.delete.assert_called_once()
self.task_inst._conn.delete.assert_called_once_with(
self.task_inst.path)
class TaskCollectionTestCase(testtools.TestCase):

View File

@ -202,7 +202,8 @@ class ReportDefinitionTestCase(testtools.TestCase):
def test_delete(self):
self.metric_report_definition_inst.delete()
self.metric_report_definition_inst._conn.delete.assert_called_once()
self.metric_report_definition_inst._conn.delete.\
assert_called_once_with(self.metric_report_definition_inst.path)
class ReportDefinitionCollectionTestCase(testtools.TestCase):

View File

@ -129,7 +129,8 @@ class TriggerTestCase(testtools.TestCase):
def test_delete(self):
self.trigger_inst.delete()
self.trigger_inst._conn.delete.assert_called_once()
self.trigger_inst._conn.delete.assert_called_once_with(
self.trigger_inst.path)
class TriggerCollectionTestCase(testtools.TestCase):

View File

@ -169,6 +169,11 @@ class EndpointTestCase(testtools.TestCase):
'At least "username" or "password" parameter has to be specified'):
self.endpoint_inst.update_authentication()
def test_delete(self):
self.endpoint_inst.delete()
self.endpoint_inst._conn.delete.assert_called_once_with(
self.endpoint_inst.path)
class EndpointCollectionTestCase(testtools.TestCase):
@ -389,13 +394,6 @@ class EndpointCollectionTestCase(testtools.TestCase):
identifiers=invalid_identifiers,
connected_entities=connected_entities)
invalid_identifiers = copy.deepcopy(identifiers)
invalid_identifiers[0]['invalid_key'] = 'invalid_value'
self.assertRaises(jsonschema.exceptions.ValidationError,
self.endpoint_col.create_endpoint,
identifiers=invalid_identifiers,
connected_entities=connected_entities)
# Test invalid connected_entities argument
invalid_connected_entities = copy.deepcopy(connected_entities)
invalid_connected_entities[0]['EntityRole'] = 'fake-format'
@ -425,20 +423,7 @@ class EndpointCollectionTestCase(testtools.TestCase):
identifiers=identifiers,
connected_entities=invalid_connected_entities)
invalid_connected_entities = copy.deepcopy(connected_entities)
invalid_connected_entities[0]['invalid_key'] = 'invalid_value'
self.assertRaises(jsonschema.exceptions.ValidationError,
self.endpoint_col.create_endpoint,
identifiers=identifiers,
connected_entities=invalid_connected_entities)
# Test invalid protocol argument
self.assertRaises(jsonschema.exceptions.ValidationError,
self.endpoint_col.create_endpoint,
identifiers=identifiers,
connected_entities=connected_entities,
protocol='invalid_potocol')
self.assertRaises(jsonschema.exceptions.ValidationError,
self.endpoint_col.create_endpoint,
identifiers=identifiers,
@ -457,4 +442,4 @@ class EndpointCollectionTestCase(testtools.TestCase):
self.endpoint_col.create_endpoint,
identifiers=identifiers,
connected_entities=connected_entities,
authentication={'invalid_key': 'invalid_value'})
authentication={'Username': 1})

View File

@ -114,7 +114,8 @@ class ZoneTestCase(testtools.TestCase):
def test_delete(self):
self.zone_inst.delete()
self.zone_inst._conn.delete.assert_called_once()
self.zone_inst._conn.delete.assert_called_once_with(
self.zone_inst.path)
class ZoneCollectionTestCase(testtools.TestCase):

View File

@ -157,7 +157,8 @@ class StorageServiceTestCase(testtools.TestCase):
def test_delete(self):
self.volume_inst.delete()
self.volume_inst._conn.delete.assert_called_once()
self.volume_inst._conn.delete.assert_called_once_with(
self.volume_inst.path)
def test_get_metrics_path(self):
expected = '/redfish/v1/StorageServices/NVMeoE1/Volumes/1/Metrics'