From 33a9f29558517a54b11a2db75bb7e69761d2c865 Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Wed, 8 Nov 2023 15:18:22 +0100 Subject: [PATCH 01/22] remove deprecated parts Signed-off-by: Max Wolfs --- docs/index.md | 155 ++++++++++---------------------------------------- 1 file changed, 29 insertions(+), 126 deletions(-) diff --git a/docs/index.md b/docs/index.md index a94ffbd5cb..889b73d33f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,36 +3,29 @@ title: Introduction sidebar_position: 1 --- -[![Creative Commons Attribution-ShareAlike 4.0 International](https://licensebuttons.net/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) - ## About The Sovereign Cloud Stack combines the best of Cloud Computing in one unified standard. SCS is built, backed, and operated by an active open-source community worldwide. -As only the sum of different repositories complete the SCS Stack, it is important to have an easy and accessible documentation in one place. -## What is SCS? Why should I care? +## Architectual Overview + +TODO -SCS describes a standard as well as a reference implementation of this standard. +## Use Cases and Depolyment Examples -Please see our [public web site](https://scs.community/) and specifically -the [About SCS](https://scs.community/About/) page. +### IaaS Layer -## The reference implementation +#### Quick Start with Cloud-In-A-Box -### Get it and test it: Testbed +The fastest way to get in touch with SCS is to deploy a SCS cloud virtually. The Cloud-In-A-Box was built explicitely for this scenario. Check it out [here](/docs/02-iaas/deployment-examples/cloud-in-a-box) -The easiest way to get in touch with SCS is to deploy a SCS cloud virtually. +#### Reference Implementation Testbed This means that you set up a SCS test installation including all the infrastructure pieces such as database, message queueing, ceph, monitoring and logging, IAM, the [OpenStack](https://openstack.org/) core services, and (soon) the Container layer -on top of an existing -IaaS platform. Currently, only OpenStack is supported as IaaS under the SCS cloud -(so you end up using OpenStack on top of OpenStack — with nested virtualization -enabled, this performs decently). There is no fundamental limitation — just -noone has done the porting of the terraform recipes yet to AWS, libvirt, -VMware, ... +on top of an existing IaaS platform. The SCS IaaS reference implementation is based on [OSISM](https://osism.tech/). Read on the [OSISM testbed docs](https://docs.osism.de/testbed/) to learn how to get the @@ -40,133 +33,43 @@ testbed running. Please read carefully through the [deployment](https://docs.osism.de/testbed/deployment.html) section of the manual. -The [Requirements:Cloud access subsection](https://docs.osism.de/testbed/deployment.html#cloud-access) also lists some clouds that we have -SCS running on and test regularly. +### Container Layer + +#### k8s Cluster API Provider You can easily deploy the container layer on top of the testbed (or a production SCS cloud of course) checking out the code from [k8s-cluster-api-provider](https://github.com/SovereignCloudStack/k8s-cluster-api-provider/). -## Existing SCS Clouds - -A few production clouds are already based on SCS: betacloud and [pluscloud open](https://www.plusserver.com/en/products/pluscloud-open). -More will come soon. - -CityNetwork, Open Telekom Cloud, OVH clouds are also known to support the -testbed well. (There are a few caveats with the latter two, but those are -documented and no blockers.) Read above mentioned -[Requirements:Cloud access](https://docs.osism.de/testbed/deployment.html#cloud-access) -subsections. - -## Development of SCS - -The work done in SCS is supposed to be fed back upstream — into the relevant -CNCF projects, into OpenStack, into kolla-ansible, into OSISM and others. -An OSISM deployment thus will bring you all the SCS greatness in the base -layer. -Whenever possible SCS works directly in the upstream projects. While the SCS -projects tracks the efforts across the released in [epics and userstories](https://github.com/orgs/SovereignCloudStack/projects), -the work on the code happens upstream - as such these repositories are usually -not found in the SCS namespace. - -## Releases and Roadmap - -### Release 0 (2021-07-15) - -SCS R0 has been released on 2021-07-15 and bundles the work -accomplished by the community prior to the full start of the project. - -See [Release Notes for R0](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release0.md) for more information. - -### Release 1 (2021-09-29) - -R1 came quickly after R0 and was the first release to ship a production ready k8s stack -(with k8s cluster API), some identity federation integration and much improved -preconfiguration for monitoring and logging. - -See [Release Notes for R1](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release1.md) for more information. +#### Cluster Stacks -### Release 2 (2022-03-23) +TODO -This release delivers vast improvements for bare metal automation -and the features in the container layers. +### Public SCS Clouds in production -See [Release Notes for R2](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release2.md) for more information. +Find the current number of scs compatible clouds [here](https://docs.scs.community/standards/certification/overview#compliant-cloud-environments) -### Release 3 (2022-09-21) +### Development of SCS -Release 3 features user federation, increase in deployment and upgrade -velocity by improving automated test coverage as well as bringing disk encryption -based on tang from the state of a technical preview to be fully supported. +While the SCS projects tracks the efforts across the released in epics and userstories, the work on the code happens upstream - as such these repositories are usually not found in the SCS GitHub organization. Whenever possible SCS works directly in the upstream projects into -See [Release Notes for R3](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release3.md) for more information. +- CNCF projects, +- OpenStack, +- kolla-ansible, +- OSISM and others. -### Release 4 (2023-03-22) +### Issues and Bugs -The implemented open source components have been updated to the latest stable versions. -Among others, this includes OpenStack Zed, Kubernetes Cluster API 1.3.x, Cluster API Provider -for OpenStack 0.7.x, Kubernetes 1.26.x, and Ubuntu 22.04 LTS. +If you can identify the affected component, raise the issue against the relevant repository in the SovereignCloudStack or OSISM space. Otherwise you can use the [issues repository](https://github.com/SovereignCloudStack/issues). We appreciate PRs as well as issues; please don't forget to sign off your contributions see [contributor guide](https://docs.scs.community/community). -See [Release Notes for R4](https://github.com/SovereignCloudStack/release-notes/blob/34d7ccb8f05b70cbb89f5995f9d10eab2ab8c052/Release4.md) for more information. - -### Roadmap - -We have a 6 month release cadence — R4 will follow in March 2023. -Until then, we will provide bugfixes and security fixes for R3. - -We do work towards a model where our partners can actually follow our main -development branches — right now, our CI needs a bit more coverage though -to make this safe. - -## Contribute and Connect +### Contribute and Connect Please see the [SCS contributor guide](https://docs.scs.community/community). -## Standards, Conformity and Certification - -We intend to work on a conformity test suite. - -Right now, we are basically relying on upstream tests -- -[RefStack](https://refstack.openstack.org/) (to perform -the [OpenStack trademark certification](https://refstack.openstack.org/#/guidelines) -tests formerly known as DefCore) and the Kubernetes CNCF conformance tests run through -[sonobuoy](https://sonobuoy.io/). +### Releases and Roadmap -We have specific [standards](https://github.com/SovereignCloudStack/standards/tree/main/Standards) aligned within the SCS community -(and have also sought feedback from the broader Gaia-X and OpenStack communities). +See our Release Notes [here](https://docs.scs.community/docs/category/releases) -Beyond this, we have a [draft document](https://github.com/SovereignCloudStack/standards/blob/main/Drafts/SCS-Spec.md) that captures our -view on how SCS compatible environments should look like. This one has not yet -seen sufficient review to be eligible for standardization. However, we appreciate -feedback (raise issues and PRs or start discussions). - -## Issues and bugs - -Please raise issues on github. If you can identify the affected component, -raise the issue against the relevant repository in the SovereignCloudStack -or OSISM space. Otherwise you can use -the [issues repository](https://github.com/SovereignCloudStack/issues). -Obviously we appreciate PRs even more than issues; -please don't forget to sign off your contributions (see -[contributor guide](https://docs.scs.community/community) ). - -When reporting bugs, it is very useful to include some standard information -typically needed to analyze: - -- What state of software (SCS) were you testing? What version numbers ... ? -- How does your environment look like (hardware, operating systems, etc.)? -- What did you do? -- What did you expect? What happened instead? -- Have you done this successfully before? What changed? -- Can this be reproduced? Occasionally? Reliably? How? -- Any analysis you have done? Experiments and their results? Log files? - -## Other resources - -Please check our main [web page](https://scs.community/). -If you are an onboarded SCS community member, find here a link to our -[nextcloud](https://scs.sovereignit.de/) (login required). +## Standards, Conformity and Certification -Our community interacts through our [github organization](https://github.com/sovereignCloudStack/), -on [mailing lists](https://scs.sovereignit.de/mailman3/postorius/lists/) as well as -chats [matrix.org:SCS](https://matrix.to/#/!TiDqlLmEUaXqTemaLc:matrix.org?via=matrix.org). +How to get compliant? With what am I compliant then? What are the benefits? What does it involve? What to expect in the future? Link to Standards Section: From a2511dc6fa657b214578d70c185e66caec546bb8 Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Tue, 12 Dec 2023 15:27:40 +0100 Subject: [PATCH 02/22] fix linkg Signed-off-by: Max Wolfs --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 889b73d33f..01bb6b10cf 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,7 +18,7 @@ TODO #### Quick Start with Cloud-In-A-Box -The fastest way to get in touch with SCS is to deploy a SCS cloud virtually. The Cloud-In-A-Box was built explicitely for this scenario. Check it out [here](/docs/02-iaas/deployment-examples/cloud-in-a-box) +The fastest way to get in touch with SCS is to deploy a SCS cloud virtually. The Cloud-In-A-Box was built explicitely for this scenario. Check it out [here](/docs/iaas/guides/deploy-guide/examples/cloud-in-a-box) #### Reference Implementation Testbed From e7c2e67bb0d8bcc2afb182d3a9b6e2d336d70117 Mon Sep 17 00:00:00 2001 From: Jan Schoone <6106846+jschoone@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:39:47 +0100 Subject: [PATCH 03/22] feat: add cluster stacks description Signed-off-by: Jan Schoone <6106846+jschoone@users.noreply.github.com> --- docs/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 01bb6b10cf..be720fa020 100644 --- a/docs/index.md +++ b/docs/index.md @@ -43,7 +43,9 @@ SCS cloud of course) checking out the code from #### Cluster Stacks -TODO +With Cluster Stacks, the V2 KaaS reference implementation, we provide an opinionated optimized configuration of Kubernetes clusters. Through better packaging, integrated testing, and bundled configuration SCS-based Kubernetes clusters can be individualized much easier. +Throughout the R6 development cycle Cluster Stacks are taken from a technical preview to be [functional and available on top of the IaaS reference implementation](https://github.com/SovereignCloudStack/issues/milestone/8) as well to replace the V1 KaaS reference implementation [k8s-cluster-api-provider](https://github.com/SovereignCloudStack/k8s-cluster-api-provider/). +The Cluster Stacks can already be tried out in a [demo](https://github.com/SovereignCloudStack/cluster-stacks-demo). Although this is based on the non production ready provider Docker, the usage is the same for every provider. ### Public SCS Clouds in production From 8f4a3ccc89d86782aec49ccb0e22b74c13ebb484 Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Wed, 10 Jan 2024 13:17:16 +0100 Subject: [PATCH 04/22] Apply suggestions from code review Co-authored-by: Jan Schoone <6106846+jschoone@users.noreply.github.com> Signed-off-by: Max Wolfs --- docs/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index be720fa020..d2232b99df 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,17 +12,17 @@ SCS is built, backed, and operated by an active open-source community worldwide. TODO -## Use Cases and Depolyment Examples +## Use Cases and Deployment Examples ### IaaS Layer #### Quick Start with Cloud-In-A-Box -The fastest way to get in touch with SCS is to deploy a SCS cloud virtually. The Cloud-In-A-Box was built explicitely for this scenario. Check it out [here](/docs/iaas/guides/deploy-guide/examples/cloud-in-a-box) +The fastest way to get in touch with SCS is to deploy a SCS cloud virtually. The Cloud-In-A-Box was built explicitly for this scenario. Check it out [here](/docs/iaas/guides/deploy-guide/examples/cloud-in-a-box) #### Reference Implementation Testbed -This means that you set up a SCS test installation including all the infrastructure +This means that you set up an SCS test installation including all the infrastructure pieces such as database, message queueing, ceph, monitoring and logging, IAM, the [OpenStack](https://openstack.org/) core services, and (soon) the Container layer on top of an existing IaaS platform. From c69579a1d06bca13e0024956b1b4bf6bb182945e Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Fri, 12 Jan 2024 15:28:51 +0100 Subject: [PATCH 05/22] refactor components for better reuse with json Signed-off-by: Max Wolfs --- src/components/ArchitecturalModel.tsx | 80 +++++++++++++ src/components/architecturalmodel.module.css | 11 ++ src/pages/index.module.css | 12 -- src/pages/index.tsx | 113 +++---------------- static/data/additionalResourcesData.json | 26 +++++ static/data/architecturalLayerData.json | 32 ++++++ static/data/featureContentData.json | 26 +++++ 7 files changed, 193 insertions(+), 107 deletions(-) create mode 100644 src/components/ArchitecturalModel.tsx create mode 100644 src/components/architecturalmodel.module.css create mode 100644 static/data/additionalResourcesData.json create mode 100644 static/data/architecturalLayerData.json create mode 100644 static/data/featureContentData.json diff --git a/src/components/ArchitecturalModel.tsx b/src/components/ArchitecturalModel.tsx new file mode 100644 index 0000000000..3e061202ca --- /dev/null +++ b/src/components/ArchitecturalModel.tsx @@ -0,0 +1,80 @@ +import React, { useEffect, useState } from 'react' +import ContentCard from './ContentCard' +import styles from './architecturalmodel.module.css' + +interface ArchitecturalLayerItem { + title: string + body: string + url: string + buttonText: string +} + +interface ArchitecturalLayerData { + left: ArchitecturalLayerItem[] + center: ArchitecturalLayerItem[] + right: ArchitecturalLayerItem[] +} + +interface ArchitecturalModelProps { + jsonFilePath: string +} + +const ArchitecturalModel: React.FunctionComponent = ({ + jsonFilePath +}) => { + const [data, setData] = useState(null) + + useEffect(() => { + fetch(jsonFilePath) // Use the jsonFilePath prop + .then((response) => response.json()) + .then((data: ArchitecturalLayerData) => setData(data)) + .catch((error) => console.error('Error fetching data:', error)) + }, [jsonFilePath]) // Dependency array includes jsonFilePath + + if (!data) { + return
Loading...
+ } + return ( +
+
+ {data.left.map((item) => ( + + ))} +
+
+ {data.center.map((item) => ( +
+ +
+ ))} +
+
+ {data.right.map((item) => ( + + ))} +
+
+ ) +} + +export default ArchitecturalModel diff --git a/src/components/architecturalmodel.module.css b/src/components/architecturalmodel.module.css new file mode 100644 index 0000000000..28ef023f60 --- /dev/null +++ b/src/components/architecturalmodel.module.css @@ -0,0 +1,11 @@ +.gradient { + background: linear-gradient( + 180deg, + #0061ff 0%, + rgba(80, 195, 165, 0) 50%, + #50c3a5 100% + ); + border-radius: 16px; + margin: 16px; + padding: 16px; +} diff --git a/src/pages/index.module.css b/src/pages/index.module.css index a23eba3cc7..1d3dc036cc 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -22,18 +22,6 @@ justify-content: center; } -.gradient { - background: linear-gradient( - 180deg, - #0061ff 0%, - rgba(80, 195, 165, 0) 50%, - #50c3a5 100% - ); - border-radius: 16px; - margin: 16px; - padding: 16px; -} - #marg { margin-top: 1rem; margin-bottom: 1rem; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 54ed48b2e3..2818c00304 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,65 +1,11 @@ -import React from 'react' +import React, { useEffect, useState } from 'react' import clsx from 'clsx' import Link from '@docusaurus/Link' import useDocusaurusContext from '@docusaurus/useDocusaurusContext' import Layout from '@theme/Layout' - import styles from './index.module.css' import ContentCard from '../components/ContentCard' - -const featureContentData = [ - { - title: 'Introduction to SCS', - body: 'Get to know SCS better and learn about the background.', - url: '/docs', - buttonText: 'Get Started' - }, - { - title: 'Releases', - body: 'SCS is currently in Release 5. Check out the latest Release Notes.', - url: '/docs/releases/Release5', - buttonText: 'Learn More' - }, - { - title: 'Frequently Asked Questions', - body: 'You are curious what SCS is all about, what it can do and what it cant?', - url: '/docs/faq', - buttonText: 'Get Answers' - }, - { - title: 'Existing Public Clouds', - body: 'There are public SCS compliant clouds in production.', - url: '/standards/certification/overview#compliant-cloud-environments', - buttonText: 'Test Them' - } -] - -const AdditionalResourcesData = [ - { - title: 'Get in touch', - body: 'Come into our Matrix Chat in the SCS | Tech Room.', - url: 'https://matrix.to/#/#scs-tech:matrix.org', - buttonText: 'Join Now' - }, - { - title: 'Come to our Meet-Ups', - body: 'Our working groups and special interest groups meet weekly or biweekly. When? Find out within our public community calendar.', - url: '/community/calendar', - buttonText: 'Learn More' - }, - { - title: 'Standardization in progress', - body: 'Get to know our current Decision Records and Standards.', - url: '/standards', - buttonText: 'Start Now' - }, - { - title: 'Deployment Examples', - body: 'Get to know different ways to deploy SCS with cloud resources or on bare metal.', - url: '/docs/iaas/guides/deploy-guide/examples', - buttonText: 'Explore Cases' - } -] +import ArchitecturalModel from '../components/ArchitecturalModel' function HomepageHeader() { const { siteConfig } = useDocusaurusContext() @@ -79,6 +25,19 @@ function HomepageHeader() { } export default function Home(): JSX.Element { + const [featureContent, setFeatureContent] = useState([]) + const [additionalResources, setAdditionalResources] = useState([]) + + useEffect(() => { + fetch('/data/featureContentData.json') + .then((response) => response.json()) + .then((data) => setFeatureContent(data)) + + fetch('/data/additionalResourcesData.json') + .then((response) => response.json()) + .then((data) => setAdditionalResources(data)) + }, []) + return (
@@ -93,7 +52,7 @@ export default function Home(): JSX.Element {
- {featureContentData.map((card, index) => ( + {featureContent.map((card, index) => (

Architectural Layers

-
-
- -
-
-
- -
- -
-
- -
-
+
@@ -153,7 +76,7 @@ export default function Home(): JSX.Element {
- {AdditionalResourcesData.map((card, index) => ( + {additionalResources.map((card, index) => (
Date: Fri, 12 Jan 2024 15:29:10 +0100 Subject: [PATCH 06/22] import architecture component Signed-off-by: Max Wolfs --- docs/{index.md => index.mdx} | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) rename docs/{index.md => index.mdx} (93%) diff --git a/docs/index.md b/docs/index.mdx similarity index 93% rename from docs/index.md rename to docs/index.mdx index d2232b99df..d548fbf425 100644 --- a/docs/index.md +++ b/docs/index.mdx @@ -3,6 +3,8 @@ title: Introduction sidebar_position: 1 --- +import ArchitecturalModel from '../src/components/ArchitecturalModel' + ## About The Sovereign Cloud Stack combines the best of Cloud Computing in one unified standard. @@ -10,7 +12,7 @@ SCS is built, backed, and operated by an active open-source community worldwide. ## Architectual Overview -TODO + ## Use Cases and Deployment Examples @@ -45,7 +47,7 @@ SCS cloud of course) checking out the code from With Cluster Stacks, the V2 KaaS reference implementation, we provide an opinionated optimized configuration of Kubernetes clusters. Through better packaging, integrated testing, and bundled configuration SCS-based Kubernetes clusters can be individualized much easier. Throughout the R6 development cycle Cluster Stacks are taken from a technical preview to be [functional and available on top of the IaaS reference implementation](https://github.com/SovereignCloudStack/issues/milestone/8) as well to replace the V1 KaaS reference implementation [k8s-cluster-api-provider](https://github.com/SovereignCloudStack/k8s-cluster-api-provider/). -The Cluster Stacks can already be tried out in a [demo](https://github.com/SovereignCloudStack/cluster-stacks-demo). Although this is based on the non production ready provider Docker, the usage is the same for every provider. +The Cluster Stacks can already be tried out in a [demo](https://github.com/SovereignCloudStack/cluster-stacks-demo). Although this is based on the non production ready provider Docker, the usage is the same for every provider. ### Public SCS Clouds in production @@ -74,4 +76,4 @@ See our Release Notes [here](https://docs.scs.community/docs/category/releases) ## Standards, Conformity and Certification -How to get compliant? With what am I compliant then? What are the benefits? What does it involve? What to expect in the future? Link to Standards Section: +How to get compliant? With what am I compliant then? What are the benefits? What does it involve? What to expect in the future? Learn more in the [standards section](https://docs.scs.community/standards). From d04b81fbaf9e8b019fc7c5012e3efa7a831d35eb Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Fri, 12 Jan 2024 16:40:52 +0100 Subject: [PATCH 07/22] fix loading Signed-off-by: Max Wolfs --- src/components/ArchitecturalModel.tsx | 35 ++++++++++++++++++++++----- src/pages/index.tsx | 22 ++++++++++++----- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/src/components/ArchitecturalModel.tsx b/src/components/ArchitecturalModel.tsx index 3e061202ca..017996b1e2 100644 --- a/src/components/ArchitecturalModel.tsx +++ b/src/components/ArchitecturalModel.tsx @@ -23,17 +23,40 @@ const ArchitecturalModel: React.FunctionComponent = ({ jsonFilePath }) => { const [data, setData] = useState(null) + const [isLoading, setIsLoading] = useState(true) + const [error, setError] = useState(null) useEffect(() => { - fetch(jsonFilePath) // Use the jsonFilePath prop - .then((response) => response.json()) - .then((data: ArchitecturalLayerData) => setData(data)) - .catch((error) => console.error('Error fetching data:', error)) - }, [jsonFilePath]) // Dependency array includes jsonFilePath + const fetchData = async () => { + try { + const response = await fetch(jsonFilePath) + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`) + } + const data = (await response.json()) as ArchitecturalLayerData + setData(data) + } catch (err) { + setError(err.message) + } finally { + setIsLoading(false) + } + } - if (!data) { + fetchData() + }, [jsonFilePath]) + + if (isLoading) { return
Loading...
} + + if (error) { + return
Error: {error}
+ } + + if (!data) { + return
No data available.
+ } + return (
diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 2818c00304..768727c7ce 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -29,13 +29,23 @@ export default function Home(): JSX.Element { const [additionalResources, setAdditionalResources] = useState([]) useEffect(() => { - fetch('/data/featureContentData.json') - .then((response) => response.json()) - .then((data) => setFeatureContent(data)) + const fetchData = async () => { + try { + const featureResponse = await fetch('/data/featureContentData.json') + const featureData = await featureResponse.json() + setFeatureContent(featureData) - fetch('/data/additionalResourcesData.json') - .then((response) => response.json()) - .then((data) => setAdditionalResources(data)) + const resourcesResponse = await fetch( + '/data/additionalResourcesData.json' + ) + const resourcesData = await resourcesResponse.json() + setAdditionalResources(resourcesData) + } catch (error) { + console.error('Error fetching data:', error) + } + } + + fetchData() }, []) return ( From 1ab591daad0c5601545a524730dc39975bca9beb Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Wed, 17 Jan 2024 14:27:25 +0100 Subject: [PATCH 08/22] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Filip Dobrovolný Signed-off-by: Max Wolfs --- docs/index.mdx | 13 +++++++------ static/data/featureContentData.json | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/index.mdx b/docs/index.mdx index d548fbf425..d83094c5c2 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -40,31 +40,32 @@ manual. #### k8s Cluster API Provider You can easily deploy the container layer on top of the testbed (or a production -SCS cloud of course) checking out the code from +SCS cloud) checking out the code from [k8s-cluster-api-provider](https://github.com/SovereignCloudStack/k8s-cluster-api-provider/). #### Cluster Stacks -With Cluster Stacks, the V2 KaaS reference implementation, we provide an opinionated optimized configuration of Kubernetes clusters. Through better packaging, integrated testing, and bundled configuration SCS-based Kubernetes clusters can be individualized much easier. +With the Cluster Stacks, in the V2 KaaS reference implementation, we provide an opinionated optimized configuration of Kubernetes clusters. Through better packaging, integrated testing, and bundled configuration, SCS-based Kubernetes clusters provide easier individualization. Throughout the R6 development cycle Cluster Stacks are taken from a technical preview to be [functional and available on top of the IaaS reference implementation](https://github.com/SovereignCloudStack/issues/milestone/8) as well to replace the V1 KaaS reference implementation [k8s-cluster-api-provider](https://github.com/SovereignCloudStack/k8s-cluster-api-provider/). -The Cluster Stacks can already be tried out in a [demo](https://github.com/SovereignCloudStack/cluster-stacks-demo). Although this is based on the non production ready provider Docker, the usage is the same for every provider. +The Cluster Stacks can already be tried with the [demo](https://github.com/SovereignCloudStack/cluster-stacks-demo) repository. Although this is based on the not-production-ready Docker provider, the usage is the same for every provider. ### Public SCS Clouds in production -Find the current number of scs compatible clouds [here](https://docs.scs.community/standards/certification/overview#compliant-cloud-environments) +Find the current list of scs compatible clouds [here](https://docs.scs.community/standards/certification/overview#compliant-cloud-environments). ### Development of SCS -While the SCS projects tracks the efforts across the released in epics and userstories, the work on the code happens upstream - as such these repositories are usually not found in the SCS GitHub organization. Whenever possible SCS works directly in the upstream projects into +While the SCS project tracks the efforts across the released epics and user stories, the work on the code, whenever possible, happens upstream. As such, these repositories are usually not found in the SCS GitHub organization. SCS works directly in the following upstream projects: - CNCF projects, - OpenStack, - kolla-ansible, - OSISM and others. +All code not pushed upstream can be found in the [SCS Github organization](https://github.com/SovereignCloudStack). ### Issues and Bugs -If you can identify the affected component, raise the issue against the relevant repository in the SovereignCloudStack or OSISM space. Otherwise you can use the [issues repository](https://github.com/SovereignCloudStack/issues). We appreciate PRs as well as issues; please don't forget to sign off your contributions see [contributor guide](https://docs.scs.community/community). +If you can identify the affected component, raise the issue against the relevant repository in the SovereignCloudStack or OSISM space. Otherwise, you can use the [issues repository](https://github.com/SovereignCloudStack/issues). We appreciate PRs as well as issues; please don't forget to sign off your contributions see [contributor guide](https://docs.scs.community/community). ### Contribute and Connect diff --git a/static/data/featureContentData.json b/static/data/featureContentData.json index 6ecd4a4631..d6c4d0c032 100644 --- a/static/data/featureContentData.json +++ b/static/data/featureContentData.json @@ -19,7 +19,7 @@ }, { "title": "Existing Public Clouds", - "body": "There are public SCS compliant clouds in production.", + "body": "There are SCS compliant public clouds in production.", "url": "/standards/certification/overview#compliant-cloud-environments", "buttonText": "Test Them" } From 27e697dd522157afb31523736b4fe4b44f4d0dee Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Wed, 17 Jan 2024 14:32:46 +0100 Subject: [PATCH 09/22] add first single components to overview component Signed-off-by: Max Wolfs --- docs/index.mdx | 5 +- src/components/ArchitecturalModel.tsx | 86 +++++++++++++------- src/components/ContentCard.tsx | 48 +++++++++-- src/components/architecturalmodel.module.css | 19 +++-- src/components/contentcard.module.css | 21 ++++- src/pages/index.tsx | 9 +- static/data/architecturalLayerData.json | 32 -------- static/data/architecturalOverviewData.json | 62 ++++++++++++++ 8 files changed, 202 insertions(+), 80 deletions(-) delete mode 100644 static/data/architecturalLayerData.json create mode 100644 static/data/architecturalOverviewData.json diff --git a/docs/index.mdx b/docs/index.mdx index d83094c5c2..75b582d741 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -12,7 +12,7 @@ SCS is built, backed, and operated by an active open-source community worldwide. ## Architectual Overview - + ## Use Cases and Deployment Examples @@ -63,6 +63,7 @@ While the SCS project tracks the efforts across the released epics and user stor - OSISM and others. All code not pushed upstream can be found in the [SCS Github organization](https://github.com/SovereignCloudStack). + ### Issues and Bugs If you can identify the affected component, raise the issue against the relevant repository in the SovereignCloudStack or OSISM space. Otherwise, you can use the [issues repository](https://github.com/SovereignCloudStack/issues). We appreciate PRs as well as issues; please don't forget to sign off your contributions see [contributor guide](https://docs.scs.community/community). @@ -77,4 +78,4 @@ See our Release Notes [here](https://docs.scs.community/docs/category/releases) ## Standards, Conformity and Certification -How to get compliant? With what am I compliant then? What are the benefits? What does it involve? What to expect in the future? Learn more in the [standards section](https://docs.scs.community/standards). +How to get compliant? What do I need to be compliant? What are the benefits? What does it involve? What to expect in the future? Learn more in the [standards section](https://docs.scs.community/standards). diff --git a/src/components/ArchitecturalModel.tsx b/src/components/ArchitecturalModel.tsx index 017996b1e2..4cf0c68194 100644 --- a/src/components/ArchitecturalModel.tsx +++ b/src/components/ArchitecturalModel.tsx @@ -7,21 +7,25 @@ interface ArchitecturalLayerItem { body: string url: string buttonText: string + components?: [] } interface ArchitecturalLayerData { - left: ArchitecturalLayerItem[] - center: ArchitecturalLayerItem[] - right: ArchitecturalLayerItem[] + ops: ArchitecturalLayerItem[] + container: ArchitecturalLayerItem[] + iaas: ArchitecturalLayerItem[] + iam: ArchitecturalLayerItem[] } interface ArchitecturalModelProps { jsonFilePath: string + topLayers?: boolean } -const ArchitecturalModel: React.FunctionComponent = ({ - jsonFilePath -}) => { +const ArchitecturalModel: React.FunctionComponent = ( + props +) => { + const { jsonFilePath, topLayers } = props const [data, setData] = useState(null) const [isLoading, setIsLoading] = useState(true) const [error, setError] = useState(null) @@ -58,41 +62,67 @@ const ArchitecturalModel: React.FunctionComponent = ({ } return ( -
-
- {data.left.map((item) => ( +
+
+ {data.ops.map((layer) => ( ))}
-
- {data.center.map((item) => ( +
+ {data.container.map((layer) => (
+
+ ))} + {data.iaas.map((layer) => ( +
+
))}
-
- {data.right.map((item) => ( +
+ {data.iam.map((layer) => ( ))}
diff --git a/src/components/ContentCard.tsx b/src/components/ContentCard.tsx index 24d090e400..c1eb6beac1 100644 --- a/src/components/ContentCard.tsx +++ b/src/components/ContentCard.tsx @@ -1,31 +1,63 @@ import React, { CSSProperties } from 'react' import styles from './contentcard.module.css' import Link from '@docusaurus/Link' +import { useLocation } from '@docusaurus/router' + +interface LayerComponent { + title: string + url: string +} interface ContentCardProps { + style?: React.CSSProperties title: string body: string url: string buttonText: string - maxHeight?: boolean + small?: boolean + components?: LayerComponent[] } const ContentCard: React.FunctionComponent = (props) => { - const { title, body, url, buttonText, maxHeight } = props + const { title, body, url, buttonText, style, small, components } = props + + const location = useLocation() + console.log(location.pathname) return ( -
+
-

{title}

+ {small ?
{title}
:

{title}

}

{body}

-
- - {buttonText} - +
+ {components && + components.map((component) => ( + +
+ {component.title} +
+ + ))}
+ {buttonText && ( +
+ + {buttonText} + +
+ )}
) } diff --git a/src/components/architecturalmodel.module.css b/src/components/architecturalmodel.module.css index 28ef023f60..7cad75e66b 100644 --- a/src/components/architecturalmodel.module.css +++ b/src/components/architecturalmodel.module.css @@ -1,11 +1,20 @@ .gradient { background: linear-gradient( 180deg, - #0061ff 0%, - rgba(80, 195, 165, 0) 50%, - #50c3a5 100% + rgb(0, 97, 255, 0.2) 20%, + rgba(80, 195, 165, 10) 50%, + #50c3a5 80% ); border-radius: 16px; - margin: 16px; - padding: 16px; + margin: 4px; +} + +.border { + border: rgba(0, 97, 255, 1) solid 4px; + border-radius: 16px; + margin: 4px; +} + +.bottom { + margin-bottom: 16px; } diff --git a/src/components/contentcard.module.css b/src/components/contentcard.module.css index 4dcb7cf81d..c007a5e098 100644 --- a/src/components/contentcard.module.css +++ b/src/components/contentcard.module.css @@ -26,6 +26,23 @@ } } -.card { - margin-bottom: 1rem; +.contentCard { + border: solid #666 2px; + box-shadow: 2px 2px 4px 4px rgba(10, 10, 10, 0.1); +} + +.layerComponent { + border-radius: 4px; + background: #eee; + width: 80px; + height: 80px; + margin: 0 0 16px 16px; + padding: 8px; + font-size: 10px; + text-decoration: none; + color: black; + &&:hover { + color: blue; + text-decoration: none; + } } diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 768727c7ce..c51a2f7eff 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -65,7 +65,6 @@ export default function Home(): JSX.Element { {featureContent.map((card, index) => (

Architectural Layers

- +
+ +
@@ -89,7 +93,6 @@ export default function Home(): JSX.Element { {additionalResources.map((card, index) => (
Date: Thu, 18 Jan 2024 17:51:00 +0100 Subject: [PATCH 10/22] Adjust model Signed-off-by: Max Wolfs --- src/components/ArchitecturalModel.tsx | 99 +++++++++++--------- src/components/ContentCard.tsx | 17 +++- src/components/architecturalmodel.module.css | 1 + src/components/contentcard.module.css | 61 ++++++++++-- static/data/architecturalOverviewData.json | 30 ++++-- 5 files changed, 147 insertions(+), 61 deletions(-) diff --git a/src/components/ArchitecturalModel.tsx b/src/components/ArchitecturalModel.tsx index 4cf0c68194..63ff67b677 100644 --- a/src/components/ArchitecturalModel.tsx +++ b/src/components/ArchitecturalModel.tsx @@ -63,29 +63,20 @@ const ArchitecturalModel: React.FunctionComponent = ( return (
-
- {data.ops.map((layer) => ( - - ))} -
-
- {data.container.map((layer) => ( -
+ {!topLayers && ( +
+
SCS Component Map
+
+ )} +
+
+ {data.ops.map((layer) => ( = ( url={layer.url} components={!topLayers && layer.components} /> -
- ))} - {data.iaas.map((layer) => ( -
+ ))} +
+
+ {data.container.map((layer) => ( +
+ +
+ ))} + {data.iaas.map((layer) => ( +
+ +
+ ))} +
+
+ {data.iam.map((layer) => ( = ( url={layer.url} components={!topLayers && layer.components} /> -
- ))} -
-
- {data.iam.map((layer) => ( - - ))} + ))} +
) diff --git a/src/components/ContentCard.tsx b/src/components/ContentCard.tsx index c1eb6beac1..076c3a0ad8 100644 --- a/src/components/ContentCard.tsx +++ b/src/components/ContentCard.tsx @@ -6,6 +6,8 @@ import { useLocation } from '@docusaurus/router' interface LayerComponent { title: string url: string + mandatory: string + stable: string } interface ContentCardProps { @@ -40,13 +42,22 @@ const ContentCard: React.FunctionComponent = (props) => { style={ location.pathname == component.url ? { - background: 'rgba(0, 97, 255, 0.5)', - color: '#FFF' + color: 'blue', + backgroundColor: '#0066ff44' } : {} } - className={styles.layerComponent}> + className={ + component.stable == 'true' + ? styles.layerComponent + : styles.layerComponentWip + }> {component.title} + {component.mandatory == 'true' ? ( +
mandatory
+ ) : ( +
optional
+ )}
))} diff --git a/src/components/architecturalmodel.module.css b/src/components/architecturalmodel.module.css index 7cad75e66b..0b6a060822 100644 --- a/src/components/architecturalmodel.module.css +++ b/src/components/architecturalmodel.module.css @@ -7,6 +7,7 @@ ); border-radius: 16px; margin: 4px; + display: block; } .border { diff --git a/src/components/contentcard.module.css b/src/components/contentcard.module.css index c007a5e098..e89ed01d6c 100644 --- a/src/components/contentcard.module.css +++ b/src/components/contentcard.module.css @@ -32,17 +32,64 @@ } .layerComponent { + border: solid 2px rgba(70, 72, 213, 0.539); border-radius: 4px; - background: #eee; - width: 80px; - height: 80px; + background: #43d8b24f; + width: 96px; + height: 96px; margin: 0 0 16px 16px; padding: 8px; + font-weight: 600; font-size: 10px; text-decoration: none; color: black; - &&:hover { - color: blue; - text-decoration: none; - } +} + +.layerComponentWip { + border: dashed 2px rgba(70, 72, 213, 0.539); + border-radius: 4px; + width: 96px; + height: 96px; + margin: 0 0 16px 16px; + padding: 8px; + font-size: 10px; + text-decoration: none; + color: black; + background-image: repeating-linear-gradient( + 45deg, + white 0%, + white 2%, + #43d8b24f 2%, + #43d8b24f 4%, + white 4% + ); +} + +.layerComponentWip:hover, +.layerComponent:hover { + color: blue; + text-decoration: none !important; + background-color: #43d8b22f; +} + +.chipOptional { + font-size: 8px; + border-radius: 8px; + padding: 2px 4px 2px 4px; + background-color: #892be27b; + text-align: center; + max-width: fit-content; + margin: 2px 2px 0 0; + color: #000; +} + +.chipMandatory { + font-size: 8px; + border-radius: 8px; + padding: 2px 4px 2px 4px; + background-color: #e2a82b94; + text-align: center; + max-width: fit-content; + margin: 2px 2px 0 0; + color: #000; } diff --git a/static/data/architecturalOverviewData.json b/static/data/architecturalOverviewData.json index 750e762078..94628da9d6 100644 --- a/static/data/architecturalOverviewData.json +++ b/static/data/architecturalOverviewData.json @@ -7,8 +7,10 @@ "buttonText": "Learn More", "components": [ { - "title": "Status Page API", - "url": "/docs/operating-scs/components/status-page/docs/overview" + "title": "Status Page", + "url": "/docs/operating-scs/components/status-page/docs/overview", + "mandatory": "true", + "stable": "true" } ] } @@ -22,7 +24,15 @@ "components": [ { "title": "k8s Cluster API Provider", - "url": "/docs/category/k8s-cluster-api-provider" + "url": "/docs/category/k8s-cluster-api-provider", + "mandatory": "false", + "stable": "true" + }, + { + "title": "Cluster Stacks", + "url": "/docs/category/cluster-stacks", + "mandatory": "false", + "stable": "false" } ] } @@ -36,11 +46,15 @@ "components": [ { "title": "Image Manager", - "url": "/docs/iaas/components/image-manager" + "url": "/docs/iaas/components/image-manager", + "mandatory": "true", + "stable": "true" }, { "title": "Flavor Manager", - "url": "/docs/iaas/components/flavor-manager" + "url": "/docs/iaas/components/flavor-manager", + "mandatory": "true", + "stable": "true" } ] } @@ -53,8 +67,10 @@ "buttonText": "Learn More", "components": [ { - "title": "Status Page API", - "url": "/docs/category/status-page-api" + "title": "Keycloak", + "url": "/docs/category/status-page-api", + "mandatory": "false", + "stable": "true" } ] } From 84d34e3ae13058362fed6e223d8c6fae682e5d37 Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Thu, 25 Jan 2024 11:37:12 +0100 Subject: [PATCH 11/22] add custom data plugin Signed-off-by: Max Wolfs --- docusaurus.config.js | 3 +- src/components/ArchitecturalModel.tsx | 54 ++++++------------- src/components/ContentCard.tsx | 5 +- src/pages/index.tsx | 53 +++++++++--------- .../docusaurus-plugin-global-data/index.js | 33 ++++++++++++ 5 files changed, 81 insertions(+), 67 deletions(-) create mode 100644 src/plugins/docusaurus-plugin-global-data/index.js diff --git a/docusaurus.config.js b/docusaurus.config.js index 53f047d6f6..63d248fef2 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -90,7 +90,8 @@ const config = { sidebarPath: require.resolve('./sidebarsStandards.js') } ], - './src/plugins/docusaurus-plugin-matomo-analytics/index.js' + './src/plugins/docusaurus-plugin-matomo-analytics/index.js', + './src/plugins/docusaurus-plugin-global-data/index.js' ], themeConfig: diff --git a/src/components/ArchitecturalModel.tsx b/src/components/ArchitecturalModel.tsx index 63ff67b677..475b5b3d50 100644 --- a/src/components/ArchitecturalModel.tsx +++ b/src/components/ArchitecturalModel.tsx @@ -1,6 +1,8 @@ import React, { useEffect, useState } from 'react' import ContentCard from './ContentCard' import styles from './architecturalmodel.module.css' +import useDocusaurusContext from '@docusaurus/useDocusaurusContext' +import { GlobalData } from '../pages' interface ArchitecturalLayerItem { title: string @@ -10,7 +12,7 @@ interface ArchitecturalLayerItem { components?: [] } -interface ArchitecturalLayerData { +export interface ArchitecturalLayerData { ops: ArchitecturalLayerItem[] container: ArchitecturalLayerItem[] iaas: ArchitecturalLayerItem[] @@ -18,44 +20,17 @@ interface ArchitecturalLayerData { } interface ArchitecturalModelProps { - jsonFilePath: string topLayers?: boolean } const ArchitecturalModel: React.FunctionComponent = ( props ) => { - const { jsonFilePath, topLayers } = props - const [data, setData] = useState(null) - const [isLoading, setIsLoading] = useState(true) - const [error, setError] = useState(null) - - useEffect(() => { - const fetchData = async () => { - try { - const response = await fetch(jsonFilePath) - if (!response.ok) { - throw new Error(`HTTP error! Status: ${response.status}`) - } - const data = (await response.json()) as ArchitecturalLayerData - setData(data) - } catch (err) { - setError(err.message) - } finally { - setIsLoading(false) - } - } - - fetchData() - }, [jsonFilePath]) - - if (isLoading) { - return
Loading...
- } - - if (error) { - return
Error: {error}
- } + const { topLayers } = props + const context = useDocusaurusContext() + const globalData = context.globalData as unknown as GlobalData + const data = + globalData['global-data-plugin'].default.architecturalOverviewData if (!data) { return
No data available.
@@ -76,8 +51,9 @@ const ArchitecturalModel: React.FunctionComponent = (
- {data.ops.map((layer) => ( + {data.ops.map((layer, index) => ( = (
- {data.container.map((layer) => ( + {data.container.map((layer, index) => (
@@ -107,8 +84,8 @@ const ArchitecturalModel: React.FunctionComponent = ( />
))} - {data.iaas.map((layer) => ( -
+ {data.iaas.map((layer, index) => ( +
= (
- {data.iam.map((layer) => ( + {data.iam.map((layer, index) => ( = (props) => { const { title, body, url, buttonText, style, small, components } = props const location = useLocation() - console.log(location.pathname) return (
@@ -36,8 +35,8 @@ const ContentCard: React.FunctionComponent = (props) => {
{components && - components.map((component) => ( - + components.map((component, index) => ( +
{ - const fetchData = async () => { - try { - const featureResponse = await fetch('/data/featureContentData.json') - const featureData = await featureResponse.json() - setFeatureContent(featureData) +export interface GlobalData { + 'global-data-plugin': GlobalDataPlugin +} - const resourcesResponse = await fetch( - '/data/additionalResourcesData.json' - ) - const resourcesData = await resourcesResponse.json() - setAdditionalResources(resourcesData) - } catch (error) { - console.error('Error fetching data:', error) - } - } +export default function Home(): JSX.Element { + const context = useDocusaurusContext() + const globalData = context.globalData as unknown as GlobalData - fetchData() - }, []) + const featureContent = globalData['global-data-plugin'].default + .featureContentData as FeatureContent[] + const additionalResources = globalData['global-data-plugin'].default + .additionalResourcesData as FeatureContent[] return ( @@ -78,10 +84,7 @@ export default function Home(): JSX.Element {

Architectural Layers

- +
diff --git a/src/plugins/docusaurus-plugin-global-data/index.js b/src/plugins/docusaurus-plugin-global-data/index.js new file mode 100644 index 0000000000..478b31186b --- /dev/null +++ b/src/plugins/docusaurus-plugin-global-data/index.js @@ -0,0 +1,33 @@ +const path = require('path') +const fs = require('fs').promises // Use fs.promises for async/await + +function globalDataPlugin(context, options) { + return { + name: 'global-data-plugin', + + async loadContent() { + const data = {} + + const datasetPaths = { + architecturalOverviewData: 'static/data/architecturalOverviewData.json', + additionalResourcesData: 'static/data/additionalResourcesData.json', + featureContentData: 'static/data/featureContentData.json' + // Add more datasets here + } + + for (const [key, filePath] of Object.entries(datasetPaths)) { + const jsonFilePath = path.join(context.siteDir, filePath) + data[key] = JSON.parse(await fs.readFile(jsonFilePath, 'utf8')) + } + + return data + }, + + async contentLoaded({ content, actions }) { + const { setGlobalData } = actions + setGlobalData(content) + } + } +} + +module.exports = globalDataPlugin From 1ac36ae909332c4e977fd8161a4e120258e078fa Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Thu, 25 Jan 2024 11:46:11 +0100 Subject: [PATCH 12/22] fix url Signed-off-by: Max Wolfs --- static/data/architecturalOverviewData.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/data/architecturalOverviewData.json b/static/data/architecturalOverviewData.json index 94628da9d6..3e90409652 100644 --- a/static/data/architecturalOverviewData.json +++ b/static/data/architecturalOverviewData.json @@ -30,7 +30,7 @@ }, { "title": "Cluster Stacks", - "url": "/docs/category/cluster-stacks", + "url": "/docs/container", "mandatory": "false", "stable": "false" } From 6023d5488e2d1dd8e6c558a8f6eac03b25b070fb Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Thu, 25 Jan 2024 13:42:50 +0100 Subject: [PATCH 13/22] fix url Signed-off-by: Max Wolfs --- static/data/architecturalOverviewData.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/data/architecturalOverviewData.json b/static/data/architecturalOverviewData.json index 3e90409652..ef791ec3cc 100644 --- a/static/data/architecturalOverviewData.json +++ b/static/data/architecturalOverviewData.json @@ -68,7 +68,7 @@ "components": [ { "title": "Keycloak", - "url": "/docs/category/status-page-api", + "url": "/docs/iam/intra-SCS-federation-setup-description-for-osism-doc-operations", "mandatory": "false", "stable": "true" } From 9503fd8dd4851b4336001acb3bd74217b868d9bc Mon Sep 17 00:00:00 2001 From: Jan Schoone <6106846+jschoone@users.noreply.github.com> Date: Tue, 30 Jan 2024 09:46:08 +0100 Subject: [PATCH 14/22] fix: typo Signed-off-by: Jan Schoone <6106846+jschoone@users.noreply.github.com> --- docs/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.mdx b/docs/index.mdx index 75b582d741..66aeeb7678 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -10,7 +10,7 @@ import ArchitecturalModel from '../src/components/ArchitecturalModel' The Sovereign Cloud Stack combines the best of Cloud Computing in one unified standard. SCS is built, backed, and operated by an active open-source community worldwide. -## Architectual Overview +## Architectural Overview From 14ce818ac380dbe9cd459da596957cb63528c75b Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Tue, 13 Feb 2024 11:07:22 +0100 Subject: [PATCH 15/22] fix calendar link Signed-off-by: Max Wolfs --- static/data/additionalResourcesData.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/data/additionalResourcesData.json b/static/data/additionalResourcesData.json index 00f5e4b98b..da4c7b85f9 100644 --- a/static/data/additionalResourcesData.json +++ b/static/data/additionalResourcesData.json @@ -8,7 +8,7 @@ { "title": "Come to our Meet-Ups", "body": "Our working groups and special interest groups meet weekly or biweekly. When? Find out within our public community calendar.", - "url": "/community/calendar", + "url": "/community/collaboration", "buttonText": "Learn More" }, { From c6f7f716216063f923af78ab323d300e6e4efcee Mon Sep 17 00:00:00 2001 From: Matej Feder Date: Mon, 19 Feb 2024 17:04:13 +0100 Subject: [PATCH 16/22] Add container registry docs and display it on the overview map (#143) Signed-off-by: Matej Feder --- docs.package.json | 11 +++++++---- sidebarsDocs.js | 17 +++++++++++++++++ static/data/architecturalOverviewData.json | 6 ++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/docs.package.json b/docs.package.json index 4550130191..3dcfb12ffd 100644 --- a/docs.package.json +++ b/docs.package.json @@ -25,10 +25,7 @@ }, { "repo": "SovereignCloudStack/standards", - "source": [ - "Standards/*.md", - "Tests/scs-*.yaml" - ], + "source": ["Standards/*.md", "Tests/scs-*.yaml"], "target": "standards", "label": "" }, @@ -37,5 +34,11 @@ "source": "docs/guides", "target": "docs/02-iaas/", "label": "" + }, + { + "repo": "SovereignCloudStack/k8s-harbor", + "source": "docs", + "target": "docs/03-container/components", + "label": "container-registry" } ] diff --git a/sidebarsDocs.js b/sidebarsDocs.js index 094290ecfa..b462c0f5b7 100644 --- a/sidebarsDocs.js +++ b/sidebarsDocs.js @@ -254,6 +254,23 @@ const sidebarsDocs = { ] } ] + }, + { + type: 'category', + label: 'Container Registry', + link: { + type: 'generated-index' + }, + items: [ + 'container/components/container-registry/docs/quickstart', + 'container/components/container-registry/docs/scs-deployment', + 'container/components/container-registry/docs/rate_limit', + 'container/components/container-registry/docs/upgrade', + 'container/components/container-registry/docs/backup_and_restore', + 'container/components/container-registry/docs/migration', + 'container/components/container-registry/docs/persistence', + 'container/components/container-registry/docs/ha-deployment' + ] } ] } diff --git a/static/data/architecturalOverviewData.json b/static/data/architecturalOverviewData.json index ef791ec3cc..1b74be705b 100644 --- a/static/data/architecturalOverviewData.json +++ b/static/data/architecturalOverviewData.json @@ -33,6 +33,12 @@ "url": "/docs/container", "mandatory": "false", "stable": "false" + }, + { + "title": "Container Registry", + "url": "/docs/category/container-registry", + "mandatory": "false", + "stable": "true" } ] } From 5e781eb5a58ec2849ede9f8348a894ba0e7f238d Mon Sep 17 00:00:00 2001 From: Matej Feder Date: Tue, 20 Feb 2024 16:00:45 +0100 Subject: [PATCH 17/22] Add monitoring docs and display it on the overview map (#144) Signed-off-by: Matej Feder --- docs.package.json | 6 ++++++ sidebarsDocs.js | 20 ++++++++++++++++++++ static/data/architecturalOverviewData.json | 6 ++++++ 3 files changed, 32 insertions(+) diff --git a/docs.package.json b/docs.package.json index 3dcfb12ffd..3128fdfa25 100644 --- a/docs.package.json +++ b/docs.package.json @@ -40,5 +40,11 @@ "source": "docs", "target": "docs/03-container/components", "label": "container-registry" + }, + { + "repo": "SovereignCloudStack/k8s-observability", + "source": "docs", + "target": "docs/04-operating-scs/components", + "label": "monitoring" } ] diff --git a/sidebarsDocs.js b/sidebarsDocs.js index b462c0f5b7..23c1c9f086 100644 --- a/sidebarsDocs.js +++ b/sidebarsDocs.js @@ -303,6 +303,26 @@ const sidebarsDocs = { 'operating-scs/components/status-page/docs/components', 'operating-scs/components/status-page/docs/levels_of_consensus' ] + }, + { + type: 'category', + label: 'Monitoring', + link: { + type: 'generated-index' + }, + items: [ + 'operating-scs/components/monitoring/docs/overview', + 'operating-scs/components/monitoring/docs/quickstart', + 'operating-scs/components/monitoring/docs/scs-deployment', + 'operating-scs/components/monitoring/docs/infrastructure_services', + 'operating-scs/components/monitoring/docs/iaas', + 'operating-scs/components/monitoring/docs/kaas', + 'operating-scs/components/monitoring/docs/zuul', + 'operating-scs/components/monitoring/docs/alertmanager', + 'operating-scs/components/monitoring/docs/oauth', + 'operating-scs/components/monitoring/docs/tracing', + 'operating-scs/components/monitoring/docs/tuning' + ] } ] }, diff --git a/static/data/architecturalOverviewData.json b/static/data/architecturalOverviewData.json index 1b74be705b..6947147a20 100644 --- a/static/data/architecturalOverviewData.json +++ b/static/data/architecturalOverviewData.json @@ -11,6 +11,12 @@ "url": "/docs/operating-scs/components/status-page/docs/overview", "mandatory": "true", "stable": "true" + }, + { + "title": "Monitoring", + "url": "/docs/category/monitoring", + "mandatory": "false", + "stable": "true" } ] } From 712ce926cc383099dfe762a9063c5e3dfe0670d5 Mon Sep 17 00:00:00 2001 From: Matej Feder Date: Thu, 29 Feb 2024 09:00:51 +0100 Subject: [PATCH 18/22] Add CSPO docs and display it on the overview map (#149) Signed-off-by: Matej Feder --- docs.package.json | 6 ++++++ sidebarsDocs.js | 19 +++++++++++++++++++ static/data/architecturalOverviewData.json | 8 ++++---- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/docs.package.json b/docs.package.json index 3128fdfa25..11dae9699d 100644 --- a/docs.package.json +++ b/docs.package.json @@ -17,6 +17,12 @@ "target": "docs/03-container/components", "label": "k8s-cluster-api-provider" }, + { + "repo": "SovereignCloudStack/cluster-stack-provider-openstack", + "source": "docs", + "target": "docs/03-container/components/cluster-stacks/components", + "label": "cluster-stack-provider-openstack" + }, { "repo": "SovereignCloudStack/status-page-openapi", "source": "docs", diff --git a/sidebarsDocs.js b/sidebarsDocs.js index 630ecb1aa1..0a10b49e46 100644 --- a/sidebarsDocs.js +++ b/sidebarsDocs.js @@ -255,6 +255,25 @@ const sidebarsDocs = { } ] }, + { + type: 'category', + label: 'Cluster Stacks', + link: { + type: 'generated-index' + }, + items: [ + { + type: 'category', + label: 'Cluster Stack Provider OpenStack', + items: [ + 'container/components/cluster-stacks/components/cluster-stack-provider-openstack/docs/overview', + 'container/components/cluster-stacks/components/cluster-stack-provider-openstack/docs/quickstart', + 'container/components/cluster-stacks/components/cluster-stack-provider-openstack/docs/controllers', + 'container/components/cluster-stacks/components/cluster-stack-provider-openstack/docs/develop' + ] + } + ] + }, { type: 'category', label: 'Container Registry', diff --git a/static/data/architecturalOverviewData.json b/static/data/architecturalOverviewData.json index 6947147a20..611f2a36de 100644 --- a/static/data/architecturalOverviewData.json +++ b/static/data/architecturalOverviewData.json @@ -29,16 +29,16 @@ "buttonText": "Learn More", "components": [ { - "title": "k8s Cluster API Provider", + "title": "KaaS V1: K8s Cluster API Provider", "url": "/docs/category/k8s-cluster-api-provider", "mandatory": "false", "stable": "true" }, { - "title": "Cluster Stacks", - "url": "/docs/container", + "title": "KaaS V2: Cluster Stacks", + "url": "/docs/category/cluster-stacks", "mandatory": "false", - "stable": "false" + "stable": "true" }, { "title": "Container Registry", From 93e7914100c6a62cb1893f1176b7c5d87fdf7e1a Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Thu, 29 Feb 2024 14:29:34 +0100 Subject: [PATCH 19/22] fix component sizing Signed-off-by: Max Wolfs --- src/components/ContentCard.tsx | 10 +++++++--- src/components/contentcard.module.css | 12 ++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/components/ContentCard.tsx b/src/components/ContentCard.tsx index e369e1d0cc..129a9c3519 100644 --- a/src/components/ContentCard.tsx +++ b/src/components/ContentCard.tsx @@ -28,7 +28,11 @@ const ContentCard: React.FunctionComponent = (props) => { return (
- {small ?
{title}
:

{title}

} + {small ? ( +
{title}
+ ) : ( +

{title}

+ )}

{body}

@@ -52,11 +56,11 @@ const ContentCard: React.FunctionComponent = (props) => { : styles.layerComponentWip }> {component.title} - {component.mandatory == 'true' ? ( + {/* {component.mandatory == 'true' ? (
mandatory
) : (
optional
- )} + )} */}
))} diff --git a/src/components/contentcard.module.css b/src/components/contentcard.module.css index e89ed01d6c..946e7a4ab3 100644 --- a/src/components/contentcard.module.css +++ b/src/components/contentcard.module.css @@ -35,9 +35,9 @@ border: solid 2px rgba(70, 72, 213, 0.539); border-radius: 4px; background: #43d8b24f; - width: 96px; - height: 96px; - margin: 0 0 16px 16px; + width: 80px; + height: 80px; + margin: 0 0 8px 8px; padding: 8px; font-weight: 600; font-size: 10px; @@ -48,9 +48,9 @@ .layerComponentWip { border: dashed 2px rgba(70, 72, 213, 0.539); border-radius: 4px; - width: 96px; - height: 96px; - margin: 0 0 16px 16px; + width: 80px; + height: 80px; + margin: 0 0 8px 8px; padding: 8px; font-size: 10px; text-decoration: none; From f727688f1f41eccea8acc953ffd29ed0c43405fa Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Fri, 1 Mar 2024 11:39:48 +0100 Subject: [PATCH 20/22] Apply suggestions from code review Co-authored-by: Roman Hros Signed-off-by: Max Wolfs --- static/data/architecturalOverviewData.json | 2 +- static/data/featureContentData.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/static/data/architecturalOverviewData.json b/static/data/architecturalOverviewData.json index 611f2a36de..f317386e53 100644 --- a/static/data/architecturalOverviewData.json +++ b/static/data/architecturalOverviewData.json @@ -52,7 +52,7 @@ "iaas": [ { "title": "IaaS Layer", - "body": "SCS offers OpenStack infrastructure solutions based on KVM virutalization to deploy VM workloads and enabling the container layer optionally.", + "body": "SCS offers OpenStack infrastructure solutions based on KVM virtualization to deploy VM workloads and enabling the container layer optionally.", "url": "/docs/faq", "buttonText": "Learn More", "components": [ diff --git a/static/data/featureContentData.json b/static/data/featureContentData.json index d6c4d0c032..268444c0dd 100644 --- a/static/data/featureContentData.json +++ b/static/data/featureContentData.json @@ -13,7 +13,7 @@ }, { "title": "Frequently Asked Questions", - "body": "You are curious what SCS is all about, what it can do and what it cant?", + "body": "You are curious what SCS is all about, what it can do and what it can't?", "url": "/docs/faq", "buttonText": "Get Answers" }, From bd191b2f59c46966fd1a183b901aefc2a79c7e89 Mon Sep 17 00:00:00 2001 From: Roman Hros Date: Fri, 1 Mar 2024 11:40:57 +0100 Subject: [PATCH 21/22] Add missing k8s-cluster-api-provider doc pages (#152) Signed-off-by: Roman Hros --- sidebarsDocs.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sidebarsDocs.js b/sidebarsDocs.js index 0a10b49e46..955ab24bd2 100644 --- a/sidebarsDocs.js +++ b/sidebarsDocs.js @@ -240,6 +240,7 @@ const sidebarsDocs = { 'container/components/k8s-cluster-api-provider/doc/Maintenance_and_Troubleshooting', 'container/components/k8s-cluster-api-provider/doc/LoadBalancer-ExtTrafficLocal', 'container/components/k8s-cluster-api-provider/doc/Upgrade-Guide', + 'container/components/k8s-cluster-api-provider/doc/continuous-integration', 'container/components/k8s-cluster-api-provider/doc/roadmap', { type: 'category', @@ -250,7 +251,12 @@ const sidebarsDocs = { 'container/components/k8s-cluster-api-provider/doc/usage/managing-many-clusters', 'container/components/k8s-cluster-api-provider/doc/usage/cluster-mgmt-capi-mgmt-node', 'container/components/k8s-cluster-api-provider/doc/usage/multi-az-and-multi-cloud-environments', - 'container/components/k8s-cluster-api-provider/doc/usage/testing' + 'container/components/k8s-cluster-api-provider/doc/usage/testing', + 'container/components/k8s-cluster-api-provider/doc/usage/containter-registry-configuration', + 'container/components/k8s-cluster-api-provider/doc/usage/custom-ca', + 'container/components/k8s-cluster-api-provider/doc/usage/gateway-api', + 'container/components/k8s-cluster-api-provider/doc/usage/harbor', + 'container/components/k8s-cluster-api-provider/doc/usage/migrate-to-cluster-class' ] } ] From 5d36fc32b53a78f2bf4f7f5e5cfbde5e0bcedd5a Mon Sep 17 00:00:00 2001 From: Max Wolfs Date: Fri, 1 Mar 2024 13:38:31 +0100 Subject: [PATCH 22/22] fix title Co-authored-by: Roman Hros Signed-off-by: Max Wolfs --- docs/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.mdx b/docs/index.mdx index 66aeeb7678..8f8d1fe77a 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -37,7 +37,7 @@ manual. ### Container Layer -#### k8s Cluster API Provider +#### K8s Cluster API Provider You can easily deploy the container layer on top of the testbed (or a production SCS cloud) checking out the code from