From 30488d705854878501a8da1ac94e2cf6d3c5293e Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Tue, 2 Aug 2016 11:08:39 +0200 Subject: [PATCH] Add test with public dashboards This change adds a test case deploying the StackLight dashboards on the public network using a network template. Change-Id: I47c7482891e79d049b4c5f2941228ccedd574495 --- .../network_templates/public_dashboards.yaml | 157 ++++++++++++++++++ .../toolchain/test_network_templates.py | 60 +++++++ 2 files changed, 217 insertions(+) create mode 100644 fixtures/network_templates/public_dashboards.yaml diff --git a/fixtures/network_templates/public_dashboards.yaml b/fixtures/network_templates/public_dashboards.yaml new file mode 100644 index 0000000..c6cf51c --- /dev/null +++ b/fixtures/network_templates/public_dashboards.yaml @@ -0,0 +1,157 @@ +adv_net_template: + default: + network_assignments: + fuelweb_admin: + ep: br-fw-admin + management: + ep: br-mgmt + private: + ep: br-mesh + public: + ep: br-ex + storage: + ep: br-storage + network_scheme: + admin: + endpoints: + - br-fw-admin + roles: + admin/pxe: br-fw-admin + fw-admin: br-fw-admin + transformations: + - action: add-br + name: br-fw-admin + - action: add-port + bridge: br-fw-admin + name: <% if1 %> + mgmt: + endpoints: + - br-mgmt + roles: + ceilometer/api: br-mgmt + cinder/api: br-mgmt + glance/api: br-mgmt + heat/api: br-mgmt + horizon: br-mgmt + keystone/api: br-mgmt + management: br-mgmt + mgmt/api: br-mgmt + mgmt/corosync: br-mgmt + mgmt/database: br-mgmt + mgmt/memcache: br-mgmt + mgmt/messaging: br-mgmt + mgmt/vip: br-mgmt + mongo/db: br-mgmt + murano/api: br-mgmt + neutron/api: br-mgmt + neutron/private: br-mgmt + nova/api: br-mgmt + nova/migration: br-mgmt + rados_gw_management_vip: br-mgmt + sahara/api: br-mgmt + swift/api: br-mgmt + swift/replication: br-mgmt + elasticsearch: br-mgmt + influxdb_vip: br-mgmt + infrastructure_alerting: br-mgmt + transformations: + - action: add-br + name: br-mgmt + - action: add-port + bridge: br-mgmt + name: <% if3 %> + private: + endpoints: + - br-mesh + roles: + neutron/mesh: br-mesh + transformations: + - action: add-br + name: br-mesh + - action: add-port + bridge: br-mesh + name: <% if4 %> + public: + endpoints: + - br-ex + roles: + ceph/radosgw: br-ex + cinder/api: br-ex + ex: br-ex + neutron/floating: br-floating + public/vip: br-ex + kibana: br-ex + grafana: br-ex + infrastructure_alerting_ui: br-ex + transformations: + - action: add-br + name: br-ex + - action: add-br + name: br-floating + provider: ovs + - action: add-patch + bridges: + - br-floating + - br-ex + mtu: 65000 + provider: ovs + - action: add-port + bridge: br-ex + name: <% if2 %> + storage: + endpoints: + - br-storage + roles: + ceph/replication: br-storage + cinder/iscsi: br-storage + storage: br-storage + swift/replication: br-storage + transformations: + - action: add-br + name: br-storage + - action: add-port + bridge: br-storage + name: <% if5 %> + nic_mapping: + default: + # fw-admin + if1: enp0s3 + # public + if2: enp0s4 + # management + if3: enp0s5 + # private + if4: enp0s6 + # storage + if5: enp0s7 + templates_for_node_role: + # The following roles supports deployments using Neutron with tunneling segmentation + # and Cinder with LVM over iSCSI + cinder: + - admin + - mgmt + - private + - storage + compute: + - admin + - mgmt + - private + - storage + controller: + - admin + - mgmt + - public + - private + - storage + elasticsearch_kibana: + - admin + - mgmt + - public + influxdb_grafana: + - admin + - mgmt + - public + infrastructure_alerting: + - admin + - mgmt + - public diff --git a/stacklight_tests/toolchain/test_network_templates.py b/stacklight_tests/toolchain/test_network_templates.py index 6598d58..3af2ea0 100644 --- a/stacklight_tests/toolchain/test_network_templates.py +++ b/stacklight_tests/toolchain/test_network_templates.py @@ -115,3 +115,63 @@ class TestToolchainNetworkTemplates(api.ToolchainApi): self.env.make_snapshot("deploy_toolchain_with_network_template", is_make=True) + + @test(depends_on_groups=["prepare_slaves_3"], + groups=["deploy_toolchain_with_public_dashboards", "deploy", + "toolchain", "network_templates"]) + @log_snapshot_after_test + def deploy_toolchain_with_public_dashboards(self): + """Deploy a cluster with the LMA Toolchain plugins using the public + network for the dashboards. + + Scenario: + 1. Upload the LMA Toolchain plugins to the master node + 2. Install the plugins + 3. Create the cluster using VxLAN segmentation + 4. Add 1 node with controller role + 5. Add 1 node with compute and cinder roles + 6. Add 1 node with plugin roles + 7. Upload the custom network template + 8. Deploy the cluster + 9. Check that LMA Toolchain plugins are running + 10. Run OSTF + + Duration 60m + Snapshot deploy_toolchain_with_public_dashboards + """ + self.check_run("deploy_toolchain_with_public_dashboards") + self.env.revert_snapshot("ready_with_3_slaves") + + self.prepare_plugins() + + self.helpers.create_cluster( + name="deploy_toolchain_with_public_dashboards", + settings={ + "net_provider": "neutron", + "net_segment_type": settings.NEUTRON_SEGMENT["tun"] + } + ) + + self.activate_plugins() + + nailgun_client = self.helpers.nailgun_client + network_template = self.get_network_template("public_dashboards") + nailgun_client.upload_network_template( + cluster_id=self.helpers.cluster_id, + network_template=network_template) + logger.info("Network template: {0}".format(network_template)) + + networks = nailgun_client.get_network_groups() + logger.info("Network groups before update: {0}".format(networks)) + + # Don't update the interfaces when using network templates + self.helpers.deploy_cluster(self.settings.base_nodes, + verify_network=True, + update_interfaces=False) + + self.check_plugins_online() + + self.helpers.run_ostf() + + self.env.make_snapshot("deploy_toolchain_with_public_dashboards", + is_make=True)