try:
        host_name, user_name, password, args = set_cli_argparse('Delete Provider contract.', key_args)
        tenant_name = args.pop('tenant')
        routed_outside_name = args.pop('routed_outside')
        external_network_name = args.pop('external_network')
        contract_name = args.pop('contract')

    except SystemExit:

        if check_if_requesting_help(sys.argv):
            sys.exit('Help Page')

        if len(sys.argv)>1:
            print 'Invalid input arguments.'

        host_name, user_name, password = input_login_info()
        tenant_name = input_tenant_name()
        routed_outside_name = input_routed_outside_name()
        external_network_name = input_external_network_name()
        contract_name = input_key_args()

    # Login to APIC
    modir = apic_login(host_name, user_name, password)

    # Execute the main function
    delete_L3_epg_provider_contract(modir, tenant_name, routed_outside_name, external_network_name, contract_name)

    modir.logout()


from utility import *


if __name__ == '__main__':

    # Login
    hostname, username, password = '******', 'admin', 'Cisco123' #input_login_info(msg='')
    try:
        modir = apic_login(hostname, username, password)
        print 'Login succeed.'
    except KeyError:
        print 'Login fail.'
        sys.exit()

    # Wizard starts asking inputs step by step
    tenant_name = input_tenant_name()
    routed_outside_name = createRoutedOutside.input_key_args()
    external_network = createExternalNetwork.input_key_args()
    provider_contract_name = createL3EpgProviderContract.input_key_args()
    consumer_contract_name = createL3EpgConsumerContract.input_key_args()
    private_network = configPrivateNetworkDefaultTimers.input_key_args()
    private_network_optional_args = configPrivateNetworkDefaultTimers.input_optional_args()
    bridge_domain = associateL3OutsideNetworkToBD.input_key_args()

    # Running
    createL3EpgProviderContract.create_L3_epg_provider_contract(modir, tenant_name, routed_outside_name, external_network, provider_contract_name)
    createL3EpgConsumerContract.create_L3_epg_consumer_contract(modir, tenant_name, routed_outside_name, external_network, consumer_contract_name)
    configPrivateNetworkDefaultTimers.config_private_network_default_timers(modir, tenant_name, private_network, args_from_CLI=private_network_optional_args)
    associateL3OutsideNetworkToBD.associate_l3_outside_network_to_bd(modir, tenant_name, bridge_domain, routed_outside_name)

    try:
        host_name, user_name, password, args = set_cli_argparse(
            'Delete Provider contract.', key_args)
        tenant_name = args.pop('tenant')
        routed_outside_name = args.pop('routed_outside')
        external_network_name = args.pop('external_network')
        contract_name = args.pop('contract')

    except SystemExit:

        if check_if_requesting_help(sys.argv):
            sys.exit('Help Page')

        if len(sys.argv) > 1:
            print 'Invalid input arguments.'

        host_name, user_name, password = input_login_info()
        tenant_name = input_tenant_name()
        routed_outside_name = input_routed_outside_name()
        external_network_name = input_external_network_name()
        contract_name = input_key_args()

    # Login to APIC
    modir = apic_login(host_name, user_name, password)

    # Execute the main function
    delete_L3_epg_provider_contract(modir, tenant_name, routed_outside_name,
                                    external_network_name, contract_name)

    modir.logout()