Skip to content

Feature cenik123 vpcvrr 1.1.1 #33

New issue

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

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

Already on GitHub? Sign in to your account

Closed
wants to merge 35 commits into from
Closed

Feature cenik123 vpcvrr 1.1.1 #33

wants to merge 35 commits into from

Conversation

KarlHarrisSungardAS
Copy link

This pull request shows the work done on using packer to build a system virtual machine. Also, using Vagrant boxes as a test platform for systemvm's. This is a work in progress and is posted here for review and comment.

alexbrett and others added 30 commits October 16, 2014 17:21
A number of BVT tests are not valid for LXC (e.g. migrating a VM), so this patch
ensures they skip if LXC is in use.

Signed-off-by: SrikanteswaraRao Talluri <[email protected]>
…e/pod/cluster view > listView > detailView > add View All link (i.e. "View all Virtual Routers").
…ount view > listView > detailView > add View All link (i.e. "View all Virtual Routers").
…f listView - prefilter() - include original args.context when passing it to prefilter().
…XXXX view > listView > detailView > add View All link > not show "group by XXXXXXX" in select view dropdown.
…XXXX view > listView > detailView > add View All link > show read-only text "group by zone/pod/cluster/account" in select view area.
… timely, or in KVM's case, libvirt won't repsonse in few mintues, which will cause agent reconnect to mgt server, then all the on going tasks on host will fail
…e been blocking for too long if exception is thrown in expunging some unfinished or completed old jobs, this will make some future jobs stuck.
…eed.cfg http access during the beginning of packer build.
…ted from Snapshot with its corresponding volume removed. Fix it by searching for volumes including removed.
… cssysvm_template<timestamp>.json files which are generated when build.sh is run
…odated directories so all files except packer.json file are contained in the same root directory. The Vagrantfile to Vagrant Box container function still has issues in this version. vagrantfile_template parameter does not seem to work or I don't understand how to use it
…nce/packer/vm/<output_<timestamp>_<buildheader>_virtualbox. Exported packer environment variables PACKER_CACHE_DIR and PACKER_LOG from build.sh. Added cloudstack root directory input paramter to packer build .json template to root the relative directory references.
Karl Harris added 5 commits November 7, 2014 16:46
…rlay code. Need more virtual disk space to expand the virtualbox get additions. This is an archive commit.
…ual box guest additions to work with Cloudstack systemvm patching functionality. Need more virtual disk space for this to work
…ned up _gitignore file which is unused, updated .gitignore
@rohityadavcloud
Copy link
Member

Hi Karl, can you update us on what you're trying to do and how we can benefit from using packer instead of vagrant? Is packer more easy to setup and work with than Vagrant?

Sorry, no one reviewed your work before. I'll ask our systemvm build system expert @lsimons to help review this along with myself since he did a fantastic job at refactoring our vagrant/veewee based build system recently.

@KarlHarrisSungardAS
Copy link
Author

I'm using Packer to build a System VM as well as a Vagrant SystemVM test "box".

My Packer code builds as systemVM which can then be used to deploy public virtual redundant routers. We are currently working with Vagrant boxes to generate changes and test VPC VRR's functionality.

So is it easier to setup and work with than Vagrant? Since they are both used for different purposes I am confused by the question. In some ways Packer is easier to generate images from scratch and adapts easy to changes in all of the many pieces which come together to build a SystemVM.

Vagrant is very nice for testing changes to the SystemVM's once a vagrant box is built.

Please expand on your question.

Thanks for the reply.

Karl

@rohityadavcloud
Copy link
Member

Wrong question, I should asked about veewee vs packer. The current systemvm building scripts uses veewee to build systemvms and to export appliances in various image/file formats (such as vhd, qcow2, raw, ova) we depend on vbox-manage, qemu etc. We further use veewee to build vagrant boxes. I just want to understand how easy it is to build/export appliances using packer as I have never played with it and veewee/vagrant requires ruby and other dependencies that are hard to setup?

@asfbot
Copy link

asfbot commented Dec 2, 2014

sebgoa on [email protected] replies:
systemvm building scripts uses veewee to build systemvms and to export =
appliances in various image/file formats (such as vhd, qcow2, raw, ova) =
we depend on vbox-manage, qemu etc. We further use veewee to build =
vagrant boxes. I just want to understand how easy it is to build/export =
appliances using packer as I have never played with it and =
veewee/vagrant requires ruby and other dependencies that are hard to =
setup?

veewee is being "abandoned" in favor of packer. so ultimately we should =
start using packer.
your
feature
please
ticket

@lsimons
Copy link
Contributor

lsimons commented Dec 2, 2014

Hey folks,

Karl thanks for contributing. Looks like quite a bit of work!

Rohit thanks for CC-ing me in :)

It's a bit hard to read the pull request right now and provide review comments:

  • Github says there's nearly 7000 changed files so at a guess something went wrong there? I had a look, and it looks like KarlHarrisSungardAS/cloudstack is quite a ways behind master, which may explain that...? It's probably a good idea to make a copy of the feature branch, rebase it against current master, squash some of the commits together, and then re-send the pull request. Or, start another branch, and cherry-pick over just the changes that should be in the change set.
  • git hasn't picked up on the relation between veewee and packer, it's probably good idea to give it some more hints. For example it would be good to see
    https://github.com/KarlHarrisSungardAS/cloudstack/commit/892b11ec0230ce87d14370fd1055ac223096cc77#diff-67bdab8b08f1e110ceabe1a23c3d4011R1
    compared to the veewee equivalent.
  • there's a lot of 'shuffling' and/or adding comments intermixed with functional changes. For example https://github.com/KarlHarrisSungardAS/cloudstack/commit/7f55a1ef032c29cb955e02c90da43c91739108d7#diff-95748c84d8b6be2da502091e69b748d9L30 you might think the 'set -x' is getting removed here, but it just moved down a bit amidst a few new comments.
  • there's a lot of commits that are seemingly unrelated to the actual change (probably cherry-picked from master onto the feature branch?), those will need to be filtered out I think.
  • there's a lot of 'archive' commits which have unfinished 'checkpoint' code. I imagine all that work gets finished 'later on' (like renaming _gitignore to .gitignore is one that I tracked) but it's not so easy to see. It'd be great if those things could be squashed together.

As far as content goes...

  1. Like sebastien says, veewee is in maintenance mode and moving to packer (replacing veewee) is definitely a good idea. This looks like a straightforward port, which if it works ok seems like the way to go. We should make sure to do it in a way that's somewhat compatible with the jenkins.buildacloud.org setup. I don't think we could sustain maintenance of both packer and veewee builds for long, it'll be a pain to keep changes in sync. I'd want to drop veewee use completely.

  2. Testing the systemvm using vagrant is also obviously a good idea (we're doing much the same, over at https://github.com/schubergphilis/cloudstack/tree/feature/systemvm-persistent-config/tools/vagrant/systemvm see https://github.com/schubergphilis/cloudstack/commits/feature/systemvm-test for an abandoned branch having just test-related commits), though I don't understand why we'd need to use vagrant templates? The .box file that we get out of the veewee-based systemvm build imports (https://github.com/apache/cloudstack/blob/master/tools/appliance/build.sh#L466) just fine...

  3. For the stuff that seems to be planned beyond these changes, it might be a good idea to pop by on the development mailing list and discuss plans. A few people at Schuberg Philis (my employer, where there's a few people working on cloudstack) have been working on redundancy for the virtual router for a few months now. We've found that making it work also involves a lot of changes outside of the systemvm, too, i.e. changing the orchestration logic in the java code to match changed behavior of the vpc router (see https://cwiki.apache.org/confluence/display/CLOUDSTACK/Refactor+for+Redundant+Virtual+Router+Implementation / https://www.slideshare.net/LeoSimons1/toolkit-posterccceu14-v2 ). @spark404 please do have a look at Karl's approach :)

cheers,

Leo

@asfbot
Copy link

asfbot commented Dec 8, 2014

Karl Harris on [email protected] replies:
suggestions.

As far as content goes...

My intent with moving to Packer was to make/continue the systemvm builds
compatible with jenkins. This is part of building a self supporting unit
test framework using Packer/Vagrant. See below.
patching nature of the systemvms. I will look at the references above as
our work progresses.
After looking a how Cloudstack implements both public and VPC routers; I
have chosen to concentrate on the systemvm and what is required to create a
VPC redundant router with the minimum changes to the interface between the
system virtual machine (scripts) and the Cloudstack management server. The
idea is to add the ability for the existing VPC routers to route
dynamically configured network topologies (tiers) by using the existing
Create, Read, Update and Delete (CRUD) network scripts. The goal is to
only add a boolean "is redundant" to the interface along with supporting
script code to configure Keepalived and Conntrackd for VPC redundant
routers. Note: this boolead variable is already used for the "router type"
and the type "VPC router" ignores this variable. Currently the public
routers are redundant but only allow for a "static" network topology.
Building the test framework using vagrant help with understanding how the
public routers work (keepalived/conntracd) and what is required to allow
for "dynamically configured network topologies".
We are currently looking a the refactoring of the Java code and still
believe our work will complement this refactoring work quite well.;

As always, if you have an questions or comments do not hesitate to post
them on this thread.

@krunal10
Copy link

krunal10 commented Dec 9, 2014

Hi Leo.

Could you please share https://www.slideshare.net/LeoSimons1/toolkit-posterccceu14-v2 with me.
Thanks!

Regards,
Krunal Jain
(Sungard Availability Services)

@rajesh-battala
Copy link
Contributor

Its in private permission.

On Tue, Dec 9, 2014 at 12:44 PM, Krunal Jain [email protected]
wrote:

Hi Leo.

Could you please share
https://www.slideshare.net/LeoSimons1/toolkit-posterccceu14-v2 with me.
Thanks!

Regards,
Krunal Jain
(Sungard Availability Services)


Reply to this email directly or view it on GitHub
#33 (comment).

Thanks
Rajesh Battala

@lsimons
Copy link
Contributor

lsimons commented Dec 11, 2014

Hey folks, should be public now, sorry, I didn't realize :)

remibergsma added a commit to remibergsma/cloudstack that referenced this pull request May 27, 2015
@remibergsma
Copy link
Contributor

Hi @KarlHarrisSungardAS,

Is there any update on this PR? It is quite behind current master and we're unable to merge it like this. I think it's probably best to close it, rebase with current master and send another PR once the work complete.

Could you please close the PR?
If you need help, let us know.

Thanks!

@asfgit asfgit closed this in c0bf00c Jun 25, 2015
rohityadavcloud pushed a commit that referenced this pull request Jan 20, 2021
Make the api url for development configurable via env file

Signed-off-by: Rohit Yadav <[email protected]>
rohityadavcloud pushed a commit that referenced this pull request Jan 20, 2021
This fixes #33

Signed-off-by: Rohit Yadav <[email protected]>
Pearl1594 added a commit that referenced this pull request Feb 24, 2025
…n wizard (#33)

* Add Netris Tag parameter to the Network provider

* remove unused import

* Fix public IP ranges creation on zone creation (#34)

* use single quotes

---------

Co-authored-by: Nicolas Vazquez <[email protected]>
Pearl1594 added a commit that referenced this pull request Feb 28, 2025
…n wizard (#33)

* Add Netris Tag parameter to the Network provider

* remove unused import

* Fix public IP ranges creation on zone creation (#34)

* use single quotes

---------

Co-authored-by: Nicolas Vazquez <[email protected]>
Pearl1594 added a commit that referenced this pull request Mar 5, 2025
…n wizard (#33)

* Add Netris Tag parameter to the Network provider

* remove unused import

* Fix public IP ranges creation on zone creation (#34)

* use single quotes

---------

Co-authored-by: Nicolas Vazquez <[email protected]>
Pearl1594 added a commit that referenced this pull request Jun 24, 2025
* Add Netris module and Add netris provider

* Fix

* Add Netris Provider to the zone creation wizard

* add steps to zone wizard for adding netris controller and public traffic

* cleanup

* Add missing config key

* Add routed mode offerings for Netris VPC (#3)

* Add routed mode offerings for Netris VPC

* update vpc offering name

* generalize the offering creation method for network providers

* log

* remove debug log

* fix failing build

* Add dependency and Netris API client (#4)

* Add dependency and first approach to Netris API client

* Fix authentication and create Netris API client, in progress sites listing

* Fix get sites

* Support for listing VPCs (#5)

* List tenants

* Delegate API classes creation to the SDK and simply invoke the desired API class through CloudStack (#7)

* Delegate API classes creation to the SDK and simply invoke the desired API class through CloudStack

* Pass default auth scheme for now

* Support adding netris provider to CloudStack and Netris VPC Creation (#6)

* Support adding netris provider to CloudStack

* revert marvin change

* add license and perform session check when provider is added

* add license and remove unused import

* fix build failure - uunused imports

* address comments

* fix provider name

* add Netris network element

* add license

* Add netris management APIs and netris service provider

* add license

* revert change

* remove other network elements from Netris element

* fix api name in doc generator

* remove logs

* move session alive check to CheckHealthCommand exec

* Fix zone creation wizard to configure netris provider

* Upgrade GSON version - from PR 8756

* Add additional parametes to the add Netris provider API

* add netris as a host

* add additional params to the resoponse and update UI

* Rename site to site_name

* Create Netris VPC (#8)

* Delegate API classes creation to the SDK and simply invoke the desired API class through CloudStack (#7)

* Delegate API classes creation to the SDK and simply invoke the desired API class through CloudStack

* Pass default auth scheme for now

* Drop for_nsx and for_tungten columns in favour of checking the provider on the ntwserviceprovider map table

* Remove missing setForTungsten occurrence

* Remove forNsx from VPC offerings

* Create Netris VPC

* Fix VPC offerings listing and remove unused dao

* Create VPC fixes

* Upgrade GSON version - from PR 8756

* Fix VPC creation response by using the latest SDK code

* Fix unit test

* Remove unused import

* Fix NSX unit tests after refactoring

* Add Netris key to the VLAN Details table (#10)

* Add Netris key to the VLAN Details table

* update for_<provider> column to be generic

* Fix VPC and add IPAM allocation for the VPC CIDR (#9)

* Fix VPC and add IPAM allocation for the VPC CIDR

* Remove VPC logic

* Use zoneId accountId and domainId on resources creation

* Fix naming

* Fix VR public nic issue

* Fix Netris Public IP for VPC source NAT allocation

* Add Netris VPC Subnets and vNets (#11)

* Add Netris VPC Subnets and vNets

* fix compilation errors

* Add netris subnet

* refactor naming convention to differentiate between VPC tiers and Isolated networks

* revert marvin change

* fix constructor - build failure

* Add support to filter netris offerings, delete netris provider when zone is being deleted

* Fix build

* Fix VPC creation

* Fix vnet creation

* unnecesary log

---------

Co-authored-by: nvazquez <[email protected]>

---------

Co-authored-by: Pearl Dsilva <[email protected]>

---------

Co-authored-by: nvazquez <[email protected]>

* Fix unit tests

* Add support to delete VNets and Subnets (#13)

* Add support to delete VNets and Subnets

* Add support to delete vnet resources

* Add support to delete vnet resources

* extract code to method

---------

Co-authored-by: nvazquez <[email protected]>

* Add missing suffix return (#14)

* Set up Netris Public range on new zone addition (#15)

* Set up Netris Public range on new zone addition

* Add dependency to calculate subnet containing a start and end IP

* Remove unused import

* Move dependency to the netris module

* Rename Netris IP range

* Refactor logic

* Revert "Refactor logic"

This reverts commit 7ec36a81320444c37e7bb914dd895060b663411b.

* Fix setup range after adding Netris Provider

* Fix VXLAN range adding on zone creation

* Pass VXLAN ID during creation of Netris vNets (#16)

* add zone params to accepts management vnet

* Release vxlan associated to the netris broadcast domain type

* handle update network broadcast uri

* Update Subnet purpose for Netris Public Traffic (#17)

* Update Subnet purpose for Netris Public Traffic

* search for existing subnet of common purpose type

* Fix VR Public IP address (#20)

* Fix VR Public IP address

* Do not set the Public IP range on Netris side that is not part of the Netris IP Public Pool

* Leave only systemvms tag for the first element

* Fix NSX compatibility

* Pass network gateway instead of network CIDR for Netris vNet creation (#21)

* Run moodifyvxlan script if broadcast domain type is Netris (#18)

* Add support to create Netris VPC / Network offerings (#22)

* Add support to create Netris VPC / Network offerings

* fix support services for netris provider type

* Phase4 - Add support for Source NAT, Static NAT and Port Forwarding (#19)

* Run moodifyvxlan script if broadcast domain type is Netris

* Add Netris NAT offerings

* Add support to add Source nat rules for Natted offering

* fix api params while creating Netris source NAT rule

* Add support to add and delete source nat rule on netris

* Add support to create /32 NAT subnet

* Add support to add and delete Static NAT rules in Netris (#23)

* Add support to add and delete Static NAT rules in Netris

* fix static nat creation on netris & removal of subnet on deletion of static nat rule

* remove nat subnet after deltion of the static nat rule

* add check to see if subnet already exists and add license header

* Add port forwarding rules as DNAT rules in Netris (#24)

* Add port forwarding rules as DNAT rules in Netris

* Fixes

* Allow removing DNAT rules

* Fixes

* Fix subnet search

* Fix update SNAT only for SNAT rules

* Address comments

* Fix

* Fix netris pom xml

* Fix SNAT rule creation

* Fix IP and port placements (#27)

* Fix IP and port placements

* fix dnat to IP for PF rules

* change dnatport

---------

Co-authored-by: Nicolas Vazquez <[email protected]>

* List only Netris Public IPs for NAT operations (#26)

* List only Netris Public IPs for NAT operations

* rename getter and change type

* fix failing unit tests

* list all IPs if forProvider is not passed

* fix list public IPs for external providers with additional IP range

* filter provider Ips in a zone with external provider setup

* Prevent acquiring IP that is not from the external provider range

* formating

---------

Co-authored-by: nvazquez <[email protected]>

* Support to pass provider when creating public ip range and create IPAM on Netris (#28)

* UI: support to pass provider when creating public ip range

* prevent adding public ip range for a provider that isnt supported in zone

* Create public range on Netris when created on CloudStack

---------

Co-authored-by: nvazquez <[email protected]>

* Revert UI filtration for public IPs (#29)

* Fix issue with pagination of public addresses listed after filtering for external providers

* Revert UI filteration for public IPs for external network provider enabled zones

* Fix unit tests (#30)

* Add Netris Tag parameter to the Network provider and fix zone creation wizard (#33)

* Add Netris Tag parameter to the Network provider

* remove unused import

* Fix public IP ranges creation on zone creation (#34)

* use single quotes

---------

Co-authored-by: Nicolas Vazquez <[email protected]>

* Fix SourceAddress for SNAt to VPC cidr (#35)

* Fix VPC/network offering service list for external network providers in Routed mode (#32)

* Fix network offering service list for external network providers in Routed mode

* filter out unsupported services based on network mode

* fix supported services list for vpc offering for external providers in Routed mode

* Add support to add and delete and update static routes on Netris (#37)

* Add support to add static routes in Netris

* support to delete static routes on netris

* add defensive check for nextHop

* Add support to update static routes

* add state

* pass empty list for switched to avoid timeout

* Netris: search static route by name and next hop if exists

---------

Co-authored-by: Wei Zhou <[email protected]>

* Netris FR1b: Support Remote Access VPN and Site-to-Site VPN in VPC VR (#41)

* Static Routes: support nexthop

* Update api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateStaticRouteCmd.java

Co-authored-by: Pearl Dsilva <[email protected]>

* PR#10064 VR: apply iptables rules when add/remove static routes

* PR#10065 UI: fix cannot open 'Edit tags' modal for static routes

* PR#10066 Static Routes: fix check on wrong global configuration

* PR#10067 VR: fix site-2-site VPN if split connections is enabled

* PR#10081 server: do not allocate nic on public network for NSX VPC VR

* PR#10082 UI: create VPC network offering with conserve mode

* PR#10083 VR: allow outgoing traffic from RAS/VPN clients

* PR#10086 server: fix typo removeaccessvpn in VirtualRouterElement

* server: Add check on Public IP for remote access VPN

* Revert "PR#10083 VR: allow outgoing traffic from RAS/VPN clients"

This reverts commit 2f9b9f428947cac91de322fbdf4a980902a1c0a0.

* VPC: fetch same used IP for domain router if VR is not Source NAT

* VR: pass has_public_network to VR and configure RA/S2S VPN left peers

* Revert "PR#10081 server: do not allocate nic on public network for NSX VPC VR"

This reverts commit 809e269ed6b361d9df1fcef6537762c5612863e0.

* VPC: fetch same used IP for domain router if VR is not Source NAT (v2)

* VR: fix /etc/hosts and nameservers in dnsmasq.conf if VPC VR is not guest gateway

prior to this PR
```
root@r-1167-VM:~# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	r-1167-VM
::1	localhost ip6-localhost ip6-loopback
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.21.1.33	dummy-vpc-vpn-001
172.21.1.1	r-1167-VM data-server

root@r-1167-VM:~# cat /etc/dnsmasq.d/cloud.conf
dhcp-hostsfile=/etc/dhcphosts.txt
listen-address=127.0.0.1,172.21.1.234
dhcp-range=set:interface-eth1-0,172.21.1.234,static
dhcp-option=tag:interface-eth1-0,15,cs2cloud.internal
dhcp-option=tag:interface-eth1-0,6,172.21.1.1,10.0.32.1,8.8.8.8
dhcp-option=tag:interface-eth1-0,3,172.21.1.1
dhcp-option=eth1,26,1500
dhcp-option=tag:interface-eth1-0,1,255.255.255.0
```

the lines should be
```
172.21.1.234  r-1167-VM data-server

dhcp-option=tag:interface-eth1-0,6,10.0.32.1,8.8.8.8
```

* server: Enable static NAT for Domain router if it is not Source NAT

* server: Enable static NAT for Domain router on UI

* server: assign Public IP to VPC VR and enable static nat if VR is not Source NAT

* server: configure dns1 if VR is not Source NAT

* server: remove check on Firewall service when list network service providers

* UI: remove dot from message.enabled.vpn

* systemvm: add default route via first guest gateway if VR does not have public IP/interface

* VR: add fw_dhcpserver for shared network

* VR: pass has_public_network to VR and configure RA/S2S VPN left peers (v2)

* UI: fix request error when create a VPC tier in a non-Netris/NSX env

* systemvm: add default route via first guest gateway (v2)

* VR: configure iptables rules for S2S vpn on first guest interface

* VR: allow FORWARD to guest interfaces if VR is not Public

* VR: configure remote access vpn on first guest interface if not public

* VR: fix error 789 in RA VPN client when both RA and S2S are configured

* server: Apply Static Route for RA/S2S VPN in VPC VR

* VR: do not set mark for Public interface when VR is not really public

* VPN: do not disable static nat if it is used by a RA/S2S VPN

* server: skip check on network conserve mode if disable/enable RA VPN on Router IP

* server: set forRouter to false when release a IP

* VR: diable IP spoofing protection on default guest network

* VR: fix iptables rules only when only S2S vpn is enabled

* UI: show 'VPN Connections' section

* VPC: new methods to configure/reconfigure Static NAT for VPC VR

* API: set Type in ip address response to DomainRouter if it is used by VR

* server: do not allow IP release if it is used by RA or S2S VPN gateway

* VR: check if interface is added

* VR: add default route only when ip is associated to first guest interface

* VR: fix ipsec conf for l2tp and s2s vpn

* server: save placeholder IP for VPC VR to fix the new VR IP when vpc tier is auto-shutdown

* server: get non-placeholder NIC for VPC VR

* VR: wait 15 seconds after starting password server

* server: fix unable to configure static nat due to 'invalid virtual machine id'

* UI: fix link of router in info card

* VPC: apply static route for VPC VPN if needed (refactoring)

* server: fix VR IP of first VPC tier is the VM gateway

* server: update or remove all existing static routes when shutdown a network

* server: update ipaddress after disabling static nat to fix vpc deletion issue

* servr: disable remote access VPN as part of VPC dstroy

* server: apply static routes when implement a vpc tier

* server: apply static routes even if next hop is null

* server: fix Cannot invoke "com.cloud.vm.NicProfile.getRequestedIPv4()" because "requested" is null

* Netris: Update Vpn provider to VpcVirtualRouter

* Netris: Add Vpn service to network offerings and networks

* server: fix CIDR of VPN ip range

* server: set isVrGuestGateway by SoureNat/Gateway service with Provider.VPCVirtualRouter

* VR: password server takes 10-15 seconds to start if VR IP is not configured in /etc/hosts

* Netris: add back routesPutBody.setStateStatus

* engine/schema: remove SQL changes in schema-41910to42000.sql

---------

Co-authored-by: Pearl Dsilva <[email protected]>

* Add support for Gateway service for Netris VPC and network offerings (#39)

* Add support for Gateway service for Netris VPC and network offerings

* Restore UserData service

* add gateway only to vpc service

* Add support for gateway service for external network providers for networks in routed mode

* add support for gateway svc

* Revert "add support for gateway svc"

This reverts commit 06645cd1c6d08a81ede5d1431497ea3f2efdc5dc.

* Fix VPC offering creation

* Fix VR public NIC after Gateway service is set to Netris

---------

Co-authored-by: nvazquez <[email protected]>

* Netris VPN: Fix s2s vpn status update and isolated network implementation (#42)

* server: fix NPE when deploy vm on isolated network

* vpn: fix s2s vpn status is not updated

Prior to this fix
```
java.lang.IllegalArgumentException: Class com.cloud.agent.api.CheckS2SVpnConnectionsAnswer declares multiple JSON fields named 'details'; conflict is caused by fields com.cloud.agent.api.CheckS2SVpnConnectionsAnswer#details and com.cloud.agent.api.Answer#details
	at com.cloud.agent.transport.ResponseTest.testCheckS2SVpnConnectionsAnswer(ResponseTest.java:42)
```

* test: fix test_01_vpn_usage as now it is only possible to create VPN on Source NAT if it uses VR

* VR: fix unable to create remote access VPN on regular isolated network

the error is
```
  File "/opt/cloud/bin/configure.py", line 1242, in process
    self.remoteaccessvpn_iptables(self.dbag['public_interface'], public_ip, self.dbag[public_ip])
                                  ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
KeyError: 'public_interface'
```

* Release NAT IP subnet when VPC is removed or IP is released (#44)

* Release NAT IP subnet when VPC is removed or IP is released

* add license

* Add support to add IPv6 Public IP range as IPAM Allocation / Subnet on Netris (#36)

* Add support to add IPv6 Public IP range as IPAM Allocation / Subnet on Netris

* Add ipam alloc and subnet for the ipv6 subnet associated to the vpc tier network

* remove commented code

* Phase5 - Support for ACLs in Netris (#31)

* Add support for Netris ACLs

* acl support

* Make acl api call to netris to create the rule

* refactor add acl rule to populate the right fields

* support icmp type acl rule

* acl rule creation - move netrisnetworkRule

* Update ACL naming on Netris

* Add support for Deletion of netris acls

* Add support to delete and re-order ACL rules

* support creation of default acl rules and replacing acl rules

* fix NSXNetworkRule

* Add global routing flag on subnet creation (#45)

* Support change snat ip (#46)

* Support updating VPC Source NAT IP

* Optimize code

* Update source NAT IP

* Fix naming convention for NAT subnets to follow other resources (#47)

* Fix naming convention for NAT subnets to follow other resources

* Use vpc ID for nat subnets

* Use new nat subnet name for deletion of static nat rule

* fix naming convevntion for nat subnet

* Keep Vpn service to default VPC offering with Natted mode only (#50)

* Add Vpn service to default VPC offering with Routed mode

* Revert change on VPC offering and fix VPN service only for Netris NAT mode

* Validate if given CIDR belongs to a bigger allocation in Netris before creating the zone-level allocation (#48)

* Validate if given CIDR belongs to a bigger allocation in Netris before creating

* rename method

* Phase5 - Support for LB - create, delete and Update operations (#49)

* Add support for Netris ACLs

* acl support

* Make acl api call to netris to create the rule

* refactor add acl rule to populate the right fields

* support icmp type acl rule

* acl rule creation - move netrisnetworkRule

* Update ACL naming on Netris

* Add support for Deletion of netris acls

* Add support to delete and re-order ACL rules

* support creation of default acl rules and replacing acl rules

* fix NSXNetworkRule

* Fix naming convention for NAT subnets to follow other resources

* Use vpc ID for nat subnets

* Phase5 - Support for LB - create, delete and Update operations

* Use new nat subnet name for deletion of static nat rule

* add support to add netris lb rule

* support deletion of LB rule on Netris

* add checks when editing unsupported fields of LB rule for Netris and hide columns on the UI

* fix test failure

* fix imports

* add license

* address comments

* Enable Autoscaling on Netris for CPU and memory (#51)

* Enable Autoscaling on Netris for CPU and memory

* Fix monitor autoscale group and cleanup

* Rename autoscaling group method

* Integrate Autoscaling by allowing to update LB rules

* Refactor according to the SDK changes

* Fix the test failures noticed on #44 (#52)

* Increase code coverage (#54)

* Increase code coverage

* More unit tests

* Remove credentials and mock api client

* NetrisResource tests

* Fix unit test

* Add support to add and remove ACL rules when CIDR list is passed when creating LB rules (#53)

* Add support to add and remove ACL rules when CIDR list is passed when creating LB rules

* add deny all rule

* delete the deny rule as well

* Fix build (#57)

* Prevent Index Out of Bounds exception when naming IPAM subnets (#58)

* Prevent Index Out of Bounds exception when naming IPAM subnets

* fix linter

* Delete netris IPv6 subnet (#59)

* Netris VPN: add static route when update a non-existent static route (#60)

* Fix VPC tier creation failure - prevent creating IPv6 IPAM allocation if it already exists (#61)

* Update netris VPC and tier name (#56)

* Update netris VPC and tier name

* add support to update vpc tier name

* add license

* support editing names of dual stack VPCs

* VR/server: configure default gateway and RA/S2S VPN on the IP/interface with minimum network_id (#43)

* server: fix NPE when deploy vm on isolated network

* vpn: fix s2s vpn status is not updated

Prior to this fix
```
java.lang.IllegalArgumentException: Class com.cloud.agent.api.CheckS2SVpnConnectionsAnswer declares multiple JSON fields named 'details'; conflict is caused by fields com.cloud.agent.api.CheckS2SVpnConnectionsAnswer#details and com.cloud.agent.api.Answer#details
	at com.cloud.agent.transport.ResponseTest.testCheckS2SVpnConnectionsAnswer(ResponseTest.java:42)
```

* test: fix test_01_vpn_usage as now it is only possible to create VPN on Source NAT if it uses VR

* VR: fix unable to create remote access VPN on regular isolated network

the error is
```
  File "/opt/cloud/bin/configure.py", line 1242, in process
    self.remoteaccessvpn_iptables(self.dbag['public_interface'], public_ip, self.dbag[public_ip])
                                  ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
KeyError: 'public_interface'
```

* VR/server: configure default gateway and RA/S2S VPN on the IP/interface with minimum network_id

* Don't add deny rule if no CIDR list is passed (#62)

* Hide the Stickiness Configure button for Netris Load Balancers (#72)

* Update IPAM subnet purpose to nat before NAT operations if its different (#71)

* Netris VPN: create vpc gateway with specified IP (#63)

* Netris: fix UnsupportedOperationException when create VPC offering with NATTED mode (#75)

fixes
```
2025-03-21T10:42:55,039 ERROR [c.c.a.ApiServer] (qtp1513608173-21:[ctx-f9c7f002, ctx-bcfe846d]) (logid:e12e798f) unhandled exception executing api command: [Ljava.lang.String;@3a1416cd java.lang.UnsupportedOperationException
        at java.base/java.util.AbstractList.add(AbstractList.java:153)
        at java.base/java.util.AbstractList.add(AbstractList.java:111)
        at org.apache.cloudstack.api.command.admin.vpc.CreateVPCOfferingCmd.getServiceProviderMapForExternalProvider(CreateVPCOfferingCmd.java:248)
```

* [UI] Zone wizard creation improvements - rename hostname to url and remove port for Netris Provider (#77)

* [UI] Zone wizard creation improvements - rename hostname to url and remove port for Netris Provider

* Fix schema column for url instead of hostname

* Fix Static NAT rules naming (#83)

* Netris: create VPN gateway with specified public IP on UI (#82)

* Netris vpn: apply static routes when start or delete a VPN connection (#85)

* Netris VPN: apply static routes when start S2S VPN

* Netris: list static routes and revoke the routes which are not needed

* Netris: use route name (x.x.x.0/x) instead of prefix (x.x.x.0) and get clean cidr list

* Netris VPN: fix NPE when list static routes

* Update plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java

* Delete IPv6 allocation after tier removal on VPC with dual stack offering (#86)

* Netris pass v6 gateway (#87)

* pass v6 gateway to netris

* pass v6 gateway to netris

* refactor to address comments

* remove imports

* [VR] Fix IPv6 NIC IP on the VR (#89)

* Add support to edit ACL rules (#74)

* Add support to edit ACL rules

* add support to update acl rules

* remove test file

* VR: advertise SLAAC prefix only if VR is gateway (#91)

* Make reorder ACL items invoke Netris controller (#90)

* VR: fix radvd misconfiguration for non-netris env (#92)

* [VR] Fix object comparisson to string comparisson on python (#93)

* Fix unit tests for ACL (#94)

* Use the previously assigned vNet for Netris Network when it transitions to Implemented state after gc (#88)

* Use the previously assigned vNet for Netris Network when it transitions to Implemented state after gc

* Fix unit tests

---------

Co-authored-by: nvazquez <[email protected]>

---------

Co-authored-by: Pearl Dsilva <[email protected]>
Co-authored-by: Wei Zhou <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.