def create(self): view = navigate_to(self, 'Add') # Need to provide the (optional) provider name to the form, not the object provider_formvalue = None if self.item_type == 'Orchestration': provider_formvalue = self.provider.name elif self.item_type == 'AnsibleTower': provider_formvalue = self.provider # For tests where orchestration template is None view.before_filling() view.fill({ 'name': self.name, 'description': self.description, 'display': self.display_in, 'select_catalog': self.catalog.name, 'select_dialog': self.dialog, 'select_orch_template': self.orch_template.template_name if self.orch_template else None, 'select_provider': provider_formvalue, 'select_config_template': self.config_template }) if view.field_entry_point.value == "": view.fill({'field_entry_point': 'a'}) view.tree.click_path("Datastore", self.domain, "Service", "Provisioning", "StateMachines", "ServiceProvision_Template", "CatalogItemInitialization") view.apply_button.click() if self.appliance.version >= "5.7" and self.item_type == "AnsibleTower": view.fill({'retirement_entry_point': 'b'}) view.tree.click_path("Datastore", self.domain, "Service", "Retirement", "StateMachines", "ServiceRetirement", "Generic") view.apply_button.click() if self.catalog_name is not None \ and self.provisioning_data is not None \ and not isinstance(self.provider, NoneType): tabstrip.select_tab("Request Info") tabstrip.select_tab("Catalog") row = view.template_table.row(name=self.catalog_name, provider=self.provider.name) row.click() request_form.fill(self.provisioning_data) view.add_button.click() view.flash.assert_success_message( 'Service Catalog Item "{}" was added'.format(self.name)) view = self.create_view(AllCatalogItemView) assert view.is_displayed
def create(self): # Create has sequential forms, the first is only the provider type navigate_to(self, 'Add') # For element not found exception (To be removed) sel.sleep(5) sel.select("//select[@id='st_prov_type']", self.provider_type or self.item_type or 'Generic') sel.wait_for_element(basic_info_form.name_text) catalog = fakeobject_or_object(self.catalog, "name", "Unassigned") dialog = fakeobject_or_object(self.dialog, "name", "No Dialog") # Need to provide the (optional) provider name to the form, not the object provider_name = None provider_required_types = ['AnsibleTower', 'Orchestration'] if self.item_type in provider_required_types \ or self.provider_type in provider_required_types: provider_name = self.provider.name # For tests where orchestration template is None orch_template = None if self.orch_template: orch_template = self.orch_template.template_name fill(basic_info_form, {'name_text': self.name, 'description_text': self.description, 'display_checkbox': self.display_in, 'select_catalog': catalog.name, 'select_dialog': dialog.name, 'select_orch_template': orch_template, 'select_provider': provider_name, 'select_config_template': self.config_template}) if not (self.item_type in provider_required_types): sel.click(basic_info_form.field_entry_point) if version.current_version() < "5.7": dynamic_tree.click_path("Datastore", self.domain, "Service", "Provisioning", "StateMachines", "ServiceProvision_Template", "default") else: entry_tree.click_path("Datastore", self.domain, "Service", "Provisioning", "StateMachines", "ServiceProvision_Template", "default") sel.click(basic_info_form.apply_btn) if version.current_version() >= "5.7" and self.item_type == "AnsibleTower": sel.click(basic_info_form.retirement_entry_point) entry_tree.click_path("Datastore", self.domain, "Service", "Retirement", "StateMachines", "ServiceRetirement", "Generic") sel.click(basic_info_form.apply_btn) if self.catalog_name is not None \ and self.provisioning_data is not None \ and not isinstance(self.provider, NoneType): tabstrip.select_tab("Request Info") tabstrip.select_tab("Catalog") template = template_select_form.template_table.find_row_by_cells({ 'Name': self.catalog_name, 'Provider': self.provider.name }) sel.click(template) request_form.fill(self.provisioning_data) sel.click(template_select_form.add_button)
def generated_request(provider, provider_data, provisioning, template_name, vm_name): """Creates a provision request, that is not automatically approved, and returns the search data. After finishing the test, request should be automatically deleted. Slightly modified code from :py:module:`cfme.tests.infrastructure.test_provisioning` """ first_name = fauxfactory.gen_alphanumeric() last_name = fauxfactory.gen_alphanumeric() notes = fauxfactory.gen_alphanumeric() e_mail = "{}@{}.test".format(first_name, last_name) host, datastore = map(provisioning.get, ('host', 'datastore')) pytest.sel.force_navigate('infrastructure_provision_vms', context={ 'provider': provider, 'template_name': template_name, }) provisioning_data = { 'email': e_mail, 'first_name': first_name, 'last_name': last_name, 'notes': notes, 'vm_name': vm_name, 'host_name': {'name': [host]}, 'datastore_name': {'name': [datastore]}, 'num_vms': "10", # so it won't get auto-approved } # Same thing, different names. :\ if provider_data["type"] == 'rhevm': provisioning_data['provision_type'] = 'Native Clone' elif provider_data["type"] == 'virtualcenter': provisioning_data['provision_type'] = 'VMware' try: provisioning_data['vlan'] = provisioning['vlan'] except KeyError: # provisioning['vlan'] is required for rhevm provisioning if provider_data["type"] == 'rhevm': raise pytest.fail('rhevm requires a vlan value in provisioning info') provisioning_form.fill(provisioning_data) pytest.sel.click(provisioning_form.submit_button) flash.assert_no_errors() request_cells = { "Description": "Provision from [{}] to [{}###]".format(template_name, vm_name), } yield request_cells browser().get(store.base_url) login_admin() requests.delete_request(request_cells) flash.assert_no_errors()
def create(self): view = navigate_to(self, 'Add') # Need to provide the (optional) provider name to the form, not the object provider_formvalue = None if self.item_type == 'Orchestration': provider_formvalue = self.provider.name elif self.item_type == 'AnsibleTower': provider_formvalue = self.provider # For tests where orchestration template is None view.before_filling() view.fill({'name': self.name, 'description': self.description, 'display': self.display_in, 'select_catalog': self.catalog.name, 'select_dialog': self.dialog, 'select_orch_template': self.orch_template.template_name if self.orch_template else None, 'select_provider': provider_formvalue, 'select_config_template': self.config_template}) if view.field_entry_point.value == "": view.fill({'field_entry_point': 'a'}) view.tree.click_path( "Datastore", self.domain, "Service", "Provisioning", "StateMachines", "ServiceProvision_Template", "CatalogItemInitialization") view.apply_button.click() if self.appliance.version >= "5.7" and self.item_type == "AnsibleTower": view.fill({'retirement_entry_point': 'b'}) view.tree.click_path( "Datastore", self.domain, "Service", "Retirement", "StateMachines", "ServiceRetirement", "Generic") view.apply_button.click() if self.catalog_name is not None \ and self.provisioning_data is not None \ and not isinstance(self.provider, NoneType): tabstrip.select_tab("Request Info") tabstrip.select_tab("Catalog") row = view.template_table.row(name=self.catalog_name, provider=self.provider.name) row.click() request_form.fill(self.provisioning_data) view.add_button.click() view.flash.assert_success_message('Service Catalog Item "{}" was added'.format(self.name)) view = self.create_view(AllCatalogItemView) assert view.is_displayed
def create(self): # Create has sequential forms, the first is only the provider type navigate_to(self, 'Add') sel.select("//select[@id='st_prov_type']", self.provider_type or self.item_type or 'Generic') sel.wait_for_element(basic_info_form.name_text) catalog = fakeobject_or_object(self.catalog, "name", "Unassigned") dialog = fakeobject_or_object(self.dialog, "name", "No Dialog") fill(basic_info_form, {'name_text': self.name, 'description_text': self.description, 'display_checkbox': self.display_in, 'select_catalog': catalog.name, 'select_dialog': dialog.name, 'select_orch_template': self.orch_template, 'select_provider': self.provider_type, 'select_config_template': self.config_template}) if sel.text(basic_info_form.field_entry_point) == "": sel.click(basic_info_form.field_entry_point) if version.current_version() < "5.7": dynamic_tree.click_path("Datastore", self.domain, "Service", "Provisioning", "StateMachines", "ServiceProvision_Template", "default") else: entry_tree.click_path("Datastore", self.domain, "Service", "Provisioning", "StateMachines", "ServiceProvision_Template", "default") sel.click(basic_info_form.apply_btn) if self.catalog_name is not None and self.provisioning_data is not None: tabstrip.select_tab("Request Info") # Address BZ1321631 tabstrip.select_tab("Environment") tabstrip.select_tab("Catalog") template = template_select_form.template_table.find_row_by_cells({ 'Name': self.catalog_name, # HACK to workaround BZ1390209 # revert back to Provider once it's fixed 'Deprecated' if BZ(1390209, forced_streams=["5.7", "upstream"]).blocks else 'Provider': self.provider }) sel.click(template) request_form.fill(self.provisioning_data) sel.click(template_select_form.add_button)
def generated_request(provider, provider_data, provisioning, template_name, vm_name): """Creates a provision request, that is not automatically approved, and returns the search data. After finishing the test, request should be automatically deleted. Slightly modified code from :py:module:`cfme.tests.infrastructure.test_provisioning` """ first_name = fauxfactory.gen_alphanumeric() last_name = fauxfactory.gen_alphanumeric() notes = fauxfactory.gen_alphanumeric() e_mail = "{}@{}.test".format(first_name, last_name) host, datastore = map(provisioning.get, ('host', 'datastore')) pytest.sel.force_navigate('infrastructure_provision_vms', context={ 'provider': provider, 'template_name': template_name, }) provisioning_data = { 'email': e_mail, 'first_name': first_name, 'last_name': last_name, 'notes': notes, 'vm_name': vm_name, 'host_name': { 'name': [host] }, 'datastore_name': { 'name': [datastore] }, 'num_vms': "10", # so it won't get auto-approved } # Same thing, different names. :\ if provider_data["type"] == 'rhevm': provisioning_data['provision_type'] = 'Native Clone' elif provider_data["type"] == 'virtualcenter': provisioning_data['provision_type'] = 'VMware' try: provisioning_data['vlan'] = provisioning['vlan'] except KeyError: # provisioning['vlan'] is required for rhevm provisioning if provider_data["type"] == 'rhevm': raise pytest.fail( 'rhevm requires a vlan value in provisioning info') provisioning_form.fill(provisioning_data) pytest.sel.click(provisioning_form.submit_button) flash.assert_no_errors() request_cells = { "Description": "Provision from [{}] to [{}###]".format(template_name, vm_name), } yield request_cells browser().get(store.base_url) login_admin() requests.delete_request(request_cells) flash.assert_no_errors()