Exemplo n.º 1
0
 def _to_image(self, element):
     n = NodeImage(id=findtext(element=element,
                               xpath='imageId',
                               namespace=NAMESPACE),
                   name=findtext(element=element,
                                 xpath='imageLocation',
                                 namespace=NAMESPACE),
                   driver=self.connection.driver,
                   extra={
                       'state':
                       findattr(element=element,
                                xpath="imageState",
                                namespace=NAMESPACE),
                       'ownerid':
                       findattr(element=element,
                                xpath="imageOwnerId",
                                namespace=NAMESPACE),
                       'owneralias':
                       findattr(element=element,
                                xpath="imageOwnerAlias",
                                namespace=NAMESPACE),
                       'ispublic':
                       findattr(element=element,
                                xpath="isPublic",
                                namespace=NAMESPACE),
                       'architecture':
                       findattr(element=element,
                                xpath="architecture",
                                namespace=NAMESPACE),
                       'imagetype':
                       findattr(element=element,
                                xpath="imageType",
                                namespace=NAMESPACE),
                       'platform':
                       findattr(element=element,
                                xpath="platform",
                                namespace=NAMESPACE),
                       'rootdevicetype':
                       findattr(element=element,
                                xpath="rootDeviceType",
                                namespace=NAMESPACE),
                       'virtualizationtype':
                       findattr(element=element,
                                xpath="virtualizationType",
                                namespace=NAMESPACE),
                       'hypervisor':
                       findattr(element=element,
                                xpath="hypervisor",
                                namespace=NAMESPACE)
                   })
     return n
Exemplo n.º 2
0
 def _to_image(self, element):
     n = NodeImage(id=findtext(element=element, xpath='imageId',
                               namespace=NAMESPACE),
                   name=findtext(element=element, xpath='imageLocation',
                                 namespace=NAMESPACE),
                   driver=self.connection.driver,
                   extra={
                       'state': findattr(element=element,
                                         xpath="imageState",
                                         namespace=NAMESPACE),
                       'ownerid': findattr(element=element,
                                     xpath="imageOwnerId",
                                     namespace=NAMESPACE),
                       'owneralias': findattr(element=element,
                                     xpath="imageOwnerAlias",
                                     namespace=NAMESPACE),
                       'ispublic': findattr(element=element,
                                     xpath="isPublic",
                                     namespace=NAMESPACE),
                       'architecture': findattr(element=element,
                                     xpath="architecture",
                                     namespace=NAMESPACE),
                       'imagetype': findattr(element=element,
                                     xpath="imageType",
                                     namespace=NAMESPACE),
                       'platform': findattr(element=element,
                                     xpath="platform",
                                     namespace=NAMESPACE),
                       'rootdevicetype': findattr(element=element,
                                     xpath="rootDeviceType",
                                     namespace=NAMESPACE),
                       'virtualizationtype': findattr(element=element,
                                     xpath="virtualizationType",
                                     namespace=NAMESPACE),
                       'hypervisor': findattr(element=element,
                                     xpath="hypervisor",
                                     namespace=NAMESPACE)
                   }
     )
     return n
Exemplo n.º 3
0
    def ex_describe_keypairs(self, name):
        """Describes a keypiar by name

        @note: This is a non-standard extension API, and only works for EC2.

        @type name: C{str}
        @param name: The name of the keypair to describe.

        """

        params = {'Action': 'DescribeKeyPairs', 'KeyName.1': name}

        response = self.connection.request(self.path, params=params).object
        key_name = findattr(element=response,
                            xpath='keySet/item/keyName',
                            namespace=NAMESPACE)
        return {'keyName': key_name}
Exemplo n.º 4
0
    def ex_describe_keypairs(self, name):
        """Describes a keypair by name

        @note: This is a non-standard extension API, and only works for EC2.

        @type name: C{str}
        @param name: The name of the keypair to describe.

        """

        params = {'Action': 'DescribeKeyPairs',
                  'KeyName.1': name
        }

        response = self.connection.request(self.path, params=params).object
        key_name = findattr(element=response, xpath='keySet/item/keyName',
                            namespace=NAMESPACE)
        return {
            'keyName': key_name
        }
Exemplo n.º 5
0
    def _to_node(self, element, groups=None):
        try:
            state = self.NODE_STATE_MAP[
                    findattr(element=element, xpath="instanceState/name",
                             namespace=NAMESPACE)
            ]
        except KeyError:
            state = NodeState.UNKNOWN

        instance_id = findtext(element=element, xpath='instanceId',
                               namespace=NAMESPACE)
        tags = dict((findtext(element=item, xpath='key', namespace=NAMESPACE),
                     findtext(element=item, xpath='value',
                              namespace=NAMESPACE))
        for item in findall(element=element, xpath='tagSet/item',
                            namespace=NAMESPACE))

        name = tags.get('Name', instance_id)

        n = Node(
            id=findtext(element=element, xpath='instanceId',
                        namespace=NAMESPACE),
            name=name,
            state=state,
            public_ip=[findtext(element=element, xpath='ipAddress',
                                namespace=NAMESPACE)],
            private_ip=[findtext(element=element, xpath='privateIpAddress',
                                 namespace=NAMESPACE)],
            driver=self.connection.driver,
            extra={
                'dns_name': findattr(element=element, xpath="dnsName",
                                     namespace=NAMESPACE),
                'instanceId': findattr(element=element, xpath="instanceId",
                                       namespace=NAMESPACE),
                'imageId': findattr(element=element, xpath="imageId",
                                    namespace=NAMESPACE),
                'private_dns': findattr(element=element,
                                        xpath="privateDnsName",
                                        namespace=NAMESPACE),
                'status': findattr(element=element, xpath="instanceState/name",
                                   namespace=NAMESPACE),
                'keyname': findattr(element=element, xpath="keyName",
                                    namespace=NAMESPACE),
                'launchindex': findattr(element=element,
                                        xpath="amiLaunchIndex",
                                        namespace=NAMESPACE),
                'productcode':
                    [p.text for p in findall(element=element,
                                    xpath="productCodesSet/item/productCode",
                                    namespace=NAMESPACE
                    )],
                'instancetype': findattr(element=element, xpath="instanceType",
                                         namespace=NAMESPACE),
                'launchdatetime': findattr(element=element, xpath="launchTime",
                                           namespace=NAMESPACE),
                'availability': findattr(element,
                                         xpath="placement/availabilityZone",
                                         namespace=NAMESPACE),
                'kernelid': findattr(element=element, xpath="kernelId",
                                     namespace=NAMESPACE),
                'ramdiskid': findattr(element=element, xpath="ramdiskId",
                                      namespace=NAMESPACE),
                'clienttoken': findattr(element=element, xpath="clientToken",
                                        namespace=NAMESPACE),
                'groups': groups,
                'tags': tags
            }
        )
        return n
Exemplo n.º 6
0
    def _to_node(self, element, groups=None):
        try:
            state = self.NODE_STATE_MAP[
                    findattr(element=element, xpath="instanceState/name",
                             namespace=NAMESPACE)
            ]
        except KeyError:
            state = NodeState.UNKNOWN

        instance_id = findtext(element=element, xpath='instanceId',
                               namespace=NAMESPACE)
        tags = dict((findtext(element=item, xpath='key', namespace=NAMESPACE),
                     findtext(element=item, xpath='value',
                              namespace=NAMESPACE))
        for item in findall(element=element, xpath='tagSet/item',
                            namespace=NAMESPACE))

        name = tags.get('Name', instance_id)

        public_ip = findtext(element=element, xpath='ipAddress',
                              namespace=NAMESPACE)
        public_ips = [public_ip] if public_ip else []
        private_ip = findtext(element=element, xpath='privateIpAddress',
                                 namespace=NAMESPACE)
        private_ips = [private_ip] if private_ip else []

        n = Node(
            id=findtext(element=element, xpath='instanceId',
                        namespace=NAMESPACE),
            name=name,
            state=state,
            public_ips=public_ips,
            private_ips=private_ips,
            driver=self.connection.driver,
            extra={
                'dns_name': findattr(element=element, xpath="dnsName",
                                     namespace=NAMESPACE),
                'instanceId': findattr(element=element, xpath="instanceId",
                                       namespace=NAMESPACE),
                'imageId': findattr(element=element, xpath="imageId",
                                    namespace=NAMESPACE),
                'private_dns': findattr(element=element,
                                        xpath="privateDnsName",
                                        namespace=NAMESPACE),
                'status': findattr(element=element, xpath="instanceState/name",
                                   namespace=NAMESPACE),
                'keyname': findattr(element=element, xpath="keyName",
                                    namespace=NAMESPACE),
                'launchindex': findattr(element=element,
                                        xpath="amiLaunchIndex",
                                        namespace=NAMESPACE),
                'productcode':
                    [p.text for p in findall(element=element,
                                    xpath="productCodesSet/item/productCode",
                                    namespace=NAMESPACE
                    )],
                'instancetype': findattr(element=element, xpath="instanceType",
                                         namespace=NAMESPACE),
                'launchdatetime': findattr(element=element, xpath="launchTime",
                                           namespace=NAMESPACE),
                'availability': findattr(element,
                                         xpath="placement/availabilityZone",
                                         namespace=NAMESPACE),
                'kernelid': findattr(element=element, xpath="kernelId",
                                     namespace=NAMESPACE),
                'ramdiskid': findattr(element=element, xpath="ramdiskId",
                                      namespace=NAMESPACE),
                'clienttoken': findattr(element=element, xpath="clientToken",
                                        namespace=NAMESPACE),
                'groups': groups,
                'tags': tags
            }
        )
        return n