# 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 nephos.fabric.ca import setup_ca
from nephos.fabric.crypto import admin_msp, genesis_block, channel_tx, setup_nodes
from nephos.fabric.ord import setup_ord
from nephos.fabric.peer import setup_peer, create_channel
from nephos.composer.install import deploy_composer, install_network, setup_card
from nephos.composer.upgrade import upgrade_network
[docs]def runner_ca(opts, upgrade=False, verbose=False):
"""Deploy CAs.
Args:
opts (dict): Nephos options dict.
upgrade (bool): Do we upgrade the deployment? False by default.
verbose (bool): Verbosity. False by default.
"""
if opts["cas"]:
setup_ca(opts, upgrade=upgrade, verbose=verbose)
else:
print("No CAs defined in Nephos settings, ignoring CA setup")
[docs]def runner_composer(opts, upgrade=False, verbose=False):
"""Deploy Hyperledger Composer.
Args:
opts (dict): Nephos options dict.
upgrade (bool): Do we upgrade the deployment? False by default.
verbose (bool): Verbosity. False by default.
"""
deploy_composer(opts, upgrade=upgrade, verbose=verbose)
setup_card(opts, verbose=verbose)
install_network(opts, verbose=verbose)
[docs]def runner_composer_up(opts, verbose=False):
"""Upgrade Hyperledger Composer network (experimental).
Args:
opts (dict): Nephos options dict.
verbose (bool): Verbosity. False by default.
"""
upgrade_network(opts, verbose=verbose)
[docs]def runner_crypto(opts, verbose=False):
"""Create Crypto-material by either using CAs or save Cryptogen material.
Args:
opts (dict): Nephos options dict.
verbose (bool): Verbosity. False by default.
"""
# TODO: Limited by the fact that we manually specify MSPs
# Set up Admin MSPs
admin_msp(opts, opts["orderers"]["msp"], verbose=verbose)
admin_msp(opts, opts["peers"]["msp"], verbose=verbose)
# Genesis & Channel
genesis_block(opts, verbose=verbose)
# TODO: We currently only support a single channel
channel_tx(opts, verbose=verbose)
# Setup node MSPs
setup_nodes(opts, "orderer", verbose=verbose)
setup_nodes(opts, "peer", verbose=verbose)
[docs]def runner_deploy(opts, upgrade=False, verbose=False):
"""Deploy end-to-end deployment of Hyperledger Fabric and Composer.
Args:
opts (dict): Nephos options dict.
upgrade (bool): Do we upgrade the deployment? False by default.
verbose (bool): Verbosity. False by default.
"""
# Fabric
runner_fabric(opts, upgrade=upgrade, verbose=verbose)
# Composer
runner_composer(opts, upgrade=upgrade, verbose=verbose)
[docs]def runner_fabric(opts, upgrade=False, verbose=False):
"""Deploy Hyperledger Fabric, including CAs/Cryptogen, Orderers and Peers.
Args:
opts (dict): Nephos options dict.
upgrade (bool): Do we upgrade the deployment? False by default.
verbose (bool): Verbosity. False by default.
"""
# Setup CA
runner_ca(opts, upgrade=upgrade, verbose=verbose)
# Crypto material
runner_crypto(opts, verbose=verbose)
# Orderers
runner_orderer(opts, upgrade=upgrade, verbose=verbose)
# Peers
runner_peer(opts, upgrade=upgrade, verbose=verbose)
[docs]def runner_orderer(opts, upgrade=False, verbose=False):
"""Deploy Hyperledger Fabric Orderers.
Args:
opts (dict): Nephos options dict.
upgrade (bool): Do we upgrade the deployment? False by default.
verbose (bool): Verbosity. False by default.
"""
setup_ord(opts, upgrade=upgrade, verbose=verbose)
[docs]def runner_peer(opts, upgrade=False, verbose=False):
"""Deploy Hyperledger Fabric Peers.
Args:
opts (dict): Nephos options dict.
upgrade (bool): Do we upgrade the deployment? False by default.
verbose (bool): Verbosity. False by default.
"""
setup_peer(opts, upgrade=upgrade, verbose=verbose)
create_channel(opts, verbose=verbose)