/*******************************************************************************
* Copyright (c) 2012 GigaSpaces Technologies Ltd. All rights reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package org.cloudifysource.esc.driver.provisioning;
import java.net.UnknownHostException;
/**
* Interface for a custom cloud node, used for example by the BYON cloud driver.
*
* @author noak
* @since 2.0.1
*/
public interface CustomNode {
/**
* @return id of the server within the naming scope it was created. potentially generated by the service.
*/
String getProviderId();
String getHostName();
/**
*
* A means to uniquely address this resource within a provider. For example, if the namespace of a node or
* image is region based, the id will likely include both the region and the provider-supplied id encoded
* to avoid collisions.
*
* @return unique id within your account on the provider
*/
String getId();
/**
* @return the TCP port used for terminal connections. Generally, this is port 22 for ssh.
*/
int getLoginPort();
/**
* Gets the user name required to log in to the node.
*
* @return The username as a {@link String}
*/
String getUsername();
/**
* Gets the password required to log in to the node.
*
* @return The password as a {@link String}
*/
String getCredential();
/**
* Gets the private key required to log in to the node.
*
* @return The private key as a {@link String}
*/
String getKeyFile();
/**
* Gets the public IP address, the IP address used for external communication.
*
* @return The public IP address as a {@link String}
*/
String getPublicIP();
/**
* Gets the private IP address (or host name), used for internal communication.
*
* @return The private IP address as a {@link String}
*/
String getPrivateIP();
/**
* Resolve the addresses of this node. this method should populate the privateIp and hostName fields of the node
* with the resolved value as defined in the network.
* @throws UnknownHostException .
*/
void resolve() throws UnknownHostException;
/**
* Sets the node name.
*
* @param nodeName
* A user defined name of the server.
*/
void setNodeName(String nodeName);
/**
* Gets the node name.
*
* @return user defined name for the node.
*/
String getNodeName();
/**
* Sets the node's group.
*
* @param group
* The group name
*/
void setGroup(final String group);
/**
* Tag used for all resources that belong to the same logical group. run, destroy commands are scoped to
* group.
*
* @return group for this node, or null, if not a part of a group
*
*/
String getGroup();
/*********************
* Sets the login port for this node.
* @param loginPort the login port.
*/
void setLoginPort(final int loginPort);
/**
* Prints this node's main details, for short print outs.
* @return this node's main details, as a String.
*/
String toShortString();
}