Skip to content

Commit

Permalink
Merge branch 'master' into func
Browse files Browse the repository at this point in the history
  • Loading branch information
EraKin575 authored Sep 19, 2023
2 parents 375e870 + 8aaa098 commit 43823a1
Show file tree
Hide file tree
Showing 69 changed files with 3,387 additions and 1,486 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/mesheryctl-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
- name: Deploy Service Mesh
run: |
cat ~/auth.json
echo | mesheryctl mesh deploy --adapter meshery-istio --namespace istio-system -t ~/auth.json ISTIO
echo | mesheryctl mesh deploy istio --namespace istio-system -t ~/auth.json ISTIO
sleep 50
shell: '/bin/bash {0}'

Expand Down Expand Up @@ -114,7 +114,7 @@ jobs:

- name: Deploy Service Mesh
run: |
echo | mesheryctl mesh deploy --adapter meshery-istio --namespace istio-system -t ~/auth.json ISTIO
echo | mesheryctl mesh deploy istio --namespace istio-system -t ~/auth.json ISTIO
sleep 50
shell: '/bin/bash {0}'

Expand Down
7 changes: 3 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,9 @@ Potential Solution:
- Go to your meshery folder in your local-system where you’ve cloned it.
Execute:


- Restart the meshery server.
- Make sure that `BUILD="v0.X.X"` is logged in some starting line while starting the server.

- `git remote add upstream https://github.com/meshery/meshery`
- `git fetch upstream`
- Restart the meshery server
- Addionally, before restarting the server, if you like to pull the latest changes, you can do: `git pull upstream master`
### UI Development Server

Expand Down
14 changes: 10 additions & 4 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
| ----------------------- | ----------------- | ----------- |
| Hussaina Begum | hexxdump | VMware |
| Aadhitya Amarendiran | alphaX86 | Citi |
| Jerod Culpepper | cpepper96 | SAIC |
| Antonette Caldwell | acald-creator | Acquia |

### UI Maintainers

Expand All @@ -18,19 +20,21 @@

| Name | GitHub | Affiliation |
| ------------------- | ------------- | ----------- |
| Aisuko Li | aisuko | Layer5 |
| Aisuko Li | aisuko | RMIT |
| Dhiraj Gedam | dheerajng | Citrix |
| Haim Helman | thehh1974 | VMware |
| Hussaina Begum | hexxdump | VMware |
| Ashish Tiwari | revolyssup | API7 |
| Michael Gfeller | mgfeller | Computas AS |
| Antonette Caldwell | acald-creator | Acquia |
| Xin Huang | gyohuangxin | Intel |

### CI / Build & Release Maintainers

| Name | GitHub | Affiliation |
| --------------------- | ------------------ | ----------- |
| Ashish Tiwari | revolyssup | API7 |
| Pranav Singh | theBeginner86 | Layer5 |
| Mario Arriaga | MarioArriaga92 | F5 |

### Docs Maintainers
Expand All @@ -43,6 +47,8 @@

### Site Maintainers

| Name | GitHub | Affiliation |
| ---------------------- | ----------- | ----------- |
| Nikhil Ladha. | Nikhil-Ladha | Red Hat |
| Name | GitHub | Affiliation |
| ---------------------- | ----------- | -------------- |
| Nikhil Ladha | Nikhil-Ladha | Red Hat |
| Aaditya Narayan Subedy | asubedy | Fast Retailing |

4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,10 @@ proto-build:
error: dep-check
go run github.com/layer5io/meshkit/cmd/errorutil -d . analyze -i ./server/helpers -o ./server/helpers --skip-dirs mesheryctl

## Runs meshkit error utility to update error codes for meshery server only.
server-error-util:
go run github.com/layer5io/meshkit/cmd/errorutil -d . --skip-dirs mesheryctl update -i ./server/helpers/ -o ./server/helpers

## Build Meshery UI; Build and run Meshery Server on your local machine.
ui-server: ui-meshery-build ui-provider-build server

Expand Down
40 changes: 40 additions & 0 deletions docs/_releases/v0.6.141.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
layout: release
date: 2023-09-18
tag: v0.6.141
---

## What's New
## 🔤 General
## ⌨️ Meshery CLI

- [bug] Update healthcheck.go @theBeginner86 (#8770)

## 🖥 Meshery UI

- [chore] Fix lint @theBeginner86 (#8821)
- [UI] Added Connect Helm Repo button in connections page @Yashsharma1911 (#8816)
- Format k8s response @MUzairS15 (#8775)
- Notification Center @aabidsofi19 (#8733)
- Bump @cypress/request and cypress in /ui @dependabot (#8792)
- [UI] Prevent rjsf modal rerendering @Yashsharma1911 (#8787)

## 🐛 Bug Fixes

- [bug] Update healthcheck.go @theBeginner86 (#8770)

## 🧰 Maintenance

- [chore] Fix lint @theBeginner86 (#8821)
- Bump @cypress/request and cypress in /ui @dependabot (#8792)

## 📖 Documentation

- Notification Center @aabidsofi19 (#8733)
- Fixes the issue in Docs Search: Unwanted display of search result on separate line from bullet point in safari browser(7402) @phanithinks (#8690)
- meshmodel docs @parth721 (#8656)

## 👨🏽‍💻 Contributors

Thank you to our contributors for making this release possible:
@MUzairS15, @Yashsharma1911, @aabidsofi19, @alphaX86, @dependabot, @leecalcote, @parth721, @phanithinks and @theBeginner86
35 changes: 35 additions & 0 deletions docs/_releases/v0.6.142.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
layout: release
date: 2023-09-19
tag: v0.6.142
---

## What's New
## 🔤 General
- Remove adapter references in default env vars @leecalcote (#8810)
- [Docker Extension] Remove adapters from default configuration @leecalcote (#8811)

## 🖥 Meshery UI

- [chore] fix color undefined @theBeginner86 (#8832)
- [UI] Notification Center: Update color of "No notifications to show" @leecalcote (#8828)
- Fix repetitive api calls and UI issues in connections page @sudhanshutech (#8825)
- changed LoadTestTimerConfig and MeshAdapterConfigComponent to functional component @EraKin575 (#8781)

## 🐛 Bug Fixes

- [chore] fix color undefined @theBeginner86 (#8832)
- Fix repetitive api calls and UI issues in connections page @sudhanshutech (#8825)

## 🧰 Maintenance

- Meshery End-to-End Tests with mesheryctl @KiptoonKipkurui (#8808)

## 📖 Documentation

- Update "Meshery Deployment Incompatible" error docs @Mohith234 (#8824)

## 👨🏽‍💻 Contributors

Thank you to our contributors for making this release possible:
@EraKin575, @KiptoonKipkurui, @Mohith234, @Yashsharma1911, @aabidsofi19, @leecalcote, @sudhanshutech and @theBeginner86
171 changes: 171 additions & 0 deletions docs/pages/project/contributing/contributing-ui-notification-center.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
---
layout: page
title: Contributing to Meshery UI - Notification Center
permalink: project/contributing/contributing-ui-notification-center
description: How to contribute to the Notification Center in Meshery's web-based UI.
language: en
type: project
category: contributing
---

<div class="prereqs"><p><strong style="font-size: 20px;">Prerequisite Reading</strong></p>
<ol><li><a ahref="contributing-ui">Contributing to Meshery UI</a></li></ol>
</div>

## <a name="contributing-ui-notification-center">Contributing to Meshery UI - Notification Center</a>

<video class="videoTest" style="width:min(100%,750px)" height="auto" autoplay muted loop>
<source src="https://github.com/meshery/meshery/assets/65964225/345672de-3f61-4be0-b3c8-0e7480cc496c" type="video/mp4">
Your browser does not support the video tag
</video>

The `NotificationCenter` component of Meshery UI Switching to Graphql subscriptions and implementing robust filtering. Events are persisted in Meshery Server and state management on client is done using Redux Toolkit and RTK.

#### User-facing Features

- Robust filtering support inspired by GitHub's notification filtering style.
- Search is also included.
- Proper hierarchial presentation of error details, including probable cause and suggested remeditation.
- Suport for notification status (notifications can be marked as read and unread)
- *Future: Notifications can be acknowledged or resolved.*
- Event-based notification via Graphql subscription (provided by Meshery Server and any upstream components or externally managed systems, like Kubernetes)
- Infinite scroll for pagination.

#### State Management and Internal Details

- The State on client is managed using `Redux Tooltik` and `Rtk-query`
- Update and Delete operations are optimistically handled.
- Network Request are cached and are invalidated when new events come or events are deleted/updated.
- Due to need for infinite scroll and optimistic update the events are stored globally in Redux.

### Notification Severities and Colors

Notification severities and colors are defined in the constants file, `ui/components/NotificationCenter/constants.js`.

### Notification Filtering and Searching

**Table of Contents**

- [Usage](#usage)
- [Props](#props)
- [Examples](#examples)

The Notfication Center includes a resusable component, `TypingFilter`, for sophisticated filtering and searching of notifications based on their attributes. It adheres to the GitHub-style syntax for filtering, offering a straight-forward and adaptable way to filter and search notification details. The `TypingFilter` component is a customizable React component that enables real-time filtering and selection based on user input.

The state for filtering is managed by a state machine created using a reducer. `TypingFilter` supports multiple filters, suggestions and completions.

### Usage

The `TypingFilter` component is designed to provide an interactive filtering experience in your application. Here's how you can use it:

```javascript
import React from 'react';
import TypingFilter from './path-to-TypingFilter';

function MyComponent() {
// Define a filter schema that describes the available filter options.
const filterSchema = {
// Define your filter categories here
// Example:
SEVERITY: {
value: "severity",
description: "Filter by severity",
values: ["Low", "Medium", "High"],
multiple : true // default
},
// Add more filter categories as needed
};

// Define a callback function to handle filter changes.
const handleFilterChange = (filteredData) => {
// Implement your logic to react to the filtered data.
// This function will be called when the user applies a filter. ( on presing enter in input)
console.log("Filtered data:", filteredData);
};

return (
<div>
<TypingFilter
filterSchema={filterSchema}
handleFilter={handleFilterChange}
/>
{/* Your other components */}
</div>
);
}

export default MyComponent;
```

### Props

The `TypingFilter` component accepts the following props:

- `filterSchema` (object, required): An object that defines available filter options. Each property of this object represents a filter category with the following properties:
- `value` (string, required): The filter name used for filtering within the category.
- `description` (string, required): Description of the filter category.
- `type` (string, optional): The data type of the filter (e.g., "string", "number").
- `values` (array, optional): Possible values for the filter.

- `handleFilter` (function, required): A callback function that is called when the user applies a filter. This function receives the filtered data as an argument.


## Finite State Machine (FSM) for `TypingFilter` Component

This section provides an overview of the Finite State Machine (FSM) implementation used to manage the state of the `TypingFilter` component. The FSM is responsible for handling user interactions, such as selecting filters, entering values, and clearing the filter, within the component. The FSM implementation within the `TypingFilter` component ensures that user interactions are correctly processed and managed, resulting in a smooth and intuitive filtering experience.

**Table of Contents**

- [Overview](#overview)
- [State Definitions](#state-definitions)
- [Reducers](#reducers)
- [State Transitions](#state-transitions)
- [Initial State Handling](#initial-state-handling)

### State Definitions

The FSM code defines three sets of constants to represent important elements within the state management:

#### 1. `FILTERING_STATE`

Defines the possible states that the `TypingFilter` component can be in. These states include:
- `IDLE`: Represents the initial state when the component is not actively filtering.
- `SELECTING_FILTER`: Indicates that the user is selecting a filter.
- `SELECTING_VALUE`: Indicates that the user is entering a filter value.

#### 2. `FILTER_EVENTS`

Represents the events that trigger state transitions within the FSM. Some of the events include:
- `START`: Initiates the filtering process.
- `SELECT`: Indicates the selection of a filter.
- `INPUT_CHANGE`: Represents a change in the filter input.
- `CLEAR`: Clears the filter.
- `EXIT`: Exits the filtering process.

#### 3. `Delimiter`

Defines delimiters used to separate filter and value entries within the component. Delimiters include:
- `FILTER`: Separates multiple filters.
- `FILTER_VALUE`: Separates filters from their corresponding values.

### Reducers

The FSM implementation includes two key reducer functions:

#### 1. `commonReducer`

This common reducer function handles events that are common across all states. It includes logic to handle "CLEAR" and "EXIT" events, which reset the component's state and clear any entered values.

#### 2. `filterSelectionReducer`

The `filterSelectionReducer` is a specific reducer used to manage transitions between "SELECTING_FILTER" and "SELECTING_VALUE" states. It handles events related to selecting filters and entering values. The logic ensures that delimiters are appropriately added or removed when the user interacts with the filter.

### State Transitions

State transitions are managed based on user actions and the current state of the component. For example, when the user selects a filter, the state transitions from "SELECTING_FILTER" to "SELECTING_VALUE." When the user inputs values or clears the filter, the state transitions are managed accordingly.

### Initial State Handling

The FSM implementation includes handling for the initial state, where it listens for the "START" event to transition from "IDLE" to "SELECTING_FILTER." This ensures that the filtering process is initiated when the user interacts with the component.

{% include suggested-reading.html %}
9 changes: 5 additions & 4 deletions docs/pages/project/contributing/contributing-ui.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,13 @@ Now, Meshery will run on the default port `http://localhost:9081`.

Potential Solution:

- Go to your `meshery` clone.
- Go to your meshery folder in your local-system where you’ve cloned it.
Execute:


- Restart Meshery Server.
- `export BUILD="v0.X.X"`before building Meshery Server again.
- `git remote add upstream https://github.com/meshery/meshery`
- `git fetch upstream`
- Restart the meshery server
- Addionally, before restarting the server, if you like to pull the latest changes, you can do: `git pull upstream master`


### UI Development Server
Expand Down
10 changes: 7 additions & 3 deletions docs/pages/project/contributing/meshery-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,14 @@ After running Meshery server, you will need to select your **Cloud Provider** by
</a>

Potential Solution:
From the root of your cloned repo, execute:

- `CTL+C` to stop Meshery Server.
- `export BUILD="v0.X.X"` prior to building Meshery Server again, setting this value to the desired Meshery version (git tag).
- Go to your meshery folder in your local-system where you’ve cloned it.
Execute:

- `git remote add upstream https://github.com/meshery/meshery`
- `git fetch upstream`
- Restart the meshery server
- Addionally, before restarting the server, if you like to pull the latest changes, you can do: `git pull upstream master`
#### Building Docker image

To build a Docker image of Meshery, please ensure you have `Docker` installed to be able to build the image. Now, run the following command to build the Docker image:
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ require (
github.com/jinzhu/copier v0.3.5
github.com/layer5io/gowrk2 v0.6.1
github.com/layer5io/meshery-operator v0.6.10
github.com/layer5io/meshkit v0.6.65
github.com/layer5io/meshkit v0.6.66
github.com/layer5io/meshsync v0.6.14
github.com/layer5io/nighthawk-go v1.0.6
github.com/layer5io/service-mesh-performance v0.6.1
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1571,8 +1571,8 @@ github.com/layer5io/gowrk2 v0.6.1 h1:0eBj7VFYJ+QTMJt7i3PzxDJTEL+X+zWx4OP+lARWIoI
github.com/layer5io/gowrk2 v0.6.1/go.mod h1:ugxQ23+HwQ8dmZYJd1LScw/TLKbdgfN6OOtg6iYMljg=
github.com/layer5io/meshery-operator v0.6.10 h1:4YiznhS4AO/bA+uHBxCYp9Fc9w9LU2sopE3oJBdRU/Y=
github.com/layer5io/meshery-operator v0.6.10/go.mod h1:RX9yjSvJS0KAdWOb/zRfYU/mSOVP1ySuUUlxHhrms1M=
github.com/layer5io/meshkit v0.6.65 h1:JltJ5hq8z/JIJf8V0m6UrsZ/PvIeKevLeIuAvH8q+DU=
github.com/layer5io/meshkit v0.6.65/go.mod h1:ZepHoPUmrDQK6T4ARmyWfKy8HejxFdJsoqC1cq4Slb8=
github.com/layer5io/meshkit v0.6.66 h1:oJKgab+7nlp2EArTwq9r0ZW+/+UIPrY5Efs4eLqIpdg=
github.com/layer5io/meshkit v0.6.66/go.mod h1:/EX5QLmgZpLPqhBHGvNqyHM6ljfc6hYwULCEcnqTCVw=
github.com/layer5io/meshsync v0.6.14 h1:y5Fbq76WGYWjdzYFNOD1YgowP/0m/NxPZ/hA1JGJ3RA=
github.com/layer5io/meshsync v0.6.14/go.mod h1:21VTdYITKXpBSb+kj2CcR3T0KbrcLJwhiewQRKTqvUM=
github.com/layer5io/nighthawk-go v1.0.6 h1:YMCw65FvwpbByX+M7McdNYRNDW9oOw3GQaXJ1RMDdGw=
Expand Down
Loading

0 comments on commit 43823a1

Please sign in to comment.