Skip to content

Commit f35840d

Browse files
committed
Merge branch 'add_larger_flavors' of github.com:/SovereignCloudStack/standards into add_larger_flavors
2 parents 42d959e + 9540f22 commit f35840d

File tree

9 files changed

+79
-22
lines changed

9 files changed

+79
-22
lines changed

.zuul.d/secure.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,28 @@
7979
o9slrGAyL7g3zdjNlUJA04U33SNCvaCxL8fac6JZ15vrqeW4g4AB4+rx7fYKAnOVg2FOL
8080
5jMOKsiGgfLvz1KZ9c6Q1ThfeCQzG9waWJnyCx2R2tEtyQ17hIW6Rzo1RzmQkUyvLN9TJ
8181
CLSZCUoR+2Ut+ZlpDi3vVushWWLXyjj8ojblTO/zqlbQ1A+7d/C+5x2mrh2T/0=
82+
cnds_ro_ac_id: !encrypted/pkcs1-oaep
83+
- l2IMEJwkw8xqgzKvCkPgGVzoBNiMrj/+oNfq3dvFyLU8f/AJ8XDMsmaeNBj/hSGY6O3ar
84+
Qs8ckn6BUTD253Ft8izsvv7E535KN/o5IhN7f+juKri1jVus/XLkrx3t3exHL1piSy0y/
85+
y5k1FGpEclmzyEdtaCorEOQraXRCLAOmyYba6aCt5YhPVJkOjv8Aupy7Y/tSHXdsFKgZt
86+
fJItALWehZVbYtl4WHpmrPwV0uW8mKo/T41o2aJDJ3a2BRodqVvTNSZb9YNnLyBkxW+Kc
87+
w1AAk9E2U+tinWxFAJQAE42JZIesv6F9SoJhl9ViYsENjNtwdpndrrF1j2BmmiqJ1kVwp
88+
y4UHnheNUBsIXe2RUnRq2z0m0rQ/kyQQSTluUV0QGnb34a3GuMqPCsiAAbFRuL6Ax8zXu
89+
UoQ+C6BCNXJJzyjbJC9CLILqHLqZUCkYimiBf4+GmoDEANNi5FUZgtwK0p9TJN/7KvLJ0
90+
h+73PtoCnVrnsYcaEu+tJO3Jfm43tilTRixTtVbWL1F+dgnBCdh3dFHm3l16npEMxpyR9
91+
2P6BKyeROBAwaBURc3UhtqZjwMc+YmYLGXRDjd/DKyLHJ0j27ONWCtQHbRzJZjxfvrMfC
92+
dyowl8wOxpgd3EiUDDufncD7JmKBcyJRQOvTTGJz6T3cP8h9b65103faoyVRo0=
93+
cnds_ro_ac_secret: !encrypted/pkcs1-oaep
94+
- KvlXdw4RIkzHwaZPeeI+lhycJboSRBh7DJ/43Q0sNP9o1vkJG72pSv8w2HhycZU95SU6g
95+
k0B5uMwIHpXiQnmjgA4f8lLMkI6ppA5FLL5F3LwsVIlfUI1x8aM8Zl+LyVHSZJ/0kP3l7
96+
QTEJ6DDNVdI6xftCkKQiABUCMYwgbZsU3c3rJeF/RAuCUtrs/gRv+2F4/es7UWaafYvQa
97+
gqx4nC7LGn+7q1UH4BIbwVQdjH8f7H1SSEkz4t1goNqgVMqqv24hNF/KMRRGfZ/Zv9zPt
98+
B+uczjb4Jc6zwJL/zF+sZc1pIt9zn/RijJTYv0BX+ldfMiOflST/FlXcMZqULXHnyQLK/
99+
iqaJcTfI7fv1OCUtpNc0n6dJhK8piU//1JQ3Yanov0QTdEo4OTRxirGxIobzJfFl+hf+8
100+
D5b1ZKqkPhoTGP/vjl1XzvV2QuJ+ZX6P9GWKJr4r/9b2RuwywD71fUbXqmEva3/THY2Sg
101+
gY6QHocYpATL46iLkv97QANNUxTdxL7hQjdl/tf3TAHjCclmxdWhBJdvCJN/1xCM6EgVp
102+
NykBYxJ+kxSmkcFCSdUM8Td75bA/UzkPCdix1reJMdEAxTE9fC55XQ/liTLlGquQDnZty
103+
VLDH7x3ZJcxZsvqKR6vNbYYzJvDPTBYpHrhD7kx3ubyO9KX+SzZ+Dfhe9M8T8U=
82104
poc_wgcloud_ac_id: !encrypted/pkcs1-oaep
83105
- dQIs3NJt1CpP1925+b9QjjwonqjmiuCl1ewxw160yIEHQ/qyQiwutJbsg4IYS9XKhKc2X
84106
GumOOpLY7+/uNRR5pZmEfOdlGnPoJvVhYtCqHBFy7xQ6NLHKFxCT8zHM9ppSl1Hjc2G2F

Standards/scs-0103-v1-standard-flavors.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ track: IaaS
77
description: |
88
The SCS-0103 standard outlines mandatory and recommended specifications for flavors and properties in OpenStack
99
environments to ensure uniformity across SCS clouds. Mandatory and recommended flavors are defined with specific
10-
configurations of vCPUs, vCPU types, RAM, and root disk sizes, alongside extra specs like scs:name-vN, scs:cpu-type,
10+
configurations of vCPUs, vCPU types, RAM, and root disk sizes, alongside extra_specs like scs:name-vN, scs:cpu-type,
1111
and scs:diskN-type to detail the flavor's specifications. This standard facilitates guaranteed availability and
1212
consistency of flavors, simplifying the deployment process for DevOps teams.
1313
---
@@ -18,7 +18,7 @@ Note that this is v1.2 of this standard. See the closing section for more detail
1818

1919
## Terminology
2020

21-
extra_specs
21+
extra\_specs:
2222
Additional properties on an OpenStack flavor, see
2323
[OpenStack Nova user documentation](https://docs.openstack.org/nova/2024.1/user/flavors.html#extra-specs)
2424
and
@@ -33,9 +33,9 @@ OpenStack providers thus typically offer a large selection of flavors.
3333
While flavors can be discovered (`openstack flavor list`), it is helpful for users (DevOps teams),
3434
to have a guaranteed set of flavors available on all SCS clouds, so these need not be discovered.
3535

36-
## Properties (extra_specs)
36+
## Properties (extra\_specs)
3737

38-
The following extra_specs are recognized, together with the respective semantics:
38+
The following extra\_specs are recognized, together with the respective semantics:
3939

4040
- `scs:name-vN=NAME` (where `N` is a positive integer, and `NAME` is some string) means that
4141
`NAME` is a valid name for this flavor according to any major version of the [SCS standard on
@@ -53,22 +53,22 @@ The following extra_specs are recognized, together with the respective semantics
5353

5454
Whenever ANY of these are present on ANY flavor, the corresponding semantics must be satisfied.
5555

56-
The extra_spec `scs:name-vN` is to be interpreted as "name variant N". This name scheme is designed to be
56+
The extra\_spec `scs:name-vN` is to be interpreted as "name variant N". This name scheme is designed to be
5757
backwards compatible with v1.0 of this standard, where `scs:name-vN` is interpreted as
5858
"name according to naming standard vN". We abandon this former interpretation for two reasons:
5959

6060
1. the naming standards admit multiple (even many) names for the same flavor, and we want to provide a means
6161
of advertising more than one of them (said standards recommend using two: a short one and a long one),
6262
2. the same flavor name may be valid according to multiple versions at the same time, which would lead to
63-
a pollution of the extra_specs with redundant properties; for instance, the name
63+
a pollution of the extra\_specs with redundant properties; for instance, the name
6464
`SCS-4V-16` is valid for both [scs-0100-v2](scs-0100-v2-flavor-naming.md) and
6565
[scs-0100-v3](scs-0100-v3-flavor-naming.md), and, since it does not use any extension, it will be valid
6666
for any future version that only changes the extensions, such as the GPU vendor and architecture.
6767

6868
Note that it is not required to use consecutive numbers to number the name variants.
6969
This way, it becomes easier to remove a single variant (no "closing the gap" required).
7070

71-
If extra_specs of the form `scs:name-vN` are used to specify SCS flavor names, it is RECOMMENDED to include
71+
If extra\_specs of the form `scs:name-vN` are used to specify SCS flavor names, it is RECOMMENDED to include
7272
names for the latest stable major version of the standard on flavor naming.
7373

7474
## Standard SCS flavors
@@ -122,17 +122,17 @@ flavors with more RAM than the ones above, they should try to use these.
122122
| Recommended name | vCPUs | vCPU type | RAM [GiB] | Root disk [GB] | Disk type |
123123
| ---------------- | ------ | ------------- | ---------- | --------------- | ---------- |
124124
| SCS-16V-64 | 16 | shared-core | 64 | | |
125-
| SCS-16V-64-100 | 16 | shared-core | 64 | 100 | (any) |
126125
| SCS-8V-64 | 8 | shared-core | 64 | | |
127126
| SCS-16V-128 | 16 | shared-core | 128 | | |
128-
| SCS-8V-64-100 | 8 | shared-core | 64 | 100 | (any) |
129-
| SCS-16V-128-100 | 16 | shared-core | 128 | 100 | (any) |
130-
| SCS-4V-64 | 4 | shared-core | 64 | | |
131-
| SCS-8V-128 | 8 | shared-core | 128 | | |
132-
| SCS-4V-64-100 | 4 | shared-core | 64 | 100 | (any) |
133-
| SCS-8V-128-100 | 8 | shared-core | 128 | 100 | (any) |
134-
| SCS-4V-128 | 4 | shared-core | 128 | | |
135-
| SCS-4V-128-100 | 4 | shared-core | 128 | 100 | (any) |
127+
128+
Note that no flavors with disks have been added here; providers are of course welcome to
129+
also add variants with unspecified (e.g. `-200`) or ssd+ (e.g. `-200s`) disk types.
130+
Sticking to the 5, 10, 20, 50, 100, 200, 500, 1000 schedule for disk sizes is recommended
131+
in that case to avoid unnecessary fragmentation.
132+
133+
Likewise, flavors with more vCPUs (e.g. `-32V`, `-64V`) may be added and we recommend
134+
sticking to powers of two and to keep the vCPU to GiB RAM ratios 1:2, 1:4 and 1:8,
135+
unless customers have very specific demands.
136136

137137
### Guarantees and properties
138138

Standards/scs-0103-w1-standard-flavors-implementation.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ supplements:
99
## Operational tooling
1010

1111
The [openstack-flavor-manager](https://github.com/osism/openstack-flavor-manager) is able to
12-
create all standard, mandatory SCS flavors for you. It takes input that can be generated by
12+
create all standard, mandatory as well as recommended SCS flavors for you. It now has a `--limit-memory`
13+
(defaulting to 32 GiB) to skip the creation of recommended flavors above this memory limit.
14+
15+
You can generate input for it using the tool
1316
[`flavor-manager-input.py`](https://github.com/SovereignCloudStack/standards/blob/main/Tests/iaas/scs_0100_flavor_naming/flavor-manager-input.py).
1417

1518
## Automated tests

Tests/config.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ scopes = [
1919
subjects = [
2020
"scs2",
2121
"artcodix",
22+
"artcodix-ro",
2223
# currently not reachable from outside: "cc-rrze",
2324
"pco-prod1",
2425
"pco-prod2",

Tests/iaas/openstack_test.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
from scs_0115_security_groups.security_groups import \
4141
compute_scs_0115_default_rules
4242
from scs_0116_key_manager.key_manager import \
43-
compute_services_lookup, compute_scs_0116_presence, compute_scs_0116_permissions
43+
ensure_unprivileged, compute_services_lookup, compute_scs_0116_presence, compute_scs_0116_permissions
4444
from scs_0117_volume_backup.volume_backup import \
4545
compute_scs_0117_test_backup
4646
from scs_0123_mandatory_services.mandatory_services import \
@@ -280,6 +280,20 @@ def harness(name, *check_fns):
280280
print(f"{name}: {result}")
281281

282282

283+
def run_sanity_checks(container):
284+
# make sure that we can connect to the cloud and that the user doesn't have elevated privileges
285+
# the former would lead to each testcase aborting with a marginally useful message;
286+
# the latter would lead to scs_0116_permissions aborting, which we don't want to single out
287+
try:
288+
conn = container.conn
289+
except openstack.exceptions.ConfigException:
290+
logger.critical("Please make sure that ~/.config/openstack/clouds.yaml exists and is correct!")
291+
raise
292+
if "member" not in ensure_unprivileged(conn, quiet=True):
293+
logger.critical("Please make sure that your OpenStack user has role member.")
294+
raise RuntimeError("OpenStack user is missing member role.")
295+
296+
283297
def main(argv):
284298
# configure logging, disable verbose library logging
285299
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
@@ -320,6 +334,7 @@ def main(argv):
320334
sys.exit(1)
321335

322336
c = make_container(cloud)
337+
run_sanity_checks(c)
323338
for testcase in testcases:
324339
testcase_name = testcase.rsplit('/', 1)[0] # see the note above
325340
harness(testcase_name, lambda: getattr(c, testcase.replace('-', '_').replace('/', '_')))

Tests/iaas/scs_0116_key_manager/key_manager.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
logger = logging.getLogger(__name__)
88

99

10-
def ensure_unprivileged(conn: openstack.connection.Connection) -> list:
10+
def ensure_unprivileged(conn: openstack.connection.Connection, quiet=False) -> list:
1111
"""
1212
Retrieves role names.
1313
Raises exception if elevated privileges (admin, manager) are present.
@@ -19,6 +19,8 @@ def ensure_unprivileged(conn: openstack.connection.Connection) -> list:
1919
role_names = set(conn.session.auth.get_access(conn.session).role_names)
2020
if role_names & {"admin", "manager"}:
2121
raise RuntimeError("user privileges too high: admin/manager roles detected")
22+
if quiet:
23+
return role_names
2224
if "reader" in role_names:
2325
logger.info("User has reader role.")
2426
custom_roles = sorted(role_names - {"reader", "member"})

compliance-monitor/bootstrap.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ accounts:
1919
delegates:
2020
- zuul_ci
2121
- subject: artcodix
22+
group: artcodix
23+
delegates:
24+
- zuul_ci
25+
- subject: artcodix-ro
26+
group: artcodix
2227
delegates:
2328
- zuul_ci
2429
- subject: cc-rrze

compliance-monitor/templates/overview.md.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ Version numbers are suffixed by a symbol depending on state: * for _draft_, †
1919
| [CC@RRZE](https://www.rrze.fau.de/) | Private Compute Cloud (CC) for [FAU](https://www.fau.de/) | Regionales Rechenzentrum Erlangen |
2020
{#- #} [{{ results | pick(iaas, 'cc-rrze') | summary }}]({{ detail_url('cc-rrze', iaas) }}) {# -#}
2121
| (soon) |
22-
| [CNDS](https://cnds.io/) | Public cloud for customers | artcodix GmbH |
23-
{#- #} [{{ results | pick(iaas, 'artcodix') | summary }}]({{ detail_url('artcodix', iaas) }}) {# -#}
22+
| [CNDS](https://cnds.io/) | Public cloud for customers (2 regions) | artcodix GmbH |
23+
{#- #} [{{ results | pick(iaas, 'artcodix', 'artcodix-ro') | summary }}]({{ detail_url('group-artcodix', iaas) }}) {# -#}
2424
| [HM](https://ohm.muc.cloud.cnds.io/) |
2525
| [pluscloud open](https://www.plusserver.com/en/products/pluscloud-open) | Public cloud for customers (4 regions) | plusserver GmbH | {# #}
2626
{#- #}[{{ results | pick(iaas, 'pco-prod1', 'pco-prod2', 'pco-prod3', 'pco-prod4') | summary }}]({{ detail_url('group-pco-prod', iaas) }}) {# -#}

playbooks/clouds.yaml.j2

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,21 @@ clouds:
1313
interface: public
1414
identity_api_verion: 3
1515
auth_type: "v3applicationcredential"
16-
#region_name: "MUC"
16+
region_name: "MUC"
1717
auth:
1818
auth_url: https://api.dc1.muc.cloud.cnds.io:5000/
1919
application_credential_id: "{{ clouds_conf.cnds_ac_id }}"
2020
application_credential_secret: "{{ clouds_conf.cnds_ac_secret }}"
2121
#project_id: 225a7363dab74b69aa1e3f744aced109
22+
artcodix-ro:
23+
interface: public
24+
identity_api_verion: 3
25+
auth_type: "v3applicationcredential"
26+
region_name: "RO"
27+
auth:
28+
auth_url: https://api.dc1.ro.cloud.cnds.io:5000/
29+
application_credential_id: "{{ clouds_conf.cnds_ro_ac_id }}"
30+
application_credential_secret: "{{ clouds_conf.cnds_ro_ac_secret }}"
2231
cc-rrze:
2332
region_name: "DE-ERL"
2433
interface: "public"

0 commit comments

Comments
 (0)