# Copyright 2018 Canonical Ltd # # 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. # Note that *this* file exists to break a circular import dependency issue # between nova_cc_utils and nova_cc_context. It may be beneficial to migrate # other constants to this file. import charmhelpers.core.hookenv as hookenv API_PORTS = { 'nova-api-ec2': 8773, 'nova-api-os-compute': 8774, 'nova-api-metadata': 8775, 'nova-api-os-volume': 8776, 'nova-placement-api': 8778, 'nova-objectstore': 3333, } CONSOLE_CONFIG = { 'spice': { 'packages': ['nova-spiceproxy'], 'services': ['nova-spiceproxy'], 'proxy-page': '/spice_auto.html', 'proxy-port': 6082, }, 'novnc': { 'packages': ['nova-novncproxy'], 'services': ['nova-novncproxy'], 'proxy-page': '/vnc_auto.html', 'proxy-port': 6080, }, 'xvpvnc': { 'packages': ['nova-xvpvncproxy'], 'services': ['nova-xvpvncproxy'], 'proxy-page': '/console', 'proxy-port': 6081, }, } def api_port(service): return API_PORTS[service] def console_attributes(attr, proto=None): '''Leave proto unset to query attributes of the protocal specified at runtime''' if proto: console_proto = proto else: console_proto = hookenv.config('console-access-protocol') if console_proto is not None and console_proto.lower() in ('none', ''): console_proto = None if attr == 'protocol': return console_proto # 'vnc' is a virtual type made up of novnc and xvpvnc if console_proto == 'vnc': if attr in ['packages', 'services']: return list(set(CONSOLE_CONFIG['novnc'][attr] + CONSOLE_CONFIG['xvpvnc'][attr])) else: return None if console_proto in CONSOLE_CONFIG: if attr == 'proxy-port' and hookenv.config('console-access-port'): return hookenv.config('console-access-port') return CONSOLE_CONFIG[console_proto][attr] return None