<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you 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.
-->
<section id="release-ip-for-vpc">
  <title>Releasing an IP Address Alloted to a VPC</title>
  <para>The IP address is a limited resource. If you no longer need a particular IP, you can
    disassociate it from its VPC and return it to the pool of available addresses. An IP address can
    be released from its tier, only when all the networking ( port forwarding, load balancing, or
    StaticNAT ) rules are removed for this IP address. The released IP address will still belongs to
    the same VPC.</para>
  <orderedlist>
    <listitem>
      <para>Log in to the &PRODUCT; UI as an administrator or end user.</para>
    </listitem>
    <listitem>
      <para>In the left navigation, choose Network.</para>
    </listitem>
    <listitem>
      <para>In the Select view, select VPC.</para>
      <para>All the VPCs that you have created for the account is listed in the page.</para>
    </listitem>
    <listitem>
      <para>Click the Configure button of the VPC whose IP you want to release.</para>
      <para>The VPC page is displayed where all the tiers you created are listed in a
        diagram.</para>
    </listitem>
    <listitem>
      <para>Click the Settings icon.</para>
      <para>The following options are displayed.</para>
      <itemizedlist>
        <listitem>
          <para>IP Addresses</para>
        </listitem>
        <listitem>
          <para>Gateways</para>
        </listitem>
        <listitem>
          <para>Site-to-Site VPN</para>
        </listitem>
        <listitem>
          <para>Network ACLs</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>Select IP Addresses.</para>
      <para>The IP Addresses page is displayed.</para>
    </listitem>
    <listitem>
      <para>Click the IP you want to release.</para>
    </listitem>
    <listitem>
      <para>In the Details tab, click the Release IP button <inlinemediaobject>
          <imageobject>
            <imagedata fileref="./images/release-ip-icon.png"/>
          </imageobject>
          <textobject>
            <phrase>release-ip-icon.png: button to release an IP.</phrase>
          </textobject>
        </inlinemediaobject></para>
    </listitem>
  </orderedlist>
</section>
