docs: def add_subnet(self, subnet_type, quantity=None, vlan_id=None, version=4,
                     test_order=False):
          """Orders a new subnet
  
          :param str subnet_type: Type of subnet to add: private, public, global
          :param int quantity: Number of IPs in the subnet
          :param int vlan_id: VLAN id for the subnet to be placed into
          :param int version: 4 for IPv4, 6 for IPv6
          :param bool test_order: If true, this will only verify the order.
          """
          package = self.client['Product_Package']
          category = 'sov_sec_ip_addresses_priv'
          desc = ''
          if version == 4:
              if subnet_type == 'global':
                  quantity = 0
                  category = 'global_ipv4'
              elif subnet_type == 'public':
                  category = 'sov_sec_ip_addresses_pub'
          else:
              category = 'static_ipv6_addresses'
              if subnet_type == 'global':
                  quantity = 0
                  category = 'global_ipv6'
                  desc = 'Global'
              elif subnet_type == 'public':
                  desc = 'Portable'
  
          # In the API, every non-server item is contained within package ID 0.
          # This means that we need to get all of the items and loop through them
          # looking for the items we need based upon the category, quantity, and
          # item description.
          price_id = None
          quantity_str = str(quantity)
          for item in package.getItems(id=0, mask='itemCategory'):
              category_code = utils.lookup(item, 'itemCategory', 'categoryCode')
              if all([category_code == category,
                      item.get('capacity') == quantity_str,
                      version == 4 or (version == 6 and
                                       desc in item['description'])]):
                  price_id = item['prices'][0]['id']
                  break
  
          order = {
              'packageId': 0,
              'prices': [{'id': price_id}],
              'quantity': 1,
              # This is necessary in order for the XML-RPC endpoint to select the
              # correct order container
              'complexType': 'SoftLayer_Container_Product_Order_Network_Subnet',
          }
  
          if subnet_type != 'global':
              order['endPointVlanId'] = vlan_id
  
          if test_order:
              return self.client['Product_Order'].verifyOrder(order)
          else:
              return self.client['Product_Order'].placeOrder(order)