diff --git a/manila/manager.py b/manila/manager.py
index 3a5e86d475..ccd2898d1f 100644
--- a/manila/manager.py
+++ b/manila/manager.py
@@ -103,7 +103,19 @@ class Manager(base.Base, PeriodicTasks):
     def init_host(self):
         """Handle initialization if this is a standalone service.
 
-        Child classes should override this method.
+        A hook point for services to execute tasks before the services are made
+        available (i.e. showing up on RPC and starting to accept RPC calls) to
+        other components.  Child classes should override this method.
+
+        """
+        pass
+
+    def init_host_with_rpc(self):
+        """A hook for service to do jobs after RPC is ready.
+
+        Like init_host(), this method is a hook where services get a chance
+        to execute tasks that *need* RPC. Child classes should override
+        this method.
 
         """
         pass
diff --git a/manila/scheduler/manager.py b/manila/scheduler/manager.py
index 8dc31dd0e2..55c2bcf700 100644
--- a/manila/scheduler/manager.py
+++ b/manila/scheduler/manager.py
@@ -86,7 +86,7 @@ class SchedulerManager(manager.Manager):
         self.message_api = message_api.API()
         super(SchedulerManager, self).__init__(*args, **kwargs)
 
-    def init_host(self):
+    def init_host_with_rpc(self):
         ctxt = context.get_admin_context()
         self.request_service_capabilities(ctxt)
 
diff --git a/manila/service.py b/manila/service.py
index 2fcf759e62..3f09504604 100644
--- a/manila/service.py
+++ b/manila/service.py
@@ -135,6 +135,7 @@ class Service(service.Service):
         LOG.info('Starting %(topic)s node (version %(version_string)s)',
                  {'topic': self.topic, 'version_string': version_string})
         self.model_disconnected = False
+        self.manager.init_host()
         ctxt = context.get_admin_context()
 
         if self.coordinator:
@@ -156,7 +157,8 @@ class Service(service.Service):
         self.rpcserver = rpc.get_server(target, endpoints)
         self.rpcserver.start()
 
-        self.manager.init_host()
+        self.manager.init_host_with_rpc()
+
         if self.report_interval:
             pulse = loopingcall.FixedIntervalLoopingCall(self.report_state)
             pulse.start(interval=self.report_interval,
diff --git a/manila/tests/scheduler/test_manager.py b/manila/tests/scheduler/test_manager.py
index bdf1b3d80f..c0273b9c5f 100644
--- a/manila/tests/scheduler/test_manager.py
+++ b/manila/tests/scheduler/test_manager.py
@@ -85,14 +85,14 @@ class SchedulerManagerTestCase(test.TestCase):
 
         self.assertIsInstance(test_manager.driver, filter.FilterScheduler)
 
-    def test_init_host(self):
+    def test_init_host_with_rpc(self):
 
         self.mock_object(context,
                          'get_admin_context',
                          mock.Mock(return_value='fake_admin_context'))
         self.mock_object(self.manager, 'request_service_capabilities')
 
-        self.manager.init_host()
+        self.manager.init_host_with_rpc()
 
         self.manager.request_service_capabilities.assert_called_once_with(
             'fake_admin_context')
diff --git a/releasenotes/notes/bug-1271568-fix-rpc-init-host-with-rpc-6e76afa553b4f2af.yaml b/releasenotes/notes/bug-1271568-fix-rpc-init-host-with-rpc-6e76afa553b4f2af.yaml
new file mode 100644
index 0000000000..d83830731b
--- /dev/null
+++ b/releasenotes/notes/bug-1271568-fix-rpc-init-host-with-rpc-6e76afa553b4f2af.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    An issue with RPC handling on service restart was addressed by ensuring
+    proper initialization before creating the RPC consumer.  See `bug 1271568
+    <https://bugs.launchpad.net/manila/+bug/1271568>`_ for more details.