Skip to content
Python Makefile
Branch: master
Clone or download
brianhlee Up azure dependencies (#144)
* Update requirements.txt

* Update requirements.txt
Latest commit d3b9eb9 Sep 30, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Merge branch 'gh-pages' into master Sep 16, 2019
examples
pcf 0.4.5 (#142) Sep 16, 2019
.coveragerc 0.4.0 (#60) Mar 8, 2019
.editorconfig initial pcf push Nov 7, 2018
.gitignore Merge branch 'gh-pages' into master Sep 16, 2019
.nojekyll initial pcf push Nov 7, 2018
.pylintrc initial pcf push Nov 7, 2018
.travis.yml Develop (#119) May 28, 2019
LICENSE Initial commit Oct 23, 2018
Makefile Develop (#119) May 28, 2019
README.md Update link to Capital One code of conduct (#137) Aug 26, 2019
STYLEGUIDE.md 0.4.0 (#60) Mar 8, 2019
__init__.py --- Nov 30, 2018
pytest.ini
requirements-dev.txt
requirements.txt
setup.py
tasks.py Develop (#119) May 28, 2019

README.md

Build Status Build Status Licence PyPi Version Supported Python Versions

Particle Cloud Framework

Particle Cloud Framework is a cloud resource provisioning framework that is fully customizable and extensible, callable by code, and does not require manually maintaining states of resources. Particle Cloud Framework enables the standardization of modeling hierarchical cloud infrastructure, automating deployments, and managing lifecycles of cloud resources.

Docs

Docs including quickstart and developer guide

Installation

To install particle cloud framework, open an interactive shell and run:

pip install pcf

Import and use a PCF Particle

First import the particles you will use. These can be core particles or custom particles that you created. See examples if you need help creating your config.

from pcf.core.ec2.ec2_instance import EC2Instance

Next we need to pass the desired state definition to the particle.

    ec2_example_definition = {
        "pcf_name": "ec2_example",
        "flavor":"ec2",
        "aws_resource": {
            "ImageId": "ami-xxxxx",
            "InstanceType": "t2.micro",
            "KeyName": "secret-key-xxx",
            "SecurityGroupIds": [
              "sg-xxxxxx",
            ],
            "SubnetId": "subnet-xxx",
            "userdata_template_file": "userdata-script-xxxxx.sh",
            "userdata_params": {},
            "IamInstanceProfile": {
              "Arn": "arn:aws:iam::xxxxxxxxx"
            },
            "InstanceInitiatedShutdownBehavior": "stop",
            "tags": {
              "NAME":"Value"
            },
            "BlockDeviceMappings": [
              {
                "DeviceName": "/dev/sda1",
                "Ebs": {
                  "DeleteOnTermination": true,
                  "VolumeSize": 20,
                  "VolumeType": "gp2"
                }
              }
            ]
          }
    }

Now to start the ec2 instance using pcf simply initialize the particle and set the desired state to running and apply.

    particle = EC2Instance(ec2_example_definition)

    particle.set_desired_state('running')
    particle.apply()

To terminate simply change the desired state to terminated and apply.

    particle.set_desired_state('terminated')
    particle.apply()

Published Content

Just in Time Cloud Infrastructure: Redefining the Relationship Between Applications and Cloud Infrastructure

Supported Cloud Services

Particles

Quasiparticles

Development Setup

To develop locally, clone this project and ensure you have the Invoke package installed globally via pip or conda:

$ pip install invoke

or

$ conda install invoke

Then you can use the project management tasks defined in tasks.py via the invoke CLI:

$ invoke --list
Available tasks:

  build      Build PCF with the PCF_TAG value given or the VERSION in pcf/__init__.py
  docs-add   Run sphinx-apidoc on pcf and pcf/test
  lint       Run pylint on pcf directory
  publish    Publish package to Pypi
  setup      Setup a virtualenv, activate it, and install requirements
  test       Run pytest on pcf directory, generating a coverage report

$ invoke setup && source venv/bin/activate
$ invoke test

RoadMap

Roadmap

Contributors

We welcome Your interest in Capital One’s Open Source Projects (the “Project”). Any Contributor to the Project must accept and sign an Agreement indicating agreement to the license terms below. Except for the license granted in this Agreement to Capital One and to recipients of software distributed by Capital One, You reserve all right, title, and interest in and to Your Contributions; this Agreement does not impact Your rights to use Your own Contributions for any other purpose.

Sign the Individual Agreement

Sign the Corporate Agreement

Code of Conduct

This project adheres to the Open Code of Conduct By participating, you are expected to honor this code.

You can’t perform that action at this time.