Skip to content

Commit

Permalink
Merge pull request #3 from cr0wg4n/develop
Browse files Browse the repository at this point in the history
0.0.4 version - all spaces
  • Loading branch information
cr0wg4n committed May 28, 2021
2 parents 42042e8 + 50d7561 commit ddf297d
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 17 deletions.
45 changes: 31 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,15 @@
I only use `requests` to perform HTTP requests and pure logic for
all behaviour.
## Installation
You can find this package in https://pypi.org/project/kibana-api/

```bash
pip install kibana-api
```
## Usage and Examples
If you going to test every example, you shold run the `docker-compose.yml` example(development section).
If you going to test every example, you should run the `docker-compose.yml` example(development section).

Take a note: every `create` action returns a `<Requests>` Object as a result of HTTP request

### Configure Kibana Object:
```python
Expand All @@ -33,7 +36,9 @@ description = "descripcion del espacio de pruebas"
color = "#000000"
space = kibana.space(id=id, name=name, description=description, color=color)
space_response = space.create()
space_json = space_response.json()
```

### Create Object (index-pattern)
```python
pattern_json = {
Expand All @@ -43,6 +48,7 @@ pattern_json = {
}
kibana = Kibana(base_url=URL, username=USERNAME, password=PASSWORD)
index_pattern_response = kibana.object(space_id="demo").create('index-pattern', attribs=pattern_json)
index_pattern_json = index_pattern.json()
```

### Create Object (visualization)
Expand All @@ -51,15 +57,17 @@ type = "metric"
title = "Hello this is a basic metric visualization"
index_pattern_id = "XXXX-XXX-XXXX" # every visualization needs an index pattern to work
visualization = Visualization(type=type, title=title, index_pattern_id=index_pattern).create()
visualization_response = kibana.object(space_id="demo").create('visualization', body=visualization).json()
visualization_response = kibana.object(space_id="demo").create('visualization', body=visualization)
visualization_json = visualization_response.json()
```

### Visualization Modelation
```python
index_pattern = "XXXXX-XXXXXX-XXXXXX"
type = "line"
title = "Hello this is a basic line visualization"
visualization = Visualization(type=type, title=title, index_pattern_id=index_pattern)
visulization_json = visualization.create()
visulization_model_json = visualization.create() # this operation returns a JSON body not a request response
```

### Panel Modelation
Expand All @@ -69,35 +77,44 @@ height=12
pos_x=0
pos_y=1
panel = Panel("panel_0", width, height, pos_x, pos_y, visualization_id=visualization_id)
panel_json = panel.create()
references = panel.get_references()
panel_model_json = panel.create() # this operation returns a JSON body not a request response
references_model_json = panel.get_references() # this operation returns a JSON body not a request response
```

### Create Object (dashboard)
```python
index_pattern = "XXXXX-XXXXXX-XXXXXX"
index_pattern_id = "XXXXX-XXXXXX-XXXXXX"
type = "line"
title = "Hello this is a basic line visualization"
visualization = Visualization(type=type, title=title, index_pattern_id=index_pattern).create()
visualization_response = kibana.object(space_id="demo").create('visualization', body=visualization).json()
visualization_id = visualization_response["id"]
visualization = Visualization(type=type, title=title, index_pattern_id=index_pattern_id).create() # this operation returns a JSON body not a request response
visualization_response = kibana.object(space_id="demo").create('visualization', body=visualization)
visualization_json = visualization_response.json()
visualization_id = visualization_json["id"]

panel = Panel("panel_0", 48, 12, 0, 2, visualization_id=visualization_id)
panels = [panel.create()]
references = [panel.get_reference()]
dashboard = Dashboard(title="Demo Dashboard", panels=panels, references=references)
dashboard_response = dashboard.create()
dashboard = Dashboard(title="Demo Dashboard", panels=panels, references=references).create() # this operation returns a JSON body not a request response

dashboard_response = kibana.object(space_id=mock.space_id).create('dashboard', body=dashboard)
dashboard_json = dashboard_response.json()
```

### List all objects
```python
objects_response = kibana.object(space_id="demo").all() # All objects
print(objects_response.json())
objects_json = objects_response.json()
# Filter by types: "visualization", "dashboard", "search", "index-pattern",
# "config", "timelion-sheet", "url", "query", "canvas-element", "canvas-workpad", "lens",
# "infrastructure-ui-source", "metrics-explorer-view", "inventory-view"
objects_response = kibana.object(space_id="demo").all(type="index-pattern") # Type in specific
print(objects_response.json())
objects_json = objects_response.json()
```

### List all spaces
```python
spaces_response = kibana.space().all() # All spaces
spaces_json = spaces_response.json()
```

### Import Objects
Expand Down Expand Up @@ -182,4 +199,4 @@ My blog: [cr0wg4n](https://cr0wg4n.medium.com/)

Twitter: [cr0wg4n](https://twitter.com/cr0wg4n)

Linkedin: [cr0wg4n](https://www.linkedin.com/in/cr0wg4n/)
Linkedin: [cr0wg4n](https://www.linkedin.com/in/cr0wg4n/)
6 changes: 6 additions & 0 deletions kibana_api/objects.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class Space(BaseModel):
def __init__(self, id=None, name=None, description=None, color=None, initials=None, disabledFeatures=None, _reserved=None, kibana=None) -> None:
super().__init__(["id", "name","description", "color", "initials", "disabledFeatures", "_reserved"], kibana=kibana)
self.create_url = "api/spaces/space"
self.all_url = self.create_url
self.id = id
self.name = name
self.description = description
Expand All @@ -21,6 +22,11 @@ def create(self):
response = self.requester(url=url, method="post", data=data)
return response

def all(self):
url = self.url(self.create_url)
response = self.requester(url=url, method="get")
return response

class Object(BaseModel):
def __init__(self, space_id=None, kibana=None, attribs={}, type="", references={}) -> None:
super().__init__([], space_id=space_id, kibana=kibana)
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

setuptools.setup(
name="kibana-api",
version="0.0.3",
version="0.0.4",
author="Mauricio Matias Conde",
author_email="mcm.crw@gmail.com",
description="This is an API mapping library for Kibana API to generate visualizations and dashboards automatically",
Expand Down
9 changes: 7 additions & 2 deletions tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,9 @@ def test7_create_dashboard(self):
panel = Panel("panel_0", 48, 12, 0, 2, visualization_id=mock.visualization_id)
panels = [panel.create()]
references = [panel.get_reference()]
dasboard = Dashboard(title="hola mundo", panels=panels, references=references, query="user.name: mat*").create()
dashboard = Dashboard(title="hola mundo", panels=panels, references=references, query="user.name: mat*").create()
kibana = Kibana(base_url=URL, username=USERNAME, password=PASSWORD)
response = kibana.object(space_id=mock.space_id).create('dashboard', body=dasboard).json()
response = kibana.object(space_id=mock.space_id).create('dashboard', body=dashboard).json()
dashboard_id = response["id"]
print("dashboard created: ", dashboard_id)

Expand All @@ -129,5 +129,10 @@ def test8_object_by_id(self):
reponse = kibana.object(space_id=mock.space_id).get(id=mock.visualization_id, type="visualization")
print(reponse)

def test9_get_all_spaces(self):
kibana = Kibana(base_url=URL, username=USERNAME, password=PASSWORD)
response = kibana.space().all().json()
print(response)

if __name__ == "__main__":
unittest.main()

0 comments on commit ddf297d

Please sign in to comment.