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.compute.domain;
20
21 import java.util.Set;
22
23 import org.jclouds.javax.annotation.Nullable;
24
25 import org.jclouds.compute.domain.internal.NodeMetadataImpl;
26 import org.jclouds.domain.Credentials;
27
28 import com.google.inject.ImplementedBy;
29
30 /**
31 * @author Adrian Cole
32 * @author Ivan Meredith
33 */
34 @ImplementedBy(NodeMetadataImpl.class)
35 public interface NodeMetadata extends ComputeMetadata {
36 /**
37 * <h4>note</h4> hostname is something that is set in the operating system
38 * image, so this value, if present, cannot be guaranteed on images not
39 * directly controlled by the cloud provider.
40 *
41 * @return hostname of the node, or null if unknown
42 *
43 */
44 @Nullable
45 String getHostname();
46
47 /**
48 * Tag used for all resources that belong to the same logical group. run, destroy commands are
49 * scoped to group.
50 *
51 * @return group for this node, or null, if not a part of a group
52 *
53 */
54 @Nullable
55 String getGroup();
56
57 /**
58 * @see #getGroup
59 */
60 @Deprecated
61 String getTag();
62
63 /**
64 *
65 * The hardware this node is running, if possible to determine.
66 */
67 @Nullable
68 Hardware getHardware();
69
70 /**
71 *
72 * The id of the image this node was created from, if possible to correlate.
73 */
74 @Nullable
75 String getImageId();
76
77 /**
78 *
79 * The operating system this node is running, if possible to determine.
80 */
81 @Nullable
82 OperatingSystem getOperatingSystem();
83
84 /**
85 * Current State of the node
86 */
87 NodeState getState();
88
89 /**
90 * @return the TCP port used for terminal connections. Generally, this is port 22 for ssh.
91 */
92 int getLoginPort();
93
94 /**
95 * secures access to root with a password. This password is required to access either the console
96 * or run sudo as root.
97 * <p/>
98 * ex. {@code echo 'password' |sudo -S command}
99 *
100 * @return root or console password, if configured, or null.
101 */
102 @Nullable
103 String getAdminPassword();
104
105 /**
106 * If possible, these are returned upon all detail requests. However, it is often the case that
107 * credentials are only available at "run" time.
108 */
109 Credentials getCredentials();
110
111 /**
112 * All public IP addresses, potentially including shared ips.
113 */
114 Set<String> getPublicAddresses();
115
116 /**
117 * All private IP addresses.
118 */
119 Set<String> getPrivateAddresses();
120
121 }