#!/usr/bin/env python3
# Copyright 2019 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from __future__ import print_function

import pprint
import sys
import time

import dbus
import flimflam

if len(sys.argv) < 2:
    print('Usage: %s <service_name>' % (sys.argv[0]))
    sys.exit(1)

flim = flimflam.FlimFlam(dbus.SystemBus())

timeout = time.time() + 30
while time.time() < timeout:
    service = flim.FindElementByProperty('Service', 'Name', sys.argv[1])
    if service:
        break
    time.sleep(.5)

if service is None:
    print('Unknown service %s' % sys.argv[1])
    sys.exit(2)

(success, diagnostics) = flim.ConnectService(service=service)

print('Success:', success)
pprint.pprint(diagnostics)
