Scalr\Service\Aws\Ec2\V20150415\Ec2Api::describeInstanceAttribute PHP Method

describeInstanceAttribute() public method

Describes an attribute of the specified instance
public describeInstanceAttribute ( string $instanceId, Scalr\Service\Aws\Ec2\DataType\InstanceAttributeType $attribute ) : mixed
$instanceId string The ID of the Instance.
$attribute Scalr\Service\Aws\Ec2\DataType\InstanceAttributeType The attribute.
return mixed Returns attribute value. It may be scalar value or stdClass object depends on attribute.
    public function describeInstanceAttribute($instanceId, InstanceAttributeType $attribute)
    {
        $result = null;
        $options = ['InstanceId' => (string) $instanceId, 'Attribute' => (string) $attribute];
        $action = ucfirst(__FUNCTION__);
        $response = $this->client->call($action, $options);
        if ($response->getError() === false) {
            $sxml = simplexml_load_string($response->getRawContent());
            $response = null;
            $ptr = $sxml->{$options['Attribute']};
            switch ($options['Attribute']) {
                case InstanceAttributeType::TYPE_EBS_OPTIMIZED:
                case InstanceAttributeType::TYPE_SOURCE_DEST_CHECK:
                case InstanceAttributeType::TYPE_DISABLE_API_TERMINATION:
                    $result = (string) $ptr->value == 'true';
                    break;
                case InstanceAttributeType::TYPE_INSTANCE_TYPE:
                case InstanceAttributeType::TYPE_KERNEL:
                case InstanceAttributeType::TYPE_RAMDISK:
                case InstanceAttributeType::TYPE_USER_DATA:
                case InstanceAttributeType::TYPE_INSTANCE_INITIATED_SHUTDOWN_BEHAVIOR:
                case InstanceAttributeType::TYPE_ROOT_DEVICE_NAME:
                case InstanceAttributeType::TYPE_SRIOV_NET_SUPPORT:
                    $result = (string) $ptr->value;
                    break;
                case InstanceAttributeType::TYPE_BLOCK_DEVICE_MAPPING:
                    $result = $this->_loadInstanceBlockDeviceMappingResponseList($ptr);
                    break;
                case InstanceAttributeType::TYPE_GROUP_SET:
                    $result = $this->_loadGroupList($ptr);
                    break;
                case InstanceAttributeType::TYPE_PRODUCT_CODES:
                    $result = $this->_loadProductCodeSetList($ptr);
                    break;
                default:
                    throw new \InvalidArgumentException(sprintf('Unexpected attribute "%s" in %s call', $options['Attribute'], $action));
            }
        }
        return $result;
    }
Ec2Api