Skip to content

Commit

Permalink
Merge branch 'release-0.4'
Browse files Browse the repository at this point in the history
  • Loading branch information
William Lam committed May 11, 2020
2 parents 8999291 + 70d47df commit 1922130
Show file tree
Hide file tree
Showing 325 changed files with 17,045 additions and 518 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/create-docker-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Build and push VMware Event Router to Docker Hub

on:
release:
types:
- published

jobs:
build-push:
runs-on: ubuntu-latest
steps:
- name: checkout source (master branch)
uses: actions/checkout@master
with:
ref: 'master'
- name: log in to Docker
env:
DOCKER_USER: ${{ secrets.DOCKER_USER }}
DOCKER_SECRET: ${{ secrets.DOCKER_SECRET }}
run: echo "${DOCKER_SECRET}" | docker login -u "${DOCKER_USER}" --password-stdin
- name: test, build, tag and push image
run: cd vmware-event-router && make release
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@ dist/
username
password
secret*.json
.jekyll-metadata
.sass-cache
.jekyll-cache
_site
Gemfile.lock
.tweet-cache
23 changes: 0 additions & 23 deletions CONTRIBUTING.md

This file was deleted.

64 changes: 38 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,50 @@
# vCenter Event Broker Appliance
# VMware Event Broker Appliance

[![Photon OS 3.0](https://img.shields.io/badge/Photon%20OS-3.0-orange)](https://vmware.github.io/photon/)
[![Published VMware Fling](https://img.shields.io/badge/VMware-Fling-green)](https://flings.vmware.com/vcenter-event-broker-appliance)
![Website](https://img.shields.io/website?label=vmweventbroker.io&url=https%3A%2F%2Fvmweventbroker.io%2F)
[![Twitter Follow](https://img.shields.io/twitter/follow/lamw?style=social)](https://twitter.com/lamw)
[![Twitter Follow](https://img.shields.io/twitter/follow/embano1?style=social)](https://twitter.com/embano1)


<img src="logo/veba_otto_the_orca_320x320.png" align="right" height="320px"/>

## Table of Contents

- [vCenter Event Broker Appliance](#vcenter-event-broker-appliance)
- [Table of Contents](#table-of-contents)
- [Description](#description)
- [Users and Use Cases](#users-and-use-cases)
- [VMware Event Broker Appliance](#vcenter-event-broker-appliance)
- [Getting Started](#getting-started)
- [Overview](#overview)
- [Architecture](#architecture)
- [Join Conversation](#join-conversation)
- [Getting in touch](#getting-in-touch)
- [Contributing](#contributing)
- [License](#license)


## Description
## Getting Started

The [vCenter Event Broker Appliance Fling](https://flings.vmware.com/vcenter-event-broker-appliance#summary) enables customers to easily create [event-driven automation based on vCenter Server Events](https://octo.vmware.com/vsphere-power-event-driven-automation/). For example, vCenter Event Broker Appliance can drive basic workflows like automatically attaching a vSphere tag when a virtual machine (VM) is created. Even more powerful integrations between datacenter-internal enterprise services and cloud services, for example Slack and Pager Duty, can be created with vCenter Event Broker Appliance out of the box.
Visit our website [vmweventbroker.io](https://vmweventbroker.io/) and explore our [documentation](https://vmweventbroker.io/kb) to get started quickly.

vCenter Event Broker Appliance is provided as a Virtual Appliance that can be deployed to any vSphere-based infrastructure, including an on-premises and/or any public cloud environment, running on vSphere such as VMware Cloud on AWS or VMware Cloud on Dell-EMC.
## Overview

With this appliance, end-users, partners and independent software vendors only have to write minimal business logic without going through a steep learning curve understanding vSphere APIs. As such, we believe this solution not only offers a better user experience in solving existing problems for vSphere operators. More importantly, it will enable new integration use cases and workflows to grow the vSphere ecosystem and community, similar to what AWS has achieved with AWS Lambda.
The [VMware Event Broker Appliance](https://flings.vmware.com/vcenter-event-broker-appliance#summary) Fling enables customers to unlock the hidden potential of events in their SDDC to easily create [event-driven automation](https://octo.vmware.com/vsphere-power-event-driven-automation/) and take vCenter Server Events to the next level! Extending vSphere by easily triggering custom or prebuilt actions to deliver powerful integrations within your datacenter across public cloud has never been more easier before. A detailed list of use cases and possibilities with VMware Event Broker Appliance is available [here](https://vmweventbroker.io)

To learn more about the vCenter Event Broker Appliance, [Michael Gasch](https://github.com/embano1) and [William Lam](https://github.com/lamw/) of VMware recently presented a session at VMworld called ["If This Then That" for vSphere- The Power of Event-Driven Automation](https://videos.vmworld.com/global/2019/videoplayer/29523) (free VMworld account login is required to view).
With this appliance, end-users, partners and independent software vendors only have to write minimal business logic without going through a steep learning curve understanding vSphere APIs. As such, we believe this solution not only offers a better user experience in solving existing problems for vSphere operators. More importantly, it will enable new integration use cases and workflows to grow the vSphere ecosystem and community, similar to what AWS has achieved with AWS Lambda.

## Users and Use Cases
Learn more about the VMware Event Broker Appliance [here](https://vmweventbroker.io).

Hear from the community on how they are taking advantage of the vCenter Server Appliance [here](users-and-use-cases.md)
Additional resources can be found [here](https://vmweventbroker.io) and some quick references are highlighted below
- Watch [Michael Gasch](https://github.com/embano1) and [William Lam](https://github.com/lamw/) of VMware present a session at VMworld 2019 called ["If This Then That" for vSphere- The Power of Event-Driven Automation](https://videos.vmworld.com/global/2019/videoplayer/29523) (free VMworld account login is required to view).
- Watch [Partheeban Kandasamy (PK)](https://github.com/embano1), [Michael Gasch](https://github.com/embano1) and [William Lam](https://github.com/lamw/) present about [Unlocking the potential of Events for SDDC automation](https://youtu.be/tOjp5_qn-Fg)

## Getting Started
<!-- ## Users and Use Cases
Please refer to the getting started guide [here](getting-started.md)
Hear from the community on how they are taking advantage of the vCenter Server Appliance [here](https://vmweventbroker.io/casestudy-wip.md) -->

## Architecture

The vCenter Event Broker Appliance follows a highly modular approach, using Kubernetes and containers as an abstraction layer between the base operating system ([Photon OS](https://github.com/vmware/photon)) and the required application services. Currently the following components are used in the appliance:
VMware Event Broker Appliance is provided as a Virtual Appliance that can be deployed to any vSphere-based infrastructure, including an on-premises and/or any public cloud environment, running on vSphere such as VMware Cloud on AWS or VMware Cloud on Dell-EMC.

The VMware Event Broker Appliance follows a highly modular approach, using Kubernetes and containers as an abstraction layer between the base operating system ([Photon OS](https://github.com/vmware/photon)) and the required application services. Currently the following components are used in the appliance:

- VMware Event Router ([Github](https://github.com/vmware-samples/vcenter-event-broker-appliance/vmware-event-router))
- Supported Event Stream Sources:
Expand All @@ -45,24 +56,25 @@ The vCenter Event Broker Appliance follows a highly modular approach, using Kube
- Kubernetes ([Github](https://github.com/kubernetes/kubernetes))
- Photon OS ([Github](https://github.com/vmware/photon))

<center><div style="height:250px;width:250px"><img src="veba-appliance-diagram.png" /></div></center>
<center><div style="height:250px;"><img src="docs/kb/img/veba-architecture.png"/></div></center>

For more details about the individual components and how they are used in the vCenter Event Broker Appliance, please see the [design page](DESIGN.md).
For more details about the individual components and how they are used in the VMware Event Broker Appliance, please see the [Architecture page](https://vmweventbroker.io/kb/architecture).

## Join Conversation
## Getting in touch

We are also on Slack if you would to engage with us and the community. You can find us on [#vcenter-event-broker-appliance](https://vmwarecode.slack.com/archives/CQLT9B5AA) which is part of the [VMware {Code}](https://code.vmware.com/web/code/join) Slack instance.
Feel free to reach out to [Team #VEBA](https://vmweventbroker.io/#team-veba) and the community
- Email us at [[email protected]](mailto:[email protected])
- Join our users on slack [#vcenter-event-broker-appliance](https://vmwarecode.slack.com/archives/CQLT9B5AA) which is part of the [VMware {Code}](https://code.vmware.com/web/code/join) Slack instance
- Follow for updates [@VMWEventBroker](https://twitter.com/VMWEventBroker)

## Contributing

The vCenter Event Broker Appliance team welcomes contributions from the community.

Before you start working with the vCenter Event Broker Appliance, please read our [Developer Certificate of Origin](https://cla.vmware.com/dco). All contributions to this repository must be signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on as an open-source patch.
The VMware Event Broker Appliance team welcomes contributions from the community.

To help you get started making contributions to vCenter Event Broker Appliance, we have collected some helpful best practices in the [Contributing guidelines](CONTRIBUTING.md).
To help you get started making contributions to VMware Event Broker Appliance, we have collected some helpful best practices in the [Contributing guidelines](https://vmweventbroker.io/community#guidelines).

For folks interested in contributing or enhancing vCenter Event Broker Appliance, you can build the vCenter Event Broker Appliance from source. Please refer to the getting started build guide [here](getting-started-build.md).
Before submitting a pull request, please make sure that your change satisfies the requirements specified [here](https://vmweventbroker.io/community#pull-requests)

## License

vCenter Event Broker Appliance is available under the BSD-2 license. Please see [LICENSE.txt](LICENSE.txt).
VMware Event Broker Appliance is available under the BSD-2 license. Please see [LICENSE.txt](LICENSE.txt).
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v0.3.0
v0.4.0
30 changes: 22 additions & 8 deletions build.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
#!/bin/bash -x
#!/bin/bash
# Copyright 2019 VMware, Inc. All rights reserved.
# SPDX-License-Identifier: BSD-2

echo "Building OVA ..."
set -euo pipefail


if [ $# -ne 1 ]; then
echo -e "\n\tUsage: $0 [master|release]\n"
exit 1
fi

if [[ ! -z $(git status -s) ]]; then
echo "Dirty Git repository, please clean up any untracked files or commit them before building"
exit
fi

rm -f output-vmware-iso/*.ova

if [[ "$1" -gt "-1" ]] && [[ $1 == "dev" ]]; then
echo "Applying packer build to photon-dev.json ..."
packer build -var-file=photon-builder.json -var-file=photon-version.json photon-dev.json
if [ "$1" == "release" ]; then
echo "Building VEBA OVA release ..."
packer build -var "VEBA_VERSION=$(cat VERSION)-release" -var "VEBA_COMMIT=$(git rev-parse --short HEAD)" -var-file=photon-builder.json -var-file=photon-version.json photon.json
elif [ "$1" == "master" ]; then
echo "Building VEBA OVA master ..."
packer build -var "VEBA_VERSION=$(cat VERSION)" -var "VEBA_COMMIT=$(git rev-parse --short HEAD)" -var-file=photon-builder.json -var-file=photon-version.json photon.json
else
echo "Applying packer build to photon.json ..."
packer build -var-file=photon-builder.json -var-file=photon-version.json photon.json
fi
echo -e "\nPlease specify release or master to build ...\n"
fi
1 change: 1 addition & 0 deletions docs/CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
vmweventbroker.io
16 changes: 16 additions & 0 deletions docs/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# frozen_string_literal: true

source "https://rubygems.org"

gem 'jekyll', '~> 3.8.6'
gem 'jekyll-feed', '~> 0.13.0'
gem 'jekyll-optional-front-matter', '~> 0.3.2'
gem 'jekyll-paginate', '~> 1.1'
gem 'jekyll-readme-index', '~> 0.3.0'
gem 'jekyll-redirect-from', '~> 0.15.0'
gem 'jekyll-relative-links', '~> 0.6.1'
gem 'jekyll-sitemap', '~> 1.4'
gem 'jekyll-titles-from-headings', '~> 0.5.3'
gem 'jekyll-seo-tag', '~> 2.6', '>= 2.6.1'
gem 'redcarpet', '~> 3.5'
gem "jekyll-github-metadata", '~> 2.13.0'
99 changes: 99 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
![Website](https://img.shields.io/website?label=vmweventbroker.io&url=https%3A%2F%2Fvmweventbroker.io%2F)

# Readme for the Website

## Structure

The website is hosted using [Github Pages](https://help.github.com/en/github/working-with-github-pages/about-github-pages) and built using [Jekyll](https://jekyllrb.com/). The files that make up the website are contained within the `docs` folder (as Github Pages requires) within the master branch. You'll find more details about how they are organized and their purpose below.

```
.
├── site > Contains MD files that need to go under the base website
│   └── **.md
├── kb > Contains MD files for the documentation section of the website
│ ├── img
│ │ └── **.png > images required for documentation
│   └── **.md > All the MDs that make up the documentation
├── assets > Contains JS, CSS, IMGs for the site
│   ├── js
│   ├── img
│   └── css
├── index.html > Website Landing page
├── README.md *** You are here
├── _config.yml > Site wide configuration and variables
└── Gemfile > Plugins required for the website to be built by Jekyll
```

In order for Jekyll to process the MD files and render them as html, you'll need to add the below to the beginning of the each MD file.

```yaml
---
layout: resources # choose between default, docs, page or resources
title: Additional Resources # provide the title for the web page
description: Update this # this shows up in the Website description
permalink: /resources # this is the short link for the page, if empty the relative path of the md file is used
#other yaml data that can be referenced within the page
---
```

### Other Key Files and Folders
- **_data/default.yml:** YAML content that drives the side-nav bar for the documentation
- **_data/resources.yml:** YAML content for the videos, links and external references contained in the resources page
- **_data/team.yml:** YAML data of the core team for the landing page
- **_functions:** folder that contains all the featured functions showcased on the landing page
- **_usecases:** folder that contains all the use cases showcased on the landing page
- **_includes** all the reusable html components referenced with the layouts
- **_layouts:** all the various layouts available to be used within the site
- **docs** - use this for layout for the docs
- **page** - use this for the pages that needs to go on the base site
- **resources** - specifically designed for the resources page


## Build and Run the website locally
To ensure the changes to any file or folder that power the website is valid, please setup this step below that allows you to build the website, verify changes locally before you push to the repo.

### Dependencies for MacOS

Install the following for an easy to use dev environment:

```bash
brew install rbenv
rbenv install 2.6.3
gem install bundler
```

### Dependencies for Linux
If you are running a build on Ubuntu you will need the following packages:
* ruby
* ruby-dev
* ruby-bundler
* build-essential
* zlib1g-dev
* nginx (or apache2)

### Dependencies for Windows
If you are on Windows, all hope is not lost. Follow the steps here to install the dependencies - https://jekyllrb.com/docs/installation/windows/

### Local Development
* Install Jekyll and plug-ins in one fell swoop. `gem install github-pages`
This mirrors the plug-ins used by GitHub Pages on your local machine including Jekyll, Sass, etc.
* Clone down your own fork, or clone the main repo and add your own remote.

```bash
git clone [email protected]:vmware-samples/vcenter-event-broker-appliance.git
cd vcenter-event-broker-appliance/docs
bundle install
```

* Serve the site and watch for markup/sass changes `jekyll serve --livereload --incremental`. You may need to run `bundle exec jekyll serve --livereload --incremental`.
* View your website at http://127.0.0.1:4000/
* Commit any changes and push everything to your fork.
* Once you're ready, submit a PR of your changes.

## Troubleshooting
* If you don't see your updates reflected on the website when running locally, try the following steps

```zsh
bundle exec jekyll clean
bundle exec jekyll serve --incremental --livereload
```
Loading

0 comments on commit 1922130

Please sign in to comment.