[DCAEGEN2-74] merge broker deletion plugin to cdap 35/8335/1
authorTommy Carpenter <tommy@research.att.com>
Tue, 22 Aug 2017 21:49:55 +0000 (17:49 -0400)
committerTommy Carpenter <tommy@research.att.com>
Tue, 22 Aug 2017 21:50:24 +0000 (17:50 -0400)
Change-Id: If8fecde180c37ae1332e9ef53b9b2e8b17169cbe
Signed-off-by: Tommy Carpenter <tommy@research.att.com>
.gitreview [new file with mode: 0644]
cdap/Changelog.md
cdap/cdap_types.yaml
cdap/cdapplugin/cdapcloudify/cdap_plugin.py
cdap/cdapplugin/cdapcloudify/discovery.py
cdap/cdapplugin/setup.py

diff --git a/.gitreview b/.gitreview
new file mode 100644 (file)
index 0000000..fe0fb5f
--- /dev/null
@@ -0,0 +1,4 @@
+[gerrit]
+host=gerrit.onap.org
+port=29418
+project=dcaegen2/platform/plugins.git
index d919964..fa505e4 100644 (file)
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](http://keepachangelog.com/)
 and this project adheres to [Semantic Versioning](http://semver.org/).
 
+## [14.1.0] 
+* Merge the broker deleter function into here; no need for seperate plugin
+
 ## [14.0.2]
 * Start a tox/pytest unit test suite
 
index 497307c..083d011 100755 (executable)
@@ -6,7 +6,7 @@ plugins:
   cdap_deploy:
     executor: central_deployment_agent
     package_name: cdapcloudify
-    package_version: 14.0.2
+    package_version: 14.1.0
 
 data_types:
     cdap_connections:
@@ -88,3 +88,14 @@ node_types:
                     description: "new unbound config for the CDAP AppConfig as a JSON"
                     default: {}
 
+  dcae.nodes.broker_deleter:
+    derived_from: cloudify.nodes.Root
+    interfaces: 
+      cloudify.interfaces.lifecycle:
+        delete: #stop better than delete? not sure it matters much. Think all source interfaces are operated on before target on uninstall. 
+          implementation: cdap_deploy.cdapcloudify.cdap_plugin.delete_all_registered_apps
+          inputs:
+            connected_broker_dns_name: 
+              type: string
+              description: This is the broker's DNS name. There could be multiple brokers/clusters at a site. Could by populated via an intrinsic_function in a blueprint, or manually via inputs file
+              default: "cdap_broker"
index f5eaf0b..b4d22cd 100644 (file)
@@ -228,4 +228,11 @@ def app_smart_reconfigure(new_config_template, **kwargs):
     except Exception as e:
         raise NonRecoverableError("CDAP Reconfigure error: {0}".format(e))
 
+@operation
+def delete_all_registered_apps(connected_broker_dns_name, **kwargs):
+    """
+    Used in the cdap broker deleter node.
+    Deletes all registered applications (in the broker)
+    """
+    discovery.delete_all_registered_apps(connected_broker_dns_name, ctx.logger)
 
index a8f0ce2..c654cbb 100644 (file)
@@ -22,22 +22,22 @@ import json
 
 CONSUL_HOST = "http://localhost:8500"
 
+def _get_connection_info_from_consul(service_component_name, logger):
+    """
+    Call consul's catalog
+    TODO: currently assumes there is only one service
+    """
+    url = "{0}/v1/catalog/service/{1}".format(CONSUL_HOST, service_component_name)
+    logger.info("Trying to query: {0}".format(url))
+    res = requests.get(url)
+    res.raise_for_status()
+    services = res.json()
+    return services[0]["ServiceAddress"], services[0]["ServicePort"]
+
 def _get_broker_url(cdap_broker_name, service_component_name, logger):
     """
     fetch the broker connection information from Consul
     """
-    def _get_connection_info_from_consul(service_component_name, logger):
-        """
-        Call consul's catalog
-        TODO: currently assumes there is only one service
-        """
-        url = "{0}/v1/catalog/service/{1}".format(CONSUL_HOST, service_component_name)
-        logger.info("Trying to query: {0}".format(url))
-        res = requests.get(url)
-        res.raise_for_status()
-        services = res.json()
-        return services[0]["ServiceAddress"], services[0]["ServicePort"]
-
     broker_ip, broker_port = _get_connection_info_from_consul(cdap_broker_name, logger)
     broker_url = "http://{ip}:{port}/application/{appname}".format(ip=broker_ip, port=broker_port, appname=service_component_name)
     logger.info("Trying to connect to broker endpoint: {0}".format(broker_url))
@@ -103,3 +103,17 @@ def delete_on_broker(cdap_broker_name, service_component_name, logger):
     logger.info((response, response.status_code, response.text))
     response.raise_for_status() #bomb if not 2xx
 
+def delete_all_registered_apps(cdap_broker_name, logger):
+    #get the broker connection
+    broker_ip, broker_port = _get_connection_info_from_consul(cdap_broker_name, logger)
+    broker_url = "http://{ip}:{port}".format(ip=broker_ip, port=broker_port)
+
+    #binge and purge
+    logger.info("Trying to connect to broker called {0} at {1}".format(cdap_broker_name, broker_url))
+    registered_apps = json.loads(requests.get("{0}/application".format(broker_url)).text) #should be proper list of strings (appnames)
+    logger.info("Trying to delete: {0}".format(registered_apps))
+    r = requests.post("{0}/application/delete".format(broker_url),
+                 headers = {'content-type':'application/json'},
+                 json = {"appnames" : registered_apps})
+    logger.info("Response: {0}, Response Status: {1}".format(r.text, r.status_code))
+
index d16667d..53a9a2b 100644 (file)
@@ -22,7 +22,7 @@ from setuptools import setup, find_packages
 
 setup(
     name = "cdapcloudify",
-    version = "14.0.2",
+    version = "14.1.0",
     packages=find_packages(),
     author = "Tommy Carpenter",
     author_email = "tommy at research dot eh tee tee dot com",