
.. This work is licensed under a Creative Commons Attribution 4.0
.. International License. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 AT&T Intellectual Property.  All rights reserved.


Service Deployment
==================
Deploy a service by following these general steps:

* `Instantiate a network <https://wiki.onap.org/x/r40P>`_
* `Gather and validate data for an infrastructure service/network <https://wiki.onap.org/x/sY0P>`_
* `Instantiate an infrastructure service <https://wiki.onap.org/x/to0P>`_
* `Post instantiation <https://wiki.onap.org/x/uY0P>`_

About infrastructure services
-----------------------------

Infrastructure services describe VFs that are designed to meet
the need for additional capacity in the network. Service Designers
create the VFs/services that represent such capacity, and
Operations representatives trigger the instantiation of the
infrastructure service using the Virtual Instantiation
Deployment (VID) GUI. These services are based on the need for
additional capacity or the removal of deployed capacity.

Example infrastructure service types:

 * mobile

 * layer 3

 * layer 4+

 * cloud

Capacity Planning
-----------------

Before triggering VF instantiation,
ensure the capacity and resources required by each VF in
a service are available.
