xautomata-hive 3.20.1__py3-none-any.whl → 3.21.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hive/api.py +9 -2
- hive/cookbook/cost_tree_nodes.py +33 -0
- hive/cookbook/cost_tree_resources.py +78 -0
- hive/cookbook/last_object_status.py +213 -0
- hive/cookbook/questions.py +27 -0
- hive/cookbook/ts_cost_azure_raw.py +54 -0
- hive/cookbook/users.py +5 -4
- hive/cookbook/webhooks.py +5 -2
- hive/decorators.py +32 -6
- hive/version.py +1 -1
- {xautomata_hive-3.20.1.dist-info → xautomata_hive-3.21.0.dist-info}/METADATA +2 -2
- {xautomata_hive-3.20.1.dist-info → xautomata_hive-3.21.0.dist-info}/RECORD +15 -14
- {xautomata_hive-3.20.1.dist-info → xautomata_hive-3.21.0.dist-info}/WHEEL +1 -1
- {xautomata_hive-3.20.1.dist-info → xautomata_hive-3.21.0.dist-info}/LICENSE +0 -0
- {xautomata_hive-3.20.1.dist-info → xautomata_hive-3.21.0.dist-info}/top_level.txt +0 -0
hive/api.py
CHANGED
@@ -52,6 +52,7 @@ class ApiManager:
|
|
52
52
|
_timeout_sleep_time = 120 # tempo di attesa tra un retry e quello successivo in caso di timeout
|
53
53
|
_silence_warning = False # da implementare
|
54
54
|
num_items = None # serve per quando si mette la count a True, di default vale 0
|
55
|
+
response = [] # variabile in cui mettere la risposta degli endpoing per poter accedere alla versione originale
|
55
56
|
|
56
57
|
def __init__(self, root, user, password, ssl_verify: bool = True):
|
57
58
|
|
@@ -155,6 +156,8 @@ class ApiManager:
|
|
155
156
|
|
156
157
|
url = f'{self.root}{path}'
|
157
158
|
|
159
|
+
self.response = [] # reset dell'attributo responce, cosi da non accodare risposte proveninenti da richieste diverse
|
160
|
+
|
158
161
|
@warmstart(active=warm_start, args_ex=[2], verbose=False)
|
159
162
|
@paginate(single_page=single_page, page_size=page_size, skip=_params_['skip'], limit=_params_['limit'], bulk=bulk)
|
160
163
|
@timeout_retry(max_tries=self._timeout_retry, sleep_time=self._timeout_sleep_time)
|
@@ -166,7 +169,8 @@ class ApiManager:
|
|
166
169
|
logger.debug(f'request params (skip and limit may differ from your setting due pagination): {_params}')
|
167
170
|
logger.debug(f'request payload: {_payload}')
|
168
171
|
|
169
|
-
response = get_session(self._timeout, self._timeout_get_session_retry, self._timeout_get_session_backoff_factor).request(_mode, url=_url, json=_payload, params=_params,
|
172
|
+
response = get_session(self._timeout, self._timeout_get_session_retry, self._timeout_get_session_backoff_factor).request(_mode, url=_url, json=_payload, params=_params,
|
173
|
+
headers=_headers, verify=self._SSL_verify, **_kwargs)
|
170
174
|
if response.status_code == 401: raise UnauthorizedException
|
171
175
|
if response.status_code != 200 and response.status_code != 504: # 504 non e' gestito dalle API per cui la responce non sarebbe json serializable
|
172
176
|
logger.error(response.json())
|
@@ -178,6 +182,8 @@ class ApiManager:
|
|
178
182
|
logger.debug(f'responce: {response.json()}')
|
179
183
|
logger.debug(f'header: {response.headers}')
|
180
184
|
|
185
|
+
self.response.append(response) # sotto forma di lista perche se la risposta viene paginata questa viene spezzata su piu risposte
|
186
|
+
|
181
187
|
return response.json()
|
182
188
|
|
183
189
|
return run_request(mode, url, _headers_, _payload_, _params_, **kwargs)
|
@@ -516,6 +522,7 @@ from hive.cookbook.schedules import Schedules
|
|
516
522
|
from hive.cookbook.services import Services
|
517
523
|
from hive.cookbook.sites import Sites
|
518
524
|
from hive.cookbook.last_status import LastStatus
|
525
|
+
from hive.cookbook.last_object_status import LastObjectStatus
|
519
526
|
from hive.cookbook.last_status_v2 import LastStatusV2
|
520
527
|
from hive.cookbook.terms_and_conditions import TermsAndConditions
|
521
528
|
from hive.cookbook.tree_hierarchy import TreeHierarchy
|
@@ -538,7 +545,7 @@ from hive.cookbook.widget_groups import WidgetGroups
|
|
538
545
|
# hive imports stop
|
539
546
|
|
540
547
|
|
541
|
-
class XautomataApi(AclDocs, AclOverrides, Analytics, Anomalies, Calendars, CostTagging, CostTags, CostViews, CostTreeNodes, CostTreeResources, Contacts, Customers, Dashboards, Dispatchers, Downtimes, ExternalTickets, Features, Files, FirmwareUpdates, Groups, AutomataIngest, MetricIngest, Microsoft, Google, Login, Jobs, Messages, Metrics, ProbesLogIngest, MetricTypes, NotificationProviders, NotificationProviderTypes, Objects, OpeningReasons, Probes, ProbeTypes, ProfileTopics, Questions, ReasonForClosure, RetentionRules, Schedules, Services, Sites, LastStatus, LastStatusV2, TermsAndConditions, TreeHierarchy, TreeHierarchyV2, TsAutomataState, TsCostAzureRaw, TsCostManagement, TsCostManagementV2, TsMetricStatus, TsMetricValue, TsNtopFlows, TsServiceStatus, TsServiceValue, Users, UsersNotifications, VirtualDomains, Widgets, Webhooks, WidgetGroups):
|
548
|
+
class XautomataApi(AclDocs, AclOverrides, Analytics, Anomalies, Calendars, CostTagging, CostTags, CostViews, CostTreeNodes, CostTreeResources, Contacts, Customers, Dashboards, Dispatchers, Downtimes, ExternalTickets, Features, Files, FirmwareUpdates, Groups, AutomataIngest, MetricIngest, Microsoft, Google, Login, Jobs, Messages, Metrics, ProbesLogIngest, MetricTypes, NotificationProviders, NotificationProviderTypes, Objects, OpeningReasons, Probes, ProbeTypes, ProfileTopics, Questions, ReasonForClosure, RetentionRules, Schedules, Services, Sites, LastStatus, LastObjectStatus, LastStatusV2, TermsAndConditions, TreeHierarchy, TreeHierarchyV2, TsAutomataState, TsCostAzureRaw, TsCostManagement, TsCostManagementV2, TsMetricStatus, TsMetricValue, TsNtopFlows, TsServiceStatus, TsServiceValue, Users, UsersNotifications, VirtualDomains, Widgets, Webhooks, WidgetGroups):
|
542
549
|
"""
|
543
550
|
Class with each specific API, based on the ApiManager Class created for a more general interaction with Xautomata API
|
544
551
|
"""
|
hive/cookbook/cost_tree_nodes.py
CHANGED
@@ -197,6 +197,39 @@ class CostTreeNodes(ApiManager):
|
|
197
197
|
params=params, **kwargs)
|
198
198
|
return response
|
199
199
|
|
200
|
+
def cost_tree_nodes_navigate_tree_v2(self, uuid: str,
|
201
|
+
warm_start: bool = False, kwargs: dict = None, **params) -> list:
|
202
|
+
"""Get Tree From Node V2
|
203
|
+
|
204
|
+
Args:
|
205
|
+
uuid (str, required): uuid
|
206
|
+
warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
|
207
|
+
kwargs (dict, optional): additional parameters for execute. Default to None.
|
208
|
+
**params: additional parameters for the API.
|
209
|
+
|
210
|
+
Keyword Args:
|
211
|
+
date_start (string required): additional filter - parameter
|
212
|
+
date_end (string required): additional filter - parameter
|
213
|
+
resource_id (string optional): additional filter - parameter
|
214
|
+
previous_period (boolean optional): additional filter - parameter
|
215
|
+
|
216
|
+
Returns: list"""
|
217
|
+
if kwargs is None:
|
218
|
+
kwargs = dict()
|
219
|
+
kwargs, params = handling_single_page_methods(kwargs=kwargs, params
|
220
|
+
=params)
|
221
|
+
official_params_list = ['date_start', 'date_end', 'resource_id',
|
222
|
+
'previous_period']
|
223
|
+
params.get('date_start'), params.get('date_end'), params.get(
|
224
|
+
'resource_id'), params.get('previous_period')
|
225
|
+
if not self._silence_warning:
|
226
|
+
warning_wrong_parameters(self.cost_tree_nodes_navigate_tree_v2.
|
227
|
+
__name__, params, official_params_list)
|
228
|
+
response = self.execute('GET', path=
|
229
|
+
f'/cost_tree_nodes/navigate_tree/{uuid}/v2', warm_start=
|
230
|
+
warm_start, params=params, **kwargs)
|
231
|
+
return response
|
232
|
+
|
200
233
|
def cost_tree_nodes_get_node_resources(self, uuid: str,
|
201
234
|
warm_start: bool = False, single_page: bool = False,
|
202
235
|
page_size: int = 5000, kwargs: dict = None, **params) -> list:
|
@@ -119,6 +119,48 @@ class CostTreeResources(ApiManager):
|
|
119
119
|
=params, **kwargs)
|
120
120
|
return response
|
121
121
|
|
122
|
+
def cost_tree_resources_all_resource_ids_v2(self,
|
123
|
+
warm_start: bool = False, single_page: bool = False,
|
124
|
+
page_size: int = 5000, kwargs: dict = None, **params) -> list:
|
125
|
+
"""Get Resource Ids V2
|
126
|
+
|
127
|
+
Args:
|
128
|
+
warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
|
129
|
+
single_page (bool, optional): se False la risposta viene ottenuta a step per non appesantire le API. Default to False.
|
130
|
+
page_size (int, optional): Numero di oggetti per pagina se single_page == False. Default to 5000.
|
131
|
+
kwargs (dict, optional): additional parameters for execute. Default to None.
|
132
|
+
**params: additional parameters for the API.
|
133
|
+
|
134
|
+
Keyword Args:
|
135
|
+
date_start (string required): additional filter - parameter
|
136
|
+
date_end (string required): additional filter - parameter
|
137
|
+
uuid_customer (string optional): additional filter - parameter
|
138
|
+
uuid_view (string optional): additional filter - parameter
|
139
|
+
skip (integer optional): numero di oggetti che si vogliono saltare nella risposta. Default to 0. - parameter
|
140
|
+
limit (integer optional): numero di oggetti massimi che si vogliono ottenere. Default to 1_000_000. - parameter
|
141
|
+
like (boolean optional): Se True, eventuali filtri richiesti dalla API vengono presi come porzioni di testo, se False il matching sul campo dei filtri deve essere esatto. Default to True. - parameter
|
142
|
+
join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
|
143
|
+
count (boolean optional): Se True nel header della risposta e' presente la dimensione massima a db della chiamata fatta, sconsigliabile perche raddoppia il tempo per chiamata. Default to False. - parameter
|
144
|
+
|
145
|
+
Returns: list"""
|
146
|
+
if kwargs is None:
|
147
|
+
kwargs = dict()
|
148
|
+
official_params_list = ['date_start', 'date_end', 'uuid_customer',
|
149
|
+
'uuid_view', 'skip', 'limit', 'like', 'join', 'count']
|
150
|
+
params.get('date_start'), params.get('date_end'), params.get(
|
151
|
+
'uuid_customer'), params.get('uuid_view'), params.get('skip'
|
152
|
+
), params.get('limit'), params.get('like'), params.get('join'
|
153
|
+
), params.get('count')
|
154
|
+
if not self._silence_warning:
|
155
|
+
warning_wrong_parameters(self.
|
156
|
+
cost_tree_resources_all_resource_ids_v2.__name__, params,
|
157
|
+
official_params_list)
|
158
|
+
response = self.execute('GET', path=
|
159
|
+
f'/cost_tree_resources/all_resource_ids/v2', single_page=
|
160
|
+
single_page, page_size=page_size, warm_start=warm_start, params
|
161
|
+
=params, **kwargs)
|
162
|
+
return response
|
163
|
+
|
122
164
|
def cost_tree_resources_unfully_assigned_resource_ids(self,
|
123
165
|
uuid_view: str, warm_start: bool = False, single_page: bool = False,
|
124
166
|
page_size: int = 5000, kwargs: dict = None, **params) -> list:
|
@@ -155,6 +197,42 @@ class CostTreeResources(ApiManager):
|
|
155
197
|
warm_start, params=params, **kwargs)
|
156
198
|
return response
|
157
199
|
|
200
|
+
def cost_tree_resources_unfully_assigned_resource_ids_v2(self,
|
201
|
+
uuid_view: str, warm_start: bool = False, single_page: bool = False,
|
202
|
+
page_size: int = 5000, kwargs: dict = None, **params) -> list:
|
203
|
+
"""Get Unfully Assigned Resource Ids V2
|
204
|
+
|
205
|
+
Args:
|
206
|
+
uuid_view (str, required): uuid_view
|
207
|
+
warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
|
208
|
+
single_page (bool, optional): se False la risposta viene ottenuta a step per non appesantire le API. Default to False.
|
209
|
+
page_size (int, optional): Numero di oggetti per pagina se single_page == False. Default to 5000.
|
210
|
+
kwargs (dict, optional): additional parameters for execute. Default to None.
|
211
|
+
**params: additional parameters for the API.
|
212
|
+
|
213
|
+
Keyword Args:
|
214
|
+
skip (integer optional): numero di oggetti che si vogliono saltare nella risposta. Default to 0. - parameter
|
215
|
+
limit (integer optional): numero di oggetti massimi che si vogliono ottenere. Default to 1_000_000. - parameter
|
216
|
+
like (boolean optional): Se True, eventuali filtri richiesti dalla API vengono presi come porzioni di testo, se False il matching sul campo dei filtri deve essere esatto. Default to True. - parameter
|
217
|
+
join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
|
218
|
+
count (boolean optional): Se True nel header della risposta e' presente la dimensione massima a db della chiamata fatta, sconsigliabile perche raddoppia il tempo per chiamata. Default to False. - parameter
|
219
|
+
|
220
|
+
Returns: list"""
|
221
|
+
if kwargs is None:
|
222
|
+
kwargs = dict()
|
223
|
+
official_params_list = ['skip', 'limit', 'like', 'join', 'count']
|
224
|
+
params.get('skip'), params.get('limit'), params.get('like'
|
225
|
+
), params.get('join'), params.get('count')
|
226
|
+
if not self._silence_warning:
|
227
|
+
warning_wrong_parameters(self.
|
228
|
+
cost_tree_resources_unfully_assigned_resource_ids_v2.
|
229
|
+
__name__, params, official_params_list)
|
230
|
+
response = self.execute('GET', path=
|
231
|
+
f'/cost_tree_resources/{uuid_view}/unfully_assigned_resource_ids/v2'
|
232
|
+
, single_page=single_page, page_size=page_size, warm_start=
|
233
|
+
warm_start, params=params, **kwargs)
|
234
|
+
return response
|
235
|
+
|
158
236
|
def cost_tree_resources_unfully_assigned_resources(self, uuid_view: str,
|
159
237
|
warm_start: bool = False, single_page: bool = False,
|
160
238
|
page_size: int = 5000, kwargs: dict = None, **params) -> list:
|
@@ -0,0 +1,213 @@
|
|
1
|
+
from hive.api import ApiManager, handling_single_page_methods, warning_wrong_parameters
|
2
|
+
|
3
|
+
|
4
|
+
class LastObjectStatus(ApiManager):
|
5
|
+
"""Class that handles all the XAutomata last_object_status APIs"""
|
6
|
+
|
7
|
+
def last_object_status(self, warm_start: bool = False,
|
8
|
+
single_page: bool = False, page_size: int = 5000,
|
9
|
+
kwargs: dict = None, **params) -> list:
|
10
|
+
"""Read Last Object Status
|
11
|
+
|
12
|
+
Args:
|
13
|
+
warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
|
14
|
+
single_page (bool, optional): se False la risposta viene ottenuta a step per non appesantire le API. Default to False.
|
15
|
+
page_size (int, optional): Numero di oggetti per pagina se single_page == False. Default to 5000.
|
16
|
+
kwargs (dict, optional): additional parameters for execute. Default to None.
|
17
|
+
**params: additional parameters for the API.
|
18
|
+
|
19
|
+
Keyword Args:
|
20
|
+
extract_valueless_metrics (boolean optional): additional filter - parameter
|
21
|
+
extract_automata_domain (None optional): additional filter - parameter
|
22
|
+
sort_by (string optional): Stringa separata da virgole di campi su cui ordinare. Si indica uno o piu campi della risposta e si puo chiedere di ottenere i valori di quei campi in ordine ascendente o discendente. Esempio "Customer:Desc". Default to "". - parameter
|
23
|
+
null_fields (string optional): additional filter - parameter
|
24
|
+
uuid_customer (string optional): additional filter - parameter
|
25
|
+
customer_code (string optional): additional filter - parameter
|
26
|
+
customer_status (string optional): additional filter - parameter
|
27
|
+
uuid_site (string optional): additional filter - parameter
|
28
|
+
site_code (string optional): additional filter - parameter
|
29
|
+
site_description (string optional): additional filter - parameter
|
30
|
+
site_address (string optional): additional filter - parameter
|
31
|
+
site_zip_code (string optional): additional filter - parameter
|
32
|
+
site_city (string optional): additional filter - parameter
|
33
|
+
site_country (string optional): additional filter - parameter
|
34
|
+
site_state_province (string optional): additional filter - parameter
|
35
|
+
site_status (string optional): additional filter - parameter
|
36
|
+
uuid_group (string optional): additional filter - parameter
|
37
|
+
group_name (string optional): additional filter - parameter
|
38
|
+
group_status (string optional): additional filter - parameter
|
39
|
+
group_type (string optional): additional filter - parameter
|
40
|
+
uuid_object (string optional): additional filter - parameter
|
41
|
+
object_name (string optional): additional filter - parameter
|
42
|
+
object_status (string optional): additional filter - parameter
|
43
|
+
object_profile (string optional): additional filter - parameter
|
44
|
+
uuid_metric_type (string optional): additional filter - parameter
|
45
|
+
metric_type_name (string optional): additional filter - parameter
|
46
|
+
metric_type_status (string optional): additional filter - parameter
|
47
|
+
uuid_metric (string optional): additional filter - parameter
|
48
|
+
metric_name (string optional): additional filter - parameter
|
49
|
+
metric_status (string optional): additional filter - parameter
|
50
|
+
metric_profile (string optional): additional filter - parameter
|
51
|
+
topic (string optional): additional filter - parameter
|
52
|
+
last_value_uuid_probe (string optional): additional filter - parameter
|
53
|
+
last_value_timestamp_start (string optional): additional filter - parameter
|
54
|
+
last_value_timestamp_end (string optional): additional filter - parameter
|
55
|
+
last_value_object_type (string optional): additional filter - parameter
|
56
|
+
last_value_name (string optional): additional filter - parameter
|
57
|
+
last_value_value (string optional): additional filter - parameter
|
58
|
+
last_value_unit (string optional): additional filter - parameter
|
59
|
+
last_value_description (string optional): additional filter - parameter
|
60
|
+
last_value_status (None optional): additional filter - parameter
|
61
|
+
last_value_ranking (integer optional): additional filter - parameter
|
62
|
+
skip (integer optional): numero di oggetti che si vogliono saltare nella risposta. Default to 0. - parameter
|
63
|
+
limit (integer optional): numero di oggetti massimi che si vogliono ottenere. Default to 1_000_000. - parameter
|
64
|
+
like (boolean optional): Se True, eventuali filtri richiesti dalla API vengono presi come porzioni di testo, se False il matching sul campo dei filtri deve essere esatto. Default to True. - parameter
|
65
|
+
join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
|
66
|
+
count (boolean optional): Se True nel header della risposta e' presente la dimensione massima a db della chiamata fatta, sconsigliabile perche raddoppia il tempo per chiamata. Default to False. - parameter
|
67
|
+
|
68
|
+
Returns: list"""
|
69
|
+
if kwargs is None:
|
70
|
+
kwargs = dict()
|
71
|
+
official_params_list = ['extract_valueless_metrics',
|
72
|
+
'extract_automata_domain', 'sort_by', 'null_fields',
|
73
|
+
'uuid_customer', 'customer_code', 'customer_status',
|
74
|
+
'uuid_site', 'site_code', 'site_description', 'site_address',
|
75
|
+
'site_zip_code', 'site_city', 'site_country',
|
76
|
+
'site_state_province', 'site_status', 'uuid_group',
|
77
|
+
'group_name', 'group_status', 'group_type', 'uuid_object',
|
78
|
+
'object_name', 'object_status', 'object_profile',
|
79
|
+
'uuid_metric_type', 'metric_type_name', 'metric_type_status',
|
80
|
+
'uuid_metric', 'metric_name', 'metric_status', 'metric_profile',
|
81
|
+
'topic', 'last_value_uuid_probe', 'last_value_timestamp_start',
|
82
|
+
'last_value_timestamp_end', 'last_value_object_type',
|
83
|
+
'last_value_name', 'last_value_value', 'last_value_unit',
|
84
|
+
'last_value_description', 'last_value_status',
|
85
|
+
'last_value_ranking', 'skip', 'limit', 'like', 'join', 'count']
|
86
|
+
params.get('extract_valueless_metrics'), params.get(
|
87
|
+
'extract_automata_domain'), params.get('sort_by'), params.get(
|
88
|
+
'null_fields'), params.get('uuid_customer'), params.get(
|
89
|
+
'customer_code'), params.get('customer_status'), params.get(
|
90
|
+
'uuid_site'), params.get('site_code'), params.get(
|
91
|
+
'site_description'), params.get('site_address'), params.get(
|
92
|
+
'site_zip_code'), params.get('site_city'), params.get(
|
93
|
+
'site_country'), params.get('site_state_province'), params.get(
|
94
|
+
'site_status'), params.get('uuid_group'), params.get('group_name'
|
95
|
+
), params.get('group_status'), params.get('group_type'
|
96
|
+
), params.get('uuid_object'), params.get('object_name'
|
97
|
+
), params.get('object_status'), params.get('object_profile'
|
98
|
+
), params.get('uuid_metric_type'), params.get('metric_type_name'
|
99
|
+
), params.get('metric_type_status'), params.get('uuid_metric'
|
100
|
+
), params.get('metric_name'), params.get('metric_status'
|
101
|
+
), params.get('metric_profile'), params.get('topic'), params.get(
|
102
|
+
'last_value_uuid_probe'), params.get('last_value_timestamp_start'
|
103
|
+
), params.get('last_value_timestamp_end'), params.get(
|
104
|
+
'last_value_object_type'), params.get('last_value_name'
|
105
|
+
), params.get('last_value_value'), params.get('last_value_unit'
|
106
|
+
), params.get('last_value_description'), params.get(
|
107
|
+
'last_value_status'), params.get('last_value_ranking'), params.get(
|
108
|
+
'skip'), params.get('limit'), params.get('like'), params.get('join'
|
109
|
+
), params.get('count')
|
110
|
+
if not self._silence_warning:
|
111
|
+
warning_wrong_parameters(self.last_object_status.__name__,
|
112
|
+
params, official_params_list)
|
113
|
+
response = self.execute('GET', path=f'/last_object_status/',
|
114
|
+
single_page=single_page, page_size=page_size, warm_start=
|
115
|
+
warm_start, params=params, **kwargs)
|
116
|
+
return response
|
117
|
+
|
118
|
+
def last_object_status_create(self, params: dict = False,
|
119
|
+
kwargs: dict = None, **payload) -> list:
|
120
|
+
"""Read Last Object Status Lists
|
121
|
+
|
122
|
+
Args:
|
123
|
+
params (dict, optional): additional parameters for the API.
|
124
|
+
kwargs (dict, optional): additional parameters for execute. Default to None.
|
125
|
+
**payload: additional parameters for the API.
|
126
|
+
|
127
|
+
Keyword Args:
|
128
|
+
sort_by (string optional): Stringa separata da virgole di campi su cui ordinare. Si indica uno o piu campi della risposta e si puo chiedere di ottenere i valori di quei campi in ordine ascendente o discendente. Esempio "Customer:Desc". Default to "". - parameter
|
129
|
+
null_fields (string optional): additional filter - parameter
|
130
|
+
skip (integer optional): numero di oggetti che si vogliono saltare nella risposta. Default to 0. - parameter
|
131
|
+
limit (integer optional): numero di oggetti massimi che si vogliono ottenere. Default to 1_000_000. - parameter
|
132
|
+
like (boolean optional): Se True, eventuali filtri richiesti dalla API vengono presi come porzioni di testo, se False il matching sul campo dei filtri deve essere esatto. Default to True. - parameter
|
133
|
+
join (boolean optional): Se join = true, ogni riga restituita conterra' chiavi aggiuntive che fanno riferimento ad altre entita', con cui la riga ha relazioni 1:1. Default to False - parameter
|
134
|
+
count (boolean optional): Se True nel header della risposta e' presente la dimensione massima a db della chiamata fatta, sconsigliabile perche raddoppia il tempo per chiamata. Default to False. - parameter
|
135
|
+
uuid_customer (array optional): additional filter - payload
|
136
|
+
customer_code (array optional): additional filter - payload
|
137
|
+
customer_status (array optional): additional filter - payload
|
138
|
+
uuid_site (array optional): additional filter - payload
|
139
|
+
site_code (array optional): additional filter - payload
|
140
|
+
site_description (array optional): additional filter - payload
|
141
|
+
site_address (array optional): additional filter - payload
|
142
|
+
site_zip_code (array optional): additional filter - payload
|
143
|
+
site_city (array optional): additional filter - payload
|
144
|
+
site_country (array optional): additional filter - payload
|
145
|
+
site_state_province (array optional): additional filter - payload
|
146
|
+
site_status (array optional): additional filter - payload
|
147
|
+
uuid_group (array optional): additional filter - payload
|
148
|
+
group_name (array optional): additional filter - payload
|
149
|
+
group_status (array optional): additional filter - payload
|
150
|
+
group_type (array optional): additional filter - payload
|
151
|
+
uuid_object (array optional): additional filter - payload
|
152
|
+
object_name (array optional): additional filter - payload
|
153
|
+
object_status (array optional): additional filter - payload
|
154
|
+
object_profile (array optional): additional filter - payload
|
155
|
+
uuid_metric_type (array optional): additional filter - payload
|
156
|
+
metric_type_name (array optional): additional filter - payload
|
157
|
+
metric_type_status (array optional): additional filter - payload
|
158
|
+
uuid_metric (array optional): additional filter - payload
|
159
|
+
metric_name (array optional): additional filter - payload
|
160
|
+
metric_status (array optional): additional filter - payload
|
161
|
+
metric_profile (array optional): additional filter - payload
|
162
|
+
topic (array optional): additional filter - payload
|
163
|
+
last_value_uuid_probe (array optional): additional filter - payload
|
164
|
+
last_value_timestamp (array optional): additional filter - payload
|
165
|
+
last_value_object_type (array optional): additional filter - payload
|
166
|
+
last_value_name (array optional): additional filter - payload
|
167
|
+
last_value_value (array optional): additional filter - payload
|
168
|
+
last_value_unit (array optional): additional filter - payload
|
169
|
+
last_value_description (array optional): additional filter - payload
|
170
|
+
last_value_status (array optional): additional filter - payload
|
171
|
+
last_value_ranking (array optional): additional filter - payload
|
172
|
+
|
173
|
+
Returns: list"""
|
174
|
+
if kwargs is None:
|
175
|
+
kwargs = dict()
|
176
|
+
official_payload_list = ['uuid_customer', 'customer_code',
|
177
|
+
'customer_status', 'uuid_site', 'site_code', 'site_description',
|
178
|
+
'site_address', 'site_zip_code', 'site_city', 'site_country',
|
179
|
+
'site_state_province', 'site_status', 'uuid_group',
|
180
|
+
'group_name', 'group_status', 'group_type', 'uuid_object',
|
181
|
+
'object_name', 'object_status', 'object_profile',
|
182
|
+
'uuid_metric_type', 'metric_type_name', 'metric_type_status',
|
183
|
+
'uuid_metric', 'metric_name', 'metric_status', 'metric_profile',
|
184
|
+
'topic', 'last_value_uuid_probe', 'last_value_timestamp',
|
185
|
+
'last_value_object_type', 'last_value_name', 'last_value_value',
|
186
|
+
'last_value_unit', 'last_value_description',
|
187
|
+
'last_value_status', 'last_value_ranking']
|
188
|
+
payload.get('uuid_customer'), payload.get('customer_code'
|
189
|
+
), payload.get('customer_status'), payload.get('uuid_site'
|
190
|
+
), payload.get('site_code'), payload.get('site_description'
|
191
|
+
), payload.get('site_address'), payload.get('site_zip_code'
|
192
|
+
), payload.get('site_city'), payload.get('site_country'
|
193
|
+
), payload.get('site_state_province'), payload.get('site_status'
|
194
|
+
), payload.get('uuid_group'), payload.get('group_name'
|
195
|
+
), payload.get('group_status'), payload.get('group_type'
|
196
|
+
), payload.get('uuid_object'), payload.get('object_name'
|
197
|
+
), payload.get('object_status'), payload.get('object_profile'
|
198
|
+
), payload.get('uuid_metric_type'), payload.get('metric_type_name'
|
199
|
+
), payload.get('metric_type_status'), payload.get('uuid_metric'
|
200
|
+
), payload.get('metric_name'), payload.get('metric_status'
|
201
|
+
), payload.get('metric_profile'), payload.get('topic'
|
202
|
+
), payload.get('last_value_uuid_probe'), payload.get(
|
203
|
+
'last_value_timestamp'), payload.get('last_value_object_type'
|
204
|
+
), payload.get('last_value_name'), payload.get('last_value_value'
|
205
|
+
), payload.get('last_value_unit'), payload.get(
|
206
|
+
'last_value_description'), payload.get('last_value_status'
|
207
|
+
), payload.get('last_value_ranking')
|
208
|
+
if not self._silence_warning:
|
209
|
+
warning_wrong_parameters(self.last_object_status_create.
|
210
|
+
__name__, payload, official_payload_list)
|
211
|
+
response = self.execute('POST', path=f'/last_object_status/',
|
212
|
+
params=params, payload=payload, **kwargs)
|
213
|
+
return response
|
hive/cookbook/questions.py
CHANGED
@@ -110,6 +110,33 @@ class Questions(ApiManager):
|
|
110
110
|
payload, **kwargs)
|
111
111
|
return response
|
112
112
|
|
113
|
+
def questions_by_token(self, uuid: str, warm_start: bool = False,
|
114
|
+
kwargs: dict = None, **params) -> list:
|
115
|
+
"""Read Tracking Question By Token
|
116
|
+
|
117
|
+
Args:
|
118
|
+
uuid (str, required): uuid
|
119
|
+
warm_start (bool, optional): salva la risposta in un file e se viene richiamata la stessa funzione con gli stessi argomenti restituisce il contenuto del file. Default to False.
|
120
|
+
kwargs (dict, optional): additional parameters for execute. Default to None.
|
121
|
+
**params: additional parameters for the API.
|
122
|
+
|
123
|
+
Keyword Args:
|
124
|
+
q-token (string required): additional filter - parameter
|
125
|
+
|
126
|
+
Returns: list"""
|
127
|
+
if kwargs is None:
|
128
|
+
kwargs = dict()
|
129
|
+
kwargs, params = handling_single_page_methods(kwargs=kwargs, params
|
130
|
+
=params)
|
131
|
+
official_params_list = ['q-token']
|
132
|
+
params.get('q-token')
|
133
|
+
if not self._silence_warning:
|
134
|
+
warning_wrong_parameters(self.questions_by_token.__name__,
|
135
|
+
params, official_params_list)
|
136
|
+
response = self.execute('GET', path=f'/questions/{uuid}/by_token',
|
137
|
+
warm_start=warm_start, params=params, **kwargs)
|
138
|
+
return response
|
139
|
+
|
113
140
|
def questions_reset_put(self, uuid: str, kwargs: dict = None, **payload
|
114
141
|
) -> list:
|
115
142
|
"""Reset Tracking Question
|
@@ -592,3 +592,57 @@ class TsCostAzureRaw(ApiManager):
|
|
592
592
|
f'/ts_cost_azure_raw/compute/tenant/{uuid_tenant}/', params=
|
593
593
|
params, **kwargs)
|
594
594
|
return response
|
595
|
+
|
596
|
+
def ts_cost_azure_raw_compute_import_tags_tenant_create(self,
|
597
|
+
uuid_tenant: str, kwargs: dict = None, **params) -> list:
|
598
|
+
"""Bulk Import Tags Tenant
|
599
|
+
|
600
|
+
Args:
|
601
|
+
uuid_tenant (str, required): uuid_tenant
|
602
|
+
kwargs (dict, optional): additional parameters for execute. Default to None.
|
603
|
+
**params: additional parameters for the API.
|
604
|
+
|
605
|
+
Keyword Args:
|
606
|
+
date_start (string required): additional filter - parameter
|
607
|
+
date_end (string required): additional filter - parameter
|
608
|
+
|
609
|
+
Returns: list"""
|
610
|
+
if kwargs is None:
|
611
|
+
kwargs = dict()
|
612
|
+
official_params_list = ['date_start', 'date_end']
|
613
|
+
params.get('date_start'), params.get('date_end')
|
614
|
+
if not self._silence_warning:
|
615
|
+
warning_wrong_parameters(self.
|
616
|
+
ts_cost_azure_raw_compute_import_tags_tenant_create.
|
617
|
+
__name__, params, official_params_list)
|
618
|
+
response = self.execute('POST', path=
|
619
|
+
f'/ts_cost_azure_raw/compute/import_tags/tenant/{uuid_tenant}',
|
620
|
+
params=params, **kwargs)
|
621
|
+
return response
|
622
|
+
|
623
|
+
def ts_cost_azure_raw_compute_import_tags_customer_create(self,
|
624
|
+
uuid_customer: str, kwargs: dict = None, **params) -> list:
|
625
|
+
"""Bulk Import Tags Customer
|
626
|
+
|
627
|
+
Args:
|
628
|
+
uuid_customer (str, required): uuid_customer
|
629
|
+
kwargs (dict, optional): additional parameters for execute. Default to None.
|
630
|
+
**params: additional parameters for the API.
|
631
|
+
|
632
|
+
Keyword Args:
|
633
|
+
date_start (string required): additional filter - parameter
|
634
|
+
date_end (string required): additional filter - parameter
|
635
|
+
|
636
|
+
Returns: list"""
|
637
|
+
if kwargs is None:
|
638
|
+
kwargs = dict()
|
639
|
+
official_params_list = ['date_start', 'date_end']
|
640
|
+
params.get('date_start'), params.get('date_end')
|
641
|
+
if not self._silence_warning:
|
642
|
+
warning_wrong_parameters(self.
|
643
|
+
ts_cost_azure_raw_compute_import_tags_customer_create.
|
644
|
+
__name__, params, official_params_list)
|
645
|
+
response = self.execute('POST', path=
|
646
|
+
f'/ts_cost_azure_raw/compute/import_tags/customer/{uuid_customer}',
|
647
|
+
params=params, **kwargs)
|
648
|
+
return response
|
hive/cookbook/users.py
CHANGED
@@ -1052,6 +1052,7 @@ class Users(ApiManager):
|
|
1052
1052
|
Keyword Args:
|
1053
1053
|
subject (string required): additional filter - payload
|
1054
1054
|
recipients (array required): additional filter - payload
|
1055
|
+
ccn_recipients (array optional): additional filter - payload
|
1055
1056
|
attachments (array optional): additional filter - payload
|
1056
1057
|
template_parameters (object optional): additional filter - payload
|
1057
1058
|
domain (string required): additional filter - payload
|
@@ -1059,11 +1060,11 @@ class Users(ApiManager):
|
|
1059
1060
|
Returns: list"""
|
1060
1061
|
if kwargs is None:
|
1061
1062
|
kwargs = dict()
|
1062
|
-
official_payload_list = ['subject', 'recipients', '
|
1063
|
-
'template_parameters', 'domain']
|
1063
|
+
official_payload_list = ['subject', 'recipients', 'ccn_recipients',
|
1064
|
+
'attachments', 'template_parameters', 'domain']
|
1064
1065
|
payload.get('subject'), payload.get('recipients'), payload.get(
|
1065
|
-
'
|
1066
|
-
'domain')
|
1066
|
+
'ccn_recipients'), payload.get('attachments'), payload.get(
|
1067
|
+
'template_parameters'), payload.get('domain')
|
1067
1068
|
if not self._silence_warning:
|
1068
1069
|
warning_wrong_parameters(self.users_send_email_template_create.
|
1069
1070
|
__name__, payload, official_payload_list)
|
hive/cookbook/webhooks.py
CHANGED
@@ -115,16 +115,19 @@ class Webhooks(ApiManager):
|
|
115
115
|
return response
|
116
116
|
|
117
117
|
def webhooks_create_webhook_type(self, webhook_type: str,
|
118
|
-
kwargs: dict = None
|
118
|
+
single_page: bool = False, page_size: int = 50, kwargs: dict = None
|
119
|
+
) -> list:
|
119
120
|
"""Post Webhook
|
120
121
|
|
121
122
|
Args:
|
122
123
|
webhook_type (str, required): webhook_type
|
124
|
+
single_page (bool, optional): se False la risposta viene ottenuta a step per non appesantire le API. Default to False.
|
125
|
+
page_size (int, optional): Numero di oggetti per pagina se single_page == False. Default to 50.
|
123
126
|
kwargs (dict, optional): additional parameters for execute. Default to None.
|
124
127
|
|
125
128
|
Returns: list"""
|
126
129
|
if kwargs is None:
|
127
130
|
kwargs = dict()
|
128
131
|
response = self.execute('POST', path=f'/webhooks/{webhook_type}',
|
129
|
-
**kwargs)
|
132
|
+
single_page=single_page, page_size=page_size, **kwargs)
|
130
133
|
return response
|
hive/decorators.py
CHANGED
@@ -131,29 +131,55 @@ def timeout_retry(func=None, max_tries: int = 2, sleep_time: int = 60):
|
|
131
131
|
|
132
132
|
|
133
133
|
def paginate(single_page: bool, page_size: int, skip: int, limit: int, bulk: bool):
|
134
|
+
"""Questa funzione è un decorator che abilita la paginazione per una funzione.
|
135
|
+
|
136
|
+
Args:
|
137
|
+
single_page: se True, restituisce solo una singola "pagina" di risultati.
|
138
|
+
page_size: dimensione della pagina (numero massimo di elementi per chiamata).
|
139
|
+
skip: numero di elementi da saltare all'inizio.
|
140
|
+
limit: numero massimo di elementi da restituire.
|
141
|
+
bulk: se True, gestisce il payload in modalità "bulk", suddividendolo in chunk.
|
142
|
+
"""
|
134
143
|
def attributes(func):
|
144
|
+
# Questo è il decorator interno che avvolge la funzione passata (`func`).
|
135
145
|
@functools.wraps(func)
|
136
146
|
def behaviour(mode, url, headers, payload, params, **kwargs) -> list:
|
137
|
-
|
147
|
+
# `behaviour` è la funzione wrapper che implementa la logica di paginazione.
|
148
|
+
# Accetta i parametri della funzione originale (`func`) e aggiunge il supporto alla paginazione.
|
149
|
+
result = [] # Lista che conterrà i risultati aggregati.
|
138
150
|
|
139
151
|
# se la chiamata è bulk, il payload deve essere un lista e qui viene divisa in chunk e viene chiamata un
|
140
152
|
# chunk per volta, ogni chunk ha la dimensione del page_size
|
141
153
|
if bulk and not single_page: # se la bulk viene richiesta in single_page, ricade nell'uso normale
|
154
|
+
# Divide il payload in chunk della dimensione specificata da `page_size`.
|
142
155
|
c_payload = chunks(payload, page_size)
|
156
|
+
# Per ogni chunk:
|
143
157
|
for c in c_payload:
|
158
|
+
# Chiama la funzione originale (`func`) con il chunk corrente.
|
144
159
|
result_partial = func(mode, url, headers, c, params, **kwargs)
|
160
|
+
# Se il risultato non è una lista, lo converte in una lista.
|
145
161
|
if not isinstance(result_partial, list): result_partial = [result_partial]
|
162
|
+
# Aggiunge i risultati parziali alla lista complessiva `result`.
|
146
163
|
result += result_partial
|
147
164
|
|
148
|
-
else:
|
149
|
-
size = page_size if not single_page else limit
|
150
|
-
params['skip'] = skip
|
151
|
-
params['limit'] = min(size, limit)
|
152
|
-
while True:
|
165
|
+
else: # Se non è in modalità bulk o se è richiesto single_page:
|
166
|
+
size = page_size if not single_page else limit # Determina la dimensione della pagina.
|
167
|
+
params['skip'] = skip # Imposta il valore iniziale di `skip` nei parametri.
|
168
|
+
params['limit'] = min(size, limit) # Imposta il limite massimo per la pagina corrente.
|
169
|
+
while True: # Ciclo per iterare attraverso le pagine.
|
170
|
+
# Chiama la funzione originale (`func`) con i parametri della pagina corrente.
|
153
171
|
result_partial = func(mode, url, headers, payload, params, **kwargs)
|
172
|
+
# Se il risultato non è una lista, lo converte in una lista.
|
154
173
|
if not isinstance(result_partial, list): result_partial = [result_partial]
|
174
|
+
# Aggiunge i risultati parziali alla lista complessiva `result`.
|
155
175
|
result += result_partial
|
176
|
+
# Aggiorna il valore di `skip` per passare alla pagina successiva.
|
156
177
|
params['skip'] = params['skip'] + size
|
178
|
+
# Interrompe il ciclo se:
|
179
|
+
# - Non ci sono più risultati (`result_partial` è vuoto).
|
180
|
+
# - Il numero di risultati è inferiore alla dimensione della pagina.
|
181
|
+
# - Il numero totale di risultati supera il limite specificato.
|
182
|
+
# - È richiesto il single_page.
|
157
183
|
if not result_partial or len(result_partial) < size or len(result) > limit or single_page: break
|
158
184
|
|
159
185
|
# se count è True il result è una lista con dentro una tupla, in questa maniera viene trasmessa solo la tupla
|
hive/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
version = '3.
|
1
|
+
version = '3.21.0'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: xautomata-hive
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.21.0
|
4
4
|
Home-page: https://github.com/sherlogic/xautomata-hive.git
|
5
5
|
Author: Enrico Ferro - Andrea Jacassi
|
6
6
|
Author-email:
|
@@ -8,9 +8,9 @@ License: MIT
|
|
8
8
|
Requires-Python: >=3.8.0
|
9
9
|
Description-Content-Type: text/markdown
|
10
10
|
License-File: LICENSE
|
11
|
+
Requires-Dist: urllib3==2.0.4
|
11
12
|
Requires-Dist: requests==2.31.0
|
12
13
|
Requires-Dist: tqdm==4.64.1
|
13
|
-
Requires-Dist: urllib3==2.0.4
|
14
14
|
|
15
15
|
# Xautomata API
|
16
16
|
Pacchetto che fornisca una interfaccia semplice per usare le API di Xautomata in python
|
@@ -1,10 +1,10 @@
|
|
1
1
|
hive/__init__.py,sha256=UjH5QfSfRGu2FR5_StfVbEtL_fuGS2Z_iZXmf1nx4AE,68
|
2
|
-
hive/api.py,sha256=
|
3
|
-
hive/decorators.py,sha256=
|
2
|
+
hive/api.py,sha256=tXYFzcAEyWGmdQ3PWLD8u1m_4tCe4IL-YVAn6SUbahc,42151
|
3
|
+
hive/decorators.py,sha256=qvXBMfkzmJ3nHzpnX96thrTdZjWuw4WAqYaxsJCfRug,12110
|
4
4
|
hive/exceptions.py,sha256=kTJSPMViU2ZhF_ENbL_i-skU3YEv_ViJH2PpUQ6ums8,136
|
5
5
|
hive/infrastrucure_keys.py,sha256=UzgXex6tQsglowhKeb45e7vw4u7kh2wM0YscQPorodU,4095
|
6
6
|
hive/tools.py,sha256=Oi_d6wphtAS4f1wOhFzdXZj8Au1nwZ-UrRvIJDBQLMo,1371
|
7
|
-
hive/version.py,sha256=
|
7
|
+
hive/version.py,sha256=CzEEPnYnPo514ZDmU-I_H_Uu3B3rOyK4rzwGXkNMQy0,18
|
8
8
|
hive/cookbook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
hive/cookbook/acl_docs.py,sha256=0xr7Vb9121vhsiZjQaKvuAt4gKlXOO4aUJM472HeARw,786
|
10
10
|
hive/cookbook/acl_overrides.py,sha256=l3xyJmGeQysP1M2Sa6kVhDn8n6ttCKUzJ0jTcPjyo78,9690
|
@@ -15,8 +15,8 @@ hive/cookbook/calendars.py,sha256=1D1KpAACZbb96vaGqmC5MvvB7Juh908DI-_7BKE7Gkk,23
|
|
15
15
|
hive/cookbook/contacts.py,sha256=vhkBjaxFoQA5P-GSGLsgtcvo3rbAPfHOCiB87tXtQsM,39183
|
16
16
|
hive/cookbook/cost_tagging.py,sha256=wwLgo3YaDI4Xm7QcQVlf4kXxz8kPP7J7Qh4ddzuaDro,7779
|
17
17
|
hive/cookbook/cost_tags.py,sha256=Dyf9HNXQstzSGbb7AWC1_D5i4hmFhM7jGQvrYSHZkVo,10038
|
18
|
-
hive/cookbook/cost_tree_nodes.py,sha256=
|
19
|
-
hive/cookbook/cost_tree_resources.py,sha256=
|
18
|
+
hive/cookbook/cost_tree_nodes.py,sha256=lYpBXMl3IgjE__G7tSOzLvAIfytIB23kanmQkWW8Rak,15891
|
19
|
+
hive/cookbook/cost_tree_resources.py,sha256=jB14aJlUrppkkFo6L7nWQI6dKwpGgjV3uLNwZGVu3f8,19677
|
20
20
|
hive/cookbook/cost_views.py,sha256=oPi-RA07W4SmZjdGhqSzVNoop9U6rZPLGJImS4hyqa8,11945
|
21
21
|
hive/cookbook/customers.py,sha256=RCr5Eo1ygTSnnHi3mwl_2iLtF4sZ60DP5J5PCXgNW1Q,81924
|
22
22
|
hive/cookbook/dashboards.py,sha256=h-aINDn4DhvqVA6vMUPJwxhFbxMt1HKUrcOdKDL0Uhk,33600
|
@@ -29,6 +29,7 @@ hive/cookbook/firmware_updates.py,sha256=2N4dwLWWOq6it0f3SbLYixzAkATZ0O9v5lX-6gQ
|
|
29
29
|
hive/cookbook/google.py,sha256=fxequ6Vsd7kzWyP2VV2xs8JmLUJCiw_8P7gsuYZDoM0,1430
|
30
30
|
hive/cookbook/groups.py,sha256=VEN3qd7sEaHo8eSjRLcDlUGhlFe0T7okltNPKHsDD3U,47920
|
31
31
|
hive/cookbook/jobs.py,sha256=VlmqbBNMx-dBMsaolHIlxJcuFTGIbPfoNOOBYhFOsnQ,4105
|
32
|
+
hive/cookbook/last_object_status.py,sha256=DUQhy8VDG9QKBf-RBpLMKcGlptMnWwPo7rxiuNJ8-Ns,15409
|
32
33
|
hive/cookbook/last_status.py,sha256=ewv8gKdDmxohf-btM6DNxVdywY8v_4kep9D37sfRa98,13163
|
33
34
|
hive/cookbook/last_status_v2.py,sha256=Busbt6O1PWno81IdZRa6v8mQjDfj32Y2qMz1xFzyPJc,13178
|
34
35
|
hive/cookbook/login.py,sha256=7LoUWuKvRTNlyejeC4gZ60hj1frAx77PzP-E0zBV0L4,22919
|
@@ -45,7 +46,7 @@ hive/cookbook/probe_types.py,sha256=isKPKbMr19_DVtI_0Erk4i3g6Hh_yWxOo6RbTCOkCxw,
|
|
45
46
|
hive/cookbook/probes.py,sha256=PuiD6ZGMHHYBzbDQNo9J48NENQo4PLFE7PgEA4Iy7U0,25124
|
46
47
|
hive/cookbook/probes_log_ingest.py,sha256=0D5szbqHOujPbGQ_nyZZZpob4damvWjo1FSw9iDf0fM,1661
|
47
48
|
hive/cookbook/profile_topics.py,sha256=Wp209fmSsrEZ3jnn6AYHjX7jJ12zfFDV-T9liGUHuXI,10253
|
48
|
-
hive/cookbook/questions.py,sha256=
|
49
|
+
hive/cookbook/questions.py,sha256=VMf1WWHYFfegujy5bpI7kxVlokOpHraKW7JRppoPvYQ,8070
|
49
50
|
hive/cookbook/reason_for_closure.py,sha256=PqDleTYc6RJmhPrJ7q-A9RgCc6GEC05x_hU9R2sXIFE,11012
|
50
51
|
hive/cookbook/retention_rules.py,sha256=brW64MqYrl4XNYN7ZxojVDWXpdBV4fRpR7a2A1ya2zM,7958
|
51
52
|
hive/cookbook/schedules.py,sha256=ldI-hpOx-EpCy3oSOVczk8114QL2bS_2rsjNI6TEMjc,6916
|
@@ -55,7 +56,7 @@ hive/cookbook/terms_and_conditions.py,sha256=cc01N2N41yAbFa5HCvY2Ur4nujSQb1VnEbs
|
|
55
56
|
hive/cookbook/tree_hierarchy.py,sha256=ldJ1hMFQcghA6P2gRHheLjG74X8B6Z1JaupeAW9vg9s,23749
|
56
57
|
hive/cookbook/tree_hierarchy_v2.py,sha256=r2aYianO9sUQa2-cec9wA3j7iWLGSLHBVSM1n3Vh8sA,23805
|
57
58
|
hive/cookbook/ts_automata_state.py,sha256=51CXpeq3Km5Lg8OJbyEvnGRpJT9CvB3v_IV0jiXOp1Q,6260
|
58
|
-
hive/cookbook/ts_cost_azure_raw.py,sha256=
|
59
|
+
hive/cookbook/ts_cost_azure_raw.py,sha256=XILGs9zAePOz4mCjpbZIpjgT2yd1P0Adg8lymmwm83o,36355
|
59
60
|
hive/cookbook/ts_cost_management.py,sha256=sGi7DgU9EUEgLSGrXy9B2PbqIOId2SckI0LnJ9r0xb0,41506
|
60
61
|
hive/cookbook/ts_cost_management_v2.py,sha256=pZtgB1fpq50VHuSQ8c4DJtbLtnaU71HfTfnhTYTY-N0,41684
|
61
62
|
hive/cookbook/ts_metric_status.py,sha256=AkoMOc1WTMb-dV_GTN5M5y1O0gzPVpNlV3r_wmnmIWI,6375
|
@@ -63,14 +64,14 @@ hive/cookbook/ts_metric_value.py,sha256=ehkjUMsAcZaA9HC0sN39gYKtXEG2xArdPsmhXWKS
|
|
63
64
|
hive/cookbook/ts_ntop_flows.py,sha256=Obmn86YlFvymWMzSkQ9Lrq7OuznLf2m4T_JiC8X_qpY,17197
|
64
65
|
hive/cookbook/ts_service_status.py,sha256=hr0heuEkEWmjvVsYVMQJpcve0hrQiY3a8w-OdfBchT8,15143
|
65
66
|
hive/cookbook/ts_service_value.py,sha256=CAxT58Ss4cdECAv8Uuxs3UdV-CCtdVGaur3AddNAmbU,14428
|
66
|
-
hive/cookbook/users.py,sha256=
|
67
|
+
hive/cookbook/users.py,sha256=FGeHTuvcXkZN2oC-Zuj4qSsxDysLSPbg9EP0A2YbhmE,52551
|
67
68
|
hive/cookbook/users_notifications.py,sha256=klrqR3awrwKHx6o0wpg2oLFdU0PWA2MSa41KtJQhNjw,8165
|
68
69
|
hive/cookbook/virtual_domains.py,sha256=N3dp3pjkO-5jni3KBcCukRqcmVqAFYCDV6dgVXrHaFM,22826
|
69
|
-
hive/cookbook/webhooks.py,sha256=
|
70
|
+
hive/cookbook/webhooks.py,sha256=PYbA1nZqJ9p8qbKk8Ba5_WLXKgJMkXmRI1YFK70RPxQ,7047
|
70
71
|
hive/cookbook/widget_groups.py,sha256=GY7mBh72HzI9RRMCwnmJ-fildtZ3w4BrPDUdNfNoVyk,16018
|
71
72
|
hive/cookbook/widgets.py,sha256=nYAEwh17aMGam8EC13jUwSR_i9KuP4yYRt25F0J6Z4g,23497
|
72
|
-
xautomata_hive-3.
|
73
|
-
xautomata_hive-3.
|
74
|
-
xautomata_hive-3.
|
75
|
-
xautomata_hive-3.
|
76
|
-
xautomata_hive-3.
|
73
|
+
xautomata_hive-3.21.0.dist-info/LICENSE,sha256=CFT1oIPm4kciOjwep2r1LQnpATugddSy3D839fsmgFs,1065
|
74
|
+
xautomata_hive-3.21.0.dist-info/METADATA,sha256=5uc08Aguie_ZpaP5McMGIowt9KndfzIO4XjrtH2SWzM,10747
|
75
|
+
xautomata_hive-3.21.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
76
|
+
xautomata_hive-3.21.0.dist-info/top_level.txt,sha256=pLpVAuviHGk3pzaFXU-4GKttxGTGAbFoWK8JvUl1jHQ,5
|
77
|
+
xautomata_hive-3.21.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|