Package com.cloud.agent.api

Examples of com.cloud.agent.api.SecurityGroupRuleAnswer


            Connect conn = LibvirtConnection.getConnection();
            List<InterfaceDef> nics = getInterfaces(conn, cmd.getVmName());
            vif = nics.get(0).getDevName();
            brname = nics.get(0).getBrName();
        } catch (LibvirtException e) {
            return new SecurityGroupRuleAnswer(cmd, false, e.toString());
        }

        boolean result = add_network_rules(cmd.getVmName(),
                Long.toString(cmd.getVmId()), cmd.getGuestIp(),
                cmd.getSignature(), Long.toString(cmd.getSeqNum()),
                cmd.getGuestMac(), cmd.stringifyRules(), vif, brname);

        if (!result) {
            s_logger.warn("Failed to program network rules for vm "
                    + cmd.getVmName());
            return new SecurityGroupRuleAnswer(cmd, false,
                    "programming network rules failed");
        } else {
            s_logger.debug("Programmed network rules for vm " + cmd.getVmName()
                    + " guestIp=" + cmd.getGuestIp() + ",ingress numrules="
                    + cmd.getIngressRuleSet().length + ",egress numrules="
                    + cmd.getEgressRuleSet().length);
            return new SecurityGroupRuleAnswer(cmd);
        }
    }
View Full Code Here


            s_logger.trace("Sending network rules command to " + _host.ip);
        }

        if (!_canBridgeFirewall) {
            s_logger.warn("Host " + _host.ip + " cannot do bridge firewalling");
            return new SecurityGroupRuleAnswer(cmd, false,
                    "Host " + _host.ip + " cannot do bridge firewalling",
                    SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
        }

        String result = callHostPlugin(conn, "vmops", "network_rules",
                "vmName", cmd.getVmName(),
                "vmIP", cmd.getGuestIp(),
                "vmMAC", cmd.getGuestMac(),
                "vmID", Long.toString(cmd.getVmId()),
                "signature", cmd.getSignature(),
                "seqno", Long.toString(cmd.getSeqNum()),
                "deflated", "true",
                "rules", cmd.compressStringifiedRules(),
                "secIps", cmd.getSecIpsString());

        if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
            s_logger.warn("Failed to program network rules for vm " + cmd.getVmName());
            return new SecurityGroupRuleAnswer(cmd, false, "programming network rules failed");
        } else {
            s_logger.info("Programmed network rules for vm " + cmd.getVmName() + " guestIp=" + cmd.getGuestIp() + ", ingress numrules=" + cmd.getIngressRuleSet().length + ", egress numrules=" + cmd.getEgressRuleSet().length);
            return new SecurityGroupRuleAnswer(cmd);
        }
    }
View Full Code Here

    }

    @Override
    public SecurityGroupRuleAnswer AddSecurityGroupRules(SecurityGroupRulesCmd cmd, SimulatorInfo info) {
        if (!info.isEnabled()) {
            return new SecurityGroupRuleAnswer(cmd, false, "Disabled", SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
        }

        Map<String, Ternary<String,Long, Long>> rules = _securityRules.get(info.getHostUuid());

        if (rules == null) {
            logSecurityGroupAction(cmd, null);
            rules = new ConcurrentHashMap<String, Ternary<String, Long, Long>>();
            rules.put(cmd.getVmName(), new Ternary<String,Long, Long>(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum()));
            _securityRules.put(info.getHostUuid(), rules);
        } else {
            logSecurityGroupAction(cmd, rules.get(cmd.getVmName()));
            rules.put(cmd.getVmName(), new Ternary<String, Long,Long>(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum()));
        }

        return new SecurityGroupRuleAnswer(cmd);
    }
View Full Code Here

          result = false;
        }

        if (!result) {
            s_logger.warn("Failed to program network rules for vm " + cmd.getVmName());
            return new SecurityGroupRuleAnswer(cmd, false, "programming network rules failed");
        } else {
            s_logger.info("Programmed network rules for vm " + cmd.getVmName() + " guestIp=" + cmd.getGuestIp() + ":ingress num rules=" + cmd.getIngressRuleSet().length + ":egress num rules=" + cmd.getEgressRuleSet().length);
            return new SecurityGroupRuleAnswer(cmd);
        }     
    } 
View Full Code Here

            Connect conn = LibvirtConnection.getConnectionByVmName(cmd.getVmName());
            List<InterfaceDef> nics = getInterfaces(conn, cmd.getVmName());
            vif = nics.get(0).getDevName();
            brname = nics.get(0).getBrName();
        } catch (LibvirtException e) {
            return new SecurityGroupRuleAnswer(cmd, false, e.toString());
        }

        boolean result = add_network_rules(cmd.getVmName(),
                Long.toString(cmd.getVmId()), cmd.getGuestIp(),
                cmd.getSignature(), Long.toString(cmd.getSeqNum()),
                cmd.getGuestMac(), cmd.stringifyRules(), vif, brname, cmd.getSecIpsString());

        if (!result) {
            s_logger.warn("Failed to program network rules for vm "
                    + cmd.getVmName());
            return new SecurityGroupRuleAnswer(cmd, false,
                    "programming network rules failed");
        } else {
            s_logger.debug("Programmed network rules for vm " + cmd.getVmName()
                    + " guestIp=" + cmd.getGuestIp() + ",ingress numrules="
                    + cmd.getIngressRuleSet().length + ",egress numrules="
                    + cmd.getEgressRuleSet().length);
            return new SecurityGroupRuleAnswer(cmd);
        }
    }
View Full Code Here

    public boolean processAnswers(long agentId, long seq, Answer[] answers) {
        List<Long> affectedVms = new ArrayList<Long>();
        int commandNum = 0;
        for (Answer ans: answers) {
            if (ans instanceof SecurityGroupRuleAnswer) {
                SecurityGroupRuleAnswer ruleAnswer = (SecurityGroupRuleAnswer) ans;
                if (ans.getResult()) {
                    s_logger.debug("Successfully programmed rule " + ruleAnswer.toString() + " into host " + agentId);
                    _workDao.updateStep(ruleAnswer.getVmId(), ruleAnswer.getLogSequenceNumber(), Step.Done);
                    recordSuccess(ruleAnswer.getVmId());
                } else {
                    _workDao.updateStep(ruleAnswer.getVmId(), ruleAnswer.getLogSequenceNumber(), Step.Error);;
                    s_logger.debug("Failed to program rule " + ruleAnswer.toString() + " into host " + agentId
                            +" due to " + ruleAnswer.getDetails()
                            +" and updated  jobs");
                    if (ruleAnswer.getReason() == FailureReason.CANNOT_BRIDGE_FIREWALL) {
                        s_logger.debug("Not retrying security group rules for vm " + ruleAnswer.getVmId() + " on failure since host " + agentId + " cannot do bridge firewalling");
                    } else if (ruleAnswer.getReason() == FailureReason.PROGRAMMING_FAILED){
                        if (checkShouldRetryOnFailure(ruleAnswer.getVmId())) {
                            s_logger.debug("Retrying security group rules on failure for vm " + ruleAnswer.getVmId());
                            affectedVms.add(ruleAnswer.getVmId());
                        } else {
                            s_logger.debug("Not retrying security group rules for vm " + ruleAnswer.getVmId() + " on failure: too many retries");
                        }
                    }
                }
                commandNum++;
                if (_workTracker != null)
View Full Code Here

            Connect conn = LibvirtConnection.getConnectionByVmName(cmd.getVmName());
            List<InterfaceDef> nics = getInterfaces(conn, cmd.getVmName());
            vif = nics.get(0).getDevName();
            brname = nics.get(0).getBrName();
        } catch (LibvirtException e) {
            return new SecurityGroupRuleAnswer(cmd, false, e.toString());
        }

        boolean result = add_network_rules(cmd.getVmName(),
                Long.toString(cmd.getVmId()), cmd.getGuestIp(),
                cmd.getSignature(), Long.toString(cmd.getSeqNum()),
                cmd.getGuestMac(), cmd.stringifyRules(), vif, brname, cmd.getSecIpsString());

        if (!result) {
            s_logger.warn("Failed to program network rules for vm "
                    + cmd.getVmName());
            return new SecurityGroupRuleAnswer(cmd, false,
                    "programming network rules failed");
        } else {
            s_logger.debug("Programmed network rules for vm " + cmd.getVmName()
                    + " guestIp=" + cmd.getGuestIp() + ",ingress numrules="
                    + cmd.getIngressRuleSet().length + ",egress numrules="
                    + cmd.getEgressRuleSet().length);
            return new SecurityGroupRuleAnswer(cmd);
        }
    }
View Full Code Here

            s_logger.trace("Sending network rules command to " + _host.ip);
        }

        if (!_canBridgeFirewall) {
            s_logger.warn("Host " + _host.ip + " cannot do bridge firewalling");
            return new SecurityGroupRuleAnswer(cmd, false,
                                                 "Host " + _host.ip + " cannot do bridge firewalling",
                                                 SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
        }
       
        String result = callHostPlugin(conn, "vmops", "network_rules",
                "vmName", cmd.getVmName(),
                "vmIP", cmd.getGuestIp(),
                "vmMAC", cmd.getGuestMac(),
                "vmID", Long.toString(cmd.getVmId()),
                "signature", cmd.getSignature(),
                "seqno", Long.toString(cmd.getSeqNum()),
                "deflated", "true",
                "rules", cmd.compressStringifiedRules());

        if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
            s_logger.warn("Failed to program network rules for vm " + cmd.getVmName());
            return new SecurityGroupRuleAnswer(cmd, false, "programming network rules failed");
        } else {
            s_logger.info("Programmed network rules for vm " + cmd.getVmName() + " guestIp=" + cmd.getGuestIp() + ", ingress numrules=" + cmd.getIngressRuleSet().length + ", egress numrules=" + cmd.getEgressRuleSet().length);
            return new SecurityGroupRuleAnswer(cmd);
        }
    }
View Full Code Here

            Connect conn = LibvirtConnection.getConnection();
            List<InterfaceDef> nics = getInterfaces(conn, cmd.getVmName());
            vif = nics.get(0).getDevName();
            brname = nics.get(0).getBrName();
        } catch (LibvirtException e) {
            return new SecurityGroupRuleAnswer(cmd, false, e.toString());
        }

        boolean result = add_network_rules(cmd.getVmName(),
                Long.toString(cmd.getVmId()), cmd.getGuestIp(),
                cmd.getSignature(), Long.toString(cmd.getSeqNum()),
                cmd.getGuestMac(), cmd.stringifyRules(), vif, brname);

        if (!result) {
            s_logger.warn("Failed to program network rules for vm "
                    + cmd.getVmName());
            return new SecurityGroupRuleAnswer(cmd, false,
                    "programming network rules failed");
        } else {
            s_logger.debug("Programmed network rules for vm " + cmd.getVmName()
                    + " guestIp=" + cmd.getGuestIp() + ",ingress numrules="
                    + cmd.getIngressRuleSet().length + ",egress numrules="
                    + cmd.getEgressRuleSet().length);
            return new SecurityGroupRuleAnswer(cmd);
        }
    }
View Full Code Here

            s_logger.trace("Sending network rules command to " + _host.ip);
        }

        if (!_canBridgeFirewall) {
            s_logger.warn("Host " + _host.ip + " cannot do bridge firewalling");
            return new SecurityGroupRuleAnswer(cmd, false, "Host " + _host.ip + " cannot do bridge firewalling",
                    SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
        }

        String result =
                callHostPlugin(conn, "vmops", "network_rules", "vmName", cmd.getVmName(), "vmIP", cmd.getGuestIp(), "vmMAC", cmd.getGuestMac(), "vmID",
                        Long.toString(cmd.getVmId()), "signature", cmd.getSignature(), "seqno", Long.toString(cmd.getSeqNum()), "deflated", "true", "rules",
                        cmd.compressStringifiedRules(), "secIps", cmd.getSecIpsString());

        if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
            s_logger.warn("Failed to program network rules for vm " + cmd.getVmName());
            return new SecurityGroupRuleAnswer(cmd, false, "programming network rules failed");
        } else {
            s_logger.info("Programmed network rules for vm " + cmd.getVmName() + " guestIp=" + cmd.getGuestIp() + ", ingress numrules=" + cmd.getIngressRuleSet().length +
                    ", egress numrules=" + cmd.getEgressRuleSet().length);
            return new SecurityGroupRuleAnswer(cmd);
        }
    }
View Full Code Here

TOP

Related Classes of com.cloud.agent.api.SecurityGroupRuleAnswer

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.