База знаний
Пример работы с API CloudServer, что и как?
Опубликовано Евгений Точилин on 26 August 2013 11:30:28

Для работы с API CloudServer Вам потребуется знать Ваш API-ключ, а также секретный ключ для подписи запросов. Найти их можно в панели услуги CloudServer в биллинге.


Работу с API рассмотрим применимо к задаче перезапуска сервера (для написания скрипта будем использовать язык программирования Python 2.6).
Список доступных команд можно найти по следующему адресу: API команды CloudServer

Ниже приведен код скрипта с комментариями:

 

#! /usr/bin/env python

import hmac
import json
import base64
import urllib
import urllib2
import hashlib

api_url = 'https://cc.activecloud.com/client/api'  # адрес API, куда будет отправляться запрос
secret = '<your_secret_key>'  # Ваш секретный ключ (secretkey)
apikey = '<your_api_key>'  # Ваш API-ключ (apikey)

# Базовый класс CloudServer
class CloudServer(object):

    def __init__(self, api_url, apikey, secret):
        self.api_url = api_url
        self.apikey = apikey
        self.secret = secret

    def request(self, args):
        args['apiKey'] = self.apikey
        params = []

        # сортируем параметры запроса
        keys = sorted(args.keys())
        for k in keys:
            params.append(k + '=' + urllib.quote_plus(args[k]))

        # создаем подпись запроса
        query = '&'.join(params)
        digest = hmac.new(
            self.secret, msg=query.lower(), digestmod=hashlib.sha1).digest()
                          # формируем сигнатуру, подписываясь секретным ключом
        signature = base64.b64encode(
            digest)  # кодируем подпись алгоритмом base64

        # формируем url-запрос
        query += '&signature=' + urllib.quote_plus(signature)
        self.value = self.api_url + '?' + query

        # получаем ответ от сервера
        response = urllib2.urlopen(self.value)
        self.decoded = json.loads(response.read())

 

 

# выполняем команду rebootVirtualMachine
request = {'command': 'rebootVirtualMachine',
           'id': 'XXXX', 'response': 'json'}
    # XXXX - ID виртуальной машины в облаке CloudServer (смотрите в описании
    # сервера параметр ID)
api = CloudServer(api_url, apikey, secret)
api.request(request)
print api.decoded

(0 голос(а))
Эта статья помогла
Эта статья не помогла