Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs update for 1.2 (screenshots, guides and topics) #5878

Open
wants to merge 21 commits into
base: release-1.2
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
493 changes: 297 additions & 196 deletions docs/docs/guides/resource-manager.mdx

Large diffs are not rendered by default.

Binary file not shown.
Binary file not shown.
Binary file removed docs/docs/media/github_access_settings.png
Binary file not shown.
Binary file removed docs/docs/media/github_create_fork.png
Binary file not shown.
Binary file removed docs/docs/media/github_forked_repo.png
Binary file not shown.
Binary file modified docs/docs/media/group_tagconfig_grp_adding_members.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/group_tagconfig_grp_new_grp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/group_tagconfig_grp_new_members.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/profile_tokens.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/profile_tokens_copy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/profile_tokens_create.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/tutorial_1_branch_creation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/tutorial_1_branch_details.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/tutorial_1_branch_diff.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/tutorial_1_branch_list.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/docs/media/tutorial_1_organization_create.png
Binary file modified docs/docs/media/tutorial_1_organization_details.png
Binary file modified docs/docs/media/tutorial_1_organization_edit.png
Binary file modified docs/docs/media/tutorial_1_organizations.png
Binary file modified docs/docs/media/tutorial_2_historical.png
Binary file modified docs/docs/media/tutorial_3_schema.png
Binary file modified docs/docs/media/tutorial_4_metadata.png
Binary file modified docs/docs/media/tutorial_4_metadata_edit.png
Binary file modified docs/docs/media/tutorial_6_branch_creation.png
Binary file modified docs/docs/media/tutorial_6_interface_update.png
2 changes: 1 addition & 1 deletion frontend/app/tests/e2e/form/multi-select.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ test.describe("Verify multi select behaviour", () => {
await page.getByRole("button", { name: "+ Add new Tag" }).click();
await page.getByTestId("new-object-form").getByLabel("Name *").fill("new tag");
await page.getByRole("button", { name: "Save" }).click();
await expect(page.getByText("blue×green×new tag×")).toBeVisible();
await expect(page.getByText("new tag×")).toBeVisible();
});
});
});
143 changes: 143 additions & 0 deletions frontend/app/tests/e2e/guide/resource_manager_guide.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
import { expect, test } from "@playwright/test";
import { ACCOUNT_STATE_PATH } from "../../constants";
import { saveScreenshotForDocs } from "../../utils";

test.describe("Resource Managers guide", () => {
test.describe.configure({ mode: "parallel" });
test.slow();
test.use({ storageState: ACCOUNT_STATE_PATH.ADMIN });

test("IP Address Pool", async ({ page }) => {
await test.step("Create prefix 10.100.0.0/24", async () => {
await page.goto("/ipam");
await page.getByTestId("create-object-button").click();
await page.getByLabel("Prefix *").fill("10.100.0.0/24");
await saveScreenshotForDocs(page, "guides/resource_manager_rss_prefix_10_100_0");
await page.getByRole("button", { name: "Save" }).click();
await page.getByText("IPPrefix created").waitFor({ state: "visible" });
});

await test.step("Create IP Pool - 10.100.0.0/24", async () => {
await page.goto("/resource-manager");
await page.getByTestId("create-object-button").click();
await page.getByLabel("Select an object type").click();
await page.getByRole("option", { name: "IP Address Pool Core" }).click();

await page.getByRole("textbox", { name: "Name *" }).fill("My IP address pool");
await page.getByRole("spinbutton", { name: "Default Prefix Length" }).fill("24");
await page
.getByTestId("side-panel-container")
.locator("div")
.filter({ hasText: "Resources *" })
.nth(1)
.click();
await page.locator("form").getByPlaceholder("Filter...").fill("10.100.0");
await page.getByRole("option", { name: "10.100.0.0/" }).click();
await page
.locator("div")
.filter({ hasText: /^Resources \*$/ })
.click();

await page.getByRole("combobox", { name: "IPAM Namespace *" }).click();
await page.getByRole("option", { name: "default" }).click();

await saveScreenshotForDocs(page, "guides/resource_manager_pool_ip");
await page.getByRole("button", { name: "Save" }).click();
});

await test.step("Use Pool to allocate IP on Device", async () => {
await page.goto("/objects/InfraDevice");
await page.getByTestId("create-object-button").click();
await page.getByRole("combobox", { name: "Site" }).click();
await page.getByRole("option", { name: "atl1" }).click();
await page.getByRole("textbox", { name: "Name *" }).fill("dev-123");
await page.getByRole("textbox", { name: "Type *" }).fill("MX204");
await page.getByTestId("select-open-pool-option-button").click();
await page.getByRole("option", { name: "My IP address pool" }).waitFor({ state: "visible" });
await saveScreenshotForDocs(page, "guides/resource_manager_pool_device_before");
await page.getByRole("option", { name: "My IP address pool" }).click();
await saveScreenshotForDocs(page, "guides/resource_manager_pool_device_after");
await page.getByRole("button", { name: "Save" }).click();
});
});

test("IP Prefix Pool", async ({ page }) => {
await test.step("Create prefix 10.100.1.0/24", async () => {
await page.goto("/ipam");
await page.getByTestId("create-object-button").click();
await page.getByLabel("Prefix *").fill("10.100.1.0/24");
await page.getByRole("combobox", { name: "Member Type" }).click();
await page
.locator("div")
.filter({ hasText: /^Prefix$/ })
.click();
await saveScreenshotForDocs(page, "guides/resource_manager_rss_prefix_10_100_1");
await page.getByRole("button", { name: "Save" }).click();
await page.getByText("IPPrefix created").waitFor({ state: "visible" });
});

await test.step("Create Prefix Pool - 10.100.1.0/24", async () => {
await page.goto("/resource-manager");
await page.getByTestId("create-object-button").click();
await page.getByLabel("Select an object type").click();
await page.getByRole("option", { name: "IP Prefix Pool Core" }).click();

await page.getByRole("textbox", { name: "Name *" }).fill("Customer Service Pool");
await page.getByLabel("Default Prefix Length").fill("31");

await page
.getByTestId("side-panel-container")
.locator("div")
.filter({ hasText: "Resources *" })
.first()
.click();
await page.locator("form").getByPlaceholder("Filter...").fill("10.100.1");
await page.getByRole("option", { name: "10.100.1.0/" }).click();
await page
.locator("div")
.filter({ hasText: /^Resources \*$/ })
.click();

await page.getByRole("combobox", { name: "IPAM Namespace *" }).click();
await page.getByRole("option", { name: "default" }).click();

await saveScreenshotForDocs(page, "guides/resource_manager_pool_prefix");
await page.getByRole("button", { name: "Save" }).click();
});

// TODO: Allocating an IP prefix to a relationship of a node - Need #5888
});

test("Number Pool", async ({ page }) => {
await test.step("Create Number Pool - VLAN ID", async () => {
await page.goto("/resource-manager");
await page.getByTestId("create-object-button").click();
await page.getByLabel("Select an object type").click();
await page.getByRole("option", { name: "Number Pool Core" }).click();
await page.getByLabel("Name *").fill("My VLAN ID Pool");
await page.getByLabel("Node *").click();
const filterInput = page.getByPlaceholder("Filter...").nth(1);
await filterInput.fill("VLAN");
await page.getByText("VLAN Infra").waitFor({ state: "visible" });
await page.getByText("VLAN Infra").click();
await expect(page.getByLabel("Number Attribute *")).toContainText("Vlan Id");
await page.getByRole("spinbutton", { name: "Start range *" }).fill("100");
await page.getByRole("spinbutton", { name: "End range *" }).fill("1000");
await saveScreenshotForDocs(page, "guides/resource_manager_pool_vlan");
await page.getByRole("button", { name: "Save" }).click();
await page.getByText("Number pool created").waitFor({ state: "visible" });
});

await test.step("Use Pool to allocate ID to VLAN", async () => {
await page.goto("/objects/InfraVLAN");
await page.getByTestId("create-object-button").click();
await page.getByRole("textbox", { name: "Name *" }).fill("My vlan");
await page.getByTestId("number-pool-button").click();
await page.getByRole("option", { name: "My VLAN ID Pool" }).waitFor({ state: "visible" });
await saveScreenshotForDocs(page, "guides/resource_manager_pool_vlan_before");
await page.getByRole("option", { name: "My VLAN ID Pool" }).click();
await saveScreenshotForDocs(page, "guides/resource_manager_pool_vlan_after");
await page.getByRole("button", { name: "Save" }).click();
});
});
});
4 changes: 2 additions & 2 deletions frontend/app/tests/e2e/ipam/ipam-tree.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ test.describe("/ipam - Ipam Tree", () => {

test("verify tree count", async ({ page }) => {
await page.goto("/ipam/prefixes/");
await expect(page.getByRole("link", { name: "/8 19" })).toBeVisible();
await page.getByRole("treeitem", { name: "/8 19" }).getByTestId("tree-item-toggle").click();
await expect(page.getByRole("link", { name: "/8 21" })).toBeVisible();
await page.getByRole("treeitem", { name: "/8 21" }).getByTestId("tree-item-toggle").click();
await expect(page.getByRole("link", { name: "/16 16" })).toBeVisible();
await expect(page.getByRole("link", { name: "10.0.0.0/16" })).toBeVisible();
await expect(page.getByRole("link", { name: "10.2.0.0/" })).toBeVisible();
Expand Down
4 changes: 2 additions & 2 deletions frontend/app/tests/e2e/objects/object-hierarchical.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ test.describe("Object hierarchical view", () => {
});

await test.step("open site selection and verify All tab", async () => {
await page.getByLabel("Site *").click();
await page.getByLabel("Site").click();
await expect(page.getByRole("tab", { name: "All" })).toBeVisible();
await expect(page.getByRole("option", { name: "atl1" })).toBeVisible();
});
Expand All @@ -62,7 +62,7 @@ test.describe("Object hierarchical view", () => {
});

await test.step("verify selected site", async () => {
await expect(page.getByLabel("Site *")).toContainText("atl1");
await expect(page.getByLabel("Site")).toContainText("atl1");
});
});
});
2 changes: 1 addition & 1 deletion models/base/dcim.yml
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ nodes:
- name: site
label: Site
peer: LocationSite
optional: false
optional: true
cardinality: one
kind: Attribute
order_weight: 1
Expand Down
2 changes: 2 additions & 0 deletions models/base/ipam.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ nodes:
label: Drained
description: "Temporarily taken out of service"
color: "#bfbfbf"
default_value: "provisioning"
- name: role
kind: Dropdown
choices:
Expand All @@ -80,6 +81,7 @@ nodes:
label: User
description: "Segments designed for end-user access and activities"
color: "#a0b78d"
default_value: "server"
relationships:
- name: site
label: "Site"
Expand Down
15 changes: 15 additions & 0 deletions models/base/service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,18 @@ nodes:
identifier: infrabackboneservice__location_site_b
kind: Attribute
order_weight: 5

- name: Service
namespace: Customer
description: "A Customer service"
icon: "carbon:ibm-cloud-internet-services"
label: "Customer Service"
inherit_from:
- InfraService
relationships:
- name: assigned_prefix
label: "Assigned prefix"
peer: IpamIPPrefix
optional: false
kind: Attribute
cardinality: one
Loading