@Override
  public Answer execute(
      final PvlanSetupCommand command, final CitrixResourceBase citrixResourceBase) {
    final Connection conn = citrixResourceBase.getConnection();

    final String primaryPvlan = command.getPrimary();
    final String isolatedPvlan = command.getIsolated();
    final String op = command.getOp();
    final String dhcpName = command.getDhcpName();
    final String dhcpMac = command.getDhcpMac();
    final String dhcpIp = command.getDhcpIp();
    final String vmMac = command.getVmMac();
    final String networkTag = command.getNetworkTag();

    String nwNameLabel = null;
    try {
      final XsLocalNetwork nw =
          citrixResourceBase.getNativeNetworkForTraffic(conn, TrafficType.Guest, networkTag);
      if (nw == null) {
        s_logger.error("Network is not configured on the backend for pvlan " + primaryPvlan);
        throw new CloudRuntimeException(
            "Network for the backend is not configured correctly for pvlan primary: "
                + primaryPvlan);
      }
      nwNameLabel = nw.getNetwork().getNameLabel(conn);
    } catch (final XenAPIException e) {
      s_logger.warn("Fail to get network", e);
      return new Answer(command, false, e.toString());
    } catch (final XmlRpcException e) {
      s_logger.warn("Fail to get network", e);
      return new Answer(command, false, e.toString());
    }

    String result = null;
    if (command.getType() == PvlanSetupCommand.Type.DHCP) {
      result =
          citrixResourceBase.callHostPlugin(
              conn,
              "ovs-pvlan",
              "setup-pvlan-dhcp",
              "op",
              op,
              "nw-label",
              nwNameLabel,
              "primary-pvlan",
              primaryPvlan,
              "isolated-pvlan",
              isolatedPvlan,
              "dhcp-name",
              dhcpName,
              "dhcp-ip",
              dhcpIp,
              "dhcp-mac",
              dhcpMac);

      if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
        s_logger.warn("Failed to program pvlan for dhcp server with mac " + dhcpMac);
        return new Answer(command, false, result);
      } else {
        s_logger.info("Programmed pvlan for dhcp server with mac " + dhcpMac);
      }
    } else if (command.getType() == PvlanSetupCommand.Type.VM) {
      result =
          citrixResourceBase.callHostPlugin(
              conn,
              "ovs-pvlan",
              "setup-pvlan-vm",
              "op",
              op,
              "nw-label",
              nwNameLabel,
              "primary-pvlan",
              primaryPvlan,
              "isolated-pvlan",
              isolatedPvlan,
              "vm-mac",
              vmMac);

      if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
        s_logger.warn("Failed to program pvlan for vm with mac " + vmMac);
        return new Answer(command, false, result);
      } else {
        s_logger.info("Programmed pvlan for vm with mac " + vmMac);
      }
    }
    return new Answer(command, true, result);
  }