Add the CreateLVSDummyInterface extension to the PCA
Conflicts:
components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c0455c9a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c0455c9a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c0455c9a
Branch: refs/heads/master
Commit: c0455c9ac666484b24ccd948c44742e0d18e9d4f
Parents: 5c83d1c
Author: Gayan Gunarathne <[email protected]>
Authored: Tue May 19 22:17:57 2015 +0530
Committer: Gayan Gunarathne <[email protected]>
Committed: Mon Jul 27 14:38:53 2015 +0530
----------------------------------------------------------------------
.../cartridge.agent/cartridge.agent/agent.py | 5 ++++
.../cartridge.agent/cartridge.agent/config.py | 7 +++--
.../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, 65 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/c0455c9a/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 0da1b18..3051775 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/c0455c9a/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 7be2e26..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 """
@@ -136,10 +138,11 @@ class CartridgeAgentConfiguration:
self.cartridge_key =
self.read_property(constants.CARTRIDGE_KEY)
self.app_path = self.read_property(constants.APPLICATION_PATH,
False)
self.repo_url = self.read_property(constants.REPO_URL, False)
- self.ports =
str(self.read_property(constants.PORTS)).replace("'","").split("|")
+ self.ports =
str(self.read_property(constants.PORTS)).split("|")
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,7 +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("log_file_paths: %s" % self.log_file_paths)
+ 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/c0455c9a/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 1e4a851..e6ae9c4 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/c0455c9a/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/c0455c9a/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/c0455c9a/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 afb4f8e..9c958da 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,11 +49,14 @@ 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
current_env_vars = os.environ.copy()
extension_values.update(current_env_vars)
+ 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/c0455c9a/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 e44059f..9705dc6 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, {})
@@ -632,6 +637,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/c0455c9a/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'
+
+