Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
06f0a61
PMM-7: New buckets
peterSirotnak Jun 4, 2025
3238db9
PMM-7: Configure agents
peterSirotnak Jun 5, 2025
aae13c6
PMM-7: Configure agents
peterSirotnak Jun 5, 2025
ab67e16
PMM-7: Minio
peterSirotnak Jun 6, 2025
e3c4421
PMM-7: Minio
peterSirotnak Jun 7, 2025
4498168
PMM-7: Minio
peterSirotnak Jun 7, 2025
da934d0
PMM-7: Minio
peterSirotnak Jun 8, 2025
4febefe
PMM-7: Minio
peterSirotnak Jun 8, 2025
03c8625
PMM-7: Minio
peterSirotnak Jun 8, 2025
b77b0bf
PMM-7: Minio
peterSirotnak Jun 8, 2025
8fd7b0e
PMM-7: Minio
peterSirotnak Jun 8, 2025
15c7930
PMM-7: Minio
peterSirotnak Jun 8, 2025
353b5f8
PMM-7: Minio
peterSirotnak Jun 8, 2025
4a25383
PMM-7: Minio
peterSirotnak Jun 8, 2025
9fe9408
PMM-7: Minio
peterSirotnak Jun 8, 2025
aacad1b
PMM-7: Minio
peterSirotnak Jun 8, 2025
1ab1024
PMM-7: Minio
peterSirotnak Jun 8, 2025
875ce5f
PMM-7: Minio
peterSirotnak Jun 8, 2025
4c0d568
PMM-7: Minio
peterSirotnak Jun 8, 2025
2085ac0
PMM-7: Minio
peterSirotnak Jun 8, 2025
7ac3513
PMM-7: Minio
peterSirotnak Jun 8, 2025
6ba7e6e
PMM-7: Minio
peterSirotnak Jun 8, 2025
9244f6f
PMM-7: Minio
peterSirotnak Jun 8, 2025
932aad0
PMM-7: Minio
peterSirotnak Jun 8, 2025
2183beb
PMM-7: Minio
peterSirotnak Jun 8, 2025
168b161
PMM-7: Minio
peterSirotnak Jun 8, 2025
1135804
PMM-7: Minio
peterSirotnak Jun 8, 2025
fe762fb
PMM-7: Minio
peterSirotnak Jun 9, 2025
7f9258f
PMM-7: Code cleanup
peterSirotnak Jun 10, 2025
db661f2
PMM-7: Code cleanup
peterSirotnak Jun 10, 2025
dbea822
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
f689b3a
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
b7ff844
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
1f9ed10
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
5376919
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
bbbd4a6
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
f91fe8e
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
48e47d8
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
f5c3e1e
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
8aa7213
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
799d8c4
PMM-7: Default value for bucket
peterSirotnak Jun 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pmm_psmdb-pbm_setup/start-sharded.sh
Original file line number Diff line number Diff line change
Expand Up @@ -237,10 +237,10 @@ do
echo "congiguring pmm agent on $node"
rs=$(echo $node | awk -F "0" '{print $1}')
docker compose -f docker-compose-sharded.yaml exec -T -e PMM_AGENT_SETUP_NODE_NAME=${node}_${random_number} $node pmm-agent setup
docker compose -f docker-compose-sharded.yaml exec -T $node pmm-admin add mongodb --agent-password=mypass --cluster=sharded --username=${pmm_user} --password=${pmm_pass} ${node}_${random_number} 127.0.0.1:27017
docker compose -f docker-compose-sharded.yaml exec -T $node pmm-admin add mongodb --agent-password=mypass --cluster=sharded --environment=mongo-sharded-dev --username=${pmm_user} --password=${pmm_pass} ${node}_${random_number} 127.0.0.1:27017
done
echo "configuring pmm-agent on primary rscfg01 for mongos instance"
docker compose -f docker-compose-sharded.yaml exec -T rscfg01 pmm-admin add mongodb --agent-password=mypass --cluster=sharded --username=${pmm_user} --password=${pmm_pass} mongos_${random_number} mongos:27017
docker compose -f docker-compose-sharded.yaml exec -T rscfg01 pmm-admin add mongodb --agent-password=mypass --cluster=sharded --environment=mongo-sharded-dev --username=${pmm_user} --password=${pmm_pass} mongos_${random_number} mongos:27017

echo "adding some data"
docker compose -f docker-compose-sharded.yaml exec -T mongos mgodatagen -f /etc/datagen/sharded.json --uri=mongodb://root:root@127.0.0.1:27017
Expand Down
26 changes: 21 additions & 5 deletions pmm_qa/pmm-framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@
"DOCKERCLIENTS": {
"configurations": {} # Empty dictionary for consistency
},
"BUCKET": {
"configurations": {"BUCKET_NAMES": 'bcp'}
}
}


Expand All @@ -92,8 +95,6 @@ def run_ansible_playbook(playbook_filename, env_vars, args):
playbook_path = script_dir + "/" + playbook_filename
verbosity_level = 1



if args.verbosity_level is not None:
verbosity_level = int(args.verbosity_level)

Expand Down Expand Up @@ -212,7 +213,8 @@ def setup_ps(db_type, db_version=None, db_config=None, args=None):
'PS_NODES': no_of_nodes,
'PS_VERSION': ps_version,
'PMM_SERVER_IP': args.pmm_server_ip or container_name or '127.0.0.1',
'PS_CONTAINER': 'ps_pmm_' + str(ps_version) + ('_replica' if setup_type_value in ("replication", "replica") else ''),
'PS_CONTAINER': 'ps_pmm_' + str(ps_version) + (
'_replica' if setup_type_value in ("replication", "replica") else ''),
'PS_PORT': 3318 if setup_type_value in ("replication", "replica") else 3317,
'CLIENT_VERSION': get_value('CLIENT_VERSION', db_type, args, db_config),
'QUERY_SOURCE': get_value('QUERY_SOURCE', db_type, args, db_config),
Expand All @@ -227,6 +229,7 @@ def setup_ps(db_type, db_version=None, db_config=None, args=None):
# Call the function to run the Ansible playbook
run_ansible_playbook(playbook_filename, env_vars, args)


def setup_mysql(db_type, db_version=None, db_config=None, args=None):
# Check if PMM server is running
container_name = get_running_container_name()
Expand Down Expand Up @@ -470,6 +473,7 @@ def setup_mlaunch_psmdb(db_type, db_version=None, db_config=None, args=None):
# Call the function to run the Ansible playbook
run_ansible_playbook(playbook_filename, env_vars, args)


def setup_mlaunch_modb(db_type, db_version=None, db_config=None, args=None):
# Check if PMM server is running
container_name = get_running_container_name()
Expand All @@ -479,7 +483,7 @@ def setup_mlaunch_modb(db_type, db_version=None, db_config=None, args=None):

# Gather Version details
modb_version = os.getenv('MODB_VERSION') or db_version or \
database_configs[db_type]["versions"][-1]
database_configs[db_type]["versions"][-1]

# Define environment variables for playbook
env_vars = {
Expand Down Expand Up @@ -867,12 +871,24 @@ def setup_database(db_type, db_version=None, db_config=None, args=None):
setup_mlaunch_modb(db_type, db_version, db_config, args)
elif db_type == 'SSL_MLAUNCH':
setup_ssl_mlaunch(db_type, db_version, db_config, args)

elif db_type == 'BUCKET':
setup_bucket(db_type, db_version, db_config, args)
else:
print(f"Database type {db_type} is not recognised, Exiting...")
exit(1)


def setup_bucket(db_type, db_version=None, db_config=None, args=None):
print("Setting up bucket")
bucket_names_value = get_value('BUCKET_NAMES', db_type, args, db_config).lower().split(';')
print(bucket_names_value)
env_vars = {
'BUCKETS': bucket_names_value
}

run_ansible_playbook('tasks/create_minio_container.yml', env_vars, args)


# Main
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='PMM Framework Script to setup Multiple Databases',
Expand Down
24 changes: 24 additions & 0 deletions pmm_qa/scripts/pgsql_load.sql
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,30 @@ INSERT INTO enrollments (student_id, class_id) VALUES
(3, 1),
(3, 3);

-- ========================================
-- SIMULATE DEAD TUPLES
-- ========================================


INSERT INTO students (first_name, last_name, birth_date)
SELECT 'John', 'Doe', CURRENT_DATE - (random() * 5000)::int
FROM generate_series(1, 100000);

-- These updates and deletes will create dead tuples

-- Update records (old versions become dead)
UPDATE students
SET last_name = last_name || '_updated'
WHERE student_id IN (1, 2);

-- Delete records (deleted rows become dead)
DELETE FROM enrollments
WHERE enrollment_id IN (SELECT enrollment_id FROM enrollments LIMIT 2);

-- Disable autovacuum temporarily (for demo)
ALTER TABLE students SET (autovacuum_enabled = false);
ALTER TABLE enrollments SET (autovacuum_enabled = false);

-- ========================================
-- SELECT QUERIES
-- ========================================
Expand Down
80 changes: 80 additions & 0 deletions pmm_qa/tasks/create_minio_container.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
- name: Deploy MinIO bucket.
hosts: localhost
connection: local
gather_facts: yes
vars:
network_name: "pmm-qa"
buckets: "{{ lookup('env', 'BUCKETS') | default('bcp', true) }}"
minio_access_key: minio1234
minio_secret_key: minio1234
minio_volume_name: minio_backups
minio_ports:
- "9010:9000"
- "9001:9001"

tasks:
- name: Run docker ps with port info
shell: docker ps -a
register: docker_ps_output

- name: Create Docker network
community.docker.docker_network:
name: "{{ network_name }}"
state: present
ignore_errors: yes

- name: Remove old MinIO docker container
community.docker.docker_container:
name: minio
image: minio/minio
restart_policy: always
state: absent
ignore_errors: yes

- name: Remove MinIO Docker volume
community.docker.docker_volume:
name: "{{ minio_volume_name }}"
state: absent
ignore_errors: true

- name: Create MinIO Docker volume
community.docker.docker_volume:
name: "{{ minio_volume_name }}"

- name: Run MinIO container
community.docker.docker_container:
name: minio
image: minio/minio
restart_policy: unless-stopped
ports: "{{ minio_ports }}"
networks:
- name: "{{ network_name }}"
volumes:
- "{{ minio_volume_name }}:/backups"
env:
MINIO_ACCESS_KEY: "{{ minio_access_key }}"
MINIO_SECRET_KEY: "{{ minio_secret_key }}"
command: server /backups --address 0.0.0.0:9000 --console-address 0.0.0.0:9001

- name: Show the list of buckets
debug:
var: buckets

- name: Set MinIO alias inside the container
community.docker.docker_container_exec:
container: "minio"
command: >
/bin/sh -c "
sleep 5;
/usr/bin/mc alias set myminio http://127.0.0.1:9000 minio1234 minio1234;
exit 0;"

- name: Create MinIO buckets
community.docker.docker_container_exec:
container: "minio"
command: >
/bin/sh -c "
/usr/bin/mc mb myminio/{{ item }} || echo 'Bucket {{ item }} already exists';
exit 0;"
loop: "{{ buckets }}"
Loading