Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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 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
Ejemplo n.º 7
0
 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
Ejemplo n.º 9
0
 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
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
0
 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 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
Ejemplo n.º 15
0
 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
Ejemplo n.º 16
0
 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
Ejemplo n.º 17
0
 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
Ejemplo n.º 18
0
 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
Ejemplo n.º 19
0
 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
Ejemplo n.º 20
0
 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
Ejemplo n.º 21
0
 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
Ejemplo n.º 22
0
 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
Ejemplo n.º 23
0
 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
Ejemplo n.º 24
0
 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
Ejemplo n.º 26
0
 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
Ejemplo n.º 27
0
    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
Ejemplo n.º 28
0
 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
Ejemplo n.º 29
0
 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
Ejemplo n.º 30
0
 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
Ejemplo n.º 31
0
 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
Ejemplo n.º 32
0
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
Ejemplo n.º 33
0
            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
Ejemplo n.º 34
0
 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
Ejemplo n.º 35
0
         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
Ejemplo n.º 36
0
 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