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'
+
+