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)
def ca_chart(opts, release, upgrade=False): """Deploy CA Helm chart to K8S. Args: opts (dict): Nephos options dict. release (str): Name of the Helm Chart release. upgrade (bool): Do we upgrade the deployment? False by default. """ values_dir = opts["core"]["dir_values"] repository = opts["core"]["chart_repo"] ca_namespace = get_namespace(opts, ca=release) # PostgreSQL (Upgrades here are dangerous, deactivated by default) # Upgrading database is risky, so we disallow it by default if not upgrade: version = get_version(opts, "postgresql") config_yaml = f"{values_dir}/postgres-ca/{release}-pg.yaml" extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml) helm_install("stable", "postgresql", f"{release}-pg", ca_namespace, extra_vars=extra_vars) helm_check("postgresql", f"{release}-pg", ca_namespace) psql_secret = secret_read(f"{release}-pg-postgresql", ca_namespace) # Different key depending of PostgreSQL version psql_password = (psql_secret.get("postgres-password") or psql_secret["postgresql-password"]) # Fabric CA version = get_version(opts, "hlf-ca") env_vars = [("externalDatabase.password", psql_password)] config_yaml = f"{values_dir}/hlf-ca/{release}.yaml" if not upgrade: extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml, env_vars=env_vars) helm_install(repository, "hlf-ca", release, ca_namespace, extra_vars=extra_vars) else: preserve = ( HelmPreserve(ca_namespace, f"{release}-hlf-ca--ca", "CA_ADMIN", "adminUsername"), HelmPreserve(ca_namespace, f"{release}-hlf-ca--ca", "CA_PASSWORD", "adminPassword"), ) extra_vars = helm_extra_vars( version=version, config_yaml=config_yaml, env_vars=env_vars, preserve=preserve, ) helm_upgrade(repository, "hlf-ca", release, extra_vars=extra_vars) helm_check("hlf-ca", release, ca_namespace)
def setup_ord(opts, upgrade=False): """Setup Orderer on K8S. Args: opts (dict): Nephos options dict. upgrade (bool): Do we upgrade the deployment? False by default. """ # Kafka if "kafka" in opts["ordering"]: # Kafka upgrade is risky, so we disallow it by default version = get_version(opts, "kafka") kafka_config = get_kafka_configs(opts=opts) ord_namespace = get_namespace(opts, msp=kafka_config["msp"]) config_yaml = f"{opts['core']['dir_values']}/{kafka_config['msp']}/kafka/{kafka_config['name']}.yaml" extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml) helm_install( "incubator", "kafka", kafka_config["name"], ord_namespace, extra_vars=extra_vars, ) helm_check( "kafka", kafka_config["name"], ord_namespace, pod_num=kafka_config["pod_num"], ) for msp in get_msps(opts=opts): if not is_orderer_msp(opts=opts, msp=msp): continue ord_namespace = get_namespace(opts, msp=msp) version = get_version(opts, "hlf-ord") for release in get_orderers(opts=opts, msp=msp): # HL-Ord config_yaml = f'{opts["core"]["dir_values"]}/{msp}/hlf-ord/{release}.yaml' 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, ) else: helm_upgrade( opts["core"]["chart_repo"], "hlf-ord", release, extra_vars=extra_vars, ) helm_check("hlf-ord", release, ord_namespace) # Check that Orderer is running check_ord(ord_namespace, release)
def deploy_composer(opts, upgrade=False, verbose=False): """Deploy Hyperledger Composer on K8S. We use the hl-composer Helm chart as a basis to deploying Composer on K8S. Please note that Composer is unmaintained and may eventually be deprecated from this repository as we migrate to raw Fabric. Args: opts (dict): Nephos options dict. upgrade (bool): Do we upgrade the deployment? False by default. verbose (bool): Verbosity. False by default. """ peer_namespace = get_namespace(opts, opts["peers"]["msp"]) # Ensure BNA exists secret_from_file(secret=opts["composer"]["secret_bna"], namespace=peer_namespace, verbose=verbose) composer_connection(opts, verbose=verbose) # Start Composer version = get_version(opts, "hl-composer") config_yaml = "{dir}/hl-composer/{release}.yaml".format( dir=opts["core"]["dir_values"], release=opts["composer"]["name"]) if not upgrade: extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml) helm_install( opts["core"]["chart_repo"], "hl-composer", opts["composer"]["name"], peer_namespace, extra_vars=extra_vars, verbose=verbose, ) else: preserve = (HelmPreserve( peer_namespace, "{}-hl-composer-rest".format(opts["composer"]["name"]), "COMPOSER_APIKEY", "rest.config.apiKey", ), ) extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml, preserve=preserve) helm_upgrade( opts["core"]["chart_repo"], "hl-composer", opts["composer"]["name"], extra_vars=extra_vars, verbose=verbose, ) helm_check("hl-composer", opts["composer"]["name"], peer_namespace, pod_num=3)
def test_helm_extra_vars_everything(self, mock_helm_env_vars, mock_helm_preserve): mock_helm_env_vars.side_effect = [" --set foo=bar"] mock_helm_preserve.side_effect = [" --set egg=sausage"] result = helm_extra_vars( version="a-version", config_yaml="some-config", env_vars="some-env-vars", preserve="some-preserve", verbose=True, ) mock_helm_env_vars.assert_called_once_with("some-env-vars") mock_helm_preserve.assert_called_once_with("some-preserve", verbose=True) assert ( result == " --version a-version -f some-config --set foo=bar --set egg=sausage" )
def test_helm_extra_vars_errorconf(self, mock_helm_env_vars, mock_helm_preserve): with pytest.raises(ValueError): helm_extra_vars(config_yaml={"some-config": "another-config"}) mock_helm_env_vars.assert_not_called() mock_helm_preserve.assert_not_called()
def test_helm_extra_vars_multiconf(self, mock_helm_env_vars, mock_helm_preserve): result = helm_extra_vars(config_yaml=("some-config", "another-config")) mock_helm_env_vars.assert_not_called() mock_helm_preserve.assert_not_called() assert result == " -f some-config -f another-config"
def test_helm_extra_vars(self, mock_helm_env_vars, mock_helm_preserve): result = helm_extra_vars() mock_helm_env_vars.assert_not_called() mock_helm_preserve.assert_not_called() assert result == ""
def setup_peer(opts, upgrade=False): """Setup Peer on K8S. Args: opts (dict): Nephos options dict. upgrade (bool): Do we upgrade the deployment? False by default. """ for msp in get_msps(opts=opts): peer_namespace = get_namespace(opts, msp=msp) for release in get_peers(opts=opts, msp=msp): # Deploy the CouchDB instances version = get_version(opts, "hlf-couchdb") config_yaml = ( f'{opts["core"]["dir_values"]}/{msp}/hlf-couchdb/cdb-{release}.yaml' ) if not upgrade: extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml) helm_install( opts["core"]["chart_repo"], "hlf-couchdb", f"cdb-{release}", peer_namespace, extra_vars=extra_vars, ) else: preserve = ( HelmPreserve( peer_namespace, f"cdb-{release}-hlf-couchdb", "COUCHDB_USERNAME", "couchdbUsername", ), HelmPreserve( peer_namespace, f"cdb-{release}-hlf-couchdb", "COUCHDB_PASSWORD", "couchdbPassword", ), ) extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml, preserve=preserve) helm_upgrade( opts["core"]["chart_repo"], "hlf-couchdb", f"cdb-{release}", extra_vars=extra_vars, ) helm_check("hlf-couchdb", f"cdb-{release}", peer_namespace) # Deploy the HL-Peer charts version = get_version(opts, "hlf-peer") config_yaml = f"{opts['core']['dir_values']}/{msp}/hlf-peer/{release}.yaml" extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml) if not upgrade: helm_install( opts["core"]["chart_repo"], "hlf-peer", release, peer_namespace, extra_vars=extra_vars, ) else: helm_upgrade( opts["core"]["chart_repo"], "hlf-peer", release, extra_vars=extra_vars, ) helm_check("hlf-peer", release, peer_namespace) # Check that peer is running check_peer(peer_namespace, release)
def setup_peer(opts, upgrade=False, verbose=False): """Setup Peer on K8S. Args: opts (dict): Nephos options dict. upgrade (bool): Do we upgrade the deployment? False by default. verbose (bool): Verbosity. False by default. """ peer_namespace = get_namespace(opts, opts["peers"]["msp"]) for release in opts["peers"]["names"]: # Deploy the CouchDB instances version = get_version(opts, "hlf-couchdb") config_yaml = "{dir}/hlf-couchdb/cdb-{name}.yaml".format( dir=opts["core"]["dir_values"], name=release) if not upgrade: extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml) helm_install( opts["core"]["chart_repo"], "hlf-couchdb", "cdb-{}".format(release), peer_namespace, extra_vars=extra_vars, verbose=verbose, ) else: preserve = ( HelmPreserve( peer_namespace, "cdb-{}-hlf-couchdb".format(release), "COUCHDB_USERNAME", "couchdbUsername", ), HelmPreserve( peer_namespace, "cdb-{}-hlf-couchdb".format(release), "COUCHDB_PASSWORD", "couchdbPassword", ), ) extra_vars = helm_extra_vars(version=version, config_yaml=config_yaml, preserve=preserve) helm_upgrade( opts["core"]["chart_repo"], "hlf-couchdb", "cdb-{}".format(release), extra_vars=extra_vars, verbose=verbose, ) helm_check("hlf-couchdb", "cdb-{}".format(release), peer_namespace) # Deploy the HL-Peer charts version = get_version(opts, "hlf-peer") config_yaml = "{dir}/hlf-peer/{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-peer", release, peer_namespace, extra_vars=extra_vars, verbose=verbose, ) else: helm_upgrade( opts["core"]["chart_repo"], "hlf-peer", release, extra_vars=extra_vars, verbose=verbose, ) helm_check("hlf-peer", release, peer_namespace) # Check that peer is running check_peer(peer_namespace, release, verbose=verbose)