def test_get_keystone_client(self, client_mock, environ):
     clients.get_keystone_client()
     client_mock.assert_called_once_with(
         username=environ["OS_USERNAME"],
         password=environ["OS_PASSWORD"],
         auth_url=environ["OS_AUTH_URL"],
         tenant_name=environ["OS_TENANT_NAME"])
def initialize_neutron(network_desc):
    neutron = clients.get_neutron_client()
    keystone = clients.get_keystone_client()
    admin_tenant = _get_admin_tenant_id(keystone)
    if 'physical' in network_desc:
        network_type = 'physical'
        if not admin_tenant:
            raise ValueError("No admin tenant registered in Keystone")
        if not network_desc['physical']['metadata_server']:
            raise ValueError("metadata_server is required for physical "
                             "networks")
    elif 'float' in network_desc:
        network_type = 'float'
    else:
        raise ValueError("No float or physical network defined.")
    net = _create_net(neutron, network_desc, network_type, admin_tenant)
    subnet = _create_subnet(neutron, net, network_desc, network_type,
                            admin_tenant)
    if 'external' in network_desc:
        router = _create_router(neutron, subnet)
        ext_net = _create_net(neutron, network_desc, 'external', None)
        _create_subnet(neutron, ext_net, network_desc, 'external', None)
        neutron.add_gateway_router(router['router']['id'],
                                   {'network_id': ext_net['network']['id']})
    LOG.debug("Neutron configured.")
def using_ironic(keystone=None):
    LOG.debug('Checking for usage of ironic.')
    if keystone is None:
        keystone = clients.get_keystone_client()
    return 'ironic' in [service.name for service in keystone.services.list()]