Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Bug Reference

The Jira issue associated with this design specN/A

Branch

dockerfile

Introduction

Purpose

State the purpose of the document; something like: this is functional specificationS of feature "..." which has Jira ID CS-xyzw

References

Provide Docker images collection of Apache CloudStack modules thru automated build on docker hub. These containers will be usable for Continous Integration tests, demo, rapid deployment of CloudStack for test purposes.

References

Document History

Glossary

Feature Specifications

  • put a summary or a brief description of the feature in question 
  • list what is deliberately not supported or what the feature will not offer - to clear any prospective ambiguities
  • list all open items or unresolved issues the developer is unable to decide about without further discussion
  • quality risks (test guidelines)
    • functional
    • non functional: performance, scalability, stability, overload scenarios, etc
    • corner cases and boundary conditions
    • negative usage scenarios
  • specify supportability characteristics:
    • what new logging (or at least the important one) is introduced
    • how to debug and troubleshoot
    • what are the audit events 
    • list JMX interfaces
    • graceful failure and recovery scenarios
    • possible fallback or work around route if feature does not work as expected, if those workarounds do exist ofcourse.
    • if feature depends other run-time environment related requirements, provide sanity check list for support people to run
  • explain configuration characteristics:
    • configuration parameters or files introduced/changed
    • branding parameters or files introduced/changed
    • highlight parameters for performance tweaking
    • highlight how installation/upgrade scenarios change
  • deployment requirements (fresh install vs. upgrade) if any
  • system requirements: memory, CPU, desk space, etc
  • interoperability and compatibility requirements:
    • OS
    • xenserver, hypervisors
    • storage, networks, other
  • list localization and internationalization specifications 
  • explain the impact and possible upgrade/migration solution introduced by the feature 
  • explain performance & scalability implications when feature is used from small scale to large scale
  • explain security specifications
    • list your evaluation of possible security attacks against the feature and the answers in your design* *
  • explain marketing specifications
  • explain levels or types of users communities of this feature (e.g. admin, user, etc)

Use cases

  • Automated Build on Jenkins.buildacloud.org will push images on triggered events and publish containers on https://registry.hub.docker.com/repos/cloudstack/
  • Expected container list:

    container nametagJenkins jobinclude
    simulator (ubuntu)latest
    4.5
    4.6
    dockerbuild-master-simulator
    dockerbuild-4.5-simulator
    java
    managment-server (build via mvn)
    marvin
    maven
    MySQL server

    management_centos6

    management_centos7

    management_ubuntu1404

    latestdockerbuild-master-management_centos6java
    MySQL server
    management-server (from rpm/deb)
    marvinlatestdockerbuild-master-marvinPython 2.7
    marvin

    usage_centos6

    usage_centos7

    usage_ubuntu1404

     

    latest java
    usage-server (from rpm/deb)
    cloudmonkeylatest Python 2.7
    cloudmonkey
  • quality risks (test guidelines)
    • might not perfectly refect a production environment
    • cannot be use into a production environment as sshkeys are pregenerated.
    • negative usage scenarios: don't use in prod

Use cases

Docker container could be use as part of the CI to perform automated tests against automatically deployed cloud. Can be used for trial of CloudStack.put the relevant use case/stories to explain how the feature is going to be used/work

Architecture and Design description

  • discussion of alternatives amongst design ideas, their resources/time tradeoffs and limitations. Explain why a certain design idea is chosen over others
  • highlight architectural patterns being used (queues, async/sync, state machines, etc)
  • talk about main algorithms used
  • explain what components are being changed and what the dependent components are
  • regarding database: talk about tables being added/modified
  • performance implications: what are the improvements or risks introduced to capacity, response time, resources usage and other relevant KPIs
  • preferably show class diagrams, sequence diagrams and state diagrams
  • if possible, publish signatures of all methods classes and interfaces implement, and the explain the object information of different classes

Web Services APIs

list changes to existing web services APIs and new APIs introduced with signatures and throughout documentation

UI flow

  • either demonstrate it visually here or link to relevant mockups

IP Clearance

  • what dependencies will you be adding to the project?
  • are you expecting to include any code developed outside the Apache CloudStack project?

Usage Impact

  • Are there any entities being created that require usage reporting for billing purposes? 

  • Does this change any existing entities for which usage is being tracked already?

Appendix

Appendix A:

UserGuide


Self deployed cloud using XenServer


mount NFS share localy ex: /data/secondary

  1. Download images

    Code Block
    docker pull cloudstack/management_centos6
    docker pull cloudstack/marvin
  2. prepare Secondary Storage NFS share for the systemVM template

    The NFS server should not run on the management-server.

    Code Block
    mount <NFS IP>:/share/secondary /data/secondary
  3. Start CloudStack Management server

    Code Block
    docker run --name cloudstack -d -p 8080:8080 -v /data/secondary:/secondary cloudstack/management_centos6
  4. Download systemVM template of your choice:

    (This will take a moment...)

    Code Block
    docker exec -ti cloudstack /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
    -m /secondary \
    -u http://jenkins.buildacloud.org/job/build-systemvm64-master/lastSuccessfulBuild/artifact/tools/appliance/dist/systemvm64template-master-4.6.0-xen.vhd.bz2 \
    -h xenserver -F
  5. Create a cloud configuration file, this example use mytests/mycloud.cfg filename as example.

    refer to setup/dev example from cloudstack source.

    Make sure to use following statement (hypervisor can change) for the CloudStack endpoint:

    Code Block
    titleadvanced.cfg
    "mgtSvr": [
        {
          "mgtSvrIp": "cloudstack",
          "passwd": "password",
          "user": "root",
          "port": 8096,
          "hypervisor": "xenserver",
          "useHttps": "False",
          "certCAPath":  "NA",
          "certPath":  "NA"
        }
      ]
  6. Deploy your Cloud from a configuration file using Marvin:

    Code Block
    docker run -ti --name marvin --link cloudstack:8096 \
               -v /data/home/pldion/Documents/acs:/marvin/mytests \
               docker.io/cloudstack/marvin \
               python marvin/deployDataCenter.py \
               -i mytests/mycloud.cfg


    This will mount mytests/ into the container and execute marvin to deploy DataCenter using api port, cloudstack:8096.



 


 Appendix B: