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 <[email protected]> Authored: Tue May 19 22:17:57 2015 +0530 Committer: Gayan Gunarathne <[email protected]> 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' + +
