예제 #1
0
    def test_AssociateAddress(self):
        self.cluster_manager.elasticip.user.assign.return_value = None
        self.cluster_manager.elasticip.user.list.return_value = [
            {'ip_id': 1,'vm_id': 1, 'ip': '1.1.0.1'},
            {'ip_id': 2,'vm_id': None, 'ip': '1.1.0.2'},
        ]

        action = Action({
            'Action': 'AssociateAddress',
            'InstanceId': 2,
            'PublicIp': '1.1.0.2',
        }, self.cluster_manager)
        response = action.execute()

        self.assertMultiLineEqual(
            response,
            """<?xml version="1.0" encoding="UTF-8"?>
            <AssociateAddressResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
              <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
              <return>true</return>
            </AssociateAddressResponse>
            """
        )

        with self.assertRaises(AuthFailure):
            action = Action({
                'Action': 'AssociateAddress',
                'InstanceId': 2,
                'PublicIp': '1.1.0.3'
            }, self.cluster_manager)
            response = action.execute()
예제 #2
0
    def test_DescribeAddresses(self):
        self.cluster_manager.elasticip.user.list.return_value = [
            {'vm_id': 1, 'ip': '192.168.0.1'},
            {'vm_id': None, 'ip': '192.168.0.2'},
        ]

        action = Action({'Action': 'DescribeAddresses'}, self.cluster_manager)
        response = action.execute()

        self.assertMultiLineEqual(
            response,
            """<?xml version="1.0" encoding="UTF-8"?>
            <DescribeAddressesResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
              <requestId>a13c7c2e-4106-459d-a728-9d38bcbab9bf</requestId>
              <addressesSet>
                <item>
                  <publicIp>192.168.0.1</publicIp>
                  <domain>standard</domain>
                  <instanceId>1</instanceId>
                </item>
                <item>
                  <publicIp>192.168.0.2</publicIp>
                  <domain>standard</domain>
                  <instanceId>None</instanceId>
                </item>
              </addressesSet>
            </DescribeAddressesResponse>
            """
        )
예제 #3
0
파일: image_test.py 프로젝트: cc1-cloud/cc1
    def test_DescribeImages(self):
        self.cluster_manager.image.user.list.side_effect = [
            [{
                'description': 'Fake image 01.',
                'id': 123,
                'name': 'image 01',
                'platform': 2,
                'state': 0,
                'user_id': 1,

            }],
            [{
                'description': 'Fake image 02.',
                'id': 456,
                'name': 'image 02',
                'platform': 2,
                'state': 0,
                'user_id': 1,
            }],

        ]
        action = Action({'Action': 'DescribeImages'}, self.cluster_manager)
        response = action.execute()

        self.assertMultiLineEqual(
            response,
            """<?xml version="1.0" encoding="UTF-8"?>
            <DescribeImagesResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
              <requestId>833f0802-7b29-4641-b953-6f6b78908b22</requestId>
              <imagesSet>
                <item>
                  <architecture>x86_64</architecture>
                  <description>Fake image 01.</description>
                  <imageId>123</imageId>
                  <imageLocation>ami-123</imageLocation>
                  <imageState>available</imageState>
                  <imageOwnerId>1</imageOwnerId>
                  <isPublic>false</isPublic>
                  <name>image 01</name>
                  <platform></platform>
                </item>
                <item>
                  <architecture>x86_64</architecture>
                  <description>Fake image 02.</description>
                  <imageId>456</imageId>
                  <imageLocation>ami-456</imageLocation>
                  <imageState>available</imageState>
                  <imageOwnerId>1</imageOwnerId>
                  <isPublic>true</isPublic>
                  <name>image 02</name>
                  <platform></platform>
                </item>
              </imagesSet>
            </DescribeImagesResponse>
            """
        )
예제 #4
0
    def test_DescribeImages(self):
        self.cluster_manager.image.user.list.side_effect = [
            [{
                'description': 'Fake image 01.',
                'id': 123,
                'name': 'image 01',
                'platform': 2,
                'state': 0,
                'user_id': 1,
            }],
            [{
                'description': 'Fake image 02.',
                'id': 456,
                'name': 'image 02',
                'platform': 2,
                'state': 0,
                'user_id': 1,
            }],
        ]
        action = Action({'Action': 'DescribeImages'}, self.cluster_manager)
        response = action.execute()

        self.assertMultiLineEqual(
            response, """<?xml version="1.0" encoding="UTF-8"?>
            <DescribeImagesResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
              <requestId>833f0802-7b29-4641-b953-6f6b78908b22</requestId>
              <imagesSet>
                <item>
                  <architecture>x86_64</architecture>
                  <description>Fake image 01.</description>
                  <imageId>123</imageId>
                  <imageLocation>ami-123</imageLocation>
                  <imageState>available</imageState>
                  <imageOwnerId>1</imageOwnerId>
                  <isPublic>false</isPublic>
                  <name>image 01</name>
                  <platform></platform>
                </item>
                <item>
                  <architecture>x86_64</architecture>
                  <description>Fake image 02.</description>
                  <imageId>456</imageId>
                  <imageLocation>ami-456</imageLocation>
                  <imageState>available</imageState>
                  <imageOwnerId>1</imageOwnerId>
                  <isPublic>true</isPublic>
                  <name>image 02</name>
                  <platform></platform>
                </item>
              </imagesSet>
            </DescribeImagesResponse>
            """)
예제 #5
0
    def test_AllocateAddresses(self):
        self.cluster_manager.elasticip.user.request.return_value = {
            'ip': '1.1.0.1',
        }

        action = Action({'Action': 'AllocateAddress'}, self.cluster_manager)
        response = action.execute()

        self.assertMultiLineEqual(
            response,
            """<?xml version="1.0" encoding="UTF-8"?>
            <AllocateAddressResponse xmlns="http://ec2.amazonaws.com/doc/2012-03-01/">
               <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
               <publicIp>1.1.0.1</publicIp>
               <domain>standard</domain>
            </AllocateAddressResponse>
            """
        )
예제 #6
0
    # ============================ END OF S3 =================================

    cloud_manager = CloudManager(
        CLM_ADDRESS,
        aws_key=parameters.get('AWSAccessKeyId'),
        parameters=parameters,
        signature=parameters.get('Signature'),
    )
    cluster_manager_name = environ['HTTP_HOST'].split('.')[0]
    cluster_manager = cloud_manager.get_cluster_manager(
        by_name=cluster_manager_name)
    try:
        if not cluster_manager:
            raise InvalidZone.NotFound(zone_name=cluster_manager_name)
        action = Action(parameters, cluster_manager)
        response = action.execute()
        start_response('200 OK', [('Content-Type', 'text/xml;charset=UTF-8')])
    except EC2Exception, error:
        http_code = '400 Bad Request'
        if isinstance(error, AuthFailure):
            http_code = '401 Unauthorized'
        response = error.to_xml()
        start_response(http_code, [('Content-Type', 'text/xml;charset=UTF-8')])
    # TODO:
    #   * respect 'Accept-Encoding' HTTP header, i.e. gzip response, etc.
    return validate(response)


def application(environ, start_response):
    try:
        return _application(environ, start_response)
예제 #7
0
파일: main.py 프로젝트: cc1-cloud/cc1
    cloud_manager = CloudManager(
        CLM_ADDRESS,
        aws_key=parameters.get('AWSAccessKeyId'),
        parameters=parameters,
        signature=parameters.get('Signature'),
    )
    cluster_manager_name = environ['HTTP_HOST'].split('.')[0]
    cluster_manager = cloud_manager.get_cluster_manager(
        by_name=cluster_manager_name
    )
    try:
        if not cluster_manager:
            raise InvalidZone.NotFound(zone_name=cluster_manager_name)
        action = Action(parameters, cluster_manager)
        response = action.execute()
        start_response('200 OK', [('Content-Type', 'text/xml;charset=UTF-8')])
    except EC2Exception, error:
        http_code = '400 Bad Request'
        if isinstance(error, AuthFailure):
            http_code = '401 Unauthorized'
        response = error.to_xml()
        start_response(http_code, [('Content-Type', 'text/xml;charset=UTF-8')])
    # TODO:
    #   * respect 'Accept-Encoding' HTTP header, i.e. gzip response, etc.
    return validate(response)


def application(environ, start_response):
    try:
        return _application(environ, start_response)