Пример #1
0
        public static void ApplyVirtualServer(VirtualServer virtualServer)
        {
            if (virtualServer.SnatType != SnatType.None && virtualServer.SnatType != SnatType.Automap)
            {
                throw new F5Exception(string.Format("Unsupported SnatType: {0}", virtualServer.SnatType));
            }

            if (FindVirtualServer(virtualServer.Name) != null)
            {
                DeleteVirtualServer(virtualServer.Name);
            }

            F5Interfaces.LocalLBVirtualServer.create(
                new[] { new CommonVirtualServerDefinition
                        {
                            address  = virtualServer.Address,
                            name     = virtualServer.Name,
                            port     = virtualServer.Port,
                            protocol = (CommonProtocolType)virtualServer.VirtualServerProtocol,
                        } },
                new[] { "255.255.255.255" },
                new[] { new LocalLBVirtualServerVirtualServerResource
                        {
                            default_pool_name = virtualServer.DefaultPoolName,
                            type = LocalLBVirtualServerVirtualServerType.RESOURCE_TYPE_POOL
                        } },
                new[] { virtualServer.Profiles.Select(
                            x => new LocalLBVirtualServerVirtualServerProfile
                {
                    profile_context = (LocalLBProfileContextType)x.VirtualServerProfileContext,
                    profile_name    = x.Name
                }).ToArray() }
                );

            F5Interfaces.LocalLBVirtualServer.set_vlan(
                new[] { virtualServer.Name },
                new[] { new CommonVLANFilterList
                        {
                            state = CommonEnabledState.STATE_ENABLED,
                            vlans = virtualServer.Vlans.ToArray()
                        } });

            if (virtualServer.SnatType == SnatType.Automap)
            {
                F5Interfaces.LocalLBVirtualServer.set_snat_automap(new[] { virtualServer.Name });
            }
        }
Пример #2
0
        public static VirtualServer FindVirtualServer(string name)
        {
            var virtualServerName = F5Interfaces.LocalLBVirtualServer.get_list().FirstOrDefault(x => x == name);

            if (virtualServerName == null)
            {
                return(null);
            }

            var destination     = F5Interfaces.LocalLBVirtualServer.get_destination(new[] { name }).First();
            var protocol        = F5Interfaces.LocalLBVirtualServer.get_protocol(new[] { name }).First();
            var defaultPoolName = F5Interfaces.LocalLBVirtualServer.get_default_pool_name(new[] { name }).First();
            var profile         = F5Interfaces.LocalLBVirtualServer.get_profile(new[] { name }).First();
            var vlans           = F5Interfaces.LocalLBVirtualServer.get_vlan(new[] { name }).First();
            var snatType        = F5Interfaces.LocalLBVirtualServer.get_snat_type(new[] { name }).First();

            var virtualServer = new VirtualServer
            {
                Name    = virtualServerName,
                Address = destination.address,
                Port    = destination.port,
                VirtualServerProtocol = (VirtualServerProtocol)protocol,
                DefaultPoolName       = defaultPoolName,
                Profiles = profile == null
                                        ? new List <VirtualServerProfile>()
                                        : profile.Select(
                    x => new VirtualServerProfile
                {
                    Name = x.profile_name,
                    VirtualServerProfileContext = (VirtualServerProfileContext)x.profile_context
                }),
                Vlans    = vlans.vlans,
                SnatType = (SnatType)snatType,
            };

            return(virtualServer);
        }
Пример #3
0
		public static void ApplyVirtualServer(VirtualServer virtualServer)
		{
			if (virtualServer.SnatType != SnatType.None && virtualServer.SnatType != SnatType.Automap)
			{
				throw new F5Exception(string.Format("Unsupported SnatType: {0}", virtualServer.SnatType));
			}

			if (FindVirtualServer(virtualServer.Name) != null)
				DeleteVirtualServer(virtualServer.Name);

			F5Interfaces.LocalLBVirtualServer.create(
				new[] { new CommonVirtualServerDefinition
						{
							address = virtualServer.Address, 
							name = virtualServer.Name, 
							port = virtualServer.Port, 
							protocol = (CommonProtocolType)virtualServer.VirtualServerProtocol,
						}
				},
				new[] { "255.255.255.255" },
				new[] { new LocalLBVirtualServerVirtualServerResource
						{
							default_pool_name = virtualServer.DefaultPoolName,
							type = LocalLBVirtualServerVirtualServerType.RESOURCE_TYPE_POOL
						} 
				},
				new[] { virtualServer.Profiles.Select(
					x => new LocalLBVirtualServerVirtualServerProfile
					{
						profile_context = (LocalLBProfileContextType)x.VirtualServerProfileContext,
						profile_name = x.Name
					}).ToArray()}
				);

			F5Interfaces.LocalLBVirtualServer.set_vlan(
				new[] { virtualServer.Name },
				new[] { new CommonVLANFilterList
				{
					state = CommonEnabledState.STATE_ENABLED,
					vlans = virtualServer.Vlans.ToArray()
				}});

			if (virtualServer.SnatType == SnatType.Automap)
			{
				F5Interfaces.LocalLBVirtualServer.set_snat_automap(new[] { virtualServer.Name });
			}
		}
Пример #4
0
		public static VirtualServer FindVirtualServer(string name)
		{
			var virtualServerName = F5Interfaces.LocalLBVirtualServer.get_list().FirstOrDefault(x => x == name);
			if (virtualServerName == null)
				return null;

			var destination = F5Interfaces.LocalLBVirtualServer.get_destination(new[] { name }).First();
			var protocol = F5Interfaces.LocalLBVirtualServer.get_protocol(new[] { name }).First();
			var defaultPoolName = F5Interfaces.LocalLBVirtualServer.get_default_pool_name(new[] { name }).First();
			var profile = F5Interfaces.LocalLBVirtualServer.get_profile(new[] { name }).First();
			var vlans = F5Interfaces.LocalLBVirtualServer.get_vlan(new[] { name }).First();
			var snatType = F5Interfaces.LocalLBVirtualServer.get_snat_type(new[] { name }).First();

			var virtualServer = new VirtualServer
			{
				Name = virtualServerName,
				Address = destination.address,
				Port = destination.port,
				VirtualServerProtocol = (VirtualServerProtocol)protocol,
				DefaultPoolName = defaultPoolName,
				Profiles = profile == null
					? new List<VirtualServerProfile>()
					: profile.Select(
									 x => new VirtualServerProfile
									 {
										 Name = x.profile_name,
										 VirtualServerProfileContext = (VirtualServerProfileContext)x.profile_context
									 }),
				Vlans = vlans.vlans,
				SnatType = (SnatType)snatType,
			};
			return virtualServer;
		}