Beispiel #1
0
def varlink_help(args):
    deli = args.INTERFACE.rfind("/")
    if deli != -1:
        address = args.INTERFACE[:deli]
        interface = args.INTERFACE[deli + 1:]
        client = varlink.Client(address)
    else:
        interface = args.INTERFACE
        client = varlink.Client(resolve_interface=interface,
                                resolver=args.resolver)

    ifaces = client.get_interfaces()
    if interface in ifaces:
        print(ifaces[interface].description)
Beispiel #2
0
def run_client(address):
    print('Connecting to %s' % address)
    with varlink.Client(address) as client, \
            client.open('org.varlink.certification') as con:
        ret = con.Start()
        client_id = ret["client_id"]
        print("client_id:", client_id)
        ret = con.Test01(client_id)
        print("Test01:", ret)
        ret = con.Test02(client_id, ret["bool"])
        print("Test02:", ret)
        ret = con.Test03(client_id, ret["int"])
        print("Test03:", ret)
        ret = con.Test04(client_id, ret["float"])
        print("Test04:", ret)
        ret = con.Test05(client_id, ret["string"])
        print("Test05:", ret)
        ret = con.Test06(client_id, ret["bool"], ret["int"], ret["float"],
                         ret["string"])
        print("Test06:", ret)
        ret = con.Test07(client_id, ret["struct"])
        print("Test07:", ret)
        ret = con.Test08(client_id, ret["map"])
        print("Test08:", ret)
        ret = con.Test09(client_id, ret["set"])
        print("Test09:", ret)
        ret_array = []
        for ret in con.Test10(client_id, ret["mytype"], _more=True):
            print("Test10:", ret)
            ret_array.append(ret["string"])
        ret = con.Test11(client_id, ret_array, _oneway=True)
        print("Test11:", ret)
        ret = con.End(client_id)
        print("End:", ret)
    print("Certification passed")
    def do_run(self, address):
        server = varlink.ThreadingServer(address, ServiceRequestHandler)
        server_thread = threading.Thread(target=server.serve_forever)
        server_thread.daemon = True
        server_thread.start()

        try:
            with varlink.Client(address) as client, \
                    client.open('org.varlink.service') as _connection:
                info = _connection.GetInfo()

                self.assertEqual(len(info['interfaces']), 1)
                self.assertEqual(info['interfaces'][0], "org.varlink.service")
                self.assertEqual(info, service.GetInfo())

                desc = _connection.GetInterfaceDescription(
                    info['interfaces'][0])
                self.assertEqual(
                    desc,
                    service.GetInterfaceDescription("org.varlink.service"))

                _connection.close()

        finally:
            server.shutdown()
            server.server_close()
Beispiel #4
0
def run_client(address):
    print('Connecting to %s\n' % address)
    try:
        with varlink.Client(address) as client, \
                client.open('org.example.more', namespaced=True) as con1, \
                client.open('org.example.more', namespaced=True) as con2:

            for m in con1.TestMore(10, _more=True):
                if hasattr(m.state, 'start') and m.state.start != None:
                    if m.state.start:
                        print("--- Start ---", file=sys.stderr)

                if hasattr(m.state, 'end') and m.state.end != None:
                    if m.state.end:
                        print("--- End ---", file=sys.stderr)

                if hasattr(m.state, 'progress') and m.state.progress != None:
                    print("Progress:", m.state.progress, file=sys.stderr)
                    if m.state.progress > 50:
                        ret = con2.Ping("Test")
                        print("Ping: ", ret.pong)

    except varlink.ConnectionError as e:
        print("ConnectionError:", e)
        raise e
    except varlink.VarlinkError as e:
        print(e)
        print(e.error())
        print(e.parameters())
        raise e
Beispiel #5
0
def varlink_info(args):
    with varlink.Client(args.ADDRESS) as client:
        info = client.info
        print("Vendor:", info["vendor"])
        print("Product:", info["product"])
        print("Version:", info["version"])
        print("URL:", info["url"])
        print("Interfaces:")
        for i in info["interfaces"]:
            print("  ", i)
Beispiel #6
0
def varlink_call(args):
    deli = args.METHOD.rfind(".")
    if deli == -1:
        print("No method found", file=sys.stderr)
        sys.exit(1)

    method = args.METHOD[deli + 1:]
    interface = args.METHOD[:deli]

    deli = args.METHOD.find("/")
    if deli != -1:
        address = interface[:deli]
        interface = interface[deli + 1:]
        client = varlink.Client(address)
    else:
        client = varlink.Client(resolve_interface=interface,
                                resolver=args.resolver)

    got = False
    try:
        with client.open(interface) as con:
            out = {
                'method': interface + '.' + method,
                'more': args.more,
                'parameters': json.loads(args.ARGUMENTS)
            }
            con._send_message(
                json.dumps(out, cls=varlink.VarlinkEncoder).encode('utf-8'))
            more = True
            while more:
                (message, more) = con._next_varlink_message()
                if message:
                    print(message)
                    got = True
    except varlink.VarlinkError as e:
        print(e, file=sys.stderr)
    except BrokenPipeError:
        if not got or args.more:
            print("Connection closed")
            sys.exit(1)
Beispiel #7
0
    def test_service(self):
        address = "tcp:127.0.0.1:23451"
        Example.sleep_duration = 0.1

        server = varlink.ThreadingServer(address, ServiceRequestHandler)
        server_thread = threading.Thread(target=server.serve_forever)
        server_thread.daemon = True
        server_thread.start()

        try:
            run_client(address)

            with varlink.Client(address=address) as client, \
                    client.open('org.example.more', namespaced=True) as con1, \
                    client.open('org.example.more', namespaced=True) as con2:

                self.assertEqual(con1.Ping("Test").pong, "Test")

                it = con1.TestMore(10, _more=True)

                m = next(it)
                self.assertTrue(hasattr(m.state, 'start'))
                self.assertFalse(hasattr(m.state, 'end'))
                self.assertFalse(hasattr(m.state, 'progress'))
                self.assertIsNotNone(m.state.start)

                for i in range(0, 110, 10):
                    m = next(it)
                    self.assertTrue(hasattr(m.state, 'progress'))
                    self.assertFalse(hasattr(m.state, 'start'))
                    self.assertFalse(hasattr(m.state, 'end'))
                    self.assertIsNotNone(m.state.progress)
                    self.assertEqual(i, m.state.progress)

                    if i > 50:
                        ret = con2.Ping("Test")
                        self.assertEqual("Test", ret.pong)

                m = next(it)
                self.assertTrue(hasattr(m.state, 'end'))
                self.assertFalse(hasattr(m.state, 'start'))
                self.assertFalse(hasattr(m.state, 'progress'))
                self.assertIsNotNone(m.state.end)

                self.assertRaises(StopIteration, next, it)

                con1.StopServing(_oneway=True)
                time.sleep(0.5)
                self.assertRaises(varlink.ConnectionError, con1.Ping, "Test")
        finally:
            server.shutdown()
            server.server_close()
 def test_01(self):
     with varlink.Client(self.address) as client, \
             client.open('org.varlink.certification') as con:
         ret = con.Start()
         client_id = ret["client_id"]
         ret = con.Test01(client_id)
         print("Test01:", ret)
         ret = con.Test02(client_id, ret["bool"])
         print("Test02:", ret)
         self.assertRaises(varlink.VarlinkError, con.Test03, "test")
         self.assertRaises(varlink.VarlinkError, con.Test03, client_id, 0)
         self.assertRaises(varlink.VarlinkError, con.Test03, client_id, ret["int"])
         ret = con.Start()
         client_id = ret["client_id"]
         ret = con.Test01(client_id)
         print("Test01:", ret)
         ret = con.Test02(client_id, ret["bool"])
         print("Test02:", ret)
         self.assertRaises(varlink.VarlinkError, con.Test01, client_id)
Beispiel #9
0
# 使用varlink协议访问podman服务,创建容器,获取容器信息,结束容器


import json
import varlink

addr = "unix:/run/podman/io.podman"
iface = "io.podman"
method = "ListContainers"
client = varlink.Client("unix:/run/podman/io.podman")
connection = client.open("io.podman")
containerlist = connection._call("ListContainers")['containers']
print(containerlist[0]['names'])

 def test_init(self):
     with varlink.Client("unix:@foo") as client:
         connection = client.open('org.service.com')
         self.assertEqual(connection.Test1(param1=1)["test"]["bar"], "boom")
         self.assertEqual(connection.Test3(param1="foo")["test"], "foo")
Beispiel #11
0
 def setUp(self):
     """Set up the varlink/podman fixture before each test."""
     super(PodmanTestCase, self).setUp()
     self.client = varlink.Client(
         address=self.address)
     self.podman = self.client.open('io.projectatomic.podman')