Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Shells Virtual Desktop
BMail.ag - Secure Email Service
Server.net
CPLicense.net
VPS Server
Buy VPN
Vultr
VMs for AI
HostDare
ReliableSite White-Label Dedicated Hosting for Resellers
InterServer VPS
BMail.ag - Secure Email Service
Best VPN
High-Performance Bare Metal Server Solutions
Karvl.com
Server Mania Cloud Hosting
DataWagon Hosting
AlphaVPS Hosting
Evoxt.com
Clouvider
VPS Hosting with NVMe
Residential IPs in the US & 4G Mobile Proxies in EU & US with Unlimited Bandwidth
ReliableSite White-Label Dedicated Hosting for Resellers
Rabisu - Hosting Solutions
Shells Virtual Desktop
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

Kimsufi/Soyoustart/OVH Rise New Price

1414415417419420662

Comments

  • adnsadns Member

    KS-6-B appeared on website if someone wants to order a dual Xeon server.

    Drop YABS if ordered one.

  • wuckwuck Member

    SYS-3-P too or was it already there?

  • NeoonNeoon Community Contributor, Veteran

    @adns said:
    KS-6-B appeared on website if someone wants to order a dual Xeon server.

    Drop YABS if ordered one.

    61$ setup, it was listed on the API for a while though

  • @adns said:
    KS-6-B appeared on website if someone wants to order a dual Xeon server.

    Drop YABS if ordered one.

    I still don't understand how it compares at all to the KS6, worse CPU, worse storage and less RAM, confused what the target audience is for a server like that

  • @wuck said:
    SYS-3-P too or was it already there?

    almost a week.

  • @Coolio85 said:

    @adns said:
    KS-6-B appeared on website if someone wants to order a dual Xeon server.

    Drop YABS if ordered one.

    I still don't understand how it compares at all to the KS6, worse CPU, worse storage and less RAM, confused what the target audience is for a server like that

    Dual Xeon. Since other do that, they want to reach this marketing target too.

  • Every time I saw this thread with 20+ unread posts, I was like "darn, what deal did I miss???"

  • Does anyone need KS-E HDD?

  • ehabehab Member

    @JerryHou said:
    Every time I saw this thread with 20+ unread posts, I was like "darn, what deal did I miss???"

    its all because of this guy

    he is the one making you poor

    and

    horny for the slap on the ass.

    Thanked by 1plumberg
  • plumbergplumberg Veteran, Megathread Squad

    @ehab said:

    @JerryHou said:
    Every time I saw this thread with 20+ unread posts, I was like "darn, what deal did I miss???"

    its all because of this guy

    he is the one making you poor

    and

    horny for the slap on the ass.

    Always big woody

    Always

  • ehabehab Member

    @plumberg said:

    @ehab said:

    @JerryHou said:
    Every time I saw this thread with 20+ unread posts, I was like "darn, what deal did I miss???"

    its all because of this guy

    he is the one making you poor

    and

    horny for the slap on the ass.

    Always big woody

    Always

    we have to do something about it

    we can't let him come and go as he pleases ,,, we need to set a trap

    Thanked by 1plumberg
  • gunixgunix Member

    @alexj1982 said:
    Does anyone need KS-E HDD?

    size?

  • @alexj1982 said:
    Does anyone need KS-E HDD?

    What's the detailed spec, sir?

  • plumbergplumberg Veteran, Megathread Squad

    @ehab said:

    @plumberg said:

    @ehab said:

    @JerryHou said:
    Every time I saw this thread with 20+ unread posts, I was like "darn, what deal did I miss???"

    its all because of this guy

    he is the one making you poor

    and

    horny for the slap on the ass.

    Always big woody

    Always

    we have to do something about it

    we can't let him come and go as he pleases ,,, we need to set a trap

    Hmmm

    I feel if the pants are up, things may cool down?

    Thanked by 1ehab
  • This one https://eco.us.ovhcloud.com/ has KS5 stock

    DT = North America (Canada - East - Beauharnois)
    CPU = KS-5 | Intel Xeon-E3 1270 v6 - 4c/8t - 3.8GHz/4.2GHz
    RAM = 32GB DDR4 ECC 2400MHz
    STORAGE = 2× 2TB HDD SATA Soft RAID / 2× 450GB SSD NVMe Soft RAID
    SPEED = 500Mbit/s unmetered
    $20/m + $20 setup fee.

  • @dedipromo said:

    @alexj1982 said:
    Does anyone need KS-E HDD?

    What's the detailed spec, sir?

    Intel Xeon E5-1650v3, 64GB Ram, 4x2TB HDD

  • Does anyone have a RISE-S-1 for sale?

  • I don't want to pay the installation fee, doesn't matter where it's located, germany, france, poland it's good

  • @xTheAlex14 said:
    I don't want to pay the installation fee, doesn't matter where it's located, germany, france, poland it's good

    anyone wants the install fee.

  • I'm not sure what you mean, but you can transfer server and I've already done like 4 transfers with several people for kimsufi servers

  • gunixgunix Member

    @alexj1982 said:

    @dedipromo said:

    @alexj1982 said:
    Does anyone need KS-E HDD?

    What's the detailed spec, sir?

    Intel Xeon E5-1650v3, 64GB Ram, 4x2TB HDD

    Hi,
    I want to buy it.
    How much do you want for transfer?
    And also renewal price?
    Thanks.

  • FlorinMarianFlorinMarian Member, Host Rep

    KS-6 | AMD Epyc 7351P @ 38.99 EUR/mo + VAT ordered yesterday.
    I received exactly what I ordered.

    Thanked by 1dedipromo
  • @FlorinMarian said:
    KS-6 | AMD Epyc 7351P @ 38.99 EUR/mo + VAT ordered yesterday.
    I received exactly what I ordered.

    Yes, I used to have a few KS-6 and never got any upgrades, except for a port of 10Gbps down.

    That just shows how crazy the mystery boxes were.

    KS-6: AMD Epyc 7351p / 128 GB / 2 * 480 GB NVMe / 300Mbps / 10Gbps / 38.99 EUR
    KS-Mystery: AMD Epyc 7351p / 128 GB / 2 * 960 GB NVMe / 1 Gbps / 10Gbps / 22.99 EUR
    :'(

  • NeoonNeoon Community Contributor, Veteran
    edited July 2025

    @dedipromo said:

    @FlorinMarian said:
    KS-6 | AMD Epyc 7351P @ 38.99 EUR/mo + VAT ordered yesterday.
    I received exactly what I ordered.

    Yes, I used to have a few KS-6 and never got any upgrades, except for a port of 10Gbps down.

    That just shows how crazy the mystery boxes were.

    KS-6: AMD Epyc 7351p / 128 GB / 2 * 480 GB NVMe / 300Mbps / 10Gbps / 38.99 EUR
    KS-Mystery: AMD Epyc 7351p / 128 GB / 2 * 960 GB NVMe / 1 Gbps / 10Gbps / 22.99 EUR
    :'(

    I already have renewed my KS-LE-B's for 3 months ahead, due to lack of deals.
    Personally, I like the G more if you ask me.

    root@bigIdleRock:~# uptime
     19:09:17 up 32 days,  5:25,  3 users,  load average: 0.36, 0.43, 0.45
    

    The IDLE, strong it is

    Thanked by 1dedipromo
  • also, to be fair, seemingly only a tiny number of people at the end got EPYC, though the “standard” offer was well worth keeping.

  • FlorinMarianFlorinMarian Member, Host Rep

    Waiting so long for the offers I ended up making my own API scrapper that combines the results of check-servers.ovh and ovh.hos7.com
    It is interesting that from the API point of view SYS-LE-[1|2] are available but only in the 32 and 64GB versions and still with only 500Mbps not guaranteed while the current SYS have 1Gbps guaranteed.

  • @FlorinMarian said:
    Waiting so long for the offers I ended up making my own API scrapper that combines the results of check-servers.ovh and ovh.hos7.com
    It is interesting that from the API point of view SYS-LE-[1|2] are available but only in the 32 and 64GB versions and still with only 500Mbps not guaranteed while the current SYS have 1Gbps guaranteed.

    Why don’t you hit the OVH API directly?

  • FlorinMarianFlorinMarian Member, Host Rep

    @barbarza said:

    @FlorinMarian said:
    Waiting so long for the offers I ended up making my own API scrapper that combines the results of check-servers.ovh and ovh.hos7.com
    It is interesting that from the API point of view SYS-LE-[1|2] are available but only in the 32 and 64GB versions and still with only 500Mbps not guaranteed while the current SYS have 1Gbps guaranteed.

    Why don’t you hit the OVH API directly?

    That was my first approach but too many bugs at that moment

    Thanked by 1barbarza
  • emghemgh Member, Megathread Squad

    @FlorinMarian said:

    @barbarza said:

    @FlorinMarian said:
    Waiting so long for the offers I ended up making my own API scrapper that combines the results of check-servers.ovh and ovh.hos7.com
    It is interesting that from the API point of view SYS-LE-[1|2] are available but only in the 32 and 64GB versions and still with only 500Mbps not guaranteed while the current SYS have 1Gbps guaranteed.

    Why don’t you hit the OVH API directly?

    That was my first approach but too many bugs at that moment

    Skill Issue’d by the Baguettes

    Thanked by 1barbarza
  • loayloay Member
    edited July 2025

    @wuck said:
    If someone want to sell their 2288G mystery in EU specs doesn't matter dm :*

    @FlorinMarian said:

    @barbarza said:

    @FlorinMarian said:
    Waiting so long for the offers I ended up making my own API scrapper that combines the results of check-servers.ovh and ovh.hos7.com
    It is interesting that from the API point of view SYS-LE-[1|2] are available but only in the 32 and 64GB versions and still with only 500Mbps not guaranteed while the current SYS have 1Gbps guaranteed.

    Why don’t you hit the OVH API directly?

    That was my first approach but too many bugs at that moment

    You can use this code or adapt the logic. The original code was shared here (sorry, I don’t remember who posted it - maybe it was @fredo1664 ), I’ve made some modifications to provide more detailed information about the plans.

    import requests
    import json
    
    acceptable_dc = ['gra','rbx','sbg','waw','fra','lon','bhs']
    ovhSubsidiary = 'IE'
    outputFileName = 'catalog.csv'
    outputFileNameReadable = 'catalog_with_names.csv'
    
    # -------------- BUILD AVAILABILITY DICT -------------------------------------------------------------------------
    def buildAvailabilityDict():
        myAvail = {}
        api_url = "https://eu.api.ovh.com/v1/dedicated/server/datacenter/availabilities"
        if acceptable_dc:
            api_url += "?datacenters=" + ",".join(acceptable_dc)
    
        try:
            response = requests.get(api_url)
            response.raise_for_status()
            avail_data = response.json()
            for avail_item in avail_data:
                myFqn = avail_item['fqn']
                for da in avail_item['datacenters']:
                    myLongFqn = myFqn + "." + da['datacenter']
                    myAvail[myLongFqn] = da['availability']
        except requests.exceptions.RequestException as e:
            print(f"Error fetching availability: {e}")
        except json.JSONDecodeError as e:
            print(f"Error decoding availability JSON: {e}")
        return myAvail
    
    # -------------- HELPER FUNCTION FOR ADDON INFO ------------------------------------------------------------------
    def get_addon_info(addon_plan_code, all_addons_list, expected_pricing_index):
        invoice_name = "N/A"
        price = 0.0
        if addon_plan_code == 'none' or not addon_plan_code:
            return "None", 0.0
    
        addon_details = [x for x in all_addons_list if x.get('planCode') == addon_plan_code]
        if addon_details:
            addon = addon_details[0]
            invoice_name = addon.get('invoiceName', "N/A")
            try:
                if addon.get('pricings') and len(addon['pricings']) > expected_pricing_index and addon['pricings'][expected_pricing_index].get('price') is not None:
                    price = float(addon['pricings'][expected_pricing_index]['price']) / 100000000
                elif addon.get('pricings'):
                    for p_entry in addon['pricings']:
                        if p_entry and p_entry.get('price') is not None:
                            price = float(p_entry['price']) / 100000000
                            break
            except (IndexError, TypeError, ValueError, KeyError) as e:
                price = 0.0
        return invoice_name, price
    
    # -------------- BUILD LIST OF SERVERS ---------------------------------------------------------------------------
    # Here we fix errors in the catalog to match the FQN listed in the availabilities
    def fixMem(mem):
        fixedMem = mem
        # For 25rises011 and 021, OVH add "-rise-s" instead of the plancode at the end of the RAM
        # and in the availabilities there is an extra "-on-die-ecc-5200"
        if mem.endswith("-rise"):
            fixedMem = mem.removesuffix("-rise") + "-on-die-ecc-5200"
        return fixedMem
    
    def fixSto(sto):
        fixedSto = sto
        # For SYS-01 with hybrid disks, the availabilities have 500nvme instead of 512nvme
        if sto.endswith("4000sa-2x512nvme") or sto.endswith("4000sa-1x512nvme"):
            fixedSto = sto.replace("512", "500")
        return fixedSto
    
    def buildList(avail_dict):
        try:
            response = requests.get("https://eu.api.ovh.com/v1/order/catalog/public/eco?ovhSubsidiary=" + ovhSubsidiary)
            response.raise_for_status()
            API_catalog = response.json()
        except requests.exceptions.RequestException as e:
            print(f"Error fetching catalog: {e}")
            return []
        except json.JSONDecodeError as e:
            print(f"Error decoding catalog JSON: {e}")
            return []
    
        allPlans = API_catalog.get('plans', [])
        myPlans = []
    
        allAddons = API_catalog.get('addons', [])
    
        for plan in allPlans:
            planCode = plan['planCode']
            base_plan_price = 0.0
            allPrices = plan.get('pricings', [])
            if allPrices and allPrices[0].get('price') is not None:
                try:
                    base_plan_price = float(allPrices[0]['price'])/100000000
                except (ValueError, TypeError):
                    base_plan_price = 0.0
            else:
                base_plan_price = 0.0
    
            allStorages = []
            allMemories = []
            allBandwidths = []
            allVRack = []
            allGpus = []
    
            for family in plan.get('addonFamilies', []):
                if family['name'] == "storage":
                    allStorages = family.get('addons', [])
                elif family['name'] == "memory":
                    allMemories = family.get('addons', [])
                elif family['name'] == "bandwidth":
                    allBandwidths = family.get('addons', [])
                elif family['name'] == "vrack":
                    allVRack = family.get('addons', [])
                elif family['name'] == "gpu":
                    allGpus = family.get('addons', [])
    
            if not allMemories: allMemories = ['none']
            if not allStorages: allStorages = ['none']
            if not allBandwidths: allBandwidths = ['none']
            if not allVRack: allVRack = ['none']
            if not allGpus: allGpus = ['none']
    
            allDatacenters = []
            for config in plan.get('configurations', []):
                if config['name'] == "dedicated_datacenter":
                    allDatacenters = config.get('values', [])
    
            if not allDatacenters: allDatacenters = ['none']
    
            for da in allDatacenters:
                if not acceptable_dc or da == 'none' or da in acceptable_dc:
                    for mem_code in allMemories:
                        for st_code in allStorages:
                            for ba_code in allBandwidths:
                                for vr_code in allVRack:
                                    for gp_code in allGpus:
    
                                        mem_name, mem_addon_price = get_addon_info(mem_code, allAddons, 1)
                                        st_name, st_addon_price = get_addon_info(st_code, allAddons, 1)
                                        ba_name, ba_addon_price = get_addon_info(ba_code, allAddons, 1)
                                        vr_name, vr_addon_price = get_addon_info(vr_code, allAddons, 2)
                                        gp_name, gp_addon_price = get_addon_info(gp_code, allAddons, 1)
    
                                        thisPrice = base_plan_price + mem_addon_price + st_addon_price + ba_addon_price + vr_addon_price + gp_addon_price
                                        priceStr = "{:.2f}".format(thisPrice)
    
                                        shortme = fixMem("-".join(mem_code.split("-")[:-1])) if mem_code != 'none' else 'none'
                                        shortst = fixSto("-".join(st_code.split("-")[:-1])) if st_code != 'none' else 'none'
    
                                        myFqn = planCode + "." + shortme + "." + shortst + "." + da
                                        myavailability = 'unknown'
                                        if da != 'none' and shortme != 'none' and shortst != 'none':
                                            if myFqn in avail_dict:
                                                myavailability = avail_dict[myFqn]
                                        elif da == 'none' or shortme == 'none' or shortst == 'none':
                                             myavailability = 'config_incomplete_for_avail_check'
    
                                        myPlans.append({
                                            'planCode': planCode,
                                            'invoiceName': plan.get('invoiceName', 'N/A'),
                                            'datacenter': da,
                                            'storage_planCode': st_code, 'storage_name': st_name,
                                            'memory_planCode': mem_code, 'memory_name': mem_name,
                                            'bandwidth_planCode': ba_code, 'bandwidth_name': ba_name,
                                            'vrack_planCode': vr_code, 'vrack_name': vr_name,
                                            'gpu_planCode': gp_code, 'gpu_name': gp_name,
                                            'price': priceStr,
                                            'availability': myavailability
                                        })
        return myPlans
    
    # -------------- DUMP LIST OF SERVERS AS CSV (ORIGINAL) ------------------------------
    def dumpPlans(plans):
        with open(outputFileName, 'w') as file:
            file.write("planCode;invoiceName;datacenter;storage;memory;bandwidth;vrack;price;availability\n")
            for plan_item in plans:
                vRackStr = 'none'
                if plan_item['vrack_planCode'] != 'none' and plan_item['vrack_planCode']:
                    try:
                        vRackStr = plan_item['vrack_planCode'].split("-")[2]
                    except IndexError:
                        vRackStr = plan_item['vrack_planCode']
    
                storageStr = "-".join(plan_item['storage_planCode'].split("-")[1:-1]) if plan_item['storage_planCode'] != 'none' and plan_item['storage_planCode'] else 'none'
                memoryStr = plan_item['memory_planCode'].split("-")[1][:-1] if plan_item['memory_planCode'] != 'none' and plan_item['memory_planCode'] and len(plan_item['memory_planCode'].split("-")) > 1 and plan_item['memory_planCode'].split("-")[1] else 'none'
                bandwidthStr = plan_item['bandwidth_planCode'].split("-")[1] if plan_item['bandwidth_planCode'] != 'none' and plan_item['bandwidth_planCode'] and len(plan_item['bandwidth_planCode'].split("-")) > 1 else 'none'
    
                file.write(plan_item['planCode'] + ';' +
                    '\"' + plan_item['invoiceName'] + '\"' + ';' +
                    plan_item['datacenter'] + ';' +
                    storageStr + ';' +
                    memoryStr + ';' +
                    bandwidthStr + ';' +
                    vRackStr + ';' +
                    plan_item['price'] + ';' +
                    plan_item['availability'] + '\n')
    
    # -------------- DUMP LIST OF SERVERS AS CSV (WITH READABLE NAMES) ------------------
    def dumpPlansWithReadableNames(plans, filename):
        with open(filename, 'w') as file:
            header = [
                "planCode", "serverInvoiceName", "datacenter",
                "storage_planCode", "storage_name",
                "memory_planCode", "memory_name",
                "bandwidth_planCode", "bandwidth_name",
                "vrack_planCode", "vrack_name",
                "gpu_planCode", "gpu_name",
                "totalPrice", "availability"
            ]
            file.write(";".join(header) + "\n")
            for plan_item in plans:
                row = [
                    plan_item.get('planCode', ''),
                    f"\"{plan_item.get('invoiceName', 'N/A')}\"",
                    plan_item.get('datacenter', ''),
                    plan_item.get('storage_planCode', 'none'), f"\"{plan_item.get('storage_name', 'N/A')}\"",
                    plan_item.get('memory_planCode', 'none'), f"\"{plan_item.get('memory_name', 'N/A')}\"",
                    plan_item.get('bandwidth_planCode', 'none'), f"\"{plan_item.get('bandwidth_name', 'N/A')}\"",
                    plan_item.get('vrack_planCode', 'none'), f"\"{plan_item.get('vrack_name', 'N/A')}\"",
                    plan_item.get('gpu_planCode', 'none'), f"\"{plan_item.get('gpu_name', 'N/A')}\"",
                    plan_item.get('price', '0.00'),
                    plan_item.get('availability', 'unknown')
                ]
                file.write(";".join(map(str, row)) + "\n")
    
    # --------------- MAIN PROGRAM ---------------------------------------------
    if __name__ == "__main__":
        availabilities = buildAvailabilityDict()
        plans = buildList(availabilities)
    
        if plans:
            dumpPlans(plans)
            dumpPlansWithReadableNames(plans, outputFileNameReadable)
            print(f"Original catalog written to {outputFileName}")
            print(f"Catalog with readable names written to {outputFileNameReadable}")
        else:
            print("No plans generated, CSV files not created.")
    
    
Sign In or Register to comment.