ddef9dcfc0
Because we need to allow for a smooth upgrade from Ocata to Pike, we need Pike compute hosts to be tolerant of the bad accounting assumptions that Ocata compute hosts were making. If a user migrates an instance from an Ocata compute host to a Pike compute host, the Ocata compute host will continue essentially re-setting the instance allocation to be an allocation against only the source Ocata host (during the migration operation). We need to have the Pike destination compute host recognize when its in a mixed Ocata/Pike environment and tolerate this incorrect "healing" that the Ocata source host will do. To tolerate this, the Pike destination compute host must continue to behave like an Ocata compute host until all compute hosts are upgraded to Pike or beyond. Note that this adds service version caching for the compute service. We were already doing the lookup for the RPC pin and caching that, so this is not much of a change. Also note that we weren't clearing this caching in tests, so any test that ran code that cached the service version would affect later ones. This clears it as part of the base test setup too. Co-Authored-By: Jay Pipes <jaypipes@gmail.com> Change-Id: Ia93168b1560267178059284186fb2b7096c7e81f
60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
# Copyright 2010 United States Government as represented by the
|
|
# Administrator of the National Aeronautics and Space Administration.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
"""Starter script for Nova Compute."""
|
|
|
|
import shlex
|
|
import sys
|
|
|
|
import os_vif
|
|
from oslo_log import log as logging
|
|
from oslo_privsep import priv_context
|
|
from oslo_reports import guru_meditation_report as gmr
|
|
|
|
from nova.cmd import common as cmd_common
|
|
from nova.compute import rpcapi as compute_rpcapi
|
|
from nova.conductor import rpcapi as conductor_rpcapi
|
|
import nova.conf
|
|
from nova import config
|
|
from nova import objects
|
|
from nova.objects import base as objects_base
|
|
from nova import service
|
|
from nova import utils
|
|
from nova import version
|
|
|
|
CONF = nova.conf.CONF
|
|
LOG = logging.getLogger('nova.compute')
|
|
|
|
|
|
def main():
|
|
config.parse_args(sys.argv)
|
|
logging.setup(CONF, 'nova')
|
|
priv_context.init(root_helper=shlex.split(utils.get_root_helper()))
|
|
utils.monkey_patch()
|
|
objects.register_all()
|
|
# Ensure os-vif objects are registered and plugins loaded
|
|
os_vif.initialize()
|
|
|
|
gmr.TextGuruMeditation.setup_autorun(version)
|
|
|
|
cmd_common.block_db_access('nova-compute')
|
|
objects_base.NovaObject.indirection_api = conductor_rpcapi.ConductorAPI()
|
|
objects.Service.enable_min_version_cache()
|
|
server = service.Service.create(binary='nova-compute',
|
|
topic=compute_rpcapi.RPC_TOPIC)
|
|
service.serve(server)
|
|
service.wait()
|