Files
manila-ui/manila_ui/tests/dashboards/project/test_data.py
Victoria Martinez de la Cruz 1ed6c85a86 Fix quotas retrieval for shares and snapshots tables
After refactoring manila-ui plugin to adapt
to the tabbed quotas interface in horizon,
we stopped accesing the usages data structure
which (in horizon side) carries quotas information.
In this patch set we perform quotas control by
querying manilaclient directly.

Change-Id: I2896d54fde0d5e3975afbb7274faadf2a1a81d7c
Closes-Bug: #1783232
Co-Authored-By: Tom Barron <tpb@dyncloud.net>
2018-08-06 22:25:27 -03:00

493 lines
17 KiB
Python

# Copyright (c) 2014 NetApp, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import collections
from manilaclient.v2 import security_services
from manilaclient.v2 import share_export_locations
from manilaclient.v2 import share_group_snapshots
from manilaclient.v2 import share_group_types
from manilaclient.v2 import share_groups
from manilaclient.v2 import share_instances
from manilaclient.v2 import share_networks
from manilaclient.v2 import share_replicas
from manilaclient.v2 import share_servers
from manilaclient.v2 import share_snapshot_export_locations
from manilaclient.v2 import share_snapshots
from manilaclient.v2 import share_types
from manilaclient.v2 import shares
class FakeAPIClient(object):
client = "fake_client"
share = shares.Share(
shares.ShareManager(FakeAPIClient),
{'id': "11023e92-8008-4c8b-8059-7f2293ff3887",
'status': 'available',
'size': 40,
'name': 'Share name',
'description': 'Share description',
'share_proto': 'NFS',
'metadata': {},
'created_at': '2014-01-27 10:30:00',
'share_server_id': '1',
'share_network_id': '7f3d1c33-8d00-4511-29df-a2def31f3b5d',
'availability_zone': 'Test AZ',
'replication_type': 'readable',
'share_group_id': 'fake_share_group_id',
'mount_snapshot_support': False})
nameless_share = shares.Share(
shares.ShareManager(FakeAPIClient),
{'id': "4b069dd0-6eaa-4272-8abc-5448a68f1cce",
'status': 'available',
'size': 10,
'name': '',
'description': '',
'share_proto': 'NFS',
'export_location': "/dev/hda",
'metadata': {},
'created_at': '2010-11-21 18:34:25',
'share_type': 'vol_type_1',
'share_server_id': '1',
'share_network_id': '7f3d1c33-8d00-4511-29df-a2def31f3b5d',
'availability_zone': 'Test AZ',
'replication_type': None,
'mount_snapshot_support': False})
share_with_metadata = shares.Share(
shares.ShareManager(FakeAPIClient),
{'id': "0ebb3748-c1dr-4bb6-8315-0354e7691fff",
'status': 'available',
'size': 40,
'name': 'Share with metadata',
'description': 'Share description',
'share_proto': 'NFS',
'metadata': {'aaa': 'bbb'},
'created_at': '2016-06-31 00:00:00',
'share_server_id': '1',
'share_network_id': '7f3d1c33-8d00-4511-29df-a2def31f3b5d',
'availability_zone': 'Test AZ',
'replication_type': 'readable',
'mount_snapshot_support': False})
other_share = shares.Share(
shares.ShareManager(FakeAPIClient),
{'id': "21023e92-8008-1234-8059-7f2293ff3889",
'status': 'in-use',
'size': 10,
'name': u'my_share',
'description': '',
'share_proto': 'NFS',
'metadata': {},
'created_at': '2013-04-01 10:30:00',
'share_type': None,
'share_server_id': '1',
'share_network_id': '7f3d1c33-8d00-4511-29df-a2def31f3b5d',
'availability_zone': 'Test AZ',
'replication_type': 'readable',
'mount_snapshot_support': False})
share_replica = share_replicas.ShareReplica(
share_replicas.ShareReplicaManager(FakeAPIClient),
{'id': '11023e92-8008-4c8b-8059-replica00001',
'availability_zone': share.availability_zone,
'host': 'fake_host_1',
'share_id': share.id,
'status': 'available',
'replica_state': 'active',
'created_at': '2016-07-19 19:46:13',
'updated_at': '2016-07-19 19:47:14'}
)
share_replica2 = share_replicas.ShareReplica(
share_replicas.ShareReplicaManager(FakeAPIClient),
{'id': '11023e92-8008-4c8b-8059-replica00002',
'availability_zone': share.availability_zone,
'host': 'fake_host_2',
'share_id': share.id,
'status': 'available',
'replica_state': 'in_sync',
'created_at': '2016-07-19 20:46:13',
'updated_at': '2016-07-19 20:47:14'}
)
share_replica3 = share_replicas.ShareReplica(
share_replicas.ShareReplicaManager(FakeAPIClient),
{'id': '11023e92-8008-4c8b-8059-replica00003',
'availability_zone': share.availability_zone,
'host': 'fake_host_3',
'share_id': share.id,
'status': 'available',
'replica_state': 'active',
'created_at': '2016-07-19 21:46:13',
'updated_at': '2016-07-19 21:47:14'}
)
share_mount_snapshot = shares.Share(
shares.ShareManager(FakeAPIClient),
{'id': "11023e92-8008-4c8b-8059-7f2293ff3888",
'status': 'available',
'size': 40,
'name': 'Share name',
'description': 'Share description',
'share_proto': 'NFS',
'metadata': {},
'created_at': '2014-01-27 10:30:00',
'share_server_id': '1',
'share_network_id': '7f3d1c33-8d00-4511-29df-a2def31f3b5d',
'availability_zone': 'Test AZ',
'replication_type': 'readable',
'mount_snapshot_support': True})
admin_export_location = share_export_locations.ShareExportLocation(
share_export_locations.ShareExportLocationManager(FakeAPIClient),
{'id': '6921e862-88bc-49a5-a2df-efeed9acd583',
'path': '1.1.1.1:/path/to/admin/share',
'preferred': False,
'is_admin_only': True,
'share_instance_id': 'e1c2d35e-fe67-4028-ad7a-45f668732b1d'}
)
user_export_location = share_export_locations.ShareExportLocation(
share_export_locations.ShareExportLocationManager(FakeAPIClient),
{'id': 'b6bd76ce-12a2-42a9-a30a-8a43b503867d',
'path': '2.2.2.2:/path/to/user/share',
'preferred': True,
'is_admin_only': False,
'share_instance_id': 'e1c2d35e-fe67-4028-ad7a-45f668732b1d'}
)
export_locations = [admin_export_location, user_export_location]
admin_snapshot_export_locations = [
share_snapshot_export_locations.ShareSnapshotExportLocation(
share_snapshot_export_locations.ShareSnapshotExportLocationManager(
FakeAPIClient),
{'id': '6921e862-88bc-49a5-a2df-efeed9acd584',
'path': '1.1.1.1:/path/to/admin/share',
'is_admin_only': True,
'share_snapshot_instance_id': 'e1c2d35e-fe67-4028-ad7a-45f668732b1e'}
),
share_snapshot_export_locations.ShareSnapshotExportLocation(
share_snapshot_export_locations.ShareSnapshotExportLocationManager(
FakeAPIClient),
{'id': '6921e862-88bc-49a5-a2df-efeed9acd585',
'path': '1.1.1.2:/path/to/admin/share',
'is_admin_only': False,
'share_snapshot_instance_id': 'e1c2d35e-fe67-4028-ad7a-45f668732b1f'}
)
]
user_snapshot_export_locations = [
share_snapshot_export_locations.ShareSnapshotExportLocation(
share_snapshot_export_locations.ShareSnapshotExportLocationManager(
FakeAPIClient),
{'id': 'b6bd76ce-12a2-42a9-a30a-8a43b503867e',
'path': '1.1.1.1:/path/to/user/share_snapshot'}
),
share_snapshot_export_locations.ShareSnapshotExportLocation(
share_snapshot_export_locations.ShareSnapshotExportLocationManager(
FakeAPIClient),
{'id': 'b6bd76ce-12a2-42a9-a30a-8a43b503867f',
'path': '1.1.1.2:/not/too/long/path/to/user/share_snapshot'}
)
]
rule = collections.namedtuple('Access', ['access_type', 'access_to', 'state',
'id', 'access_level', 'access_key'])
user_rule = rule('user', 'someuser', 'active',
'10837072-c49e-11e3-bd64-60a44c371189', 'rw', '')
ip_rule = rule('ip', '1.1.1.1', 'active',
'2cc8e2f8-c49e-11e3-bd64-60a44c371189', 'rw', '')
cephx_rule = rule('cephx', 'alice', 'active',
'235481bc-1a84-11e6-9666-68f728a0492e', 'rw',
'AQAdFCNYDCapMRAANuK/CiEZbog2911a+t5dcQ==')
snapshot = share_snapshots.ShareSnapshot(
share_snapshots.ShareSnapshotManager(FakeAPIClient),
{'id': '5f3d1c33-7d00-4511-99df-a2def31f3b5d',
'name': 'test snapshot',
'description': 'share snapshot',
'size': 40,
'status': 'available',
'share_id': '11023e92-8008-4c8b-8059-7f2293ff3887'})
snapshot_mount_support = share_snapshots.ShareSnapshot(
share_snapshots.ShareSnapshotManager(FakeAPIClient),
{'id': '5f3d1c33-7d00-4511-99df-a2def31f3b5e',
'name': 'test snapshot',
'description': 'share snapshot',
'size': 40,
'status': 'available',
'share_id': '11023e92-8008-4c8b-8059-7f2293ff3888'})
inactive_share_network = share_networks.ShareNetwork(
share_networks.ShareNetworkManager(FakeAPIClient),
{'id': '6f3d1c33-8d00-4511-29df-a2def31f3b5d',
'name': 'test_share_net',
'description': 'test share network',
'status': 'INACTIVE',
'neutron_net_id': 'fake_neutron_net_id',
'neutron_subnet_id': 'fake_neutron_subnet_id'})
active_share_network = share_networks.ShareNetwork(
share_networks.ShareNetworkManager(FakeAPIClient),
{'id': '7f3d1c33-8d00-4511-29df-a2def31f3b5d',
'name': 'test_share_net',
'description': 'test share network',
'status': 'ACTIVE',
'neutron_net_id': 'fake_neutron_net_id',
'neutron_subnet_id': 'fake_neutron_subnet_id'})
sec_service = security_services.SecurityService(
security_services.SecurityServiceManager(FakeAPIClient),
{'id': '7f3d1c33-8d10-4511-29df-a2def31f3b5d',
'server': '1.1.1.1',
'dns_ip': '2.2.2.2',
'user': 'someuser',
'password': 'somepass',
'type': 'active_directory',
'name': 'test-sec-service',
'description': 'test security service',
'domain': 'testdomain',
})
share_instance = share_instances.ShareInstance(
share_instances.ShareInstanceManager(FakeAPIClient),
{'id': 'fake_share_instance_no_ss_id',
'status': 'available',
'host': 'host1@backend1#pool1',
'availability_zone': 'zone1',
'share_id': 'fake_share_id_1',
'share_network_id': 'fake_share_network_id_1',
'share_server_id': 'fake_share_server_id_1',
'created_at': '2016-04-26 13:14:15'}
)
share_instance_no_ss = share_instances.ShareInstance(
share_instances.ShareInstanceManager(FakeAPIClient),
{'id': 'fake_share_instance_id',
'status': 'available',
'host': 'host2@backend2#pool2',
'availability_zone': 'zone2',
'share_id': 'fake_share_id_2',
'share_network_id': None,
'share_server_id': None,
'created_at': '2016-04-26 14:15:16'}
)
share_server = share_servers.ShareServer(
share_servers.ShareServerManager(FakeAPIClient),
{'id': 'fake_share_server_id1',
'status': 'active',
'share_network_id': 'fake_share_network_id1',
'share_network_name': 'fake_share_network_name1',
'project_id': 'fake_project_id1',
'backend_details': {
'foo_key': 'foo_value',
'bar_key_foo': 'bar_value_foo',
},
'host': 'fakehost1@fakebackend1#fakepool1'}
)
share_server_errored = share_servers.ShareServer(
share_servers.ShareServerManager(FakeAPIClient),
{'id': 'fake_share_server_id2',
'status': 'error',
'share_network_id': 'fake_share_network_id2',
'share_network_name': 'fake_share_network_name2',
'project_id': 'fake_project_id2',
'backend_details': {},
'host': 'fakehost2@fakebackend2#fakepool2'}
)
share_type = share_types.ShareType(
share_types.ShareTypeManager(FakeAPIClient),
{'id': 'share-type-id1',
'name': 'test-share-type1',
'share_type_access:is_public': True,
'extra_specs': {
'snapshot_support': True,
'driver_handles_share_servers': False}
}
)
share_type_private = share_types.ShareType(
share_types.ShareTypeManager(FakeAPIClient),
{'id': 'share-type-id2',
'name': 'test-share-type2',
'share_type_access:is_public': False,
'extra_specs': {'driver_handles_share_servers': False}}
)
share_type_dhss_true = share_types.ShareType(
share_types.ShareTypeManager(FakeAPIClient),
{'id': 'share-type-id3',
'name': 'test-share-type3',
'share_type_access:is_public': True,
'extra_specs': {'driver_handles_share_servers': True}}
)
share_type_alt = share_types.ShareType(
share_types.ShareTypeManager(FakeAPIClient),
{'id': 'share-type-id4',
'name': 'test-share-type4',
'share_type_access:is_public': True,
'extra_specs': {
'snapshot_support': True,
'driver_handles_share_servers': False}
}
)
share_group_type = share_group_types.ShareGroupType(
share_group_types.ShareGroupTypeManager(FakeAPIClient),
{'id': 'fake_share_group_type_id1',
'name': 'fake_share_group_type_name',
'share_types': [share_type.id],
'group_specs': {'k1': 'v1', 'k2': 'v2'},
'is_public': True}
)
share_group_type_private = share_group_types.ShareGroupType(
share_group_types.ShareGroupTypeManager(FakeAPIClient),
{'id': 'fake_private_share_group_type_id2',
'name': 'fake_private_share_group_type_name',
'share_types': [share_type.id, share_type_private.id],
'group_specs': {'k1': 'v1', 'k2': 'v2'},
'is_public': False}
)
share_group_type_dhss_true = share_group_types.ShareGroupType(
share_group_types.ShareGroupTypeManager(FakeAPIClient),
{'id': 'fake_share_group_type_id3',
'name': 'fake_share_group_type_name',
'share_types': [share_type_dhss_true.id],
'group_specs': {'k3': 'v3', 'k4': 'v4'},
'is_public': True}
)
share_group_type_alt = share_group_types.ShareGroupType(
share_group_types.ShareGroupTypeManager(FakeAPIClient),
{'id': 'fake_share_group_type_id4',
'name': 'fake_share_group_type_name',
'share_types': [share_type_alt.id],
'group_specs': {'k5': 'v5', 'k6': 'v6'},
'is_public': True}
)
share_group = share_groups.ShareGroup(
share_groups.ShareGroupManager(FakeAPIClient),
{'id': 'fake_share_group_id',
'name': 'fake_share_group_name',
'description': 'fake sg description',
'status': 'available',
'share_types': [share_type.id],
'share_group_type_id': share_group_type.id,
'source_share_group_snapshot_id': None,
'share_network_id': None,
'share_server_id': None,
'availability_zone': None,
'host': 'fake_host_987654321',
'consistent_snapshot_support': None,
'created_at': '2017-05-31T13:36:15.000000',
'project_id': 'fake_project_id_987654321'}
)
share_group_nameless = share_groups.ShareGroup(
share_groups.ShareGroupManager(FakeAPIClient),
{'id': 'fake_nameless_share_group_id',
'name': None,
'status': 'available',
'share_types': [share_type.id],
'share_group_type_id': share_group_type.id,
'source_share_group_snapshot_id': None,
'share_network_id': None,
'share_server_id': None,
'availability_zone': None,
'host': 'fake_host_987654321',
'consistent_snapshot_support': None,
'created_at': '2017-05-31T13:36:15.000000',
'project_id': 'fake_project_id_987654321'}
)
share_group_dhss_true = share_groups.ShareGroup(
share_groups.ShareGroupManager(FakeAPIClient),
{'id': 'fake_dhss_true_share_group_id',
'name': 'fake_dhss_true_share_group_name',
'status': 'available',
'share_types': [share_type_dhss_true.id],
'share_group_type_id': share_group_type_dhss_true.id,
'source_share_group_snapshot_id': None,
'share_network_id': 'fake_share_network_id',
'share_server_id': 'fake_share_server_id',
'availability_zone': None,
'host': 'fake_host_987654321',
'consistent_snapshot_support': None,
'created_at': '2017-05-31T23:59:59.000000',
'project_id': 'fake_project_id_987654321'}
)
share_group_snapshot = share_group_snapshots.ShareGroupSnapshot(
share_group_snapshots.ShareGroupSnapshotManager(FakeAPIClient),
{'id': 'fake_share_group_snapshot_id_1',
'name': 'fake_share_group_snapshot_name',
'status': 'available',
'share_group_id': share_group.id,
'description': 'fake sgs description',
'created_at': '2017-06-01T13:13:13.000000',
'project_id': 'fake_project_id_987654321',
'members': [
{'share_id': 'fake_share_id_1', 'id': 'fake_ssi_id_1', 'size': 1},
{'share_id': 'fake_share_id_2', 'id': 'fake_ssi_id_2', 'size': 2},
]}
)
share_group_snapshot_nameless = share_group_snapshots.ShareGroupSnapshot(
share_group_snapshots.ShareGroupSnapshotManager(FakeAPIClient),
{'id': 'fake_share_group_snapshot_id_2_nameless',
'name': None,
'status': 'available',
'share_group_id': share_group_nameless.id,
'description': 'fake nameless sgs description',
'created_at': '2017-06-02T14:14:14.000000',
'project_id': 'fake_project_id_987654321',
'members': []}
)
# Manila Limits
limits = {"totalSharesUsed": 1,
"totalShareSnapshotsUsed": 1,
"totalShareGigabytesUsed": 500,
"totalSnapshotGigabytesUsed": 500,
"maxTotalShares": 10,
"maxTotalShareSnapshots": 10,
"maxTotalShareGigabytes": 1000,
"maxTotalSnapshotGigabytes": 1000,
}
limits_negative = {"totalSharesUsed": 10,
"totalShareSnapshotsUsed": 10,
"totalShareGigabytesUsed": 1000,
"totalSnapshotGigabytesUsed": 1000,
"maxTotalShares": 10,
"maxTotalShareSnapshots": 10,
"maxTotalShareGigabytes": 1000,
"maxTotalSnapshotGigabytes": 1000,
}