Skip to main content

MySQL tool for opsmate

Project description

opsmate-tool-mysql

opsmate-tool-mysql is a tool for Opsmate that allows you to interact with MySQL databases with the assistance of a LLM.

Should I use this tool?

:warning: This is an early prototype and the protocol is yet to be finalized. :warning:

Here is the guide to help you to make decisions about whether you should use this tool at the moment:

Situation Recommendation
I am not sure if this tool is mature enough for my use case Don't use it
I want this tool to perform all the production db administration tasks for me Absolutely not
There is a pressing production issue that needs to be resolved urgently, this mysql plugin might be useful Seriously NO
I really want to use this tool but I'm worried about PII and data privacy implications Don't use it
I have a non-production database and I want to test this tool Maybe

Installation

Change directory to this folder and run:

opsmate install opsmate-tool-mysql

Usage

First, start the MySQL server using docker-compose: Note we have a x-for-pet database schema and sample data in the fixtures/mydb.sql file.

docker compose -f fixtures/docker-compose.yml up

Then you can test the tool by running:

opsmate chat\
  --runtime-mysql-password my-secret-pw \
  --runtime-mysql-host localhost \
  --tools MySQLTool

Implementation Details

The tool is implemented in the mysql/tool.py file.

The tool uses the MySQLRuntime class to connect to the MySQL server, which is implements the Runtime interface. It is implemented in the mysql/runtime.py file.

In the pyproject.toml file you can find the entry points for the tool and the runtime:

[project.entry-points."opsmate.tools"]
tool = "mysql.tool:MySQLTool"

[project.entry-points."opsmate.runtime.runtimes"]
runtime = "mysql.runtime:MySQLRuntime"

This is to make sure that the tools are "autodiscovered" by Opsmate on startup. To verify this you can run the following commands:

# to verify the mysql tool is autodiscovered
opsmate list-tools | grep -i mysql
│ MySQLTool            MySQL tool
# to verify the mysql runtime is autodiscovered
opsmate chat --help | grep -i mysql
  --runtime-mysql-timeout INTEGER
                                  The timeout of the MySQL server (env:
                                  RUNTIME_MYSQL_TIMEOUT)  [default: 120]
  --runtime-mysql-charset TEXT    The charset of the MySQL server (env:
                                  RUNTIME_MYSQL_CHARSET)  [default: utf8mb4]
  --runtime-mysql-database TEXT   The database of the MySQL server (env:
                                  RUNTIME_MYSQL_DATABASE)
  --runtime-mysql-password TEXT   The password of the MySQL server (env:
                                  RUNTIME_MYSQL_PASSWORD)  [default: ""]
  --runtime-mysql-user TEXT       The user of the MySQL server (env:
                                  RUNTIME_MYSQL_USER)  [default: root]
  --runtime-mysql-port INTEGER    The port of the MySQL server (env:
                                  RUNTIME_MYSQL_PORT)  [default: 3306]
  --runtime-mysql-host TEXT       The host of the MySQL server (env:
                                  RUNTIME_MYSQL_HOST)  [default: localhost]

Uninstall

opsmate uninstall -y opsmate-tool-mysql

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opsmate_tool_mysql-0.1.2a0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opsmate_tool_mysql-0.1.2a0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file opsmate_tool_mysql-0.1.2a0.tar.gz.

File metadata

  • Download URL: opsmate_tool_mysql-0.1.2a0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for opsmate_tool_mysql-0.1.2a0.tar.gz
Algorithm Hash digest
SHA256 e0f2e095c0937850ed9dc7d14f0405f3a987171cc4043c93ef1eb56710d8b6ef
MD5 21bc1bf753a2aae2264402794f9f4248
BLAKE2b-256 39d42737b57f8d399d8e999cc03e0ddc29b1858f38e69b7a680274f03028ca14

See more details on using hashes here.

Provenance

The following attestation bundles were made for opsmate_tool_mysql-0.1.2a0.tar.gz:

Publisher: publish.yml on jingkaihe/opsmate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opsmate_tool_mysql-0.1.2a0-py3-none-any.whl.

File metadata

File hashes

Hashes for opsmate_tool_mysql-0.1.2a0-py3-none-any.whl
Algorithm Hash digest
SHA256 f7655436734f404f3243ef953fec1fd718578c8f051445a8771669bb3cba1451
MD5 f9e89badc97c8b614562c9e68990cb1a
BLAKE2b-256 9006061b34ce9c21050cc13249d25aab243e00bab2b56d76705324a91fd19115

See more details on using hashes here.

Provenance

The following attestation bundles were made for opsmate_tool_mysql-0.1.2a0-py3-none-any.whl:

Publisher: publish.yml on jingkaihe/opsmate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page