Merge "Added the ability to give the tests the ability to add in flavor metadata."
authorSteven Pisarski <s.pisarski@cablelabs.com>
Mon, 6 Mar 2017 17:14:37 +0000 (17:14 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Mon, 6 Mar 2017 17:14:37 +0000 (17:14 +0000)
docs/how-to-use/InstallSnaps.rst [new file with mode: 0644]
docs/how-to-use/LibraryUsage.rst [new file with mode: 0644]
docs/how-to-use/Testing.rst
docs/how-to-use/VirtEnvDeploy.rst
docs/how-to-use/index.rst
examples/complex-network/deploy-complex-network.yaml
examples/external-network/deploy-ext-net.yaml
examples/launch.py [moved from snaps/deploy_venv.py with 100% similarity]
examples/simple/deploy-simple.yaml
examples/two-network/deploy-two-net-centos.yaml
examples/two-network/deploy-two-net-ubuntu.yaml

diff --git a/docs/how-to-use/InstallSnaps.rst b/docs/how-to-use/InstallSnaps.rst
new file mode 100644 (file)
index 0000000..9412579
--- /dev/null
@@ -0,0 +1,44 @@
+****************
+Installing SNAPS
+****************
+
+
+Install Dependencies
+====================
+A few packages need to installed onto your system, before you can install SNAPS.
+
+Git is used to download the snaps source from the OPNFV Gerrit repository.
+
+Python, GCC and additional libraries are required to compile and install the packages used by SNAPS.  These
+dependencies need to be installed whether or not a virtual Python environment is used.
+
+CentOS 7
+--------
+
+::
+
+    # yum install -7 git gcc python-pip python-devel openssl-devel
+
+Ubuntu
+------
+::
+
+      # apt-get install git python2.7-dev libssl-dev
+
+Optional: Setup a Python virtual environment
+--------------------------------------------
+
+Python 2.7 (recommend leveraging a Virtual Python runtime, e.g.
+   `Virtualenv <https://virtualenv.pypa.io>`__, in your development
+   environment)
+
+Install SNAPS dependencies
+--------------------------
+
+The "pip" command below needs to be executed as root, if you are not using a virtual Python environment.
+
+::
+
+   #  pip install -e <path to repo>/snaps/
+
+The install should now be complete and you can start using the SNAPS-OO libraries.
diff --git a/docs/how-to-use/LibraryUsage.rst b/docs/how-to-use/LibraryUsage.rst
new file mode 100644 (file)
index 0000000..6c84afd
--- /dev/null
@@ -0,0 +1,503 @@
+**********************
+SNAPS-OO Library Usage
+**********************
+
+The pattern used within the SNAPS-OO library for creating OpenStack
+instances have been made as consistent as possible amongst the different
+instance types. Each consists of a constructor that takes in a
+credentials object and generally takes in a single "settings"
+(configuration) object. The only exception to this rule is with the
+OpenStackVMInstance (creates an OpenStack Server) where it takes in the
+additional settings used for the associated image and SSH key-pairs
+credentials as those objects contain additional attributes required of
+SNAPS, primarily when one needs to obtain remote access. After
+instantiation, the create() method must be called to initiate all of the
+necessary remote API calls to OpenStack required for proper instance
+creation.
+
+SNAPS Credentials
+=================
+
+As communicating with OpenStack is performed via secure remote RESTful
+API calls, any function or method performing any type of query or CRUD
+operation must know how to connect to the NFVI. The class ***OSCreds***
+defined in *snaps.openstack.os\_credentials.py* contains everything
+required to connect to any Keystone v2.0 or v3 authorization server. The
+attributes are listed below:
+
+-  username
+-  password
+-  auth\_url
+-  project\_name (aka. tenant\_name)
+-  identity\_api\_version (for obtaining Keystone authorization token.
+   Versions 2.0 & v3 only validated.)
+-  image\_api\_version (Glance version 1 currently only validated)
+-  network\_api\_version (Neutron version 2 currently only validated)
+-  compute\_api\_version (Nova version 2 currently only validated)
+-  user\_domain\_id (default='default')
+-  project\_domain\_id (default='default')
+-  proxy\_settings
+
+   -  host (the HTTP proxy host)
+   -  port (the HTTP proxy port)
+   -  ssh\_proxy\_cmd (same as the value placed into ssh -o
+      ProxyCommand='<this config value>')
+
+Create OS Credentials Object
+----------------------------
+
+.. code:: python
+
+    from snaps.openstack.os_credentials import OSCreds
+    os_creds=OSCreds(username='admin', password`='admin'
+                     auth_url='http://localhost:5000/v3, project_name='admin',
+                     identity_api_version=3)
+
+SNAPS Object Creators
+=====================
+
+Each creator minimally requires an OSCreds object for connecting to the
+NFVI, associated \*Settings object for instance configuration, create()
+method to make the necessary remote API calls and create all of the
+necessary OpenStack instances required, and clean() method that is
+responsible for deleting all associated OpenStack instances. Please see
+the class diagram `here </display/SNAP/SNAPS-OO+Classes>`__. Below is a
+textual representation of the requirements of each creator classes with
+their associated setting classes and a sample code snippet on how to use
+the code.
+
+Create User
+-----------
+-  User - snaps.openstack.create\_user.OpenStackUser
+
+   -  snaps.openstack.create\_user.UserSettings
+
+      -  name - the username (required)
+      -  password - the user's password (required)
+      -  project\_name - the name of the project to associated to this
+         user (optional)
+      -  domain\_name - the user's domain (default='default')
+      -  email - the user's email address (optional)
+      -  enabled - flag to determine whether or not the user should be
+         enabled (default=True)
+
+.. code:: python
+
+    from snaps.openstack.create_user import UserSettings, OpenStackUser
+    user_settings = UserSettings(name='username', password='password)
+    user_creator = OpenStackUser(os_creds, user_settings)
+    user_creator.create()
+
+    # Retrieve OS creds for new user for creating other OpenStack instance
+    user_creds = user_creator.get_os_creds(os_creds.project_name)
+
+    # Perform logic
+    ...
+
+    # Cleanup
+    user_creator.clean()
+
+Create Project
+--------------
+-  Project - snaps.openstack.create\_project.OpenStackProject
+
+   -  snaps.openstack.create\_project.ProjectSettings
+
+      -  name - the project name (required)
+      -  domain - the project's domain (default='default')
+      -  description - the project's description (optional)
+      -  enables - flag to determine whether or not the project should
+         be enabled (default=True)
+
+.. code:: python
+
+    from snaps.openstack.create_project import ProjectSettings, OpenStackProject
+    project_settings = ProjectSettings(name='username', password='password)
+    project_creator = OpenStackProject(os_creds, project_settings)
+    project_creator.create()
+
+    # Perform logic
+    ...
+
+    # Cleanup
+    project_creator.clean()
+
+Create Flavor
+-------------
+-  Flavor - snaps.openstack.create\_flavor.OpenStackFlavor
+
+   -  snaps.openstack.create\_flavor.FlavorSettings
+
+      -  name - the flavor name (required)
+      -  flavor\_id - the flavor's string ID (default='auto')
+      -  ram - memory in MB to allocate to VM (required)
+      -  disk - disk storage in GB (required)
+      -  vcpus - the number of CPUs to allocate to VM (required)
+      -  ephemeral - the size of the ephemeral disk in GB (default=0)
+      -  swap - the size of the swap disk in GB (default=0)
+      -  rxtx\_factor - the receive/transmit factor to be set on ports
+         if backend supports QoS extension (default=1.0)
+      -  is\_public - flag that denotes whether or not other projects
+         can access image (default=True)
+
+.. code:: python
+
+    from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
+    flavor_settings = FlavorSettings(name='flavor-name', ram=4, disk=10, vcpus=2)
+    flavor_creator = OpenStackFlavor(os_creds, flavor_settings)
+    flavor_creator.create()
+
+    # Perform logic
+    ...
+
+    # Cleanup
+    flavor_creator.clean()
+
+Create Image
+------------
+-  Image - snaps.openstack.create\_image.OpenStackImage
+
+   -  snaps.openstack.create\_image.ImageSettings
+
+      -  name - the image name (required)
+      -  image\_user - the default image user generally used by
+         OpenStackVMInstance class for obtaining an SSH connection
+         (required)
+      -  img\_format - the image's format (i.e. qcow2) (required)
+      -  url - the download URL to obtain the image file (this or
+         image\_file must be configured, not both)
+      -  image\_file - the location of the file to be sourced from the
+         local filesystem (this or url must be configured, not both)
+      -  nic\_config\_pb\_loc - the location of the ansible playbook
+         that can configure additional NICs. Floating IPs are required
+         to perform this operation. (optional)
+
+
+.. code:: python
+
+    from snaps.openstack.create_image import ImageSettings, OpenStackImage
+    image_settings = ImageSettings(name='image-name', image_user='ubuntu', img_format='qcow2',
+                                   url='http://uec-images.ubuntu.com/releases/trusty/14.04/ubuntu-14.04-server-cloudimg-amd64-disk1.img')
+    image_creator = OpenStackImage(os_creds, image_settings)
+    image_creator.create()
+
+    # Perform logic
+    ...
+
+    # Cleanup
+    image_creator.clean()
+
+Create Keypair
+--------------
+-  Keypair - snaps.openstack.create\_keypair.OpenStackKeypair
+
+   -  snaps.openstack.create\_keypair.KeypairSettings
+
+      -  name - the keypair name (required)
+      -  public\_filepath - the file location to where the public key is
+         to be written or currently resides (optional)
+      -  private\_filepath - the file location to where the private key
+         file is to be written or currently resides (optional but highly
+         recommended to leverage or the private key will be lost
+         forever)
+
+.. code:: python
+
+    from snaps.openstack.create_keypair import KeypairSettings, OpenStackKeypair
+    keypair_settings = KeypairSettings(name='kepair-name', private_filepath='/tmp/priv-kp')
+    keypair_creator = OpenStackKeypair(os_creds, keypair_settings)
+    keypair_creator.create()
+
+    # Perform logic
+    ...
+
+    # Cleanup
+    keypair_creator.clean()
+
+Create Network
+--------------
+
+-  Network - snaps.openstack.create\_network.OpenStackNetwork
+
+   -  snaps.openstack.create\_network.NetworkSettings
+
+      -  name - the name of the network (required)
+      -  admin\_state\_up - flag denoting the administrative status of
+         the network (True = up, False = down)
+      -  shared - flag indicating whether the network can be shared
+         across projects/tenants (default=True)
+      -  project\_name - the name of the project (optional - can only be
+         set by admin users)
+      -  external - flag determining if network has external access
+         (default=False)
+      -  network\_type - the type of network (i.e. vlan\|vxlan\|flat)
+      -  physical\_network - the name of the physical network (required
+         when network\_type is 'flat')
+      -  subnet\_settings (list of optional
+         snaps.openstack.create\_network.SubnetSettings objects)
+
+         -  cidr - the subnet's CIDR (required)
+         -  ip\_version - 4 or 6 (default=4)
+         -  name - the subnet name (required)
+         -  project\_name - the name of the project (optional - can only
+            be set by admin users)
+         -  start - the start address for the allocation pools
+         -  end - the end address for the allocation pools
+         -  gateway\_ip - the gateway IP
+         -  enable\_dhcp - flag to determine whether or not to enable
+            DHCP (optional)
+         -  dns\_nameservers - a list of DNS nameservers
+         -  host\_routes - list of host route dictionaries for subnet
+            (optional, see pydoc and Neutron API for more details)
+         -  destination - the destination for static route (optional)
+         -  nexthop - the next hop for the destination (optional)
+         -  ipv6\_ra\_mode - valid values include: 'dhcpv6-stateful',
+            'dhcp6v-stateless', 'slaac' (optional)
+         -  ipvc\_address\_mode - valid values include:
+            'dhcpv6-stateful', 'dhcp6v-stateless', 'slaac' (optional)
+
+.. code:: python
+
+    from snaps.openstack.create_network import NetworkSettings, SubnetSettings, OpenStackNetwork
+
+    subnet_settings = SubnetSettings(name='subnet-name', cidr='10.0.0.0/24')
+    network_settings = NetworkSettings(name='network-name', subnet_settings=[subnet_settings])
+
+    network_creator = OpenStackNetwork(os_creds, network_settings)
+    network_creator.create()
+
+    # Perform logic
+    ...
+
+    # Cleanup
+    network_creator.clean()
+
+Create Security Group
+---------------------
+
+-  Security Group -
+   snaps.openstack.create\_security\_group.OpenStackSecurityGroup
+
+   -  snaps.openstack.create\_security\_group.SecurityGroupSettings
+
+      -  name - the security group's name (required)
+      -  description - the description (optional)
+      -  project\_name - the name of the project (optional - can only be
+         set by admin users)
+      -  rule\_settings (list of
+         optional snaps.openstack.create\_security\_group.SecurityGroupRuleSettings
+         objects)
+
+         -  sec\_grp\_name - the name of the associated security group
+            (required)
+         -  description - the description (optional)
+         -  direction - enum
+            snaps.openstack.create\_security\_group.Direction (required)
+         -  remote\_group\_id - the group ID to associate with this rule
+         -  protocol -
+            enum snaps.openstack.create\_security\_group.Protocol
+            (optional)
+         -  ethertype -
+            enum snaps.openstack.create\_security\_group.Ethertype
+            (optional)
+         -  port\_range\_min - the max port number in the range that is
+            matched by the security group rule (optional)
+         -  port\_range\_max - the min port number in the range that is
+            matched by the security group rule (optional)
+         -  sec\_grp\_rule - the rule object to a security group rule
+            object to associate (note: does not work currently)
+         -  remote\_ip\_prefix - the remote IP prefix to associate with
+            this metering rule packet (optional)
+
+.. code:: python
+
+    from snaps.openstack.create_security_group import SecurityGroupSettings, SecurityGroupRuleSettings, Direction,
+        OpenStackSecurityGroup
+
+    rule_settings = SubnetSettings(name='subnet-name', cidr='10.0.0.0/24')
+    network_settings = NetworkSettings(name='network-name', subnet_settings=[subnet_settings])
+
+    sec_grp_name = 'sec-grp-name'
+    rule_settings = SecurityGroupRuleSettings(name=sec_grp_name, direction=Direction.ingress)
+    security_group_settings = SecurityGroupSettings(name=sec_grp_name, rule_settings=[rule_settings])
+
+    security_group_creator = OpenStackSecurityGroup(os_creds, security_group_settings)
+    security_group_creator.create()
+
+    # Perform logic
+    ...
+
+    # Cleanup
+    security_group_creator.clean()
+
+Create Router
+-------------
+
+-  Router - snaps.openstack.create\_router.OpenStackRouter
+
+   -  snaps.openstack.create\_router.RouterSettings
+
+      -  name - the router name (required)
+      -  project\_name - the name of the project (optional - can only be
+         set by admin users)
+      -  external\_gateway - the name of the external network (optional)
+      -  admin\_state\_up - flag to denote the administrative status of
+         the router (default=True)
+      -  external\_fixed\_ips - dictionary containing the IP address
+         parameters (parameter not tested)
+      -  internal\_subnets - list of subnet names to which this router
+         will connect (optional)
+      -  port\_settings (list of optional
+         snaps.openstack.create\_router.PortSettings objects) - creates
+         custom ports to internal subnets (similar to internal\_subnets
+         with more control)
+
+         -  name
+         -  network\_name
+         -  admin\_state\_up
+         -  project\_name - the name of the project (optional - can only
+            be set by admin users)
+         -  mac\_address
+         -  ip\_addrs
+         -  fixed\_ips
+         -  security\_groups
+         -  allowed\_address\_pairs
+         -  opt\_value
+         -  opt\_name
+         -  device\_owner
+         -  device\_id
+
+.. code:: python
+
+    from snaps.openstack.create_router import RouterSettings, OpenStackRouter
+
+    router_settings = RouterSettings(name='router-name', external_gateway='external')
+    router_creator = OpenStackRouter(os_creds, router_settings)
+    router_creator.create()
+
+    # Perform logic
+    ...
+
+    # Cleanup
+    router_creator.clean()
+
+Create VM Instance
+------------------
+
+-  VM Instances - snaps.openstack.create\_instance.OpenStackVmInstance
+
+   -  snaps.openstack.create\_instance.VmInstanceSettings
+
+      -  name - the name of the VM (required)
+      -  flavor - the name of the flavor (required)
+      -  port\_settings - list of
+         snaps.openstack.create\_network.PortSettings objects where each
+         denote a NIC (see above in create router section for details)
+         API does not require, but newer NFVIs now require VMs have at
+         least one network
+      -  security\_group\_names - a list of security group names to
+         apply to VM
+      -  floating\_ip\_settings (list of
+         snaps.openstack\_create\_instance.FloatingIpSettings objects)
+
+         -  name - a name to a floating IP for easy lookup 
+         -  port\_name - the name of the VM port on which the floating
+            IP should be applied (required)
+         -  router\_name - the name of the router to the external
+            network (required)
+         -  subnet\_name - the name of the subnet on which to attach the
+            floating IP (optional)
+         -  provisioning - when true, this floating IP will be used for
+            provisioning which will come into play once we are able to
+            get multiple floating IPs working.
+
+      -  sudo\_user - overrides the image\_settings.image\_user value
+         when attempting to connect via SSH
+      -  vm\_boot\_timeout - the number of seconds that the thread will
+         block when querying the VM's status when building (default=900)
+      -  vm\_delete\_timeout - the number of seconds that the thread
+         will block when querying the VM's status when deleting
+         (default=300)
+      -  ssh\_connect\_timeout - the number of seconds that the thread
+         will block when attempting to obtain an SSH connection
+         (default=180)
+      -  availability\_zone - the name of the compute server on which to
+         deploy the VM (optional must be admin)
+      -  userdata - the cloud-init script to execute after VM has been
+         started
+
+   -  image\_settings - see snaps.openstack.create\_image.ImageSettings
+      above (required)
+   -  keypair\_settings - see
+      snaps.openstack.create\_keypairs.KeypairSettings above (optional)
+
+.. code:: python
+
+    from snaps.openstack.create_instance import VmInstanceSettings, FloatingIpSettings, OpenStackVmInstance
+    from snaps.openstack.create_network import PortSettings
+
+    port_settings = PortSettings(name='port-name', network_name=network_settings.name)
+    floating_ip_settings = FloatingIpSettings(name='fip1', port_name=port_settings.name, router_name=router_settings.name
+    instance_settings = VmInstanceSettings(name='vm-name', flavor='flavor_settings.name, port_settings=[port_settings],
+                                           floating_ip_settings=[floating_ip_settings]
+
+    instance_creator = OpenStackVmInstance(os_creds, instance_settings, image_settings, kepair_settings)
+    instance_creator.create()
+
+    # Perform logic
+    ...
+    ssh_client = instance_creator.ssh_client()
+    ...
+
+    # Cleanup
+    instance_creator.clean()
+
+Ansible Provisioning
+====================
+
+Being able to easily create OpenStack instances such as virtual networks
+and VMs is a good start to the problem of NFV; however, an NFVI is
+useless unless there is some software performing some function. This is
+why we added Ansible playbook support to SNAPS-OO which can be located
+in snaps.provisioning.ansible\_utils#apply\_playbook. See below for a
+description of that function's parameters:
+
+-  playbook\_path - the file location of the ansible playbook
+-  hosts\_inv - a list of hosts/IP addresses to which the playbook will
+   be applied
+-  host\_user - the user (preferably sudo) to use for applying the
+   playbook
+-  ssh\_priv\_key\_file\_path - the location to the private key file
+   used for SSH
+-  variables - a dict() of substitution values for Jinga2 templates
+   leveraged by Ansible
+-  proxy\_setting - used to extract the SSH proxy command (optional)
+
+Apply Ansible Playbook Utility
+------------------------------
+
+.. code:: python
+
+    from snaps.provisioning import ansible_utils
+
+    ansible_utils.apply_playbook(playbook_path='/tmp/playbook.yml',
+                                 hosts_inv=[instance_creator.get_port_ip(instance_settings.port_settings[0].name,
+                                 host_user=instance_creator.get_image_user(),
+                                 ssh_priv_key_file_path=instance_creator.keypair_settings.private_filepath)
+
+
+OpenStack Utilities
+=======================================
+
+For those who do like working procedurally, SNAPS-OO also leverages
+utilitarian functions for nearly every query or request made to
+OpenStack. This pattern will make it easier to deal with API version
+changes as they would all be made in one place. (see keystone\_utils for
+an example of this pattern as this is the only API where SNAPS is
+supporting more than one version)
+
+-  snaps.openstack.utils.keystone\_utils - for calls to the Keystone
+   APIs
+-  snaps.openstack.utils.glance\_utils - for calls to the Glance APIs
+-  snaps.openstack.utils.neutron\_utils - for calls to the Neutron APIs
+-  snaps.openstack.utils.nova\_utils - for calls to the Nova APIs
index 586974a..7627927 100644 (file)
@@ -1,23 +1,14 @@
 Running Unit Test Suite
 =======================
 
-These tests are written in Python and require an that it is setup before running the tests.
-See `install directions <index.md>`__ for Python installation instructions.
-
-Start by cloning the snaps-provisioning repository
---------------------------------------------------
-
-``git clone https://gerrit.cablelabs.com/snaps-provisioning``
-
-Install Library
----------------
-
-``pip install -e <path to repo>/``
-
 Execute the tests
 -----------------
 
-| ``cd <path to repo>   python snaps/unit_test_suite.py -e [path to RC file] -n [external network name]``
+::
+
+cd <path to repo>
+python snaps/unit_test_suite.py -e <path to RC file> -n <external network name>
+
 | \* All Supported Arguments
 | \* -e [required - The path to the OpenStack RC file]
 | \* -n [required - The name of the external network to use for routers
@@ -30,15 +21,3 @@ Execute the tests
 | \* -f [optional - When set, will not execute tests requiring Floating
   IPS]
 | \* -u [optional - When set, the unit tests will be executed]
-
-Test descriptions
-=================
-
-`Unit Testing <UnitTests.rst>`__ - Tests that do not require a connection to OpenStack
---------------------------------------------------------------------------------------
-
-`OpenStack API Tests <APITests.rst>`__ - Tests many individual OpenStack API calls
-----------------------------------------------------------------------------------
-
-`Integration Tests <IntegrationTests.rst>`__ - Tests OpenStack object creation in a context. These tests will be run within a custom project as a specific user.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
index 7f55f0c..58a33d5 100644 (file)
@@ -1,52 +1,47 @@
-Overview
-========
+Try an example
+==============
 
-The main purpose of this project is to enable one to describe a virtual environment in a YAML file and enable the
-user to deploy it to an OpenStack cloud in a repeatable manner. There are also options to un-deploy that same
-environment by leveraging the original YAML file.
+Use launcher.py to deploy and clean up example environments.  These examples are described in YAML files.
 
-To deploy/clean virtual environments
-====================================
+#. Add your OpenStack connection information to the deploy-complex-network.yaml.
 
--  Clone Repository
+    Edit <path to repo>/examples/complex-network/deploy-complex-network.yaml
 
-   -  git clone https://gerrit.cablelabs.com/snaps-provisioning
+   -  openstack: the top level tag that denotes configuration for the OpenStack components
 
--  Install Library
-
-   -  pip install -e /
+   -  connection: - contains the credentials and endpoints required to
+      connect with OpenStack
+   -  username: - the project's user (required)
+   -  password: - the tentant's user password (required)
+   -  auth\_url: - the URL to the OpenStack APIs (required)
+   -  project\_name: - the name of the OpenStack project for the user
+      (required)
+   -  http\_proxy: - the {{ host }}:{{ port }} of the proxy server the
+      HTTPPhotoman01(optional)
 
--  Deploy
+#. Go to the examples directory.
 
-   -  cd
-   -  python snaps/deploy\_venv.py -e -d
-   -  Working example:
+    ::
 
-::
+        cd <snaps repo>/examples/
 
-    python deploy_venv.py -e <path to repo>/examples/complex-network/deploy-complex-network.yaml -d
+#. Deploy the launcher.
 
--  Clean
+    ::
 
-   -  python deploy\_venv.py -e -c
-   -  Working example (cleanup of a previously deployed virtual
-      environment where the VM has Yardstick installed):
+        $ python launcher.py -e ./complex-network/deploy-complex-network.yaml -d
 
-::
+#. Clean the deployment.
 
-    python deploy_venv.py -e <path to repo>/examples/complex-network/deploy-complex-network.yaml -c
+    ::
 
-Environment Configuration YAML File
-===================================
+        $ python launcher.py -e ./complex-network/deploy-complex-network.yaml -c
 
-The configuration file used to deploy and provision a virtual environment has been designed to describe the required
-images, networks, SSH public and private keys, associated VMs, as well as any required post deployment provisioning
-tasks.
+#. Customize the deployment by changing the yaml file.
 
-\*\*\* Please note that many of the more esoteric optional supported
-attributes still have not been fully tested. ***
-*** Some of the nested bullets are being hidden by GitLabs, please see
-doc/VirtEnvDeploy.md.\*\*\*
+    The configuration file used to deploy and provision a virtual environment has been designed to describe the required
+    images, networks, SSH public and private keys, associated VMs, as well as any required post deployment provisioning
+    tasks.
 
 -  openstack: the top level tag that denotes configuration for the
    OpenStack components
index 58b67a3..70f565a 100644 (file)
@@ -1,26 +1,11 @@
-*************************
-Runtime Environment Setup
-*************************
 
--  Python 2.7 (recommend leveraging a Virtual Python runtime, e.g.
-   `Virtualenv <https://virtualenv.pypa.io>`__, in your development
-   environment)
--  Development packages for python and openssl. On CentOS/RHEL:
+.. toctree::
+    :maxdepth: 2
 
-   # yum install python-devel openssl-devel
-
-On Ubuntu:
-
-::
-
-      # apt-get install python2.7-dev libssl-dev
-
--  Install SNAPS Library
-
-   -  pip install -e <path to repo>/snaps/
-
-`Testing <Testing.rst>`__
--------------------------
-
-`Virtual Environment Deployment <VirtEnvDeploy.rst>`__
-------------------------------------------------------
+    InstallSnaps
+    VirtEnvDeploy
+    Testing
+    LibraryUsage
+    APITests
+    UnitTests
+    IntegrationTests
index 42559e8..eff36c9 100644 (file)
@@ -17,8 +17,8 @@ openstack:
   connection:
     # Note - when http_proxy is set, you must also configure ssh for proxy tunneling on your host.
     username: admin
-    password: cable123
-    auth_url: http://10.197.103.50:5000/v2.0/
+    password: NotMyPASS!
+    auth_url: http://10.10.10.50:5000/v2.0/
     project_name: admin
     http_proxy: localhost:3128
   images:
index 31c41ec..ac5e214 100644 (file)
@@ -17,8 +17,8 @@ openstack:
   connection:
     # Note - when http_proxy is set, you must also configure ssh for proxy tunneling on your host.
     username: admin
-    password: cable123
-    auth_url: http://10.197.103.50:5000/v2.0/
+    password: NotMyPAss!
+    auth_url: http://10.10.10.50:5000/v2.0/
     project_name: admin
     http_proxy: localhost:3128
   images:
similarity index 100%
rename from snaps/deploy_venv.py
rename to examples/launch.py
index ae946de..982a676 100644 (file)
@@ -17,8 +17,7 @@ openstack:
   connection:
     # Note - when http_proxy is set, you must also configure ssh for proxy tunneling on your host.
     username: admin
-    password: cable123
-#    auth_url: http://10.197.103.50:5000/v2.0/
+    password: NotMyPASS!
     auth_url: http://192.168.67.10:5000/v2.0
     project_name: admin
     http_proxy: 10.197.123.27:3128
index 4fae4aa..4b5ba89 100644 (file)
@@ -17,8 +17,8 @@ openstack:
   connection:
     # Note - when http_proxy is set, you must also configure ssh for proxy tunneling on your host.
     username: admin
-    password: cable123
-    auth_url: http://10.197.103.50:5000/v2.0/
+    password: NotMyPass!
+    auth_url: http://10.10.10.50:5000/v2.0/
     project_name: admin
     http_proxy: localhost:3128
   images:
index ffcb05d..0ad471c 100644 (file)
@@ -17,8 +17,8 @@ openstack:
   connection:
     # Note - when http_proxy is set, you must also configure ssh for proxy tunneling on your host.
     username: admin
-    password: cable123
-    auth_url: http://10.197.103.50:5000/v2.0/
+    password: NotMyPass!
+    auth_url: http://10.10.10.50:5000/v2.0/
     project_name: admin
     http_proxy: localhost:3128
   images: