def test_integration_dev(self): # Get options opts = load_config(self.CONFIG) # TODO: There should be a more elegant way of obtaining all the releases releases = ( [key for key in opts["cas"].keys()] + [key + "-pg" for key in opts["cas"].keys()] + list(opts["msps"]["AlphaMSP"]["orderers"]["nodes"].keys()) + [("cdb-" + key) for key in opts["msps"]["BetaMSP"]["peers"]["nodes"].keys()] + [key for key in opts["msps"]["BetaMSP"]["peers"]["nodes"].keys()]) # Run Fabric script check_cluster( self.CONTEXT ) # Dangerous operation, recheck we have not shifted context runner_fabric(opts) # Delete all deployments from Helm check_cluster( self.CONTEXT ) # Dangerous operation, recheck we have not shifted context execute(f"helm delete --purge {' '.join(releases)}") # Delete the namespaces check_cluster( self.CONTEXT ) # Dangerous operation, recheck we have not shifted context execute("kubectl delete ns alpha beta")
def main(settings_file, verbose=False): # pragma: no cover opts = load_config(settings_file) extract_credentials(opts, 'orderer', verbose=verbose) extract_credentials(opts, 'peer', verbose=verbose) extract_crypto(opts, 'orderer', verbose=verbose) extract_crypto(opts, 'peer', verbose=verbose) upgrade_charts(opts, 'orderer', verbose=verbose) upgrade_charts(opts, 'peer', verbose=verbose)
def crypto(ctx): # pragma: no cover opts = load_config(ctx.obj['settings_file']) # Set up Admin MSPs admin_msp(opts, opts['orderers']['msp'], verbose=ctx.obj['verbose']) admin_msp(opts, opts['peers']['msp'], verbose=ctx.obj['verbose']) # Genesis & Channel genesis_block(opts, verbose=ctx.obj['verbose']) channel_tx(opts, verbose=ctx.obj['verbose']) # Setup node MSPs setup_nodes(opts, 'orderer', verbose=ctx.obj['verbose']) setup_nodes(opts, 'peer', verbose=ctx.obj['verbose'])
def test_load_config(self, mock_check_cluster, mock_open, mock_path, mock_yaml): mock_yaml.load.side_effect = [{ 'core': { 'chart_repo': 'a-repo', 'cluster': 'a-cluster', 'dir_config': './a_dir', 'dir_values': './another_dir' } }] mock_path.isdir.side_effect = [False] mock_path.abspath.side_effect = [ '/home/user/a_dir', '/home/user/another_dir' ] load_config('./some_settings.yaml') mock_open.assert_called_once_with('./some_settings.yaml') mock_yaml.load.assert_called_once() mock_check_cluster.assert_called_once_with('a-cluster') mock_path.isdir.assert_called_once_with('a-repo') assert mock_path.expanduser.call_count == 2 assert mock_path.abspath.call_count == 2
def test_load_config_repodir(self, mock_check_cluster, mock_open, mock_path, mock_yaml): mock_yaml.load.side_effect = [{ "core": { "chart_repo": "./a_repo_dir", "dir_config": "./config", "dir_crypto": "./crypto", "dir_values": "./helm_values", } }] mock_path.isdir.side_effect = [True] mock_path.abspath.side_effect = [ "/home/user/a_repo_dir", "/home/user/config", "/home/user/crypto", "/home/user/helm_values", ] load_config("./some_settings.yaml") mock_open.assert_called_once_with("./some_settings.yaml") mock_yaml.load.assert_called_once() mock_check_cluster.assert_not_called() mock_path.isdir.assert_called_once_with("./a_repo_dir") assert mock_path.expanduser.call_count == 4 assert mock_path.abspath.call_count == 4
def fabric(ctx): # pragma: no cover opts = load_config(ctx.obj['settings_file']) # Setup CA setup_ca(opts, upgrade=ctx.obj['upgrade'], verbose=ctx.obj['verbose']) # Crypto material admin_msp(opts, opts['orderers']['msp'], verbose=ctx.obj['verbose']) admin_msp(opts, opts['peers']['msp'], verbose=ctx.obj['verbose']) genesis_block(opts, verbose=ctx.obj['verbose']) channel_tx(opts, verbose=ctx.obj['verbose']) setup_nodes(opts, 'orderer', verbose=ctx.obj['verbose']) setup_nodes(opts, 'peer', verbose=ctx.obj['verbose']) # Orderers setup_ord(opts, upgrade=ctx.obj['upgrade'], verbose=ctx.obj['verbose']) # Peers setup_peer(opts, upgrade=ctx.obj['upgrade'], verbose=ctx.obj['verbose']) setup_channel(opts, verbose=ctx.obj['verbose'])
def test_integration_qa(self): # Get options opts = load_config(self.CONFIG) # Save TLS of each CA in its relevant secret ns_create("cas") # TODO: Eventually we should enable getting path for multiple CAs programatically execute( ( "kubectl -n cas create secret tls ca--tls " + f"--cert={self.TLS_PATH}.crt " + f"--key={self.TLS_PATH}.key" ) ) # TODO: There should be a more elegant way of obtaining all the releases releases = ( [key for key in opts["cas"].keys()] + [key + "-pg" for key in opts["cas"].keys()] + list(opts["msps"]["AlphaMSP"]["orderers"]["nodes"].keys()) + [ ("cdb-" + key) for key in opts["msps"]["BetaMSP"]["peers"]["nodes"].keys() ] + [key for key in opts["msps"]["BetaMSP"]["peers"]["nodes"].keys()] ) # Run Fabric script check_cluster( self.CONTEXT ) # Dangerous operation, recheck we have not shifted context runner_fabric(opts) # Delete all deployments from Helm check_cluster( self.CONTEXT ) # Dangerous operation, recheck we have not shifted context execute(f"helm delete --purge {' '.join(releases)}") # Delete the namespaces check_cluster( self.CONTEXT ) # Dangerous operation, recheck we have not shifted context execute("kubectl delete ns cas alpha beta")
def deploy(settings): opts = load_config(settings.settings_file) runner_deploy(opts, upgrade=settings.upgrade, verbose=settings.verbose)
def settings(ctx): # pragma: no cover data = load_config(ctx.obj['settings_file']) print('Settings successfully loaded...\n') if ctx.obj['verbose']: # TODO: Pretty print & colorise output print(json.dumps(data, indent=4))
def composer_up(settings): opts = load_config(settings.settings_file) runner_composer_up(opts, verbose=settings.verbose)
def cert_auth(settings): opts = load_config(settings.settings_file) runner_ca(opts, upgrade=settings.upgrade, verbose=settings.verbose)
def main(settings_file, verbose=False): # pragma: no cover opts = load_config(settings_file) upgrade_network(opts, verbose=verbose)
def composer(ctx): # pragma: no cover opts = load_config(ctx.obj['settings_file']) deploy_composer(opts, upgrade=ctx.obj['upgrade'], verbose=ctx.obj['verbose']) setup_admin(opts, verbose=ctx.obj['verbose']) install_network(opts, verbose=ctx.obj['verbose'])
def ca(ctx): # pragma: no cover opts = load_config(ctx.obj['settings_file']) setup_ca(opts, upgrade=ctx.obj['upgrade'], verbose=ctx.obj['verbose'])
def fabric(settings): opts = load_config(settings.settings_file) runner_fabric(opts, upgrade=settings.upgrade, verbose=settings.verbose)
def crypto(settings): opts = load_config(settings.settings_file) runner_crypto(opts)
def settings(settings): data = load_config(settings.settings_file) print("Settings successfully loaded...\n") if settings.verbose: # TODO: Pretty print & colorise output print(json.dumps(data, indent=4))
def peer(settings): opts = load_config(settings.settings_file) runner_peer(opts, upgrade=settings.upgrade)
def composer(settings): opts = load_config(settings.settings_file) runner_composer(opts, upgrade=settings.upgrade, verbose=settings.verbose)
def settings(settings): data = load_config(settings.settings_file) logging.info("Settings successfully loaded...\n") logging.debug(pretty_print(json.dumps(data, indent=4)))
def crypto(settings): opts = load_config(settings.settings_file) runner_crypto(opts, verbose=settings.verbose)
def peer(ctx): # pragma: no cover opts = load_config(ctx.obj['settings_file']) setup_peer(opts, upgrade=ctx.obj['upgrade'], verbose=ctx.obj['verbose']) setup_channel(opts, verbose=ctx.obj['verbose'])