<?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="zone-add">
    <title>Adding a Zone</title>
    <para>These steps assume you have already logged in to the &PRODUCT; UI. See <xref linkend="log-in" />.</para>
    <orderedlist>
        <listitem><para>(Optional) If you are going to use Swift for cloud-wide secondary storage, you need to add it before you add zones.</para>
            <orderedlist numeration="loweralpha">
                <listitem><para>Log in to the &PRODUCT; UI as administrator.</para></listitem>
                <listitem><para>If this is your first time visiting the UI, you will see the guided tour splash screen. Choose “Experienced user.” The Dashboard appears.</para></listitem>
                <listitem><para>In the left navigation bar, click Global Settings.</para></listitem>
                <listitem><para>In the search box, type swift.enable and click the search button.</para></listitem>
                <listitem><para>Click the edit button and set swift.enable to true. 
                    <inlinemediaobject>
                        <imageobject>
                            <imagedata fileref="./images/edit-icon.png" />
                        </imageobject>
                        <textobject><phrase>edit-icon.png: button to modify data</phrase></textobject>
                    </inlinemediaobject>
                </para>
                </listitem>
                <listitem><para>Restart the Management Server.</para>
                    <programlisting># service cloudstack-management restart</programlisting>
                </listitem>
                <listitem><para>Refresh the &PRODUCT; UI browser tab and log back in.</para></listitem>
            </orderedlist>
        </listitem>
        <listitem><para>In the left navigation, choose Infrastructure.</para></listitem>
        <listitem><para>On Zones, click View More.</para></listitem>
        <listitem><para>(Optional) If you are using Swift storage, click Enable Swift. Provide the following:</para>
            <itemizedlist>
                <listitem><para><emphasis role="bold">URL.</emphasis> The Swift URL.</para></listitem>
                <listitem><para><emphasis role="bold">Account.</emphasis> The Swift account.</para></listitem>
                <listitem><para><emphasis role="bold">Username.</emphasis> The Swift account’s username.</para></listitem>
                <listitem><para><emphasis role="bold">Key.</emphasis> The Swift key.</para></listitem>
            </itemizedlist>
        </listitem>
        <listitem><para>Click Add Zone. The zone creation wizard will appear.</para></listitem>
        <listitem><para>Choose one of the following network types:</para>
            <itemizedlist>
                <listitem><para><emphasis role="bold">Basic.</emphasis> For AWS-style networking. Provides a single network where each VM instance is assigned an IP directly from the network. Guest isolation can be provided through layer-3 means such as security groups (IP address source filtering).</para></listitem>
                <listitem><para><emphasis role="bold">Advanced.</emphasis> For more sophisticated network topologies. This network model provides the most flexibility in defining guest networks and providing custom network offerings such as firewall, VPN, or load balancer support.</para></listitem>
            </itemizedlist>
            <para>For more information about the network types, see <xref linkend="about-physical-networks" />.</para>
        </listitem>
        <listitem><para>The rest of the steps differ depending on whether you chose Basic or Advanced. Continue with the steps that apply to you:</para>
            <itemizedlist>
                <listitem><para><xref linkend="basic-zone-configuration" /></para></listitem>
                <listitem><para><xref linkend="advanced-zone-configuration" /></para></listitem>
            </itemizedlist>
        </listitem>
    </orderedlist>
    <xi:include href="basic-zone-configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
    <xi:include href="advanced-zone-configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</section>
