中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ocata如何啟動nova-api服務

發布時間:2021-12-18 17:02:24 來源:億速云 閱讀:130 作者:小新 欄目:云計算

這篇文章主要為大家展示了“ocata如何啟動nova-api服務”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ocata如何啟動nova-api服務”這篇文章吧。

啟動nova的api服務時,需要調用nova-api命令,nova-api命令最終是調用nova.cmd.api模塊里的main方法。

nova-api命令的main方法解析:

def main():
    config.parse_args(sys.argv)#此方法會解析命令行傳入進來的參數(sys.argv),配置文件的參數管理使用oslo.config模塊進行管理。
    logging.setup(CONF, "nova")#調用solo.log模塊建立nova域的日志空間
    utils.monkey_patch()#此方法會根據配置文件里的monkey_path參數來確定是否對某些模塊打補丁。
    objects.register_all()#注冊所有需要的模塊對象if 'osapi_compute' in CONF.enabled_apis:#這里對于緩存nova-compute服務版本是必要的,當使用網絡ID為'auto'或'none',發出服務器創建請求時,將會查找該版本。        objects.Service.enable_min_version_cache()
    log = logging.getLogger(__name__)#構建獲取logger

    gmr.TextGuruMeditation.setup_autorun(version)#使用oslo.reports模塊來管理收集錯誤報告

    launcher = service.process_launcher()#獲取oslo.service模塊的服務啟動實例
    started = 0    for api in CONF.enabled_apis:#定義了api-paste.ini兩個默認的sections名,分別為osapi_compute,metadata
        should_use_ssl = api in CONF.enabled_ssl_apistry:
            server = service.WSGIService(api, use_ssl=should_use_ssl)#遍歷啟wsgi服務實例,會根據api-paste.ini配置文件加載app
            launcher.launch_service(server, workers=server.workers or 1)
            started += 1        except exception.PasteAppNotFound as ex:
            log.warning(
                _LW("%s. ``enabled_apis`` includes bad values. "                    "Fix to remove this warning."), ex)if started == 0:
        log.error(_LE('No APIs were started. '                      'Check the enabled_apis config option.'))
        sys.exit(1)

    launcher.wait()#服務阻塞

api-paste.ini解析:

pasteDeploy通過文件配置的方式將各個功能以模塊化的方式組裝在一起。這樣做的好處是把各個功能特性分塊化后方便組裝與拆卸,起到了松耦合的作用。

############# Metadata #############[composite:metadata]use = egg:Paste#urlmap   #調用paste模塊的urlmap來轉發URL,配置文件中的enabled_apis的其中一個默認值就是metadata
/: meta    #將/的路徑轉發到[pipeline:meta]處理,:號也可以換成=號來映射[pipeline:meta]pipeline = cors metaapp[app:metaapp]paste.app_factory = nova.api.metadata.handler:MetadataRequestHandler.factory############## OpenStack ##############[composite:osapi_compute] #這里的url路徑映射是使用:號,也可以換成=號來代替
use = call:nova.api.openstack.urlmap:urlmap_factory #這里nova自定義了urlmap工廠來處理URL,配置文件中的enabled_apis的其中一個默認值就是osapi_compute
/: oscomputeversions         #將/的路徑轉發到[pipeline:oscomputeversions]處理# v21是與v2完全匹配的功能,但它在wsgi表面上具有更嚴格的輸入驗證(防止API早期模糊化)。# 它還通過API微版本提供了新功能,這些微版本可供客戶選擇。不知情的客戶端將接收到相同的凍結v2 API特性集,但有一些寬松的驗證/v2: openstack_compute_api_v21_legacy_v2_compatible #將/v2開頭的url轉到[composite:openstack_compute_api_v21_legacy_v2_compatible]處理
/v2.1: openstack_compute_api_v21    #將/v2.1開頭的url轉到[composite:openstack_compute_api_v21]處理[composite:openstack_compute_api_v21]
#調用自定義的composite工廠方法。方法里會根據配置文件的認證策略來決定加載下面哪一種應用,默認加載keystone,也可以將配置文件里的auth_strategy設置為noauth3。
use = call:nova.api.auth:pipeline_factory_v21
#在noauth3和keystone配置里不同的地方是noauth3和authtoken這兩個認證filter,authtoken會先進行keystone登陸驗證
noauth3 = cors http_proxy_to_wsgi compute_req_id faultwrap sizelimit osprofiler noauth3 osapi_compute_app_v21keystone = cors http_proxy_to_wsgi compute_req_id faultwrap sizelimit osprofiler authtoken keystonecontext osapi_compute_app_v21[composite:openstack_compute_api_v21_legacy_v2_compatible]use = call:nova.api.auth:pipeline_factory_v21noauth3 = cors http_proxy_to_wsgi compute_req_id faultwrap sizelimit osprofiler noauth3 legacy_v2_compatible osapi_compute_app_v21keystone = cors http_proxy_to_wsgi compute_req_id faultwrap sizelimit osprofiler authtoken keystonecontext legacy_v2_compatible osapi_compute_app_v21[filter:request_id]
# 它確保為每個API請求分配請求ID并將其設置到request environment。請求ID也被添加到API響應中。 paste.filter_factory = oslo_middleware:RequestId.factory # 確保請求ID的中間件[filter:compute_req_id]
# 它確保為每個請求到compute服務的api分配請求ID并將其設置到request environ。請求ID也被添加到API響應中。paste.filter_factory = nova.api.compute_req_id:ComputeReqIdMiddleware.factory[filter:faultwrap]paste.filter_factory = nova.api.openstack:FaultWrapper.factory[filter:noauth3]paste.filter_factory = nova.api.openstack.auth:NoAuthMiddleware.factory[filter:osprofiler]paste.filter_factory = nova.profiler:WsgiMiddleware.factory[filter:sizelimit]paste.filter_factory = oslo_middleware:RequestBodySizeLimiter.factory #限制傳入請求的大小的中間件。 [filter:http_proxy_to_wsgi]
# 此中間件使用遠程HTTP反向代理提供的環境變量重載WSGI環境變量。 paste.filter_factory = oslo_middleware.http_proxy_to_wsgi:HTTPProxyToWSGI.factory # 到WSGI終止中間件的HTTP代理。 [filter:legacy_v2_compatible]paste.filter_factory = nova.api.openstack:LegacyV2CompatibleWrapper.factory[app:osapi_compute_app_v21]paste.app_factory = nova.api.openstack.compute:APIRouterV21.factory[pipeline:oscomputeversions]pipeline = cors faultwrap http_proxy_to_wsgi oscomputeversionapp[app:oscomputeversionapp]paste.app_factory = nova.api.openstack.compute.versions:Versions.factory########### Shared ###########[filter:cors]
# 這個中間件允許WSGI應用程序為多個配置的域提供CORS報頭.paste.filter_factory = oslo_middleware.cors:filter_factory # CORS中間件 oslo_config_project = nova[filter:keystonecontext]paste.filter_factory = nova.api.auth:NovaKeystoneContext.factory[filter:authtoken]paste.filter_factory = keystonemiddleware.auth_token:filter_factory

以上是“ocata如何啟動nova-api服務”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉林省| 乐陵市| 定襄县| 赣榆县| 临沂市| 临朐县| 昭平县| 牟定县| 长葛市| 鄂伦春自治旗| 迭部县| 镇原县| 焦作市| 车致| 洪泽县| 江油市| 绥滨县| 浏阳市| 达孜县| 孟连| 泉州市| 资兴市| 盐亭县| 万山特区| 尼木县| 垫江县| 南汇区| 南平市| 邯郸市| 历史| 黄陵县| 随州市| 武邑县| 彭阳县| 大邑县| 芜湖市| 高雄市| 临江市| 龙里县| 体育| 建湖县|