You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/05/20 07:13:05 UTC

stratos git commit: Add the CreateLVSDummyInterface extension to the PCA

Repository: stratos
Updated Branches:
  refs/heads/lvs_extension 402730146 -> 168b258cd


Add the CreateLVSDummyInterface extension to the PCA


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/168b258c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/168b258c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/168b258c

Branch: refs/heads/lvs_extension
Commit: 168b258cdb026094bd10ff993a1eb7bca88ab09b
Parents: 4027301
Author: Gayan Gunarathne <ga...@wso2.com>
Authored: Tue May 19 22:17:57 2015 +0530
Committer: Gayan Gunarathne <ga...@wso2.com>
Committed: Tue May 19 22:17:57 2015 +0530

----------------------------------------------------------------------
 .../cartridge.agent/cartridge.agent/agent.py    |  5 ++++
 .../cartridge.agent/cartridge.agent/config.py   |  4 +++
 .../cartridge.agent/constants.py                |  5 +++-
 .../extensions/bash/ArtifactUpdatedEvent.sh     |  3 ++
 .../extensions/bash/CreateLVSDummyInterface.sh  | 31 ++++++++++++++++++++
 .../extensions/py/ExtensionExecutor.py          |  4 +++
 .../modules/event/eventhandler.py               |  6 ++++
 .../extensions/instance-activated.sh.erb        |  7 +++++
 8 files changed, 64 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/168b258c/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py
index 4268269..89274e4 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py
@@ -60,6 +60,11 @@ class CartridgeAgent(threading.Thread):
         # Start topology event receiver thread
         self.register_topology_event_listeners()
 
+        if self.__config.lvs_virtual_ip is None or str(self.__config.lvs_virtual_ip).strip() == "":
+            self.__log.debug("LVS Virtual IP is not defined")
+        else:
+            self.__event_handler.create_dummy_interface()
+
         # wait until complete topology message is received to get LB IP
         self.wait_for_complete_topology()
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/168b258c/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
index 91503af..dab833d 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
@@ -111,6 +111,8 @@ class CartridgeAgentConfiguration:
             """ :type : bool  """
             self.artifact_update_interval = None
             """ :type : str """
+            self.lvs_virtual_ip = None
+            """ :type : str """
 
             self.initialized = False
             """ :type : bool """
@@ -140,6 +142,7 @@ class CartridgeAgentConfiguration:
                 self.dependant_cluster_id = self.read_property(constants.DEPENDENCY_CLUSTER_IDS, False)
                 self.export_metadata_keys = self.read_property(constants.EXPORT_METADATA_KEYS, False)
                 self.import_metadata_keys = self.read_property(constants.IMPORT_METADATA_KEYS, False)
+                self.lvs_virtual_ip = self.read_property(constants.LVS_VIRTUAL_IP)
 
                 try:
                     self.log_file_paths = str(
@@ -261,6 +264,7 @@ class CartridgeAgentConfiguration:
             self.log.debug("export_metadata_keys: %r" % self.export_metadata_keys)
             self.log.debug("import_metadata_keys: %r" % self.import_metadata_keys)
             self.log.debug("artifact.update.interval: %r" % self.artifact_update_interval)
+            self.log.debug("lvs-virtual-ip: %r" % self.lvs_virtual_ip)
 
         def __read_conf_file(self):
             """

http://git-wip-us.apache.org/repos/asf/stratos/blob/168b258c/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
index 9f1dcc0..e2117fd 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
@@ -46,6 +46,7 @@ EXPORT_METADATA_KEYS = "EXPORT_METADATA_KEYS"
 IMPORT_METADATA_KEYS = "IMPORT_METADATA_KEYS"
 CARTRIDGE_ALIAS = "CARTRIDGE_ALIAS"
 TOKEN = "TOKEN"
+LVS_VIRTUAL_IP = "LVS_VIRTUAL_IP"
 
 # stratos.sh environment variables keys
 LOG_FILE_PATHS = "LOG_FILE_PATHS"
@@ -110,6 +111,8 @@ MEMBER_STARTED_EVENT = "MemberStartedEvent"
 TENANT_SUBSCRIBED_EVENT = "TenantSubscribedEvent"
 APPLICATION_SIGNUP_REMOVAL_EVENT = "ApplicationSignUpRemovedEvent"
 
+CREATE_LVS_DUMMY_INTERFACE = "CreateLVSDummyInterface"
+
 PRIMARY = "PRIMARY"
 MIN_COUNT = "MIN_COUNT"
 
@@ -132,4 +135,4 @@ MONITORING_RECEIVER_IP = "monitoring.server.ip"
 MONITORING_RECEIVER_PORT = "monitoring.server.port"
 MONITORING_RECEIVER_SECURE_PORT = "monitoring.server.secure.port"
 MONITORING_SERVER_ADMIN_USERNAME = "monitoring.server.admin.username"
-MONITORING_SERVER_ADMIN_PASSWORD = "monitoring.server.admin.password"
\ No newline at end of file
+MONITORING_SERVER_ADMIN_PASSWORD = "monitoring.server.admin.password"

http://git-wip-us.apache.org/repos/asf/stratos/blob/168b258c/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/ArtifactUpdatedEvent.sh
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/ArtifactUpdatedEvent.sh b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/ArtifactUpdatedEvent.sh
index 15d5591..16d1a6f 100755
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/ArtifactUpdatedEvent.sh
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/ArtifactUpdatedEvent.sh
@@ -26,3 +26,6 @@
 
 log=/var/log/apache-stratos/cartridge-agent-extensions.log
 echo `date`": Artifacts Updated Event" | tee -a $log
+
+
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/168b258c/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
new file mode 100644
index 0000000..39c7f96
--- /dev/null
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/bash/CreateLVSDummyInterface.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# --------------------------------------------------------------
+# This extension script will be executed once the update artifacts
+# event is received and they are copied to the given path.
+# --------------------------------------------------------------
+#
+
+
+modprobe dummy numdummies=1
+ifconfig dummy0 ${STRATOS_LVS_VIRTUAL_IP} netmask 255.255.255.0
+
+echo "update the dummy interface with ${STRATOS_LVS_VIRTUAL_IP}"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/168b258c/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py
index fbd315b..6d66da3 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py
@@ -30,6 +30,7 @@ class ExtensionExecutor(ICartridgeAgentPlugin):
         extension_values = {}
         for key in values.keys():
             extension_values["STRATOS_" + key] = values[key]
+            os.environ["STRATOS_" + key] = values[key]
             # log.debug("%s => %s" % ("STRATOS_" + key, extension_values["STRATOS_" + key]))
 
         try:
@@ -48,10 +49,13 @@ class ExtensionExecutor(ICartridgeAgentPlugin):
         :param bash_file: name of the bash file to execute
         :return: tuple of (output, errors)
         """
+        log = LogFactory().get_log(__name__)
+
         working_dir = os.path.abspath(os.path.dirname(__file__)).split("modules")[0]
         command = working_dir[:-2] + "bash/" + bash_file
         extension_values = os.environ.copy()
 
+        log.debug("Execute bash script :: %s" % command)
         p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=extension_values)
         output, errors = p.communicate()
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/168b258c/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
index 5ce9b4a..1bda169 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py
@@ -59,6 +59,11 @@ class EventHandler:
         # TODO: copy artifacts extension
         self.execute_event_extendables(constants.INSTANCE_STARTED_EVENT, {})
 
+    def create_dummy_interface(self):
+        self.__log.debug("Processing lvs dummy interface creation...")
+        self.execute_event_extendables(constants.CREATE_LVS_DUMMY_INTERFACE,
+                                       {"LVS_VIRTUAL_IP": self.__config.lvs_virtual_ip})
+
     def on_instance_activated_event(self):
         self.__log.debug("Processing instance activated event...")
         self.execute_event_extendables(constants.INSTANCE_ACTIVATED_EVENT, {})
@@ -630,6 +635,7 @@ class EventHandler:
         lb_private_ip, lb_public_ip = EventHandler.get_lb_member_ip(lb_cluster_id_in_payload)
         plugin_values["LB_IP"] = lb_private_ip if lb_private_ip is not None else self.__config.lb_private_ip
         plugin_values["LB_PUBLIC_IP"] = lb_public_ip if lb_public_ip is not None else self.__config.lb_public_ip
+        plugin_values["LVS_VIRTUAL_IP"] =self.__config.lvs_virtual_ip
 
         topology = TopologyContext.get_topology()
         if topology.initialized:

http://git-wip-us.apache.org/repos/asf/stratos/blob/168b258c/tools/puppet3/modules/python_agent/templates/extensions/instance-activated.sh.erb
----------------------------------------------------------------------
diff --git a/tools/puppet3/modules/python_agent/templates/extensions/instance-activated.sh.erb b/tools/puppet3/modules/python_agent/templates/extensions/instance-activated.sh.erb
index f5d60e8..bab979a 100755
--- a/tools/puppet3/modules/python_agent/templates/extensions/instance-activated.sh.erb
+++ b/tools/puppet3/modules/python_agent/templates/extensions/instance-activated.sh.erb
@@ -26,3 +26,10 @@
 
 log=/var/log/apache-stratos/cartridge-agent-extensions.log
 echo `date`": Instance activated" | tee -a $log
+
+modprobe dummy numdummies=1
+ifconfig dummy0 10.10.10.10 netmask 255.255.255.0
+
+echo `update the dummy interface'
+
+