Source code for nephos.fabric.ord

#   Copyright [2018] [Alejandro Vicente Grabovetsky via AID:Tech]
#
#   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.

from time import sleep

from nephos.fabric.utils import get_helm_pod
from nephos.fabric.settings import get_namespace, get_version
from nephos.helpers.helm import helm_check, helm_extra_vars, helm_install, helm_upgrade
from nephos.helpers.misc import execute


[docs]def check_ord(namespace, release, verbose=False): """Check if Orderer is running. Args: namespace (str): Namespace where Orderer is located. release (str): Name of Orderer Helm release. verbose (bool): Verbosity. False by default. Returns: bool: True once Orderer is correctly running. """ pod_exec = get_helm_pod( namespace=namespace, release=release, app="hlf-ord", verbose=verbose ) res = pod_exec.logs(1000) if "fetching metadata for all topics from broker" in res: return True while True: if "Starting orderer" in res: return True else: sleep(15) res = pod_exec.logs(1000)
# TODO: We need a similar check to see if Peer uses client TLS as well
[docs]def check_ord_tls(opts, verbose=False): """Check TLS status of Orderer. Args: opts (dict): Nephos options dict. verbose (bool): Verbosity. False by default. Returns: bool: True if TLS is enabled, False if TLS is disabled. """ ord_namespace = get_namespace(opts, opts["orderers"]["msp"]) ord_tls, _ = execute( ( "kubectl get cm -n {ns} " + '{release}-hlf-ord--ord -o jsonpath="{{.data.ORDERER_GENERAL_TLS_ENABLED}}"' ).format(ns=ord_namespace, release=opts["orderers"]["names"][0]), verbose=verbose, ) return ord_tls == "true"
[docs]def setup_ord(opts, upgrade=False, verbose=False): """Setup Orderer on K8S. Args: opts (dict): Nephos options dict. upgrade (bool): Do we upgrade the deployment? False by default. verbose (bool): Verbosity. False by default. """ ord_namespace = get_namespace(opts, opts["orderers"]["msp"]) # Kafka if "kafka" in opts["orderers"]: # Kafka upgrade is risky, so we disallow it by default version = get_version(opts, "kafka") config_yaml = "{dir}/kafka/{release}.yaml".format( dir=opts["core"]["dir_values"], release=opts["orderers"]["kafka"]["name"] ) extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml) helm_install( "incubator", "kafka", opts["orderers"]["kafka"]["name"], ord_namespace, extra_vars=extra_vars, verbose=verbose, ) helm_check( "kafka", opts["orderers"]["kafka"]["name"], ord_namespace, pod_num=opts["orderers"]["kafka"]["pod_num"], ) for release in opts["orderers"]["names"]: # HL-Ord version = get_version(opts, "hlf-ord") config_yaml = "{dir}/hlf-ord/{name}.yaml".format( dir=opts["core"]["dir_values"], name=release ) extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml) if not upgrade: helm_install( opts["core"]["chart_repo"], "hlf-ord", release, ord_namespace, extra_vars=extra_vars, verbose=verbose, ) else: helm_upgrade( opts["core"]["chart_repo"], "hlf-ord", release, extra_vars=extra_vars, verbose=verbose, ) helm_check("hlf-ord", release, ord_namespace) # Check that Orderer is running check_ord(ord_namespace, release, verbose=verbose)