Port

A Port node is used to link a Server node to a Network node (VPC). This results in launching the server into the VPC.

The Port node is defined with a section name, a type and requirements.

section name

Example: port:

type

type: dcm.nodes.Port

requirements

A Port node has a requirements: section with 2 statements:

  • - link: - specifies the section name of the Network node defined in the template.
  • - binding: - specifies the section name of the Server node defined in the template.
Only 1 Server node can be specified per - binding: statement. You can specify additional Server nodes by coding additional - binding: statements on the Port node.

Note

If you will be launching servers in a VPC you will need to specify requirements with a relationship to the VPC network on the FirewallGroup node.

Port Example

port:
  type: dcm.nodes.Port                                                   # This is a Port Node
  requirements:
    - link: vpc_network                                                  # Link this port to the network with the section name of "vpc_network"
    - binding: web_vm                                                    # Bind this port to the server with the section name of "web_vm"

Linking a Server to a Network

    ##################################################################################################################################################
    # This node_template defines a virtual machine named "web_vm" which will host the Apache Web Server
    ##################################################################################################################################################
    web_vm:
      type: dcm.nodes.Server                                                     # This is a Server node 
      properties:                                                 
        name: "apache-server"
        ############################################################################################################################################### 
        # Retrieve cloud, cloudAccountId, region and datacenter information from the region_selector
        ############################################################################################################################################### 
        cloud: { get_input: [account_region_zone_selector, cloud] }              # Retrieve cloud from the AccountRegionSelector
        cloudAccountId: { get_input: [account_region_zone_selector, accountId] } # Retrieve the cloud account ID from the AccountRegionSelector
        region: { get_input: [account_region_zone_selector, region] }            # Retrieve region from the AccountRegionSelector
        zone: { get_input: [account_region_zone_selector, zone] }                # Retrieve zone from the AccountRegionSelector
        ############################################################################################################################################### 
        # Retrieve product information from the product_selector
        ############################################################################################################################################### 
        platform: { get_input: [product_selector, platform] }                    # Retrieve platform from the Product selector
        architecture: { get_input: [product_selector, architecture] }            # Retrieve architecture from the Product selector
        product: { get_input: [product_selector, product] }                      # Retrieve product from the Product selector
        image: { get_input: [product_selector, image] }                          # Retrieve machine from the Product selector
        serverProductId: { get_input: [product_selector, serverProductId] }      # Retrieve server product id from the Product selector

    ###################################################################################################################################################
    # This node_template defines a Virtual Private Cloud Network
    ###################################################################################################################################################            
    vpc_network:
      type: dcm.nodes.Network                                                    # This is a Network Node
      properties:
        ############################################################################################################################################### 
        # Retrieve networkId and subnetId information from the network_selector
        ############################################################################################################################################### 
        networkId: { get_input: [network_selector, networkId] }                  # Retrieve the network ID from the network_selector 
        subnetId: { get_input: [network_selector, subnetId] }                    # Retrieve the subnet ID from the network_selector 
        ############################################################################################################################################### 
        # Retrieve cloud, cloudAccountId, region and datacenter information from the region_selector
        ############################################################################################################################################### 
        cloud: { get_input: [account_region_zone_selector, cloud] }              # Retrieve the cloud from the AccountRegionSelector 
        cloudAccountId: { get_input: [account_region_zone_selector, accountId] } # Retrieve the cloud account ID from the AccountRegionSelector
        region: { get_input: [account_region_zone_selector, region] }            # Retrieve the region from the AccountRegionSelector 
        zone: { get_input: [account_region_zone_selector, zone] }                # Retrieve the zone from the AccountRegionSelector  

    ###################################################################################################################################################
    # This node_template defines a Port
    ###################################################################################################################################################
    port:
      type: dcm.nodes.Port                                                       # This is a Port Node
      requirements:
        - link: vpc_network                                                      # Link this port to the network with the section name of "vpc_network"
        - binding: web_vm                                                        # Bind this port to the server with the section name of "web_vm"

Note

In the example above get_input is an internal function. Refer to Internal functions for more details.

Note

If you will be launching servers in a VPC you will need to specify requirements on the Firewall with a relationship to the VPC network, refer to Example of launching a server in a private network with a firewall requirement on the private network for more information.