diff options
author | Russell Bryant <rbryant@redhat.com> | 2013-01-22 13:55:22 -0500 |
---|---|---|
committer | Russell Bryant <rbryant@redhat.com> | 2013-01-22 14:28:06 -0500 |
commit | 328185099087ae377d6dfcaec7538735e91a3bbc (patch) | |
tree | e830889efd5d14ae645d92ea7598d251a620491c /nova/service.py | |
parent | b512bba76cbed6b602a224521736d79aae3f6c4d (diff) | |
download | nova-328185099087ae377d6dfcaec7538735e91a3bbc.tar.gz nova-328185099087ae377d6dfcaec7538735e91a3bbc.tar.xz nova-328185099087ae377d6dfcaec7538735e91a3bbc.zip |
Ensure service's servicegroup API is created first.
We want to make sure to create the servicegroup API instance early,
before creating other things such as the manager, that will also
create a servicegroup API instance. Internally, the servicegroup
only allocates a single instance of the driver API and we want to
make sure that the service's value of db_allowed is there when
it gets created. For that to happen, when the service class creates
a servicegroup API instance, it needs to be the first thing to do so.
Part of bp no-db-compute.
Change-Id: I41df39d34c4920fcbfcd50c8f0344ee1dd5547d1
Diffstat (limited to 'nova/service.py')
-rw-r--r-- | nova/service.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/nova/service.py b/nova/service.py index df8cf020f..5a2aa482c 100644 --- a/nova/service.py +++ b/nova/service.py @@ -399,6 +399,14 @@ class Service(object): self.binary = binary self.topic = topic self.manager_class_name = manager + # NOTE(russellb) We want to make sure to create the servicegroup API + # instance early, before creating other things such as the manager, + # that will also create a servicegroup API instance. Internally, the + # servicegroup only allocates a single instance of the driver API and + # we want to make sure that our value of db_allowed is there when it + # gets created. For that to happen, this has to be the first instance + # of the servicegroup API. + self.servicegroup_api = servicegroup.API(db_allowed=db_allowed) manager_class = importutils.import_class(self.manager_class_name) self.manager = manager_class(host=self.host, *args, **kwargs) self.report_interval = report_interval @@ -408,10 +416,8 @@ class Service(object): self.saved_args, self.saved_kwargs = args, kwargs self.timers = [] self.backdoor_port = None - self.db_allowed = db_allowed self.conductor_api = conductor.API(use_local=db_allowed) self.conductor_api.wait_until_ready(context.get_admin_context()) - self.servicegroup_api = servicegroup.API(db_allowed=db_allowed) def start(self): verstr = version.version_string_with_package() |