diff --git a/CHANGELOG.md b/CHANGELOG.md
index eac8fe11..ec67eb42 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# v5.0.0
+#### Notes
+Major release which supports breaking code changes which will support helper methods implementation
+
+#### Features supported with current release:
+- Id pools ipv4 subnet
+
# 4.7.1
#### Bug fixes
- [#364] (https://github.com/HewlettPackard/python-hpOneView/issues/364) Bug in index_resources.get_all()
diff --git a/endpoints-support.md b/endpoints-support.md
index d1e7df72..5a0db74d 100755
--- a/endpoints-support.md
+++ b/endpoints-support.md
@@ -153,11 +153,11 @@
|/rest/id-pools/ipv4/ranges/{id}/allocated-fragments | GET | :white_check_mark: | :white_check_mark: |
|/rest/id-pools/ipv4/ranges/{id}/free-fragments | GET | :white_check_mark: | :white_check_mark: |
| **ID Pools IPv4 Subnets** |
-|/rest/id-pools/ipv4/subnets | GET | :white_check_mark: | :white_check_mark: |
-|/rest/id-pools/ipv4/subnets | POST | :white_check_mark: | :white_check_mark: |
-|/rest/id-pools/ipv4/subnets/{id} | GET | :white_check_mark: | :white_check_mark: |
-|/rest/id-pools/ipv4/subnets/{id} | PUT | :white_check_mark: | :white_check_mark: |
-|/rest/id-pools/ipv4/subnets/{id} | DELETE | :white_check_mark: | :white_check_mark: |
+|/rest/id-pools/ipv4/subnets | GET | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
+|/rest/id-pools/ipv4/subnets | POST | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
+|/rest/id-pools/ipv4/subnets/{id} | GET | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
+|/rest/id-pools/ipv4/subnets/{id} | PUT | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
+|/rest/id-pools/ipv4/subnets/{id} | DELETE | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| **ID Pools vMAC Ranges** |
|/rest/id-pools/vmac/ranges | POST | :white_check_mark: | :white_check_mark: |
|/rest/id-pools/vmac/ranges/{id} | GET | :white_check_mark: | :white_check_mark: |
diff --git a/examples/id_pools_ipv4_subnets.py b/examples/id_pools_ipv4_subnets.py
index 43e1377b..cb154b76 100644
--- a/examples/id_pools_ipv4_subnets.py
+++ b/examples/id_pools_ipv4_subnets.py
@@ -49,21 +49,22 @@
}
print('\n Create IPv4 subnet for id pools')
-ipv4_subnet = oneview_client.id_pools_ipv4_subnets.create(options)
-pprint(ipv4_subnet)
+ipv4_subnet = oneview_client.id_pools_ipv4_subnets.create(data=options)
+pprint(ipv4_subnet.data)
print('\n Update IPv4 subnet for id pools')
-ipv4_subnet['name'] = 'Changed Name'
-ipv4_subnet = oneview_client.id_pools_ipv4_subnets.update(ipv4_subnet)
-
-print('\n Get IPv4 subnet by uri')
-ipv4_subnet_byuri = oneview_client.id_pools_ipv4_subnets.get(ipv4_subnet['uri'])
-pprint(ipv4_subnet_byuri)
+ipv4_subnet.data['name'] = 'Changed Name'
+ipv4_subnet = ipv4_subnet.update(data=ipv4_subnet.data)
+pprint(ipv4_subnet.data)
print('\n Get all IPv4 subnet')
-all_subnets = oneview_client.id_pools_ipv4_subnets.get_all()
+all_subnets = ipv4_subnet.get_all()
pprint(all_subnets)
+print('\n Get IPv4 subnet by uri')
+ipv4_subnet_byuri = oneview_client.id_pools_ipv4_subnets.get_by_uri(ipv4_subnet.data['uri'])
+pprint(ipv4_subnet_byuri.data)
+
print('\n Delete IPv4 subnet')
-oneview_client.id_pools_ipv4_subnets.delete(ipv4_subnet)
+ipv4_subnet.delete()
print(" Successfully deleted IPv4 subnet")
diff --git a/hpOneView/oneview_client.py b/hpOneView/oneview_client.py
index 6c1a7bf5..1c78acc0 100755
--- a/hpOneView/oneview_client.py
+++ b/hpOneView/oneview_client.py
@@ -510,9 +510,7 @@ def id_pools_ipv4_subnets(self):
Returns:
IdPoolsIpv4Subnets:
"""
- if not self.__id_pools_ipv4_subnets:
- self.__id_pools_ipv4_subnets = IdPoolsIpv4Subnets(self.__connection)
- return self.__id_pools_ipv4_subnets
+ return IdPoolsIpv4Subnets(self.__connection)
@property
def id_pools(self):
diff --git a/hpOneView/resources/servers/id_pools_ipv4_subnets.py b/hpOneView/resources/servers/id_pools_ipv4_subnets.py
index ef161230..dc4fcaff 100644
--- a/hpOneView/resources/servers/id_pools_ipv4_subnets.py
+++ b/hpOneView/resources/servers/id_pools_ipv4_subnets.py
@@ -29,103 +29,15 @@
standard_library.install_aliases()
-from hpOneView.resources.resource import ResourceClient
+from hpOneView.resources.resource import Resource
-class IdPoolsIpv4Subnets(object):
+class IdPoolsIpv4Subnets(Resource):
"""
The ID pools IPv4 subnets resource provides a Client API for managing IPv4 subnets.
"""
URI = '/rest/id-pools/ipv4/subnets'
- def __init__(self, con):
- self._client = ResourceClient(con, self.URI)
-
- def create(self, resource, timeout=-1):
- """
- Creates subnet.
-
- Args:
- resource (dict): Object to create
- timeout: Timeout in seconds. Wait for task completion by default. The timeout does not abort the operation
- in OneView; it just stops waiting for its completion.
-
- Returns:
- dict: Created subnet.
- """
- return self._client.create(resource, timeout=timeout)
-
- def get_all(self, start=0, count=-1, filter='', sort=''):
- """
- Gets a list of IPV4 Subnet resources. Returns a list of resources based on optional sorting and filtering,
- and constrained by start and count parameters.
-
- Args:
- start:
- The first item to return, using 0-based indexing.
- If not specified, the default is 0 - start with the first available item.
- count:
- The number of resources to return. A count of -1 requests all items.
- The actual number of items in the response might differ from the requested
- count if the sum of start and count exceeds the total number of items.
- filter (list or str):
- A general filter/query string to narrow the list of items returned. The
- default is no filter; all resources are returned.
- sort:
- The sort order of the returned data set. By default, the sort order is based
- on create time with the oldest entry first.
-
- Returns:
- list: A list of IPV4 Subnet resources.
- """
- return self._client.get_all(start, count, filter=filter, sort=sort)
-
- def get(self, id_or_uri):
- """
- Gets an IPv4 subnet.
-
- Using the allocator and collector associated with the subnet, IDs may be allocated from or collected back to the
- subnet.
-
- Args:
- id_or_uri: Can be either the subnet ID or URI.
-
- Returns:
- dict: IPv4 subnet.
- """
- return self._client.get(id_or_uri)
-
- def update(self, resource, timeout=-1):
- """
- Update the resource.
-
- Args:
- resource (dict): Information to update.
- timeout: Timeout in seconds. Wait for task completion by default. The timeout does not abort the operation
- in OneView; it just stops waiting for its completion.
-
- Returns:
- dict: Updated resource.
- """
-
- return self._client.update(resource, timeout=timeout)
-
- def delete(self, resource, force=False, timeout=-1):
- """
- Deletes the IPv4 subnet.
-
- Args:
- resource (dict):
- Object to delete
- force (bool):
- If set to true, the operation completes despite any problems with
- network connectivity or errors on the resource itself. The default is false.
- timeout:
- Timeout in seconds. Wait for task completion by default. The timeout does not abort the operation
- in OneView; it just stops waiting for its completion.
-
- Returns:
- bool: Indicates if the resource was successfully deleted.
- """
- return self._client.delete(resource, force=force, timeout=timeout)
+ def __init__(self, connection, options=None):
+ super(IdPoolsIpv4Subnets, self).__init__(connection, options)
diff --git a/tests/unit/resources/servers/test_id_pools_ipv4_subnets.py b/tests/unit/resources/servers/test_id_pools_ipv4_subnets.py
index 91aa67f6..61a38e16 100644
--- a/tests/unit/resources/servers/test_id_pools_ipv4_subnets.py
+++ b/tests/unit/resources/servers/test_id_pools_ipv4_subnets.py
@@ -23,52 +23,59 @@
import mock
import unittest
from hpOneView.connection import connection
-from hpOneView.resources.resource import ResourceClient
+from hpOneView.resources.resource import Resource
from hpOneView.resources.servers.id_pools_ipv4_subnets import IdPoolsIpv4Subnets
class TestIdPoolsIpv4Subnets(unittest.TestCase):
resource_info = {'type': 'Range',
'name': 'No name'}
+ example_uri = "/rest/id-pools/ipv4/subnets/f0a0a113-ec97-41b4-83ce-d7c92b900e7c"
def setUp(self):
self.host = '127.0.0.1'
self.connection = connection(self.host)
self.client = IdPoolsIpv4Subnets(self.connection)
- self.example_uri = "/rest/id-pools/ipv4/subnets/f0a0a113-ec97-41b4-83ce-d7c92b900e7c"
+ self.client.data = {'uri': "/rest/id-pools/ipv4/subnets/f0a0a113-ec97-41b4-83ce-d7c92b900e7c"}
- @mock.patch.object(ResourceClient, 'create')
+ @mock.patch.object(Resource, 'create')
def test_create_called_once(self, mock_create):
self.client.create(self.resource_info)
- mock_create.assert_called_once_with(self.resource_info, timeout=-1)
+ mock_create.assert_called_once_with(self.resource_info)
- @mock.patch.object(ResourceClient, 'get')
- def test_get_by_id_called_once(self, mock_get):
+ @mock.patch.object(Resource, 'load_resource')
+ @mock.patch.object(Resource, 'get_by_uri')
+ def test_get_by_id_called_once(self, mock_get_by_uri, load_resource):
id_pools_subnet_id = "f0a0a113-ec97-41b4-83ce-d7c92b900e7c"
- self.client.get(id_pools_subnet_id)
- mock_get.assert_called_once_with(id_pools_subnet_id)
+ self.client.get_by_uri(id_pools_subnet_id)
+ mock_get_by_uri.assert_called_once_with(id_pools_subnet_id)
- @mock.patch.object(ResourceClient, 'get')
- def test_get_by_uri_called_once(self, mock_get):
- self.client.get(self.example_uri)
- mock_get.assert_called_once_with(self.example_uri)
+ @mock.patch.object(Resource, 'load_resource')
+ @mock.patch.object(Resource, 'get_by_uri')
+ def test_get_by_uri_called_once(self, mock_get_by_uri, load_resource):
+ self.client.get_by_uri(self.example_uri)
+ mock_get_by_uri.assert_called_once_with(self.example_uri)
- @mock.patch.object(ResourceClient, 'update')
- def test_enable_called_once(self, update):
+ @mock.patch.object(Resource, 'load_resource')
+ @mock.patch.object(Resource, 'update')
+ def test_enable_called_once(self, update, load_resource):
self.client.update(self.resource_info.copy())
- update.assert_called_once_with(self.resource_info.copy(), timeout=-1)
+ update.assert_called_once_with(self.resource_info.copy())
- @mock.patch.object(ResourceClient, 'get_all')
- def test_get_allocated_fragments_called_once_with_defaults(self, mock_get):
+ @mock.patch.object(Resource, 'load_resource')
+ @mock.patch.object(Resource, 'get_all')
+ def test_get_allocated_fragments_called_once_with_defaults(self, mock_get, load_resource):
self.client.get_all(self.example_uri)
- mock_get.assert_called_once_with(self.example_uri, -1, filter='', sort='')
+ mock_get.assert_called_once_with(self.example_uri)
- @mock.patch.object(ResourceClient, 'delete')
- def test_delete_called_once(self, mock_delete):
+ @mock.patch.object(Resource, 'load_resource')
+ @mock.patch.object(Resource, 'delete')
+ def test_delete_called_once(self, mock_delete, load_resource):
self.client.delete({'uri': '/rest/uri'}, force=True, timeout=50)
mock_delete.assert_called_once_with({'uri': '/rest/uri'}, force=True, timeout=50)
- @mock.patch.object(ResourceClient, 'delete')
- def test_delete_called_once_with_defaults(self, mock_delete):
+ @mock.patch.object(Resource, 'load_resource')
+ @mock.patch.object(Resource, 'delete')
+ def test_delete_called_once_with_defaults(self, mock_delete, load_resource):
self.client.delete({'uri': '/rest/uri'})
- mock_delete.assert_called_once_with({'uri': '/rest/uri'}, force=False, timeout=-1)
+ mock_delete.assert_called_once_with({'uri': '/rest/uri'})
diff --git a/tests/unit/test_oneview_client.py b/tests/unit/test_oneview_client.py
index f3ae5b7f..a0fa28e3 100755
--- a/tests/unit/test_oneview_client.py
+++ b/tests/unit/test_oneview_client.py
@@ -539,10 +539,6 @@ def test_id_pools_ipv4_ranges_lazy_loading(self):
def test_id_pools_ipv4_subnets_has_right_type(self):
self.assertIsInstance(self._oneview.id_pools_ipv4_subnets, IdPoolsIpv4Subnets)
- def test_id_pools_ipv4_subnets_lazy_loading(self):
- id_pools_ipv4_subnets = self._oneview.id_pools_ipv4_subnets
- self.assertEqual(id_pools_ipv4_subnets, self._oneview.id_pools_ipv4_subnets)
-
def test_id_pools_has_right_type(self):
self.assertIsInstance(self._oneview.id_pools, IdPools)