or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

admin-and-rbac.mdalerting.mdauthentication.mdclient-management.mddashboards.mddata-models.mddatasources.mdindex.mdlibrary-elements.mdplugin-management.mdsnapshot-management.mdusers-and-orgs.md

library-elements.mddocs/

0

# Library Elements

1

2

Management of reusable library panels and variables that can be shared across multiple dashboards. Library elements promote consistency and efficiency by allowing you to create once and reuse across your Grafana instance.

3

4

**Note**: Library elements are only available in Grafana 8.2 and later versions.

5

6

## Capabilities

7

8

### Element Constants

9

10

Library element type constants for creating and filtering elements.

11

12

```python { .api }

13

Panel: int = 1 # Library panel type

14

Variable: int = 2 # Library variable type

15

```

16

17

### Element Retrieval

18

19

Retrieve library elements by identifier, name, or get connection information showing which dashboards use them.

20

21

```python { .api }

22

def get_library_element(self, element_uid: str):

23

"""

24

Get a library element by its UID.

25

26

Parameters:

27

element_uid (str): The unique identifier of the library element

28

29

Returns:

30

dict: Library element data including model and metadata

31

32

Raises:

33

DeprecationWarning: If Grafana version is earlier than 8.2

34

"""

35

36

def get_library_element_by_name(self, element_name: str):

37

"""

38

Get a library element by its name.

39

40

Parameters:

41

element_name (str): The name of the library element

42

43

Returns:

44

dict: Library element data including model and metadata

45

46

Raises:

47

DeprecationWarning: If Grafana version is earlier than 8.2

48

"""

49

50

def get_library_element_connections(self, element_uid: str):

51

"""

52

Get connections showing which dashboards use this library element.

53

54

Parameters:

55

element_uid (str): The unique identifier of the library element

56

57

Returns:

58

dict: Connection information with dashboard references

59

60

Raises:

61

DeprecationWarning: If Grafana version is earlier than 8.2

62

"""

63

```

64

65

### Element Management

66

67

Create, update, and delete library elements with comprehensive configuration options.

68

69

```python { .api }

70

def create_library_element(self, model: dict, name: Optional[str] = None,

71

kind: int = 1, uid: Optional[str] = None,

72

folder_uid: Optional[str] = None):

73

"""

74

Create a new library element.

75

76

Parameters:

77

model (dict): The element model (panel or variable configuration)

78

name (str, optional): Name for the element. Extracted from model if not provided

79

kind (int): Element type - Panel (1) or Variable (2). Default is Panel

80

uid (str, optional): Custom UID. Generated if not provided

81

folder_uid (str, optional): Folder to store element in

82

83

Returns:

84

dict: Created library element with assigned UID and metadata

85

86

Raises:

87

DeprecationWarning: If Grafana version is earlier than 8.2

88

"""

89

90

def update_library_element(self, uid: str, model: dict, name: Optional[str] = None,

91

kind: int = 1, folder_uid: Optional[str] = None,

92

version: Optional[int] = None):

93

"""

94

Update an existing library element.

95

96

Parameters:

97

uid (str): The UID of the element to update

98

model (dict): Updated element model

99

name (str, optional): Updated name

100

kind (int): Element type - Panel (1) or Variable (2)

101

folder_uid (str, optional): Move to different folder

102

version (int, optional): Element version for optimistic locking

103

104

Returns:

105

dict: Updated library element

106

107

Raises:

108

DeprecationWarning: If Grafana version is earlier than 8.2

109

ValueError: If version is required but not provided

110

"""

111

112

def delete_library_element(self, element_uid: str):

113

"""

114

Delete a library element.

115

116

Parameters:

117

element_uid (str): The UID of the element to delete

118

119

Returns:

120

dict: Deletion result

121

122

Raises:

123

DeprecationWarning: If Grafana version is earlier than 8.2

124

"""

125

```

126

127

### Element Listing and Search

128

129

List and search library elements with comprehensive filtering and pagination options.

130

131

```python { .api }

132

def list_library_elements(self, search_string: Optional[str] = None,

133

kind: Optional[int] = None, sort_direction: Optional[str] = None,

134

type_filter: Optional[str] = None, exclude_uid: Optional[str] = None,

135

folder_filter: Optional[str] = None, per_page: Optional[int] = None,

136

page: Optional[int] = None):

137

"""

138

List library elements with optional search and filtering.

139

140

Parameters:

141

search_string (str, optional): Search term for element names

142

kind (int, optional): Filter by element type (Panel=1, Variable=2)

143

sort_direction (str, optional): Sort direction ("asc" or "desc")

144

type_filter (str, optional): Filter by panel type

145

exclude_uid (str, optional): Exclude element with this UID

146

folder_filter (str, optional): Filter by folder

147

per_page (int, optional): Results per page for pagination

148

page (int, optional): Page number for pagination

149

150

Returns:

151

dict: List of library elements with pagination metadata

152

153

Raises:

154

DeprecationWarning: If Grafana version is earlier than 8.2

155

"""

156

```

157

158

## Usage Examples

159

160

### Creating Library Elements

161

162

```python

163

from grafana_client import GrafanaApi, TokenAuth

164

165

# Create API client

166

auth = TokenAuth(token="your-grafana-api-token")

167

api = GrafanaApi(auth=auth, host="your-grafana-host")

168

169

# Create a library panel

170

panel_model = {

171

"type": "stat",

172

"title": "Server CPU Usage",

173

"targets": [

174

{

175

"expr": "cpu_usage_percent",

176

"refId": "A"

177

}

178

],

179

"fieldConfig": {

180

"defaults": {

181

"unit": "percent",

182

"thresholds": {

183

"steps": [

184

{"color": "green", "value": None},

185

{"color": "yellow", "value": 70},

186

{"color": "red", "value": 90}

187

]

188

}

189

}

190

}

191

}

192

193

# Create the library panel

194

library_panel = api.libraryelement.create_library_element(

195

model=panel_model,

196

name="CPU Usage Panel",

197

kind=api.libraryelement.Panel,

198

folder_uid="monitoring-folder-uid"

199

)

200

201

print(f"Created library panel: {library_panel['uid']}")

202

203

# Create a library variable

204

variable_model = {

205

"type": "query",

206

"name": "server",

207

"label": "Server",

208

"query": "label_values(up, instance)",

209

"multi": True,

210

"includeAll": True

211

}

212

213

library_variable = api.libraryelement.create_library_element(

214

model=variable_model,

215

name="Server Selection Variable",

216

kind=api.libraryelement.Variable

217

)

218

219

print(f"Created library variable: {library_variable['uid']}")

220

```

221

222

### Managing Library Elements

223

224

```python

225

# List all library panels

226

panels = api.libraryelement.list_library_elements(

227

kind=api.libraryelement.Panel,

228

sort_direction="asc"

229

)

230

231

for panel in panels['elements']:

232

print(f"Panel: {panel['name']} - UID: {panel['uid']}")

233

234

# Search for CPU-related elements

235

cpu_elements = api.libraryelement.list_library_elements(

236

search_string="CPU",

237

per_page=10,

238

page=1

239

)

240

241

# Get specific library element

242

element_uid = "library-panel-uid"

243

element = api.libraryelement.get_library_element(element_uid)

244

print(f"Element: {element['name']} - Type: {element['kind']}")

245

246

# Check which dashboards use this element

247

connections = api.libraryelement.get_library_element_connections(element_uid)

248

for connection in connections:

249

print(f"Used in dashboard: {connection['connectionUid']}")

250

251

# Update library element

252

updated_model = element['model']

253

updated_model['title'] = "Updated CPU Usage Panel"

254

255

api.libraryelement.update_library_element(

256

uid=element_uid,

257

model=updated_model,

258

name="Updated CPU Usage Panel"

259

)

260

261

# Delete library element (only if not in use)

262

api.libraryelement.delete_library_element(element_uid)

263

print("Library element deleted")

264

```

265

266

### Working with Library Variables

267

268

```python

269

# Create a complex library variable

270

datasource_variable = {

271

"type": "datasource",

272

"name": "datasource",

273

"label": "Data Source",

274

"query": "prometheus",

275

"multi": False,

276

"includeAll": False,

277

"current": {

278

"value": "prometheus-uid",

279

"text": "Prometheus"

280

}

281

}

282

283

library_var = api.libraryelement.create_library_element(

284

model=datasource_variable,

285

name="Prometheus Datasource Variable",

286

kind=api.libraryelement.Variable,

287

folder_uid="variables-folder"

288

)

289

290

# List only library variables

291

variables = api.libraryelement.list_library_elements(

292

kind=api.libraryelement.Variable

293

)

294

295

for var in variables['elements']:

296

print(f"Variable: {var['name']} - Type: {var['model']['type']}")

297

```