diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1c4a8175..04f9040a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,11 @@
-# v4.1.0 (Unreleased)
+# v4.1.0
 
 #### New Resources:
    - Appliance node information
 
+#### Bug fixes & Enhancements
+- [#309](https://github.com/HewlettPackard/python-hpOneView/issues/309) HPOneViewException not raised when connection with paused VM fails
+
 # v4.0.0
 #### Notes
 Major release which extends support of the SDK to OneView Rest API version 500 (OneView v3.10).
diff --git a/hpOneView/connection.py b/hpOneView/connection.py
index 4d32ad3a..bba6b8d0 100644
--- a/hpOneView/connection.py
+++ b/hpOneView/connection.py
@@ -14,6 +14,7 @@ from __future__ import unicode_literals
 from builtins import open
 from builtins import str
 from future import standard_library
+from future.utils import raise_from
 
 standard_library.install_aliases()
 
@@ -479,8 +480,11 @@ class connection(object):
     # Login/Logout to/from appliance
     ###########################################################################
     def login(self, cred, verbose=False):
-        if self._validateVersion is False:
-            self.validateVersion()
+        try:
+            if self._validateVersion is False:
+                self.validateVersion()
+        except Exception as e:
+            raise_from(HPOneViewException('Failure during login attempt.'), e)
 
         self._cred = cred
         try:
diff --git a/setup.py b/setup.py
index ff2ac945..3fe21c28 100644
--- a/setup.py
+++ b/setup.py
@@ -26,10 +26,10 @@ from setuptools import find_packages
 from setuptools import setup
 
 setup(name='hpOneView',
-      version='4.0.0',
+      version='4.1.0',
       description='HPE OneView Python Library',
       url='https://github.com/HewlettPackard/python-hpOneView',
-      download_url="https://github.com/HewlettPackard/python-hpOneView/tarball/v4.0.0",
+      download_url="https://github.com/HewlettPackard/python-hpOneView/tarball/v4.1.0",
       author='Hewlett Packard Enterprise Development LP',
       author_email='oneview-pythonsdk@hpe.com',
       license='MIT',

HPOneViewException not raised when connection with paused VM fails 
Hi guys,

When I try to create the OneView client but my VM is paused, an **OSError** exception is raised instead of a HPOneViewException. The HPOneViewException should not cover this type of exception in this scenario? For treat this exception is only possible if I catch an **OSError**, but is seems odd for me since this also could be used as a HPOneViewException maybe.

**Code example:**

```python
#VM paused
config = {
	"ip": "x.x.x.x",
	"credentials": {
		"userName": "user_name",
		"password": "pass"
	}
}

oneview_client = OneViewClient(config)
```

**Result:**

```shell
Traceback (most recent call last):
  File "one_view.py", line 89, in <module>
    one_view = OneView(config)
  File "one_view.py", line 12, in __init__
    self.oneview_client = OneViewClient(config)
  File "/usr/local/lib/python3.5/dist-packages/hpOneView/oneview_client.py", line 118, in __init__
    self.__connection.login(config["credentials"])
  File "/usr/local/lib/python3.5/dist-packages/hpOneView/connection.py", line 483, in login
    self.validateVersion()
  File "/usr/local/lib/python3.5/dist-packages/hpOneView/connection.py", line 79, in validateVersion
    version = self.get(uri['version'])
  File "/usr/local/lib/python3.5/dist-packages/hpOneView/connection.py", line 324, in get
    resp, body = self.do_http('GET', uri, '')
  File "/usr/local/lib/python3.5/dist-packages/hpOneView/connection.py", line 126, in do_http
    conn.request(method, path, body, http_headers)
  File "/usr/lib/python3.5/http/client.py", line 1106, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.5/http/client.py", line 1151, in _send_request
    self.endheaders(body)
  File "/usr/lib/python3.5/http/client.py", line 1102, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python3.5/http/client.py", line 934, in _send_output
    self.send(msg)
  File "/usr/lib/python3.5/http/client.py", line 877, in send
    self.connect()
  File "/usr/lib/python3.5/http/client.py", line 1252, in connect
    super().connect()
  File "/usr/lib/python3.5/http/client.py", line 849, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "/usr/lib/python3.5/socket.py", line 711, in create_connection
    raise err
  File "/usr/lib/python3.5/socket.py", line 702, in create_connection
    sock.connect(sa)
OSError: [Errno 113] No route to host
```


diff --git a/tests/unit/test_connection.py b/tests/unit/test_connection.py
index 9206ed11..4a5a9cdc 100644
--- a/tests/unit/test_connection.py
+++ b/tests/unit/test_connection.py
@@ -869,6 +869,13 @@ class ConnectionTest(unittest.TestCase):
         self.assertEqual(self.connection.get_session_id(), '123')
         self.assertEqual(self.connection.get_session(), True)
 
+    @patch.object(connection, 'get')
+    def test_login_catches_exceptions_as_hpOneView(self, mock_get):
+        mock_get.side_effect = [Exception('test')]
+
+        with self.assertRaises(HPOneViewException):
+            self.connection.login({})
+
     @patch.object(connection, 'get')
     @patch.object(connection, 'post')
     def test_login_with_exception_in_post(self, mock_post, mock_get):

pip install -e .
parse_log_pytest
requirements.txt
pytest mock
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
exceptiongroup==1.2.2
future==1.0.0
-e git+https://github.com/HewlettPackard/python-hpOneView.git@294a2d9f6510d39865b9bc638a2f08459a7374e2#egg=hpOneView
iniconfig==2.1.0
mock==5.2.0
packaging==24.2
pluggy==1.5.0
pytest==8.3.5
tomli==2.2.1

name: python-hpOneView
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - exceptiongroup==1.2.2
      - future==1.0.0
      - iniconfig==2.1.0
      - mock==5.2.0
      - packaging==24.2
      - pluggy==1.5.0
      - pytest==8.3.5
      - tomli==2.2.1
prefix: /opt/conda/envs/python-hpOneView

tests/unit/test_connection.py::ConnectionTest::test_login_catches_exceptions_as_hpOneView
tests/unit/test_connection.py::ConnectionTest::test_default_headers tests/unit/test_connection.py::ConnectionTest::test_default_headers_when_etag_validation_is_disabled tests/unit/test_connection.py::ConnectionTest::test_default_headers_when_etag_validation_is_disabled_and_enabled tests/unit/test_connection.py::ConnectionTest::test_default_headers_when_etag_validation_is_enabled tests/unit/test_connection.py::ConnectionTest::test_default_headers_when_etag_validation_is_enabled_and_disabled tests/unit/test_connection.py::ConnectionTest::test_delete_should_do_rest_calls_when_status_accepted tests/unit/test_connection.py::ConnectionTest::test_delete_should_do_rest_calls_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_delete_should_raise_exception_when_status_internal_error tests/unit/test_connection.py::ConnectionTest::test_delete_should_raise_exception_when_status_not_found tests/unit/test_connection.py::ConnectionTest::test_delete_should_return_body_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_delete_should_return_tuple_when_status_accepted tests/unit/test_connection.py::ConnectionTest::test_delete_should_send_merged_headers_when_headers_provided tests/unit/test_connection.py::ConnectionTest::test_do_http_with_bad_status_line tests/unit/test_connection.py::ConnectionTest::test_do_http_with_invalid_json_return tests/unit/test_connection.py::ConnectionTest::test_do_http_with_invalid_unicode tests/unit/test_connection.py::ConnectionTest::test_do_rest_call_with_304_status tests/unit/test_connection.py::ConnectionTest::test_do_rest_call_with_304_status_and_invalid_json tests/unit/test_connection.py::ConnectionTest::test_download_to_stream_when_error_status_with_decode_error tests/unit/test_connection.py::ConnectionTest::test_download_to_stream_when_error_status_with_empty_body tests/unit/test_connection.py::ConnectionTest::test_download_to_stream_when_error_status_with_response_body tests/unit/test_connection.py::ConnectionTest::test_download_to_stream_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_encode_multipart_formdata tests/unit/test_connection.py::ConnectionTest::test_get_connection_ssl_trust_all tests/unit/test_connection.py::ConnectionTest::test_get_connection_ssl_trust_all_with_proxy tests/unit/test_connection.py::ConnectionTest::test_get_connection_trusted_ssl_bundle tests/unit/test_connection.py::ConnectionTest::test_get_connection_trusted_ssl_bundle_with_proxy tests/unit/test_connection.py::ConnectionTest::test_headers_with_api_version_300 tests/unit/test_connection.py::ConnectionTest::test_login tests/unit/test_connection.py::ConnectionTest::test_login_with_exception_in_post tests/unit/test_connection.py::ConnectionTest::test_patch_should_do_rest_call_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_patch_should_do_rest_calls_when_status_accepted tests/unit/test_connection.py::ConnectionTest::test_patch_should_raise_exception_when_status_internal_error tests/unit/test_connection.py::ConnectionTest::test_patch_should_raise_exception_when_status_not_found tests/unit/test_connection.py::ConnectionTest::test_patch_should_return_body_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_patch_should_return_tuple_when_status_accepted tests/unit/test_connection.py::ConnectionTest::test_patch_should_send_merged_headers_when_headers_provided tests/unit/test_connection.py::ConnectionTest::test_post_multipart_should_handle_json_load_exception tests/unit/test_connection.py::ConnectionTest::test_post_multipart_should_put_headers tests/unit/test_connection.py::ConnectionTest::test_post_multipart_should_put_request tests/unit/test_connection.py::ConnectionTest::test_post_multipart_should_raise_exception_when_response_status_400 tests/unit/test_connection.py::ConnectionTest::test_post_multipart_should_read_file_in_chunks_of_1mb tests/unit/test_connection.py::ConnectionTest::test_post_multipart_should_remove_temp_encoded_file tests/unit/test_connection.py::ConnectionTest::test_post_multipart_should_return_response_and_body_when_response_status_200 tests/unit/test_connection.py::ConnectionTest::test_post_multipart_should_send_file_in_chuncks_of_1mb tests/unit/test_connection.py::ConnectionTest::test_post_multipart_with_response_handling_when_status_200_and_body_is_not_task tests/unit/test_connection.py::ConnectionTest::test_post_multipart_with_response_handling_when_status_200_and_body_is_task tests/unit/test_connection.py::ConnectionTest::test_post_multipart_with_response_handling_when_status_202_with_task tests/unit/test_connection.py::ConnectionTest::test_post_multipart_with_response_handling_when_status_202_without_task tests/unit/test_connection.py::ConnectionTest::test_post_should_do_rest_call_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_post_should_do_rest_calls_when_status_accepted tests/unit/test_connection.py::ConnectionTest::test_post_should_raise_exception_when_status_internal_error tests/unit/test_connection.py::ConnectionTest::test_post_should_raise_exception_when_status_not_found tests/unit/test_connection.py::ConnectionTest::test_post_should_return_body_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_post_should_return_tuple_when_status_accepted tests/unit/test_connection.py::ConnectionTest::test_post_should_send_merged_headers_when_headers_provided tests/unit/test_connection.py::ConnectionTest::test_post_when_status_is_202_and_response_is_not_a_task tests/unit/test_connection.py::ConnectionTest::test_post_when_status_is_202_and_task_contains_taskState tests/unit/test_connection.py::ConnectionTest::test_put_should_do_rest_call_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_put_should_do_rest_calls_when_status_accepted tests/unit/test_connection.py::ConnectionTest::test_put_should_raise_exception_when_status_internal_error tests/unit/test_connection.py::ConnectionTest::test_put_should_raise_exception_when_status_not_found tests/unit/test_connection.py::ConnectionTest::test_put_should_return_body_when_status_ok tests/unit/test_connection.py::ConnectionTest::test_put_should_return_tuple_when_status_accepted tests/unit/test_connection.py::ConnectionTest::test_put_should_send_merged_headers_when_headers_provided tests/unit/test_connection.py::ConnectionTest::test_task_in_response_body_without_202_status tests/unit/test_connection.py::ConnectionTest::test_validate_version_exceeding_current tests/unit/test_connection.py::ConnectionTest::test_validate_version_exceeding_minimum
setup.py hpOneView/connection.py CHANGELOG.md
setup.py hpOneView/connection.py CHANGELOG.md