def client_relation(relid=None, unit=None): send_osd_settings() if ready_for_service(): log('mon cluster in quorum and osds bootstrapped ' '- providing client with keys, processing broker requests') service_name = get_client_application_name(relid, unit) if not service_name: log('Unable to determine remote service name, deferring ' 'processing of broker requests') return public_addr = get_public_addr() data = { 'key': ceph.get_named_key(service_name), 'auth': config('auth-supported'), 'ceph-public-address': public_addr } rbd_features = get_rbd_features() if rbd_features: data['rbd-features'] = rbd_features if not unit: unit = remote_unit() if is_unsupported_cmr(unit): return data.update( handle_broker_request(relid, unit, add_legacy_response=True)) relation_set(relation_id=relid, relation_settings=data)
def get_ceph_context(): networks = get_networks('ceph-public-network') public_network = ', '.join(networks) networks = get_networks('ceph-cluster-network') cluster_network = ', '.join(networks) cephcontext = { 'auth_supported': config('auth-supported'), 'mon_hosts': config('monitor-hosts') or ' '.join(get_mon_hosts()), 'fsid': leader_get('fsid'), 'old_auth': cmp_pkgrevno('ceph', "0.51") < 0, 'use_syslog': str(config('use-syslog')).lower(), 'ceph_public_network': public_network, 'ceph_cluster_network': cluster_network, 'loglevel': config('loglevel'), 'dashboard': str(config('enable-dashboard')).lower(), 'dio': str(config('use-direct-io')).lower(), } if config('prefer-ipv6'): dynamic_ipv6_address = get_ipv6_addr()[0] if not public_network: cephcontext['public_addr'] = dynamic_ipv6_address if not cluster_network: cephcontext['cluster_addr'] = dynamic_ipv6_address else: cephcontext['public_addr'] = get_public_addr() cephcontext['cluster_addr'] = get_cluster_addr() rbd_features = get_rbd_features() if rbd_features: cephcontext['rbd_features'] = rbd_features if config('disable-pg-max-object-skew'): cephcontext['disable_object_skew'] = config( 'disable-pg-max-object-skew') # NOTE(dosaboy): these sections must correspond to what is supported in the # config template. sections = ['global', 'mds', 'mon'] cephcontext.update(CephConfContext(permitted_sections=sections)()) return cephcontext