コード例 #1
0
    /*
     * If there is a VTEP configured with a given tunnel zone, it should
     * not be possible to delete the tunnel zone.
     */
    @Test
    public void testDeleteFailsIfVTEPUsingTunnelZone() {
      DtoApplication app = topology.getApplication();
      URI tunnelZonesUri = app.getTunnelZones();
      DtoTunnelZone tunnelZone = new DtoTunnelZone();
      tunnelZone.setName("tz1");
      tunnelZone.setType(TunnelZoneType.VTEP);
      tunnelZone =
          dtoResource.postAndVerifyCreated(
              tunnelZonesUri,
              MidonetMediaTypes.APPLICATION_TUNNEL_ZONE_JSON(),
              tunnelZone,
              DtoTunnelZone.class);
      DtoVtep vtep = new DtoVtep();
      vtep.setManagementIp("192.168.1.2");
      vtep.setManagementPort(6632);
      vtep.setTunnelZoneId(tunnelZone.getId());
      dtoResource.postAndVerifyCreated(
          app.getVteps(), APPLICATION_VTEP_JSON_V2(), vtep, DtoVtep.class);

      // now try to delete the tunnel zone
      dtoResource.deleteAndVerifyError(
          tunnelZone.getUri(),
          MidonetMediaTypes.APPLICATION_TUNNEL_ZONE_JSON(),
          ClientResponse.Status.CONFLICT.getStatusCode());
    }
コード例 #2
0
    @Test
    public void testRouterDeleteWithBoundExteriorPort() throws Exception {
      // Add a router
      DtoRouter resRouter = topology.getRouter("router1");
      // Add an exterior port.
      DtoRouterPort port = new DtoRouterPort();
      port.setNetworkAddress("10.0.0.0");
      port.setNetworkLength(24);
      port.setPortAddress("10.0.0.1");
      DtoRouterPort resPort =
          dtoResource.postAndVerifyCreated(
              resRouter.getPorts(), APPLICATION_PORT_V2_JSON(), port, DtoRouterPort.class);

      // Get the host DTO.
      DtoHost[] hosts =
          dtoResource.getAndVerifyOk(
              topology.getApplication().getHosts(),
              APPLICATION_HOST_COLLECTION_JSON_V3(),
              DtoHost[].class);
      Assert.assertEquals(1, hosts.length);
      DtoHost resHost = hosts[0];
      bindHostToTunnelZone(resHost.getId());

      // Bind the exterior port to an interface on the host.
      DtoHostInterfacePort hostBinding = new DtoHostInterfacePort();
      hostBinding.setHostId(resHost.getId());
      hostBinding.setInterfaceName("eth0");
      hostBinding.setPortId(resPort.getId());
      dtoResource.postAndVerifyCreated(
          resHost.getPorts(),
          APPLICATION_HOST_INTERFACE_PORT_JSON(),
          hostBinding,
          DtoHostInterfacePort.class);
      dtoResource.deleteAndVerifyNoContent(resRouter.getUri(), APPLICATION_ROUTER_JSON_V3());
    }
コード例 #3
0
    @Test
    public void testCreateWhenAlreadyBound() {
      DtoHost host = hostTopology.getHost(host1Id);
      DtoBridgePort port1 = topology.getBridgePort("bridgePort1");

      bindHostToTunnelZone(host1Id);

      // List mappings.  There should be none.
      DtoHostInterfacePort[] maps =
          dtoResource.getAndVerifyOk(
              host.getPorts(),
              APPLICATION_HOST_INTERFACE_PORT_COLLECTION_JSON(),
              DtoHostInterfacePort[].class);
      Assert.assertEquals(0, maps.length);

      DtoHostInterfacePort mapping = new DtoHostInterfacePort();
      mapping.setPortId(port1.getId());
      mapping.setInterfaceName("eth0");
      dtoResource.postAndVerifyCreated(
          host.getPorts(),
          APPLICATION_HOST_INTERFACE_PORT_JSON(),
          mapping,
          DtoHostInterfacePort.class);

      mapping = new DtoHostInterfacePort();
      mapping.setPortId(port1.getId());
      mapping.setInterfaceName("eth1");
      dtoResource.postAndVerifyBadRequest(
          host.getPorts(), APPLICATION_HOST_INTERFACE_PORT_JSON(), mapping);
    }
コード例 #4
0
    @Test
    public void testCrud() throws Exception {
      DtoHost host = hostTopology.getHost(host1Id);
      DtoBridgePort port1 = topology.getBridgePort("bridgePort1");

      bindHostToTunnelZone(host1Id);

      // List mappings.  There should be none.
      DtoHostInterfacePort[] maps =
          dtoResource.getAndVerifyOk(
              host.getPorts(),
              APPLICATION_HOST_INTERFACE_PORT_COLLECTION_JSON(),
              DtoHostInterfacePort[].class);
      Assert.assertEquals(0, maps.length);

      // Map a tunnel zone to a host
      DtoHostInterfacePort mapping1 = new DtoHostInterfacePort();
      mapping1.setPortId(port1.getId());
      mapping1.setInterfaceName("eth0");
      mapping1 =
          dtoResource.postAndVerifyCreated(
              host.getPorts(),
              APPLICATION_HOST_INTERFACE_PORT_JSON(),
              mapping1,
              DtoHostInterfacePort.class);

      // List bridge mapping and verify that there is one
      maps =
          dtoResource.getAndVerifyOk(
              host.getPorts(),
              APPLICATION_HOST_INTERFACE_PORT_COLLECTION_JSON(),
              DtoHostInterfacePort[].class);
      Assert.assertEquals(1, maps.length);

      // Remove mapping
      dtoResource.deleteAndVerifyNoContent(
          mapping1.getUri(), APPLICATION_HOST_INTERFACE_PORT_JSON());

      // List mapping and verify that there is none
      maps =
          dtoResource.getAndVerifyOk(
              host.getPorts(),
              APPLICATION_HOST_INTERFACE_PORT_COLLECTION_JSON(),
              DtoHostInterfacePort[].class);

      Assert.assertEquals(0, maps.length);
    }
コード例 #5
0
 private void bindHostToTunnelZone(UUID hostId) {
   DtoTunnelZone tz = hostTopology.getGreTunnelZone("tz1");
   Assert.assertNotNull(tz);
   // Map a tunnel zone to a host
   DtoTunnelZoneHost mapping = new DtoTunnelZoneHost();
   mapping.setHostId(hostId);
   // Now set the ip address and the create should succeed.
   mapping.setIpAddress("192.168.100.2");
   dtoResource.postAndVerifyCreated(
       tz.getHosts(), APPLICATION_TUNNEL_ZONE_HOST_JSON(), mapping, DtoTunnelZoneHost.class);
 }
コード例 #6
0
    @Test
    public void testCreateWhenHostIsNotInAnyTunnelZone() {
      DtoHost host = hostTopology.getHost(host1Id);
      DtoBridgePort port = topology.getBridgePort("bridgePort1");

      // Map a tunnel zone to a host
      DtoHostInterfacePort mapping = new DtoHostInterfacePort();
      mapping.setPortId(port.getId());
      mapping.setInterfaceName("eth0");
      DtoError error =
          dtoResource.postAndVerifyBadRequest(
              host.getPorts(), APPLICATION_HOST_INTERFACE_PORT_JSON(), mapping);
      assertErrorMatchesLiteral(error, getMessage(HOST_IS_NOT_IN_ANY_TUNNEL_ZONE, host1Id));
    }
コード例 #7
0
    @Test
    public void testCrud() throws Exception {

      DtoApplication app = topology.getApplication();
      URI tunnelZonesUri = app.getTunnelZones();

      // Get tunnel zones and verify there is none
      DtoTunnelZone tunnelZone = new DtoTunnelZone();
      tunnelZone.setName("tz1-name");
      tunnelZone =
          dtoResource.postAndVerifyCreated(
              tunnelZonesUri, APPLICATION_TUNNEL_ZONE_JSON(), tunnelZone, DtoTunnelZone.class);
      Assert.assertNotNull(tunnelZone.getId());
      Assert.assertEquals("tz1-name", tunnelZone.getName());

      // Do not allow duplicates
      DtoTunnelZone tunnelZone2 = new DtoTunnelZone();
      tunnelZone2.setName("tz1-name");
      DtoError error =
          dtoResource.postAndVerifyError(
              tunnelZonesUri, APPLICATION_TUNNEL_ZONE_JSON(), tunnelZone2, CONFLICT);
      assertErrorMatches(error, UNIQUE_TUNNEL_ZONE_NAME_TYPE);

      // There should only be one
      DtoTunnelZone[] tunnelZones =
          dtoResource.getAndVerifyOk(
              tunnelZonesUri, APPLICATION_TUNNEL_ZONE_COLLECTION_JSON(), DtoTunnelZone[].class);
      Assert.assertEquals(1, tunnelZones.length);

      // Update tunnel zone name
      tunnelZone.setName("tz1-name-updated");
      tunnelZone =
          dtoResource.putAndVerifyNoContent(
              tunnelZone.getUri(), APPLICATION_TUNNEL_ZONE_JSON(), tunnelZone, DtoTunnelZone.class);
      Assert.assertEquals("tz1-name-updated", tunnelZone.getName());

      // List and make sure that there is one
      tunnelZones =
          dtoResource.getAndVerifyOk(
              tunnelZonesUri, APPLICATION_TUNNEL_ZONE_COLLECTION_JSON(), DtoTunnelZone[].class);
      Assert.assertEquals(1, tunnelZones.length);

      // Get the tunnel zone building the URI by hand.
      DtoTunnelZone tZone =
          dtoResource.getAndVerifyOk(
              UriBuilder.fromUri(tunnelZonesUri).path(tunnelZone.getId().toString()).build(),
              APPLICATION_TUNNEL_ZONE_JSON(),
              DtoTunnelZone.class);
      Assert.assertEquals(tunnelZone.getType(), tZone.getType());
      Assert.assertEquals(tunnelZone.getName(), tZone.getName());

      // Getting a non-existent zone returns a 404.
      dtoResource.getAndVerifyNotFound(
          UriBuilder.fromUri(tunnelZonesUri).path(UUID.randomUUID().toString()).build(),
          APPLICATION_TUNNEL_ZONE_JSON());

      // Delete it
      dtoResource.deleteAndVerifyNoContent(tunnelZone.getUri(), APPLICATION_TUNNEL_ZONE_JSON());

      // list and make sure it's gone
      tunnelZones =
          dtoResource.getAndVerifyOk(
              tunnelZonesUri, APPLICATION_TUNNEL_ZONE_COLLECTION_JSON(), DtoTunnelZone[].class);
      Assert.assertEquals(0, tunnelZones.length);
    }