Skip to content

Commit

Permalink
Publication release of v0.5 (#451)
Browse files Browse the repository at this point in the history
Publication release of v0.5 to main after steering committee approval

---------

Signed-off-by: Mike Fuller <[email protected]>
Co-authored-by: Udam Dewaraja <[email protected]>
Co-authored-by: Joshua Kwan <[email protected]>
Co-authored-by: Irena Jurica <[email protected]>
Co-authored-by: Michael Flanakin <[email protected]>
Co-authored-by: MichaelArkoosh-vega <[email protected]>
Co-authored-by: Amit Wadhwa <[email protected]>
Co-authored-by: Amit Wadhwa <[email protected]>
Co-authored-by: John Grubb <[email protected]>
Co-authored-by: chandra-cloudtrakr <[email protected]>
Co-authored-by: Sanjna Srivatsa <[email protected]>
Co-authored-by: Eleni Rundle <[email protected]>
Co-authored-by: SanjnaSrivatsaVMware <[email protected]>
Co-authored-by: Rodney <[email protected]>
Co-authored-by: Ray Ding <[email protected]>
Co-authored-by: rileyjenk <[email protected]>
Co-authored-by: kk09v <[email protected]>
  • Loading branch information
17 people authored May 9, 2024
1 parent 36beea8 commit 928d3a8
Show file tree
Hide file tree
Showing 109 changed files with 4,009 additions and 28 deletions.
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @FinOps-Open-Cost-and-Usage-Spec/maintainer
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/discussion-topic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Discussion Topic
about: Discussion topics that require broader input from FOCUS members
title: Title of the discussion topic OR open question needing member feedback
labels: discussion topic
assignees: ''

---

### Description
> Describe the discussion topic and/or open topic is. Describe discussion that has taken place and where community feedback is needed. Provide specifics (specially if there are multiple possible options).
### Proposed approach
> Describe the approach that your group is proposing
### Github issue or Reference
> If the topic is related to a particular work item, reference the Github issue. If its a specification-wide topic, indicate that.
### Context
> Add any context that may help the community think through this and provide useful feedback
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/maintenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: Maintenance Task
about: Tasks that relate to work on the GitHub Repository or GitHub Actions
title: Repository maintenance task
labels: repo maintenance
assignees: ''

---

### Description
> Description of the issue
### Definition of done
> Description of the outcome(s) of the maintenance
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/proposal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: Proposal
about: Community proposal to add / enhance the specification
title: "[Proposal] Title for proposal"
labels: proposal
assignees: ''

---

### Type
> Type of issue (e.g. Dimension, Metric, Attribute, Documentation etc.)
### Proposed Change
> Description of the issue
### Context / Supporting information
>Description of the issue
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/spec-change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: Spec Change
about: Spec change issue
title: Spec Change title
labels: spec change
assignees: ''

---

### Type
> Type of issue (e.g. Dimension, Metric, Attribute, Documentation etc.)
Normalized? Yes | No


### Description
> Description of the issue
### Definition of done

- [ ] Rationalize vendor-neutral, cross-cloud naming
- [ ] Complete spec template and include naming (code name, display name), constraints, guidelines, compatibility with major providers etc.
** If Normalized Dimension **
- [ ] Include principles and governance criteria for maintaining this dimension

** If Normalized Dimension **
Work for generating the normalized list of supported values is tracked in a separate issue. Mappings between normalized values and vendor specified values need to be explored as a part of this work. However, these mappings are not included in the spec documentation. Separate tasks will be created for making these mappings available to practitioners outside of the FOCUS repository.
37 changes: 37 additions & 0 deletions .github/workflows/candidate_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: generate_candidate_release_spec
on:
push:
branches:
- "candidate_release"

jobs:
# The job that will use the container image you just pushed to ghcr.io
gen_pdf:
runs-on: ubuntu-20.04
container:
image: pandoc/extra:latest-ubuntu
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Install prequirements
shell: bash
run: |
/usr/bin/apt-get -y update
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
DEBIAN_FRONTEND=noninteractive /usr/bin/apt install -y make
DEBIAN_FRONTEND=noninteractive /usr/bin/apt install -y -f ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb
/usr/bin/pip3 install --break-system-packages -r requirements.txt
- name: Build PDF
shell: bash
working-directory: ./specification
run: |
make STYLE=candidate_release
- name: Upload Spec
uses: actions/[email protected]
with:
name: FOCUS_specification
path: |
specification/spec.html
specification/spec.pdf
specification/images/*
specification/styles/*
55 changes: 32 additions & 23 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,37 @@
name: generate_spec_pdf
name: generate_publication_spec
on:
push:
branches:
- working_draft
- "main"

jobs:
# The job that will use the container image you just pushed to ghcr.io
gen_pdf:
runs-on: ubuntu-20.04
container:
image: pandoc/extra:latest-ubuntu
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Build PDF
shell: sh
run: |
DEBIAN_FRONTEND=noninteractive apt-get install -y wkhtmltopdf
cd specification
pandoc *.md -o spec.pdf -f gfm --variable mainfont="DejaVu Sans" --metadata title="FOCUS Specification Draft" --pdf-engine=wkhtmltopdf
- name: Upload a Build Artifact
uses: actions/[email protected]
with:
# Artifact name
name: FOCUS_specification
# A file, directory or wildcard pattern that describes what to upload
path: specification/spec.pdf
# The job that will use the container image you just pushed to ghcr.io
gen_pdf:
runs-on: ubuntu-20.04
container:
image: pandoc/extra:latest-ubuntu
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Install prequirements
shell: bash
run: |
/usr/bin/apt-get -y update
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
DEBIAN_FRONTEND=noninteractive /usr/bin/apt install -y make
DEBIAN_FRONTEND=noninteractive /usr/bin/apt install -y -f ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb
/usr/bin/pip3 install --break-system-packages -r requirements.txt
- name: Build PDF
shell: bash
working-directory: ./specification
run: |
make STYLE=main
- name: Upload Spec
uses: actions/[email protected]
with:
name: FOCUS_specification
path: |
specification/spec.html
specification/spec.pdf
specification/images/*
specification/styles/*
39 changes: 39 additions & 0 deletions .github/workflows/working_draft.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: generate_draft_spec
on:
push:
branches:
- "*"
- "!main"
- "!candidate_release"

jobs:
# The job that will use the container image you just pushed to ghcr.io
gen_pdf:
runs-on: ubuntu-20.04
container:
image: pandoc/extra:latest-ubuntu
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Install prequirements
shell: bash
run: |
/usr/bin/apt-get -y update
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
DEBIAN_FRONTEND=noninteractive /usr/bin/apt install -y make
DEBIAN_FRONTEND=noninteractive /usr/bin/apt install -y -f ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb
/usr/bin/pip3 install --break-system-packages -r requirements.txt
- name: Build PDF
shell: bash
working-directory: ./specification
run: |
make STYLE=working_draft
- name: Upload Spec
uses: actions/[email protected]
with:
name: FOCUS_specification
path: |
specification/spec.html
specification/spec.pdf
specification/images/*
specification/styles/*
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*.pdf
.DS_Store
spec.md
spec.html
*.pyc
specification/version.md
31 changes: 30 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# FinOps Open Cost and Usage Specification (FOCUS) - Specification Working Group


The Open Cloud Bill working group will develop a common, source-neutral schema of
billing, cost, usage, and observability data mapped to a variety of cloud service provider and SaaS product
sources, with metadata, dimensions, metrics, and measures for the source and common schema fields. As per the [Working Group Chater]() **Link TBC**
Expand Down Expand Up @@ -38,4 +37,34 @@ See the [project repository](https://github.com/FinOps-Open-Cost-and-Usage-Spec/

- [Change / contribution process](https://github.com/FinOps-Open-Cost-and-Usage-Spec/foundation/blob/main/contributing.md)

## FOCUS Specification Development Environment

Most people will not need any development environment, it is mostly needed by the FinOps Foundation staff members who maintain the FOCUS Repositories and associated document build pipelines. Currently, the only tested (supported) environment is a MacOS setup, however the build pipeline in GitHub uses Ubuntu so should be possible to run on a Linux environment.

### Setup Steps

1. Install homebrew (as per: https://brew.sh)
2. Setup cask

`brew install cask`
3. Install python

`brew install python`
4. Add packages for python

`pip3 install -r requirements.txt`
5. Install pandoc and required filter library

`brew install pandoc`

`brew install --cask wkhtmltopdf`
6. If your machine does not have git/make etc, you might fun the following: Install developer command line tools for MacOS

`xcode-select --install`

### Assembling the specification locally

1. Move into the `specification` folder
2. Use make to generate the spec `make`

[specification]: specification/specification-overview.md
75 changes: 75 additions & 0 deletions custom_linter_rules/rule_md_990.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"""
Module to implement a plugin that looks for smart characters in the files.
"""
from typing import cast

from pymarkdown.inline_markdown_token import TextMarkdownToken
from pymarkdown.markdown_token import MarkdownToken
from pymarkdown.parser_helper import ParserHelper
from pymarkdown.plugin_manager.plugin_details import PluginDetails
from pymarkdown.plugin_manager.plugin_scan_context import PluginScanContext
from pymarkdown.plugin_manager.rule_plugin import RulePlugin


class RuleMd990(RulePlugin):
"""
Class to implement a plugin that looks for smart characters in the files.
"""
__smart_char_items = [u"\u2013", u"\u201c", u"\u201d", u"\u2018", u"\u2019", u"\u2026"]

def __init__(self) -> None:
super().__init__()

def get_details(self) -> PluginDetails:
"""
Get the details for the plugin.
"""
return PluginDetails(
plugin_name="no-smart-characters",
plugin_id="MD990",
plugin_enabled_by_default=True,
plugin_description="Smart character found",
plugin_version="0.1.0",
plugin_interface_version=1,
plugin_url="",
)

def next_token(self, context: PluginScanContext, token: MarkdownToken) -> None:
"""
Event that a new token is being processed.
"""
if (
token.is_text
):
text_token = cast(TextMarkdownToken, token)
for smart_char_item in RuleMd990.__smart_char_items:
start_index = 0
found_index = text_token.token_text.find(smart_char_item, start_index)
while found_index != -1:
(
column_number_delta,
line_number_delta,
) = ParserHelper.adjust_for_newlines(text_token.token_text, 0, found_index)
self.report_next_token_error(
context,
token,
line_number_delta=line_number_delta,
column_number_delta=column_number_delta,
)
start_index = found_index + len(smart_char_item)
found_index = text_token.token_text.find(smart_char_item, start_index)


elif token.is_code_block:
self.__in_code_block = True
elif token.is_code_block_end:
self.__in_code_block = False
elif token.is_html_block:
self.__in_html_block = True
elif token.is_html_block_end:
self.__in_html_block = False
elif token.is_inline_link:
self.__in_link = True
elif token.is_inline_link_end:
self.__in_link = False

36 changes: 36 additions & 0 deletions ipr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# FOCUS Specification (Open Cloud Bill Specification) Working Group - IPR

## Licensing Commitments

Participants in this group have made certain licensing commitments by joining the group.

## Member Organizations

See: [Contributors List](https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec/blob/working_draft/specification/contributors.md)

## Specifications published by the Group

The following is the list of specifications produced by the Open Cloud Bill Specification Working Group that have associated disclosure obligations, and possible licensing obligations under the W3C Patent Policy.
| Document under the W3C Patent Policy | Patent Disclosure | Patent Exclusion |
|:-------------------------------------|:------------------|:-----------------|
| FOCUS Specification | [disclose](mailto:[email protected]) | [Exclude](mailto:[email protected]) |
## Patent Disclosures and Claim Exclusions

This section summarizes patent disclosures by participants in Open Cloud Bill Specification Working Group as required by the W3C Patent Policy.

### Known Disclosures

No patent disclosures have been made for any specifications of this group.

## How to Make a Patent Disclosure

### Disclosures

Disclosures from the general public should email [[email protected]](mailto:[email protected]).
FOCUS Members agree to develop under the W3C Patent Policy, all parties have committed to the W3C Royalty-Free Licensing Terms and are not required to disclose patents.

### Claim Exclusions

Only Open Cloud Bill Specification Working Group participants may exclude patent claims concerning specifications developed under the W3C Patent Policy. To make an exclusion, participants should email [[email protected]](mailto:[email protected]), but only after first disclosing the patent.
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
watchdog==3.0.0
pymarkdownlnt==0.9.12
Loading

0 comments on commit 928d3a8

Please sign in to comment.