def set_power_status(clients, options):
    logging.info("setting power status for VM " + options["--plug"] + " to " +
                 options["--action"])

    if clients:
        compute_client = clients[0]
        rgName = options["--resourceGroup"]
        vmName = options["--plug"]

        if "--network-fencing" in options:
            network_client = clients[1]

            if (options["--action"] == "off"):
                logging.info("Fencing network for " + vmName)
                azure_fence.set_network_state(compute_client, network_client,
                                              rgName, vmName, "block")
            elif (options["--action"] == "on"):
                logging.info("Unfencing network for " + vmName)
                azure_fence.set_network_state(compute_client, network_client,
                                              rgName, vmName, "unblock")

        if (options["--action"] == "off"):
            logging.info("Deallocating " + vmName + " in resource group " +
                         rgName)
            compute_client.virtual_machines.deallocate(rgName, vmName)
        elif (options["--action"] == "on"):
            logging.info("Starting " + vmName + " in resource group " + rgName)
            compute_client.virtual_machines.start(rgName, vmName)
Example #2
0
def set_power_status(clients, options):
    logging.info("setting power status for VM " + options["--plug"] + " to " + options["--action"])

    if clients:
        compute_client = clients[0]
        rgName = options["--resourceGroup"]
        vmName = options["--plug"]

        if "--network-fencing" in options:
            network_client = clients[1]

            if (options["--action"]=="off"):
                logging.info("Fencing network for " + vmName)
                azure_fence.set_network_state(compute_client, network_client, rgName, vmName, "block")
            elif (options["--action"]=="on"):
                logging.info("Unfencing network for " + vmName)
                azure_fence.set_network_state(compute_client, network_client, rgName, vmName, "unblock")

        if (options["--action"]=="off"):
            logging.info("Poweroff " + vmName + " in resource group " + rgName)
            try:
                # try new API version first
                compute_client.virtual_machines.begin_power_off(rgName, vmName, skip_shutdown=True)
            except AttributeError:
                # use older API verson if it fails
                logging.debug("Poweroff " + vmName + " did not work via 'virtual_machines.begin_power_off. Trying virtual_machines.power_off'.")
                compute_client.virtual_machines.power_off(rgName, vmName, skip_shutdown=True)
        elif (options["--action"]=="on"):
            logging.info("Starting " + vmName + " in resource group " + rgName)
            try:
                # try new API version first
                compute_client.virtual_machines.begin_start(rgName, vmName)
            except AttributeError:
                # use older API verson if it fails
                logging.debug("Starting " + vmName + " did not work via 'virtual_machines.begin_start. Trying virtual_machines.start'.")
                compute_client.virtual_machines.start(rgName, vmName)