content: // 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.
  package com.cloud.network.cisco;
  
  import java.util.Map;
  
  import com.cloud.utils.exception.ExecutionException;
  
  public interface CiscoVnmcConnection {
  
      public boolean createTenant(String tenantName) throws ExecutionException;
  
      public boolean deleteTenant(String tenantName) throws ExecutionException;
  
      public boolean createTenantVDC(String tenantName) throws ExecutionException;
  
      public boolean deleteTenantVDC(String tenantName) throws ExecutionException;
  
      public boolean createTenantVDCEdgeDeviceProfile(String tenantName) throws ExecutionException;
  
      public boolean createTenantVDCEdgeStaticRoutePolicy(String tenantName) throws ExecutionException;
  
      public boolean createTenantVDCEdgeStaticRoute(String tenantName, String nextHopIp, String destination, String netmask) throws ExecutionException;
  
      public boolean associateTenantVDCEdgeStaticRoutePolicy(String tenantName) throws ExecutionException;
  
      public boolean associateTenantVDCEdgeDhcpPolicy(String tenantName, String intfName) throws ExecutionException;
  
      public boolean createTenantVDCEdgeDhcpPolicy(String tenantName, String startIp, String endIp, String subnet, String nameServerIp, String domain)
          throws ExecutionException;
  
      public boolean associateTenantVDCEdgeDhcpServerPolicy(String tenantName, String intfName) throws ExecutionException;
  
      public boolean createTenantVDCEdgeSecurityProfile(String tenantName) throws ExecutionException;
  
      public boolean deleteTenantVDCEdgeSecurityProfile(String tenantName) throws ExecutionException;
  
      public boolean createTenantVDCSourceNatIpPool(String tenantName, String identifier, String publicIp) throws ExecutionException;
  
      public boolean createTenantVDCSourceNatRule(String tenantName, String identifier, String startSourceIp, String endSourceIp) throws ExecutionException;
  
      public boolean createTenantVDCSourceNatPolicy(String tenantName, String identifier) throws ExecutionException;
  
      public boolean createTenantVDCSourceNatPolicyRef(String tenantName, String identifier) throws ExecutionException;
  
      public boolean createTenantVDCDNatIpPool(String tenantName, String identifier, String ipAddress) throws ExecutionException;
  
      public boolean createTenantVDCDNatRule(String tenantName, long ruleId, String policyIdentifier, String publicIp) throws ExecutionException;
  
      public boolean deleteTenantVDCDNatRule(String tenantName, long ruleId, String policyIdentifier) throws ExecutionException;
  
      public boolean createTenantVDCAclRuleForDNat(String tenantName, long ruleId, String policyIdentifier, String ipAddress) throws ExecutionException;
  
      public boolean createTenantVDCDNatPolicy(String tenantName, String identifier) throws ExecutionException;
  
      public boolean deleteTenantVDCDNatPolicy(String tenantName, String identifier) throws ExecutionException;
  
      public boolean createTenantVDCDNatPolicyRef(String tenantName, String identifier) throws ExecutionException;
  
      public boolean createTenantVDCPFPortPool(String tenantName, String identifier, String startPort, String endPort) throws ExecutionException;
  
      public boolean createTenantVDCPFIpPool(String tenantName, String identifier, String ipAddress) throws ExecutionException;
  
      public boolean createTenantVDCPFRule(String tenantName, long ruleId, String policyIdentifier, String protocol, String publicIp, String startPort, String endPort)
          throws ExecutionException;
  
      public boolean deleteTenantVDCPFRule(String tenantName, long ruleId, String policyIdentifier) throws ExecutionException;
  
      public boolean createTenantVDCAclRuleForPF(String tenantName, long ruleId, String policyIdentifier, String protocol, String ipAddress, String startPort,
          String endPort) throws ExecutionException;
  
      public boolean createTenantVDCPFPolicy(String tenantName, String identifier) throws ExecutionException;
  
      public boolean deleteTenantVDCPFPolicy(String tenantName, String identifier) throws ExecutionException;
  
      public boolean createTenantVDCPFPolicyRef(String tenantName, String identifier) throws ExecutionException;
  
      public boolean createTenantVDCNatPolicySet(String tenantName) throws ExecutionException;
  
      public boolean deleteTenantVDCNatPolicySet(String tenantName) throws ExecutionException;
  
      public boolean associateNatPolicySet(String tenantName) throws ExecutionException;
  
      public boolean createTenantVDCIngressAclRule(String tenantName, long ruleId, String policyIdentifier, String protocol, String sourceStartIp, String sourceEndIp,
          String destStartPort, String destEndPort) throws ExecutionException;
  
      public boolean createTenantVDCIngressAclRule(String tenantName, long ruleId, String policyIdentifier, String protocol, String sourceStartIp, String sourceEndIp)
          throws ExecutionException;
  
      public boolean createTenantVDCEgressAclRule(String tenantName, long ruleId, String policyIdentifier, String protocol, String sourceStartIp, String sourceEndIp,
          String destStartPort, String destEndPort) throws ExecutionException;
  
      public boolean createTenantVDCEgressAclRule(String tenantName, long ruleId, String policyIdentifier, String protocol, String sourceStartIp, String sourceEndIp)
          throws ExecutionException;
  
      public boolean deleteTenantVDCAclRule(String tenantName, long ruleId, String policyIdentifier) throws ExecutionException;
  
      public boolean createTenantVDCAclPolicy(String tenantName, String identifier) throws ExecutionException;
  
      public boolean createTenantVDCAclPolicyRef(String tenantName, String identifier, boolean ingress) throws ExecutionException;
  
      public boolean deleteTenantVDCAclPolicy(String tenantName, String identifier) throws ExecutionException;
  
      public boolean createTenantVDCAclPolicySet(String tenantName, boolean ingress) throws ExecutionException;
  
      public boolean deleteTenantVDCAclPolicySet(String tenantName, boolean ingress) throws ExecutionException;
  
      public boolean associateAclPolicySet(String tenantName) throws ExecutionException;
  
      public boolean createEdgeFirewall(String tenantName, String publicIp, String insideIp, String publicSubnet, String insideSubnet) throws ExecutionException;
  
      public boolean deleteEdgeFirewall(String tenantName) throws ExecutionException;
  
      public Map<String, String> listUnAssocAsa1000v() throws ExecutionException;
  
      public boolean assignAsa1000v(String tenantName, String firewallDn) throws ExecutionException;
  
      public boolean unassignAsa1000v(String tenantName, String firewallDn) throws ExecutionException;
  }
  