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

COVERAGE SUMMARY FOR SOURCE FILE [VCloudExpressComputeClientImpl.java]

nameclass, %method, %block, %line, %
VCloudExpressComputeClientImpl.java0%   (0/1)0%   (0/10)0%   (0/287)0%   (0/35)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class VCloudExpressComputeClientImpl0%   (0/1)0%   (0/10)0%   (0/287)0%   (0/35)
VCloudExpressComputeClientImpl (VCloudExpressClient, Predicate, Map): void 0%   (0/1)0%   (0/8)0%   (0/3)
deleteVApp (VCloudExpressVApp): void 0%   (0/1)0%   (0/50)0%   (0/6)
getPrivateAddresses (URI): Set 0%   (0/1)0%   (0/2)0%   (0/1)
getPublicAddresses (URI): Set 0%   (0/1)0%   (0/9)0%   (0/2)
getStatus (VCloudExpressVApp): Status 0%   (0/1)0%   (0/3)0%   (0/1)
powerOff (VCloudExpressVApp): Task 0%   (0/1)0%   (0/9)0%   (0/1)
refreshVApp (URI): VCloudExpressVApp 0%   (0/1)0%   (0/8)0%   (0/1)
reset (VCloudExpressVApp): Task 0%   (0/1)0%   (0/9)0%   (0/1)
start (URI, URI, String, InstantiateVAppTemplateOptions, int []): VCloudExpre... 0%   (0/1)0%   (0/180)0%   (0/18)
undeploy (VCloudExpressVApp): Task 0%   (0/1)0%   (0/9)0%   (0/1)

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.compute.internal;
20 
21import static com.google.common.base.Preconditions.checkNotNull;
22 
23import java.net.URI;
24import java.util.Map;
25import java.util.Set;
26 
27import javax.annotation.Nullable;
28import javax.inject.Singleton;
29 
30import org.jclouds.compute.domain.NodeState;
31import org.jclouds.vcloud.VCloudExpressClient;
32import org.jclouds.vcloud.compute.VCloudExpressComputeClient;
33import org.jclouds.vcloud.domain.Status;
34import org.jclouds.vcloud.domain.Task;
35import org.jclouds.vcloud.domain.VCloudExpressVApp;
36import org.jclouds.vcloud.domain.VCloudExpressVAppTemplate;
37import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions;
38 
39import com.google.common.base.Predicate;
40import com.google.common.collect.ImmutableSet;
41import com.google.common.collect.Sets;
42import com.google.inject.Inject;
43 
44/**
45 * @author Adrian Cole
46 */
47@Singleton
48public class VCloudExpressComputeClientImpl extends
49      CommonVCloudComputeClientImpl<VCloudExpressVAppTemplate, VCloudExpressVApp> implements VCloudExpressComputeClient {
50 
51   protected final Map<Status, NodeState> vAppStatusToNodeState;
52 
53   @Inject
54   public VCloudExpressComputeClientImpl(VCloudExpressClient client, Predicate<URI> successTester,
55         Map<Status, NodeState> vAppStatusToNodeState) {
56      super(client, successTester);
57      this.vAppStatusToNodeState = vAppStatusToNodeState;
58   }
59 
60   @Override
61   protected void deleteVApp(VCloudExpressVApp vApp) {
62      logger.debug(">> deleting vApp(%s)", vApp.getName());
63      Task task = VCloudExpressClient.class.cast(client).deleteVApp(vApp.getHref());
64      if (task != null)
65         if (!taskTester.apply(task.getHref()))
66            throw new RuntimeException(String.format("failed to %s %s: %s", "delete", vApp.getName(), task));
67   }
68 
69   @Override
70   public VCloudExpressVApp start(@Nullable URI VDC, URI templateId, String name,
71         InstantiateVAppTemplateOptions options, int... portsToOpen) {
72      checkNotNull(options, "options");
73      logger.debug(">> instantiating vApp vDC(%s) template(%s) name(%s) options(%s) ", VDC, templateId, name, options);
74 
75      VCloudExpressVApp vAppResponse = VCloudExpressClient.class.cast(client).instantiateVAppTemplateInVDC(VDC,
76            templateId, name, options);
77      logger.debug("<< instantiated VApp(%s)", vAppResponse.getName());
78      if (options.shouldDeploy()) {
79         logger.debug(">> deploying vApp(%s)", vAppResponse.getName());
80 
81         Task task = VCloudExpressClient.class.cast(client).deployVApp(vAppResponse.getHref());
82         if (options.shouldBlock()) {
83            if (!taskTester.apply(task.getHref())) {
84               throw new RuntimeException(String.format("failed to %s %s: %s", "deploy", vAppResponse.getName(), task));
85            }
86            logger.debug("<< deployed vApp(%s)", vAppResponse.getName());
87            if (options.shouldPowerOn()) {
88               logger.debug(">> powering vApp(%s)", vAppResponse.getName());
89               task = VCloudExpressClient.class.cast(client).powerOnVApp(vAppResponse.getHref());
90               if (!taskTester.apply(task.getHref())) {
91                  throw new RuntimeException(String.format("failed to %s %s: %s", "powerOn", vAppResponse.getName(),
92                        task));
93               }
94               logger.debug("<< on vApp(%s)", vAppResponse.getName());
95            }
96         }
97      }
98      return vAppResponse;
99   }
100 
101   @Override
102   public Set<String> getPrivateAddresses(URI id) {
103      return ImmutableSet.of();
104   }
105 
106   @Override
107   public Set<String> getPublicAddresses(URI id) {
108      VCloudExpressVApp vApp = refreshVApp(id);
109      return Sets.newHashSet(vApp.getNetworkToAddresses().values());
110   }
111 
112   @Override
113   protected Status getStatus(VCloudExpressVApp vApp) {
114      return vApp.getStatus();
115   }
116 
117   @Override
118   protected VCloudExpressVApp refreshVApp(URI id) {
119      return VCloudExpressClient.class.cast(client).getVApp(id);
120   }
121 
122   @Override
123   protected Task powerOff(VCloudExpressVApp vApp) {
124      return VCloudExpressClient.class.cast(client).powerOffVApp(vApp.getHref());
125   }
126 
127   @Override
128   protected Task reset(VCloudExpressVApp vApp) {
129      return VCloudExpressClient.class.cast(client).resetVApp(vApp.getHref());
130   }
131 
132   @Override
133   protected Task undeploy(VCloudExpressVApp vApp) {
134      return VCloudExpressClient.class.cast(client).undeployVApp(vApp.getHref());
135   }
136}

[all classes][org.jclouds.vcloud.compute.internal]
EMMA 2.0.5312 (C) Vladimir Roubtsov