Skip to content

Commit

Permalink
Update extra specs on existing flavors (#93)
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Berendt <berendt@osism.tech>
  • Loading branch information
berendt authored Dec 19, 2023
1 parent ecc4082 commit 159588d
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 37 deletions.
4 changes: 2 additions & 2 deletions .zuul.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@
- flake8
- mypy
- python-black
- tox-py310:
- tox:
vars:
tox_envlist: test
periodic-daily:
jobs:
- flake8
- mypy
- python-black
- tox-py310:
- tox:
vars:
tox_envlist: test
tag:
Expand Down
67 changes: 32 additions & 35 deletions openstack_flavor_manager/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,41 +32,42 @@ def get_spec_or_default(key_string: str, flavor_spec: dict, defaults: dict):
class Cloud:
def __init__(self, cloud: str) -> None:
self.conn = openstack.connect(cloud=cloud)
self.existing_flavors = self.conn.list_flavors()
self.existing_flavor_names = set(
flavor.name for flavor in self.existing_flavors
)
flavors = self.conn.list_flavors()
self.existing_flavors = {}
for flavor in flavors:
self.existing_flavors[flavor.name] = flavor

def set_flavor(self, flavor_spec: dict, defaults: dict) -> Flavor | None:
flavor_name = get_spec_or_default(
key_string="name", flavor_spec=flavor_spec, defaults=defaults
)

if flavor_name in self.existing_flavor_names:
logger.info(f"Flavor '{flavor_name}' already exists.")
return None

flavor = self.conn.create_flavor(
name=flavor_name,
ram=get_spec_or_default(
key_string="ram", flavor_spec=flavor_spec, defaults=defaults
),
vcpus=get_spec_or_default(
key_string="cpus", flavor_spec=flavor_spec, defaults=defaults
),
disk=get_spec_or_default(
key_string="disk", flavor_spec=flavor_spec, defaults=defaults
),
ephemeral=0,
swap=0,
rxtx_factor=1.0,
is_public=get_spec_or_default(
key_string="public", flavor_spec=flavor_spec, defaults=defaults
),
flavorid=get_spec_or_default(
key_string="flavorid", flavor_spec=flavor_spec, defaults=defaults
),
)
if flavor_name not in self.existing_flavors:
flavor = self.conn.create_flavor(
name=flavor_name,
ram=get_spec_or_default(
key_string="ram", flavor_spec=flavor_spec, defaults=defaults
),
vcpus=get_spec_or_default(
key_string="cpus", flavor_spec=flavor_spec, defaults=defaults
),
disk=get_spec_or_default(
key_string="disk", flavor_spec=flavor_spec, defaults=defaults
),
ephemeral=0,
swap=0,
rxtx_factor=1.0,
is_public=get_spec_or_default(
key_string="public", flavor_spec=flavor_spec, defaults=defaults
),
flavorid=get_spec_or_default(
key_string="flavorid", flavor_spec=flavor_spec, defaults=defaults
),
)
logger.info(f"Flavor {flavor_name} created")
else:
flavor = self.existing_flavors[flavor_name]

extra_specs = {
key: value
for key, value in flavor_spec.items()
Expand Down Expand Up @@ -99,15 +100,11 @@ def __init__(
def run(self) -> None:
for required_flavor in self.required_flavors:
try:
flavor = self.cloud.set_flavor(
self.cloud.set_flavor(
flavor_spec=required_flavor, defaults=self.defaults_dict
)
if flavor:
logger.info(f"Flavor '{required_flavor['name']}' created.")
except Exception as e:
logger.error(
f"Flavor '{required_flavor['name']}' could not be created."
)
logger.error(f"Flavor {required_flavor['name']} could not be created")
logger.error(e)


Expand Down
4 changes: 4 additions & 0 deletions releasenotes/notes/update-extra-specs-844999f80699bad4.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
features:
- |
Update extra specs on existing flavors.

0 comments on commit 159588d

Please sign in to comment.