From 6157efb6888163005bd53eb7472e5dea78095745 Mon Sep 17 00:00:00 2001 From: tessier Date: Sun, 28 Jun 2020 11:02:58 +0900 Subject: [PATCH] [Openstack] autogen + Fixes --- config.py | 11 +- diagrams/openstack/adjacentenablers.py | 11 ++ diagrams/openstack/apiproxies.py | 17 +++ diagrams/openstack/applicationlifecycle.py | 27 ++++ diagrams/openstack/baremetal.py | 19 +++ diagrams/openstack/billing.py | 15 +++ diagrams/openstack/compute.py | 23 ++++ diagrams/openstack/containerservices.py | 15 +++ diagrams/openstack/deployment.py | 35 +++++ diagrams/openstack/frontend.py | 15 +++ diagrams/openstack/lifecyclemanagement.py | 11 ++ diagrams/openstack/monitoring.py | 19 +++ diagrams/openstack/multiregion.py | 15 +++ diagrams/openstack/networking.py | 23 ++++ diagrams/openstack/nfv.py | 15 +++ diagrams/openstack/operations.py | 11 ++ diagrams/openstack/optimization.py | 27 ++++ diagrams/openstack/orchestration.py | 31 +++++ diagrams/openstack/packaging.py | 23 ++++ diagrams/openstack/sharedservices.py | 31 +++++ diagrams/openstack/storage.py | 23 ++++ diagrams/openstack/user.py | 17 +++ diagrams/openstack/workloadprovisioning.py | 23 ++++ docs/nodes/openstack.md | 122 ++++++++++++++++++ .../apiproxies/{ec2-api.png => ec2api.png} | Bin .../OpenStack_Project_Rally_mascot.png | Bin 25284 -> 0 bytes .../operations/optimization/rally.png | Bin 0 -> 20286 bytes scripts/resource.py | 5 + 28 files changed, 582 insertions(+), 2 deletions(-) create mode 100644 diagrams/openstack/adjacentenablers.py create mode 100644 diagrams/openstack/apiproxies.py create mode 100644 diagrams/openstack/applicationlifecycle.py create mode 100644 diagrams/openstack/baremetal.py create mode 100644 diagrams/openstack/billing.py create mode 100644 diagrams/openstack/compute.py create mode 100644 diagrams/openstack/containerservices.py create mode 100644 diagrams/openstack/deployment.py create mode 100644 diagrams/openstack/frontend.py create mode 100644 diagrams/openstack/lifecyclemanagement.py create mode 100644 diagrams/openstack/monitoring.py create mode 100644 diagrams/openstack/multiregion.py create mode 100644 diagrams/openstack/networking.py create mode 100644 diagrams/openstack/nfv.py create mode 100644 diagrams/openstack/operations.py create mode 100644 diagrams/openstack/optimization.py create mode 100644 diagrams/openstack/orchestration.py create mode 100644 diagrams/openstack/packaging.py create mode 100644 diagrams/openstack/sharedservices.py create mode 100644 diagrams/openstack/storage.py create mode 100644 diagrams/openstack/user.py create mode 100644 diagrams/openstack/workloadprovisioning.py create mode 100644 docs/nodes/openstack.md rename resources/openstack/apiproxies/{ec2-api.png => ec2api.png} (100%) delete mode 100644 resources/openstack/operations/optimization/OpenStack_Project_Rally_mascot.png create mode 100644 resources/openstack/operations/optimization/rally.png diff --git a/config.py b/config.py index 30d93887..5bed570e 100644 --- a/config.py +++ b/config.py @@ -66,7 +66,7 @@ UPPER_WORDS = { "oci": ("oci",), "elastic": ("apm", "siem", "ece", "eck"), "generic": ("vpn", "ios", "xen"), - "openstack": (), + "openstack": ("rpm", "loci", "nfv"), } TITLE_WORDS = { @@ -386,5 +386,12 @@ ALIASES = { } }, "generic": {}, - "openstack": {}, + "openstack": { + "apiproxies": { + "Ec2api": "EC2API", + }, + "user": { + "Openstackclient": "OpenStackClient", + }, + }, } diff --git a/diagrams/openstack/adjacentenablers.py b/diagrams/openstack/adjacentenablers.py new file mode 100644 index 00000000..08b69a52 --- /dev/null +++ b/diagrams/openstack/adjacentenablers.py @@ -0,0 +1,11 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Adjacentenablers(_OpenStack): + _type = "adjacentenablers" + _icon_dir = "resources/openstack/adjacentenablers" + + +# Aliases diff --git a/diagrams/openstack/apiproxies.py b/diagrams/openstack/apiproxies.py new file mode 100644 index 00000000..2caf0f4c --- /dev/null +++ b/diagrams/openstack/apiproxies.py @@ -0,0 +1,17 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Apiproxies(_OpenStack): + _type = "apiproxies" + _icon_dir = "resources/openstack/apiproxies" + + +class Ec2Api(_Apiproxies): + _icon = "ec2api.png" + + +# Aliases + +EC2API = Ec2api diff --git a/diagrams/openstack/applicationlifecycle.py b/diagrams/openstack/applicationlifecycle.py new file mode 100644 index 00000000..06aad638 --- /dev/null +++ b/diagrams/openstack/applicationlifecycle.py @@ -0,0 +1,27 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Applicationlifecycle(_OpenStack): + _type = "applicationlifecycle" + _icon_dir = "resources/openstack/applicationlifecycle" + + +class Freezer(_Applicationlifecycle): + _icon = "freezer.png" + + +class Masakari(_Applicationlifecycle): + _icon = "masakari.png" + + +class Murano(_Applicationlifecycle): + _icon = "murano.png" + + +class Solum(_Applicationlifecycle): + _icon = "solum.png" + + +# Aliases diff --git a/diagrams/openstack/baremetal.py b/diagrams/openstack/baremetal.py new file mode 100644 index 00000000..f4535e0b --- /dev/null +++ b/diagrams/openstack/baremetal.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Baremetal(_OpenStack): + _type = "baremetal" + _icon_dir = "resources/openstack/baremetal" + + +class Cyborg(_Baremetal): + _icon = "cyborg.png" + + +class Ironic(_Baremetal): + _icon = "ironic.png" + + +# Aliases diff --git a/diagrams/openstack/billing.py b/diagrams/openstack/billing.py new file mode 100644 index 00000000..1da5da63 --- /dev/null +++ b/diagrams/openstack/billing.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Billing(_OpenStack): + _type = "billing" + _icon_dir = "resources/openstack/billing" + + +class Cloudkitty(_Billing): + _icon = "cloudkitty.png" + + +# Aliases diff --git a/diagrams/openstack/compute.py b/diagrams/openstack/compute.py new file mode 100644 index 00000000..74901087 --- /dev/null +++ b/diagrams/openstack/compute.py @@ -0,0 +1,23 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Compute(_OpenStack): + _type = "compute" + _icon_dir = "resources/openstack/compute" + + +class Nova(_Compute): + _icon = "nova.png" + + +class Qinling(_Compute): + _icon = "qinling.png" + + +class Zun(_Compute): + _icon = "zun.png" + + +# Aliases diff --git a/diagrams/openstack/containerservices.py b/diagrams/openstack/containerservices.py new file mode 100644 index 00000000..cf3690f6 --- /dev/null +++ b/diagrams/openstack/containerservices.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Containerservices(_OpenStack): + _type = "containerservices" + _icon_dir = "resources/openstack/containerservices" + + +class Kuryr(_Containerservices): + _icon = "kuryr.png" + + +# Aliases diff --git a/diagrams/openstack/deployment.py b/diagrams/openstack/deployment.py new file mode 100644 index 00000000..65692cac --- /dev/null +++ b/diagrams/openstack/deployment.py @@ -0,0 +1,35 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Deployment(_OpenStack): + _type = "deployment" + _icon_dir = "resources/openstack/deployment" + + +class Ansible(_Deployment): + _icon = "ansible.png" + + +class Charms(_Deployment): + _icon = "charms.png" + + +class Chef(_Deployment): + _icon = "chef.png" + + +class Helm(_Deployment): + _icon = "helm.png" + + +class Kolla(_Deployment): + _icon = "kolla.png" + + +class Tripleo(_Deployment): + _icon = "tripleo.png" + + +# Aliases diff --git a/diagrams/openstack/frontend.py b/diagrams/openstack/frontend.py new file mode 100644 index 00000000..b490f022 --- /dev/null +++ b/diagrams/openstack/frontend.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Frontend(_OpenStack): + _type = "frontend" + _icon_dir = "resources/openstack/frontend" + + +class Horizon(_Frontend): + _icon = "horizon.png" + + +# Aliases diff --git a/diagrams/openstack/lifecyclemanagement.py b/diagrams/openstack/lifecyclemanagement.py new file mode 100644 index 00000000..d657ba45 --- /dev/null +++ b/diagrams/openstack/lifecyclemanagement.py @@ -0,0 +1,11 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Lifecyclemanagement(_OpenStack): + _type = "lifecyclemanagement" + _icon_dir = "resources/openstack/lifecyclemanagement" + + +# Aliases diff --git a/diagrams/openstack/monitoring.py b/diagrams/openstack/monitoring.py new file mode 100644 index 00000000..d1379265 --- /dev/null +++ b/diagrams/openstack/monitoring.py @@ -0,0 +1,19 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Monitoring(_OpenStack): + _type = "monitoring" + _icon_dir = "resources/openstack/monitoring" + + +class Monasca(_Monitoring): + _icon = "monasca.png" + + +class Telemetry(_Monitoring): + _icon = "telemetry.png" + + +# Aliases diff --git a/diagrams/openstack/multiregion.py b/diagrams/openstack/multiregion.py new file mode 100644 index 00000000..2d7c132c --- /dev/null +++ b/diagrams/openstack/multiregion.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Multiregion(_OpenStack): + _type = "multiregion" + _icon_dir = "resources/openstack/multiregion" + + +class Tricircle(_Multiregion): + _icon = "tricircle.png" + + +# Aliases diff --git a/diagrams/openstack/networking.py b/diagrams/openstack/networking.py new file mode 100644 index 00000000..24226c9c --- /dev/null +++ b/diagrams/openstack/networking.py @@ -0,0 +1,23 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Networking(_OpenStack): + _type = "networking" + _icon_dir = "resources/openstack/networking" + + +class Designate(_Networking): + _icon = "designate.png" + + +class Neutron(_Networking): + _icon = "neutron.png" + + +class Octavia(_Networking): + _icon = "octavia.png" + + +# Aliases diff --git a/diagrams/openstack/nfv.py b/diagrams/openstack/nfv.py new file mode 100644 index 00000000..59f05598 --- /dev/null +++ b/diagrams/openstack/nfv.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _NFV(_OpenStack): + _type = "nfv" + _icon_dir = "resources/openstack/nfv" + + +class Tacker(_NFV): + _icon = "tacker.png" + + +# Aliases diff --git a/diagrams/openstack/operations.py b/diagrams/openstack/operations.py new file mode 100644 index 00000000..1e954f9f --- /dev/null +++ b/diagrams/openstack/operations.py @@ -0,0 +1,11 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Operations(_OpenStack): + _type = "operations" + _icon_dir = "resources/openstack/operations" + + +# Aliases diff --git a/diagrams/openstack/optimization.py b/diagrams/openstack/optimization.py new file mode 100644 index 00000000..71e611cf --- /dev/null +++ b/diagrams/openstack/optimization.py @@ -0,0 +1,27 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Optimization(_OpenStack): + _type = "optimization" + _icon_dir = "resources/openstack/optimization" + + +class Congress(_Optimization): + _icon = "congress.png" + + +class Rally(_Optimization): + _icon = "rally.png" + + +class Vitrage(_Optimization): + _icon = "vitrage.png" + + +class Watcher(_Optimization): + _icon = "watcher.png" + + +# Aliases diff --git a/diagrams/openstack/orchestration.py b/diagrams/openstack/orchestration.py new file mode 100644 index 00000000..1718dd86 --- /dev/null +++ b/diagrams/openstack/orchestration.py @@ -0,0 +1,31 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Orchestration(_OpenStack): + _type = "orchestration" + _icon_dir = "resources/openstack/orchestration" + + +class Blazar(_Orchestration): + _icon = "blazar.png" + + +class Heat(_Orchestration): + _icon = "heat.png" + + +class Mistral(_Orchestration): + _icon = "mistral.png" + + +class Senlin(_Orchestration): + _icon = "senlin.png" + + +class Zaqar(_Orchestration): + _icon = "zaqar.png" + + +# Aliases diff --git a/diagrams/openstack/packaging.py b/diagrams/openstack/packaging.py new file mode 100644 index 00000000..47a61c37 --- /dev/null +++ b/diagrams/openstack/packaging.py @@ -0,0 +1,23 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Packaging(_OpenStack): + _type = "packaging" + _icon_dir = "resources/openstack/packaging" + + +class LOCI(_Packaging): + _icon = "loci.png" + + +class Puppet(_Packaging): + _icon = "puppet.png" + + +class RPM(_Packaging): + _icon = "rpm.png" + + +# Aliases diff --git a/diagrams/openstack/sharedservices.py b/diagrams/openstack/sharedservices.py new file mode 100644 index 00000000..d01634ef --- /dev/null +++ b/diagrams/openstack/sharedservices.py @@ -0,0 +1,31 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Sharedservices(_OpenStack): + _type = "sharedservices" + _icon_dir = "resources/openstack/sharedservices" + + +class Barbican(_Sharedservices): + _icon = "barbican.png" + + +class Glance(_Sharedservices): + _icon = "glance.png" + + +class Karbor(_Sharedservices): + _icon = "karbor.png" + + +class Keystone(_Sharedservices): + _icon = "keystone.png" + + +class Searchlight(_Sharedservices): + _icon = "searchlight.png" + + +# Aliases diff --git a/diagrams/openstack/storage.py b/diagrams/openstack/storage.py new file mode 100644 index 00000000..6c5ddf15 --- /dev/null +++ b/diagrams/openstack/storage.py @@ -0,0 +1,23 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Storage(_OpenStack): + _type = "storage" + _icon_dir = "resources/openstack/storage" + + +class Cinder(_Storage): + _icon = "cinder.png" + + +class Manila(_Storage): + _icon = "manila.png" + + +class Swift(_Storage): + _icon = "swift.png" + + +# Aliases diff --git a/diagrams/openstack/user.py b/diagrams/openstack/user.py new file mode 100644 index 00000000..b3a9e6f9 --- /dev/null +++ b/diagrams/openstack/user.py @@ -0,0 +1,17 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _User(_OpenStack): + _type = "user" + _icon_dir = "resources/openstack/user" + + +class Openstackclient(_User): + _icon = "openstackclient.png" + + +# Aliases + +OpenStackClient = Openstackclient diff --git a/diagrams/openstack/workloadprovisioning.py b/diagrams/openstack/workloadprovisioning.py new file mode 100644 index 00000000..d43f37ae --- /dev/null +++ b/diagrams/openstack/workloadprovisioning.py @@ -0,0 +1,23 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OpenStack + + +class _Workloadprovisioning(_OpenStack): + _type = "workloadprovisioning" + _icon_dir = "resources/openstack/workloadprovisioning" + + +class Magnum(_Workloadprovisioning): + _icon = "magnum.png" + + +class Sahara(_Workloadprovisioning): + _icon = "sahara.png" + + +class Trove(_Workloadprovisioning): + _icon = "trove.png" + + +# Aliases diff --git a/docs/nodes/openstack.md b/docs/nodes/openstack.md new file mode 100644 index 00000000..b95666e6 --- /dev/null +++ b/docs/nodes/openstack.md @@ -0,0 +1,122 @@ +--- +id: openstack +title: OpenStack +--- + +Node classes list of openstack provider. + +## openstack.adjacentenablers + + +## openstack.apiproxies + +- **diagrams.openstack.apiproxies.Ec2Api** + +## openstack.applicationlifecycle + +- **diagrams.openstack.applicationlifecycle.Freezer** +- **diagrams.openstack.applicationlifecycle.Masakari** +- **diagrams.openstack.applicationlifecycle.Murano** +- **diagrams.openstack.applicationlifecycle.Solum** + +## openstack.baremetal + +- **diagrams.openstack.baremetal.Cyborg** +- **diagrams.openstack.baremetal.Ironic** + +## openstack.billing + +- **diagrams.openstack.billing.Cloudkitty** + +## openstack.compute + +- **diagrams.openstack.compute.Nova** +- **diagrams.openstack.compute.Qinling** +- **diagrams.openstack.compute.Zun** + +## openstack.containerservices + +- **diagrams.openstack.containerservices.Kuryr** + +## openstack.deployment + +- **diagrams.openstack.deployment.Ansible** +- **diagrams.openstack.deployment.Charms** +- **diagrams.openstack.deployment.Chef** +- **diagrams.openstack.deployment.Helm** +- **diagrams.openstack.deployment.Kolla** +- **diagrams.openstack.deployment.Tripleo** + +## openstack.frontend + +- **diagrams.openstack.frontend.Horizon** + +## openstack.lifecyclemanagement + + +## openstack.monitoring + +- **diagrams.openstack.monitoring.Monasca** +- **diagrams.openstack.monitoring.Telemetry** + +## openstack.multiregion + +- **diagrams.openstack.multiregion.Tricircle** + +## openstack.networking + +- **diagrams.openstack.networking.Designate** +- **diagrams.openstack.networking.Neutron** +- **diagrams.openstack.networking.Octavia** + +## openstack.nfv + +- **diagrams.openstack.nfv.Tacker** + +## openstack.operations + + +## openstack.optimization + +- **diagrams.openstack.optimization.Congress** +- **diagrams.openstack.optimization.Rally** +- **diagrams.openstack.optimization.Vitrage** +- **diagrams.openstack.optimization.Watcher** + +## openstack.orchestration + +- **diagrams.openstack.orchestration.Blazar** +- **diagrams.openstack.orchestration.Heat** +- **diagrams.openstack.orchestration.Mistral** +- **diagrams.openstack.orchestration.Senlin** +- **diagrams.openstack.orchestration.Zaqar** + +## openstack.packaging + +- **diagrams.openstack.packaging.LOCI** +- **diagrams.openstack.packaging.Puppet** +- **diagrams.openstack.packaging.RPM** + +## openstack.sharedservices + +- **diagrams.openstack.sharedservices.Barbican** +- **diagrams.openstack.sharedservices.Glance** +- **diagrams.openstack.sharedservices.Karbor** +- **diagrams.openstack.sharedservices.Keystone** +- **diagrams.openstack.sharedservices.Searchlight** + +## openstack.storage + +- **diagrams.openstack.storage.Cinder** +- **diagrams.openstack.storage.Manila** +- **diagrams.openstack.storage.Swift** + +## openstack.user + +- **diagrams.openstack.user.Openstackclient**, **OpenStackClient** (alias) + +## openstack.workloadprovisioning + +- **diagrams.openstack.workloadprovisioning.Magnum** +- **diagrams.openstack.workloadprovisioning.Sahara** +- **diagrams.openstack.workloadprovisioning.Trove** diff --git a/resources/openstack/apiproxies/ec2-api.png b/resources/openstack/apiproxies/ec2api.png similarity index 100% rename from resources/openstack/apiproxies/ec2-api.png rename to resources/openstack/apiproxies/ec2api.png diff --git a/resources/openstack/operations/optimization/OpenStack_Project_Rally_mascot.png b/resources/openstack/operations/optimization/OpenStack_Project_Rally_mascot.png deleted file mode 100644 index 6f09b314b9aeaa1628cc8ee99b19c34f56d499a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25284 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 literal 0 HcmV?d00001 diff --git a/scripts/resource.py b/scripts/resource.py index 9941f6e6..0c963966 100644 --- a/scripts/resource.py +++ b/scripts/resource.py @@ -109,6 +109,10 @@ def cleaner_elastic(f): return f.lower() +def cleaner_openstack(f): + return f.lower() + + cleaners = { "onprem": cleaner_onprem, "aws": cleaner_aws, @@ -122,6 +126,7 @@ cleaners = { "saas": cleaner_saas, "elastic": cleaner_elastic, "generic": cleaner_generic, + "openstack": cleaner_openstack, }