Пример #1
0
    def order_replicant_volume(self,
                               volume_id,
                               snapshot_schedule,
                               location,
                               tier=None):
        """Places an order for a replicant file volume.

        :param volume_id: The ID of the primary volume to be replicated
        :param snapshot_schedule: The primary volume's snapshot
                                  schedule to use for replication
        :param location: The location for the ordered replicant volume
        :param tier: The tier (IOPS per GB) of the primary volume
        :return: Returns a SoftLayer_Container_Product_Order_Receipt
        """

        file_mask = 'billingItem[activeChildren,hourlyFlag],'\
                    'storageTierLevel,osType,staasVersion,'\
                    'hasEncryptionAtRest,snapshotCapacityGb,schedules,'\
                    'intervalSchedule,hourlySchedule,dailySchedule,'\
                    'weeklySchedule,storageType[keyName],provisionedIops'
        file_volume = self.get_file_volume_details(volume_id, mask=file_mask)

        order = storage_utils.prepare_replicant_order_object(
            self, snapshot_schedule, location, tier, file_volume, 'file')

        return self.client.call('Product_Order', 'placeOrder', order)
Пример #2
0
    def order_replicant_volume(self, volume_id, snapshot_schedule,
                               location, tier=None):
        """Places an order for a replicant file volume.

        :param volume_id: The ID of the primary volume to be replicated
        :param snapshot_schedule: The primary volume's snapshot
                                  schedule to use for replication
        :param location: The location for the ordered replicant volume
        :param tier: The tier (IOPS per GB) of the primary volume
        :return: Returns a SoftLayer_Container_Product_Order_Receipt
        """

        file_mask = 'billingItem[activeChildren,hourlyFlag],'\
                    'storageTierLevel,osType,staasVersion,'\
                    'hasEncryptionAtRest,snapshotCapacityGb,schedules,'\
                    'intervalSchedule,hourlySchedule,dailySchedule,'\
                    'weeklySchedule,storageType[keyName],provisionedIops'
        file_volume = self.get_file_volume_details(volume_id,
                                                   mask=file_mask)

        order = storage_utils.prepare_replicant_order_object(
            self, snapshot_schedule, location, tier, file_volume, 'file'
        )

        return self.client.call('Product_Order', 'placeOrder', order)
Пример #3
0
    def order_replicant_volume(self,
                               volume_id,
                               snapshot_schedule,
                               location,
                               tier=None,
                               os_type=None):
        """Places an order for a replicant volume.

        :param volume_id: The ID of the primary volume to be replicated
        :param snapshot_schedule: The primary volume's snapshot
                                  schedule to use for replication
        :param location: The location for the ordered replicant volume
        :param tier: The tier (IOPS per GB) of the primary volume
        :param os_type: The OS type of the primary volume
        :return: Returns a SoftLayer_Container_Product_Order_Receipt
        """

        block_mask = 'billingItem[activeChildren,hourlyFlag],' \
                     'storageTierLevel,osType,staasVersion,' \
                     'hasEncryptionAtRest,snapshotCapacityGb,schedules,' \
                     'intervalSchedule,hourlySchedule,dailySchedule,' \
                     'weeklySchedule,storageType[keyName],provisionedIops'
        block_volume = self.get_volume_details(volume_id, mask=block_mask)

        storage_class = storage_utils.block_or_file(
            block_volume['storageType']['keyName'])

        order = storage_utils.prepare_replicant_order_object(
            self, snapshot_schedule, location, tier, block_volume,
            storage_class)

        if storage_class == 'block':
            if os_type is None:
                if isinstance(utils.lookup(block_volume, 'osType', 'keyName'),
                              str):
                    os_type = block_volume['osType']['keyName']
                else:
                    raise exceptions.SoftLayerError(
                        "Cannot find primary volume's os-type "
                        "automatically; must specify manually")
            order['osFormatType'] = {'keyName': os_type}

        return self.client.call('Product_Order', 'placeOrder', order)
Пример #4
0
    def order_replicant_volume(self, volume_id, snapshot_schedule,
                               location, tier=None, os_type=None):
        """Places an order for a replicant block volume.

        :param volume_id: The ID of the primary volume to be replicated
        :param snapshot_schedule: The primary volume's snapshot
                                  schedule to use for replication
        :param location: The location for the ordered replicant volume
        :param tier: The tier (IOPS per GB) of the primary volume
        :param os_type: The OS type of the primary volume
        :return: Returns a SoftLayer_Container_Product_Order_Receipt
        """

        block_mask = 'billingItem[activeChildren,hourlyFlag],'\
                     'storageTierLevel,osType,staasVersion,'\
                     'hasEncryptionAtRest,snapshotCapacityGb,schedules,'\
                     'intervalSchedule,hourlySchedule,dailySchedule,'\
                     'weeklySchedule,storageType[keyName],provisionedIops'
        block_volume = self.get_block_volume_details(volume_id,
                                                     mask=block_mask)

        if os_type is None:
            if isinstance(utils.lookup(block_volume, 'osType', 'keyName'),
                          str):
                os_type = block_volume['osType']['keyName']
            else:
                raise exceptions.SoftLayerError(
                    "Cannot find primary volume's os-type "
                    "automatically; must specify manually")

        order = storage_utils.prepare_replicant_order_object(
            self, snapshot_schedule, location, tier, block_volume, 'block'
        )

        order['osFormatType'] = {'keyName': os_type}

        return self.client.call('Product_Order', 'placeOrder', order)