def UnbindIp(self, *args, **kwargs): kwargs["UnbindIp"]["note"] = default_note ins_id = kwargs["UnbindIp"]["instanceId"] ipaddr = kwargs["UnbindIp"]["ip"] kwargs["UnbindIp"]["timestamp"] = wic_utils.get_timestamp() kwargs["UnbindIp"]["result"] = self.floating_ip_remove(ins_id, ipaddr) return kwargs
def DelSecurityGroup(self, **kwargs): kwargs["DelSecurityGroup"]["note"] = default_note kwargs["DelSecurityGroup"]["timestamp"] = wic_utils.get_timestamp() secgroup_name = kwargs["DelSecurityGroup"]["groupName"] all_secgroups = self._secgroup_show() for secgroup in all_secgroups['security_groups']: if secgroup['name'] == secgroup_name: secgroup_id = secgroup['id'] try: self.client.security_groups.delete(secgroup_id) kwargs["DelSecurityGroup"]["result"] = WIC_RES_SUCCESS return kwargs except novaclient.exceptions.BadRequest: kwargs["DelSecurityGroup"]["result"] = WIC_RES_FAILED kwargs["DelSecurityGroup"]["note"] = 'groupName in use' return kwargs except novaclient.exceptions.NotFound: kwargs["DelSecurityGroup"]["result"] = WIC_RES_FAILED kwargs["DelSecurityGroup"]["note"] = 'groupName not found' return kwargs except: kwargs["DelSecurityGroup"]["result"] = WIC_RES_FAILED kwargs["DelSecurityGroup"]["note"] = 'error' return kwargs kwargs["DelSecurityGroup"]["result"] = WIC_RES_FAILED kwargs["DelSecurityGroup"]["note"] = 'groupName not found' return kwargs
def CreateDisk(self, **kwargs): volume = None try: size = kwargs.get('size', None) if not size: raise Exception('size can not be blank') size = int(size.strip()) if not size > 0: raise Exception('size should be >= 1') display_name = 'vol_%s' % kwargs.get('transactionId', None) volume = self.volume_client.volumes.create(size, display_name=display_name) self._wait_volume_ready(volume.id) if 'instanceId' in kwargs.keys(): if kwargs['instanceId']: instance = self.client.servers.get(kwargs['instanceId']) self.client.volumes.create_server_volume(instance.id, volume.id, None) self._wait_volume_ready(volume.id, status='in-use') time.sleep(default_sleep_time * DEFAULT_MULTI) del kwargs['instanceId'] volume = self.volume_client.volumes.get(volume.id) kwargs['volumeId'] = volume.id kwargs['snapshotId'] = '' kwargs['zone'] = '' kwargs['status'] = volume.status kwargs['volumeType'] = '' kwargs['createTime'] = wic_utils.get_timestamp() kwargs['note'] = default_note kwargs['result'] = WIC_RES_SUCCESS except Exception, e: kwargs['note'] = e.message kwargs['result'] = WIC_RES_FAILED if volume: volume.delete() volume = None
def wic_instance_delete(self, *args, **kwargs): if not kwargs.has_key("instanceId") or not kwargs["instanceId"]: kwargs["result"] = WIC_RES_FAILED return kwargs ins_id = kwargs["instanceId"] kwargs["timestamp"] = wic_utils.get_timestamp() kwargs["result"] = self.instance_delete(ins_id) return kwargs
def ApplyIp(self, *args, **kwargs): kwargs["ApplyIp"]["note"] = default_note kwargs["ApplyIp"]["timestamp"] = wic_utils.get_timestamp() if kwargs["ApplyIp"]["type"] == 1 or kwargs["ApplyIp"]["type"] == str(1): kwargs["ApplyIp"]["result"], kwargs["ApplyIp"]["ip"] = self.floating_ip_create() if kwargs["ApplyIp"]["type"] == 2 or kwargs["ApplyIp"]["type"] == str(2): kwargs["ApplyIp"] = self.floating_ip_delete(kwargs["ApplyIp"]["ip"]) return kwargs
def wic_volume_create(self, *args, **kwargs): if not kwargs.has_key("disk") or not kwargs["disk"]: kwargs["result"] = WIC_RES_FAILED return kwargs size = kwargs["disk"] kwargs["timestamp"] = wic_utils.get_timestamp() kwargs["result"], kwargs["volumeId"] = self.volume_create(size) return kwargs
def CreateDisk(self, *args, **kwargs): if not "size" in kwargs["CreateDisk"].keys() or not kwargs["CreateDisk"]["size"]: kwargs["CreateDisk"]["result"] = WIC_RES_FAILED return kwargs size = kwargs["CreateDisk"]["size"] kwargs["CreateDisk"]["timestamp"] = wic_utils.get_timestamp() kwargs["CreateDisk"]["result"], kwargs["CreateDisk"]["volumeId"] = self.volume_create(size) return kwargs
def wic_secgroup_show(self, *args, **kwargs): kwargs["result"] = WIC_RES_FAILED kwargs["timestamp"] = wic_utils.get_timestamp() secgroup_name = kwargs["groupName"] all_secgroups = self.secgroup_show() for secgroup in all_secgroups['security_groups']: if secgroup['name'] == secgroup_name: kwargs["result"] = WIC_RES_SUCCESS return kwargs
def wic_volume_dettach(self, *args, **kwargs): if not kwargs.has_key("instanceId") or not kwargs["instanceId"] or \ not kwargs.has_key("volumeId") or not kwargs["volumeId"]: kwargs["result"] = WIC_RES_FAILED return kwargs ins_id = kwargs["instanceId"] volume_id = kwargs["volumeId"] kwargs["timestamp"] = wic_utils.get_timestamp() kwargs["result"] = self.volume_dettach(ins_id, volume_id) return kwargs
def CreateDisk(self, *args, **kwargs): if not "size" in kwargs["CreateDisk"].keys( ) or not kwargs["CreateDisk"]["size"]: kwargs["CreateDisk"]["result"] = WIC_RES_FAILED return kwargs size = kwargs["CreateDisk"]["size"] kwargs["CreateDisk"]["timestamp"] = wic_utils.get_timestamp() kwargs["CreateDisk"]["result"], kwargs["CreateDisk"][ "volumeId"] = self.volume_create(size) return kwargs
def wic_floating_ip_add(self, *args, **kwargs): if not kwargs.has_key("instanceId") or not kwargs["instanceId"] or \ not kwargs.has_key("ip") or not kwargs["ip"]: kwargs["result"] = WIC_RES_FAILED return kwargs ins_id = kwargs["instanceId"] ipaddr = kwargs["ip"] kwargs["timestamp"] = wic_utils.get_timestamp() kwargs["result"] = self.floating_ip_add(ins_id, ipaddr) return kwargs
def DescribeSecurityGroup(self, *args, **kwargs): kwargs["DescribeSecurityGroup"]["note"] = default_note kwargs["DescribeSecurityGroup"]["timestamp"] = wic_utils.get_timestamp() secgroup_name = kwargs["DescribeSecurityGroup"]["groupName"] all_secgroups = self._secgroup_show() for secgroup in all_secgroups['security_groups']: if secgroup['name'] == secgroup_name: kwargs["DescribeSecurityGroup"]["result"] = WIC_RES_SUCCESS return kwargs kwargs["DescribeSecurityGroup"]["note"] = 'groupName not found' kwargs["DescribeSecurityGroup"]["result"] = WIC_RES_FAILED return kwargs
def ApplyIp(self, *args, **kwargs): kwargs["ApplyIp"]["note"] = default_note kwargs["ApplyIp"]["timestamp"] = wic_utils.get_timestamp() if kwargs["ApplyIp"]["type"] == 1 or kwargs["ApplyIp"]["type"] == str( 1): kwargs["ApplyIp"]["result"], kwargs["ApplyIp"][ "ip"] = self.floating_ip_create() if kwargs["ApplyIp"]["type"] == 2 or kwargs["ApplyIp"]["type"] == str( 2): kwargs["ApplyIp"] = self.floating_ip_delete( kwargs["ApplyIp"]["ip"]) return kwargs
def BindIp(self, *args, **kwargs): kwargs["BindIp"]["note"] = default_note if not "instanceId" in kwargs["BindIp"].keys() or not kwargs["BindIp"]["instanceId"] or \ not "ip" in kwargs["BindIp"].keys() or not kwargs["BindIp"]["ip"]: kwargs["BindIp"]["result"] = WIC_RES_FAILED kwargs["BindIp"]["note"] = 'BindIp error, please check instanceId, ip' return kwargs ins_id = kwargs["BindIp"]["instanceId"] ipaddr = kwargs["BindIp"]["ip"] kwargs["BindIp"]["timestamp"] = wic_utils.get_timestamp() kwargs["BindIp"]["result"], kwargs["BindIp"]["note"] = self.floating_ip_add(ins_id, ipaddr) return kwargs
def BindDisk(self, *args, **kwargs): if not "instanceId" in kwargs["BindDisk"].keys() or not kwargs["BindDisk"]["instanceId"] or \ not "volumeId" in kwargs["BindDisk"].keys() or not kwargs["BindDisk"]["volumeId"]: kwargs["BindDisk"]["result"] = WIC_RES_FAILED return kwargs kwargs["BindDisk"]["note"] = default_note ins_id = kwargs["BindDisk"]["instanceId"] volume_id = kwargs["BindDisk"]["volumeId"] kwargs["BindDisk"]["timestamp"] = wic_utils.get_timestamp() if kwargs["BindDisk"]["type"] == 1 or kwargs["BindDisk"][ "type"] == str(1): kwargs["BindDisk"]["result"] = self.auto_volume_attach( ins_id, volume_id) if kwargs["BindDisk"]["result"] == WIC_RES_FAILED: kwargs["BindDisk"]["note"] = "can not find volume id" return kwargs kwargs["BindDisk"]["result"] = self.waiting_volume_attached( volume_id) elif kwargs["BindDisk"]["type"] == 2 or kwargs["BindDisk"][ "type"] == str(2): kwargs["BindDisk"]["result"] = self.volume_dettach( ins_id, volume_id) if kwargs["BindDisk"]["result"] == WIC_RES_FAILED: kwargs["BindDisk"]["note"] = "can not find volume id" return kwargs kwargs["BindDisk"]["result"] = self.waiting_volume_detached( volume_id) if kwargs["BindDisk"]["result"] == WIC_RES_FAILED: kwargs["BindDisk"]["note"] = "failed detahced" return kwargs wic_utils.delete_device_location(ins_id, volume_id) if disk_hotplug == False: res, status = self.instance_show(ins_id) print status if status == "PAUSED": time.sleep(1) kwargs["BindDisk"]["result"] = self.instance_unpause( ins_id) kwargs["BindDisk"]["result"] = self.waiting_ins_ready( ins_id) kwargs["BindDisk"]["result"] = self.instance_reboot(ins_id) kwargs["BindDisk"]["result"] = self.waiting_ins_ready( ins_id) kwargs["BindDisk"]["result"] = self.instance_pause(ins_id) kwargs["BindDisk"]["result"] = self.waiting_ins_ready( ins_id) else: time.sleep(1) kwargs["BindDisk"]["result"] = self.instance_reboot(ins_id) kwargs["BindDisk"]["result"] = self.waiting_ins_ready( ins_id) return kwargs
def DescribeSecurityGroup(self, *args, **kwargs): kwargs["DescribeSecurityGroup"]["note"] = default_note kwargs["DescribeSecurityGroup"]["timestamp"] = wic_utils.get_timestamp( ) secgroup_name = kwargs["DescribeSecurityGroup"]["groupName"] all_secgroups = self._secgroup_show() for secgroup in all_secgroups['security_groups']: if secgroup['name'] == secgroup_name: kwargs["DescribeSecurityGroup"]["result"] = WIC_RES_SUCCESS return kwargs kwargs["DescribeSecurityGroup"]["note"] = 'groupName not found' kwargs["DescribeSecurityGroup"]["result"] = WIC_RES_FAILED return kwargs
def CreateUser(self, *args, **kwargs): if not kwargs["CreateUser"]["userName"]: return WIC_RES_FAILED username = kwargs["CreateUser"]["userName"] if not "instanceId" in kwargs["CreateUser"].keys(): kwargs["CreateUser"]["password"] = default_password password = kwargs["CreateUser"]["password"] if not kwargs.has_key("email"): kwargs["CreateUser"]["email"] = default_email email = kwargs["CreateUser"]["email"] tenantId = self.tenant_id kwargs["CreateUser"]["timestamp"] = wic_utils.get_timestamp() status, userId = self.add_user(username, password, email, tenantId) kwargs["CreateUser"]["userId"] = userId return kwargs
def BindIp(self, *args, **kwargs): kwargs["BindIp"]["note"] = default_note if not "instanceId" in kwargs["BindIp"].keys() or not kwargs["BindIp"]["instanceId"] or \ not "ip" in kwargs["BindIp"].keys() or not kwargs["BindIp"]["ip"]: kwargs["BindIp"]["result"] = WIC_RES_FAILED kwargs["BindIp"][ "note"] = 'BindIp error, please check instanceId, ip' return kwargs ins_id = kwargs["BindIp"]["instanceId"] ipaddr = kwargs["BindIp"]["ip"] kwargs["BindIp"]["timestamp"] = wic_utils.get_timestamp() kwargs["BindIp"]["result"], kwargs["BindIp"][ "note"] = self.floating_ip_add(ins_id, ipaddr) return kwargs
def BindDisk(self, **kwargs): try: instance = self.client.servers.get(kwargs['instanceId']) _status = instance.status volume = self.volume_client.volumes.get(kwargs['volumeId']) type = int(kwargs['type']) if type == 1: if volume.attachments: raise Exception('volume is already binded') try: self._make_active(instance) except: print 'BindDisk: instance %s can not be active' % instance.id self._wait_instance_ready(instance.id) self.client.volumes.create_server_volume( instance.id, volume.id, None) self._wait_volume_ready(volume.id, status='in-use') kwargs["attachTime"] = wic_utils.get_timestamp() elif type == 2: if not volume.attachments: raise Exception('volume is not binded') if not _status == 'SUSPENDED': raise Exception('instance should be shutdown') try: instance.resume() except: print 'BindDisk: instance %s can not resume' % instance.id self._wait_instance_ready(instance.id) self.client.volumes.delete_server_volume( instance.id, volume.id) self._wait_volume_ready(volume.id) kwargs["attachTime"] = '' else: raise Exception('type error') time.sleep(default_sleep_time * DEFAULT_MULTI) try: if _status == 'SUSPENDED': instance.reboot('HARD') self._wait_instance_ready(instance.id) time.sleep(default_sleep_time * 10) instance.suspend() self._wait_instance_ready(instance.id, status='SUSPENDED') except: print 'BindDisk: instance %s can not suspend' % instance.id del kwargs['type'] kwargs['note'] = default_note kwargs['result'] = WIC_RES_SUCCESS except Exception, e: kwargs['note'] = e.message kwargs['result'] = WIC_RES_FAILED
def BindDisk(self, **kwargs): try: instance = self.client.servers.get(kwargs['instanceId']) _status = instance.status volume = self.volume_client.volumes.get(kwargs['volumeId']) type = int(kwargs['type']) if type == 1: if volume.attachments: raise Exception('volume is already binded') try: self._make_active(instance) except: print 'BindDisk: instance %s can not be active' % instance.id self._wait_instance_ready(instance.id) self.client.volumes.create_server_volume(instance.id, volume.id, None) self._wait_volume_ready(volume.id, status='in-use') kwargs["attachTime"] = wic_utils.get_timestamp() elif type == 2: if not volume.attachments: raise Exception('volume is not binded') if not _status == 'SUSPENDED': raise Exception('instance should be shutdown') try: instance.resume() except: print 'BindDisk: instance %s can not resume' % instance.id self._wait_instance_ready(instance.id) self.client.volumes.delete_server_volume(instance.id, volume.id) self._wait_volume_ready(volume.id) kwargs["attachTime"] = '' else: raise Exception('type error') time.sleep(default_sleep_time * DEFAULT_MULTI) try: if _status == 'SUSPENDED': instance.reboot('HARD') self._wait_instance_ready(instance.id) time.sleep(default_sleep_time * 10) instance.suspend() self._wait_instance_ready(instance.id, status='SUSPENDED') except: print 'BindDisk: instance %s can not suspend' % instance.id del kwargs['type'] kwargs['note'] = default_note kwargs['result'] = WIC_RES_SUCCESS except Exception, e: kwargs['note'] = e.message kwargs['result'] = WIC_RES_FAILED
def wic_add_user(self, *args, **kwargs): if not kwargs["CreateUser"]["userName"]: return WIC_RES_FAILED username = kwargs["CreateUser"]["userName"] if not kwargs.has_key("requestId") or not kwargs["requestId"]: kwargs["requestId"] = default_requestId if not kwargs["CreateUser"].has_key("password"): kwargs["CreateUser"]["password"] = default_password password = kwargs["CreateUser"]["password"] if not kwargs.has_key("email"): kwargs["CreateUser"]["email"] = default_email email = kwargs["CreateUser"]["email"] if not kwargs["CreateUser"].has_key("tenantId"): kwargs["CreateUser"]["tenantId"] = self.tenant_id tenantId = kwargs["CreateUser"]["tenantId"] kwargs["CreateUser"]["timestamp"] = wic_utils.get_timestamp() status, userId = self.add_user(username, password, email, tenantId) kwargs["CreateUser"]["userId"] = userId return kwargs
def CreateSnapshot(self, **kwargs): try: volume = self.volume_client.volumes.get(kwargs['volumeId']) snapshot = self.volume_client.volume_snapshots.create(volume.id, force=True) kwargs['snapshotId'] = snapshot.id kwargs['startTime'] = wic_utils.get_timestamp() kwargs['status'] = snapshot.status kwargs['progress'] = '' kwargs['volSize'] = volume.size kwargs['isSystemSnap'] = '' kwargs['InstanceId'] = '' kwargs['ImageId'] = '' kwargs['note'] = default_note kwargs['result'] = WIC_RES_SUCCESS except Exception, e: kwargs['note'] = e.message kwargs['result'] = WIC_RES_FAILED
def DelHost(self, *args, **kwargs): kwargs["DelHost"]["note"] = default_note if not "instanceId" in kwargs["DelHost"].keys() or not kwargs["DelHost"]["instanceId"]: kwargs["DelHost"]["result"] = WIC_RES_FAILED return kwargs ins_id = kwargs["DelHost"]["instanceId"] res, hostip = self.netspeed_update(ins_id, 0) kwargs["DelHost"]["timestamp"] = wic_utils.get_timestamp() res, status = self.instance_show(ins_id) if res == WIC_RES_FAILED: kwargs["DelHost"]["result"] = res return kwargs if status == "PAUSED": res = self.instance_unpause(ins_id) kwargs["DelHost"]["result"] = self.waiting_ins_ready(ins_id) if kwargs["DelHost"]["result"] == WIC_RES_FAILED: kwargs["DelHost"]["note"] = "can't start host" return kwargs kwargs["DelHost"]["result"] = self.instance_delete(ins_id) return kwargs
def BindDisk(self, *args, **kwargs): if not "instanceId" in kwargs["BindDisk"].keys() or not kwargs["BindDisk"]["instanceId"] or \ not "volumeId" in kwargs["BindDisk"].keys() or not kwargs["BindDisk"]["volumeId"]: kwargs["BindDisk"]["result"] = WIC_RES_FAILED return kwargs kwargs["BindDisk"]["note"] = default_note ins_id = kwargs["BindDisk"]["instanceId"] volume_id = kwargs["BindDisk"]["volumeId"] kwargs["BindDisk"]["timestamp"] = wic_utils.get_timestamp() if kwargs["BindDisk"]["type"] == 1 or kwargs["BindDisk"]["type"] == str(1): kwargs["BindDisk"]["result"] = self.auto_volume_attach(ins_id, volume_id) if kwargs["BindDisk"]["result"] == WIC_RES_FAILED: kwargs["BindDisk"]["note"] = "can not find volume id" return kwargs kwargs["BindDisk"]["result"] = self.waiting_volume_attached(volume_id) elif kwargs["BindDisk"]["type"] == 2 or kwargs["BindDisk"]["type"] == str(2): kwargs["BindDisk"]["result"] = self.volume_dettach(ins_id, volume_id) if kwargs["BindDisk"]["result"] == WIC_RES_FAILED: kwargs["BindDisk"]["note"] = "can not find volume id" return kwargs kwargs["BindDisk"]["result"] = self.waiting_volume_detached(volume_id) if kwargs["BindDisk"]["result"] == WIC_RES_FAILED: kwargs["BindDisk"]["note"] = "failed detahced" return kwargs wic_utils.delete_device_location(ins_id, volume_id) if disk_hotplug == False: res, status = self.instance_show(ins_id) print status if status == "PAUSED": time.sleep(1) kwargs["BindDisk"]["result"] = self.instance_unpause(ins_id) kwargs["BindDisk"]["result"] = self.waiting_ins_ready(ins_id) kwargs["BindDisk"]["result"] = self.instance_reboot(ins_id) kwargs["BindDisk"]["result"] = self.waiting_ins_ready(ins_id) kwargs["BindDisk"]["result"] = self.instance_pause(ins_id) kwargs["BindDisk"]["result"] = self.waiting_ins_ready(ins_id) else: time.sleep(1) kwargs["BindDisk"]["result"] = self.instance_reboot(ins_id) kwargs["BindDisk"]["result"] = self.waiting_ins_ready(ins_id) return kwargs
def DelHost(self, *args, **kwargs): kwargs["DelHost"]["note"] = default_note if not "instanceId" in kwargs["DelHost"].keys( ) or not kwargs["DelHost"]["instanceId"]: kwargs["DelHost"]["result"] = WIC_RES_FAILED return kwargs ins_id = kwargs["DelHost"]["instanceId"] res, hostip = self.netspeed_update(ins_id, 0) kwargs["DelHost"]["timestamp"] = wic_utils.get_timestamp() res, status = self.instance_show(ins_id) if res == WIC_RES_FAILED: kwargs["DelHost"]["result"] = res return kwargs if status == "PAUSED": res = self.instance_unpause(ins_id) kwargs["DelHost"]["result"] = self.waiting_ins_ready(ins_id) if kwargs["DelHost"]["result"] == WIC_RES_FAILED: kwargs["DelHost"]["note"] = "can't start host" return kwargs kwargs["DelHost"]["result"] = self.instance_delete(ins_id) return kwargs
def CreateDisk(self, **kwargs): volume = None try: size = kwargs.get('size', None) if not size: raise Exception('size can not be blank') size = int(size.strip()) if not size > 0: raise Exception('size should be >= 1') display_name = 'vol_%s' % kwargs.get('transactionId', None) volume = self.volume_client.volumes.create( size, display_name=display_name) self._wait_volume_ready(volume.id) if 'instanceId' in kwargs.keys(): if kwargs['instanceId']: instance = self.client.servers.get(kwargs['instanceId']) self.client.volumes.create_server_volume( instance.id, volume.id, None) self._wait_volume_ready(volume.id, status='in-use') time.sleep(default_sleep_time * DEFAULT_MULTI) del kwargs['instanceId'] volume = self.volume_client.volumes.get(volume.id) kwargs['volumeId'] = volume.id kwargs['snapshotId'] = '' kwargs['zone'] = '' kwargs['status'] = volume.status kwargs['volumeType'] = '' kwargs['createTime'] = wic_utils.get_timestamp() kwargs['note'] = default_note kwargs['result'] = WIC_RES_SUCCESS except Exception, e: kwargs['note'] = e.message kwargs['result'] = WIC_RES_FAILED if volume: volume.delete() volume = None
class wic_client(object): def __init__(self): self.client = wic_utils.Client(osuser, ospassword, default_tenant, auth_uri, service_type='compute') self.volume_client = wic_utils.Client(osuser, ospassword, default_tenant, auth_uri, service_type='volume') self.keystone_client = wic_utils.KeyStoneClient( username=osuser, password=ospassword, tenant_name=default_tenant, auth_url=auth_uri) def _wait_instance_ready(self, instance_id, status='ACTIVE'): try_times = 0 while try_times < default_try_times: instance = self.client.servers.get(instance_id) _status = instance.status print '%s:%s' % (instance.name, _status) if _status == status: return WIC_RES_SUCCESS try_times += 1 time.sleep(default_sleep_time) raise Exception('instance can not be %s' % status) def _wait_volume_ready(self, volume_id, status='available'): try_times = 0 while try_times < default_try_times: volume = self.volume_client.volumes.get(volume_id) _status = volume.status print '%s:%s' % (volume.display_name, _status) if _status == status: return WIC_RES_SUCCESS try_times += 1 time.sleep(default_sleep_time) raise Exception('volume can not be %s' % status) def _netspeed_update(self, instance, netspeed): host = instance.__dict__.get('OS-EXT-SRV-ATTR:host') hostip = HOST_MAP.get(host, None) if not hostip: raise Exception('can not find instance hostip') uri = "http://" + str( hostip) + ":" + DEV_CTL_PORT + "/instance_device/netspeed/" + str( instance.id) + "/" + str(netspeed) req = urllib2.Request(uri) fd = urllib2.urlopen(req) ret = fd.read(3) if ret == "nok": raise Exception('can not set instance netspeed') return WIC_RES_SUCCESS, hostip def _make_active(self, instance): if instance.status == 'SUSPENDED': instance.resume() elif instance.status == 'STOPPED': instance.start() elif instance.status == 'PAUSED': instance.unpause() elif instance.status in ['SHUTOFF']: instance.reboot('HARD') elif instance.status in ['ACTIVE', 'REBOOT', 'HARD_REBOOT']: pass else: raise Exception('Instance status wrong: %s' % instance.status) def StartHost(self, **kwargs): try: instance = self.client.servers.get(kwargs['instanceId']) self._make_active(instance) self._wait_instance_ready(instance.id) kwargs['note'] = default_note kwargs['result'] = WIC_RES_SUCCESS except Exception, e: kwargs['note'] = e.message kwargs['result'] = WIC_RES_FAILED kwargs["timestamp"] = wic_utils.get_timestamp() return kwargs
kwargs['result'] = WIC_RES_FAILED kwargs["timestamp"] = wic_utils.get_timestamp() return kwargs def StopHost(self, **kwargs): try: instance = self.client.servers.get(kwargs['instanceId']) self._wait_instance_ready(instance.id) instance.pause() self._wait_instance_ready(instance.id, status='PAUSED') kwargs['note'] = default_note kwargs['result'] = WIC_RES_SUCCESS except Exception, e: kwargs['note'] = e.message kwargs['result'] = WIC_RES_FAILED kwargs["timestamp"] = wic_utils.get_timestamp() return kwargs def RestartHost(self, **kwargs): try: instance = self.client.servers.get(kwargs['instanceId']) #self._wait_instance_ready(instance.id) instance.reboot('HARD') self._wait_instance_ready(instance.id) kwargs['note'] = default_note kwargs['result'] = WIC_RES_SUCCESS except Exception, e: kwargs['note'] = e.message kwargs['result'] = WIC_RES_FAILED kwargs["timestamp"] = wic_utils.get_timestamp() return kwargs
def StopHost(self, *args, **kwargs): ins_id = kwargs["StopHost"]["instanceId"] kwargs["StopHost"]["timestamp"] = wic_utils.get_timestamp() kwargs["StopHost"]["result"] = self.instance_suspend(ins_id) return kwargs