Add job to generate rust code

Change-Id: I322d117a7cce23c96331f2f294374cde87325c99
This commit is contained in:
Artem Goncharov 2024-06-18 17:24:06 +02:00
parent c2980a28c4
commit 5420dbb0c9
12 changed files with 1932 additions and 6 deletions

View File

@ -82,7 +82,7 @@ class ManilaGenerator(OpenStackServerSourceBase):
impl_path = Path(
work_dir,
"openapi_specs",
"shared_file_system",
"shared-file-system",
f"v{self.api_version}.yaml",
)
impl_path.parent.mkdir(parents=True, exist_ok=True)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
---
- hosts: all
roles:
- ensure-pip
- ensure-virtualenv
- ensure-codegenerator

View File

@ -1,11 +1,9 @@
---
- hosts: all
vars:
dest: "{{ zuul.project.src_dir }}/doc/build/html"
tasks:
- name: Precreate directories
ansible.builtin.file:
path: "{{ dest }}/specs/{{ zj_artifact.metadata.service_type }}"
path: "{{ openapi_dest }}/{{ zj_artifact.metadata.service_type }}"
state: "directory"
loop: "{{ zuul.artifacts }}"
loop_control:
@ -19,7 +17,7 @@
- name: Download specs
ansible.builtin.uri:
url: "{{ zj_artifact.url }}"
dest: "{{ dest }}/specs/{{ zj_artifact.metadata.service_type }}"
dest: "{{ openapi_dest }}/{{ zj_artifact.metadata.service_type }}"
loop: "{{ zuul.artifacts }}"
loop_control:
loop_var: zj_artifact

15
playbooks/rust/all.yaml Normal file
View File

@ -0,0 +1,15 @@
---
- hosts: all
roles:
- "ensure-rust"
tasks:
- name: Generate Rust code
ansible.builtin.include_role:
name: codegenerator
vars:
codegenerator_target: "{{ zj_item.1 }}"
codegenerator_metadata: "{{ zj_item.0.metadata }}"
codegenerator_service_type: "{{ zj_item.0.service }}"
loop: "{{ codegenerator_service_metadata_target_map | subelements('targets') }}"
loop_control:
loop_var: zj_item

View File

@ -0,0 +1,4 @@
---
codegenerator_src: "{{ zuul.projects['opendev.org/openstack/codegenerator'].src_dir }}"
codegenerator_venv: "{{ ansible_user_dir }}/.venv"
codegenerator_work_dir: wrk

View File

@ -0,0 +1,16 @@
---
- name: Invoke openstack-codegenerator
args:
chdir: "{{ codegenerator_base_dir }}"
executable: "/bin/bash"
ansible.builtin.shell: >-
source {{ codegenerator_venv }}/bin/activate;
openstack-codegenerator
--work-dir {{ codegenerator_base_dir }}/{{ codegenerator_work_dir }}
--target {{ codegenerator_target }}
{% if codegenerator_metadata is defined%}
--metadata {{ codegenerator_metadata }}
{% endif %}
{% if codegenerator_service_type is defined %}
--service {{ codegenerator_service_type }}
{% endif %}

View File

@ -0,0 +1,3 @@
---
codegenerator_src: "{{ zuul.projects['opendev.org/openstack/codegenerator'].src_dir }}"
codegenerator_venv: "{{ ansible_user_dir }}/.venv"

View File

@ -0,0 +1,6 @@
---
- name: Install openstack-codegenerator from sources
ansible.builtin.pip:
chdir: "{{ codegenerator_src }}"
name: "."
virtualenv: "{{ codegenerator_venv }}"

View File

@ -42,7 +42,7 @@
- name: openstack/cinder
vars:
openapi_service: volume
openapi_service: block-storage
install_additional_projects:
- project: "opendev.org/openstack/cinder"
name: "."
@ -307,3 +307,4 @@
- playbooks/openapi/fetch.yaml
vars:
tox_envlist: publish-openapi-specs
openapi_dest: "{{ zuul.project.src_dir }}/doc/build/html/specs"

View File

@ -16,6 +16,7 @@
- codegenerator-openapi-placement-tips-with-api-ref
- codegenerator-openapi-shared-file-system-tips-with-api-ref
- codegenerator-tox-publish-openapi-specs
- codegenerator-rust-all
gate:
jobs:
- openstack-tox-pep8
@ -30,3 +31,4 @@
- codegenerator-openapi-placement-tips-with-api-ref
- codegenerator-openapi-shared-file-system-tips-with-api-ref
- codegenerator-tox-publish-openapi-specs
- codegenerator-rust-all

66
zuul.d/rust.yaml Normal file
View File

@ -0,0 +1,66 @@
---
- job:
name: codegenerator-rust-base
parent: unittests
description: |
Base job for generation of the Rust code
attempts: 1
timeout: 1800
pre-run:
- playbooks/codegenerator/pre.yaml
vars:
codegenerator_service_metadata_target_map:
- service: "block-storage"
metadata: "metadata/block-storage_metadata.yaml"
targets: ["rust-sdk", "rust-cli"]
- service: "compute"
metadata: "metadata/compute_metadata.yaml"
targets: ["rust-sdk", "rust-cli"]
- service: "identity"
metadata: "metadata/identity_metadata.yaml"
targets: ["rust-sdk", "rust-cli"]
- service: "image"
metadata: "metadata/image_metadata.yaml"
targets: ["rust-sdk", "rust-cli"]
- service: "load-balancer"
metadata: "metadata/load-balancer_metadata.yaml"
targets: ["rust-sdk", "rust-cli"]
- service: "network"
metadata: "metadata/network_metadata.yaml"
targets: ["rust-sdk", "rust-cli"]
- service: "object-store"
metadata: "metadata/object-store_metadata.yaml"
targets: ["rust-sdk"]
# - service: "shared-file-system"
# metadata: "metadata/shared-file-system_metadata.yaml"
# targets: ["rust-sdk"]
- job:
name: codegenerator-rust-all
parent: codegenerator-rust-base
description: |
Generate Rust SDK/CLI
dependencies:
- name: codegenerator-openapi-block-storage-tips-with-api-ref
soft: true
- name: codegenerator-openapi-compute-tips-with-api-ref
soft: true
- name: codegenerator-openapi-identity-tips-with-api-ref
soft: true
- name: codegenerator-openapi-image-tips-with-api-ref
soft: true
- name: codegenerator-openapi-load-balancing-tips-with-api-ref
soft: true
- name: codegenerator-openapi-network-tips-with-api-ref
soft: true
- name: codegenerator-openapi-object-store-static
soft: true
- name: codegenerator-openapi-placement-tips-with-api-ref
soft: true
- name: codegenerator-openapi-shared-file-system-tips-with-api-ref
soft: true
pre-run: playbooks/openapi/fetch.yaml
run: playbooks/rust/all.yaml
vars:
codegenerator_base_dir: "{{ zuul.project.src_dir }}"
openapi_dest: "{{ codegenerator_base_dir }}/wrk/openapi_specs"