@@ -10,7 +10,7 @@ import time
10
10
import getpass
11
11
from aiowmi .connection import Connection
12
12
from aiowmi .query import Query
13
- from aiowmi .exceptions import WbemFalse
13
+ from aiowmi .exceptions import WbemFalse , ServerNotOptimized
14
14
from aiowmi .const import (
15
15
WBEM_FLAG_DIRECT_READ ,
16
16
WBEM_FLAG_USE_AMENDED_QUALIFIERS ,
@@ -20,19 +20,30 @@ from aiowmi.const import (
20
20
)
21
21
22
22
23
- async def main (address , username , password , domain , wqlstr , namespace ):
24
- query = Query (wqlstr , namespace = namespace )
23
+ async def main (
24
+ address , username , password , domain ,
25
+ wqlstr , namespace , timeout , noopt ):
26
+ query = Query (wqlstr , namespace = namespace )
25
27
26
28
start = time .time ()
27
29
service = None
28
30
29
31
conn = Connection (address , username , password , domain = domain )
30
- await conn .connect ()
32
+ await conn .connect (timeout = timeout )
31
33
try :
32
34
service = await conn .negotiate_ntlm ()
33
35
34
36
await query .start (conn , service )
35
37
38
+ if not noopt :
39
+ try :
40
+ await query .optimize ()
41
+ logging .debug ('Using Smart Enum requests' )
42
+ except ServerNotOptimized :
43
+ logging .debug ('Server is not optimized' )
44
+ else :
45
+ logging .debug ('Optimize disabled' )
46
+
36
47
while True :
37
48
try :
38
49
res = await query .next ()
@@ -67,7 +78,7 @@ async def main(address, username, password, domain, wqlstr, namespace):
67
78
logging .debug (f'done in { end - start } ' )
68
79
69
80
70
- __version__ = (0 , 1 , 1 ) # Update setup.py as well
81
+ __version__ = (0 , 1 , 2 ) # Update setup.py as well
71
82
72
83
if __name__ == '__main__' :
73
84
parser = argparse .ArgumentParser ()
@@ -113,6 +124,18 @@ if __name__ == '__main__':
113
124
default = 'root/cimv2' ,
114
125
help = 'Namespace, defaults to `root/cimv2`' )
115
126
127
+ parser .add_argument (
128
+ '-t' ,
129
+ '--timeout' ,
130
+ type = int ,
131
+ default = 5 ,
132
+ help = 'Timeout in seconds' )
133
+
134
+ parser .add_argument (
135
+ '--no-optimize' ,
136
+ action = 'store_true' ,
137
+ help = 'Disable Smart Enum for optimized queries' )
138
+
116
139
parser .add_argument (
117
140
'--debug' ,
118
141
action = 'store_true' ,
@@ -132,7 +155,7 @@ if __name__ == '__main__':
132
155
sys .exit (__version__ )
133
156
134
157
logger = logging .getLogger ()
135
- logger .setLevel (logging .DEBUG )
158
+ logger .setLevel (logging .DEBUG if args . debug else logging . WARNING )
136
159
137
160
ch = logging .StreamHandler ()
138
161
@@ -154,4 +177,6 @@ if __name__ == '__main__':
154
177
args .domain ,
155
178
args .wql ,
156
179
args .namespace ,
157
- ))
180
+ args .timeout ,
181
+ args .no_optimize
182
+ ))
0 commit comments