def test_tag(provisioner, prov_data, provider, vm_name): """ Tests tagging VMs using provisioning dialogs. Prerequisites: * A provider set up, supporting provisioning in CFME Steps: * Open the provisioning dialog. * Apart from the usual provisioning settings, pick a tag. * Submit the provisioning request and wait for it to finish. * Visit th page of VM, it should display the selected tags Metadata: test_flag: provision Polarion: assignee: anikifor initialEstimate: 1/8h """ prov_data['catalog']['vm_name'] = vm_name prov_data['purpose']["apply_tags"] = CbTree.CheckNode(path=("Service Level *", "Gold")) template_name = provider.data['provisioning']['template'] vm = provisioner(template_name, prov_data) tags = vm.get_tags() assert any( tag.category.display_name == "Service Level" and tag.display_name == "Gold" for tag in tags ), "Service Level: Gold not in tags ({})".format(tags)
def test_provision_with_tag(appliance, vm_name, tag, provider): """ Tests tagging instance using provisioning dialogs. Steps: * Open the provisioning dialog. * Apart from the usual provisioning settings, pick a tag. * Submit the provisioning request and wait for it to finish. * Visit instance page, it should display the selected tags Metadata: test_flag: provision """ inst_args = { 'purpose': { 'apply_tags': Check_tree.CheckNode( ['{} *'.format(tag.category.display_name), tag.display_name]) } } collection = appliance.provider_based_collection(provider) instance = collection.create(vm_name, provider, form_values=inst_args) tags = instance.get_tags() assert any(instance_tag.category.display_name == tag.category.display_name and instance_tag.display_name == tag.display_name for instance_tag in tags), ("{}: {} not in ({})".format( tag.category.display_name, tag.display_name, str(tags)))
def test_provision_with_tag(appliance, vm_name, tag, provider, request): """ Tests tagging instance using provisioning dialogs. Steps: * Open the provisioning dialog. * Apart from the usual provisioning settings, pick a tag. * Submit the provisioning request and wait for it to finish. * Visit instance page, it should display the selected tags Metadata: test_flag: provision Polarion: assignee: anikifor casecomponent: Tagging initialEstimate: 1/4h """ inst_args = { 'purpose': { 'apply_tags': Check_tree.CheckNode( ['{} *'.format(tag.category.display_name), tag.display_name]) } } collection = appliance.provider_based_collection(provider) instance = collection.create(vm_name, provider, form_values=inst_args) request.addfinalizer(instance.cleanup_on_provider) assert tag in instance.get_tags( ), 'Provisioned instance does not have expected tag'
def set_additional_tenants(view, tenants): """ Sets additional tenants Args: view: AddCatalogItemView or EditCatalogItemView tenants: list of tenants with options to select Usage: set True to the path which needs to be checked and False for the path that needs to be unchecked catalog_item = appliance.collections.catalog_items.create( catalog_item_class, additional_tenants=[ (("All Tenants"), False), (("All Tenants", "My Company"), True), (("All Tenants", "My Company", "Child", "Grandchild"), True), ], *args, **kwargs ) """ if tenants is not None and isinstance(tenants, (list, tuple, set)): changes = [ view.fill({ "additional_tenants": CheckableBootstrapTreeview.CheckNode(path) if option else CheckableBootstrapTreeview.UncheckNode(path) }) for path, option in tenants ] return True in changes else: return False
def update(self, updates): """ Args: updates: Dictionary containing 'filters' key. Values are tuples of ([path], bool) Where bool is whether to check or uncheck the filter Returns: None """ view = navigate_to(self, 'All') for path, check in updates['filters']: fill_value = CbTree.CheckNode( path) if check else CbTree.UncheckNode(path) if view.tree.fill(fill_value): view.save.click() else: logger.info('No change to filter on update, not saving form.')
def testing_instance(request, setup_provider, provider, provisioning, vm_name, tag): """ Fixture to prepare instance parameters for provisioning """ image = provisioning['image']['name'] note = ('Testing provisioning from image {} to vm {} on provider {}'.format( image, vm_name, provider.key)) instance = Instance.factory(vm_name, provider, image) inst_args = dict() # Base instance info inst_args['request'] = { 'email': '*****@*****.**', 'first_name': 'Image', 'last_name': 'Provisioner', 'notes': note, } # TODO Move this into helpers on the provider classes recursive_update(inst_args, {'catalog': {'vm_name': vm_name}}) # Check whether auto-selection of environment is passed auto = False # By default provisioning will be manual try: parameter = request.param if parameter == 'tag': inst_args['purpose'] = { 'apply_tags': Check_tree.CheckNode( ['{} *'.format(tag.category.display_name), tag.display_name]) } else: auto = parameter except AttributeError: # in case nothing was passed just skip pass recursive_update(inst_args, { 'environment': { 'availability_zone': provisioning.get('availability_zone', None), 'security_groups': [provisioning.get('security_group', None)], 'cloud_network': provisioning.get('cloud_network', None), 'cloud_subnet': provisioning.get('cloud_subnet', None), 'resource_groups': provisioning.get('resource_group', None) }, 'properties': { 'instance_type': partial_match(provisioning.get('instance_type', None)), 'guest_keypair': provisioning.get('guest_keypair', None)} }) # GCE specific if provider.one_of(GCEProvider): recursive_update(inst_args, { 'properties': { 'boot_disk_size': provisioning['boot_disk_size'], 'is_preemptible': True} }) # Azure specific if provider.one_of(AzureProvider): # Azure uses different provisioning keys for some reason try: template = provider.data.templates.small_template vm_user = credentials[template.creds].username vm_password = credentials[template.creds].password except AttributeError: pytest.skip('Could not find small_template or credentials for {}'.format(provider.name)) recursive_update(inst_args, { 'customize': { 'admin_username': vm_user, 'root_password': vm_password}}) if auto: inst_args.update({'environment': {'automatic_placement': auto}}) yield instance, inst_args, image logger.info('Fixture cleanup, deleting test instance: %s', instance.name) try: instance.delete_from_provider() except Exception as ex: logger.warning('Exception while deleting instance fixture, continuing: {}' .format(ex.message))