Bug 1888105

Summary: Manila scheduler ignores storage protocol
Product: Red Hat OpenStack Reporter: Goutham Pacha Ravi <gouthamr>
Component: openstack-manilaAssignee: Goutham Pacha Ravi <gouthamr>
Status: CLOSED ERRATA QA Contact: lkuchlan <lkuchlan>
Severity: medium Docs Contact: RHOS Documentation Team <rhos-docs>
Priority: medium    
Version: 16.1 (Train)CC: gfidente, gregraka, vimartin
Target Milestone: AlphaKeywords: Bugfix, Triaged
Target Release: 16.2 (Train on RHEL 8.4)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-manila-9.1.6-2.20210603154809.479a8a7.el8 Doc Type: Bug Fix
Doc Text:
When multiple storage backends are configured on the Shared File Systems service (manila), each storage back end might support a different storage protocol. Before this update, the Shared File Systems service scheduler did not consider the storage protocol and capability of the shared storage back ends when deciding where to place them, which caused share provisioning to fail. With this update, the Shared File Systems service scheduler now automatically considers the share type extra specs with the storage protocol, which makes it possible use the `CapabilitiesFilter` to compare storage back end capabilities and provision shares successfully.
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-09-15 07:09:53 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Goutham Pacha Ravi 2020-10-14 04:53:47 UTC
Description of problem:

When using Manila, you can specify the NAS protocol that the share needs to be exported with. For example, with the CLI, creating an 10Gib NFS share will be:

  $ manila create nfs 10 --name testshare

The scheduler must take the protocol capability of the backends to make its scheduling decision. However, this isn't happening. 

This bug can be reproduced in two ways:

1) a) Enable a fake/unsupported NAS protocol in manila by modifying   
     '[DEFAULT]/enabled_share_protocols'
   b) Create a share with the fake protocol - manila will schedule the share, and then 
      the share could be in "error" state if the backend performs a protocol 
      supportability check. 

2) a) Enable two manila backends that support different protocols, for example:
      Native CephFS and CephFS-via-NFS
   b) Create a Native CephFS share, there is a possibility that the CephFS-via-NFS
      backend is chosen as the candidate to land the share.

Comment 7 lkuchlan 2021-06-24 09:51:29 UTC
Tested using:
puppet-manila-15.5.0-2.20210601014536.9c6604a.el8ost.2.noarch
python3-manilaclient-1.29.0-2.20210528015043.1b2cafb.el8ost.1.noarch

Verification steps:
===================

Positive test:
--------------

(overcloud) [stack@undercloud-0 ~]$ manila type-list
+--------------------------------------+---------+------------+------------+--------------------------------------+----------------------+-------------+
| ID                                   | Name    | visibility | is_default | required_extra_specs                 | optional_extra_specs | Description |
+--------------------------------------+---------+------------+------------+--------------------------------------+----------------------+-------------+
| 885af7f9-8c29-4615-b0e5-7d97f4ed4703 | default | public     | YES        | driver_handles_share_servers : False |                      | None        |
+--------------------------------------+---------+------------+------------+--------------------------------------+----------------------+-------------+
(overcloud) [stack@undercloud-0 ~]$ manila create cephfs 1
+---------------------------------------+--------------------------------------+
| Property                              | Value                                |
+---------------------------------------+--------------------------------------+
| id                                    | c471799d-dda9-4f67-bdc9-21a92a3b2442 |
| size                                  | 1                                    |
| availability_zone                     | None                                 |
| created_at                            | 2021-06-24T06:46:38.000000           |
| status                                | creating                             |
| name                                  | None                                 |
| description                           | None                                 |
| project_id                            | 84f5cbd3e2a64dc2bc1d811cf315ccb7     |
| snapshot_id                           | None                                 |
| share_network_id                      | None                                 |
| share_proto                           | CEPHFS                               |
| metadata                              | {}                                   |
| share_type                            | 885af7f9-8c29-4615-b0e5-7d97f4ed4703 |
| is_public                             | False                                |
| snapshot_support                      | False                                |
| task_state                            | None                                 |
| share_type_name                       | default                              |
| access_rules_status                   | active                               |
| replication_type                      | None                                 |
| has_replicas                          | False                                |
| user_id                               | f479e27b10d94c4ebdb6bef4963f8fb2     |
| create_share_from_snapshot_support    | False                                |
| revert_to_snapshot_support            | False                                |
| share_group_id                        | None                                 |
| source_share_group_snapshot_member_id | None                                 |
| mount_snapshot_support                | False                                |
| share_server_id                       | None                                 |
| host                                  |                                      |
+---------------------------------------+--------------------------------------+
(overcloud) [stack@undercloud-0 ~]$ manila list
+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+-------------------------+-------------------+
| ID                                   | Name | Size | Share Proto | Status    | Is Public | Share Type Name | Host                    | Availability Zone |
+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+-------------------------+-------------------+
| c471799d-dda9-4f67-bdc9-21a92a3b2442 | None | 1    | CEPHFS      | available | False     | default         | hostgroup@cephfs#cephfs | nova              |
+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+-------------------------+-------------------+
(overcloud) [stack@undercloud-0 ~]$ manila create nfs 1
+---------------------------------------+--------------------------------------+
| Property                              | Value                                |
+---------------------------------------+--------------------------------------+
| id                                    | 317ea440-8cbb-4786-8052-260ffc450299 |
| size                                  | 1                                    |
| availability_zone                     | None                                 |
| created_at                            | 2021-06-24T06:46:59.000000           |
| status                                | creating                             |
| name                                  | None                                 |
| description                           | None                                 |
| project_id                            | 84f5cbd3e2a64dc2bc1d811cf315ccb7     |
| snapshot_id                           | None                                 |
| share_network_id                      | None                                 |
| share_proto                           | NFS                                  |
| metadata                              | {}                                   |
| share_type                            | 885af7f9-8c29-4615-b0e5-7d97f4ed4703 |
| is_public                             | False                                |
| snapshot_support                      | False                                |
| task_state                            | None                                 |
| share_type_name                       | default                              |
| access_rules_status                   | active                               |
| replication_type                      | None                                 |
| has_replicas                          | False                                |
| user_id                               | f479e27b10d94c4ebdb6bef4963f8fb2     |
| create_share_from_snapshot_support    | False                                |
| revert_to_snapshot_support            | False                                |
| share_group_id                        | None                                 |
| source_share_group_snapshot_member_id | None                                 |
| mount_snapshot_support                | False                                |
| share_server_id                       | None                                 |
| host                                  |                                      |
+---------------------------------------+--------------------------------------+
(overcloud) [stack@undercloud-0 ~]$ manila list
+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+-----------------------------------+-------------------+
| ID                                   | Name | Size | Share Proto | Status    | Is Public | Share Type Name | Host                              | Availability Zone |
+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+-----------------------------------+-------------------+
| 317ea440-8cbb-4786-8052-260ffc450299 | None | 1    | NFS         | available | False     | default         | hostgroup@tripleo_netapp#aggr1_n1 | nova              |
| c471799d-dda9-4f67-bdc9-21a92a3b2442 | None | 1    | CEPHFS      | available | False     | default         | hostgroup@cephfs#cephfs           | nova              |
+--------------------------------------+------+------+-------------+-----------+-----------+-----------------+-----------------------------------+-------------------+


Negative test:
--------------

(overcloud) [stack@undercloud-0 ~]$ manila delete 317ea440-8cbb-4786-8052-260ffc450299 c471799d-dda9-4f67-bdc9-21a92a3b2442
(overcloud) [stack@undercloud-0 ~]$ manila type-create netapp_st False --extra-specs share_backend_name=tripleo_netapp
+----------------------+--------------------------------------+
| Property             | Value                                |
+----------------------+--------------------------------------+
| ID                   | d7a293eb-bb93-4698-ade1-f3df871e8966 |
| Name                 | netapp_st                            |
| Visibility           | public                               |
| is_default           | -                                    |
| required_extra_specs | driver_handles_share_servers : False |
| optional_extra_specs | share_backend_name : tripleo_netapp  |
| Description          | None                                 |
+----------------------+--------------------------------------+
(overcloud) [stack@undercloud-0 ~]$ manila type-list
+--------------------------------------+-----------+------------+------------+--------------------------------------+-------------------------------------+-------------+
| ID                                   | Name      | visibility | is_default | required_extra_specs                 | optional_extra_specs                | Description |
+--------------------------------------+-----------+------------+------------+--------------------------------------+-------------------------------------+-------------+
| 885af7f9-8c29-4615-b0e5-7d97f4ed4703 | default   | public     | YES        | driver_handles_share_servers : False |                                     | None        |
| d7a293eb-bb93-4698-ade1-f3df871e8966 | netapp_st | public     | -          | driver_handles_share_servers : False | share_backend_name : tripleo_netapp | None        |
+--------------------------------------+-----------+------------+------------+--------------------------------------+-------------------------------------+-------------+
(overcloud) [stack@undercloud-0 ~]$ manila create cephfs 1 --share-type netapp_st
+---------------------------------------+--------------------------------------+
| Property                              | Value                                |
+---------------------------------------+--------------------------------------+
| id                                    | 972a87be-6172-4b74-8f65-8f24ab35b4ca |
| size                                  | 1                                    |
| availability_zone                     | None                                 |
| created_at                            | 2021-06-24T06:52:27.000000           |
| status                                | creating                             |
| name                                  | None                                 |
| description                           | None                                 |
| project_id                            | 84f5cbd3e2a64dc2bc1d811cf315ccb7     |
| snapshot_id                           | None                                 |
| share_network_id                      | None                                 |
| share_proto                           | CEPHFS                               |
| metadata                              | {}                                   |
| share_type                            | d7a293eb-bb93-4698-ade1-f3df871e8966 |
| is_public                             | False                                |
| snapshot_support                      | False                                |
| task_state                            | None                                 |
| share_type_name                       | netapp_st                            |
| access_rules_status                   | active                               |
| replication_type                      | None                                 |
| has_replicas                          | False                                |
| user_id                               | f479e27b10d94c4ebdb6bef4963f8fb2     |
| create_share_from_snapshot_support    | False                                |
| revert_to_snapshot_support            | False                                |
| share_group_id                        | None                                 |
| source_share_group_snapshot_member_id | None                                 |
| mount_snapshot_support                | False                                |
| share_server_id                       | None                                 |
| host                                  |                                      |
+---------------------------------------+--------------------------------------+
(overcloud) [stack@undercloud-0 ~]$ manila list
+--------------------------------------+------+------+-------------+--------+-----------+-----------------+------+-------------------+
| ID                                   | Name | Size | Share Proto | Status | Is Public | Share Type Name | Host | Availability Zone |
+--------------------------------------+------+------+-------------+--------+-----------+-----------------+------+-------------------+
| 972a87be-6172-4b74-8f65-8f24ab35b4ca | None | 1    | CEPHFS      | error  | False     | netapp_st       |      | None              |
+--------------------------------------+------+------+-------------+--------+-----------+-----------------+------+-------------------+
(overcloud) [stack@undercloud-0 ~]$ manila message-list --resource-id 972a87be-6172-4b74-8f65-8f24ab35b4ca
+--------------------------------------+---------------+--------------------------------------+-----------+----------------------------------------------------------------------------------------------------------+-----------+----------------------------+
| ID                                   | Resource Type | Resource ID                          | Action ID | User Message                                                                                             | Detail ID | Created At                 |
+--------------------------------------+---------------+--------------------------------------+-----------+----------------------------------------------------------------------------------------------------------+-----------+----------------------------+
| 7a8c72c9-dde0-48c5-be66-2860bbac57d6 | SHARE         | 972a87be-6172-4b74-8f65-8f24ab35b4ca | 001       | allocate host: No storage could be allocated for this share request, Capabilities filter didn't succeed. | 008       | 2021-06-24T06:52:27.000000 |
+--------------------------------------+---------------+--------------------------------------+-----------+----------------------------------------------------------------------------------------------------------+-----------+----------------------------+

Comment 9 errata-xmlrpc 2021-09-15 07:09:53 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Red Hat OpenStack Platform (RHOSP) 16.2 enhancement advisory), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2021:3483