Package org.apache.stratos.messaging.event.topology

Examples of org.apache.stratos.messaging.event.topology.MemberActivatedEvent


          log.warn(String.format("Member %s does not exist",
                    instanceActivatedEvent.getMemberId()));
          return;
        }

        MemberActivatedEvent memberActivatedEvent = new MemberActivatedEvent(instanceActivatedEvent.getServiceName(),
                        instanceActivatedEvent.getClusterId(), instanceActivatedEvent.getNetworkPartitionId(), instanceActivatedEvent.getPartitionId(), instanceActivatedEvent.getMemberId());

        try {
            TopologyManager.acquireWriteLock();
            member.setStatus(MemberStatus.Activated);
            log.info("member started event adding status activated");
            Cartridge cartridge = FasterLookUpDataHolder.getInstance().
                    getCartridge(instanceActivatedEvent.getServiceName());

            List<PortMapping> portMappings = cartridge.getPortMappings();
            Port port;
            //adding ports to the event
            for (PortMapping portMapping : portMappings) {
                port = new Port(portMapping.getProtocol(),
                        Integer.parseInt(portMapping.getPort()),
                        Integer.parseInt(portMapping.getProxyPort()));
                member.addPort(port);
                memberActivatedEvent.addPort(port);
            }

            memberActivatedEvent.setMemberIp(member.getMemberIp());
            TopologyManager.updateTopology(topology);

        } finally {
            TopologyManager.releaseWriteLock();
        }
        TopologyEventPublisher.sendMemberActivatedEvent(memberActivatedEvent);
        //publishing data
        CartridgeInstanceDataPublisher.publish(memberActivatedEvent.getMemberId(),
                                            memberActivatedEvent.getPartitionId(),
                                            memberActivatedEvent.getNetworkPartitionId(),
                                            memberActivatedEvent.getClusterId(),
                                            memberActivatedEvent.getServiceName(),
                                            MemberStatus.Activated.toString(),
                                            null);
    }
View Full Code Here


            // Return if topology has not been initialized
            if (!topology.isInitialized())
                return false;

            // Parse complete message and build event
            MemberActivatedEvent event = (MemberActivatedEvent) Util.jsonToObject(message, MemberActivatedEvent.class);

            // Apply service filter
            if (TopologyServiceFilter.getInstance().isActive()) {
                if (TopologyServiceFilter.getInstance().serviceNameExcluded(event.getServiceName())) {
                    // Service is excluded, do not update topology or fire event
                    if (log.isDebugEnabled()) {
                        log.debug(String.format("Service is excluded: [service] %s", event.getServiceName()));
                    }
                    return false;
                }
            }

            // Apply cluster filter
            if (TopologyClusterFilter.getInstance().isActive()) {
                if (TopologyClusterFilter.getInstance().clusterIdExcluded(event.getClusterId())) {
                    // Cluster is excluded, do not update topology or fire event
                    if (log.isDebugEnabled()) {
                        log.debug(String.format("Cluster is excluded: [cluster] %s", event.getClusterId()));
                    }
                    return false;
                }
            }

            // Validate event properties
            if ((event.getMemberIp() == null) || event.getMemberIp().isEmpty()) {
                throw new RuntimeException(String.format("No ip address found in member activated event: [service] %s [cluster] %s [member] %s",
                        event.getServiceName(),
                        event.getClusterId(),
                        event.getMemberId()));
            }
            if ((event.getPorts() == null) || (event.getPorts().size() == 0)) {
                throw new RuntimeException(String.format("No ports found in member activated event: [service] %s [cluster] %s [member] %s",
                        event.getServiceName(),
                        event.getClusterId(),
                        event.getMemberId()));
            }

            // Validate event against the existing topology
            Service service = topology.getService(event.getServiceName());
            if (service == null) {
                if (log.isWarnEnabled()) {
                    log.warn(String.format("Service does not exist: [service] %s", event.getServiceName()));
                }
                return false;
            }
            Cluster cluster = service.getCluster(event.getClusterId());
            if (cluster == null) {
                if (log.isWarnEnabled()) {
                    log.warn(String.format("Cluster does not exist: [service] %s [cluster] %s",
                            event.getServiceName(), event.getClusterId()));
                }
                return false;
            }
            Member member = cluster.getMember(event.getMemberId());
            if (member == null) {
                if (log.isWarnEnabled()) {
                    log.warn(String.format("Member does not exist: [service] %s [cluster] %s [member] %s",
                            event.getServiceName(),
                            event.getClusterId(),
                            event.getMemberId()));
                }
                return false;
            }

            // Apply member filter
            if(TopologyMemberFilter.getInstance().isActive()) {
                if(TopologyMemberFilter.getInstance().lbClusterIdExcluded(member.getLbClusterId())) {
                    if (log.isDebugEnabled()) {
                        log.debug(String.format("Member is excluded: [lb-cluster-id] %s", member.getLbClusterId()));
                    }
                    return false;
                }
            }

            if (member.getStatus() == MemberStatus.Activated) {
                if (log.isWarnEnabled()) {
                    log.warn(String.format("Member already activated: [service] %s [cluster] %s [member] %s",
                            event.getServiceName(),
                            event.getClusterId(),
                            event.getMemberId()));
                }
            } else {
             
              // Apply changes to the topology
              member.addPorts(event.getPorts());
              member.setMemberIp(event.getMemberIp());
              member.setStatus(MemberStatus.Activated);
             
              if (log.isInfoEnabled()) {
                log.info(String.format("Member activated: [service] %s [cluster] %s [member] %s",
                    event.getServiceName(),
                    event.getClusterId(),
                    event.getMemberId()));
              }
            }

            // Notify event listeners
            notifyEventListeners(event);
View Full Code Here

            protected void onEvent(Event event) {
                try {
                    TopologyManager.acquireReadLock();

                    // Add cluster to load balancer context when its first member is activated
                    MemberActivatedEvent memberActivatedEvent = (MemberActivatedEvent) event;
                    if (LoadBalancerContext.getInstance().getClusterIdClusterMap().containsCluster(memberActivatedEvent.getClusterId())) {
                        if (log.isDebugEnabled()) {
                            log.debug(String.format("Cluster exists in load balancer context: [service] %s [cluster] %s",
                                    memberActivatedEvent.getServiceName(), memberActivatedEvent.getClusterId()));
                        }
                        return;
                    }
                    // Cluster not found in load balancer context, add it
                    Service service = TopologyManager.getTopology().getService(memberActivatedEvent.getServiceName());
                    if (service != null) {
                        Cluster cluster = service.getCluster(memberActivatedEvent.getClusterId());
                        if (cluster != null) {
                            LoadBalancerContextUtil.addClusterToLbContext(cluster);
                        } else {
                            if (log.isErrorEnabled()) {
                                log.error(String.format("Cluster not found in topology: [service] %s [cluster] %s",
                                        memberActivatedEvent.getServiceName(), memberActivatedEvent.getClusterId()));
                            }
                        }
                    } else {
                        if (log.isErrorEnabled()) {
                            log.error(String.format("Service not found in topology: [service] %s", memberActivatedEvent.getServiceName()));
                        }
                    }
                } catch (Exception e) {
                    log.error("Error processing event", e);
                } finally {
View Full Code Here

TOP

Related Classes of org.apache.stratos.messaging.event.topology.MemberActivatedEvent

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.