def test_tenant_quota_enforce_via_service_cloud(request, appliance, provider, setup_provider, context, set_roottenant_quota, set_default, custom_prov_data, extra_msg, template_name, catalog_item): """Test Tenant Quota in UI and SSUI Polarion: assignee: ghubale casecomponent: Cloud initialEstimate: 1/10h """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format(catalog_item.name) provision_request = appliance.collections.requests.instantiate(request_description) provision_request.wait_for_request(method='ui') assert provision_request.row.reason.text == "Quota Exceeded" @request.addfinalizer def delete(): provision_request.remove_request() catalog_item.delete()
def test_quota_tagging_infra_via_services(request, appliance, admin_email, context, set_entity_quota_tag, custom_prov_data, prov_data, catalog_item): """This test case verifies the quota tagging is working correctly for the infra providers. Polarion: assignee: ghubale casecomponent: Quota caseimportance: medium initialEstimate: 1/6h tags: quota """ prov_data.update(custom_prov_data) with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_quota_tagging_cloud_via_services(appliance, request, context, admin_email, set_entity_quota_tag, catalog_item): """Test Group and User Quota in UI and SSUI using tagging Polarion: assignee: ghubale casecomponent: Cloud initialEstimate: 1/6h tags: quota """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_tenant_quota_enforce_via_service_infra(request, appliance, provider, setup_provider, context, set_roottenant_quota, extra_msg, custom_prov_data, catalog_item): """Tests quota enforcement via service infra Metadata: test_flag: quota """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') assert provision_request.row.reason.text == "Quota Exceeded" @request.addfinalizer def delete(): provision_request.remove_request() catalog_item.delete()
def test_quota_catalog_bundle_infra(request, appliance, admin_email, entities, custom_prov_data, prov_data, catalog_bundle, context, vm_name, template_name): """This test case verifies the quota assigned by automation method for user and group is working correctly for the infra providers by ordering catalog bundle. Polarion: assignee: ghubale initialEstimate: 1/4h casecomponent: Quota caseimportance: high tags: quota testSteps: 1. Navigate to Automation > Automate > Explorer 2. Add quota automation methods to domain 3. Change 'quota_source_type' to 'user' or 'group' 4. Create one or more catalogs to test quota by provisioning VMs over quota limit via UI or SSUI for user and group 5. Add more than one catalog to catalog bundle and order catalog bundle 6. Check whether quota is exceeded or not """ prov_data.update(custom_prov_data) with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_bundle.catalog, catalog_bundle.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format(catalog_bundle.name) provision_request = appliance.collections.requests.instantiate(request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_quota_tagging_infra_via_services(request, appliance, admin_email, context, set_entity_quota_tag, custom_prov_data, prov_data, catalog_item): """This test case verifies the quota tagging is working correctly for the infra providers. Polarion: assignee: ghubale casecomponent: Quota caseimportance: medium initialEstimate: 1/6h tags: quota """ prov_data.update(custom_prov_data) with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format(catalog_item.name) provision_request = appliance.collections.requests.instantiate(request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_quota_infra(request, appliance, admin_email, entities, custom_prov_data, prov_data, catalog_item, context, vm_name, template_name): """This test case verifies the quota assigned by automation method for user and group is working correctly for the infra providers. Polarion: assignee: ghubale initialEstimate: 1/4h casecomponent: Quota caseimportance: medium tags: quota testSteps: 1. Navigate to Automation > Automate > Explorer 2. Add quota automation methods to domain 3. Change 'quota_source_type' to 'user' or 'group' 4. Test quota by provisioning VMs over quota limit via UI or SSUI for user and group 5. Check whether quota is exceeded or not """ prov_data.update(custom_prov_data) with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_quota_cloud_via_services(appliance, request, setup_provider, admin_email, entities, prov_data, catalog_item, context): """This test case verifies the quota assigned by automation method for user and group is working correctly for the cloud providers. Steps: 1. Navigate to Automation > Automate > Explorer 2. Add quota automation methods to domain 3. Change 'quota_source_type' to 'user' or 'group' 4. Test quota by provisioning instances over quota limit via UI or SSUI for user and group 5. Check whether quota is exceeded or not Polarion: assignee: None initialEstimate: None """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = ( "Provisioning Service [{catalog_item_name}] from [{catalog_item_name}]" .format(catalog_item_name=catalog_item.name)) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_tenant_quota_enforce_via_service_infra(request, appliance, context, set_roottenant_quota, extra_msg, set_default, custom_prov_data, catalog_item): """Tests quota enforcement via service infra Polarion: assignee: ghubale casecomponent: Infra caseimportance: high initialEstimate: 1/8h tags: quota """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_tenant_quota_enforce_via_service_cloud(request, appliance, provider, setup_provider, context, set_roottenant_quota, custom_prov_data, extra_msg, template_name, catalog_item): """Test Tenant Quota in UI and SSUI Polarion: assignee: ghubale casecomponent: cloud initialEstimate: 1/10h """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format( catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') assert provision_request.row.reason.text == "Quota Exceeded" @request.addfinalizer def delete(): provision_request.remove_request() catalog_item.delete()
def test_quota_cloud_via_services(appliance, request, admin_email, entities, prov_data, catalog_item, context): """This test case verifies the quota assigned by automation method for user and group is working correctly for the cloud providers. Polarion: assignee: ghubale initialEstimate: 1/4h casecomponent: Cloud tags: quota testSteps: 1. Navigate to Automation > Automate > Explorer 2. Add quota automation methods to domain 3. Change 'quota_source_type' to 'user' or 'group' 4. Test quota by provisioning instances over quota limit via UI or SSUI for user and group 5. Check whether quota is exceeded or not """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = ("Provisioning Service [{catalog_item_name}] from [{catalog_item_name}]" .format(catalog_item_name=catalog_item.name)) provision_request = appliance.collections.requests.instantiate(request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_service_catalog_crud_ssui(appliance, setup_provider, context, order_service): """Tests Service Catalog in SSUI. Metadata: test_flag: ssui Polarion: assignee: sshveta initialEstimate: None """ catalog_item = order_service with appliance.context.use(context): if appliance.version >= '5.9': dialog_values = { 'service_name': "ssui_{}".format(fauxfactory.gen_alphanumeric()) } service = ServiceCatalogs(appliance, name=catalog_item.name, dialog_values=dialog_values) else: service = ServiceCatalogs(appliance, name=catalog_item.name) service.add_to_shopping_cart() service.order()
def test_service_catalog_crud(appliance, setup_provider, context, order_catalog_item_in_ops_ui): """Tests Service Catalog in SSUI.""" service_name = order_catalog_item_in_ops_ui.name with appliance.context.use(context): appliance.server.login() service = ServiceCatalogs(appliance, name=service_name) service.add_to_shopping_cart() service.order()
def test_service_catalog_crud(appliance, setup_provider, context, order_catalog_item_in_ops_ui): """Tests Service Catalog in SSUI.""" service_name = order_catalog_item_in_ops_ui with appliance.context.use(context): appliance.server.login() service = ServiceCatalogs(appliance, name=service_name) service.add_to_shopping_cart()
def test_service_catalog_crud_ui(appliance, context, order_ansible_service_in_ops_ui, request): """Tests Ansible Service Catalog in SSUI.""" service_name = order_ansible_service_in_ops_ui with appliance.context.use(context): service = ServiceCatalogs(appliance, name=service_name) service.add_to_shopping_cart() service.order() @request.addfinalizer def _finalize(): _service = MyService(appliance, service_name) _service.delete()
def test_quota_tagging_cloud_via_services(appliance, request, provider, setup_provider, context, admin_email, set_entity_quota_tag, catalog_item): """Test Group and User Quota in UI and SSUI using tagging""" with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format(catalog_item.name) provision_request = appliance.collections.requests.instantiate(request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_service_catalog_crud_ssui(appliance, setup_provider, context, order_service): """Tests Service Catalog in SSUI.""" catalog_item = order_service with appliance.context.use(context): if appliance.version >= '5.9': dialog_values = {'service_name': "ssui_{}".format(fauxfactory.gen_alphanumeric())} service = ServiceCatalogs(appliance, name=catalog_item.name, dialog_values=dialog_values) else: service = ServiceCatalogs(appliance, name=catalog_item.name) service.add_to_shopping_cart() service.order()
def test_tenant_quota_enforce_via_service_infra(request, appliance, provider, setup_provider, context, set_roottenant_quota, extra_msg, custom_prov_data, catalog_item): with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format(catalog_item.name) provision_request = appliance.collections.requests.instantiate(request_description) provision_request.wait_for_request(method='ui') assert provision_request.row.reason.text == "Quota Exceeded" @request.addfinalizer def delete(): provision_request.remove_request() catalog_item.delete()
def test_service_catalog_crud(appliance, setup_provider, context, provision_request): """Tests Service Catalog in SSUI.""" catalog_item, provision_request = provision_request with appliance.context.use(context): if appliance.version >= '5.9': dialog_values = { 'service_name': "ssui_{}".format(fauxfactory.gen_alphanumeric()) } service = ServiceCatalogs(appliance, name=catalog_item.name, dialog_values=dialog_values) else: service = ServiceCatalogs(appliance, name=catalog_item.name) service.add_to_shopping_cart() service.order()
def test_service_infra_tenant_quota_with_default_entry_point( request, appliance, context, set_roottenant_quota, extra_msg, set_default, custom_prov_data, catalog_item): """Test Tenant Quota in UI and SSUI by selecting field entry points. Quota has to be checked if it is working with field entry points also. Polarion: assignee: ghubale casecomponent: Infra caseimportance: medium initialEstimate: 1/12h tags: quota setup: 1. Add infrastructure provider 2. Set quota for root tenant - 'My Company' 3. Navigate to services > catalogs 4. Create catalog item with selecting following field entry points: a.provisioning_entry_point = /ManageIQ (Locked)/Infrastructure/VM/Provisioning /StateMachines/ProvisionRequestApproval/Default b.retirement_entry_point = /Service/Retirement/StateMachines/ServiceRetirement /Default 5. Add other information required in catalog for provisioning VM testSteps: 1. Order the catalog item via UI and SSUI individually expectedResults: 1. Request of vm provisioning via service catalog should be denied with reason: "Quota Exceeded" """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{name}] from [{name}]'.format( name=catalog_item.name) provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_simultaneous_tenant_quota(request, appliance, context, new_project, new_user_project, set_project_quota, custom_prov_data, catalog_item, set_default): """ Bugzilla: 1456819 1401251 Polarion: assignee: tpapaioa initialEstimate: 1/6h caseimportance: medium caseposneg: positive testtype: functional startsin: 5.8 casecomponent: Provisioning tags: quota setup: 1. Create tenant1 and tenant2. 2. Create a project under tenant1 or tenant2 3. Enable quota for cpu, memory or storage etc 4. Create a group and add role super_administrator 5. Create a user and add it to the group testSteps: 1. Login with the newly created user in the service portal. Take multiple items which go over the allocated quota expectedResults: 1. CFME should deny request with quota exceeded reason """ with new_user_project: with appliance.context.use(context): appliance.server.login(new_user_project) service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() provision_request = service_catalogs.order() provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_service_catalog_crud_ui(appliance, context, order_ansible_service_in_ops_ui, request): """Tests Ansible Service Catalog in SSUI. Polarion: assignee: nansari initialEstimate: 1/4h casecomponent: Services tags: service """ service_name = order_ansible_service_in_ops_ui with appliance.context.use(context): service = ServiceCatalogs(appliance, name=service_name) service.add_to_shopping_cart() service.order() @request.addfinalizer def _finalize(): _service = MyService(appliance, service_name) _service.delete()
def test_service_infra_tenant_quota_with_default_entry_point(request, appliance, context, set_roottenant_quota, extra_msg, set_default, custom_prov_data, catalog_item): """Test Tenant Quota in UI and SSUI by selecting field entry points. Quota has to be checked if it is working with field entry points also. Polarion: assignee: ghubale casecomponent: Infra caseimportance: medium initialEstimate: 1/12h tags: quota setup: 1. Add infrastructure provider 2. Set quota for root tenant - 'My Company' 3. Navigate to services > catalogs 4. Create catalog item with selecting following field entry points: a.provisioning_entry_point = /ManageIQ (Locked)/Infrastructure/VM/Provisioning /StateMachines/ProvisionRequestApproval/Default b.retirement_entry_point = /Service/Retirement/StateMachines/ServiceRetirement /Default 5. Add other information required in catalog for provisioning VM testSteps: 1. Order the catalog item via UI and SSUI individually expectedResults: 1. Request of vm provisioning via service catalog should be denied with reason: "Quota Exceeded" """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{name}] from [{name}]'.format( name=catalog_item.name) provision_request = appliance.collections.requests.instantiate(request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_service_catalog_crud_ssui(appliance, setup_provider, context, order_service): """Tests Service Catalog in SSUI. Metadata: test_flag: ssui Polarion: assignee: nansari casecomponent: SelfServiceUI initialEstimate: 1/4h tags: ssui """ catalog_item = order_service with appliance.context.use(context): dialog_values = {'service_name': "ssui_{}".format(fauxfactory.gen_alphanumeric())} service = ServiceCatalogs(appliance, name=catalog_item.name, dialog_values=dialog_values) service.add_to_shopping_cart() service.order()
def test_service_catalog_crud_ssui(appliance, setup_provider, context, order_service): """Tests Service Catalog in SSUI. Metadata: test_flag: ssui Polarion: assignee: nansari casecomponent: SelfServiceUI initialEstimate: 1/4h tags: ssui """ catalog_item = order_service with appliance.context.use(context): dialog_values = {'service_name': fauxfactory.gen_alphanumeric(start="ssui_")} service = ServiceCatalogs(appliance, name=catalog_item.name, dialog_values=dialog_values) service.add_to_shopping_cart() service.order()
def test_tenant_quota_enforce_via_service_infra(request, appliance, context, set_roottenant_quota, extra_msg, set_default, custom_prov_data, catalog_item): """Tests quota enforcement via service infra Polarion: assignee: ghubale casecomponent: Infra caseimportance: high initialEstimate: 1/8h tags: quota """ with appliance.context.use(context): service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = 'Provisioning Service [{0}] from [{0}]'.format(catalog_item.name) provision_request = appliance.collections.requests.instantiate(request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_quota_calculation_using_service_dialog_overrides( request, appliance, setup_provider, provider, domain_setup, set_child_tenant_quota, context, custom_prov_data, import_dialog, file_name, catalog, new_child_tenant_user): """ This test case is to check Quota calculation using service dialog overrides. Bugzilla: 1492158 Polarion: assignee: ghubale initialEstimate: 1/6h caseimportance: medium caseposneg: positive testtype: functional startsin: 5.8 casecomponent: Infra tags: quota testSteps: 1. create a new domain quota_test 2. Using the Automate Explorer, copy the ManageIQ/System/CommonMethods/QuotaMethods/requested method to the quota_test domain. 3. Import the attached dialog. create catalog and catalog item using this dialog 4. create a child tenant and set quota. create new group and user for this tenant. 5. login with this user and provision by overriding values 6. Also test the same for user and group quota source type expectedResults: 1. 2. 3. 4. 5. Quota should be denied with reason for quota exceeded message 6. Quota should be denied with reason for quota exceeded message """ sd, ele_label = import_dialog prov_data = custom_prov_data catalog_item = appliance.collections.catalog_items.create( provider.catalog_item_type, name=fauxfactory.gen_alphanumeric(start="test_"), description=fauxfactory.gen_alphanumeric(start="desc_"), display_in=True, catalog=catalog, dialog=sd, prov_data=prov_data) request.addfinalizer(catalog_item.delete_if_exists) with new_child_tenant_user: with appliance.context.use(context): appliance.server.login(new_child_tenant_user) service_catalogs = ServiceCatalogs(appliance, catalog_item.catalog, catalog_item.name) if context is ViaSSUI: service_catalogs.add_to_shopping_cart() service_catalogs.order() # nav to requests page to check quota validation request_description = f'Provisioning Service [{catalog_item.name}] from [{catalog_item.name}]' provision_request = appliance.collections.requests.instantiate( request_description) provision_request.wait_for_request(method='ui') request.addfinalizer(provision_request.remove_request) assert provision_request.row.reason.text == "Quota Exceeded"
def test_retire_owned_service(request, appliance, context, user_self_service_role, generic_catalog_item): """ Bugzilla: 1628520 Polarion: assignee: nansari startsin: 5.11 casecomponent: SelfServiceUI initialEstimate: 1/6h testSteps: 1. Create a catalog item as User 2. Provision service in regular UI with user 3. Login to Service UI as User 4. Try to retire the service expectedResults: 1. 2. 3. 4. Service should retire """ user, _ = user_self_service_role # login with user having self service role with user: with appliance.context.use(context): appliance.server.login(user) # order service from catalog item serv_cat = ServiceCatalogs( appliance, catalog=generic_catalog_item.catalog, name=generic_catalog_item.name, ) if context == ViaSSUI: serv_cat.add_to_shopping_cart() provision_request = serv_cat.order() provision_request.wait_for_request() service = MyService(appliance, generic_catalog_item.dialog.label) @request.addfinalizer def _clear_request_service(): if provision_request.exists(): provision_request.remove_request(method="rest") if service.exists: service.delete() assert service.exists # Retire service retire_request = service.retire() assert retire_request.exists() @request.addfinalizer def _clear_retire_request(): if retire_request.exists(): retire_request.remove_request() wait_for(lambda: service.is_retired, delay=5, num_sec=120, fail_func=service.browser.refresh, message="waiting for service retire")