-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
af9bb3f
commit 5f017d4
Showing
7 changed files
with
1,343 additions
and
91 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2023 kaio Guilherme | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,106 +1,133 @@ | ||
# Getting started | ||
|
||
Este guia fornece uma visão geral do Netboxcli e como começar a usá-lo para interagir com o NetBox. | ||
|
||
```mermaid | ||
graph TD; | ||
A[netboxcli] --> B[core]; | ||
A --> C[Client]; | ||
C --> D[organizations]; | ||
C --> E[devices]; | ||
C --> F[connections]; | ||
C --> G[wireless]; | ||
C --> H[ipam]; | ||
C --> I[vpn]; | ||
C --> J[virtualization]; | ||
C --> K[circuits]; | ||
C --> L[power]; | ||
C --> M[provisioning]; | ||
C --> N[customization]; | ||
C --> O[operations]; | ||
``` | ||
## 📄 Dependências | ||
Lista as dependencias | ||
* requests | ||
* python 3.11 ou superior | ||
* [netbox >=3.7.5](https://github.com/netbox-community/netbox) | ||
- Breve visão geral do NetBox, uma plataforma open-source para gestão de infraestrutura IP. | ||
- Explicação sobre a API RESTful do NetBox, que permite interagir com os dados e funcionalidades do NetBox programaticamente. | ||
|
||
## 🔧Instalação | ||
## 2. Configuração do Ambiente de Desenvolvimento: | ||
|
||
### 📁 Acesso ao projeto | ||
- Instruções para configurar um ambiente de desenvolvimento, incluindo a instalação de Python e outras dependências necessárias. | ||
|
||
Apresentar formas de baixar seu projeto. | ||
## 3. Autenticação com o netboxcli: | ||
|
||
[PiP](https://pypi.org/project/netboxcli/) | ||
- Explicação sobre os diferentes métodos de autenticação suportados pelo NetBox API (por exemplo, token de acesso, autenticação básica). | ||
- Instruções para obter as credenciais de autenticação necessárias para interagir com a API. | ||
|
||
[Baixar projeto](https://github.com/Kaioguilherme1/netbox-client/archive/refs/heads/main.zip) | ||
#### Baixar o pacote via terminal. | ||
``` | ||
pip install netboxcli | ||
``` | ||
## ⚙️ Uso | ||
## 4. Uso Básico: | ||
|
||
O NetboxCli é uma ferramenta poderosa para interagir com o NetBox de maneira simples e eficiente. Ele oferece classes consistentes com métodos padronizados para lidar com diversas funcionalidades, incluindo IPAM e Virtualização. Você pode navegar entre as classes da mesma forma que nas abas do NetBox. Aqui estão os passos básicos para começar a usar o NetboxCli: | ||
- Demonstração de como realizar operações simples, como recuperar informações de dispositivos, endereços IP, VLANs, etc. | ||
- Códigos de exemplo em Python para mostrar como fazer requisições HTTP para a API do NetBox e manipular as respostas. | ||
|
||
### Importando o Módulo e Preparando a Conexão | ||
### 1. Criando um site: | ||
|
||
Antes de começar a interagir com o NetBox, você precisa importar o módulo `netboxcli` e criar um objeto NetBox para estabelecer a conexão com o servidor. Substitua `'sua_url_aqui'` pelo endereço IP e porta do seu servidor NetBox e `'seu_token_aqui'` pelo seu token de API. | ||
```py linenums="1" | ||
from netboxcli import Client | ||
|
||
```python | ||
import netboxcli as nb | ||
import json | ||
nb = Client('http://localhost:8000', 'token') | ||
|
||
def printj(data): | ||
print(json.dumps(data, indent=4)) | ||
site = { | ||
"name": "organization-1", | ||
"status": "active", | ||
} | ||
|
||
# Criar um objeto NetBox | ||
nb_client = nb.Client('sua_url_aqui', 'seu_token_aqui') | ||
result = nb.organization.sites.create(site) | ||
|
||
print('Status: ', result['status']) | ||
print('Data: ', result['data']) | ||
``` | ||
|
||
### Utilizando Classes Finais Padrão | ||
resultado esperado: | ||
|
||
Todas as classes finais no NetboxCli têm os mesmos nomes que as classes do NetBox por padrão. Isso facilita a navegação e a familiarização com a estrutura. Aqui estão alguns exemplos de como você pode usar essas classes e seus métodos padronizados: | ||
<!-- termynal --> | ||
|
||
### Exemplo de IPAM: Criar um Novo Bloco de Endereços IP | ||
``` | ||
$ python example.py | ||
```python | ||
# Exemplo de criação de um novo bloco de endereços IP | ||
ip_block_data = { | ||
"prefix": "192.168.10.0/24", | ||
"description": "Bloco de IPs para Servidores", | ||
"vlan": 100 | ||
} | ||
Status: 201 | ||
Data: {"id":1,"url":"http://localhost:8000/api/dcim/sites/2/","display":"organization-1","name":"organization-1"...} | ||
``` | ||
|
||
new_ip_block = nb_client.ipam.prefixes.create(ip_block_data) | ||
O Retorno da função vem no formato de um dicionário com duas chaves, onde: | ||
|
||
- **Status:** retorna o código de status da requisição HTTP (por exemplo, 201 para criado, 404 para não encontrado, etc.). | ||
- **Data:** retorna um objeto JSON com os detalhes do site criado. | ||
|
||
### 2. Listando todos os sites: | ||
|
||
```py linenums="1" | ||
from netboxcli import Client | ||
|
||
nb = Client('http://localhost:8000', 'token') | ||
|
||
result = nb.organization.sites.get() | ||
|
||
print('Status: ', result['status']) | ||
print('Data: ', result['data']) | ||
|
||
``` | ||
|
||
### Exemplo de Virtualização: Obter uma Máquina Virtual por ID | ||
resultado esperado: | ||
|
||
```python | ||
# Exemplo de obtenção de uma máquina virtual por ID | ||
vm_by_id = nb_client.virtualization.virtual_machines.get(id=1) | ||
<!-- termynal --> | ||
|
||
``` | ||
$ python example.py | ||
Status: 200 | ||
Data: {'count': 1, 'next': None, 'previous': None, 'results': [{'id': 2, 'url': 'http://192.168.20.3:8000/api/dcim/sites/2/', 'display': 'organization-1',...]} | ||
``` | ||
O Retorno da função vem no formato de um dicionário com duas chaves, onde: | ||
|
||
### Exemplo de IPAM: Atualizar um Bloco de Endereços IP | ||
- **Status:** retorna o código de status da requisição HTTP (por exemplo, 200 para OK, 404 para não encontrado, etc.). | ||
- **Data:** retorna um objeto JSON com os detalhes dos sites encontrados. | ||
|
||
```python | ||
# Exemplo de atualização de um bloco de endereços IP | ||
updated_ip_block_data = { | ||
"id": 1, | ||
"description": "Novo Descrição para o Bloco de IPs" | ||
!!! note | ||
- O método `get()` sem argumentos retorna todos os sites cadastrados no NetBox em uma lista dentro da Data | ||
- para pegar somente a lista use `result['data']['results']` | ||
|
||
!!! info | ||
- a função `get()` aceita argumentos para filtrar os resultados, como `id`, `name`, `[tags]`,`search` e `limit` | ||
- mais informações sobre os argumentos podem ser encontradas na [Organization.sites](/Client/organization/sites/) | ||
|
||
### 3. Atualizando um site: | ||
|
||
```py linenums="1" | ||
from netboxcli import Client | ||
|
||
nb = Client('http://localhost:8000', 'token') | ||
|
||
site = { | ||
"id": 1, # site id e obrigatorio para atualizar | ||
"status": "planned", | ||
"description": "This is a test site", | ||
} | ||
|
||
updated_ip_block = nb_client.ipam.prefixes.update(updated_ip_block_data) | ||
result = nb.organization.sites.update() | ||
|
||
print('Status: ', result['status']) | ||
print('Data: ', result['data']) | ||
``` | ||
resultado esperado: | ||
|
||
<!-- termynal --> | ||
|
||
``` | ||
$ python example.py | ||
## 5. Tratamento de Erros e Exceções: | ||
- Orientações sobre como lidar com possíveis erros e exceções que podem ocorrer durante o uso da biblioteca. | ||
- Sugestões sobre como implementar tratamentos adequados de erros para garantir a robustez do código. | ||
## 6. Avançando com a Biblioteca: | ||
- Exploração de recursos avançados oferecidos pela biblioteca, como paginação, filtros e ordenação de resultados. | ||
- Exemplos mais complexos de uso da API para realizar operações como criação, atualização e exclusão de objetos no NetBox. | ||
### Exemplo de Virtualização: Excluir uma Máquina Virtual | ||
## 7. Recursos Adicionais: | ||
```python | ||
# Exemplo de exclusão de uma máquina virtual pelo ID | ||
deleted_vm_id = nb_client.virtualization.virtual_machines.delete(id=1) | ||
- Links para a documentação oficial do NetBox API para referência adicional. | ||
- Sugestões de outros recursos, como fóruns de discussão, grupos de usuários ou comunidades online, onde os desenvolvedores podem buscar suporte e compartilhar conhecimento. | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.