← Back to team overview

launchpad-reviewers team mailing list archive

Re: [Merge] ~ines-almeida/launchpad-mojo-specs/+git/private:add-bos03-arm64-arch into ~launchpad/launchpad-mojo-specs/+git/private:vbuilder

 

Review: Needs Fixing

A good first try!  Needs a few fixes, but something like this should work.

Diff comments:

> diff --git a/vbuilder/bundle.yaml b/vbuilder/bundle.yaml
> index c601076..ec2d038 100644
> --- a/vbuilder/bundle.yaml
> +++ b/vbuilder/bundle.yaml
> @@ -131,7 +131,7 @@
>  {%-   set openstack_username_lcy02 = "launchpad-vbuilder-staging" %}
>  {%-   set vbuilders_bos01 = {"amd64": {"series": "focal", "flavor": "vbuilder-gpu", "count": 1}, "arm64": {"series": "focal", "count": 1, "config_drive": false}, "arm64-gpu": {"arch_base": "arm64", "arch_suffix": "-gpu", "series": "focal", "flavor": "vbuilder-nvidia-l4", "count": 1, "config_drive": false}, "ppc64el": {"series": "focal", "count": 1}, "s390x": {"series": "focal", "count": 1}} %}
>  {%-   set vbuilders_bos02 = {"arm64": {"series": "focal", "count": 1, "config_drive": false}, "ppc64el": {"series": "focal", "count": 1}, "s390x": {"series": "focal", "count": 1}} %}
> -{%-   set vbuilders_bos03 = {"amd64": {"series": "focal", "count": 4}, "riscv64": {"series": "jammy", "count": 1, "config_drive": false}} %}
> +{%-   set vbuilders_bos03 = {"amd64": {"series": "focal", "count": 4}, "riscv64": {"series": "jammy", "count": 1, "config_drive": false}, "arm64": {"series": "focal", "count": 1},} %}

I'm not 100% sure the trailing comma is safe here, and in any case it isn't needed.

We'll need `"config_drive": false` for the arm64 case (which is a workaround for OpenStack issues IIRC - I've slightly forgotten the details but they should be in git history if you're interested).

We'll also need `"flavor": "vbuilder-arm64"`, since that seems to be the relevant entry in `openstack flavor list`.

Could you keep this dict sorted by architecture name?

>  {%-   set vbuilders_lcy02 = {"amd64": {"series": "focal", "count": 4}} %}
>  {%-   set vbuilder_prefix = "qastaging-" %}
>  {%- endif %}
> @@ -323,6 +323,24 @@ applications:
>        use_swift: false
>        visibility: private
>  {%- endif %}
> +{%- if stage_name == "qastaging" %}
> +  glance-simplestreams-sync-bos03-arm64:

Please sort this between `glance-simplestreams-sync-bos03-amd64` and `glance-simplestreams-sync-bos03-riscv64`.

> +    charm: {{ charm_dir }}/glance-simplestreams-sync
> +    constraints: "{{ extra_constraints }}"
> +    num_units: 1
> +    options:
> +      content_id_template: "{{ content_id_template }}"

Add this so that instances will boot properly:

      custom_properties: 'hypervisor_type=kvm hw_firmware_type=uefi'

> +      mirror_list: |-
> +        [{url: "http://cloud-images.ubuntu.com/daily/";, name_prefix: "ubuntu:released", path: "streams/v1/index.sjson", max: 3, item_filters: ["release~({{ gss_series }})", "arch~(arm64|aarch64)", "ftype~(disk1.img|disk.img)"]}]
> +      name_prefix: "{{ name_prefix }}/"
> +      openstack-auth-url: "https://keystone.ps6.canonical.com:5000/v3";
> +      openstack-identity-api-version: "3"
> +      openstack-tenant-name: "{{ openstack_tenant_name_bos03 }}"
> +      openstack-username: "{{ openstack_username_bos03 }}"
> +      region: scalingstack-bos03
> +      use_swift: false
> +      visibility: private
> +{%- endif %}
>    glance-simplestreams-sync-lcy02-amd64:
>      charm: {{ charm_dir }}/glance-simplestreams-sync
>      constraints: "{{ extra_constraints }}"
> @@ -440,6 +458,14 @@ applications:
>        remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
>        remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub
>  {%- endif %}
> +{%- if stage_name == "qastaging" %}
> +  launchpad-buildd-image-modifier-bos03-arm64:

Please sort this between `launchpad-buildd-image-modifier-bos03-amd64` and `launchpad-buildd-image-modifier-bos03-riscv64`.

> +    charm: {{ charm_dir }}/launchpad-buildd-image-modifier
> +    options:
> +      clamav-database-url: "{{ clamav_database_url }}"
> +      launchpad-buildd-repository: "{{ launchpad_buildd_repository }}"
> +      linux-command-line-extra: "systemd.unified_cgroup_hierarchy=false"

Add the `compat_uts_machine=armv7l` Linux command-line option as well, so that arm64 machines will behave as expected when running armhf builds.  See other arm64 sections.

Also, since images will need to be built on a machine other than the g-s-s unit, add:

      remote-modifiers: '{{ modifiers_bos03 }}'
      remote-modifier-private-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder
      remote-modifier-public-key: include-base64://{{ local_dir }}/id_rsa.imagebuilder.pub

Before landing this, we'll need to create an appropriate persistent instance from the management environment after sourcing `~/.scalingstack/scalingstack-bos03-vbuilder-staging.novarc`, and add its IP address to `modifiers_bos03`.  This is always something we've done ad-hoc, since Juju can't necessarily help us with all architectures; `history | grep 'openstack server create'` in the management environment may be helpful in figuring out what to do, though the exact details do tend to differ between regions and architectures.

> +{%- endif %}
>    vbuilder-manage-bos01:
>      charm: {{ charm_dir }}/vbuilder-manage
>      constraints: "cores=2 mem=8G root-disk=20G {{ extra_constraints }}"
> @@ -572,6 +598,9 @@ relations:
>  {%- if stage_name in ("production", "qastaging") %}
>    - ["glance-simplestreams-sync-bos03-riscv64:image-modifier", "launchpad-buildd-image-modifier-bos03-riscv64:image-modifier"]
>  {%- endif %}
> +{%- if stage_name == "qastaging" %}
> +  - ["glance-simplestreams-sync-bos03-arm64:image-modifier", "launchpad-buildd-image-modifier-bos03-arm64:image-modifier"]
> +{%- endif %}

As above, please keep these sorted within each group.

>    - ["glance-simplestreams-sync-lcy02-amd64:image-modifier", "launchpad-buildd-image-modifier-amd64:image-modifier"]
>    - ["vbuilder-manage-bos01:amqp", "rabbitmq-server:amqp"]
>    - ["vbuilder-manage-bos02:amqp", "rabbitmq-server:amqp"]
> @@ -590,6 +619,9 @@ relations:
>  {%- if stage_name in ("production", "qastaging") %}
>    - ["glance-simplestreams-sync-bos03-riscv64", "ntp"]
>  {%- endif %}
> +{%- if stage_name == "qastaging" %}
> +  - ["glance-simplestreams-sync-bos03-arm64", "ntp"]
> +{%- endif %}

As above, please keep these sorted within each group.

>    - ["glance-simplestreams-sync-lcy02-amd64", "ntp"]
>    - ["vbuilder-manage-bos01", "ntp"]
>    - ["vbuilder-manage-bos02", "ntp"]
> diff --git a/vbuilder/rebuild-images b/vbuilder/rebuild-images
> index 5979c46..363e4a7 100755
> --- a/vbuilder/rebuild-images
> +++ b/vbuilder/rebuild-images
> @@ -23,6 +23,7 @@ targets_by_stage = {
>          ("bos02", "s390x", "focal"),
>          ("bos03", "amd64", "focal"),
>          ("bos03", "riscv64", "jammy"),
> +        ("bos03", "arm64", "focal"),

Sorting.

>          ("lcy02", "amd64", "focal"),
>          ],
>      "staging": [
> diff --git a/vbuilder/upgrade-charms b/vbuilder/upgrade-charms
> index bd46c6a..3e3c04c 100755
> --- a/vbuilder/upgrade-charms
> +++ b/vbuilder/upgrade-charms
> @@ -18,6 +18,7 @@ targets_by_stage = {
>          ("bos02", "s390x"),
>          ("bos03", "amd64"),
>          ("bos03", "riscv64"),
> +        ("bos03", "arm64"),

Sorting.

>          ("lcy02", "amd64"),
>      ],
>      "staging": [


-- 
https://code.launchpad.net/~ines-almeida/launchpad-mojo-specs/+git/private/+merge/455059
Your team Launchpad code reviewers is subscribed to branch ~launchpad/launchpad-mojo-specs/+git/private:vbuilder.



References