diff --git a/ui/src/locales/en.json b/ui/src/locales/en.json index 9626d59e3a8..4b64d55b777 100644 --- a/ui/src/locales/en.json +++ b/ui/src/locales/en.json @@ -800,6 +800,7 @@ "label.extra": "Extra Arguments", "label.f5": "F5", "label.f5.details": "F5 details", +"label.f5.ip.loadbalancer": "F5 Big Ip Load Balancer", "label.failed": "Failed", "label.featured": "Featured", "label.fetch.latest": "Fetch latest", @@ -1127,6 +1128,8 @@ "label.limits": "Limits", "label.link.domain.to.ldap": "Link Domain to LDAP", "label.linklocalip": "Link Local IP Address", +"label.list.ciscovnmc": "Cisco VNMC", +"label.list.ciscoasa1000v": "ASA 1000v", "label.load.balancer": "Load Balancer", "label.load.balancing.policies": "Load balancing policies", "label.loadbalancerinstance": "Assigned VMs", @@ -1274,6 +1277,9 @@ "label.netmask": "Netmask", "label.netscaler": "NetScaler", "label.netscaler.details": "NetScaler details", +"label.netscaler.mpx": "NetScaler MPX LoadBalancer", +"label.netscaler.sdx": "NetScaler SDX LoadBalancer", +"label.netscaler.vpx": "NetScaler VPX LoadBalancer", "label.network": "Network", "label.network.acl": "Network ACL", "label.network.acl.lists": "Network ACL Lists", @@ -1398,6 +1404,7 @@ "label.owner.domain": "Owner Domain", "label.pa": "Palo Alto", "label.palo.alto.details": "Palo Alto details", +"label.palo.alto.firewall": "Palo Alto Firewall", "label.palp": "Palo Alto Log Profile", "label.params": "Parameters", "label.parent.domain": "Parent Domain", @@ -1794,6 +1801,7 @@ "label.sr.name": "SR Name-Label", "label.srx": "SRX", "label.srx.details": "SRX details", +"label.srx.firewall": "Juniper SRX Firewall", "label.ssh.key.pair.details": "SSH Key Pair Details", "label.ssh.key.pairs": "SSH Key Pairs", "label.sshkeyenabled": "SSH Enabled", @@ -2315,6 +2323,7 @@ "message.confirm.delete.kubernetes.version": "Please confirm that you want to delete this Kubernetes version.", "message.confirm.delete.netscaler": "Please confirm that you would like to delete NetScaler", "message.confirm.delete.pa": "Please confirm that you would like to delete Palo Alto", +"message.confirm.delete.provider": "Please confirm that you would like to delete this provider?", "message.confirm.delete.secondary.staging.store": "Please confirm you want to delete Secondary Staging Store.", "message.confirm.delete.srx": "Please confirm that you would like to delete SRX", "message.confirm.delete.ucs.manager": "Please confirm that you want to delete UCS Manager", @@ -2400,6 +2409,7 @@ "message.desc.primary.storage": "Each cluster must contain one or more primary storage servers, and we will add the first one now. Primary storage contains the disk volumes for all the VMs running on hosts in the cluster. Use any standards-compliant protocol that is supported by the underlying hypervisor.", "message.desc.reset.ssh.key.pair": "Please specify a ssh key pair that you would like to add to this VM. Please note the root password will be changed by this operation if password is enabled.", "message.desc.secondary.storage": "Each zone must have at least one NFS or secondary storage server, and we will add the first one now. Secondary storage stores VM templates, ISO images, and VM disk volume snapshots. This server must be available to all hosts in the zone.

Provide the IP address and exported path.", +"message.confirm.delete.niciranvp":"Please confirm you want to delete Nicira Nvp Controller", "message.desc.zone": "A zone is the largest organizational unit in CloudStack, and it typically corresponds to a single datacenter. Zones provide physical isolation and redundancy. A zone consists of one or more pods (each of which contains hosts and primary storage servers) and a secondary storage server which is shared by all pods in the zone.", "message.detach.disk": "Are you sure you want to detach this disk?", "message.detach.iso.confirm": "Please confirm that you want to detach the ISO from this virtual instance.", diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index 9017c5e27e5..920194f9ba5 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -341,7 +341,8 @@ export default { parentFetchData: this.fetchData, parentToggleLoading: this.toggleLoading, parentStartLoading: this.startLoading, - parentFinishLoading: this.finishLoading + parentFinishLoading: this.finishLoading, + parentPollActionCompletion: this.pollActionCompletion } }, data () { @@ -924,6 +925,9 @@ export default { this.pageSize = pageSize this.fetchData() }, + changeResource (resource) { + this.resource = resource + }, start () { this.loading = true this.fetchData() diff --git a/ui/src/views/infra/network/ServiceProvidersTab.vue b/ui/src/views/infra/network/ServiceProvidersTab.vue index fce04887820..bf6f1538e17 100644 --- a/ui/src/views/infra/network/ServiceProvidersTab.vue +++ b/ui/src/views/infra/network/ServiceProvidersTab.vue @@ -16,56 +16,132 @@ // under the License. - - diff --git a/ui/src/views/infra/network/providers/AddF5LoadBalancer.vue b/ui/src/views/infra/network/providers/AddF5LoadBalancer.vue new file mode 100644 index 00000000000..6a465b743bf --- /dev/null +++ b/ui/src/views/infra/network/providers/AddF5LoadBalancer.vue @@ -0,0 +1,321 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + + + + + diff --git a/ui/src/views/infra/network/providers/AddNetscalerLoadBalancer.vue b/ui/src/views/infra/network/providers/AddNetscalerLoadBalancer.vue new file mode 100644 index 00000000000..e53cb8da1dc --- /dev/null +++ b/ui/src/views/infra/network/providers/AddNetscalerLoadBalancer.vue @@ -0,0 +1,356 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + + + + + diff --git a/ui/src/views/infra/network/providers/AddNiciraNvpDevice.vue b/ui/src/views/infra/network/providers/AddNiciraNvpDevice.vue new file mode 100644 index 00000000000..ef8e926fca2 --- /dev/null +++ b/ui/src/views/infra/network/providers/AddNiciraNvpDevice.vue @@ -0,0 +1,233 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + + + + + diff --git a/ui/src/views/infra/network/providers/AddPaloAltoFirewall.vue b/ui/src/views/infra/network/providers/AddPaloAltoFirewall.vue new file mode 100644 index 00000000000..c10c6477a79 --- /dev/null +++ b/ui/src/views/infra/network/providers/AddPaloAltoFirewall.vue @@ -0,0 +1,445 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + + + + + diff --git a/ui/src/views/infra/network/providers/AddSrxFirewall.vue b/ui/src/views/infra/network/providers/AddSrxFirewall.vue new file mode 100644 index 00000000000..7d9f48abc2c --- /dev/null +++ b/ui/src/views/infra/network/providers/AddSrxFirewall.vue @@ -0,0 +1,390 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + + + + + diff --git a/ui/src/views/infra/network/providers/ProviderDetail.vue b/ui/src/views/infra/network/providers/ProviderDetail.vue new file mode 100644 index 00000000000..ce756ed8ba9 --- /dev/null +++ b/ui/src/views/infra/network/providers/ProviderDetail.vue @@ -0,0 +1,60 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + + + + + diff --git a/ui/src/views/infra/network/providers/ProviderItem.vue b/ui/src/views/infra/network/providers/ProviderItem.vue new file mode 100644 index 00000000000..5f7559a2ffa --- /dev/null +++ b/ui/src/views/infra/network/providers/ProviderItem.vue @@ -0,0 +1,256 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + + + + + diff --git a/ui/src/views/infra/network/providers/ProviderListView.vue b/ui/src/views/infra/network/providers/ProviderListView.vue new file mode 100644 index 00000000000..9b1a6b34cd7 --- /dev/null +++ b/ui/src/views/infra/network/providers/ProviderListView.vue @@ -0,0 +1,385 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + + + + + diff --git a/ui/src/views/infra/zone/ZoneWizardLaunchZone.vue b/ui/src/views/infra/zone/ZoneWizardLaunchZone.vue index 59f1cfd5f47..ab6d755436a 100644 --- a/ui/src/views/infra/zone/ZoneWizardLaunchZone.vue +++ b/ui/src/views/infra/zone/ZoneWizardLaunchZone.vue @@ -564,14 +564,14 @@ export default { for (let index = 0; index < this.stepData.physicalNetworksReturned.length; index++) { const physicalNetwork = this.stepData.physicalNetworksReturned[index] - if (!this.stepData.stepMove.includes('advUpdatePhysicalNetwork' + index)) { + if (!this.stepData.stepMove.includes('advUpdatePhysicalNetwork' + physicalNetwork.id)) { const updPhysicalParams = {} updPhysicalParams.state = 'Enabled' updPhysicalParams.id = physicalNetwork.id try { await this.updatePhysicalNetwork(updPhysicalParams) - this.stepData.stepMove.push('advUpdatePhysicalNetwork' + index) + this.stepData.stepMove.push('advUpdatePhysicalNetwork' + physicalNetwork.id) } catch (e) { this.messageError = e this.processStatus = STATUS_FAILED @@ -581,7 +581,7 @@ export default { } // ***** Virtual Router ***** (begin) ***** - if (!this.stepData.stepMove.includes('advVirtualRouter' + index)) { + if (!this.stepData.stepMove.includes('advVirtualRouter' + physicalNetwork.id)) { const listParams = {} listParams.name = 'VirtualRouter' listParams.physicalNetworkId = physicalNetwork.id @@ -591,7 +591,7 @@ export default { const elementId = await this.listVirtualRouterElements(providerId) await this.configureVirtualRouterElement(elementId) await this.updateNetworkServiceProvider(providerId) - this.stepData.stepMove.push('advVirtualRouter' + index) + this.stepData.stepMove.push('advVirtualRouter' + physicalNetwork.id) } catch (e) { this.messageError = e this.processStatus = STATUS_FAILED @@ -639,7 +639,7 @@ export default { } }, async configOvs (physicalNetwork) { - if (this.stepData.stepMove.includes('configOvs')) { + if (this.stepData.stepMove.includes('configOvs' + physicalNetwork.id)) { return } @@ -656,10 +656,10 @@ export default { } } - this.stepData.stepMove.push('configOvs') + this.stepData.stepMove.push('configOvs' + physicalNetwork.id) }, async configInternalLBVM (physicalNetwork) { - if (this.stepData.stepMove.includes('configInternalLBVM')) { + if (this.stepData.stepMove.includes('configInternalLBVM' + physicalNetwork.id)) { return } @@ -676,7 +676,7 @@ export default { } } - this.stepData.stepMove.push('configInternalLBVM') + this.stepData.stepMove.push('configInternalLBVM' + physicalNetwork.id) }, async configVpcVirtualRouter (physicalNetwork) { const listParams = {} @@ -684,13 +684,13 @@ export default { listParams.physicalNetworkId = physicalNetwork.id try { - if (!this.stepData.stepMove.includes('configVpcVirtualRouter')) { + if (!this.stepData.stepMove.includes('configVpcVirtualRouter' + physicalNetwork.id)) { const providerId = await this.listNetworkServiceProviders(listParams) const elementId = await this.listVirtualRouterElements(providerId) await this.configureVirtualRouterElement(elementId) await this.updateNetworkServiceProvider(providerId) - this.stepData.stepMove.push('configVpcVirtualRouter') + this.stepData.stepMove.push('configVpcVirtualRouter' + physicalNetwork.id) } } catch (e) { this.messageError = e @@ -1496,10 +1496,10 @@ export default { listNetworkParams.physicalNetworkId = this.stepData.physicalNetworkReturned.id try { - if (!this.stepData.stepMove.includes('enableSecurityGroupProvider')) { + if (!this.stepData.stepMove.includes('enableSecurityGroupProvider' + this.stepData.physicalNetworkReturned.id)) { const securityGroupProviderId = await this.listNetworkServiceProviders(listNetworkParams) await this.updateNetworkServiceProvider(securityGroupProviderId, 'enableSecurityGroupProvider') - this.stepData.stepMove.push('enableSecurityGroupProvider') + this.stepData.stepMove.push('enableSecurityGroupProvider' + this.stepData.physicalNetworkReturned.id) } await this.stepAddNetscalerProvider()