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:
parent
9fb1fcb83c
commit
7378be6d21
@ -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()
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
5
muranodashboard/local/enabled/_50_dashboard_catalog.py
Normal file
5
muranodashboard/local/enabled/_50_dashboard_catalog.py
Normal 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
|
@ -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
|
8
muranodashboard/local/enabled/_60_panel_group_browse.py
Normal file
8
muranodashboard/local/enabled/_60_panel_group_browse.py
Normal 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'
|
@ -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'
|
8
muranodashboard/local/enabled/_70_panel_group_manage.py
Normal file
8
muranodashboard/local/enabled/_70_panel_group_manage.py
Normal 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'
|
@ -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'
|
9
muranodashboard/local/enabled/_72_panel_murano_images.py
Normal file
9
muranodashboard/local/enabled/_72_panel_murano_images.py
Normal 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'
|
@ -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'
|
@ -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'
|
@ -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'
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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')
|
||||
|
@ -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
|
Loading…
Reference in New Issue
Block a user