EMMA Coverage Report (generated Wed Jun 22 19:47:49 EDT 2011)
[all classes][org.jclouds.vcloud.terremark.config]

COVERAGE SUMMARY FOR SOURCE FILE [TerremarkECloudRestClientModule.java]

nameclass, %method, %block, %line, %
TerremarkECloudRestClientModule.java50%  (1/2)12%  (1/8)4%   (5/120)15%  (2/13)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TerremarkECloudRestClientModule$10%   (0/1)0%   (0/2)0%   (0/67)0%   (0/4)
TerremarkECloudRestClientModule$1 (TerremarkECloudRestClientModule, Injector)... 0%   (0/1)0%   (0/9)0%   (0/1)
apply (ReferenceType): boolean 0%   (0/1)0%   (0/58)0%   (0/3)
     
class TerremarkECloudRestClientModule100% (1/1)17%  (1/6)9%   (5/53)20%  (2/10)
findDefaultNetworkForVDC (VDC, Map, Injector): URI 0%   (0/1)0%   (0/40)0%   (0/4)
provideTerremarkAsyncClient (TerremarkECloudAsyncClient): TerremarkVCloudAsyn... 0%   (0/1)0%   (0/2)0%   (0/1)
provideTerremarkClient (TerremarkECloudClient): TerremarkVCloudClient 0%   (0/1)0%   (0/2)0%   (0/1)
provideVCloudAsyncClient (TerremarkECloudAsyncClient): VCloudExpressAsyncClient 0%   (0/1)0%   (0/2)0%   (0/1)
provideVCloudClient (TerremarkECloudClient): VCloudExpressClient 0%   (0/1)0%   (0/2)0%   (0/1)
TerremarkECloudRestClientModule (): void 100% (1/1)100% (5/5)100% (2/2)

1/**
2 *
3 * Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
4 *
5 * ====================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 * ====================================================================
18 */
19package org.jclouds.vcloud.terremark.config;
20 
21import static com.google.common.base.Preconditions.checkNotNull;
22 
23import java.net.URI;
24import java.util.Map;
25import java.util.NoSuchElementException;
26 
27import javax.inject.Singleton;
28 
29import org.jclouds.http.RequiresHttp;
30import org.jclouds.rest.ConfiguresRestClient;
31import org.jclouds.rest.ResourceNotFoundException;
32import org.jclouds.vcloud.VCloudExpressAsyncClient;
33import org.jclouds.vcloud.VCloudExpressClient;
34import org.jclouds.vcloud.domain.ReferenceType;
35import org.jclouds.vcloud.terremark.TerremarkECloudAsyncClient;
36import org.jclouds.vcloud.terremark.TerremarkECloudClient;
37import org.jclouds.vcloud.terremark.TerremarkVCloudAsyncClient;
38import org.jclouds.vcloud.terremark.TerremarkVCloudClient;
39import org.jclouds.vcloud.terremark.domain.TerremarkNetwork;
40import org.jclouds.vcloud.terremark.domain.TerremarkOrgNetwork;
41 
42import com.google.common.base.Predicate;
43import com.google.common.collect.Iterables;
44import com.google.inject.Injector;
45import com.google.inject.Provides;
46 
47/**
48 * Configures the VCloud authentication service connection, including logging and http transport.
49 * 
50 * @author Adrian Cole
51 */
52@RequiresHttp
53@ConfiguresRestClient
54public class TerremarkECloudRestClientModule extends
55         TerremarkRestClientModule<TerremarkECloudClient, TerremarkECloudAsyncClient> {
56 
57   public TerremarkECloudRestClientModule() {
58      super(TerremarkECloudClient.class, TerremarkECloudAsyncClient.class);
59   }
60 
61   @Provides
62   @Singleton
63   protected VCloudExpressAsyncClient provideVCloudAsyncClient(TerremarkECloudAsyncClient in) {
64      return in;
65   }
66 
67   @Provides
68   @Singleton
69   protected VCloudExpressClient provideVCloudClient(TerremarkECloudClient in) {
70      return in;
71   }
72 
73   @Provides
74   @Singleton
75   protected TerremarkVCloudAsyncClient provideTerremarkAsyncClient(TerremarkECloudAsyncClient in) {
76      return in;
77   }
78 
79   @Provides
80   @Singleton
81   protected TerremarkVCloudClient provideTerremarkClient(TerremarkECloudClient in) {
82      return in;
83   }
84 
85   @Override
86   protected URI findDefaultNetworkForVDC(org.jclouds.vcloud.domain.VDC vDC, Map<String, ReferenceType> networks,
87            final Injector injector) {
88      // TODO FIXME XXX: In Terremark Enterprise environment with multiple VDC's this does not
89      // work well.
90      // Each VDC will have differnt network subnets. So we cannot assume the default VDC's
91      // networks will
92      // work with non-default VDC's. So make PROPERTY_VCLOUD_DEFAULT_NETWORK optional. If
93      // this property
94      // is not set, they are expected to add NetworkConfig to the options when launching a
95      // server.
96      logger.warn("default network for vdc %s not set", vDC.getName());
97      try {
98         return Iterables.find(networks.values(), new Predicate<ReferenceType>() {
99 
100            @Override
101            public boolean apply(ReferenceType input) {
102               TerremarkOrgNetwork network = injector.getInstance(TerremarkECloudClient.class).getNetwork(
103                        input.getHref());
104               TerremarkNetwork terremarkNetwork = injector.getInstance(TerremarkECloudClient.class)
105                        .getTerremarkNetwork(
106                                 checkNotNull(checkNotNull(network, "network at: " + input).getNetworkExtension(),
107                                          "network extension for: " + input).getHref());
108               return checkNotNull(terremarkNetwork, "terremark network extension at: " + network.getNetworkExtension())
109                        .getNetworkType() == TerremarkNetwork.Type.DMZ;
110            }
111 
112         }).getHref();
113      } catch (NoSuchElementException e) {
114         throw new ResourceNotFoundException("no dmz networks in vdc " + vDC.getName() + ": " + networks);
115      }
116   }
117}

[all classes][org.jclouds.vcloud.terremark.config]
EMMA 2.0.5312 (C) Vladimir Roubtsov