File: guestfs-lua.pod

package info (click to toggle)
libguestfs 1%3A1.54.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 98,892 kB
  • sloc: ansic: 379,443; ml: 38,771; sh: 10,329; java: 9,631; cs: 6,377; haskell: 5,729; makefile: 5,178; python: 3,821; perl: 2,467; erlang: 2,461; ruby: 349; xml: 275; pascal: 257; javascript: 157; cpp: 10
file content (129 lines) | stat: -rw-r--r-- 6,347 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

=head1 НАЗВА

guestfs-lua — як використовувати libguestfs з Lua

=head1 КОРОТКИЙ ОПИС

 local G = require "guestfs"
 g = G.create ()
 g:add_drive ("test.img", { format = "raw", readonly = true })
 g:launch ()
 devices = g:list_devices ()
 g:close ()

=head1 ОПИС

На цій сторінці підручника наведено документацію щодо викликів libguestfs з коду мовою програмування Lua. На сторінці задокументовано відмінності від програмного інтерфейсу C та подано декілька прикладів. Якщо ви не дуже знайомі із користуванням libguestfs, вам також слід прочитати підручник з L<guestfs(3)>.

=head2 ВСТАНОВЛЕННЯ ВИМОГИ ЩОДО МОДУЛЯ

C<require "guestfs"> повертає модуль, тому вам слід пов'язати це значення із локальною змінною. Типове використання:

 local G = require "guestfs"

(ви можете використовувати будь-яку назву замість C<G>, але у прикладах на цій сторінці підручника ми завжди використовуватимемо C<G>).

=head2 ВІДКРИТТЯ І ЗАКРИТТЯ ДЕСКРИПТОРА

Для створення дескриптора викличте:

 g = G.create ()

Ви також можете скористатися необов'язковими аргументами:

 g = G.create { environment = 0, close_on_exit = 0 }

для встановлення прапорців C<GUESTFS_CREATE_NO_ENVIRONMENT> і/або C<GUESTFS_CREATE_NO_CLOSE_ON_EXIT>.

Дескриптор буде закрито засобом збирання сміття, але ви також можете закрити його явним чином, ось так:

 g:close ()

=head2 ЯК ВИКЛИКАТИ МЕТОДИ

Скористайтеся звичайною методикою Lua для виклику методів для дескриптора. Приклад:

 g:set_verbose (true)

=head2 ФУНКЦІЇ І НЕОБОВ'ЯЗКОВІ ПАРАМЕТРИ

Для функцій, які приймають необов'язкові аргументи, першими аргументами мають бути обов'язкові. Необов'язковим останнім аргументом є таблиця із необов'язковими аргументами.

 g:add_drive ("test.img")

або:

 g:add_drive ("test.img", { format = "raw", readonly = true })

=head2 64-БІТОВІ ЗНАЧЕННЯ

У поточній версії 64-бітові значення має бути передано як рядки, також ці значення повертаються функціями як рядки. Причиною є те, що у 32-бітовому інтерпретаторі Lua неможлива належна обробка цілих 64-бітових чисел. Сподіваємося, згодом нами буде знайдено прийнятніше рішення.

=head2 ПОМИЛКИ

Більшість (але не усі) помилок перетворюються на об'єкти (тобто таблиці), що містять такі поля:

=over 4

=item msg

Повідомлення про помилку (відповідно до L<guestfs(3)/guestfs_last_error>).

=item code

C<errno> (відповідно до L<guestfs(3)/guestfs_last_errno>).

=back

Із цими об'єктами також пов'язано з функціями C<__tostring>, отже ви можете скористатися функцією C<tostring> (або неявним перетворенням) для перетворення їх на придатні до виведення рядки.

Зауважте, що бібліотека також виводить деякі помилки як прості рядки. Можливо, вам слід перевірити тип цих даних.

=head2 ПОДІЇ

Реєструвати події можна за допомогою викликів C<set_event_callback>:

 eh = g:set_event_callback (cb, "close")

або можна зареєструвати єдиний зворотний виклик для декількох подій, зробивши другим аргументом список:

 eh = g:set_event_callback (cb, { "appliance", "library", "trace" })

Список усіх чинних типів подій (рядків) зберігається у загальній змінній C<G.event_all>.

Зворотний виклик (C<cb>) викликається із такими параметрами:

 function cb (g, event, eh, flags, buf, array)
   -- g i— дескриптор guestfs
   -- event — рядок, який є назвою події, яка сталася
   -- flags — завжди нуль
   -- buf — буфер даних (наприклад, повідомлення журналу тощо)
   -- array — масив з 64-бітових цілих чисел (наприклад, стан смужки поступу тощо)
   ...
 end

Ви також можете вилучити зворотний виклик за допомогою дескриптора події (C<eh>), який було повернуто, коли ви реєстрували зворотний виклик:

 g:delete_event_callback (eh)

=head1 ПРИКЛАД 1. СТВОРЕННЯ ОБРАЗУ ДИСКА

@EXAMPLE1@

=head1 ПРИКЛАД 2. ПЕРЕВІРКА ОБРАЗУ ДИСКА ВІРТУАЛЬНОЇ МАШИНИ

@EXAMPLE2@

=head1 ТАКОЖ ПЕРЕГЛЯНЬТЕ

L<guestfs(3)>, L<guestfs-examples(3)>, L<guestfs-erlang(3)>, L<guestfs-gobject(3)>, L<guestfs-golang(3)>, L<guestfs-java(3)>, L<guestfs-ocaml(3)>, L<guestfs-perl(3)>, L<guestfs-python(3)>, L<guestfs-recipes(1)>, L<guestfs-ruby(3)>, L<http://www.lua.org/>, L<http://libguestfs.org/>.

=head1 АВТОРИ

Richard W.M. Jones (C<rjones at redhat dot com>)

=head1 АВТОРСЬКІ ПРАВА

© Red Hat Inc., 2012