Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/wiki #18

Merged
merged 7 commits into from
Mar 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions .github/workflows/wiki.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
# File: .github/workflows/wiki.yml

on:
release:
types:
- "published"
workflow_dispatch:

name: Publish Wiki

permissions:
contents: write
pull-requests: write

jobs:
build-publish-wiki:
runs-on: ubuntu-22.04
Expand All @@ -17,24 +24,37 @@ jobs:
- name: Checkout Wiki
uses: actions/checkout@v3
with:
repository: cloudyspells/PSWattTime.wiki
repository: ${{github.repository}}.wiki
path: wiki

- name: Copy README.md as quickstart.md
- name: Copy wiki base sources
shell: bash
run: |
cp ./main/README.md ./wiki/quickstart.md
cp ./main/docs/wiki-src/*.md ./wiki/

- name: Login to Az PowerShell Module
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
enable-AzPSSession: true

- name: Generate Module docs
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module Az.Resources
Install-Module PlatyPS
Import-Module PlatyPS
Import-Module ./main/src/PSWattTime
New-MarkdownHelp -Module PSWattTime -Force -OutputFolder ./wiki/
New-MarkdownHelp -Module PSWattTime `
-Verbose `
-Force `
-NoMetadata `
-OutputFolder ./wiki/

- name: Commit and push changes to wiki
shell: bash
working-directory: ./wiki
run: |
git config user.name github-actions
git config user.email [email protected]
Expand Down
7 changes: 0 additions & 7 deletions docs/ConvertFrom-AzureRegion.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
---
external help file: PSWattTime-help.xml
Module Name: PSWattTime
online version: https://github.com/cloudyspells/PSWattTime/blob/main/docs/ConvertFrom-AzureRegion.md
schema: 2.0.0
---

# ConvertFrom-AzureRegion

## SYNOPSIS
Expand Down
7 changes: 0 additions & 7 deletions docs/Get-AzureRegionWithLowestWattTime.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
---
external help file: PSWattTime-help.xml
Module Name: PSWattTime
online version: https://github.com/cloudyspells/PSWattTime/blob/main/docs/Get-AzureRegionWithLowestWattTime.md
schema: 2.0.0
---

# Get-AzureRegionWithLowestWattTime

## SYNOPSIS
Expand Down
7 changes: 0 additions & 7 deletions docs/Get-WattTime.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
---
external help file: PSWattTime-help.xml
Module Name: PSWattTime
online version: https://github.com/cloudyspells/PSWattTime/blob/main/docs/Get-WattTime.md
schema: 2.0.0
---

# Get-WattTime

## SYNOPSIS
Expand Down
7 changes: 0 additions & 7 deletions docs/Get-WattTimeAuthToken.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
---
external help file: PSWattTime-help.xml
Module Name: PSWattTime
online version: https://github.com/cloudyspells/PSWattTime/blob/main/docs/Get-WattTimeAuthToken.md
schema: 2.0.0
---

# Get-WattTimeAuthToken

## SYNOPSIS
Expand Down
7 changes: 0 additions & 7 deletions docs/Get-WattTimeForAzureRegion.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
---
external help file: PSWattTime-help.xml
Module Name: PSWattTime
online version: https://github.com/cloudyspells/PSWattTime/blob/main/docs/Get-WattTimeForAzureRegion.md
schema: 2.0.0
---

# Get-WattTimeForAzureRegion

## SYNOPSIS
Expand Down
7 changes: 0 additions & 7 deletions docs/New-WattTimeAccount.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
---
external help file: PSWattTime-help.xml
Module Name: PSWattTime
online version: https://github.com/cloudyspells/PSWattTime/blob/main/docs/New-WattTimeAccount.md
schema: 2.0.0
---

# New-WattTimeAccount

## SYNOPSIS
Expand Down
30 changes: 30 additions & 0 deletions docs/wiki-src/Home.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
PSWattTime Wiki
===============

PowerShell module for [WattTime.org](https://www.watttime.org/) API
-------------------------------------------------------------------

[![PowerShell Module Quality Assurance](https://github.com/cloudyspells/PSWattTime/actions/workflows/qa.yml/badge.svg)](https://github.com/cloudyspells/PSWattTime/actions/workflows/qa.yml)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/cloudyspells/PSWattTime)
![PowerShell Gallery Version](https://img.shields.io/powershellgallery/v/PSWattTime)
![PowerShell Gallery](https://img.shields.io/powershellgallery/dt/PSWattTime)


This PowerShell module is intended for retrieving emissions data from
[WattTime](https://www.watttime.org/) for a supplied Azure Region during
resource deployments. This is a lightweight solution making use of only the
limited functionality available with a free account at _WattTime_. This means
the module is only able to get near-realtime emissions data and no prodictive
values. This means this module is _not_ a real solution for reduced carbon
deployments and -software. It _does_ however provide some nice realtime values
so you can simulate the beheaviour of deployments and software based on
emissions data without the cost of a paid account for such data. For example in
lab- or proof of concept environments.

The intended use of this module is for setting the `Location` parameter
on Azure IaC deployments in GitHub workflows using the included GitHub
action.

For a real-world solution with a commercial data provider, check out
the [carbon-aware-sdk](https://github.com/Green-Software-Foundation/carbon-aware-sdk)
by the [Green Software Foundation](https://greensoftware.foundation/)
52 changes: 52 additions & 0 deletions docs/wiki-src/quickstart-github-action.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
Getting started with PSWattTime
===============================

Steps for using the GitHub Action
---------------------------------

This PowerShell module also comes with a _GitHub Action_ you can use
in your GitHub workflows. Again you will need a pre-existing account
for _WattTime_ and an Azure CLI/PowerShell secret configured in your repo

### Example

```yaml

on:
pull_request:
branches:
- 'main'
- 'releases/**'

name: Deploy to region with lowest emissions

jobs:
deploy-to-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Get region with lowest emissions
uses: cloudyspells/[email protected]
id: watttime_action # Set step id for using output in deployment
with:
azure_credential: ${{ secrets.AZURE_CREDENTIALS }}
watttime_username: ${{ secrets.WATTTIMEUSERNAME }}
watttime_password: ${{ secrets.WATTTIMEPASSWORD }}
regions: '"westeurope","northeurope","uksouth","francecentral","germanynorth"'

- name: Login to Az PowerShell Module
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
enable-AzPSSession: true

- uses: azure/arm-deploy@v1
name: Run Bicep deployment
with:
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
scope: subscription
region: ${{ steps.watttime_action.outputs.region }} # The region output from PSWattTime
template: src/bicep/main.bicep
```
75 changes: 75 additions & 0 deletions docs/wiki-src/quickstart-powershell.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
Getting started with PSWattTime
===============================

Steps for using the module in PowerShell
----------------------------------------

To get started with this module you will need an account on
[WattTime](https://www.watttime.org/). See
[the manual](https://www.watttime.org/api-documentation/#register-new-user)
on registering an account. The module provides a function `New-WattTimeAccount`
to create an account if you do not yet have one.

You will also need the _Az.Resources_ PowerShell Module for Azure installed
and connected to your Azure account. See
[the installation manual](https://learn.microsoft.com/en-us/powershell/azure/install-az-ps)
for the _Az_ module for instructions.

To install the module from the [PowerShell Gallery](https://www.powershellgallery.com/packages/PSWattTime/).

```powershell
Install-Module -Name PSWattTime
```

To register an account with _WattTime_:

```powershell
New-WattTimeAccount -Username <YOUR_USERNAME> `
-Password '<YOUR_PASSWORD>' `
-Email '<[email protected]>' `
-Organization <YOUR_ORGANIZATION>
```


Authenticate to the _WattTime_ API:

```powershell
$token = Get-WattTimeAuthToken -Username '<YOUR_WATTTIME_USERNAME>' `
-Password '<YOUR_WATTTIME_PASSWORD>'
```

Get current percentage of energy with emissions the 'westeurope' Azure region:

```powershell
PS C:\> Get-WattTimeForAzureRegion -Region westeurope -AuthToken $token

ba : NL
freq : 300
percent : 94
point_time : 5-3-2023 13:15:00
region : westeurope

```

Determine the lowest emissions for the list of northeurope,
westeurope, francecentral and uksouth Azure regions:

```powershell
PS C:\> Get-AzureRegionWithLowestWattTime -Regions westeurope,uksouth,northeurope,francecentral -AuthToken $token

ba : IE
freq : 300
percent : 69
point_time : 5-3-2023 14:15:00
region : northeurope

```

### Module Functions

- [ConvertFrom-AzureRegion](docs/ConvertFrom-AzureRegion.md)
- [Get-AzureRegionWithLowestWattTime](docs/Get-AzureRegionWithLowestWattTime.md)
- [Get-WattTime](docs/Get-WattTime.md)
- [Get-WattTimeAuthToken](docs/Get-WattTimeAuthToken.md)
- [Get-WattTimeForAzureRegion](docs/Get-WattTimeForAzureRegion.md)
- [New-WattTimeAccount](docs/New-WattTimeAccount.md)