fix: Change vpn tunnel to ipsec site connection

change vpn tunnel to ipsec site connection

Change-Id: Ia59bc87d4e61879b063719c114a02133b7044805
This commit is contained in:
zhuyue 2021-10-09 17:43:43 +08:00
parent 6693b3db92
commit fff9d8ee02
23 changed files with 257 additions and 216 deletions

View File

@ -7,15 +7,18 @@ Because of the consistent use of the front-end framework, when we write related
Mainly include: waiting for the list to load Mainly include: waiting for the list to load
- `waitTableLoading` - `waitTableLoading`
- Wait for the list to load - Wait for the list to load
- During the loading process of the list, there will be a state of `loading`, wait for the end of the state - During the loading process of the list, there will be a state of `loading`, wait for the end of the state
![wait-table-loading](images/e2e/table/wait-table-loading.png) ![wait-table-loading](images/e2e/table/wait-table-loading.png)
- `checkTableFirstRow` - `checkTableFirstRow`
- Verify that the first row of the form contains the specified content, generally used to verify the existence of the created resource after creation - Verify that the first row of the form contains the specified content, generally used to verify the existence of the created resource after creation
- The parameter `name`, the content that needs to be included in the first line, is generally used to verify the existence of the name - The parameter `name`, the content that needs to be included in the first line, is generally used to verify the existence of the name
- Take viewing key pair detail `test/e2e/integration/pages/compute/keypair.spec.js` as an example - Take viewing key pair detail `test/e2e/integration/pages/compute/keypair.spec.js` as an example
- After creation, check whether the key exists, and enter the details page after successful verification - After creation, check whether the key exists, and enter the details page after successful verification
```javascript ```javascript
@ -31,10 +34,12 @@ Mainly include: waiting for the list to load
![check-first-row](images/e2e/table/check-first-row.png) ![check-first-row](images/e2e/table/check-first-row.png)
- `tableSearchText` - `tableSearchText`
- Typing in the search bar above the table, and wait for the search to complete - Typing in the search bar above the table, and wait for the search to complete
- The parameter `str`, the search content, generally the search name - The parameter `str`, the search content, generally the search name
- By searching, the resource to be operated is located in the first row of the table for subsequent operations - By searching, the resource to be operated is located in the first row of the table for subsequent operations
- Take viewing key pair detail `test/e2e/integration/pages/compute/keypair.spec.js` as an example - Take viewing key pair detail `test/e2e/integration/pages/compute/keypair.spec.js` as an example
1. After creation, use the name to search for the key and wait for the search to complete 1. After creation, use the name to search for the key and wait for the search to complete
2. Check if the first row in the table contains the resource with the specified name 2. Check if the first row in the table contains the resource with the specified name
3. Go to the detail page and check if the name is consistent with expectations 3. Go to the detail page and check if the name is consistent with expectations
@ -53,6 +58,7 @@ Mainly include: waiting for the list to load
![search](images/e2e/table/search.png) ![search](images/e2e/table/search.png)
- `tableSimpleSearchText` - `tableSimpleSearchText`
- Type in the search bar above the form and wait for the search to complete - Type in the search bar above the form and wait for the search to complete
- Some tables use simple search, and the search item only supports text input. At this time, the components used in the search box are different from the search box components in `tableSearchText` - Some tables use simple search, and the search item only supports text input. At this time, the components used in the search box are different from the search box components in `tableSearchText`
- The parameter `str`, the search content, generally the search name - The parameter `str`, the search content, generally the search name
@ -68,6 +74,7 @@ Mainly include: waiting for the list to load
![simple-search](images/e2e/table/simple-search.png) ![simple-search](images/e2e/table/simple-search.png)
- `tableSearchSelect` - `tableSearchSelect`
- Use the options in the search bar above the table to search and wait for the search to complete - Use the options in the search bar above the table to search and wait for the search to complete
1. Click the input box and select the search item from the search items to be selected 1. Click the input box and select the search item from the search items to be selected
2. Click to select the option under the search category 2. Click to select the option under the search category
@ -76,6 +83,7 @@ Mainly include: waiting for the list to load
- Parameter `value`, the label of the selected item corresponding to the search item - Parameter `value`, the label of the selected item corresponding to the search item
- By searching, the resource to be operated is located in the first row of the table for subsequent operations - By searching, the resource to be operated is located in the first row of the table for subsequent operations
- Take instance attach floating IP `test/e2e/integration/pages/network/floatingip.spec.js` as an example - Take instance attach floating IP `test/e2e/integration/pages/network/floatingip.spec.js` as an example
1. In the floating IP table, search for the floating IP whose `status` is `stop` 1. In the floating IP table, search for the floating IP whose `status` is `stop`
2. Click the `associate` operation on the first resource in the table 2. Click the `associate` operation on the first resource in the table
3. Complete the operation of attach instance 3. Complete the operation of attach instance
@ -99,95 +107,100 @@ Mainly include: waiting for the list to load
![search-select-3](images/e2e/table/search-select-3.png) ![search-select-3](images/e2e/table/search-select-3.png)
- `tableSearchSelectText` - `tableSearchSelectText`
- Use the search bar above the table to search and wait for the search to complete
1. Click the input box and select the search item from the search items to be selected
2. Enter the search content and press Enter
3. Wait for the search to complete
- Enter directly when you dont select the search item, it is the first search item that supports input
- Parameter `name`, the name of the search term
- Parameter `value`, the content of the input
- By searching, the resource to be operated is located in the first row of the table for subsequent operations
- Take the creation of the stack as an example: `test/e2e/integration/pages/heat/stack.spec.js`
1. After creation, enter the resource list page
2. Search by name on the list page
3. Wait for the status of the resource to be available
```javascript - Use the search bar above the table to search and wait for the search to complete
it('successfully create', () => { 1. Click the input box and select the search item from the search items to be selected
const volumeJson = { 2. Enter the search content and press Enter
name: volumeName, 3. Wait for the search to complete
}; - Enter directly when you dont select the search item, it is the first search item that supports input
cy.clickHeaderButton(1, 2000) - Parameter `name`, the name of the search term
.formAttachFile('content', contentFile) - Parameter `value`, the content of the input
.formAttachFile('params', paramFile) - By searching, the resource to be operated is located in the first row of the table for subsequent operations
.clickStepActionNextButton() - Take the creation of the stack as an example: `test/e2e/integration/pages/heat/stack.spec.js`
.wait(2000) 1. After creation, enter the resource list page
.formInput('name', name) 2. Search by name on the list page
.formJsonInput('volume_name_spec', volumeJson) 3. Wait for the status of the resource to be available
.clickStepActionNextButton()
.waitFormLoading()
.wait(5000)
.tableSearchSelectText('Name', name)
.waitStatusActiveByRefresh();
});
```
![search-text-1](images/e2e/table/search-text-1.png) ```javascript
it('successfully create', () => {
const volumeJson = {
name: volumeName,
};
cy.clickHeaderButton(1, 2000)
.formAttachFile('content', contentFile)
.formAttachFile('params', paramFile)
.clickStepActionNextButton()
.wait(2000)
.formInput('name', name)
.formJsonInput('volume_name_spec', volumeJson)
.clickStepActionNextButton()
.waitFormLoading()
.wait(5000)
.tableSearchSelectText('Name', name)
.waitStatusActiveByRefresh();
});
```
![search-text-2](images/e2e/table/search-text-2.png) ![search-text-1](images/e2e/table/search-text-1.png)
![search-text-3](images/e2e/table/search-text-3.png) ![search-text-2](images/e2e/table/search-text-2.png)
![search-text-3](images/e2e/table/search-text-3.png)
- `checkEmptyTable` - `checkEmptyTable`
- Verify that the form is empty - Verify that the form is empty
- Generally used to verify after deleting resources
- Take deleting the router `test/e2e/integration/pages/network/router.spec.js` as an example
1. Turn off the external gateway
2. Delete
3. Search
4. Verify that the form is empty, that is, the deletion is successful
```javascript - Generally used to verify after deleting resources
it('successfully close external gateway and delete', () => { - Take deleting the router `test/e2e/integration/pages/network/router.spec.js` as an example
cy.tableSearchText(newname) 1. Turn off the external gateway
.clickConfirmActionInMore('Close External Gateway') 2. Delete
.clickConfirmActionInMore('Delete') 3. Search
.tableSearchText(newname) 4. Verify that the form is empty, that is, the deletion is successful
.checkEmptyTable();
}); ```javascript
``` it('successfully close external gateway and delete', () => {
cy.tableSearchText(newname)
.clickConfirmActionInMore('Close External Gateway')
.clickConfirmActionInMore('Delete')
.tableSearchText(newname)
.checkEmptyTable();
});
```
- `goToDetail` - `goToDetail`
- Visit the detail page of the first row of resources and wait for the detail page to load - Visit the detail page of the first row of resources and wait for the detail page to load
- Parameter `index`, the subscript of the column where the link is located, the default is `1`
- Parameter `waitTime`, the time to wait after loading the details page
- Take the image as an example: `test/e2e/integration/pages/compute/image.spec.js`
1. Search
2. Enter the details page
3. Verification details name
4. Return to the list page
```javascript - Parameter `index`, the subscript of the column where the link is located, the default is `1`
it('successfully detail', () => { - Parameter `waitTime`, the time to wait after loading the details page
cy.tableSearchText(name).goToDetail(); - Take the image as an example: `test/e2e/integration/pages/compute/image.spec.js`
cy.checkDetailName(name); 1. Search
cy.goBackToList(listUrl); 2. Enter the details page
}); 3. Verification details name
``` 4. Return to the list page
![detail-1](images/e2e/table/detail-1.png) ```javascript
it('successfully detail', () => {
cy.tableSearchText(name).goToDetail();
cy.checkDetailName(name);
cy.goBackToList(listUrl);
});
```
![detail-2](images/e2e/table/detail-2.png) ![detail-1](images/e2e/table/detail-1.png)
![detail-2](images/e2e/table/detail-2.png)
- `checkColumnValue` - `checkColumnValue`
- Verify that the content of the specified column in the first row meets expectations - Verify that the content of the specified column in the first row meets expectations
- Parameter `columnIndex`, which specifies the index of the column - Parameter `columnIndex`, which specifies the index of the column
- Parameter `value`, the expected value - Parameter `value`, the expected value
- Take the instance as an example: `test/e2e/integration/pages/compute/image.spec.js` - Take the instance as an example: `test/e2e/integration/pages/compute/image.spec.js`
1. Search
2. Stop the instance 1. Search
3. Verify that the status of the instance is `Stop` 2. Stop the instance
4. Verify that the `stop` operation in the batch operation is unavailable 3. Verify that the status of the instance is `Stop`
4. Verify that the `stop` operation in the batch operation is unavailable
```javascript ```javascript
it('successfully stop', () => { it('successfully stop', () => {
@ -205,14 +218,16 @@ Mainly include: waiting for the list to load
![check-value](images/e2e/table/check-value.png) ![check-value](images/e2e/table/check-value.png)
- `selectFirst` - `selectFirst`
- Select the first row in the table for subsequent batch operations - Select the first row in the table for subsequent batch operations
- Take instance `test/e2e/integration/pages/compute/image.spec.js` as an example - Take instance `test/e2e/integration/pages/compute/image.spec.js` as an example
1. Search
2. Stop the instance 1. Search
3. Verify that the status of the instance is `Stop` 2. Stop the instance
4. Select the first row 3. Verify that the status of the instance is `Stop`
5. Click the `Stop` button in the batch operation 4. Select the first row
6. An error message pops up 5. Click the `Stop` button in the batch operation
6. An error message pops up
```javascript ```javascript
it('successfully stop', () => { it('successfully stop', () => {
@ -230,10 +245,12 @@ Mainly include: waiting for the list to load
![select-first](images/e2e/table/select-first.png) ![select-first](images/e2e/table/select-first.png)
- `selectAll` - `selectAll`
- Check all the entries in the table, in order to do the follow-up batch operations - Check all the entries in the table, in order to do the follow-up batch operations
- Usually used to clear data - Usually used to clear data
- `waitStatusActiveByRefresh` - `waitStatusActiveByRefresh`
- Click the refresh button above the table every 5 seconds until the resource status becomes available - Click the refresh button above the table every 5 seconds until the resource status becomes available
- After a resource is created or changed, it often takes a certain amount of time to become available before subsequent operations can be performed - After a resource is created or changed, it often takes a certain amount of time to become available before subsequent operations can be performed
- Take the creation of the stack as an example: `test/e2e/integration/pages/heat/stack.spec.js` - Take the creation of the stack as an example: `test/e2e/integration/pages/heat/stack.spec.js`
@ -256,7 +273,7 @@ Mainly include: waiting for the list to load
.tableSearchSelectText('Name', name) .tableSearchSelectText('Name', name)
.waitStatusActiveByRefresh(); .waitStatusActiveByRefresh();
}); });
``` ```
![wait-1](images/e2e/table/wait-1.png) ![wait-1](images/e2e/table/wait-1.png)
@ -265,31 +282,37 @@ Mainly include: waiting for the list to load
## Operation of the button ## Operation of the button
Mainly contains Mainly contains
- The main button operation (general is creation operation) and batch operation located at the top of the form
- Line operations on each line of the form - The main button operation (general is creation operation) and batch operation located at the top of the form
- Line operations on each line of the form
### Operation of the buttons above the form ### Operation of the buttons above the form
The buttons above the table generally include: refresh, create, batch operation button, configure table list items, download The buttons above the table generally include: refresh, create, batch operation button, configure table list items, download
- `clickHeaderButton` - `clickHeaderButton`
- Click the button above the table,
- Parameter `buttonIndex`, the subscript of the button above the table
- Parameter `waitTime`, the waiting time after clicking, the default is 2 seconds
- Generally, the subscript of the created button is 1
- Take the creat key pair as an example: `test/e2e/integration/pages/compute/keypair.spec.js`
```javascript - Click the button above the table,
it('successfully create', () => { - Parameter `buttonIndex`, the subscript of the button above the table
cy.clickHeaderButton(1) - Parameter `waitTime`, the waiting time after clicking, the default is 2 seconds
.formInput('name', name) - Generally, the subscript of the created button is 1
.clickModalActionSubmitButton() - Take the creat key pair as an example: `test/e2e/integration/pages/compute/keypair.spec.js`
.wait(5000);
});
```
![header-btn-index](images/e2e/table/header-btn-index.png) ```javascript
it('successfully create', () => {
cy.clickHeaderButton(1)
.formInput('name', name)
.clickModalActionSubmitButton()
.wait(5000);
});
```
![header-btn-index](images/e2e/table/header-btn-index.png)
- `clickHeaderButtonByTitle` - `clickHeaderButtonByTitle`
- Click the button above the table by name, generally used for batch operation button clicks - Click the button above the table by name, generally used for batch operation button clicks
- Parameter `title`, the text on the button above the table - Parameter `title`, the text on the button above the table
- Parameter `waitTime`, the waiting time after clicking, the default is 2 seconds - Parameter `waitTime`, the waiting time after clicking, the default is 2 seconds
- Take the shut off operation of the instance in the close state as an example: `test/e2e/integration/pages/compute/instance.spec.js` - Take the shut off operation of the instance in the close state as an example: `test/e2e/integration/pages/compute/instance.spec.js`
@ -311,9 +334,12 @@ The buttons above the table generally include: refresh, create, batch operation
![header-btn-title](images/e2e/table/header-btn-title.png) ![header-btn-title](images/e2e/table/header-btn-title.png)
- `clickHeaderConfirmButtonByTitle` - `clickHeaderConfirmButtonByTitle`
- The function will complete - The function will complete
1. Click the button at the top of the table by name, the page will pop up a prompt to confirm the operation
2. Click the `Confirm` button 1. Click the button at the top of the table by name, the page will pop up a prompt to confirm the operation
2. Click the `Confirm` button
- Parameter `title`, the text on the button above the table - Parameter `title`, the text on the button above the table
- Parameter `waitTime`, the waiting time after clicking, the default is 2 seconds - Parameter `waitTime`, the waiting time after clicking, the default is 2 seconds
- Take the release of floating IP as an example: `test/e2e/integration/pages/network/floatingip.spec.js` - Take the release of floating IP as an example: `test/e2e/integration/pages/network/floatingip.spec.js`
@ -332,8 +358,9 @@ The buttons above the table generally include: refresh, create, batch operation
### Row operations on the first row of the form ### Row operations on the first row of the form
- `clickFirstActionButton` - `clickFirstActionButton`
- Click the first button in the operation column of the first row of the form, which is generally used for pop-up operation buttons
Single-page operation button click - Click the first button in the operation column of the first row of the form, which is generally used for pop-up operation buttons
Single-page operation button click
- Take edit user `test/e2e/integration/pages/identity/user.spec.js` as an example - Take edit user `test/e2e/integration/pages/identity/user.spec.js` as an example
```javascript ```javascript
@ -348,10 +375,12 @@ The buttons above the table generally include: refresh, create, batch operation
![click-first](images/e2e/table/click-first.png) ![click-first](images/e2e/table/click-first.png)
- `clickActionButtonByTitle` - `clickActionButtonByTitle`
- Click the operation in the first row according to the title - Click the operation in the first row according to the title
- Take edit and starting instance `test/e2e/integration/pages/configuration/system.spec.js` as an example - Take edit and starting instance `test/e2e/integration/pages/configuration/system.spec.js` as an example
- When instance starts, click the `Disable` button
- When instance is stopped, click the `Enable` button - When instance starts, click the `Disable` button
- When instance is stopped, click the `Enable` button
```javascript ```javascript
it('successfully disable compute services', () => { it('successfully disable compute services', () => {
@ -375,6 +404,7 @@ The buttons above the table generally include: refresh, create, batch operation
![action-by-title-2](images/e2e/table/action-by-title-2.png) ![action-by-title-2](images/e2e/table/action-by-title-2.png)
- `clickActionInMore` - `clickActionInMore`
- Click the operation in `More` in the first row according to the title - Click the operation in `More` in the first row according to the title
- Take the create instance button as an example: `test/e2e/integration/pages/compute/image.spec.js` - Take the create instance button as an example: `test/e2e/integration/pages/compute/image.spec.js`
@ -390,49 +420,53 @@ The buttons above the table generally include: refresh, create, batch operation
![action-in-more](images/e2e/table/action-in-more.png) ![action-in-more](images/e2e/table/action-in-more.png)
- `clickActionInMoreSub` - `clickActionInMoreSub`
- Click the operation under the submenu of the first row of operations according to the title - Click the operation under the submenu of the first row of operations according to the title
- Parameter `title`, the title of the button - Parameter `title`, the title of the button
- Parameter `subMenu`, the title of the submenu - Parameter `subMenu`, the title of the submenu
- Take the instance and click on the `Attach Interface` `test/e2e/integration/pages/compute/image.spec.js` under `Associated Resources` as an example - Take the instance and click on the `Attach Interface` `test/e2e/integration/pages/compute/image.spec.js` under `Associated Resources` as an example
```javascript ```javascript
it('successfully attach interface', () => { it('successfully attach interface', () => {
cy.tableSearchText(name) cy.tableSearchText(name)
.clickActionInMoreSub('Attach Interface', 'Related Resources') .clickActionInMoreSub('Attach Interface', 'Related Resources')
.wait(5000) .wait(5000)
.formTableSelect('network') .formTableSelect('network')
.clickModalActionSubmitButton(); .clickModalActionSubmitButton();
}); });
``` ```
![action-in-sub](images/e2e/table/action-in-sub.png) ![action-in-sub](images/e2e/table/action-in-sub.png)
- `checkActionDisabledInFirstRow` - `checkActionDisabledInFirstRow`
- Verify that the specified operation of the resource with the specified name is not available - Verify that the specified operation of the resource with the specified name is not available
1. Search for resources based on specified names 1. Search for resources based on specified names
2. Verify that the specified operation does not exist in the operation column `More` in the first row of the search result 2. Verify that the specified operation does not exist in the operation column `More` in the first row of the search result
- Parameter `title`, the name of the operation - Parameter `title`, the name of the operation
- Parameter `name`, the name of the resource - Parameter `name`, the name of the resource
- After the resource is in certain states, some operations need to be disabled, the first operation in the row operation list, if it is not operable, it is in the `disabled` state, and the operations in `more`, if not available , Dont show - After the resource is in certain states, some operations need to be disabled, the first operation in the row operation list, if it is not operable, it is in the `disabled` state, and the operations in `more`, if not available , Dont show
- Take the router as an example: `test/e2e/integration/pages/network/router.spec.js` - Take the router as an example: `test/e2e/integration/pages/network/router.spec.js`
1. Open the public network gateway when creating the router 1. Open the public network gateway when creating the router
2. Verify that the router cannot be deleted, that is, there is no `Delete` button 2. Verify that the router cannot be deleted, that is, there is no `Delete` button
```javascript ```javascript
it('successfully disable delete', () => { it('successfully disable delete', () => {
cy.checkActionDisabledInFirstRow('Delete', name); cy.checkActionDisabledInFirstRow('Delete', name);
}); });
``` ```
![disable-more-action](images/e2e/table/disable-more-action.png) ![disable-more-action](images/e2e/table/disable-more-action.png)
- `clickFirstActionDisabled` - `clickFirstActionDisabled`
- Verify that the first operation in the first row of the table is unavailable - Verify that the first operation in the first row of the table is unavailable
- After the resource is in certain states, some operations need to be disabled, the first operation in the row operation list, if it is not operable, it is in the `disabled` state, and the operations in `more`, if not available , Dont show - After the resource is in certain states, some operations need to be disabled, the first operation in the row operation list, if it is not operable, it is in the `disabled` state, and the operations in `more`, if not available , Dont show
- Take instance group `test/e2e/integration/pages/compute/server-group.spec.js` as an example - Take instance group `test/e2e/integration/pages/compute/server-group.spec.js` as an example
1. Create a instance under the instance group
2. Verify that the instance group containing instance cannot be deleted 1. Create a instance under the instance group
3. After deleting instance, the instance group is successfully deleted 2. Verify that the instance group containing instance cannot be deleted
3. After deleting instance, the instance group is successfully deleted
```javascript ```javascript
it('successfully delete', () => { it('successfully delete', () => {
@ -449,14 +483,16 @@ The buttons above the table generally include: refresh, create, batch operation
![disable-first](images/e2e/table/disable-first.png) ![disable-first](images/e2e/table/disable-first.png)
- `clickConfirmActionInFirst` - `clickConfirmActionInFirst`
- Complete the operation corresponding to the first operation button in the first row of the table - Complete the operation corresponding to the first operation button in the first row of the table
1. Click the first operation button in the first row of the table. This operation is a confirmation operation 1. Click the first operation button in the first row of the table. This operation is a confirmation operation
2. Click the `Confirm` button, and wait for the request to complete, close the prompt message that the request is successful 2. Click the `Confirm` button, and wait for the request to complete, close the prompt message that the request is successful
- Parameter `waitTime`, the waiting time after closing the operation successful prompt - Parameter `waitTime`, the waiting time after closing the operation successful prompt
- Take instance group `test/e2e/integration/pages/compute/server-group.spec.js` as an example - Take instance group `test/e2e/integration/pages/compute/server-group.spec.js` as an example
1. Create a instance under the instance group
2. Verify that the instance group containing instance cannot be deleted 1. Create a instance under the instance group
3. After deleting the instance, the instance group is successfully deleted 2. Verify that the instance group containing instance cannot be deleted
3. After deleting the instance, the instance group is successfully deleted
```javascript ```javascript
it('successfully delete', () => { it('successfully delete', () => {
@ -475,9 +511,10 @@ The buttons above the table generally include: refresh, create, batch operation
![first-confirm-2](images/e2e/table/first-confirm-2.png) ![first-confirm-2](images/e2e/table/first-confirm-2.png)
- `clickConfirmActionButton` - `clickConfirmActionButton`
- Complete the corresponding operation in the operation buttons listed in the first row of the table - Complete the corresponding operation in the operation buttons listed in the first row of the table
1. Click the specified operation in the first row of the table. This operation is a confirmation operation 1. Click the specified operation in the first row of the table. This operation is a confirmation operation
2. Click the `Confirm` button, and wait for the request to complete, close the prompt message that the request is successful 2. Click the `Confirm` button, and wait for the request to complete, close the prompt message that the request is successful
- Parameter `title`, specify the name of the operation - Parameter `title`, specify the name of the operation
- Parameter `waitTime`, the waiting time after closing the operation prompt successfully - Parameter `waitTime`, the waiting time after closing the operation prompt successfully
- Take delet VPN IPsec policy `test/e2e/integration/pages/compute/server-group.spec.js` as an example - Take delet VPN IPsec policy `test/e2e/integration/pages/compute/server-group.spec.js` as an example
@ -493,15 +530,17 @@ The buttons above the table generally include: refresh, create, batch operation
![confirm-action](images/e2e/table/confirm-action.png) ![confirm-action](images/e2e/table/confirm-action.png)
- `clickConfirmActionInMore` - `clickConfirmActionInMore`
- Complete the corresponding operation in `More` in the first row of the table - Complete the corresponding operation in `More` in the first row of the table
1. Click the specified operation in `More` in the first row of the table. This operation is a confirmation operation 1. Click the specified operation in `More` in the first row of the table. This operation is a confirmation operation
2. Click the `Confirm` button, and wait for the request to complete, close the prompt message that the request is successful 2. Click the `Confirm` button, and wait for the request to complete, close the prompt message that the request is successful
- Parameter `title`, specify the name of the operation - Parameter `title`, specify the name of the operation
- Parameter `waitTime`, the waiting time after closing the operation prompt successfully - Parameter `waitTime`, the waiting time after closing the operation prompt successfully
- Take deleting the router `test/e2e/integration/pages/network/router.spec.js` as an example - Take deleting the router `test/e2e/integration/pages/network/router.spec.js` as an example
1. Search 1. Search
2. Complete the operation of `Close public gateway` in `More` 2. Complete the operation of `Close public gateway` in `More`
2. Complete the `Delete` operation in `More` 3. Complete the `Delete` operation in `More`
```javascript ```javascript
it('successfully close external gateway and delete', () => { it('successfully close external gateway and delete', () => {
@ -518,6 +557,7 @@ The buttons above the table generally include: refresh, create, batch operation
![confirm-more-2](images/e2e/table/confirm-more-2.png) ![confirm-more-2](images/e2e/table/confirm-more-2.png)
- `clickConfirmActionInMoreSub` - `clickConfirmActionInMoreSub`
- Complete the corresponding operation under the specified submenu in `More` in the first row of the table - Complete the corresponding operation under the specified submenu in `More` in the first row of the table
1. Click the specified operation under the specified submenu in `More` in the first row of the table. This operation is a confirmation operation 1. Click the specified operation under the specified submenu in `More` in the first row of the table. This operation is a confirmation operation
2. Click the `Confirm` button, and wait for the request to complete, close the prompt message that the request is successful 2. Click the `Confirm` button, and wait for the request to complete, close the prompt message that the request is successful
@ -544,5 +584,4 @@ The buttons above the table generally include: refresh, create, batch operation
![confirm-in-sub](images/e2e/table/confirm-in-sub.png) ![confirm-in-sub](images/e2e/table/confirm-in-sub.png)
For the various operations of the table operation, the functions introduced above are mainly used. For the specific writing of the functions, please view `test/e2e/support/table-commands.js` For the various operations of the table operation, the functions introduced above are mainly used. For the specific writing of the functions, please view `test/e2e/support/table-commands.js`

View File

@ -347,9 +347,9 @@ const renderMenu = (t) => {
level: 1, level: 1,
children: [ children: [
{ {
path: /^\/network\/vpn-tunnel-admin\/detail\/.[^/]+$/, path: /^\/network\/ipsec-site-connection-admin\/detail\/.[^/]+$/,
name: t('VPN Tunnel Detail'), name: t('IPsec site connection Detail'),
key: 'vpn-tunnel-detail', key: 'ipsec-site-connection-detail',
level: 2, level: 2,
}, },
], ],

View File

@ -310,9 +310,9 @@ const renderMenu = (t) => {
level: 1, level: 1,
children: [ children: [
{ {
path: /^\/network\/vpn-tunnel\/detail\/.[^/]+$/, path: /^\/network\/ipsec-site-connection\/detail\/.[^/]+$/,
name: t('VPN Tunnel Detail'), name: t('IPsec site connection Detail'),
key: 'vpn-tunnel-detail', key: 'ipsec-site-connection-detail',
level: 2, level: 2,
}, },
], ],

View File

@ -308,6 +308,7 @@
"Create Failed": "Create Failed", "Create Failed": "Create Failed",
"Create Flavor": "Create Flavor", "Create Flavor": "Create Flavor",
"Create Host Aggregate": "Create Host Aggregate", "Create Host Aggregate": "Create Host Aggregate",
"Create IPsec Site Connection": "Create IPsec Site Connection",
"Create Image": "Create Image", "Create Image": "Create Image",
"Create In Progress": "Create In Progress", "Create In Progress": "Create In Progress",
"Create Instance": "Create Instance", "Create Instance": "Create Instance",
@ -341,7 +342,6 @@
"Create VPN Endpoint Group": "Create VPN Endpoint Group", "Create VPN Endpoint Group": "Create VPN Endpoint Group",
"Create VPN IKE Policy": "Create VPN IKE Policy", "Create VPN IKE Policy": "Create VPN IKE Policy",
"Create VPN IPsec Policy": "Create VPN IPsec Policy", "Create VPN IPsec Policy": "Create VPN IPsec Policy",
"Create VPN Tunnel": "Create VPN Tunnel",
"Create Virtual Adapter": "Create Virtual Adapter", "Create Virtual Adapter": "Create Virtual Adapter",
"Create Volume": "Create Volume", "Create Volume": "Create Volume",
"Create Volume Type": "Create Volume Type", "Create Volume Type": "Create Volume Type",
@ -426,6 +426,7 @@
"Delete Flavor": "Delete Flavor", "Delete Flavor": "Delete Flavor",
"Delete Group": "Delete Group", "Delete Group": "Delete Group",
"Delete Host Aggregate": "Delete Host Aggregate", "Delete Host Aggregate": "Delete Host Aggregate",
"Delete IPsec Site Connection": "Delete IPsec Site Connection",
"Delete Image": "Delete Image", "Delete Image": "Delete Image",
"Delete In Progress": "Delete In Progress", "Delete In Progress": "Delete In Progress",
"Delete Instance": "Delete Instance", "Delete Instance": "Delete Instance",
@ -454,7 +455,6 @@
"Delete VPN EndPoint Groups": "Delete VPN EndPoint Groups", "Delete VPN EndPoint Groups": "Delete VPN EndPoint Groups",
"Delete VPN IKE Policy": "Delete VPN IKE Policy", "Delete VPN IKE Policy": "Delete VPN IKE Policy",
"Delete VPN IPsec Policy": "Delete VPN IPsec Policy", "Delete VPN IPsec Policy": "Delete VPN IPsec Policy",
"Delete VPN Tunnel": "Delete VPN Tunnel",
"Delete Virtual Adapter": "Delete Virtual Adapter", "Delete Virtual Adapter": "Delete Virtual Adapter",
"Delete Volume": "Delete Volume", "Delete Volume": "Delete Volume",
"Delete Volume Type": "Delete Volume Type", "Delete Volume Type": "Delete Volume Type",
@ -541,6 +541,7 @@
"Edit Flavor": "Edit Flavor", "Edit Flavor": "Edit Flavor",
"Edit Health Monitor": "Edit Health Monitor", "Edit Health Monitor": "Edit Health Monitor",
"Edit Host Aggregate": "Edit Host Aggregate", "Edit Host Aggregate": "Edit Host Aggregate",
"Edit IPsec Site Connection": "Edit IPsec Site Connection",
"Edit Image": "Edit Image", "Edit Image": "Edit Image",
"Edit Instance": "Edit Instance", "Edit Instance": "Edit Instance",
"Edit Listener": "Edit Listener", "Edit Listener": "Edit Listener",
@ -561,7 +562,6 @@
"Edit VPN EndPoint Groups": "Edit VPN EndPoint Groups", "Edit VPN EndPoint Groups": "Edit VPN EndPoint Groups",
"Edit VPN IKE Policy": "Edit VPN IKE Policy", "Edit VPN IKE Policy": "Edit VPN IKE Policy",
"Edit VPN IPsec Policy": "Edit VPN IPsec Policy", "Edit VPN IPsec Policy": "Edit VPN IPsec Policy",
"Edit VPN Tunnel": "Edit VPN Tunnel",
"Edit host aggregate": "Edit host aggregate", "Edit host aggregate": "Edit host aggregate",
"Edit metadata": "Edit metadata", "Edit metadata": "Edit metadata",
"Edit quota": "Edit quota", "Edit quota": "Edit quota",
@ -744,6 +744,9 @@
"IPMITool": "IPMITool", "IPMITool": "IPMITool",
"IPXE": "IPXE", "IPXE": "IPXE",
"IPsec Policy": "IPsec Policy", "IPsec Policy": "IPsec Policy",
"IPsec Site Connection": "IPsec Site Connection",
"IPsec Site Connections": "IPsec Site Connections",
"IPsec site connection Detail": "IPsec site connection Detail",
"IPv4": "IPv4", "IPv4": "IPv4",
"IPv4 Address": "IPv4 Address", "IPv4 Address": "IPv4 Address",
"IPv6": "IPv6", "IPv6": "IPv6",
@ -1117,7 +1120,7 @@
"Peer ID": "Peer ID", "Peer ID": "Peer ID",
"Peer Network": "Peer Network", "Peer Network": "Peer Network",
"Peer Network Segment": "Peer Network Segment", "Peer Network Segment": "Peer Network Segment",
"Peer gateway public address for the VPN tunnel": "Peer gateway public address for the VPN tunnel", "Peer gateway public address for the IPsec site connection": "Peer gateway public address for the IPsec site connection",
"Pending": "Pending", "Pending": "Pending",
"Pending Create": "Pending Create", "Pending Create": "Pending Create",
"Pending Delete": "Pending Delete", "Pending Delete": "Pending Delete",
@ -1706,8 +1709,6 @@
"VPN Gateway": "VPN Gateway", "VPN Gateway": "VPN Gateway",
"VPN Service": "VPN Service", "VPN Service": "VPN Service",
"VPN Service ID": "VPN Service ID", "VPN Service ID": "VPN Service ID",
"VPN Tunnel": "VPN Tunnel",
"VPN Tunnel Detail": "VPN Tunnel Detail",
"VRRP": "VRRP", "VRRP": "VRRP",
"Valid": "Valid", "Valid": "Valid",
"Value": "Value", "Value": "Value",
@ -1806,6 +1807,7 @@
"create encryption": "create encryption", "create encryption": "create encryption",
"create flavor": "create flavor", "create flavor": "create flavor",
"create instance snapshot": "create instance snapshot", "create instance snapshot": "create instance snapshot",
"create ipsec site connection": "create ipsec site connection",
"create network": "create network", "create network": "create network",
"create router": "create router", "create router": "create router",
"create snapshot": "create snapshot", "create snapshot": "create snapshot",
@ -1815,7 +1817,6 @@
"create vpn": "create vpn", "create vpn": "create vpn",
"create vpn ike policy": "create vpn ike policy", "create vpn ike policy": "create vpn ike policy",
"create vpn ipsec policy": "create vpn ipsec policy", "create vpn ipsec policy": "create vpn ipsec policy",
"create vpn tunnel": "create vpn tunnel",
"data": "data", "data": "data",
"delete": "delete", "delete": "delete",
"delete DNAT rule": "delete DNAT rule", "delete DNAT rule": "delete DNAT rule",
@ -1832,6 +1833,7 @@
"delete group": "delete group", "delete group": "delete group",
"delete image": "delete image", "delete image": "delete image",
"delete instance": "delete instance", "delete instance": "delete instance",
"delete ipsec site connection": "delete ipsec site connection",
"delete ironic instance": "delete ironic instance", "delete ironic instance": "delete ironic instance",
"delete keypair": "delete keypair", "delete keypair": "delete keypair",
"delete listener": "delete listener", "delete listener": "delete listener",
@ -1852,7 +1854,6 @@
"delete vpn IKE policy": "delete vpn IKE policy", "delete vpn IKE policy": "delete vpn IKE policy",
"delete vpn IPsec policy": "delete vpn IPsec policy", "delete vpn IPsec policy": "delete vpn IPsec policy",
"delete vpn endpoint groups": "delete vpn endpoint groups", "delete vpn endpoint groups": "delete vpn endpoint groups",
"delete vpn tunnel": "delete vpn tunnel",
"description": "description", "description": "description",
"detach instance": "detach instance", "detach instance": "detach instance",
"detach security group": "detach security group", "detach security group": "detach security group",
@ -1890,6 +1891,7 @@
"instance snapshot": "instance snapshot", "instance snapshot": "instance snapshot",
"instance: {name}.": "instance: {name}.", "instance: {name}.": "instance: {name}.",
"instances": "instances", "instances": "instances",
"ipsec site connection": "ipsec site connection",
"jump to the console": "jump to the console", "jump to the console": "jump to the console",
"keypair": "keypair", "keypair": "keypair",
"keypairs": "keypairs", "keypairs": "keypairs",
@ -1988,7 +1990,6 @@
"vpn IPsec policy": "vpn IPsec policy", "vpn IPsec policy": "vpn IPsec policy",
"vpn endpoint groups": "vpn endpoint groups", "vpn endpoint groups": "vpn endpoint groups",
"vpn services": "vpn services", "vpn services": "vpn services",
"vpn tunnel": "vpn tunnel",
"{ size } GB": "{ size } GB", "{ size } GB": "{ size } GB",
"{ size } KB": "{ size } KB", "{ size } KB": "{ size } KB",
"{ size } MB": "{ size } MB", "{ size } MB": "{ size } MB",

View File

@ -308,6 +308,7 @@
"Create Failed": "创建失败", "Create Failed": "创建失败",
"Create Flavor": "创建云主机类型", "Create Flavor": "创建云主机类型",
"Create Host Aggregate": "创建主机集合", "Create Host Aggregate": "创建主机集合",
"Create IPsec Site Connection": "创建IPsec站点连接",
"Create Image": "创建镜像", "Create Image": "创建镜像",
"Create In Progress": "正在创建", "Create In Progress": "正在创建",
"Create Instance": "创建云主机", "Create Instance": "创建云主机",
@ -341,7 +342,6 @@
"Create VPN Endpoint Group": "创建VPN端点组", "Create VPN Endpoint Group": "创建VPN端点组",
"Create VPN IKE Policy": "创建VPN IKE策略", "Create VPN IKE Policy": "创建VPN IKE策略",
"Create VPN IPsec Policy": "创建VPN IPsec策略", "Create VPN IPsec Policy": "创建VPN IPsec策略",
"Create VPN Tunnel": "创建VPN隧道",
"Create Virtual Adapter": "创建虚拟网卡", "Create Virtual Adapter": "创建虚拟网卡",
"Create Volume": "创建云硬盘", "Create Volume": "创建云硬盘",
"Create Volume Type": "创建云硬盘类型", "Create Volume Type": "创建云硬盘类型",
@ -426,6 +426,7 @@
"Delete Flavor": "删除云主机类型", "Delete Flavor": "删除云主机类型",
"Delete Group": "删除用户组", "Delete Group": "删除用户组",
"Delete Host Aggregate": "删除主机集合", "Delete Host Aggregate": "删除主机集合",
"Delete IPsec Site Connection": "删除IPsec站点连接",
"Delete Image": "删除镜像", "Delete Image": "删除镜像",
"Delete In Progress": "正在删除", "Delete In Progress": "正在删除",
"Delete Instance": "删除云主机", "Delete Instance": "删除云主机",
@ -454,7 +455,6 @@
"Delete VPN EndPoint Groups": "删除VPN端点组", "Delete VPN EndPoint Groups": "删除VPN端点组",
"Delete VPN IKE Policy": "删除VPN IKE策略", "Delete VPN IKE Policy": "删除VPN IKE策略",
"Delete VPN IPsec Policy": "删除VPN IPsec策略", "Delete VPN IPsec Policy": "删除VPN IPsec策略",
"Delete VPN Tunnel": "删除VPN隧道",
"Delete Virtual Adapter": "删除虚拟网卡", "Delete Virtual Adapter": "删除虚拟网卡",
"Delete Volume": "删除云硬盘", "Delete Volume": "删除云硬盘",
"Delete Volume Type": "删除云硬盘类型", "Delete Volume Type": "删除云硬盘类型",
@ -541,6 +541,7 @@
"Edit Flavor": "编辑云主机类型", "Edit Flavor": "编辑云主机类型",
"Edit Health Monitor": "编辑健康检查器", "Edit Health Monitor": "编辑健康检查器",
"Edit Host Aggregate": "编辑主机集合", "Edit Host Aggregate": "编辑主机集合",
"Edit IPsec Site Connection": "编辑IPsec站点连接",
"Edit Image": "编辑镜像", "Edit Image": "编辑镜像",
"Edit Instance": "编辑云主机", "Edit Instance": "编辑云主机",
"Edit Listener": "编辑监听器", "Edit Listener": "编辑监听器",
@ -561,7 +562,6 @@
"Edit VPN EndPoint Groups": "编辑VPN端点组", "Edit VPN EndPoint Groups": "编辑VPN端点组",
"Edit VPN IKE Policy": "编辑VPN IKE策略", "Edit VPN IKE Policy": "编辑VPN IKE策略",
"Edit VPN IPsec Policy": "编辑VPN IPsec策略", "Edit VPN IPsec Policy": "编辑VPN IPsec策略",
"Edit VPN Tunnel": "编辑VPN隧道",
"Edit host aggregate": "编辑主机集合", "Edit host aggregate": "编辑主机集合",
"Edit metadata": "编辑元数据", "Edit metadata": "编辑元数据",
"Edit quota": "编辑配额", "Edit quota": "编辑配额",
@ -744,6 +744,9 @@
"IPMITool": "", "IPMITool": "",
"IPXE": "", "IPXE": "",
"IPsec Policy": "IPsec策略", "IPsec Policy": "IPsec策略",
"IPsec Site Connection": "IPsec站点连接",
"IPsec Site Connections": "IPsec站点连接",
"IPsec site connection Detail": "IPsec站点连接详情",
"IPv4": "", "IPv4": "",
"IPv4 Address": "IPv4 地址", "IPv4 Address": "IPv4 地址",
"IPv6": "", "IPv6": "",
@ -1117,7 +1120,7 @@
"Peer ID": "对端标识", "Peer ID": "对端标识",
"Peer Network": "对端网络", "Peer Network": "对端网络",
"Peer Network Segment": "对端网络", "Peer Network Segment": "对端网络",
"Peer gateway public address for the VPN tunnel": "对端网络的地址", "Peer gateway public address for the IPsec site connection": "对端网络的地址",
"Pending": "等待", "Pending": "等待",
"Pending Create": "等待创建", "Pending Create": "等待创建",
"Pending Delete": "等待删除", "Pending Delete": "等待删除",
@ -1706,8 +1709,6 @@
"VPN Gateway": "VPN网关", "VPN Gateway": "VPN网关",
"VPN Service": "VPN服务", "VPN Service": "VPN服务",
"VPN Service ID": "VPN服务ID", "VPN Service ID": "VPN服务ID",
"VPN Tunnel": "VPN隧道",
"VPN Tunnel Detail": "VPN隧道详情",
"VRRP": "", "VRRP": "",
"Valid": "有效", "Valid": "有效",
"Value": "值", "Value": "值",
@ -1806,6 +1807,7 @@
"create encryption": "创建加密", "create encryption": "创建加密",
"create flavor": "创建云主机类型", "create flavor": "创建云主机类型",
"create instance snapshot": "创建云主机快照", "create instance snapshot": "创建云主机快照",
"create ipsec site connection": "创建IPsec站点连接",
"create network": "创建网络", "create network": "创建网络",
"create router": "创建路由", "create router": "创建路由",
"create snapshot": "创建快照", "create snapshot": "创建快照",
@ -1815,7 +1817,6 @@
"create vpn": "创建VPN", "create vpn": "创建VPN",
"create vpn ike policy": "创建VPN IKE策略", "create vpn ike policy": "创建VPN IKE策略",
"create vpn ipsec policy": "创建VPN IPsec策略", "create vpn ipsec policy": "创建VPN IPsec策略",
"create vpn tunnel": "创建VPN隧道",
"data": "数据", "data": "数据",
"delete": "删除", "delete": "删除",
"delete DNAT rule": "删除DNAT规则", "delete DNAT rule": "删除DNAT规则",
@ -1832,6 +1833,7 @@
"delete group": "删除组", "delete group": "删除组",
"delete image": "删除镜像", "delete image": "删除镜像",
"delete instance": "删除云主机", "delete instance": "删除云主机",
"delete ipsec site connection": "删除IPsec站点连接",
"delete ironic instance": "删除裸机", "delete ironic instance": "删除裸机",
"delete keypair": "删除密钥", "delete keypair": "删除密钥",
"delete listener": "删除监听器", "delete listener": "删除监听器",
@ -1852,7 +1854,6 @@
"delete vpn IKE policy": "删除vpn IKE策略", "delete vpn IKE policy": "删除vpn IKE策略",
"delete vpn IPsec policy": "删除vpn IPsec策略", "delete vpn IPsec policy": "删除vpn IPsec策略",
"delete vpn endpoint groups": "删除vpn端点组", "delete vpn endpoint groups": "删除vpn端点组",
"delete vpn tunnel": "删除VPN隧道",
"description": "描述", "description": "描述",
"detach instance": "从云主机解绑", "detach instance": "从云主机解绑",
"detach security group": "解绑安全组", "detach security group": "解绑安全组",
@ -1890,6 +1891,7 @@
"instance snapshot": "云主机快照", "instance snapshot": "云主机快照",
"instance: {name}.": "实例名称:{name}。", "instance: {name}.": "实例名称:{name}。",
"instances": "云主机", "instances": "云主机",
"ipsec site connection": "IPsec站点连接",
"jump to the console": "跳转到控制台", "jump to the console": "跳转到控制台",
"keypair": "密钥", "keypair": "密钥",
"keypairs": "密钥", "keypairs": "密钥",
@ -1988,7 +1990,6 @@
"vpn IPsec policy": "VPN IPsec策略", "vpn IPsec policy": "VPN IPsec策略",
"vpn endpoint groups": "VPN端点组", "vpn endpoint groups": "VPN端点组",
"vpn services": "VPN网关", "vpn services": "VPN网关",
"vpn tunnel": "VPN隧道",
"{ size } GB": "{ size } GB", "{ size } GB": "{ size } GB",
"{ size } KB": "{ size } KB", "{ size } KB": "{ size } KB",
"{ size } MB": "{ size } MB", "{ size } MB": "{ size } MB",

View File

@ -14,7 +14,7 @@
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import { ModalAction } from 'containers/Action'; import { ModalAction } from 'containers/Action';
import globalVpnIPSecPolicyStore from 'stores/neutron/vpn-ipsec-policy'; import globalVpnIPsecPolicyStore from 'stores/neutron/vpn-ipsec-policy';
import { import {
authAlgorithmOptions, authAlgorithmOptions,
encryptionAlgorithmOptions, encryptionAlgorithmOptions,
@ -60,7 +60,7 @@ export default class Create extends ModalAction {
}, },
...rest, ...rest,
}; };
return globalVpnIPSecPolicyStore.create(data); return globalVpnIPsecPolicyStore.create(data);
}; };
get formItems() { get formItems() {

View File

@ -14,7 +14,7 @@
import { ConfirmAction } from 'containers/Action'; import { ConfirmAction } from 'containers/Action';
import { checkPolicyRule } from 'resources/policy'; import { checkPolicyRule } from 'resources/policy';
import globalVpnIPSecPolicyStore from 'stores/neutron/vpn-ipsec-policy'; import globalVpnIPsecPolicyStore from 'stores/neutron/vpn-ipsec-policy';
import globalVpnIPsecConnectionStore from 'stores/neutron/vpn-ipsec-connection'; import globalVpnIPsecConnectionStore from 'stores/neutron/vpn-ipsec-connection';
import globalRootStore from 'stores/root'; import globalRootStore from 'stores/root';
@ -80,6 +80,6 @@ export default class DeleteAction extends ConfirmAction {
// eslint-disable-next-line prefer-promise-reject-errors // eslint-disable-next-line prefer-promise-reject-errors
return Promise.reject({ errorMsg: this.confirmErrorMessageBeforeSubmit }); return Promise.reject({ errorMsg: this.confirmErrorMessageBeforeSubmit });
} }
return globalVpnIPSecPolicyStore.delete(data); return globalVpnIPsecPolicyStore.delete(data);
}; };
} }

View File

@ -15,7 +15,7 @@
import React from 'react'; import React from 'react';
import { inject, observer } from 'mobx-react'; import { inject, observer } from 'mobx-react';
import { ModalAction } from 'containers/Action'; import { ModalAction } from 'containers/Action';
import globalVpnIPSecPolicyStore from 'stores/neutron/vpn-ipsec-policy'; import globalVpnIPsecPolicyStore from 'stores/neutron/vpn-ipsec-policy';
import globalVpnIPsecConnectionStore from 'stores/neutron/vpn-ipsec-connection'; import globalVpnIPsecConnectionStore from 'stores/neutron/vpn-ipsec-connection';
@inject('rootStore') @inject('rootStore')
@ -64,7 +64,7 @@ export default class Edit extends ModalAction {
}, },
...rest, ...rest,
}; };
return globalVpnIPSecPolicyStore.update({ id: this.item.id }, data); return globalVpnIPsecPolicyStore.update({ id: this.item.id }, data);
}; };
get formItems() { get formItems() {

View File

@ -15,7 +15,7 @@
import React from 'react'; import React from 'react';
import { observer, inject } from 'mobx-react'; import { observer, inject } from 'mobx-react';
import Base from 'containers/List'; import Base from 'containers/List';
import { VpnIPSecPolicyStore } from 'stores/neutron/vpn-ipsec-policy'; import { VpnIPsecPolicyStore } from 'stores/neutron/vpn-ipsec-policy';
import { import {
authAlgorithmOptions, authAlgorithmOptions,
encryptionAlgorithmOptions, encryptionAlgorithmOptions,
@ -29,8 +29,8 @@ import { actionConfigs, adminConfigs } from './actions';
@observer @observer
export default class Index extends Base { export default class Index extends Base {
init() { init() {
this.store = new VpnIPSecPolicyStore(); this.store = new VpnIPsecPolicyStore();
this.downloadStore = new VpnIPSecPolicyStore(); this.downloadStore = new VpnIPsecPolicyStore();
} }
get isFilterByBackend() { get isFilterByBackend() {

View File

@ -20,13 +20,13 @@ import { actionConfigs, adminConfigs } from '../actions';
@inject('rootStore') @inject('rootStore')
@observer @observer
export default class VPNTunnelDetail extends Base { export default class IPsecSiteConnection extends Base {
init() { init() {
this.store = new VpnIPsecConnectionStore(); this.store = new VpnIPsecConnectionStore();
} }
get name() { get name() {
return t('vpn tunnel'); return t('IPsec Site Connection');
} }
get policy() { get policy() {
@ -34,7 +34,7 @@ export default class VPNTunnelDetail extends Base {
} }
get listUrl() { get listUrl() {
return `${this.getUrl('/network/vpn')}?tab=ipsec_connections`; return `${this.getUrl('/network/vpn')}?tab=ipsec_site_connections`;
} }
get actionConfigs() { get actionConfigs() {

View File

@ -18,7 +18,7 @@ import { ModalAction } from 'containers/Action';
import { getPasswordOtherRule, ipValidate } from 'utils/validate'; import { getPasswordOtherRule, ipValidate } from 'utils/validate';
import globalVpnServicesStore from 'stores/neutron/vpn-service'; import globalVpnServicesStore from 'stores/neutron/vpn-service';
import globalVpnIKEPolicyStore from 'stores/neutron/vpn-ike-policy'; import globalVpnIKEPolicyStore from 'stores/neutron/vpn-ike-policy';
import globalVpnIPSecPolicyStore from 'stores/neutron/vpn-ipsec-policy'; import globalVpnIPsecPolicyStore from 'stores/neutron/vpn-ipsec-policy';
import globalVPNEndPointGroupStore from 'stores/neutron/vpn-endpoint-group'; import globalVPNEndPointGroupStore from 'stores/neutron/vpn-endpoint-group';
import { Col, Empty, Row } from 'antd'; import { Col, Empty, Row } from 'antd';
import { merge } from 'lodash'; import { merge } from 'lodash';
@ -30,12 +30,12 @@ const { isIPv4, isIpv6 } = ipValidate;
@inject('rootStore') @inject('rootStore')
@observer @observer
export default class Create extends ModalAction { export default class Create extends ModalAction {
static id = 'create-vpn-tunnel'; static id = 'create-ipsec-site-connection';
static title = t('Create VPN Tunnel'); static title = t('Create IPsec Site Connection');
get name() { get name() {
return t('create vpn tunnel'); return t('create ipsec site connection');
} }
static buttonText = t('Create'); static buttonText = t('Create');
@ -47,7 +47,7 @@ export default class Create extends ModalAction {
init() { init() {
this.vpnServiceStore = globalVpnServicesStore; this.vpnServiceStore = globalVpnServicesStore;
this.ikePolicyStore = globalVpnIKEPolicyStore; this.ikePolicyStore = globalVpnIKEPolicyStore;
this.ipsecPolicyStore = globalVpnIPSecPolicyStore; this.ipsecPolicyStore = globalVpnIPsecPolicyStore;
this.endpointGroupStore = globalVPNEndPointGroupStore; this.endpointGroupStore = globalVPNEndPointGroupStore;
this.fetchData(); this.fetchData();
@ -179,7 +179,7 @@ export default class Create extends ModalAction {
name: 'peer_address', name: 'peer_address',
type: 'input', type: 'input',
label: t('Peer Gateway Public Address'), label: t('Peer Gateway Public Address'),
extra: t('Peer gateway public address for the VPN tunnel'), extra: t('Peer gateway public address for the IPsec site connection'),
validator: (rule, value) => { validator: (rule, value) => {
if (!isIPv4(value) && !isIpv6(value)) { if (!isIPv4(value) && !isIpv6(value)) {
return Promise.reject( return Promise.reject(

View File

@ -19,11 +19,11 @@ import globalRootStore from 'stores/root';
export default class DeleteAction extends ConfirmAction { export default class DeleteAction extends ConfirmAction {
get id() { get id() {
return 'delete-vpn-tunnel'; return 'delete-ipsec-site-connection';
} }
get title() { get title() {
return t('Delete VPN Tunnel'); return t('Delete IPsec Site Connection');
} }
get buttonType() { get buttonType() {
@ -35,7 +35,7 @@ export default class DeleteAction extends ConfirmAction {
} }
get actionName() { get actionName() {
return t('delete vpn tunnel'); return t('delete ipsec site connection');
} }
policy = 'delete_ipsec_site_connection'; policy = 'delete_ipsec_site_connection';

View File

@ -21,9 +21,9 @@ const canEditStatus = ['ACTIVE', 'DOWN'];
@inject('rootStore') @inject('rootStore')
@observer @observer
export default class Edit extends ModalAction { export default class Edit extends ModalAction {
static id = 'edit-vpn-tunnel'; static id = 'edit-ipsec-site-connection';
static title = t('Edit VPN Tunnel'); static title = t('Edit IPsec Site Connection');
static buttonText = t('Edit'); static buttonText = t('Edit');

View File

@ -40,7 +40,7 @@ export default class Index extends Base {
} }
get name() { get name() {
return t('vpn tunnel'); return t('ipsec site connection');
} }
get adminPageHasProjectFilter() { get adminPageHasProjectFilter() {
@ -59,7 +59,7 @@ export default class Index extends Base {
title: t('ID/Name'), title: t('ID/Name'),
dataIndex: 'name', dataIndex: 'name',
isName: true, isName: true,
linkPrefix: `/network/${this.getUrl('vpn-tunnel')}/detail`, linkPrefix: `/network/${this.getUrl('ipsec-site-connection')}/detail`,
}, },
{ {
title: t('Project ID/Name'), title: t('Project ID/Name'),

View File

@ -18,8 +18,8 @@ import { vpnEndpoint } from 'client/client/constants';
import VPNGateway from './VPNGateway'; import VPNGateway from './VPNGateway';
import EndPointGroup from './EndpointGroup'; import EndPointGroup from './EndpointGroup';
import IKEPolicy from './IKEPolicy'; import IKEPolicy from './IKEPolicy';
import IPsecPolicy from './IPSecPolicy'; import IPsecPolicy from './IPsecPolicy';
import VPNTunnel from './VPNTunnel'; import IPsecSiteConnection from './IPsecSiteConnection';
@inject('rootStore') @inject('rootStore')
@observer @observer
@ -59,9 +59,9 @@ export default class VPN extends Base {
component: IPsecPolicy, component: IPsecPolicy,
}, },
{ {
title: t('VPN Tunnel'), title: t('IPsec Site Connections'),
key: 'ipsec_connections', key: 'ipsec_site_connections',
component: VPNTunnel, component: IPsecSiteConnection,
}, },
]; ];
} }

View File

@ -33,7 +33,7 @@ import StepCreateLoadBalancer from '../containers/LoadBalancers/LoadBalancerInst
import LoadBalancerDetail from '../containers/LoadBalancers/LoadBalancerInstance/Detail'; import LoadBalancerDetail from '../containers/LoadBalancers/LoadBalancerInstance/Detail';
import ListenerDetail from '../containers/LoadBalancers/Listener/Detail'; import ListenerDetail from '../containers/LoadBalancers/Listener/Detail';
import VPN from '../containers/VPN'; import VPN from '../containers/VPN';
import VPNTunnelDetail from '../containers/VPN/VPNTunnel/Detail'; import IPsecSiteConnectionDetail from '../containers/VPN/IPsecSiteConnection/Detail';
import SecurityGroups from '../containers/SecurityGroup'; import SecurityGroups from '../containers/SecurityGroup';
import SecurityGroupDetail from '../containers/SecurityGroup/Detail'; import SecurityGroupDetail from '../containers/SecurityGroup/Detail';
@ -159,13 +159,13 @@ export default [
}, },
{ path: `${PATH}/vpn`, component: VPN, exact: true }, { path: `${PATH}/vpn`, component: VPN, exact: true },
{ {
path: `${PATH}/vpn-tunnel/detail/:id`, path: `${PATH}/ipsec-site-connection/detail/:id`,
component: VPNTunnelDetail, component: IPsecSiteConnectionDetail,
exact: true, exact: true,
}, },
{ {
path: `${PATH}/vpn-tunnel-admin/detail/:id`, path: `${PATH}/ipsec-site-connection-admin/detail/:id`,
component: VPNTunnelDetail, component: IPsecSiteConnectionDetail,
exact: true, exact: true,
}, },
{ path: `${PATH}/vpn-admin`, component: VPN, exact: true }, { path: `${PATH}/vpn-admin`, component: VPN, exact: true },

View File

@ -15,7 +15,7 @@
import { action } from 'mobx'; import { action } from 'mobx';
import { get } from 'lodash'; import { get } from 'lodash';
import globalVpnIKEPolicyStore from 'stores/neutron/vpn-ike-policy'; import globalVpnIKEPolicyStore from 'stores/neutron/vpn-ike-policy';
import globalVpnIPSecPolicyStore from 'stores/neutron/vpn-ipsec-policy'; import globalVpnIPsecPolicyStore from 'stores/neutron/vpn-ipsec-policy';
import client from 'client'; import client from 'client';
import Base from 'stores/base'; import Base from 'stores/base';
@ -43,7 +43,7 @@ export class VpnIPsecConnectionStore extends Base {
const ikePolicy = await globalVpnIKEPolicyStore.fetchDetail({ const ikePolicy = await globalVpnIKEPolicyStore.fetchDetail({
id: ikePolicyID, id: ikePolicyID,
}); });
const ipsecPolicy = await globalVpnIPSecPolicyStore.fetchDetail({ const ipsecPolicy = await globalVpnIPsecPolicyStore.fetchDetail({
id: ipsecPolicyID, id: ipsecPolicyID,
}); });
const originData = get(result, this.responseKey) || result; const originData = get(result, this.responseKey) || result;

View File

@ -15,7 +15,7 @@
import client from 'client'; import client from 'client';
import Base from 'stores/base'; import Base from 'stores/base';
export class VpnIPSecPolicyStore extends Base { export class VpnIPsecPolicyStore extends Base {
get client() { get client() {
return client.neutron.ipsecPolicies; return client.neutron.ipsecPolicies;
} }
@ -29,5 +29,5 @@ export class VpnIPSecPolicyStore extends Base {
} }
} }
const globalVpnIPSecPolicyStore = new VpnIPSecPolicyStore(); const globalVpnIPsecPolicyStore = new VpnIPsecPolicyStore();
export default globalVpnIPSecPolicyStore; export default globalVpnIPsecPolicyStore;

View File

@ -34,7 +34,7 @@ onlyOn(vpnServiceEnabled, () => {
const endpointPeer = `e2e-endpoint-peer-${uuid}`; const endpointPeer = `e2e-endpoint-peer-${uuid}`;
const ikePolicy = `e2e-ike-policy-${uuid}`; const ikePolicy = `e2e-ike-policy-${uuid}`;
const ipsecPolicy = `e2e-ipsec-policy-${uuid}`; const ipsecPolicy = `e2e-ipsec-policy-${uuid}`;
const tunnel = `e2e-tunnel-${uuid}`; const ipsecSiteConnection = `e2e-ipsec-site-connection-${uuid}`;
const cidr = '192.168.0.0/24'; const cidr = '192.168.0.0/24';
@ -98,12 +98,12 @@ onlyOn(vpnServiceEnabled, () => {
.clickModalActionSubmitButton(); .clickModalActionSubmitButton();
}); });
it('successfully create vpn tunnel', () => { it('successfully create ipsec site connection', () => {
cy.clickTab('VPN Tunnel', 'ipsec_connections') cy.clickTab('IPsec Site Connections', 'ipsec_site_connections')
.clickHeaderButton(1) .clickHeaderButton(1)
.wait(5000) .wait(5000)
.formInput('name', tunnel) .formInput('name', ipsecSiteConnection)
.formText('description', tunnel) .formText('description', ipsecSiteConnection)
.formSelect('vpnservice_id', gateway) .formSelect('vpnservice_id', gateway)
.formSelect('ikepolicy_id', ikePolicy) .formSelect('ikepolicy_id', ikePolicy)
.formSelect('ipsecpolicy_id', ipsecPolicy) .formSelect('ipsecpolicy_id', ipsecPolicy)
@ -117,23 +117,23 @@ onlyOn(vpnServiceEnabled, () => {
.clickModalActionSubmitButton(); .clickModalActionSubmitButton();
}); });
it('successfully detail vpn tunnel', () => { it('successfully detail ipsec site connection', () => {
cy.clickTab('VPN Tunnel', 'ipsec_connections').tableSearchText(tunnel); cy.clickTab('IPsec Site Connections', 'ipsec_site_connections').tableSearchText(ipsecSiteConnection);
cy.goToDetail().wait(30000); cy.goToDetail().wait(30000);
cy.goBackToList(listUrl); cy.goBackToList(listUrl);
}); });
it('successfully edit tunnel', () => { it('successfully edit ipsec site connection', () => {
cy.clickTab('VPN Tunnel') cy.clickTab('IPsec Site Connections')
.tableSearchText(tunnel) .tableSearchText(ipsecSiteConnection)
.clickFirstActionButton() .clickFirstActionButton()
.formText('description', 'description') .formText('description', 'description')
.clickModalActionSubmitButton(); .clickModalActionSubmitButton();
}); });
it('successfully delete tunnel', () => { it('successfully delete ipsec site connection', () => {
cy.clickTab('VPN Tunnel') cy.clickTab('IPsec Site Connections')
.tableSearchText(tunnel) .tableSearchText(ipsecSiteConnection)
.clickConfirmActionButton('Delete'); .clickConfirmActionButton('Delete');
}); });