1 /**
2 * Licensed to jclouds, Inc. (jclouds) under one or more
3 * contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. jclouds licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. 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,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.jclouds.savvis.vpdc.features;
20
21 import java.net.URI;
22 import java.util.concurrent.TimeUnit;
23
24 import org.jclouds.concurrent.Timeout;
25 import org.jclouds.savvis.vpdc.domain.Task;
26
27 /**
28 * Provides access to Symphony VPDC resources via their REST API.
29 * <p/>
30 *
31 * @see <a href="https://api.sandbox.symphonyvpdc.savvis.net/doc/spec/api/" />
32 * @author Adrian Cole
33 */
34 @Timeout(duration = 300, timeUnit = TimeUnit.SECONDS)
35 public interface ServiceManagementClient {
36 /**
37 * Powers on the VM
38 * <p/>
39 * <h4>Pre-conditions:</h4>
40 * <p/>
41 * No other API operation is being performed on the VM.
42 *
43 * @param billingSiteId
44 * billing site Id, or null for default
45 * @param vpdcId
46 * vpdc Id
47 * @param vmId
48 * vm you wish to remove
49 * @return task of the power operation
50 */
51 Task powerOnVMInVDC(String billingSiteId, String vpdcId, String vmId);
52
53 /**
54 *
55 * @param vm
56 * href of the vm
57 * @see #powerOnVMInVDC
58 */
59 Task powerOnVM(URI vm);
60
61 /**
62 * Powers off the VM
63 * <p/>
64 * <h4>Pre-conditions:</h4>
65 * <p/>
66 * No other API operation is being performed on the VM.
67 *
68 * @param billingSiteId
69 * billing site Id, or null for default
70 * @param vpdcId
71 * vpdc Id
72 * @param vmId
73 * vm you wish to remove
74 * @return task of the power operation
75 */
76 Task powerOffVMInVDC(String billingSiteId, String vpdcId, String vmId);
77
78 /**
79 *
80 * @param vm
81 * href of the vm
82 * @see #powerOffVMInVDC
83 */
84 Task powerOffVM(URI vm);
85
86 }