From e6e9ebfa7cc4d9c3d0bda4a2dcab7f337af63baf Mon Sep 17 00:00:00 2001 From: Luis Vega Date: Mon, 17 Oct 2022 13:36:12 +0000 Subject: [PATCH] Feature 10955: Osmclient changes related to VIM configuration with a Prometheus TSDB system Change-Id: Ibf9032936c538a7bccbe2b5aab27583ca44f2bfd Signed-off-by: Luis Vega --- osmclient/cli_commands/vim.py | 44 +++++++++++++++++++++++++++++++---- osmclient/sol005/http.py | 1 - osmclient/sol005/vim.py | 3 ++- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/osmclient/cli_commands/vim.py b/osmclient/cli_commands/vim.py index c6424ca..ff1bcc6 100755 --- a/osmclient/cli_commands/vim.py +++ b/osmclient/cli_commands/vim.py @@ -75,6 +75,16 @@ def _check_ca_cert(vim_config: dict) -> None: @click.option( "--creds", default=None, help="credentials file (only applicable for GCP VIM type)" ) +@click.option( + "--prometheus_url", + default=None, + help="PrometheusTSBD URL to get VIM data", +) +@click.option( + "--prometheus_map", + default=None, + help="PrometheusTSBD metrics mapping for VIM data", +) @click.option( "--prometheus_config_file", default=None, @@ -97,6 +107,8 @@ def vim_create( wait, vca, creds, + prometheus_url, + prometheus_map, prometheus_config_file, ): """creates a new VIM account""" @@ -106,11 +118,17 @@ def vim_create( if sdn_port_mapping: utils.check_client_version(ctx.obj, "--sdn_port_mapping") vim = {} + prometheus_config = {} + if prometheus_url: + prometheus_config["prometheus-url"] = prometheus_url + if prometheus_map: + prometheus_config["prometheus-map"] = prometheus_map if prometheus_config_file: with open(prometheus_config_file) as prometheus_file: prometheus_config_dict = json.load(prometheus_file) - vim["prometheus-config"] = prometheus_config_dict - + prometheus_config.update(prometheus_config_dict) + if prometheus_config: + vim["prometheus-config"] = prometheus_config vim["vim-username"] = user vim["vim-password"] = password vim["vim-url"] = auth_url @@ -166,6 +184,16 @@ def vim_create( @click.option( "--creds", default=None, help="credentials file (only applicable for GCP VIM type)" ) +@click.option( + "--prometheus_url", + default=None, + help="PrometheusTSBD URL to get VIM data", +) +@click.option( + "--prometheus_map", + default=None, + help="PrometheusTSBD metrics mapping for VIM data", +) @click.option( "--prometheus_config_file", default=None, @@ -188,6 +216,8 @@ def vim_update( sdn_port_mapping, wait, creds, + prometheus_url, + prometheus_map, prometheus_config_file, ): """updates a VIM account @@ -218,11 +248,17 @@ def vim_update( if creds: with open(creds, "r") as cf: vim_config["credentials"] = yaml.safe_load(cf.read()) + prometheus_config = {} + if prometheus_url: + prometheus_config["prometheus-url"] = prometheus_url + if prometheus_map: + prometheus_config["prometheus-map"] = prometheus_map if prometheus_config_file: with open(prometheus_config_file) as prometheus_file: prometheus_config_dict = json.load(prometheus_file) - vim["prometheus-config"] = prometheus_config_dict - logger.info(f"VIM: {vim}, VIM config: {vim_config}") + prometheus_config.update(prometheus_config_dict) + if prometheus_config: + vim["prometheus-config"] = prometheus_config ctx.obj.vim.update( name, vim, vim_config, sdn_controller, sdn_port_mapping, wait=wait ) diff --git a/osmclient/sol005/http.py b/osmclient/sol005/http.py index 4234fc8..1b47204 100644 --- a/osmclient/sol005/http.py +++ b/osmclient/sol005/http.py @@ -114,7 +114,6 @@ class Http(http.Http): curl_cmd.setopt(pycurl.CUSTOMREQUEST, "PATCH") curl_cmd.setopt(pycurl.POST, 1) curl_cmd.setopt(pycurl.WRITEFUNCTION, data.write) - if postfields_dict is not None: jsondata = json.dumps(postfields_dict) if "password" in postfields_dict: diff --git a/osmclient/sol005/vim.py b/osmclient/sol005/vim.py index 72a0822..fa40140 100644 --- a/osmclient/sol005/vim.py +++ b/osmclient/sol005/vim.py @@ -108,7 +108,6 @@ class Vim(object): if vim_config: vim_account["config"] = vim_config # vim_account['config'] = json.dumps(vim_config) - http_code, resp = self._http.post_cmd( endpoint=self._apiBase, postfields_dict=vim_account ) @@ -197,6 +196,8 @@ class Vim(object): vim_account["vim_user"] = vim_access["vim-username"] or "null" vim_account["vim_password"] = vim_access["vim-password"] or "null" vim_account["vim_tenant_name"] = vim_access["vim-tenant-name"] or "null" + if "prometheus-config" in vim_access: + vim_account["prometheus_config"] = vim_access["prometheus-config"] return vim_account def get_id(self, name): -- 2.25.1