Exemple #1
0
    def check_for_updates(self, send_mail=False):
        update_items = []
        dep = None
        try:
            deps = DBSession.query(Deployment).all()
            if len(deps) > 0:
                dep = deps[0]
                edition = get_product_edition()
                new_updates,max_dt = self.get_new_updates(dep.deployment_id, dep.update_checked_date, edition)
                if send_mail and new_updates:
                    self.send_update_mails(new_updates)
            else:
                LOGGER.error('Deployment table is not set. Update can not proceed.')
                return None
        except Exception as ex:
            traceback.print_exc()
            LOGGER.error('Error fetching updates:' + to_str(ex))
            return None

        try:
            dep.update_checked_date = datetime.now()
            DBSession.add(dep)
        except:
            pass

        return update_items
Exemple #2
0
    def create_vmw_server_pool(self, auth, name, actual_name, moid, vcenter_id, parent_ent=None):
        msg = ''
        entityType = to_unicode(constants.SERVER_POOL)
        sp = None
        update_name = False
        sp_ent = auth.get_entity_by_entity_attributes(self.get_entity_attributes_dict(vcenter_id, moid), entityType)
        if not sp_ent:
            dup_ent = auth.get_entity_by_name(name, entityType=entityType)
            if dup_ent:
                msg += '\nERROR: Could not import Server Pool:%s. It is already exist,please choose different name' % name
                return (msg, None, None)

        if sp_ent:
            update_name = self.can_update_managed_object_name(auth, name, actual_name, sp_ent.name)
            msg += '\nServer Pool: %s already exist' % name
            sp = DBSession.query(VMWServerGroup).filter(VMWServerGroup.id == sp_ent.entity_id).first()
            if sp:
                if update_name:
                    sp.name = name
        if not sp:
            msg += '\nCreating Server Pool: %s' % name
            sp = VMWServerGroup(name)
        DBSession.add(sp)
        if not sp_ent:
            cntx = {'external_manager_id': vcenter_id, 'external_id': moid}
            sp_ent = self.add_vcenter_entity(auth, cntx, sp.name, sp.id, to_unicode(constants.SERVER_POOL), parent_ent)
        else:
            if not update_name:
                name = None
            auth.update_entity(sp_ent, name=name, parent=parent_ent)
        return (msg, sp, sp_ent)
Exemple #3
0
 def create_vlan_network_info(self, vlan_id_pool, cidr, num_networks, network_size, vlan_start, interface):
     vlan_nw_infos = self.get_vlan_network_info(cidr, num_networks, network_size, vlan_start, interface)
     for info_dict in vlan_nw_infos:
         vlan_nw_info_db = self.create_vlan_network_info_db(info_dict)
         vlan_nw_info_db.vlan_pool_id = vlan_id_pool.id
         DBSession.add(vlan_nw_info_db)
     LOGGER.info("created vlan_network_info for vlan_id_pool:%s" % vlan_id_pool.name)
Exemple #4
0
    def update_dc_params(self, res_id, fencing_name, fencing_id, params):
        try:
            params = json.loads(params).get('param_obj')
            hafr = DBSession.query(HAFenceResource).filter(HAFenceResource.id == res_id).one()
            hafr.name = fencing_name
            params_list = []
            for hp in hafr.params:
                params_list.append(hp)
            for i in range(len(params_list)):
                hafr.params.remove(params_list[i])
            for param in params:
                name = param.get('attribute')
                value = param.get('value')
                type = param.get('type')
                field = param.get('field')
                field_datatype = param.get('field_datatype')
                sequence = param.get('sequence')
                harp = HAFenceResourceParam(name, value, type, field, field_datatype, sequence)
                hafr.params.append(harp)
                
            DBSession.add(hafr)

        except Exception as ex:
            print_traceback()
            LOGGER.error(to_str(ex).replace("'", ''))
            return ("{success: false,msg: '", to_str(ex).replace("'", ''), "'}")

        return dict(success=True)
Exemple #5
0
 def reset_maintenance_mode(self):
     LOGGER.debug('In reset_maintenance_mode')
     node = DBSession.query(ManagedNode).filter(ManagedNode.id == self.node.id).first()
     node.maintenance = False
     node.maintenance_mig_node_id = None
     node.maintenance_operation = 0
     node.maintenance_migrate_back = False
     node.maintenance_user = None
     DBSession.add(node)
     transaction.commit()
Exemple #6
0
 def update_restore_status(self, rec):
     sStatus = 'Failed'
     details = 'Restore failed : CMS restarted.'
     rec.status = sStatus
     msg = rec.result
     if msg:
         rec.result = msg + '. ' + details
     rec.result = details
     self.add_restore_detail_result(rec.id, None, sStatus, details, cms_start=True)
     DBSession.add(rec)
     transaction.commit()
Exemple #7
0
 def update_execution_context(self):
     
     tid = TaskUtil.get_task_context()
     WRK_LOGGER.debug('in update_execution_context Parent task : ' + str(tid) + ' : child tasks :' + str(self.worker_ids))
     task = Task.get_task(tid)
     if task is not None:
         self.execution_context['start_time'] = self.start_time
         self.execution_context['worker_ids'] = self.worker_ids
         task.context['execution_context'] = self.execution_context
         DBSession.add(task)
         WRK_LOGGER.debug('in update_execution_context updated Parent task : ' + str(tid))
Exemple #8
0
 def add_site_defn(self, site_id, def_id, def_type, status, oos_count):
     row = DBSession.query(DCDefLink).filter_by(site_id=site_id, def_id=def_id).first()
     if not row:
         DCDL = DCDefLink()
         DCDL.site_id = site_id
         DCDL.def_type = def_type
         DCDL.def_id = def_id
         DCDL.status = to_unicode(status)
         DCDL.oos_count = oos_count
         DCDL.dt_time = datetime.now()
         DBSession.add(DCDL)
Exemple #9
0
 def add_group_defn(self, group_id, def_id, def_type, status, oos_count):
     row = DBSession.query(SPDefLink).filter_by(group_id=group_id, def_id=def_id).first()
     if not row:
         SPDL = SPDefLink()
         SPDL.group_id = group_id
         SPDL.def_type = def_type
         SPDL.def_id = def_id
         SPDL.status = status
         SPDL.oos_count = oos_count
         SPDL.dt_time = datetime.now()
         DBSession.add(SPDL)
Exemple #10
0
 def add_node_defn(self, node_id, def_id, def_type, status, details):
     row = DBSession.query(ServerDefLink).filter_by(server_id=node_id, def_id=def_id).first()
     if not row:
         node_defn = ServerDefLink()
         node_defn.server_id = to_unicode(node_id)
         node_defn.def_type = to_unicode(def_type)
         node_defn.def_id = def_id
         node_defn.status = to_unicode(status)
         node_defn.details = to_unicode(details)
         node_defn.dt_time = datetime.now()
         DBSession.add(node_defn)
Exemple #11
0
 def add_entity_attribute(cls, ent_obj, key, value, entity_id=None):
     try:
         if entity_id:
             ent_obj = Entity.get_entity(entity_id)
         ent_atr = cls(key, value)
         ent_obj.attributes.append(ent_atr)
         DBSession.add(ent_atr)
     except Exception as ex:
         traceback.print_exc()
         LOGGER.error(to_str(ex))
         raise ex
Exemple #12
0
 def add_csep_defn(self, csep_id, def_id, def_type, status, oos_count):
     row = DBSession.query(CSEPDefLink).filter_by(csep_id=csep_id, def_id=def_id).first()
     if not row:
         CPDL = CSEPDefLink()
         CPDL.csep_id = csep_id
         CPDL.def_type = def_type
         CPDL.def_id = def_id
         CPDL.status = to_unicode(status)
         CPDL.oos_count = oos_count
         CPDL.dt_time = datetime.now()
         DBSession.add(CPDL)
Exemple #13
0
 def add_vCenter(self, auth, host, port, ssl, username, password):
     try:
         vcenter = DBSession.query(VCenter).filter(VCenter.host == host).first()
         if vcenter:
             raise Exception('vCenter Host already existing')
         else:
             vC = VCenter(host, port, ssl, username, password)
             DBSession.add(vC)
             return vC.id
     except Exception as e:
         traceback.print_exc()
         raise e
Exemple #14
0
 def add_vm_restore_result(self, backup_id, vm_id, start_time, end_time, status, result, bkp_result_id=None):
     bkp_result = VMRestoreResult()
     bkp_result.id = getHexID()
     bkp_result.backup_id = backup_id
     bkp_result.vm_id = vm_id
     bkp_result.start_time = start_time
     bkp_result.end_time = end_time
     bkp_result.status = status
     bkp_result.result = result
     bkp_result.backup_result_id = bkp_result_id
     DBSession.add(bkp_result)
     transaction.commit()
     return bkp_result.id
Exemple #15
0
 def save_email_setup_details(self, desc, servername, port, useremail, password, secure):
     SiteRecord = DBSession.query(Site).filter(Site.name == 'Data Center').first()
     if SiteRecord:
         site_id = SiteRecord.id
         EmailRecord = DBSession.query(EmailSetup).filter(EmailSetup.site_id == site_id).filter(EmailSetup.mail_server == servername).first()
         if EmailRecord:
             return dict(success=True, msg='Duplicaate Record found in list')
         else:
             email_setup_obj = EmailSetup(servername, desc, port, secure, site_id, useremail, password)
             DBSession.add(email_setup_obj)
             emailsetupid = email_setup_obj.getEmailSetupId()
             EmailManager().add_entity(to_unicode(servername), emailsetupid, to_unicode(constants.EMAIL), None)
             return dict(success=True, msg='New Record Added Sucessfully')
Exemple #16
0
 def add_defn(self, defn, site, group, node, auth, defType, op, action_op, def_manager, grid_manager, op_level, sp_ids=None, scan_result=None, csep_id=None):
     scope = op_level
     if scope == constants.SCOPE_S:
         entityId = node.id
     elif scope == constants.SCOPE_SP:
         entityId = group.id
     elif scope == constants.SCOPE_DC:
         entityId = site.id
     elif scope == constants.SCOPE_CP:
         entityId = csep_id
     ent = auth.get_entity(entityId)
     if not auth.has_privilege(action_op, ent):
         raise Exception(constants.NO_PRIVILEGE)
     if scope == constants.SCOPE_SP:
         if not PrivilegeOps.check_child_privileges(auth, action_op, ent):
             raise Exception(constants.NO_CHILD_PRIVILEGE % ('Servers', 'Server Pool'))
     DBSession.add(defn)
     nw_id = defn.id
     if site:
         def_manager.SaveScanResult(defn.id, grid_manager, scan_result, site.id)
     def_manager.RemoveScanResult(scan_result)
     errs = []
     details = {}
     status = to_unicode(constants.OUT_OF_SYNC)
     if scope == constants.SCOPE_DC:
         oos_count = 0
         status = to_unicode(constants.IN_SYNC)
         self.add_site_defn(site.id, defn.id, defType, status, oos_count)
         def_manager.manage_defn_to_groups(site, group, sp_ids, defn, defType, op, def_manager, auth, errs, grid_manager)
     elif scope == constants.SCOPE_SP:
         def_manager.manage_defn_to_groups(site, group, sp_ids, defn, defType, op, def_manager, auth, errs, grid_manager)
     elif scope == constants.SCOPE_S:
         self.add_node_defn(node.id, defn.id, defType, status, details)
         update_status = True
         #def_manager.add_private_ip_pool(defn)
         self.sync_node_defn(auth, node, group.id, site.id, defn, defType, op, def_manager, update_status, errs)
         
     elif scope == constants.SCOPE_CP:
         oos_count = 0
         status = to_unicode(constants.IN_SYNC)
         self.add_csep_defn(csep_id, defn.id, defType, status, oos_count)
         def_manager.manage_defn_to_groups(site, group, sp_ids, defn, defType, op, def_manager, auth, errs, grid_manager, csep_id)
         details['defn_id'] = defn.id
         if node:
             details['node_id'] = node.id
     def_manager.on_defn_creation(auth,**details)
     def_manager.Recompute(defn)
     if errs:
         if len(errs) > 0:
             LOGGER.error('Error:' + to_str(errs))
     return (errs, nw_id)
Exemple #17
0
def update_avail(node, new_state, monit_state, timestamp, reason, logger, update=True, auth=None):
    sv_point = transaction.savepoint()
    try:
        strt = p_task_timing_start(logger, "UpdateAvailability", node.id, log_level="DEBUG")
        node.current_state.avail_state = new_state
        node.current_state.timestamp = timestamp
        node.current_state.description = reason
        avh=DBSession.query(AvailHistory).filter(AvailHistory.entity_id==node.id).\
            order_by(AvailHistory.timestamp.desc()).first()
        if avh is not None:
            avh.endtime=timestamp
            time_diff=timestamp-avh.timestamp
            avh.period=time_diff.days*24*60+time_diff.seconds/60
            DBSession.add(avh)
        #insert availability history
        ah = AvailHistory(node.id, new_state, monit_state, timestamp, reason)
        DBSession.add(ah)
        DBSession.add(node)
        if update==True:
            487
            ev_contents = {'state':new_state}
            ev = AvailabilityEvent(node.id, ev_contents, timestamp)
            DBSession.add(ev)
            ent = DBSession.query(Entity).filter(Entity.entity_id==node.id).first()
            from stackone.model.ManagedNode import ManagedNode
            if ent.type.name == constants.MANAGED_NODE and new_state == ManagedNode.DOWN:
                if node.is_maintenance():
                    logger.info('Node:%s is in Maintenance mode' %node.hostname)
                else:
                    notify_node_down(ent,reason)
    except Exception, e:
        import traceback
        traceback.print_exc()
        logger.error(e)
        sv_point.rollback()
Exemple #18
0
 def edit_vCenter(self, auth, id, host, port, ssl, username, password):
     try:
         row = DBSession.query(VCenter).filter(VCenter.id == id).first()
         if row == None:
             raise Exception('There is no Entity exists in the database')
         row.host = host
         row.ssl = ssl
         row.port = port
         row.credential.cred_details['username'] = username
         row.credential.cred_details['password'] = password
         DBSession.add(row)
         return None
     except Exception as e:
         traceback.print_exc()
         raise e
     return None
Exemple #19
0
 def add_restore_detail_result(self, result_id, phase, status, details, cms_start=False, seq=0, restore_service=None):
     s_seq = seq
     if details:
         seq,s_seq = self.get_comment_prefix(seq)
         bkp_result = VMRestoreDetailResult()
         bkp_result.id = getHexID()
         bkp_result.result_id = result_id
         bkp_result.phase = phase
         bkp_result.status = status
         bkp_result.details = s_seq + '-' + details
         bkp_result.dt_time = datetime.now()
         DBSession.add(bkp_result)
         if not cms_start:
             transaction.commit()
         if restore_service:
             restore_service.seq = seq
     return bkp_result.id
Exemple #20
0
Fichier : IP.py Projet : smarkm/ovm
 def release_address(self, entity_id, ip_id=None):
     try:
         LOGGER.info('Getting CMS Lock...')
         LockManager().get_lock(constants.IPS, self.id, constants.RESERVE_ADDRESS_OP, constants.Table_ip_pool)
         qry = DBSession.query(IPS).filter(IPS.pool_id == self.id).filter(IPS.reserved_by == entity_id)
         if ip_id:
             qry = qry.filter(IPS.id == ip_id)
         ips_db = qry.all()
         for ip_db in ips_db:
             ip_db.reserved_by = None
             ip_db.vm_id = None
             ip_db.allocated = False
             self.used = int(self.used) - 1
             DBSession.add(ip_db)
     finally:
         LOGGER.info('Releasing CMS Lock...')
         LockManager().release_lock()
     return None
Exemple #21
0
Fichier : IP.py Projet : smarkm/ovm
 def disassociate_address(self, ip_id):
     ip_db = None
     try:
         LOGGER.info('Getting CMS Lock...')
         LockManager().get_lock(constants.IPS, self.id, constants.ASSOCIATE_ADDRESS_OP, constants.Table_ip_pool)
         ip_db = DBSession.query(IPS).filter(IPS.pool_id == self.id).filter(IPS.id == ip_id).first()
         private_networks_vm_rel = DBSession.query(NetworkVMRelation).filter(NetworkVMRelation.public_ip_id == ip_id).filter(NetworkVMRelation.vm_id == ip_db.vm_id).first()
         if private_networks_vm_rel:
             private_networks_vm_rel.public_ip_id = None
             DBSession.add(private_networks_vm_rel)
             
         ip_db.vm_id = None
         DBSession.add(ip_db)
         return ip_db
     finally:
         LOGGER.info('Releasing CMS Lock...')
         LockManager().release_lock()
         LOGGER.info('IP:%s disassociated' % ip_db.ip)
     return None
Exemple #22
0
Fichier : IP.py Projet : smarkm/ovm
 def associate_address(self, ip_id, vm_id):
     try:
         LOGGER.info('Getting CMS Lock...')
         LockManager().get_lock(constants.IPS, self.id, constants.ASSOCIATE_ADDRESS_OP, constants.Table_ip_pool)
         ip_db = DBSession.query(IPS).filter(IPS.pool_id == self.id).filter(IPS.id == ip_id).filter(IPS.allocated == True).first()
         ip_db.vm_id = vm_id
         vm = DBSession.query(VM).filter(VM.id == vm_id).first()
         if vm:
             private_networks_vm_rel = vm.network_vm_relations
             if len(private_networks_vm_rel):
                 private_networks_vm_rel[0].public_ip_id = ip_id
                 DBSession.add(private_networks_vm_rel[0])
         
         DBSession.add(ip_db)
         return ip_db
     finally:
         LOGGER.info('Releasing CMS Lock...')
         LockManager().release_lock()
         LOGGER.info('IP:%s attached to VM_Id:%s' % (ip_db.ip, vm_id))
Exemple #23
0
Fichier : IP.py Projet : smarkm/ovm
 def reserve_address(self, entity_id):
     try:
         LOGGER.info('Getting CMS Lock...')
         LockManager().get_lock(constants.IPS, self.id, constants.RESERVE_ADDRESS_OP, constants.Table_ip_pool)
         ip_db = DBSession.query(IPS).filter(IPS.pool_id == self.id).filter(or_(IPS.reserved_by == None, IPS.reserved_by == '')).filter(IPS.allocated == False).first()
         if not ip_db:
             LOGGER.error('All IPs are Reserved')
             raise Exception('All IPs are Reserved')
         else:
             ip_db.reserved_by = entity_id
             ip_db.allocated = True
             used = 0
             if self.used != None:
                 used = int(self.used)
             self.used = used + 1
             DBSession.add(ip_db)
             return ip_db
     finally:
         LOGGER.info('Releasing CMS Lock...')
         LockManager().release_lock()
     return None
Exemple #24
0
Fichier : IP.py Projet : smarkm/ovm
    def app_new_ip(self, addresses, cidr=None):
        if not isinstance(addresses, list):
            addresses = [addresses]

        ips = [ip_db.ip for ip_db in self.ips]
        addresses = [address for address in addresses if address not in ips]
        self.iplist = addresses
        self._validate_network()
        for address in addresses:
            ip_db = self.get_ip(address)
            if not ip_db:
                ips_obj = IPS()
                ips_obj.pool_id = self.id
                ips_obj.ip = address
                self.ips.append(ips_obj)
                LOGGER.info('Added IP:%s to Pool:%s' % (address, self.name))
                continue
                
            ip_db.ip = address
            DBSession.add(ip_db)
            LOGGER.info('Updated IP:%s in the Pool:%s' % (address, self.name))
Exemple #25
0
    def save_fencing_details_fordwm(self, node_id, fence_det):
        #from stackone.model.LicenseManager import  check_platform_expire_date
        try:
            managed_node = DBSession.query(ManagedNode).filter(ManagedNode.id == node_id).first()
            ret,msg = check_platform_expire_date(managed_node.get_platform())
            if ret == False:
                raise Exception(msg)
            
            fence_det = json.loads(fence_det)
            fence_details = fence_det.get('fence_details')
            entity_id = node_id
            fence_details = eval(fence_details)
            hare_det = DBSession.query(HAEntityResource).filter(HAEntityResource.entity_id == entity_id).all()
            resids = [hare.id for hare in hare_det]
            for fen in fence_details:
                resource_id = fen.get('id')
                order = 1
                haer = HAEntityResource(entity_id, resource_id, order)
                param_list = fen.get('params')
                for param in param_list:
                    name = param.get('attribute')
                    value = param.get('value')
                    type1 = param.get('type')
                    field = param.get('field')
                    field_datatype = param.get('field_datatype')
                    sequence = param.get('sequence')
                    is_environ = eval(param.get('is_environ'))
                    haerp = HAEntityResourceParam(name, value, type1, field, field_datatype, sequence, is_environ)
                    haer.params.append(haerp)
                    
                DBSession.add(haer)
            
            DBSession.query(HAEntityResource).filter(HAEntityResource.id.in_(resids)).delete()
            DBSession.query(HAEntityResourceParam).filter(HAEntityResourceParam.entity_resource_id.in_(resids)).delete()

        except Exception as ex:
            print_traceback()
            return dict(success=False, msg=to_str(ex))

        return dict(success=True, result='success')
Exemple #26
0
 def set_server_maintenance(self, info):
     try:
         msg = '\n----- Maintenance setting of Node: %s ------' %self.node.hostname
         LOGGER.debug('In set_server_maintenance: \ninfo\n%s' %info)
         if not info['maintenance']:
             msg += '\n Node:%s leaving Maintenance mode' %self.node.hostname
         else:
             self.node.maintenance = info['maintenance']
         if info['do_nothing']:
             msg += '\n Do not shutdown or migrate Virtual Machines'
             self.node.maintenance_operation = Maintenance.DO_NOTHING
         if info['shutdown_vms']:
             msg += '\n Shutdown all vms'
             self.node.maintenance_operation = Maintenance.SHUTDOWN_ALL_VMS
         elif info['migrate_to_other_server']:
             msg += '\n Migrate vms to other servers in the server pool'
             self.node.maintenance_operation = Maintenance.MIGRATE_VMS_TO_SERVERS
             if info['migrate_vms_back_from_servers']:
                 msg += '\n Migrate vms back from servers, when server come out of maintenance mode'
                 self.node.maintenance_migrate_back = True
             else:
                 self.node.maintenance_migrate_back = False
         elif info['migrate_to_specific_server']:
             msg += '\n Migrate vms to a specific server in the server pool'
             self.node.maintenance_operation = Maintenance.MIGRATE_VMS_TO_SERVER
             if info['migrate_vms_back_from_specific_server']:
                 msg += '\n Migrate vms back from servers, when server come out of maintenance mode'
                 self.node.maintenance_migrate_back = True
             else:
                 self.node.maintenance_migrate_back = False    
         self.node.maintenance_mig_node_id = info.get('server')
         self.node.maintenance_user = self.auth.user_name
         LOGGER.debug(msg)
         DBSession.add(self.node)
         transaction.commit()
     except Exception,ex:
         print_traceback()
         LOGGER.error(to_str(ex).replace("'",''))
         return {'success':False,'msg':to_str(ex).replace("'",'')}
Exemple #27
0
    def save_dc_params(self, fencing_name, fencing_id, params):
        try:
            params = json.loads(params).get('param_obj')
            har = HAFenceResource(fencing_name, fencing_id)
            for param in params:
                name = param.get('attribute')
                value = param.get('value')
                type = param.get('type')
                field = param.get('field')
                field_datatype = param.get('field_datatype')
                sequence = param.get('sequence')
                harp = HAFenceResourceParam(name, value, type, field, field_datatype, sequence)
                har.params.append(harp)
                
            DBSession.add(har)

        except Exception as ex:
            print_traceback()
            LOGGER.error(to_str(ex).replace("'", ''))
            return ("{success: false,msg: '", to_str(ex).replace("'", ''), "'}")

        return dict(success=True)
Exemple #28
0
 def create_vmw_datacenter(self, auth, name, actual_name, moid, vcenter_id, parent_ent=None):
     msg = ''
     entityType = to_unicode(constants.DATA_CENTER)
     dc = None
     update_name = False
     dc_ent = auth.get_entity_by_entity_attributes(self.get_entity_attributes_dict(vcenter_id, moid), entityType)
     if not dc_ent:
         dup_ent = auth.get_entity_by_name(name, entityType=entityType)
         if dup_ent:
             msg += '\nERROR: Could not import Datacenter:%s. It is already exist,please choose different name' % name
             return (msg, None, None)
     if dc_ent:
         update_name = self.can_update_managed_object_name(auth, name, actual_name, dc_ent.name)
         msg += '\nDatacenter: %s already exist' % name
         dc = DBSession.query(VMWDatacenter).filter(VMWDatacenter.id == dc_ent.entity_id).first()
         if dc:
             if update_name:
                 dc.name = name
     if not dc:
         msg += '\nCreating Datacenter: %s' % name
         dc = VMWDatacenter(name)
     DBSession.add(dc)
     if not dc_ent:
         dc_ent = Entity()
         dc_ent.name = dc.name
         dc_ent.entity_id = dc.id
         dc_ent.type_id = 1
         ent_cntx_dict = self.get_entity_context_dict(external_manager_id=vcenter_id, external_id=moid)
         dc_ent.context_id = auth.add_context(ent_cntx_dict)
         DBSession.add(dc_ent)
         admin_role = auth.get_admin_role()
         auth.make_rep_entry(admin_role, dc_ent)
         ent_attr_dict = self.get_entity_attributes_dict(external_manager_id=vcenter_id, external_id=moid)
         self.add_entity_attributes(dc_ent, ent_attr_dict)
     else:
         if not update_name:
             name = None
         auth.update_entity(dc_ent, name=name)
     return (msg, dc, dc_ent)
Exemple #29
0
 def add_vlan_id_pool(self, auth, site_id, name, desc, range, interface, sp_ids, cidr, num_hosts):
     LOGGER.info("Adding VLAN ID Pool..")
     vlan_id_pool = VLANIDPool()
     vlan_id_pool_id = getHexID()
     vlan_id_pool.id = vlan_id_pool_id
     vlan_id_pool.name = name
     vlan_id_pool.description = desc
     vlan_id_pool.range = range
     vlan_id_pool.interface = interface
     vlan_id_pool.cidr = cidr
     vlan_id_pool.num_hosts = num_hosts
     rnge = range.split("-")
     diff = int(rnge[1]) - int(rnge[0])
     vlan_id_pool.total = diff
     network_size = num_hosts
     num_networks = diff + 1
     vlan_start = rnge[0]
     vlan_nw_infos = self.get_vlan_network_info(cidr, num_networks, network_size, vlan_start, interface)
     for info_dict in vlan_nw_infos:
         vlan_nw_info_db = self.create_vlan_network_info_db(info_dict)
         vlan_id_pool.vlan_nws_infos.append(vlan_nw_info_db)
     LOGGER.info("VLAN Network info added.")
     self.attach_vlan_id_pool(sp_ids, vlan_id_pool)
     nums = range.split("-")
     first_num = nums[0]
     last_num = nums[1]
     i = first_num
     while int(i) <= int(last_num):
         vlan_id = VLANID()
         vlan_id.id = getHexID()
         vlan_id.vlan_id = int(i)
         vlan_id.used_by = None
         vlan_id_pool.vlan_ids.append(vlan_id)
         i = int(i) + 1
     LOGGER.info("VLAN IDs are added")
     DBSession.add(vlan_id_pool)
     transaction.commit()
     LOGGER.info("VLAN ID Pool is added.")
Exemple #30
0
    def remove_vm(self, dom_id, node_id, date=None, time=None, force=False, force_cli=False):
        self.authenticate()
        status = {}
        try:
            if force_cli != True:
                status = self.node_service.get_node_status(session['auth'],node_id=node_id,dom_id=dom_id)
                if status and status['part_of_vdc'] == True:
                    raise Exception('This VM is part of VDC .This operation is not recommended.')
            dom = DBSession().query(VM).filter(VM.id == dom_id).one()
            tasks = DBSession.query(Task).filter(Task.task_id.in_([dom.delete_taskid])).all()
            if len(tasks) > 0 and len(tasks[0].result) == 0:
                self.tc.delete_task([tasks[0].task_id])

            result = to_str(self.tc.vm_remove_action(session['auth'], dom_id, node_id, force, date, time))
            if date is not None and time is not None:
                dom.delete_taskid = result
                DBSession.add(dom)

        except Exception as ex:
            print_traceback()
            return dict(success=False, msg=to_str(ex))

        return dict(success=True, msg='Remove Virtual Machine Task Submitted.', taskid=result)