From 325e4fbec8cc889b15610d010a1a4fbc35be818d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 9 Mar 2020 16:16:03 +0200 Subject: [PATCH] Added docker scripts --- .gitignore | 6 + data/ansible/docker/docker.yaml | 61 +++ data/ansible/docker/go.yaml | 122 +++++ data/ansible/docker/golang.sh.j2 | 12 + data/ansible/docker/main.yaml | 198 +++++++ data/ansible/docker/nginx.conf.j2 | 45 ++ data/ansible/docker/nginx.yaml | 25 + data/conf/samples/docker/cgrates.json | 123 +++++ data/docker/scratch/build.sh | 24 + data/docker/scratch/cgr-console.doker | 2 + data/docker/scratch/cgr-console.yaml | 15 + data/docker/scratch/cgr-engine.doker | 2 + data/docker/scratch/cgr-engine.yaml | 51 ++ data/docker/scratch/cgr-loader.doker | 2 + data/docker/scratch/cgr-loader.yaml | 17 + data/docker/scratch/cgr-migrator.doker | 2 + data/docker/scratch/cgr-migrator.yaml | 16 + data/docker/scratch/cgr-tester.doker | 2 + data/docker/scratch/cgr-tester.yaml | 16 + data/scripts/generate_config/generate.go | 3 + .../storage/docker_mysql/docker-entrypoint.sh | 10 + .../scripts/create_cdrs_tables.sql | 52 ++ .../scripts/create_db_with_users.sql | 9 + .../scripts/create_tariffplan_tables.sql | 482 ++++++++++++++++++ 24 files changed, 1297 insertions(+) create mode 100644 data/ansible/docker/docker.yaml create mode 100644 data/ansible/docker/go.yaml create mode 100644 data/ansible/docker/golang.sh.j2 create mode 100644 data/ansible/docker/main.yaml create mode 100644 data/ansible/docker/nginx.conf.j2 create mode 100644 data/ansible/docker/nginx.yaml create mode 100644 data/conf/samples/docker/cgrates.json create mode 100755 data/docker/scratch/build.sh create mode 100644 data/docker/scratch/cgr-console.doker create mode 100644 data/docker/scratch/cgr-console.yaml create mode 100644 data/docker/scratch/cgr-engine.doker create mode 100644 data/docker/scratch/cgr-engine.yaml create mode 100644 data/docker/scratch/cgr-loader.doker create mode 100644 data/docker/scratch/cgr-loader.yaml create mode 100644 data/docker/scratch/cgr-migrator.doker create mode 100644 data/docker/scratch/cgr-migrator.yaml create mode 100644 data/docker/scratch/cgr-tester.doker create mode 100644 data/docker/scratch/cgr-tester.yaml create mode 100755 data/storage/docker_mysql/docker-entrypoint.sh create mode 100644 data/storage/docker_mysql/scripts/create_cdrs_tables.sql create mode 100644 data/storage/docker_mysql/scripts/create_db_with_users.sql create mode 100644 data/storage/docker_mysql/scripts/create_tariffplan_tables.sql diff --git a/.gitignore b/.gitignore index 3009c88cf..3283dcc7a 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,9 @@ data/tutorials/fs_evsock/freeswitch/etc/freeswitch/ data/tutorial_tests/fs_evsock/freeswitch/etc/freeswitch/ vendor *.test +# do not save the binary created by the docker build script +data/docker/scratch/cgr-engine +data/docker/scratch/cgr-console +data/docker/scratch/cgr-loader +data/docker/scratch/cgr-migrator +data/docker/scratch/cgr-tester \ No newline at end of file diff --git a/data/ansible/docker/docker.yaml b/data/ansible/docker/docker.yaml new file mode 100644 index 000000000..75ebc19f7 --- /dev/null +++ b/data/ansible/docker/docker.yaml @@ -0,0 +1,61 @@ +--- + +- name: Add Docker's public GPG key to the APT keyring + become: true + apt_key: + url: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg + state: present + +- name: Configure Docker's upstream APT repository + become: true + apt_repository: + repo: deb [arch=amd64] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable + state: present + update_cache: yes + +- name: Install Docker + become: true + apt: + name: + - docker-ce + - docker-ce-cli + - containerd.io + state: "present" + +- name: Add user(s) to "docker" group + become: true + user: + name: "{{ gouser }}" + groups: "docker" + append: true + +- name: Enable service docker and ensure it is not masked + become: true + systemd: + name: docker + state: started + enabled: yes + masked: no + +- name: Install Docker Module for Python + shell: "pip3 install docker" + +- name: Creates directory + become: yes + file: + path: /var/docker/registry + state: directory + +- name: Check if registry is running + become: yes + shell: docker container ls -q -f="name=registry" + register: continerList + +- name: Start registry + become: yes + shell: docker run -d --name registry --restart=always -v "$(pwd)":/var/lib/registry -p 5000:5000 registry:2 + args: + chdir: /var/docker/registry + when: continerList.stdout_lines|length == 0 + + \ No newline at end of file diff --git a/data/ansible/docker/go.yaml b/data/ansible/docker/go.yaml new file mode 100644 index 000000000..c08fae40b --- /dev/null +++ b/data/ansible/docker/go.yaml @@ -0,0 +1,122 @@ +--- +- name: create gopath directory + file: + state: directory + mode: 'u=rwx,go=rx' + dest: '{{ golang_gopath }}' + +- name: create download directory + file: + state: directory + mode: 'u=rwx,go=rx' + dest: '{{ golang_download_dir }}' + +- name: Register the current Go version (if any) + command: /usr/local/go/bin/go version + ignore_errors: yes + register: go_version + changed_when: false + +- name: Remove old installation of Go + become: yes + file: + path: /usr/local/go + state: absent + when: go_version is failed or go_version.stdout != go_version_target + +- name: download Go language SDK + get_url: + url: '{{ golang_mirror }}/{{ golang_redis_filename }}' + dest: '{{ golang_download_dir }}/{{ golang_redis_filename }}' + mode: 'u=rw,go=r' + +- name: create Go language SDK installation directory + become: yes + file: + state: directory + owner: root + group: root + mode: 'u=rwx,go=rx' + dest: '{{ golang_install_dir }}' + +- name: install Go language SDK + become: yes + unarchive: + src: '{{ golang_download_dir }}/{{ golang_redis_filename }}' + remote_src: yes + extra_opts: '--strip-components=1' + dest: '{{ golang_install_dir }}' + owner: root + group: root + creates: '{{ golang_install_dir }}/bin' + +# Set Go language SDK environment variables +- name: make sure /etc/profile.d exists + become: yes + file: + path: /etc/profile.d + state: directory + owner: root + group: root + mode: 'u=rwx,go=rx' + +- name: export Go language SDK environment variables + become: yes + template: + src: golang.sh.j2 + dest: /etc/profile.d/golang.sh + owner: root + group: root + mode: 'u=rw,go=r' + +- name: Export GOROOT for root + become: yes + lineinfile: + path: ~/.bashrc + line: export GOROOT='{{ golang_install_dir }}' + insertafter: last + +- name: Add GOROOT to PATH for root + become: yes + lineinfile: + dest: ~/.bashrc + line: export PATH=$PATH:$GOROOT/bin + insertafter: last + +- name: Export GOPATH for root + become: yes + lineinfile: + dest: ~/.bashrc + line: export GOPATH='{{ golang_gopath }}' + insertafter: last + +- name: Add GOPATH to PATH for root + become: yes + lineinfile: + dest: ~/.bashrc + line: export PATH=$PATH:$GOPATH/bin + insertafter: last + +- name: Export GOROOT + lineinfile: + dest: ~/.bashrc + line: export GOROOT='{{ golang_install_dir }}' + insertafter: last + +- name: Add GOROOT to PATH + lineinfile: + dest: ~/.bashrc + line: export PATH=$PATH:$GOROOT/bin + insertafter: last + +- name: Export GOPATH + lineinfile: + dest: ~/.bashrc + line: export GOPATH='{{ golang_gopath }}' + insertafter: last + +- name: Add GOPATH to PATH + lineinfile: + dest: ~/.bashrc + line: export PATH=$PATH:$GOPATH/bin + insertafter: last diff --git a/data/ansible/docker/golang.sh.j2 b/data/ansible/docker/golang.sh.j2 new file mode 100644 index 000000000..7bfc41c2e --- /dev/null +++ b/data/ansible/docker/golang.sh.j2 @@ -0,0 +1,12 @@ + +#!/bin/sh + +{{ ansible_managed | comment('plain') }} + +export GOROOT='{{ golang_install_dir }}' +export PATH=$PATH:$GOROOT/bin + +{% if golang_gopath not in (None, '') %} +export GOPATH="{{ golang_gopath }}" +export PATH=$PATH:$GOPATH/bin +{% endif %} \ No newline at end of file diff --git a/data/ansible/docker/main.yaml b/data/ansible/docker/main.yaml new file mode 100644 index 000000000..f32af0559 --- /dev/null +++ b/data/ansible/docker/main.yaml @@ -0,0 +1,198 @@ +--- +- name: Check and set python version on APT server + hosts: docker + remote_user: '{{ gouser }}' + gather_facts: false + tasks: + - name: symlink /usr/bin/python -> /usr/bin/python3 + raw: | + if [ -f /usr/bin/python3 ] && [ ! -f /usr/bin/python ]; then + ln --symbolic /usr/bin/python3 /usr/bin/python; + fi + become: true + +- hosts: docker + vars: + ############################################################### + ##################### Golang Vars ############################# + ############################################################### + # Go language SDK version number + golang_version: '1.14' + go_version_target: "go version go{{ golang_version }} linux/amd64" + # Mirror to download the Go language SDK redistributable package from + golang_mirror: 'https://storage.googleapis.com/golang' + # Base installation directory the Go language SDK distribution + golang_install_dir: '/usr/local/go' + # Directory to store files downloaded for Go language SDK installation + golang_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}" + # Location for GOPATH environment variable + golang_gopath: "/home/{{ gouser }}/go" + # Filename of Go language SDK redistributable package + golang_redis_filename: 'go{{ golang_version }}.linux-amd64.tar.gz' + + ############################################################### + # CGRateS vars + cgrates_dir: "{{ golang_gopath }}/src/github.com/cgrates/cgrates" + cgrates_branch: "v0.10" + cgrates_distribution: "nightly" + docker_tag: "latest" + + dependencies: + - build-essential + - git + - devscripts + - apt-transport-https + - ca-certificates + - gnupg2 + - software-properties-common + - nginx + - python3 + - python3-pip + - virtualenv + - python3-setuptools + rootUser : root + + remote_user: '{{ gouser }}' + tasks: + - name: set cgrates distribution + set_fact: + cgrates_distribution: "{{ cgrates_branch }}" + when: cgrates_branch != "master" +########################################################################################################################### +########################################################################################################################### +# install dependencies + - name: Install dependencies + become: yes + apt: name={{ dependencies }} state=present +########################################################################################################################### +########################################################################################################################### +# Prepare for configuration + - name: Check if NGINX needs to be configured + become: true + shell: "ls /etc/nginx/sites-enabled | grep 'dkr.cgrates.org.vhost'" + ignore_errors: true + register: nginxConfig + + - name: Configure NGINX server + include: nginx.yaml + when: nginxConfig.stdout_lines|length < 1 + + - name: Configure docker + include: docker.yaml + +########################################################################################################################### +########################################################################################################################### +# Install Golang + - name: install unarchive dependencies (zypper) + become: yes + zypper: + name: + - gzip + - tar + state: present + when: ansible_pkg_mgr == 'zypper' + + - name: Install golang + include: go.yaml + +########################################################################################################################### +########################################################################################################################### +# Install CGRateS + - name: create cgrates directory + become: yes + file: + state: directory + mode: 'u=rwx,go=rx' + owner: "{{ gouser }}" + group: "{{ gouser }}" + dest: '{{ cgrates_dir }}' + become_user: "{{ gouser }}" + + - name: git clone cgrates + git: + repo: https://github.com/cgrates/cgrates.git + dest: '{{ cgrates_dir }}' + update: yes + force: yes + version: "{{ cgrates_branch }}" + become: yes + become_user: "{{ gouser }}" + + - name: build cgrates for docker + shell: "sh {{ cgrates_dir }}/data/docker/scratch/build.sh" + environment: + PATH: "{{ lookup('env','PATH') }}:{{ golang_gopath }}/bin:/usr/local/go/bin:{{ ansible_env.PATH }}" + args: + chdir: '{{ cgrates_dir }}/data/docker/scratch' + + - name: copy default config + copy: + remote_src: yes + src: "{{ cgrates_dir }}/data/conf/cgrates/cgrates.json" + dest: "{{ cgrates_dir }}/data/docker/scratch/cgrates.json" + + - name: get git tag + shell: "git tag -l --points-at HEAD" + args: + chdir: '{{ cgrates_dir }}' + register: gitTagVar + + - name: get commit + shell: git log -n1 --format=format:%h + args: + chdir: '{{ cgrates_dir }}' + register: gitCommit + when: cgrates_branch == "master" or gitTagVar.stdout_lines|length == 0 + + - name: get commit + shell: date +%Y%m%d%H%M%S --date="@$(git log -n1 --format=format:%ct)" + args: + chdir: '{{ cgrates_dir }}' + register: gitDate + when: cgrates_branch == "master" or gitTagVar.stdout_lines|length == 0 + + - name: set cgrates docker_tag + set_fact: + docker_tag: "{{ gitDate.stdout }}{{ gitCommit.stdout }}" + when: cgrates_branch == "master" or gitTagVar.stdout_lines|length == 0 + + + - name: build Docker image + become: yes + shell: + docker build -t 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-engine:{{ docker_tag }} -f="cgr-engine.doker" {{ cgrates_dir }}/data/docker/scratch/; + docker build -t 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-console:{{ docker_tag }} -f="cgr-console.doker" {{ cgrates_dir }}/data/docker/scratch/; + docker build -t 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-loader:{{ docker_tag }} -f="cgr-loader.doker" {{ cgrates_dir }}/data/docker/scratch/; + docker build -t 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-migrator:{{ docker_tag }} -f="cgr-migrator.doker" {{ cgrates_dir }}/data/docker/scratch/; + docker build -t 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-tester:{{ docker_tag }} -f="cgr-tester.doker" {{ cgrates_dir }}/data/docker/scratch/; + args: + chdir: '{{ cgrates_dir }}/data/docker/scratch' + + - name: push docker image to repo + become: yes + shell: + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-engine:{{ docker_tag }}; + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-console:{{ docker_tag }}; + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-loader:{{ docker_tag }}; + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-migrator:{{ docker_tag }}; + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-tester:{{ docker_tag }}; + + - name: tag docker master image + become: yes + shell: + docker tag 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-engine:{{ docker_tag }} 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-engine:latest; + docker tag 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-console:{{ docker_tag }} 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-console:latest; + docker tag 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-loader:{{ docker_tag }} 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-loader:latest; + docker tag 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-migrator:{{ docker_tag }} 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-migrator:latest; + docker tag 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-tester:{{ docker_tag }} 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-tester:latest; + when: cgrates_branch == "master" + + - name: push docker master image to repo + become: yes + shell: + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-engine:latest; + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-console:latest; + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-loader:latest; + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-migrator:latest; + docker image push 127.0.0.1:5000/{{ cgrates_distribution }}/cgr-tester:latest; + when: cgrates_branch == "master" diff --git a/data/ansible/docker/nginx.conf.j2 b/data/ansible/docker/nginx.conf.j2 new file mode 100644 index 000000000..da78b679a --- /dev/null +++ b/data/ansible/docker/nginx.conf.j2 @@ -0,0 +1,45 @@ +{{ ansible_managed | comment }} +map $upstream_http_docker_distribution_api_version $docker_distribution_api_version { + '' 'registry/2.0'; +} + +server { + listen 80; + server_name dkr.cgrates.org; + + access_log /var/log/nginx/docker-error.log; + error_log /var/log/nginx/docker-error.log; + + # required to avoid HTTP 411: see Issue #1486 (https://github.com/moby/moby/issues/1486) + chunked_transfer_encoding on; + + location /v2/ { + # Do not allow connections from docker 1.5 and earlier + # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents + if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) { + return 404; + } + + # To add basic authentication to v2 use auth_basic setting. + limit_except GET HEAD OPTIONS { + deny all; + # auth_basic "Registry realm"; + # auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd; + } + + ## If $docker_distribution_api_version is empty, the header is not added. + ## See the map directive above where this variable is defined. + add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always; + + proxy_pass http://127.0.0.1:5000; + proxy_set_header Host $http_host; # required for docker client's sake + proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 900; + } + + location / { + deny all; + } +} diff --git a/data/ansible/docker/nginx.yaml b/data/ansible/docker/nginx.yaml new file mode 100644 index 000000000..3e6fe2a28 --- /dev/null +++ b/data/ansible/docker/nginx.yaml @@ -0,0 +1,25 @@ +--- +- name: Delete default page + become: true + file: + path: "/etc/nginx/sites-enabled/default" + state: absent + +- name: Add apt.cgrates.vhost in nginx + become: true + template: + src: nginx.conf.j2 + dest: "/etc/nginx/sites-available/dkr.cgrates.org.vhost" + mode: '0600' + owner: "{{ rootUser }}" + +- name: Create a symlink for docker.cgrates.org + become: true + file: + src: "/etc/nginx/sites-available/dkr.cgrates.org.vhost" + dest: "/etc/nginx/sites-enabled/dkr.cgrates.org.vhost" + state: link + +- name: Restart the nginx so the change take effects + become: true + shell: "/etc/init.d/nginx reload" \ No newline at end of file diff --git a/data/conf/samples/docker/cgrates.json b/data/conf/samples/docker/cgrates.json new file mode 100644 index 000000000..b2a8a7336 --- /dev/null +++ b/data/conf/samples/docker/cgrates.json @@ -0,0 +1,123 @@ +{ +// CGRateS Configuration file +// + + +"general": { + "log_level": 7, + "reply_timeout": "50s", +}, + + +"listen": { + "rpc_json": "*env:DOCKER_IP:2012", // RPC JSON listening address + "rpc_gob": "*env:DOCKER_IP:2013", // RPC GOB listening address + "http": "*env:DOCKER_IP:2080", // HTTP listening address + "rpc_json_tls" : "*env:DOCKER_IP:2022", // RPC JSON TLS listening address + "rpc_gob_tls": "*env:DOCKER_IP:2023", // RPC GOB TLS listening address + "http_tls": "*env:DOCKER_IP:2280", // HTTP TLS listening address +}, + +"rpc_conns": { + "conn1": { + "strategy": "*first", + "conns": [{"address": "*env:DOCKER_IP:2012", "transport":"*json"}], + }, +}, + + +"data_db": { // database used to store runtime data (eg: accounts, cdr stats) + "db_type": "*redis", // data_db type: + "db_host": "redis", // data_db host address + "db_port": 6379, // data_db port to reach the database + "db_name": "10", // data_db database name to connect to +}, + + +"stor_db": { + "db_host": "mariadb", // the host to connect to + "db_password": "CGRateS.org", +}, + + +"rals": { + "enabled": true, + "thresholds_conns": ["*internal"], + "max_increments":3000000, +}, + + +"schedulers": { + "enabled": true, + "cdrs_conns": ["*internal"], +}, + + +"cdrs": { + "enabled": true, + "chargers_conns":["*internal"], +}, + + +"attributes": { + "enabled": true, +}, + + +"chargers": { + "enabled": true, + "attributes_conns": ["*internal"], +}, + + +"resources": { + "enabled": true, + "store_interval": "-1", + "thresholds_conns": ["*internal"] +}, + + +"stats": { + "enabled": true, + "store_interval": "-1", + "thresholds_conns": ["*internal"], +}, + +"thresholds": { + "enabled": true, + "store_interval": "-1", +}, + + +"suppliers": { + "enabled": true, + "prefix_indexed_fields":["Destination"], + "stats_conns": ["*internal"], + "resources_conns": ["*internal"], + "rals_conns": ["*internal"], +}, + + +"sessions": { + "enabled": true, + "listen_bijson": "*env:DOCKER_IP:2014", + "suppliers_conns": ["*internal"], + "resources_conns": ["*internal"], + "attributes_conns": ["*internal"], + "rals_conns": ["*internal"], + "cdrs_conns": ["*internal"], + "chargers_conns": ["*internal"], +}, + + +"apiers": { + "enabled": true, + "scheduler_conns": ["*internal"], +}, + + +"filters": { + "apiers_conns": ["*internal"], +}, + +} diff --git a/data/docker/scratch/build.sh b/data/docker/scratch/build.sh new file mode 100755 index 000000000..c9c1b1743 --- /dev/null +++ b/data/docker/scratch/build.sh @@ -0,0 +1,24 @@ +#! /usr/bin/env sh +echo "Static building CGRateS..." + +GIT_LAST_LOG=$(git log -1 | tr -d "'") + +GIT_TAG_LOG=$(git tag -l --points-at HEAD) + +if [ ! -z "$GIT_TAG_LOG" ] +then + GIT_LAST_LOG="" +fi + +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-engine -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-engine +cr=$? +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-loader -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-loader +cl=$? +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-console -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-console +cc=$? +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-migrator -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-migrator +cm=$? +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-tester -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-tester +ct=$? + +exit $cr || $cl || $cc || $cm || $ct diff --git a/data/docker/scratch/cgr-console.doker b/data/docker/scratch/cgr-console.doker new file mode 100644 index 000000000..a20dc9ac3 --- /dev/null +++ b/data/docker/scratch/cgr-console.doker @@ -0,0 +1,2 @@ +FROM scratch +ADD ./cgr-console / diff --git a/data/docker/scratch/cgr-console.yaml b/data/docker/scratch/cgr-console.yaml new file mode 100644 index 000000000..a6877d3dc --- /dev/null +++ b/data/docker/scratch/cgr-console.yaml @@ -0,0 +1,15 @@ +version: "3.7" +services: + cgr-console: + image: dkr.cgrates.org/v0.10/cgr-console + container_name: cgr-console + command: /cgr-console -server=cgr-engine:2012 + stdin_open: true + tty: true + +networks: + default: + external: + name: cgrates-net + +# sudo docker-compose -f cgr-console.yaml run --rm cgr-console diff --git a/data/docker/scratch/cgr-engine.doker b/data/docker/scratch/cgr-engine.doker new file mode 100644 index 000000000..544ff4071 --- /dev/null +++ b/data/docker/scratch/cgr-engine.doker @@ -0,0 +1,2 @@ +FROM scratch +ADD ./cgr-engine / diff --git a/data/docker/scratch/cgr-engine.yaml b/data/docker/scratch/cgr-engine.yaml new file mode 100644 index 000000000..4b890f963 --- /dev/null +++ b/data/docker/scratch/cgr-engine.yaml @@ -0,0 +1,51 @@ +version: "3.7" +services: + cgr-engine: + image: dkr.cgrates.org/v0.10/cgr-engine + container_name: cgr-engine + depends_on: + - redis + - mariadb + restart: always + ports: + - 2012:2012 + - 2080:2080 + volumes: + - ../../conf/samples/docker/:/etc/cgrates/:ro + - ../../tariffplans/tutorial/:/data/:ro + environment: + - DOCKER_IP=0.0.0.0 + command: /cgr-engine --logger=*stdout -httprof_path=/pprof + + redis: + image: redis + command: ["redis-server", "--appendonly", "yes"] + restart: always + hostname: redis + volumes: + - /tmp/redis_data:/data:rw + ports: + - 6379:6379 + + mariadb: + image: mariadb + restart: always + environment: + MYSQL_ROOT_PASSWORD: CGRateS.org + MYSQL_DATABASE: cgrates + MYSQL_USER: cgrates + MYSQL_PASSWORD: CGRateS.org + ports: + - 3306:3306 + volumes: + - /tmp/mysql_data/:/var/lib/mysql/:rw + - ../../storage/docker_mysql/scripts/:/scripts + - ../../storage/docker_mysql/:/docker-entrypoint-initdb.d/ + + +networks: + default: + external: + name: cgrates-net + +# sudo docker-compose -f cgr-engine.yaml up diff --git a/data/docker/scratch/cgr-loader.doker b/data/docker/scratch/cgr-loader.doker new file mode 100644 index 000000000..b482416bf --- /dev/null +++ b/data/docker/scratch/cgr-loader.doker @@ -0,0 +1,2 @@ +FROM scratch +ADD ./cgr-loader / diff --git a/data/docker/scratch/cgr-loader.yaml b/data/docker/scratch/cgr-loader.yaml new file mode 100644 index 000000000..a3e36aacc --- /dev/null +++ b/data/docker/scratch/cgr-loader.yaml @@ -0,0 +1,17 @@ +version: "3.7" +services: + cgr-loader: + image: dkr.cgrates.org/v0.10/cgr-loader + container_name: cgr-loader + volumes: + - ../../conf/samples/docker/:/etc/cgrates/:ro + - ../../tariffplans/tutorial/:/data/:ro + environment: + - DOCKER_IP=cgr-engine + command: /cgr-loader -config_path=/etc/cgrates/ -path=/data/ -caches_address="conn1" -scheduler_address="conn1" -verbose +networks: + default: + external: + name: cgrates-net + +# sudo docker-compose -f cgr-loader.yaml up diff --git a/data/docker/scratch/cgr-migrator.doker b/data/docker/scratch/cgr-migrator.doker new file mode 100644 index 000000000..ed1d266d1 --- /dev/null +++ b/data/docker/scratch/cgr-migrator.doker @@ -0,0 +1,2 @@ +FROM scratch +ADD ./cgr-migrator / diff --git a/data/docker/scratch/cgr-migrator.yaml b/data/docker/scratch/cgr-migrator.yaml new file mode 100644 index 000000000..8553eb351 --- /dev/null +++ b/data/docker/scratch/cgr-migrator.yaml @@ -0,0 +1,16 @@ +version: "3.7" +services: + cgr-migrator: + image: dkr.cgrates.org/v0.10/cgr-migrator + container_name: cgr-migrator + volumes: + - ../../conf/samples/docker/:/etc/cgrates/:ro + environment: + - DOCKER_IP=cgr-engine + command: /cgr-migrator -config_path=/etc/cgrates/ --exec=*set_versions +networks: + default: + external: + name: cgrates-net + +# sudo docker-compose -f cgr-migrator.yaml up diff --git a/data/docker/scratch/cgr-tester.doker b/data/docker/scratch/cgr-tester.doker new file mode 100644 index 000000000..397f0d3a4 --- /dev/null +++ b/data/docker/scratch/cgr-tester.doker @@ -0,0 +1,2 @@ +FROM scratch +ADD ./cgr-tester / diff --git a/data/docker/scratch/cgr-tester.yaml b/data/docker/scratch/cgr-tester.yaml new file mode 100644 index 000000000..f766f60e8 --- /dev/null +++ b/data/docker/scratch/cgr-tester.yaml @@ -0,0 +1,16 @@ +version: "3.7" +services: + cgr-tester: + image: dkr.cgrates.org/v0.10/cgr-tester + container_name: cgr-tester + volumes: + - ../../conf/samples/docker/:/etc/cgrates/:ro + environment: + - DOCKER_IP=cgr-engine + command: /cgr-tester -config_path=/etc/cgrates/ +networks: + default: + external: + name: cgrates-net + +# sudo docker-compose -f cgr-tester.yaml up diff --git a/data/scripts/generate_config/generate.go b/data/scripts/generate_config/generate.go index edfe67451..84a27269e 100644 --- a/data/scripts/generate_config/generate.go +++ b/data/scripts/generate_config/generate.go @@ -58,6 +58,9 @@ func main() { } fmt.Println("Generating configuration file ...") + if err := os.Remove(*cfgPath); err != nil && !os.IsNotExist(err) { + log.Fatal(err) + } if err := writeDefaultCofig(*cfgPath); err != nil { log.Fatal(err) } diff --git a/data/storage/docker_mysql/docker-entrypoint.sh b/data/storage/docker_mysql/docker-entrypoint.sh new file mode 100755 index 000000000..8a88bf2bb --- /dev/null +++ b/data/storage/docker_mysql/docker-entrypoint.sh @@ -0,0 +1,10 @@ +#! /usr/bin/env sh + +host="localhost" + +DIR="/scripts" + +mysql -u root -pCGRateS.org -h $host < "$DIR"/create_db_with_users.sql +mysql -u root -pCGRateS.org -h $host -D cgrates < "$DIR"/create_cdrs_tables.sql +mysql -u root -pCGRateS.org -h $host -D cgrates < "$DIR"/create_tariffplan_tables.sql + diff --git a/data/storage/docker_mysql/scripts/create_cdrs_tables.sql b/data/storage/docker_mysql/scripts/create_cdrs_tables.sql new file mode 100644 index 000000000..6c2a917e6 --- /dev/null +++ b/data/storage/docker_mysql/scripts/create_cdrs_tables.sql @@ -0,0 +1,52 @@ +-- +-- Table structure for table `cdrs` +-- + +DROP TABLE IF EXISTS cdrs; +CREATE TABLE cdrs ( + id int(11) NOT NULL AUTO_INCREMENT, + cgrid varchar(40) NOT NULL, + run_id varchar(64) NOT NULL, + origin_host varchar(64) NOT NULL, + source varchar(64) NOT NULL, + origin_id varchar(128) NOT NULL, + tor varchar(16) NOT NULL, + request_type varchar(24) NOT NULL, + tenant varchar(64) NOT NULL, + category varchar(64) NOT NULL, + account varchar(128) NOT NULL, + subject varchar(128) NOT NULL, + destination varchar(128) NOT NULL, + setup_time datetime NOT NULL, + answer_time datetime NOT NULL, + `usage` BIGINT NOT NULL, + extra_fields text NOT NULL, + cost_source varchar(64) NOT NULL, + cost DECIMAL(20,4) NOT NULL, + cost_details MEDIUMTEXT, + extra_info text, + created_at TIMESTAMP NULL, + updated_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + PRIMARY KEY (id), + UNIQUE KEY cdrrun (cgrid, run_id) +); + +DROP TABLE IF EXISTS session_costs; +CREATE TABLE session_costs ( + id int(11) NOT NULL AUTO_INCREMENT, + cgrid varchar(40) NOT NULL, + run_id varchar(64) NOT NULL, + origin_host varchar(64) NOT NULL, + origin_id varchar(128) NOT NULL, + cost_source varchar(64) NOT NULL, + `usage` BIGINT NOT NULL, + cost_details MEDIUMTEXT, + created_at TIMESTAMP NULL, + deleted_at TIMESTAMP NULL, + PRIMARY KEY (`id`), + UNIQUE KEY costid (cgrid, run_id), + KEY origin_idx (origin_host, origin_id), + KEY run_origin_idx (run_id, origin_id), + KEY deleted_at_idx (deleted_at) +); diff --git a/data/storage/docker_mysql/scripts/create_db_with_users.sql b/data/storage/docker_mysql/scripts/create_db_with_users.sql new file mode 100644 index 000000000..31746b604 --- /dev/null +++ b/data/storage/docker_mysql/scripts/create_db_with_users.sql @@ -0,0 +1,9 @@ + +-- +-- Sample db and users creation. Replace here with your own details +-- + +DROP DATABASE IF EXISTS cgrates; +CREATE DATABASE cgrates; + +GRANT ALL on cgrates.* TO 'cgrates'@'localhost' IDENTIFIED BY 'CGRateS.org'; diff --git a/data/storage/docker_mysql/scripts/create_tariffplan_tables.sql b/data/storage/docker_mysql/scripts/create_tariffplan_tables.sql new file mode 100644 index 000000000..a203d7090 --- /dev/null +++ b/data/storage/docker_mysql/scripts/create_tariffplan_tables.sql @@ -0,0 +1,482 @@ +-- +-- Table structure for table `tp_timings` +-- +DROP TABLE IF EXISTS `tp_timings`; +CREATE TABLE `tp_timings` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `years` varchar(255) NOT NULL, + `months` varchar(255) NOT NULL, + `month_days` varchar(255) NOT NULL, + `week_days` varchar(255) NOT NULL, + `time` varchar(32) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + KEY `tpid_tmid` (`tpid`,`tag`), + UNIQUE KEY `tpid_tag` (`tpid`,`tag`) +); + +-- +-- Table structure for table `tp_destinations` +-- + +DROP TABLE IF EXISTS `tp_destinations`; +CREATE TABLE `tp_destinations` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `prefix` varchar(24) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + KEY `tpid_dstid` (`tpid`,`tag`), + UNIQUE KEY `tpid_dest_prefix` (`tpid`,`tag`,`prefix`) +); + +-- +-- Table structure for table `tp_rates` +-- + +DROP TABLE IF EXISTS `tp_rates`; +CREATE TABLE `tp_rates` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `connect_fee` decimal(7,4) NOT NULL, + `rate` decimal(10,4) NOT NULL, + `rate_unit` varchar(16) NOT NULL, + `rate_increment` varchar(16) NOT NULL, + `group_interval_start` varchar(16) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `unique_tprate` (`tpid`,`tag`,`group_interval_start`), + KEY `tpid` (`tpid`), + KEY `tpid_rtid` (`tpid`,`tag`) +); + +-- +-- Table structure for table `destination_rates` +-- + +DROP TABLE IF EXISTS `tp_destination_rates`; +CREATE TABLE `tp_destination_rates` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `destinations_tag` varchar(64) NOT NULL, + `rates_tag` varchar(64) NOT NULL, + `rounding_method` varchar(255) NOT NULL, + `rounding_decimals` tinyint(4) NOT NULL, + `max_cost` decimal(7,4) NOT NULL, + `max_cost_strategy` varchar(16) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + KEY `tpid_drid` (`tpid`,`tag`), + UNIQUE KEY `tpid_drid_dstid` (`tpid`,`tag`,`destinations_tag`) +); + +-- +-- Table structure for table `tp_rating_plans` +-- + +DROP TABLE IF EXISTS `tp_rating_plans`; +CREATE TABLE `tp_rating_plans` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `destrates_tag` varchar(64) NOT NULL, + `timing_tag` varchar(64) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + KEY `tpid_rpl` (`tpid`,`tag`), + UNIQUE KEY `tpid_rplid_destrates_timings_weight` (`tpid`,`tag`,`destrates_tag`,`timing_tag`) +); + +-- +-- Table structure for table `tp_rate_profiles` +-- + +DROP TABLE IF EXISTS `tp_rating_profiles`; +CREATE TABLE `tp_rating_profiles` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `loadid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `category` varchar(32) NOT NULL, + `subject` varchar(64) NOT NULL, + `activation_time` varchar(26) NOT NULL, + `rating_plan_tag` varchar(64) NOT NULL, + `fallback_subjects` varchar(64), + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + KEY `tpid_loadid` (`tpid`, `loadid`), + UNIQUE KEY `tpid_loadid_tenant_category_subj_atime` (`tpid`,`loadid`, `tenant`,`category`,`subject`,`activation_time`) +); + +-- +-- Table structure for table `tp_shared_groups` +-- + +DROP TABLE IF EXISTS `tp_shared_groups`; +CREATE TABLE `tp_shared_groups` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `account` varchar(64) NOT NULL, + `strategy` varchar(24) NOT NULL, + `rating_subject` varchar(24) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_shared_group` (`tpid`,`tag`,`account`,`strategy`,`rating_subject`) +); + +-- +-- Table structure for table `tp_actions` +-- + +DROP TABLE IF EXISTS `tp_actions`; +CREATE TABLE `tp_actions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `action` varchar(24) NOT NULL, + `extra_parameters` varchar(256) NOT NULL, + `filter` varchar(256) NOT NULL, + `balance_tag` varchar(64) NOT NULL, + `balance_type` varchar(24) NOT NULL, + `categories` varchar(32) NOT NULL, + `destination_tags` varchar(64) NOT NULL, + `rating_subject` varchar(64) NOT NULL, + `shared_groups` varchar(64) NOT NULL, + `expiry_time` varchar(26) NOT NULL, + `timing_tags` varchar(128) NOT NULL, + `units` varchar(256) NOT NULL, + `balance_weight` varchar(10) NOT NULL, + `balance_blocker` varchar(5) NOT NULL, + `balance_disabled` varchar(24) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_action` (`tpid`,`tag`,`action`,`balance_tag`,`balance_type`,`expiry_time`,`timing_tags`,`destination_tags`,`shared_groups`,`balance_weight`,`weight`) +); + +-- +-- Table structure for table `tp_action_timings` +-- + +DROP TABLE IF EXISTS `tp_action_plans`; +CREATE TABLE `tp_action_plans` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `actions_tag` varchar(64) NOT NULL, + `timing_tag` varchar(64) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_action_schedule` (`tpid`,`tag`,`actions_tag`,`timing_tag`) +); + +-- +-- Table structure for table `tp_action_triggers` +-- + +DROP TABLE IF EXISTS `tp_action_triggers`; +CREATE TABLE `tp_action_triggers` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tag` varchar(64) NOT NULL, + `unique_id` varchar(64) NOT NULL, + `threshold_type` char(64) NOT NULL, + `threshold_value` DECIMAL(20,4) NOT NULL, + `recurrent` BOOLEAN NOT NULL, + `min_sleep` varchar(16) NOT NULL, + `expiry_time` varchar(26) NOT NULL, + `activation_time` varchar(26) NOT NULL, + `balance_tag` varchar(64) NOT NULL, + `balance_type` varchar(24) NOT NULL, + `balance_categories` varchar(32) NOT NULL, + `balance_destination_tags` varchar(64) NOT NULL, + `balance_rating_subject` varchar(64) NOT NULL, + `balance_shared_groups` varchar(64) NOT NULL, + `balance_expiry_time` varchar(26) NOT NULL, + `balance_timing_tags` varchar(128) NOT NULL, + `balance_weight` varchar(10) NOT NULL, + `balance_blocker` varchar(5) NOT NULL, + `balance_disabled` varchar(5) NOT NULL, + `actions_tag` varchar(64) NOT NULL, + `weight` DECIMAL(8,2) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_trigger_definition` (`tpid`,`tag`,`balance_tag`,`balance_type`,`threshold_type`,`threshold_value`,`balance_destination_tags`,`actions_tag`) +); + +-- +-- Table structure for table `tp_account_actions` +-- + +DROP TABLE IF EXISTS `tp_account_actions`; +CREATE TABLE `tp_account_actions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `loadid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `account` varchar(64) NOT NULL, + `action_plan_tag` varchar(64), + `action_triggers_tag` varchar(64), + `allow_negative` BOOLEAN NOT NULL, + `disabled` BOOLEAN NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`id`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_account` (`tpid`,`loadid`,`tenant`,`account`) +); + +-- +-- Table structure for table `tp_resources` +-- + +DROP TABLE IF EXISTS tp_resources; +CREATE TABLE tp_resources ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `filter_ids` varchar(64) NOT NULL, + `activation_interval` varchar(64) NOT NULL, + `usage_ttl` varchar(32) NOT NULL, + `limit` varchar(64) NOT NULL, + `allocation_message` varchar(64) NOT NULL, + `blocker` BOOLEAN NOT NULL, + `stored` BOOLEAN NOT NULL, + `weight` decimal(8,2) NOT NULL, + `threshold_ids` varchar(64) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_resource` (`tpid`,`tenant`, `id`,`filter_ids` ) +); + +-- +-- Table structure for table `tp_stats` +-- + +DROP TABLE IF EXISTS tp_stats; +CREATE TABLE tp_stats ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `filter_ids` varchar(64) NOT NULL, + `activation_interval` varchar(64) NOT NULL, + `queue_length` int(11) NOT NULL, + `ttl` varchar(32) NOT NULL, + `min_items` int(11) NOT NULL, + `metric_ids` varchar(128) NOT NULL, + `metric_filter_ids` varchar(64) NOT NULL, + `stored` BOOLEAN NOT NULL, + `blocker` BOOLEAN NOT NULL, + `weight` decimal(8,2) NOT NULL, + `threshold_ids` varchar(64) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_stats` (`tpid`, `tenant`, `id`, `filter_ids`,`metric_ids`) +); + +-- +-- Table structure for table `tp_threshold_cfgs` +-- + +DROP TABLE IF EXISTS tp_thresholds; +CREATE TABLE tp_thresholds ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `filter_ids` varchar(64) NOT NULL, + `activation_interval` varchar(64) NOT NULL, + `max_hits` int(11) NOT NULL, + `min_hits` int(11) NOT NULL, + `min_sleep` varchar(16) NOT NULL, + `blocker` BOOLEAN NOT NULL, + `weight` decimal(8,2) NOT NULL, + `action_ids` varchar(64) NOT NULL, + `async` BOOLEAN NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_thresholds` (`tpid`,`tenant`, `id`,`filter_ids`,`action_ids`) +); + +-- +-- Table structure for table `tp_filter` +-- + +DROP TABLE IF EXISTS tp_filters; +CREATE TABLE tp_filters ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `type` varchar(16) NOT NULL, + `element` varchar(64) NOT NULL, + `values` varchar(256) NOT NULL, + `activation_interval` varchar(64) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_filters` (`tpid`,`tenant`, `id`, `type`, `element`) +); + +-- +-- Table structure for table `tp_suppliers` +-- + + +DROP TABLE IF EXISTS tp_suppliers; +CREATE TABLE tp_suppliers ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `filter_ids` varchar(64) NOT NULL, + `activation_interval` varchar(64) NOT NULL, + `sorting` varchar(32) NOT NULL, + `sorting_parameters` varchar(64) NOT NULL, + `supplier_id` varchar(32) NOT NULL, + `supplier_filter_ids` varchar(64) NOT NULL, + `supplier_account_ids` varchar(64) NOT NULL, + `supplier_ratingplan_ids` varchar(64) NOT NULL, + `supplier_resource_ids` varchar(64) NOT NULL, + `supplier_stat_ids` varchar(64) NOT NULL, + `supplier_weight` decimal(8,2) NOT NULL, + `supplier_blocker` BOOLEAN NOT NULL, + `supplier_parameters` varchar(64) NOT NULL, + `weight` decimal(8,2) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_suppliers` (`tpid`,`tenant`, + `id`,`filter_ids`,`supplier_id`,`supplier_filter_ids`,`supplier_account_ids`, + `supplier_ratingplan_ids`,`supplier_resource_ids`,`supplier_stat_ids` ) +); + +-- +-- Table structure for table `tp_attributes` +-- + +DROP TABLE IF EXISTS tp_attributes; +CREATE TABLE tp_attributes ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `contexts` varchar(64) NOT NULL, + `filter_ids` varchar(64) NOT NULL, + `activation_interval` varchar(64) NOT NULL, + `attribute_filter_ids` varchar(64) NOT NULL, + `path` varchar(64) NOT NULL, + `type` varchar(64) NOT NULL, + `value` varchar(64) NOT NULL, + `blocker` BOOLEAN NOT NULL, + `weight` decimal(8,2) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_attributes` (`tpid`,`tenant`, + `id`,`filter_ids`,`path`,`value` ) +); + +-- +-- Table structure for table `tp_chargers` +-- + +DROP TABLE IF EXISTS tp_chargers; +CREATE TABLE tp_chargers ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `filter_ids` varchar(64) NOT NULL, + `activation_interval` varchar(64) NOT NULL, + `run_id` varchar(64) NOT NULL, + `attribute_ids` varchar(64) NOT NULL, + `weight` decimal(8,2) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_chargers` (`tpid`,`tenant`, + `id`,`filter_ids`,`run_id`,`attribute_ids`) +); + +-- +-- Table structure for table `tp_dispatchers` +-- + +DROP TABLE IF EXISTS tp_dispatcher_profiles; +CREATE TABLE tp_dispatcher_profiles ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `subsystems` varchar(64) NOT NULL, + `filter_ids` varchar(64) NOT NULL, + `activation_interval` varchar(64) NOT NULL, + `strategy` varchar(64) NOT NULL, + `strategy_parameters` varchar(64) NOT NULL, + `conn_id` varchar(64) NOT NULL, + `conn_filter_ids` varchar(64) NOT NULL, + `conn_weight` decimal(8,2) NOT NULL, + `conn_blocker` BOOLEAN NOT NULL, + `conn_parameters` varchar(64) NOT NULL, + `weight` decimal(8,2) NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_dispatcher_profiles` (`tpid`,`tenant`, + `id`,`filter_ids`,`strategy`,`conn_id`,`conn_filter_ids`) +); + +-- +-- Table structure for table `tp_dispatchers` +-- + +DROP TABLE IF EXISTS tp_dispatcher_hosts; +CREATE TABLE tp_dispatcher_hosts ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `tpid` varchar(64) NOT NULL, + `tenant` varchar(64) NOT NULL, + `id` varchar(64) NOT NULL, + `address` varchar(64) NOT NULL, + `transport` varchar(64) NOT NULL, + `tls` BOOLEAN NOT NULL, + `created_at` TIMESTAMP, + PRIMARY KEY (`pk`), + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_dispatchers_hosts` (`tpid`,`tenant`, + `id`,`address`) +); + +-- +-- Table structure for table `versions` +-- + +DROP TABLE IF EXISTS versions; +CREATE TABLE versions ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `item` varchar(64) NOT NULL, + `version` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `id_item` (`id`,`item`) +);