diff --git a/.drone.yml b/.drone.yml index f72c699fa617023055df6c36e4da4e59a240f3ae..cb026daf7964f853b8436fc483df33f105824e42 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,20 +15,20 @@ steps: - PYTHONPATH=. trial test services: -- name: database - image: postgres:12-alpine - environment: - POSTGRES_USER: opennsa - POSTGRES_PASSWORD: w1gWIn7NDGXjXMguiI2Qe05X - POSTGRES_DB: opennsatest + - name: database + image: postgres:12-alpine + environment: + POSTGRES_USER: opennsa + POSTGRES_PASSWORD: w1gWIn7NDGXjXMguiI2Qe05X + POSTGRES_DB: opennsatest trigger: event: - push - pull_request ---- -kind: pipeline +--- +kind: pipeline name: docker steps: @@ -51,3 +51,50 @@ trigger: event: - tag - push + +--- +kind: pipeline +name: documentation + +steps: + - name: Submodule sync + image: alpine/git + commands: + - "git submodule update --init --recursive" + - name: build + image: plugins/hugo:latest + settings: + extended: true + commands: + - cd website + - "apk add --update nghttp2-dev nodejs nodejs-npm npm wget" + - npm install -D --save autoprefixer postcss-cli postcss + - wget "https://github.com/gohugoio/hugo/releases/download/v0.91.0/hugo_extended_0.91.0_Linux-64bit.tar.gz" + - tar xvfz hugo_extended_0.91.0_Linux-64bit.tar.gz + - npm install + - "./hugo version" + - "./hugo --destination public --baseURL https://NORDUnet.github.io/opennsa/" + - name: publish + image: plugins/gh-pages + settings: + pages_directory: website/public + upstream_name: origin + remote_url: https://github.com/NORDUnet/opennsa.git + target_branch: gh-pages + force_push: true + delete: true + username: + from_secret: gh_username + password: + from_secret: gh_password + when: + branch: + - master + event: push + +trigger: + branch: + - master + event: + - tag + - push diff --git a/.gitignore b/.gitignore index 39e1b731608569fcdc35400fccd8faca9e924a9a..e2cc2280499a7b78c5454cb8e04bbff9a6856d01 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ docker-compose.override.yml twistd.pid .env .DS_Store +node_modules +public +resources diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..4a9058b790fdf8020fecbfc83a9b9fa352fe5b8c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "website/themes/docsy"] + path = website/themes/docsy + url = https://github.com/google/docsy.git diff --git a/README.md b/README.md index 7d8fbe2ca0164f91c9c4ddbb39b5eea402449f53..5275f01b94fc44945801bafafaee0767d88c4ae2 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,10 @@ only partially implemented. * PostgreSQL for database * Includes command line tool for basic operations +#### Documentation + +Full and detailed documentation available [here](https://NORDUnet.github.io/opennsa/) + #### License diff --git a/config/opennsa.conf.template b/config/opennsa.conf.template index 865a04b649a7b9a48a224b743079332b4f59dbac..7b8c60f272454fe38fee6a8719fd4885f4bca3d8 100644 --- a/config/opennsa.conf.template +++ b/config/opennsa.conf.template @@ -1,7 +1,7 @@ # Sample docker configuration file [service] -domain=dockertest.net +domain=dockertest.net:2021 # log to stdout logfile= #peers=example.org@http://example.org:9080/NSI/topology/example.org.xml diff --git a/docs/ncs.md b/docs/ncs.md deleted file mode 100644 index e1272149b45ba267da0528f5e5b5f9e22961f8a5..0000000000000000000000000000000000000000 --- a/docs/ncs.md +++ /dev/null @@ -1,12 +0,0 @@ - -url is an http url with the path /api/running/services, i.e., - -http://NCSHOST:8080/api/running/services - - - - -the interface part should be of the format "router:interface" - - - diff --git a/docs/requirements-for-pip.txt b/docs/requirements-for-pip.txt deleted file mode 100644 index e8cb3d6ee4f1dde8e57741dde2d494818b82058c..0000000000000000000000000000000000000000 --- a/docs/requirements-for-pip.txt +++ /dev/null @@ -1,22 +0,0 @@ -backport-ipaddress==0.1 -cffi==1.1.2 -characteristic==14.3.0 -cryptography==0.9.3 -enum34==1.0.4 -idna==2.0 -ipaddress==1.0.14 -psycopg2==2.6.1 -pyasn==1.5.0b6 -pyasn1==0.1.8 -pyasn1-modules==0.0.7 -pycparser==2.14 -pycrypto==2.6.1 -pyOpenSSL>=17.5.0 -python-dateutil==1.5 -service-identity==14.0.0 -six==1.9.0 -twistar=>2.0 -Twisted=>19.7.0 -wheel==0.24.0 -zope.interface==4.1.2 - diff --git a/website/.nvmrc b/website/.nvmrc new file mode 100644 index 0000000000000000000000000000000000000000..b009dfb9d9f98f39d71d2a4ecc3110332b969fd3 --- /dev/null +++ b/website/.nvmrc @@ -0,0 +1 @@ +lts/* diff --git a/website/CONTRIBUTING.md b/website/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..db177d4ac70f76c2172ce65ca33c830d6cbd3ac5 --- /dev/null +++ b/website/CONTRIBUTING.md @@ -0,0 +1,28 @@ +# How to Contribute + +We'd love to accept your patches and contributions to this project. There are +just a few small guidelines you need to follow. + +## Contributor License Agreement + +Contributions to this project must be accompanied by a Contributor License +Agreement. You (or your employer) retain the copyright to your contribution; +this simply gives us permission to use and redistribute your contributions as +part of the project. Head over to <https://cla.developers.google.com/> to see +your current agreements on file or to sign a new one. + +You generally only need to submit a CLA once, so if you've already submitted one +(even if it was for a different project), you probably don't need to do it +again. + +## Code reviews + +All submissions, including submissions by project members, require review. We +use GitHub pull requests for this purpose. Consult +[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more +information on using pull requests. + +## Community Guidelines + +This project follows +[Google's Open Source Community Guidelines](https://opensource.google.com/conduct/). diff --git a/website/Dockerfile b/website/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f28f7b67f81abd31f086860782a57cfcf547c907 --- /dev/null +++ b/website/Dockerfile @@ -0,0 +1,3 @@ +FROM klakegg/hugo:ext-alpine + +RUN apk add git diff --git a/website/README.md b/website/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9ef23566d829b7d2fd031a882b51d673ac15c116 --- /dev/null +++ b/website/README.md @@ -0,0 +1,122 @@ +# Docsy Example + +[Docsy][] is a [Hugo theme][] for technical documentation sites, providing easy +site navigation, structure, and more. This **Docsy Example Project** uses the +Docsy theme and provides a skeleton documentation structure for you to use. You +can clone/copy this project and edit it with your own content, or use it as an +example. + +In this project, the Docsy theme is included as a Git submodule: + +```bash +$ git submodule +...<hash>... themes/docsy (remotes/origin/HEAD) +``` + +You can find detailed theme instructions in the [Docsy user guide][]. + +This Docsy Example Project is hosted on [Netlify][] at [example.docsy.dev][]. +You can view deploy logs from the [deploy section of the project's Netlify +dashboard][deploys], or this [alternate dashboard][]. + +This is not an officially supported Google product. This project is currently maintained. + +## Using the Docsy Example Project as a template + +A simple way to get started is to use this project as a template, which gives you a site project that is set up and ready to use. To do this: + +1. Click **Use this template**. + +2. Select a name for your new project and click **Create repository from template**. + +3. Make your own local working copy of your new repo using git clone, replacing https://github.com/my/example.git with your repo’s web URL: + +```bash +git clone --recurse-submodules --depth 1 https://github.com/my/example.git +``` + +You can now edit your own versions of the site’s source files. + +If you want to do SCSS edits and want to publish these, you need to install `PostCSS` + +```bash +npm install +``` + +## Running the website locally + +Building and running the site locally requires a recent `extended` version of [Hugo](https://gohugo.io). +You can find out more about how to install Hugo for your environment in our +[Getting started](https://www.docsy.dev/docs/getting-started/#prerequisites-and-installation) guide. + +Once you've made your working copy of the site repo, from the repo root folder, run: + +``` +hugo server +``` + +## Running a container locally + +You can run docsy-example inside a [Docker](https://docs.docker.com/) +container, the container runs with a volume bound to the `docsy-example` +folder. This approach doesn't require you to install any dependencies other +than [Docker Desktop](https://www.docker.com/products/docker-desktop) on +Windows and Mac, and [Docker Compose](https://docs.docker.com/compose/install/) +on Linux. + +1. Build the docker image + + ```bash + docker-compose build + ``` + +1. Run the built image + + ```bash + docker-compose up + ``` + + > NOTE: You can run both commands at once with `docker-compose up --build`. + +1. Verify that the service is working. + + Open your web browser and type `http://localhost:1313` in your navigation bar, + This opens a local instance of the docsy-example homepage. You can now make + changes to the docsy example and those changes will immediately show up in your + browser after you save. + +### Cleanup + +To stop Docker Compose, on your terminal window, press **Ctrl + C**. + +To remove the produced images run: + +```console +docker-compose rm +``` +For more information see the [Docker Compose +documentation](https://docs.docker.com/compose/gettingstarted/). + +## Troubleshooting + +As you run the website locally, you may run into the following error: + +``` +➜ hugo server + +INFO 2021/01/21 21:07:55 Using config file: +Building sites … INFO 2021/01/21 21:07:55 syncing static files to / +Built in 288 ms +Error: Error building site: TOCSS: failed to transform "scss/main.scss" (text/x-scss): resource "scss/scss/main.scss_9fadf33d895a46083cdd64396b57ef68" not found in file cache +``` + +This error occurs if you have not installed the extended version of Hugo. +See our [user guide](https://www.docsy.dev/docs/getting-started/) for instructions on how to install Hugo. + +[alternate dashboard]: https://app.netlify.com/sites/goldydocs/deploys +[deploys]: https://app.netlify.com/sites/docsy-example/deploys +[Docsy user guide]: https://docsy.dev/docs +[Docsy]: https://github.com/google/docsy +[example.docsy.dev]: https://example.docsy.dev +[Hugo theme]: https://gohugo.io/themes/installing-and-using-themes/ +[Netlify]: https://netlify.com diff --git a/website/assets/scss/_variables_project.scss b/website/assets/scss/_variables_project.scss new file mode 100644 index 0000000000000000000000000000000000000000..256902739d6220b02a2b0a97108004ad137c5e1d --- /dev/null +++ b/website/assets/scss/_variables_project.scss @@ -0,0 +1,6 @@ +/* + +Add styles or override variables from the theme here. + +*/ + diff --git a/website/config.toml b/website/config.toml new file mode 100644 index 0000000000000000000000000000000000000000..830e0acb219bbdc892aa8d6ca90bd8e0f959ef52 --- /dev/null +++ b/website/config.toml @@ -0,0 +1,207 @@ +baseURL = "/" +title = "OpenNSA" + +enableRobotsTXT = true + + +# Hugo allows theme composition (and inheritance). The precedence is from left to right. +theme = ["docsy"] + +# Will give values to .Lastmod etc. +enableGitInfo = true + +# Language settings +contentDir = "content" +defaultContentLanguage = "en" +defaultContentLanguageInSubdir = false +# Useful when translating. +enableMissingTranslationPlaceholders = true + +# Comment out to enable taxonomies in Docsy +# disableKinds = ["taxonomy", "taxonomyTerm"] + +# You can add your own taxonomies +[taxonomies] +tag = "tags" +category = "categories" + +[params.taxonomy] +# set taxonomyCloud = [] to hide taxonomy clouds +taxonomyCloud = ["tags", "categories"] + +# If used, must have same lang as taxonomyCloud +taxonomyCloudTitle = ["Tag Cloud", "Categories"] + +# set taxonomyPageHeader = [] to hide taxonomies on the page headers +taxonomyPageHeader = ["tags", "categories"] + + +# Highlighting config +pygmentsCodeFences = true +pygmentsUseClasses = false +# Use the new Chroma Go highlighter in Hugo. +pygmentsUseClassic = false +#pygmentsOptions = "linenos=table" +# See https://help.farbox.com/pygments.html +pygmentsStyle = "tango" + +## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday +[blackfriday] +plainIDAnchors = true +hrefTargetBlank = true +angledQuotes = false +latexDashes = true + +# Image processing configuration. +[imaging] +resampleFilter = "CatmullRom" +quality = 75 +anchor = "smart" + +[services] +[services.googleAnalytics] +# Comment out the next line to disable GA tracking. Also disables the feature described in [params.ui.feedback]. +id = "UA-00000000-0" + +# Language configuration + +[languages] +[languages.en] +title = "OpenNSA" +description = "A Docsy example site" +languageName ="English" +# Weight used for sorting. +weight = 1 + +[markup] + [markup.goldmark] + [markup.goldmark.renderer] + unsafe = true + [markup.highlight] + # See a complete list of available styles at https://xyproto.github.io/splash/docs/all.html + style = "tango" + # Uncomment if you want your chosen highlight style used for code blocks without a specified language + # guessSyntax = "true" + +# Everything below this are Site Params + +# Comment out if you don't want the "print entire section" link enabled. +[outputs] +section = ["HTML", "print", "RSS"] + +[params] +copyright = "The Docsy Authors" +privacy_policy = "https://policies.google.com/privacy" + +# First one is picked as the Twitter card image if not set on page. +# images = ["images/project-illustration.png"] + +# Menu title if your navbar has a versions selector to access old versions of your site. +# This menu appears only if you have at least one [params.versions] set. +version_menu = "Releases" + +# Flag used in the "version-banner" partial to decide whether to display a +# banner on every page indicating that this is an archived version of the docs. +# Set this flag to "true" if you want to display the banner. +archived_version = false + +# The version number for the version of the docs represented in this doc set. +# Used in the "version-banner" partial to display a version number for the +# current doc set. +version = "0.0" + +# A link to latest version of the docs. Used in the "version-banner" partial to +# point people to the main doc site. +url_latest_version = "https://example.com" + +# Repository configuration (URLs for in-page links to opening issues and suggesting changes) +github_repo = "https://github.com/google/docsy-example" +# An optional link to a related project repo. For example, the sibling repository where your product code lives. +github_project_repo = "https://github.com/google/docsy" + +# Specify a value here if your content directory is not in your repo's root directory +# github_subdir = "" + +# Uncomment this if you have a newer GitHub repo with "main" as the default branch, +# or specify a new value if you want to reference another branch in your GitHub links +github_branch= "main" + +# Google Custom Search Engine ID. Remove or comment out to disable search. +#gcs_engine_id = "d72aa9b2712488cc3" + +# Enable Algolia DocSearch +algolia_docsearch = false + +# Enable Lunr.js offline search +offlineSearch = true +offlineSearchSummaryLength = 1000 +offlineSearchMaxResults = 25 + +# Enable syntax highlighting and copy buttons on code blocks with Prism +prism_syntax_highlighting = false + +# User interface configuration +[params.ui] +# Set to true to disable breadcrumb navigation. +breadcrumb_disable = false +# Set to true to disable the About link in the site footer +footer_about_disable = false +# Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top navbar +navbar_logo = true +# Set to true if you don't want the top navbar to be translucent when over a `block/cover`, like on the homepage. +navbar_translucent_over_cover_disable = false +# Enable to show the side bar menu in its compact state. +sidebar_menu_compact = false +# Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled) +sidebar_search_disable = false + +# Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events. +# This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set. +# If you want this feature, but occasionally need to remove the "Feedback" section from a single page, +# add "hide_feedback: true" to the page's front matter. +[params.ui.feedback] +enable = true +# The responses that the user sees after clicking "yes" (the page was helpful) or "no" (the page was not helpful). +yes = 'Glad to hear it! Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.' +no = 'Sorry to hear that. Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.' + +# Adds a reading time to the top of each doc. +# If you want this feature, but occasionally need to remove the Reading time from a single page, +# add "hide_readingtime: true" to the page's front matter +[params.ui.readingtime] +enable = false + +[params.links] +# End user relevant links. These will show up on left side of footer and in the community page if you have one. +[[params.links.user]] + name = "User mailing list" + url = "https://example.org/mail" + icon = "fa fa-envelope" + desc = "Discussion and help from your fellow users" +[[params.links.user]] + name ="Twitter" + url = "https://example.org/twitter" + icon = "fab fa-twitter" + desc = "Follow us on Twitter to get the latest news!" +[[params.links.user]] + name = "Stack Overflow" + url = "https://example.org/stack" + icon = "fab fa-stack-overflow" + desc = "Practical questions and curated answers" +# Developer relevant links. These will show up on right side of footer and in the community page if you have one. +[[params.links.developer]] + name = "GitHub" + url = "https://github.com/google/docsy" + icon = "fab fa-github" + desc = "Development takes place here!" +[[params.links.developer]] + name = "Slack" + url = "https://example.org/slack" + icon = "fab fa-slack" + desc = "Chat with other project developers" +[[params.links.developer]] + name = "Developer mailing list" + url = "https://example.org/mail" + icon = "fa fa-envelope" + desc = "Discuss development issues around the project" + diff --git a/website/content/_index.html b/website/content/_index.html new file mode 100644 index 0000000000000000000000000000000000000000..b6d81ee7389d356bed08f4843485812acc07246d --- /dev/null +++ b/website/content/_index.html @@ -0,0 +1,30 @@ ++++ +title = "OpenNSA" +linkTitle = "OpenNSA" + ++++ + +{{< blocks/cover title="Welcome to OpenNSA: an implementation of the Network Service Interface (NSI)." image_anchor="top" height="full" color="orange" >}} +<div class="mx-auto"> + <a class="btn btn-lg btn-primary mr-3 mb-4" href="{{< relref "/docs" >}}"> + Documentation <i class="fas fa-arrow-alt-circle-right ml-2"></i> + </a> + <a class="btn btn-lg btn-secondary mr-3 mb-4" href="https://github.com/NORDUnet/opennsa"> + Download <i class="fab fa-github ml-2 "></i> + </a> + <a class="btn btn-lg btn-primary mr-3 mb-4" href="https://github.com/NORDUnet/opennsa/blob/master/docs/GFD.237.pdf"> + Spec <i class="fab fa-github ml-2 "></i> + </a> + + + {{< blocks/link-down color="info" >}} +</div> +{{< /blocks/cover >}} + + +{{% blocks/lead color="primary" %}} +OpenNSA is currently in a state of heavy development, and many features are only partially implemented. + +OpenNSA features: Plugable backends,DUD backend for easy testing, Easy creation of NML topology, command line tool for basic operations, path finding to do multi-domain circuit creation + +{{% /blocks/lead %}} diff --git a/website/content/about/_index.disabled b/website/content/about/_index.disabled new file mode 100644 index 0000000000000000000000000000000000000000..c264436389e84cc25744e1f2ed9083d8e3f31eba --- /dev/null +++ b/website/content/about/_index.disabled @@ -0,0 +1,38 @@ +--- +title: About Goldydocs +linkTitle: About +menu: + main: + weight: 10 + +--- + + +{{< blocks/cover title="About Goldydocs" image_anchor="bottom" height="min" >}} + +<p class="lead mt-5">A sample site using the Docsy Hugo theme. +</p> + +{{< /blocks/cover >}} + +{{% blocks/lead %}} +Goldydocs is a sample site using the <a href="https://github.com/google/docsy">Docsy</a> Hugo theme that shows what it can do and provides you with a template site structure. It’s designed for you to clone and edit as much as you like. See the different sections of the documentation and site for more ideas. +{{% /blocks/lead %}} + + +{{< blocks/section >}} +<div class="col-12"> +<h1 class="text-center">This is another section</h1> +</div> + +{{< /blocks/section >}} + + + +{{< blocks/section >}} + +<div class="col-12"> +<h1 class="text-center">This is another section</h1> +</div> + +{{< /blocks/section >}} diff --git a/website/content/about/featured-background.jpg b/website/content/about/featured-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6af381e530bbe1f86fb004dec01ba85cc2f5b3b2 Binary files /dev/null and b/website/content/about/featured-background.jpg differ diff --git a/website/content/docs/Developer/Backends/_index.md b/website/content/docs/Developer/Backends/_index.md new file mode 100644 index 0000000000000000000000000000000000000000..047023849e6bcf75a8889c8b6b56943b814acfe2 --- /dev/null +++ b/website/content/docs/Developer/Backends/_index.md @@ -0,0 +1,11 @@ +--- +categories: ["Developer"] +tags: ["developer","docs", "guide", "backends"] +title: "Backends" +linkTitle: "Backends" +weight: 88 +description: > + Backends Documentation +--- +Further document the various backends available. + diff --git a/docs/brocade.md b/website/content/docs/Developer/Backends/brocade.md similarity index 74% rename from docs/brocade.md rename to website/content/docs/Developer/Backends/brocade.md index 956b2cf29bb94a3d435cf1c420591165dfce9dd5..2e743dc1dc08cdac3d249b3ac1cc212218671955 100644 --- a/docs/brocade.md +++ b/website/content/docs/Developer/Backends/brocade.md @@ -1,5 +1,13 @@ -Brocade --------- +--- +categories: ["Developer"] +tags: ["developer","docs", "guide", "backends"] +title: "Brocade" +linkTitle: "Brocade" +weight: 2 +description: > + Backends Documentation +--- +# Brocade **Config snippet:** diff --git a/website/content/docs/Developer/_index.md b/website/content/docs/Developer/_index.md new file mode 100644 index 0000000000000000000000000000000000000000..f66de488c37cb1cfcbed2bd38ef988feca366c15 --- /dev/null +++ b/website/content/docs/Developer/_index.md @@ -0,0 +1,11 @@ +--- +categories: ["Developer"] +tags: ["developer","docs", "guide"] +title: "Developer" +linkTitle: "Developer" +weight: 2 +description: > + Developer Documentation +--- +This is a collection of developer guides and instruction that are tailored to the developer experience though might be helpful to the casual user. + diff --git a/website/content/docs/Developer/developer_guide.md b/website/content/docs/Developer/developer_guide.md new file mode 100644 index 0000000000000000000000000000000000000000..0c5fe9e443aaaf04f33ddc22de992c90c0eae576 --- /dev/null +++ b/website/content/docs/Developer/developer_guide.md @@ -0,0 +1,168 @@ +--- +categories: ["Developer"] +tags: ["install", "developer"] +title: "Quick Developer Guide" +linkTitle: "Quick Developer Guide" +date: 2021-12-16 +description: > + Quick Developer Guide +--- +# Quick Developer Guide + + +## Server Setup + +For this guide we are assuming you are using the configuration templates and examples provided by default. Any commands +will likely need to be updated accordingly for your own topology and configuration. + +We'll assume that you are either running the server locally. Both of those cases will require a running postgres database. For simplicity sake I'm going to assume you have a docker-compose stack running. + +``` +./generate-docker-config ## will create a .env file and config/opennsa.conf +docker-compose up -d +``` +## Usage Guide + +All operations in this case will be triggered via the client titled onsa which can be found in the root of the project. + +There are a few 'base' operation that are supported by the Network Service Interface (NSI) Spec which you can find [here](GFD.237.pdf). Others that are not listed in the document serve as a convenience method. + +All operation are usually a sequence of: reserve, reserveCommit, provision, release, terminate. +query related requests are for diagnostic purposes. + +### Endpoints + +The following endpoints will then be accessible if everything works as advertised. + + - http://localhost:9080/NSI/dockertest.net:2021:topology.nml.xml + - http://localhost:9080/NSI/discovery.xml + + +### Step 0 NSI Domain knowledge + +#### Assumptions: + + - TLS is not enabled. + - running locally and exposed 9080 locally. + - hostname is set to dockertest.net:2021 or similar value in the format of: + +``` +{domain_name}:year +``` + +In our example and sample file we use `dockertest.net:2021` + +#### URN + +All resources are mapped using a URN pattern. + +http://localhost:9080/NSI/dockertest.net:2021:topology.nml.xml will show you your current topology. + +Resources are reference by URN which are in the following format: + +`<prefix>:<organization>:<type>` example value is: `urn:ogf:network:dockertest.net:2021:topology:ps#vlan=1780` + + - prefix: should be `urn:ogf:network` + - organization: <domain_name>:year + - type: in our example would `topology` + - resource: <name>#<label={vlan or mpls}>=<ID aka 1780> + +More info can be found in the [config](config.md) documentation. + +#### Selecting Source / Destination + +## Reservation: Step 1 + +NOTES: Currently the -s and -d strip away the prefix. Please be aware when using the CLI client. + +```sh +onsa reserve \ + -u http://localhost:9080/NSI/services/CS2 \ ##service from Docker + -g urn:uuid:d7a6a2ff-2cb5-4892-8bec-2a50140a6342 \ ##Global ID + -s "dockertest.net:2021:topology:ps#vlan=1780" \ ## Source + -d "dockertest.net:2021:topology:port1#vlan=1787" \ ## Destination + -b 100 \ # bandwidth in Megabits + -a 2022-09-24T20:00:00 \ #start date/time (has to be in the future) + -e 2022-09-24T21:00:00 \ ## end date/time (again in the future) + -p dockertest.net:2021:nsa \ ## provider + -r dockertest.net:2021:sense \ ##requested + -h 192.168.1.64 \ ## OpenNSA Server host (localhost won't work if using docker) + -o 8543 \ #Port + -v \ ## verbose + -q ##dump payload message +``` + +### Query Validation + +We're going to query the data for the reservation we just created. + +```sh + ./onsa query \ + -u http://localhost:9080/NSI/services/CS2 \ + -p "dockertest.net:2021:nsa" \ + -r "dockertest.net:2021:sense" \ + -h 192.168.1.64 -o 8543 \ + -q +``` + +Output: + +``` +Connection DO-8108e03315 (urn:ogf:network:dockertest.net:2021:nsa) +Global ID urn:uuid:d7a6a2ff-2cb5-4892-8bec-2a50140a6342 +Description Test Connection +States ReserveStart, Released, Created +Dataplane Active : False, Version: 0, Consistent False +Start-End 2022-09-24 20:00:00 - 2022-09-24 21:00:00 +Path dockertest.net:2021:topology:ps?vlan=1780 -- dockertest.net:2021:topology:port1?vlan=1787 +Bandwidth 100 +Direction Bidirectionall +``` + +## Provision Step 2 + +We'll need the Connection ID from the query above for this step. + +```sh +./onsa provision \ + -c DO-8108e03315 \ ## Connection + -u http://localhost:9080/NSI/services/CS2 \ + -p "dockertest.net:2021:nsa" \ + -r "dockertest.net:2021:sense" \ + -h 192.168.1.64 -o 8543 \ + -v -q +``` + +Same Query as above should now show a new state of: + +``` +States **ReserveHeld**, Provisioning, Created +``` + +# Clean up Operations + +## Release Step 3 + +```sh +./onsa release \ + -c DO-8108e03315 \ + -u http://localhost:9080/NSI/services/CS2 \ + -p "dockertest.net:2021:nsa" \ + -r "dockertest.net:2021:sense" \ + -h 192.168.1.64 -o 8543 \ + -v -q +``` + +## Terminate Step 4 + +```sh +./onsa terminate \ + -c DO-8108e03315 \ + -u http://localhost:9080/NSI/services/CS2 \ + -p "dockertest.net:2021:nsa" \ + -r "dockertest.net:2021:sense" \ + -h localhost -o 8543 \ + -v -q +``` + + diff --git a/docs/test.md b/website/content/docs/Developer/test.md similarity index 71% rename from docs/test.md rename to website/content/docs/Developer/test.md index 4ea59b458dc7ec9b09b5fc44e1bed76f9470c682..3be6c3bfdd2d0e6ccda67604f6e70a88afd04d0a 100644 --- a/docs/test.md +++ b/website/content/docs/Developer/test.md @@ -1,3 +1,13 @@ +--- +categories: ["Developer"] +tags: ["install", "developer"] +title: "Testing" +linkTitle: "Testing" +date: 2021-12-16 +description: > + Quick Developer Guide +--- + How to run the the unit/integration tests for OpenNSA Make sure all the requirements are installed. Then: diff --git a/website/content/docs/LegacyDocs/_index.md b/website/content/docs/LegacyDocs/_index.md new file mode 100644 index 0000000000000000000000000000000000000000..f8a9e33565a0eb2f16e1dd8f5acff632151679ea --- /dev/null +++ b/website/content/docs/LegacyDocs/_index.md @@ -0,0 +1,11 @@ +--- +categories: ["Legacy", "Placeholders"] +tags: ["legacy","docs"] +title: "Legacy Documentation" +linkTitle: "Legacy" +weight: 99 +description: > + Legacy Documentation +--- +This is a collection of legacy documents that are likely no longer needed but kept for posterity's sake. + diff --git a/docs/centos-guide.md b/website/content/docs/LegacyDocs/centos-guide.md similarity index 94% rename from docs/centos-guide.md rename to website/content/docs/LegacyDocs/centos-guide.md index 903a6eb6df7ab9385b758751d5cc241af3edb57f..09414bcbe4d3c3c8e16fa15ac0d656aff1a10497 100644 --- a/docs/centos-guide.md +++ b/website/content/docs/LegacyDocs/centos-guide.md @@ -1,8 +1,13 @@ -Installing OpenNSA on CentOS 6.4 --------------------------------- -* Date: July 12 2013 -* Authors: Henrik Jensen/Nordu.net and Jeronimo Bezerra/AMPATH -* Version: 1.1 +--- +categories: ["Legacy"] +tags: ["install"] +title: "Install on CentOS 6.4" +linkTitle: "Install on CentOS 6.4" +date: 2013-07-12 +description: > + Installation instruction for OpenNSA on CentOS 6.4 +--- +# Installing OpenNSA on CentOS 6.4 1) Upgrade the CentOS 6.4: @@ -14,6 +19,7 @@ Installing OpenNSA on CentOS 6.4 3) Install Python 2.7 (CentOS depends of Python2.6 for its package system) +```sh yum groupinstall "Development tools" yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel cd /usr/local/src @@ -22,15 +28,18 @@ Installing OpenNSA on CentOS 6.4 cd Python-2.7.3 ./configure --prefix=/usr/local make && make altinstall +``` The Python2.7 interpreter is at /usr/local/bin/python2.7 4) Install the Python Distribute +```sh wget --no-check-certificate http://pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz tar xf distribute-0.6.35.tar.gz cd distribute-0.6.35 python2.7 setup.py install +``` This generates the script /usr/local/bin/easy_install-2.7 that you use to install packages for Python 2.7. It puts your packages in /usr/local/lib/python2.7/site-packages/ @@ -39,51 +48,68 @@ The Python2.7 interpreter is at /usr/local/bin/python2.7 6) Install Twisted +```sh wget --no-check-certificate https://pypi.python.org/packages/source/T/Twisted/Twisted-13.1.0.tar.bz2#md5=5609c91ed465f5a7da48d30a0e7b6960 easy_install-2.7 Twisted-13.1.0.tar.bz2 +``` 7) Install Twistar-1.2 +```sh wget --no-check-certificate https://pypi.python.org/packages/source/t/twistar/twistar-1.2.tar.gz#md5=4f63af14339b1f2d9556395b527ea7a4 easy_install-2.7 twistar-1.2.tar.gz +``` 8) Install psycopg +```sh wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.1.tar.gz easy_install-2.7 psycopg2-2.5.1.tar.gz +``` 9) Install pycrypto-2.6 and pyasn1-0.1.7 (only necessary when using SSH backends) + +```sh wget --no-check-certificate https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.tar.gz easy_install-2.7 pycrypto-2.6.tar.gz wget --no-check-certificate https://pypi.python.org/packages/source/p/pyasn1/pyasn1-0.1.7.tar.gz#md5=2cbd80fcd4c7b1c82180d3d76fee18c8 easy_install-2.7 pyasn1-0.1.7.tar.gz +``` 10) Initialize and Start the PostgreSQL + +```sh service postgresql initdb service postgresql start ln -s /etc/init.d/postgresql /etc/rc3.d/S99postgresql ln -s /etc/init.d/postgresql /etc/rc3.d/K99postgresql +``` 11) Prepare the environment for Opennsa +```sh useradd opennsa su - opennsa +``` 12) Install OpenNSA +```sh git clone git://git.nordu.net/opennsa.git cd opennsa git checkout nsi2 python2.7 setup.py build su python2.7 setup.py install +``` 13) Create the database +```sh cp datafiles/schema.sql /tmp/ su - postgres createdb opennsa @@ -95,18 +121,22 @@ The Python2.7 interpreter is at /usr/local/bin/python2.7 exit <CTRL+D> exit - +``` 14) It's important to keep the server time accurate (NTP) +```sh yum install ntp.x86_64 ln -s /etc/init.d/ntpd /etc/rc3.d/S99ntpd ln -s /etc/init.d/ntpd /etc/rc3.d/K99ntpd /etc/init.d/ntpd start +``` 15) Generate your SSH keys +```sh su - opennsa ssh-keygen +``` Press <ENTER> 3 times. The keys `id_dsa` and `id_dsa.pub` will be created under `~opennsa/.ssh/` @@ -119,7 +149,7 @@ The Python2.7 interpreter is at /usr/local/bin/python2.7 vi opennsa.conf -``` +```ini [service] network=<YOUR_NETWORK_NAME> logfile= @@ -151,13 +181,15 @@ The Python2.7 interpreter is at /usr/local/bin/python2.7 17) Create a `.opennsa-cli` file under `~opennsa/` +```sh echo -e "bandwidth=200\nhost=localhost\nport=7080\nstarttime=+1\nendtime=+20" > ~opennsa/.opennsa-cli - +``` + The starttime and the endtime represent when the circuit will start and end in seconds 18) Configure your backend in the opennsa.conf -``` +```ini # OpenNSA has support for the following backends: brocade, dell, etc... # So create a section for your backend with the following format: # @@ -181,14 +213,16 @@ The Python2.7 interpreter is at /usr/local/bin/python2.7 19) Start the OpenNSA: +```sh su - opennsa cd opennsa twistd -ny opennsa.tac (-n to not create a daemon. There is also an init.d script) +``` You should see: -``` +```sh 2013-07-02 14:17:08-0400 [-] Log opened. 2013-07-02 14:17:08-0400 [-] twistd 13.1.0 (/usr/local/bin/python2.7 2.7.3) starting up. 2013-07-02 14:17:08-0400 [-] reactor class: twisted.internet.epollreactor.EPollReactor. @@ -208,7 +242,7 @@ The Python2.7 interpreter is at /usr/local/bin/python2.7 As an example, in Brocade MLX switches you have to: -``` +```sh a. cd ~opennsa/.ssh b. echo "---- BEGIN SSH2 PUBLIC KEY ----" > keys.txt c. cat id_dsa.pub >> keys.txt diff --git a/docs/migration.md b/website/content/docs/LegacyDocs/migration.md similarity index 81% rename from docs/migration.md rename to website/content/docs/LegacyDocs/migration.md index 5f853605be18b1b97ba0ae4c061d039ea6573fc9..6e1740779d2f2860ab1899e5151541881ca133b2 100644 --- a/docs/migration.md +++ b/website/content/docs/LegacyDocs/migration.md @@ -1,3 +1,12 @@ +--- +categories: ["Legacy"] +tags: ["install"] +title: "Configuration Migration" +linkTitle: "Configuration Migration" +date: 2013-07-12 +description: > + Configuration Migration and py 2.x to 3.x changes +--- # OpenNSA 3 Configuration Migration diff --git a/website/content/docs/Usage Guide/CLI/_index.md b/website/content/docs/Usage Guide/CLI/_index.md new file mode 100644 index 0000000000000000000000000000000000000000..99e020899ce63748c9f914eec47de176417afcea --- /dev/null +++ b/website/content/docs/Usage Guide/CLI/_index.md @@ -0,0 +1,12 @@ +--- +categories: ["Guide"] +tags: ["docs", "guide", "userguide"] +title: "CLI User Guide" +linkTitle: "CLI User Guide" +weight: 2 +description: > + CLI User Guide +--- + CLI User Guide + + diff --git a/docs/cli.md b/website/content/docs/Usage Guide/CLI/onsa_cli.md similarity index 93% rename from docs/cli.md rename to website/content/docs/Usage Guide/CLI/onsa_cli.md index 9e9f121a3aaef19abb853fc74fc624a18e87b3a9..0418b1c3db53397b7ffff2c361a9522d23adc132 100644 --- a/docs/cli.md +++ b/website/content/docs/Usage Guide/CLI/onsa_cli.md @@ -1,6 +1,13 @@ -Open NSA CLI ------------ - +--- +categories: ["Guide"] +tags: ["docs", "guide", "userguide"] +title: "User Guide" +linkTitle: "User Guide" +weight: 3 +description: > + A short primer on the onsa command line tool. + +--- A short primer on the onsa command line tool. Disclaimer: There are still bugs and unfinished functionality. diff --git a/website/content/docs/Usage Guide/OpenNSA/_index.md b/website/content/docs/Usage Guide/OpenNSA/_index.md new file mode 100644 index 0000000000000000000000000000000000000000..a973d7e8937cc42f7917e2075041a3ea66cda36a --- /dev/null +++ b/website/content/docs/Usage Guide/OpenNSA/_index.md @@ -0,0 +1,12 @@ +--- +categories: ["Guide"] +tags: ["docs", "guide", "userguide"] +title: "OpenNSA Server User Guide" +linkTitle: "OpenNSA Server User Guide" +weight: 2 +description: > + OpenNSA Server User Guide +--- + OpenNSA Server User Guide + + diff --git a/docs/config.md b/website/content/docs/Usage Guide/OpenNSA/config.md similarity index 90% rename from docs/config.md rename to website/content/docs/Usage Guide/OpenNSA/config.md index 7050771076f8960f92aade3f70e9826eb368c808..a253cf8ba0c779211754bfece9eb4b5e53409dfa 100644 --- a/docs/config.md +++ b/website/content/docs/Usage Guide/OpenNSA/config.md @@ -1,9 +1,16 @@ -OpenNSA configuration ---------------------- +--- +categories: ["Guide"] +tags: ["docs", "guide", "userguide"] +title: "Configuration Guide" +linkTitle: "Configuration" +weight: 1 +description: > + A short primer on the opennsa config +--- # Example Configuration -``` +```ini [service] network=Aruba logfile=nsalog.log @@ -38,7 +45,7 @@ These are the options for the service block: `nrmmap` : Path to port/topology NRM description file `peers` : URLs to NSAs to peer with control-plane wise. - Seperate multiple entries with newline (only peers= on the first + Separate multiple entries with newline (only peers= on the first line). If using multiple lines, the following peer urls must be in indented at least pass the `=` on the first line (parser limitation). Optional. No peers will put OpenNSA into UPA mode. @@ -46,20 +53,20 @@ These are the options for the service block: `policies` : What policies are required. Currently `requiretrace`, `requireuser`, and `aggregator` are the possible options. These require a connection trace, a user security attribute, and allow proxy aggregation - respecitively. Optional. + respectively. Optional. `serviceid_start` : Initial service id to set in the database. Requires a plugin to use. Optional. -`database` : Name of the PostgreSQL databse to connect to. Mandatory. +`database` : Name of the PostgreSQL database to connect to. Mandatory. `dbuser` : Username to use when connecting to database. Mandatory. `dbpassword` : Password to use when connecting to database. Mandatory. -`dbhost` : Host to connect to for database. Optional. If not specificed, +`dbhost` : Host to connect to for database. Optional. If not specified, OpenNSA will connect to PostgreSQL over the unix domain socket - OpenNSA does not require anything big from the datebase, so using a + OpenNSA does not require anything big from the database, so using a different host/vm is almost surely a waste of resources. It is however useful when running a PostgreSQL in docker. @@ -126,7 +133,7 @@ resource do not get double booked. Use '-' if not connected to any network (termination inside the network). `label` : STP configuration options. Currently `vlan` and `mpls` are supported. - Note that not all backend support those. Can specify single values and ranges. Comma seperated. + Note that not all backend support those. Can specify single values and ranges. Comma separated. Use '-' if no labels are to be used (i.e., ethernet trunk). `bandwidth` : The available bandwidth on the port (or the bandwidth that is @@ -134,7 +141,7 @@ resource do not get double booked. `interface` : The interface / port on the network device. -`attributes` : A list of comma seperated attributes that describes security +`attributes` : A list of comma separated attributes that describes security attributes or policies for the port. Security attributes always have the form `key=value`, otherwise it is a policy. Despite the name, security attributes are not very secure. diff --git a/website/content/docs/Usage Guide/OpenNSA/ncs.md b/website/content/docs/Usage Guide/OpenNSA/ncs.md new file mode 100644 index 0000000000000000000000000000000000000000..1f65535c7f79ef295cf75ddd73685c98a803fb2a --- /dev/null +++ b/website/content/docs/Usage Guide/OpenNSA/ncs.md @@ -0,0 +1,19 @@ +--- +categories: ["Developer"] +tags: ["developer","docs", "guide", "backends"] +title: "NCS" +linkTitle: "NCS" +weight: 3 +description: > + NCS +--- + +url is an http url with the path /api/running/services, i.e., + +[http://NCSHOST:8080/api/running/services](http://NCSHOST:8080/api/running/services) + + +the interface part should be of the format "router:interface" + + + diff --git a/docs/rest-interface.md b/website/content/docs/Usage Guide/OpenNSA/rest-interface.md similarity index 83% rename from docs/rest-interface.md rename to website/content/docs/Usage Guide/OpenNSA/rest-interface.md index 070d856b7e728b1927ea5ce3eda050cf7a7d3201..f2c2cc7285c1ad95224e3877294bc7703498924f 100644 --- a/docs/rest-interface.md +++ b/website/content/docs/Usage Guide/OpenNSA/rest-interface.md @@ -1,4 +1,12 @@ - +--- +categories: ["Developer"] +tags: ["developer","docs", "guide", "backends"] +title: "REST Interface" +linkTitle: "REST Interface" +weight: 4 +description: > + REST Interface guide +--- # OpenNSA rest interface The rest interface is an easy to use alternative interface to the NSI SOAP api. @@ -13,7 +21,7 @@ Get connection status (stream) GET /connections/{connection_id}/status Change status POST /connections/{connection_id}/status ``` -The /status GET is a stream that updates continously (server won't close connection and will emit new status each time it updates). +The /status GET is a stream that updates continuously (server won't close connection and will emit new status each time it updates). ## Enabling rest @@ -23,7 +31,7 @@ In [service] section add `rest=true` ### Create a connection -Example minimal json payload to create connnection: +Example minimal json payload to create connection: ```json { @@ -59,13 +67,13 @@ curl -X POST -d "PROVISION" http://localhost:9080/connections/TE-03b16eea46/stat It will return an ACK, and start working on provisioning the link. The link will be up and ready to use when the `provision_state` is `Provisioned` and `data_plane_active` is `true`. -### Terminatning a connectiond +### Terminating a connection ``` curl -X POST -d "TERMINATE" http://localhost:9080/connections/TE-03b16eea46/status ``` -The conneciton will then go into `lifecycle_state` `Terminating`, and when everything is released it will end up in `lifecycle_state` `Terminated`. +The connection will then go into `lifecycle_state` `Terminating`, and when everything is released it will end up in `lifecycle_state` `Terminated`. ### Other supported status operations diff --git a/docs/tls-guide.md b/website/content/docs/Usage Guide/OpenNSA/tls-guide.md similarity index 88% rename from docs/tls-guide.md rename to website/content/docs/Usage Guide/OpenNSA/tls-guide.md index 9d8b71438739a4e47e3ccf1329a788557b005701..f5cca660b0567013fee1d5ae55b2a3c148be8997 100644 --- a/docs/tls-guide.md +++ b/website/content/docs/Usage Guide/OpenNSA/tls-guide.md @@ -1,6 +1,12 @@ -# TLS/SSL Configuration - - +--- +categories: ["Developer"] +tags: ["developer","docs", "guide", "backends"] +title: "TLS/SSL Configuration Guide" +linkTitle: "TLS/SSL Configuration" +weight: 2 +description: > + TLS/SSL Configuration Guide +--- The configuration of TLS/SSL of OpenNSA is something that has confused several people. This guide tries to make it more comprehensible. OpenNSA is somewhat barebones in its configuration style, but uses standard X.509 certificates and diff --git a/website/content/docs/Usage Guide/_index.md b/website/content/docs/Usage Guide/_index.md new file mode 100644 index 0000000000000000000000000000000000000000..adb185da62e6f653c927e40c1c323c0287a19356 --- /dev/null +++ b/website/content/docs/Usage Guide/_index.md @@ -0,0 +1,11 @@ +--- +categories: ["Guide"] +tags: ["docs", "guide", "userguide"] +title: "User Guide" +linkTitle: "User Guide" +weight: 2 +description: > + User Guide: This section focuses more on using OpenNSA, rather then the intricacies of developing, expending on it and developing new features for it. +--- +This is a collection of guides related to using the OpenNSA tool + diff --git a/website/content/docs/_index.md b/website/content/docs/_index.md new file mode 100755 index 0000000000000000000000000000000000000000..269638254e0eaa652edcc0ff6bdf7a574758b326 --- /dev/null +++ b/website/content/docs/_index.md @@ -0,0 +1,12 @@ + +--- +title: "Documentation" +linkTitle: "Documentation" +weight: 20 +menu: + main: + weight: 20 +--- + + + diff --git a/website/content/featured-background.jpg b/website/content/featured-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6af381e530bbe1f86fb004dec01ba85cc2f5b3b2 Binary files /dev/null and b/website/content/featured-background.jpg differ diff --git a/website/content/search.md b/website/content/search.md new file mode 100644 index 0000000000000000000000000000000000000000..e3690fd5a810cd8ee6afdbc95fa11c247f635627 --- /dev/null +++ b/website/content/search.md @@ -0,0 +1,6 @@ +--- +title: Search Results +layout: search + +--- + diff --git a/website/deploy.sh b/website/deploy.sh new file mode 100755 index 0000000000000000000000000000000000000000..a2c28f6b5fda7c5fd37ee01e9f4424fab1a582e2 --- /dev/null +++ b/website/deploy.sh @@ -0,0 +1,17 @@ +#Copyright 2018 Google LLC +# +#Licensed under the Apache License, Version 2.0 (the "License"); +#you may not use this file except in compliance with the License. +#You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +#Unless required by applicable law or agreed to in writing, software +#distributed under the License is distributed on an "AS IS" BASIS, +#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#See the License for the specific language governing permissions and +#limitations under the License. +# +rm -rf public/ +HUGO_ENV="production" hugo --gc || exit 1 +s3deploy -source=public/ -region=eu-west-1 -bucket=bep.is -distribution-id=E8OKNT7W9ZYZ2 -path temp/td diff --git a/website/docker-compose.yaml b/website/docker-compose.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e8f211a610ef434a4946d833cb4ae98039e659c6 --- /dev/null +++ b/website/docker-compose.yaml @@ -0,0 +1,13 @@ +version: "3.3" + +services: + + site: + image: docsy/docsy-example + build: + context: . + command: server + ports: + - "1313:1313" + volumes: + - .:/src diff --git a/website/layouts/404.html b/website/layouts/404.html new file mode 100644 index 0000000000000000000000000000000000000000..378b73675020745bf5ef17b96dea4dc3891a5da0 --- /dev/null +++ b/website/layouts/404.html @@ -0,0 +1,10 @@ +{{ define "main"}} + <main id="main"> + <div> + <h1 id="title">Not found</h1> + <p>Oops! This page doesn't exist. Try going back to our <a href="{{ "/" | relURL }}">home page</a>.</p> + + <p>You can learn how to make a 404 page like this in <a href="https://gohugo.io/templates/404/">Custom 404 Pages</a>.</p> + </div> + </main> +{{ end }} diff --git a/website/package-lock.json b/website/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..e2ae4ec6315d58d18320d78af4f231fcd2c1c614 --- /dev/null +++ b/website/package-lock.json @@ -0,0 +1,664 @@ +{ + "name": "tech-doc-hugo", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz", + "integrity": "sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA==", + "dev": true, + "requires": { + "browserslist": "^4.17.5", + "caniuse-lite": "^1.0.30001272", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001292", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001292.tgz", + "integrity": "sha512-jnT4Tq0Q4ma+6nncYQVe7d73kmDmE9C3OGTx3MvW7lBM/eY1S1DZTMBON7dqV481RhNiS5OxD7k9JQvmDOTirw==", + "dev": true + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "electron-to-chromium": { + "version": "1.4.27", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.27.tgz", + "integrity": "sha512-uZ95szi3zUbzRDx1zx/xnsCG+2xgZyy57pDOeaeO4r8zx5Dqe8Jv1ti8cunvBwJHVI5LzPuw8umKwZb3WKYxSQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fraction.js": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", + "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==", + "dev": true + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", + "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", + "dev": true, + "requires": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.8", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "dev": true, + "requires": { + "import-from": "^3.0.0" + } + }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.forown": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-4.4.0.tgz", + "integrity": "sha1-hRFc8E9z75ZuztUlEdOJPMRmg68=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "dev": true, + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + } + }, + "postcss-cli": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-9.1.0.tgz", + "integrity": "sha512-zvDN2ADbWfza42sAnj+O2uUWyL0eRL1V+6giM2vi4SqTR3gTYy8XzcpfwccayF2szcUif0HMmXiEaDv9iEhcpw==", + "dev": true, + "requires": { + "chokidar": "^3.3.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^10.0.0", + "get-stdin": "^9.0.0", + "globby": "^12.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^3.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^4.0.0", + "yargs": "^17.0.0" + } + }, + "postcss-load-config": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", + "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", + "dev": true, + "requires": { + "import-cwd": "^3.0.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "postcss-reporter": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.4.tgz", + "integrity": "sha512-jY/fnpGSin7kwJeunXbY35STp5O3VIxSFdjee5JkoPQ+FfGH5JW3N+Xe9oAPcL9UkjWjkK+JC72o8XH4XXKdhw==", + "dev": true, + "requires": { + "lodash.difference": "^4.5.0", + "lodash.forown": "^4.4.0", + "lodash.get": "^4.4.2", + "lodash.groupby": "^4.6.0", + "lodash.sortby": "^4.7.0", + "picocolors": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "source-map-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz", + "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true + } + } +} diff --git a/website/package.json b/website/package.json new file mode 100644 index 0000000000000000000000000000000000000000..d3409ef1300f9d8df6895929f86fe804f4853a1e --- /dev/null +++ b/website/package.json @@ -0,0 +1,24 @@ +{ + "name": "tech-doc-hugo", + "version": "0.0.1", + "description": "Hugo theme for technical documentation.", + "main": "none.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/google/docsy-example.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/google/docsy-example/issues" + }, + "homepage": "https://github.com/google/docsy-example#readme", + "devDependencies": { + "autoprefixer": "^10.4.0", + "postcss": "^8.3.7", + "postcss-cli": "^9.1.0" + } +} diff --git a/website/themes/docsy b/website/themes/docsy new file mode 160000 index 0000000000000000000000000000000000000000..134fb96db883f73c16ffbf1f1f27131ad04486bc --- /dev/null +++ b/website/themes/docsy @@ -0,0 +1 @@ +Subproject commit 134fb96db883f73c16ffbf1f1f27131ad04486bc