Split muranodashboard config into multiple files

This commit splits muranodashboard's config file into multiple small
file, each adding a dashboard or a panel. It also adds machinery to
allow sharing app-catalog dashboard config file between muranodashboard
and app-catalog-ui.
Renames dashboard and panels in accordance to
https://etherpad.openstack.org/p/apps-dashboard-structure

Targets bp: catalog-dashboard-reorg

Depends-On: I6d1d8c99aecf10567608d0c96de69a5309e706e3
Change-Id: I7aee5d26185cc0a7bb54f2b39b85d580daa400ae
This commit is contained in:
Kirill Zaitsev 2016-08-29 02:16:10 +03:00
parent 9fb1fcb83c
commit 7378be6d21
22 changed files with 184 additions and 97 deletions

View File

@ -9,8 +9,7 @@
# 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.
"""API for the murano packages service.
"""
"""API for the murano packages service."""
from django.views import generic
from openstack_dashboard.api.rest import utils as rest_utils
@ -24,8 +23,7 @@ CLIENT_KEYWORDS = {'marker', 'sort_dir', 'paginate'}
@urls.register
class Packages(generic.View):
"""API for Murano packages.
"""
"""API for Murano packages."""
url_regex = r'app-catalog/packages/$'
@rest_utils.ajax()

View File

@ -15,12 +15,7 @@
from django.utils.translation import ugettext_lazy as _
import horizon
from muranodashboard import dashboard
class AppCatalog(horizon.Panel):
name = _('Browse')
name = _('Browse Local')
slug = 'catalog'
dashboard.Murano.register(AppCatalog)

View File

@ -15,13 +15,8 @@
from django.utils.translation import ugettext_lazy as _
import horizon
from muranodashboard import dashboard
class Categories(horizon.Panel):
name = _("Categories")
slug = 'categories'
policy_rules = (("murano", "get_category"),)
dashboard.Murano.register(Categories)

View File

@ -18,29 +18,15 @@ import horizon
# Load the api rest services into Horizon
import muranodashboard.api.rest # noqa
from muranodashboard import exceptions
# prevent pyflakes from fail
assert exceptions
class DeployPanels(horizon.PanelGroup):
slug = "deployment_group"
name = _("Catalog")
panels = ("environments", "catalog")
class ManagePanels(horizon.PanelGroup):
slug = "manage_metadata"
name = _("Manage")
panels = ("images", "packages", "categories")
class Murano(horizon.Dashboard):
name = getattr(settings, 'MURANO_DASHBOARD_NAME', _("Applications"))
class AppCatalog(horizon.Dashboard):
name = getattr(settings, 'MURANO_DASHBOARD_NAME', _("App Catalog"))
slug = "app-catalog"
panels = (DeployPanels, ManagePanels)
default_panel = "environments"
supports_tenants = True
horizon.register(Murano)
try:
horizon.base.Horizon.registered('app-catalog')
except horizon.base.NotRegistered:
horizon.register(AppCatalog)

View File

@ -15,13 +15,8 @@
from django.utils.translation import ugettext_lazy as _
import horizon
from muranodashboard import dashboard
class Environments(horizon.Panel):
name = _("Environments")
slug = 'environments'
policy_rules = (("murano", "list_environments"),)
dashboard.Murano.register(Environments)

View File

@ -15,12 +15,7 @@
from django.utils.translation import ugettext_lazy as _
import horizon
from muranodashboard import dashboard
class Images(horizon.Panel):
name = _("Images")
slug = 'images'
dashboard.Murano.register(Images)

View File

@ -0,0 +1,5 @@
# The name of the dashboard to be added to HORIZON['dashboards']. Required.
DASHBOARD = 'app-catalog'
# If set to True, this dashboard will not be added to the settings.
DISABLED = False

View File

@ -12,12 +12,6 @@
from muranodashboard import exceptions
# The name of the dashboard to be added to HORIZON['dashboards']. Required.
DASHBOARD = 'app-catalog'
# If set to True, this dashboard will not be added to the settings.
DISABLED = False
ADD_INSTALLED_APPS = [
'muranodashboard',
]
@ -39,3 +33,5 @@ ADD_JS_FILES = [
'app/murano/murano.module.js'
]
FEATURE = True

View File

@ -0,0 +1,8 @@
from django.utils.translation import ugettext_lazy as _
# The name of the panel group to be added to HORIZON_CONFIG. Required.
PANEL_GROUP = 'app-catalog_browse_group'
# The display name of the PANEL_GROUP. Required.
PANEL_GROUP_NAME = _('Browse')
# The name of the dashboard the PANEL_GROUP associated with. Required.
PANEL_GROUP_DASHBOARD = 'app-catalog'

View File

@ -0,0 +1,9 @@
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'catalog'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'app-catalog'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'app-catalog_browse_group'
# Python panel class of the PANEL to be added.
ADD_PANEL = 'muranodashboard.catalog.panel.AppCatalog'

View File

@ -0,0 +1,8 @@
from django.utils.translation import ugettext_lazy as _
# The name of the panel group to be added to HORIZON_CONFIG. Required.
PANEL_GROUP = 'app-catalog_manage_group'
# The display name of the PANEL_GROUP. Required.
PANEL_GROUP_NAME = _('Manage')
# The name of the dashboard the PANEL_GROUP associated with. Required.
PANEL_GROUP_DASHBOARD = 'app-catalog'

View File

@ -0,0 +1,9 @@
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'packages'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'app-catalog'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'app-catalog_manage_group'
# Python panel class of the PANEL to be added.
ADD_PANEL = 'muranodashboard.packages.panel.PackageDefinitions'

View File

@ -0,0 +1,9 @@
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'images'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'app-catalog'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'app-catalog_manage_group'
# Python panel class of the PANEL to be added.
ADD_PANEL = 'muranodashboard.images.panel.Images'

View File

@ -0,0 +1,9 @@
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'categories'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'app-catalog'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'app-catalog_manage_group'
# Python panel class of the PANEL to be added.
ADD_PANEL = 'muranodashboard.categories.panel.Categories'

View File

@ -0,0 +1,8 @@
from django.utils.translation import ugettext_lazy as _
# The name of the panel group to be added to HORIZON_CONFIG. Required.
PANEL_GROUP = 'app-catalog_applications_group'
# The display name of the PANEL_GROUP. Required.
PANEL_GROUP_NAME = _('Applications')
# The name of the dashboard the PANEL_GROUP associated with. Required.
PANEL_GROUP_DASHBOARD = 'app-catalog'

View File

@ -0,0 +1,9 @@
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'environments'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'app-catalog'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'app-catalog_applications_group'
# Python panel class of the PANEL to be added.
ADD_PANEL = 'muranodashboard.environments.panel.Environments'

View File

@ -11,9 +11,9 @@ MURANO_REPO_URL = 'http://apps.openstack.org/api/v1/murano_repo/liberty/'
DISPLAY_MURANO_REPO_URL = 'http://apps.openstack.org/#tab=murano-apps'
# Overrides the default dashboard name (Murano) that is displayed
# Overrides the default dashboard name (App Catalog) that is displayed
# in the main accordion navigation
# MURANO_DASHBOARD_NAME = "Murano"
# MURANO_DASHBOARD_NAME = "App Catalog"
# Specify a maximum number of limit packages.
# PACKAGES_LIMIT = 100

View File

@ -15,13 +15,8 @@
from django.utils.translation import ugettext_lazy as _
import horizon
from muranodashboard import dashboard
class PackageDefinitions(horizon.Panel):
name = _("Packages")
slug = 'packages'
policy_rules = (("murano", "get_package"),)
dashboard.Murano.register(PackageDefinitions)

View File

@ -218,7 +218,7 @@ class UITestCase(BaseDeps):
self.fill_field(by.By.ID, 'id_username', username)
self.fill_field(by.By.ID, 'id_password', password)
self.driver.find_element_by_xpath("//button[@type='submit']").click()
murano = self.driver.find_element_by_xpath(consts.Applications)
murano = self.driver.find_element_by_xpath(consts.AppCatalog)
if 'collapsed' in murano.get_attribute('class'):
murano.click()
@ -524,7 +524,8 @@ class ApplicationTestCase(ImageTestCase):
self.wait_for_alert_message()
def add_app_to_env(self, app_id, app_name='TestApp', env_id=None):
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
if env_id:
action = 'add'
app = '{0}/{1}'.format(app_id, env_id)

View File

@ -73,6 +73,7 @@ DeleteComponent = ".btn[id^='services__row_'][id$='__action_delete']"
# Panel's
Applications = "//*[@id='main_content']/div[2]//a[contains(text(), 'Applications')]" # noqa
Catalog = Applications + "/following::a[span[contains(text(), 'Catalog')]]"
Manage = Applications + "/following::a[span[contains(text(), 'Manage')]]"
AppCatalog = "//*[@id='main_content']/div[2]//a[contains(text(), 'App Catalog')]" # noqa
Browse = AppCatalog + "/following::a[span[contains(text(), 'Browse')]]"
Manage = AppCatalog + "/following::a[span[contains(text(), 'Manage')]]"
Applications = AppCatalog + "/following::a[span[contains(text(), 'Applications')]]" # noqa

View File

@ -33,11 +33,13 @@ from muranodashboard.tests.functional import utils
class TestSuiteSmoke(base.UITestCase):
"""This class keeps smoke tests which check operability of main panels"""
def test_smoke_environments_panel(self):
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_panel_is_present('Environments')
def test_smoke_applications_panel(self):
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.check_panel_is_present('Browse')
def test_smoke_images_panel(self):
@ -60,6 +62,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
2. Navigate to this environment
3. Go back to environment list and delete created environment
"""
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment('test_create_del_env')
self.go_to_submenu('Environments')
@ -74,6 +77,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
2. Change environment's name
3. Check that renamed environment is in environment list
"""
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment('test_edit_env')
self.go_to_submenu('Environments')
@ -92,6 +96,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
2. Change environment's name to empty
3. Check warning message appear
"""
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment('test_edit_env')
self.go_to_submenu('Environments')
@ -109,7 +114,8 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
2. Press 'Create Env'
3. Make sure that it's possible to choose just created environment
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.driver.find_elements_by_xpath(
"//a[contains(text(), 'Create Env')]")[0].click()
self.fill_field(by.By.ID, 'id_name', 'TestEnv')
@ -128,6 +134,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
3. Go back to environment list and delete created environment
"""
unicode_name = u'$yaql \u2665 unicode'
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment(unicode_name)
self.go_to_submenu('Environments')
@ -143,6 +150,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
3. Check a set of names, if current name isn't valid
appropriate error message should appear
"""
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.driver.find_element_by_css_selector(c.CreateEnvironment).click()
@ -168,6 +176,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
"""
# uuid.uuid4() generates random uuid
env_name = str(uuid.uuid4())
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment(env_name)
@ -186,6 +195,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
5. Sort rows by name and check it again.
6. Sort rows in other direction and check it again.
"""
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment('quick-env-1')
self.add_app_to_env(self.deployingapp_id)
@ -236,12 +246,14 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
6. Check that env status is 'Ready to configure'.
"""
self.add_app_to_env(self.mockapp_id)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_element_on_page(by.By.XPATH,
c.EnvStatus.format('quick-env-1',
'Ready to deploy'))
self.log_out()
self.log_in(cfg.common.user, cfg.common.password)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_element_on_page(by.By.XPATH,
c.EnvStatus.format('quick-env-1',
@ -265,6 +277,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
self.check_element_on_page(by.By.XPATH,
c.Status.format('Ready'),
sec=90)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_element_on_page(by.By.LINK_TEXT, 'quick-env-1')
env_id = self.get_element_id('quick-env-1')
@ -275,6 +288,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
'Ready to deploy'))
self.log_out()
self.log_in(cfg.common.user, cfg.common.password)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_element_on_page(by.By.XPATH,
c.EnvStatus.format('quick-env-1',
@ -300,12 +314,14 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
sec=90)
self.delete_component()
self.check_element_not_on_page(by.By.LINK_TEXT, 'TestApp')
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_element_on_page(by.By.XPATH,
c.EnvStatus.format('quick-env-1',
'Ready to deploy'))
self.log_out()
self.log_in(cfg.common.user, cfg.common.password)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_element_on_page(by.By.XPATH,
c.EnvStatus.format('quick-env-1',
@ -325,6 +341,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
8. Check that env status is 'Ready'.
"""
self.add_app_to_env(self.mockapp_id)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_element_on_page(by.By.LINK_TEXT, 'quick-env-1')
env_id = self.get_element_id('quick-env-1')
@ -340,6 +357,7 @@ class TestSuiteEnvironment(base.ApplicationTestCase):
'Ready to deploy'))
self.log_out()
self.log_in(cfg.common.user, cfg.common.password)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.check_element_on_page(by.By.XPATH,
c.EnvStatus.format('quick-env-1',
@ -430,7 +448,8 @@ class TestSuiteFields(base.FieldsTestCase):
12. Set "domain.local" as a domain name and check that
error message didn't appear
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.mockapp_id)
field_id = self.mockapp_id + "_0-domain"
@ -487,7 +506,8 @@ class TestSuiteFields(base.FieldsTestCase):
3. Check a set of names, if current name isn't valid
appropriate error message should appears
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.mockapp_id)
@ -518,7 +538,8 @@ class TestSuiteFields(base.FieldsTestCase):
4. Set app name and click 'Next',
check that there is no error message
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.mockapp_id)
@ -542,7 +563,8 @@ class TestSuiteFields(base.FieldsTestCase):
field, check that validation failed
5. Set correct password. Validation has to pass
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.mockapp_id)
@ -569,7 +591,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
will appear
4. Click 'Back' and check that first wizard step is shown
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.mockapp_id)
@ -594,7 +617,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
4. Click '+' and verify that creation of second app is possible
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.mockapp_id)
@ -615,7 +639,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
4. Delete TestApp app from environment
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.mockapp_id)
@ -639,7 +664,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
2. Set search criterion in the search field(e.g 'PostgreSQL')
3. Click on 'Filter' and check result
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.fill_field(by.By.CSS_SELECTOR, 'input.form-control', 'PostgreSQL')
self.driver.find_element_by_id('apps__action_filter').click()
@ -661,7 +687,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
4. Select 'Web' category in 'App Category' dropdown menu
5. Verify that MockApp is shown
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.driver.find_element_by_xpath(
c.CategorySelector.format('All')).click()
self.driver.find_element_by_partial_link_text('Databases').click()
@ -689,6 +716,7 @@ class TestSuiteApplications(base.ApplicationTestCase):
and go to the env2
9. Check that added application is here
"""
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment('env1')
self.go_to_submenu('Environments')
@ -699,7 +727,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
env_id = self.get_element_id('env2')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.driver.find_element_by_xpath(
".//*[@id='environment_switcher']/a").click()
@ -729,7 +758,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
3. Click deploy
4. Check that for "Deploying" status progress bar is seen
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.mockapp_id)
field_id = "{0}_0-name".format(self.mockapp_id)
self.fill_field(by.By.ID, field_id, value='TestApp')
@ -795,7 +825,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
2. Choose some application and click on 'More info'
3. Verify info about application
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('details', self.mockapp_id)
self.assertEqual('MockApp for webUI tests',
@ -902,7 +933,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
2. Check for YAQL validator
3. Check that app is added to the environment
"""
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('quick-add', self.hot_app_id)
field_id = "{0}_0-name".format(self.hot_app_id)
self.fill_field(by.By.ID, field_id, value='TestHotApp')
@ -945,6 +977,7 @@ class TestSuiteApplications(base.ApplicationTestCase):
# In case of application some short name is needed to fit on page
app_names.append(str(uuid.uuid4())[::4])
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment(env_name)
self.go_to_submenu('Environments')
@ -953,7 +986,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
for idx, app_name in enumerate(app_names):
# Add application to the environment
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app(
'add', '{0}/{1}'.format(self.mockapp_id, env_id))
self.fill_field(by.By.NAME,
@ -1008,6 +1042,7 @@ class TestSuiteApplications(base.ApplicationTestCase):
# In case of application some short name is needed to fit on page
app_names.append(str(uuid.uuid4())[::4])
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment(env_name)
self.go_to_submenu('Environments')
@ -1016,7 +1051,8 @@ class TestSuiteApplications(base.ApplicationTestCase):
for idx, app_name in enumerate(app_names, 1):
# Add application to the environment
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app(
'add', '{0}/{1}'.format(self.mockapp_id, env_id))
self.fill_field(by.By.NAME,
@ -1085,8 +1121,8 @@ class TestSuiteAppsPagination(base.UITestCase):
def test_apps_pagination(self):
"""Test check pagination in case of many applications installed."""
self.navigate_to('Catalog')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
packages_list = [elem.name for elem in
self.murano_client.packages.list()]
# No list of apps available in the client only packages are.
@ -1181,8 +1217,8 @@ class TestSuitePackages(base.PackageTestCase):
self.fill_field(by.By.ID, 'id_tags', 'TEST_TAG')
self.modify_package('tags', 'TEST_TAG')
self.navigate_to('Catalog')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.select_and_click_action_for_app('details', self.postgre_id)
self.assertIn('TEST_TAG',
self.driver.find_element_by_xpath(
@ -1225,8 +1261,8 @@ class TestSuitePackages(base.PackageTestCase):
self.wait_for_alert_message()
self.check_package_parameter_by_id(self.postgre_id, 'Active', 'False')
self.navigate_to('Catalog')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
# 'Quick Deploy' button contains id of the application.
# So it is possible to definitely determinate is it in catalog or not.
btn_xpath = ("//*[@href='{0}/app-catalog/catalog/quick-add/{1}']"
@ -1243,8 +1279,8 @@ class TestSuitePackages(base.PackageTestCase):
self.check_package_parameter_by_id(self.postgre_id, 'Active', 'True')
self.navigate_to('Catalog')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.check_element_on_page(by.By.XPATH, btn_xpath)
def test_check_toggle_public_package(self):
@ -1282,8 +1318,8 @@ class TestSuitePackages(base.PackageTestCase):
# Check that application is available in other project.
self.switch_to_project(new_project)
self.navigate_to('Catalog')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
# 'Quick Deploy' button contains id of the application.
# So it is possible to definitely determine is it in catalog or not.
btn_xpath = ("//*[@href='{0}/app-catalog/catalog/quick-add/{1}']"
@ -1304,8 +1340,8 @@ class TestSuitePackages(base.PackageTestCase):
# Check that application now is not available in other porject.
self.switch_to_project(new_project)
self.navigate_to('Catalog')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.check_element_not_on_page(by.By.XPATH, btn_xpath)
def test_modify_description(self):
@ -1323,8 +1359,8 @@ class TestSuitePackages(base.PackageTestCase):
self.modify_package('description', 'New Description')
self.navigate_to('Catalog')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.assertEqual('New Description',
self.driver.find_element_by_xpath(
c.MockAppDescr).text)
@ -2237,8 +2273,8 @@ class TestSuitePackageCategory(base.PackageTestCase):
9. Select new category in "App category" dropdown list
"""
self._import_package_with_category(self.archive, self.category)
self.navigate_to('Catalog')
self.go_to_submenu('Browse')
self.navigate_to('Browse')
self.go_to_submenu('Browse Local')
self.driver.find_element_by_xpath(
c.CategorySelector.format('All')).click()
self.driver.find_element_by_partial_link_text(self.category).click()
@ -2269,7 +2305,7 @@ class TestSuitePackageCategory(base.PackageTestCase):
# create environment
env_name = str(uuid.uuid4())
self.navigate_to('Catalog')
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment(env_name)
self.go_to_submenu('Environments')
@ -2417,6 +2453,7 @@ class TestSuiteMultipleEnvironments(base.ApplicationTestCase):
3. Check created environments
4. Delete created environments at once
"""
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment('test_create_del_env_1')
self.go_to_submenu('Environments')
@ -2444,6 +2481,7 @@ class TestSuiteMultipleEnvironments(base.ApplicationTestCase):
"""
self.add_app_to_env(self.mockapp_id)
self.add_app_to_env(self.mockapp_id)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.driver.find_element_by_css_selector(
"label[for=ui-id-1]").click()
@ -2469,6 +2507,7 @@ class TestSuiteMultipleEnvironments(base.ApplicationTestCase):
"""
self.add_app_to_env(self.deployingapp_id)
self.add_app_to_env(self.deployingapp_id)
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.driver.find_element_by_css_selector(
"label[for=ui-id-1]").click()
@ -2498,6 +2537,7 @@ class TestSuiteMultipleEnvironments(base.ApplicationTestCase):
5. Check that "Abandon Environments" button is only clickable
if env with status "Ready", "Deploying" are checked
"""
self.navigate_to('Applications')
self.go_to_submenu('Environments')
self.create_environment('quick-env-1')
self.go_to_submenu('Environments')

View File

@ -0,0 +1,16 @@
---
prelude: >
Murano Dashboard has been renamed to App Catalog and now allows
seamless integration and single panel structure
with App Catalog UI dashboard.
features:
- Murano dashboard has been renamed to App Catalog,
monolithic config file has been split into multiple small files.
Every such file defines either a panel group or adds
general murano-related settings to horizon.
upgrade:
- To upgrade to Newton version of app catalog you need to remove old
``_50_murano.py`` config file, that defined in murano dashboard. Be sure to
also remove any .pyc and .po files. After that you need to copy all new
config files from ``muranodashboard/local/enabled/*.py`` to
``openstack_dashboard/local/enabled/`` and restart horizon