def __init__(self): self.heatclient = HeatClient() conf = SysUtil().get_sys_conf() LOG.debug("Get runtime agent: " + conf['runtime_agent']) self.runtime_agent = FactoryAgent().get_agent(conf['runtime_agent']) #self.register_agent = FactoryAgent().get_agent(conf['register_agent']) self.template_manager = FactoryAgent().get_agent( conf['template_manager']) self.db = FactoryAgent().get_agent(conf['database_manager']) self.checker = FactoryAgent().get_agent(conf['checker'])
def __init__(self): # self.heatclient = HeatClient() conf = SysUtil().get_sys_conf() self.template_manager = FactoryAgent().get_agent(conf['template_manager']) self.db = FactoryAgent().get_agent(conf['database_manager']) self.runtime_agent = FactoryAgent().get_agent(conf['runtime_agent']) #self.reg = FactoryAgent().get_agent(file_name=conf['register_agent_file'], # class_name=conf['register_agent_class']) pass
def create(cls, service_args): try: conf = sys_util().get_sys_conf() service_manager = FactoryAgent().get_agent(conf['service_manager']) service = service_manager.create(service_args) checker = FactoryAgent().get_agent(conf['checker']) checker.check(service=service) db = DatabaseManager() db.persist(service) except Exception, msg: raise
def create(cls, topology_args): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) topology_manager = FactoryAgent().get_agent(conf['topology_manager']) try: topology = topology_manager.create(topology_args) checker = FactoryAgent().get_agent(conf['checker']) checker.check(topology=topology) db.persist(topology) except Exception, exc: LOG.exception(exc.message) raise
def deploy(self, attributes): """ Deploy method """ if self.stack_id is not None: pass parameters = {} # defining the location of the topology if 'maas.location' in attributes: self.location = parameters['location'] = os.environ[ 'location'] = attributes['maas.location'] LOG.debug("location %s passed via OCCI Attribute" % self.location) self.deployer = FactoryAgent().get_agent(self.conf['deployer']) self.topology_type = topology_mapping[self.location] LOG.info("deploying template %s" % (self.topology_type, )) # read template... f = open(os.path.join(SO_DIR, 'data/topologies', self.topology_type)) template = f.read() f.close() LOG.debug("content of the topology %s" % template) # extracting hot template try: config = yaml.load(template) LOG.debug(config) except yaml.YAMLError, exc: if hasattr(exc, 'problem_mark'): mark = exc.problem_mark LOG.error("Error in configuration file:", exc) LOG.error("Error position: (%s:%s)" % (mark.line + 1, mark.column + 1)) else: LOG.error("Error in configuration file:", exc)
def get(cls, id): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) try: topology = db.get_by_id(Topology, id) except NotFoundException as e: raise e return topology
def __init__(self, topology, runtime_agent, policy, service_instance, lock): super(PolicyThread, self).__init__() self.policy = policy self.service_instance = service_instance self.topology = topology self.runtime_agent = runtime_agent self.monitor = runtime_agent.monitoring_service self.lock = lock # hack for avoiding autoscaling at startup self.counter = 0 self.is_stopped = False conf = SysUtil().get_sys_conf() self.template_manager = FactoryAgent().get_agent( conf['template_manager']) self.db = FactoryAgent().get_agent(conf['database_manager']) self.heat_client = HeatClient()
def update(cls, new_topology_args, old_topology): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) topology_manager = FactoryAgent().get_agent(conf['topology_manager']) checker = FactoryAgent().get_agent(conf['checker']) if old_topology.state in ['DEPLOYED','UPDATED']: old_topology.state = 'UPDATING' else: raise ActionInProgressException('Cannot update topology while another action is in progress. Topology state is \"%s\".' % old_topology.state) db.update(old_topology) try: new_topology = topology_manager.create(new_topology_args) checker.check(topology=new_topology) updated_topology = topology_manager.update(new_topology, old_topology) #checker.check(topology=updated_topology) db.update(updated_topology) except Exception, exc: LOG.exception(exc.message) raise exc
def create(cls, secgroup_args): _sec_rules = secgroup_args.get("rules") _new_sec_rules = [] for _sec_rule_args in _sec_rules: _new_sec_rule = Rule(**_sec_rule_args) _new_sec_rules.append(_new_sec_rule) new_secgroup = SecurityGroup(name=secgroup_args.get('name'), rules=_new_sec_rules) conf = sys_util().get_sys_conf() checker = FactoryAgent().get_agent(conf['checker']) checker.check(security_group=new_secgroup) db = DatabaseManager() db.persist(new_secgroup) return new_secgroup
def update(cls, service_args, id): db = DatabaseManager() try: updated_service = db.get_by_id(Service, id) except NotFoundException as e: raise e updated_service.config = service_args.get('config') or updated_service.config updated_service.flavor = service_args.get('flavor') or updated_service.flavor updated_service.image = service_args.get('image') or updated_service.image updated_service.service_type = service_args.get('service_type') or updated_service.service_type updated_service.size = service_args.get('size') or updated_service.size conf = sys_util().get_sys_conf() checker = FactoryAgent().get_agent(conf['checker']) checker.check(service=updated_service) db.update(updated_service) return updated_service
def update(self, new_topology, old_topology): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) updated_topology = old_topology updated_topology.name = new_topology.name #check for additional service instances and add them to the list of new instances appended_service_instances = [] for new_service_instance in new_topology.service_instances: is_found = False for updated_service_instance in updated_topology.service_instances: if new_service_instance.name == updated_service_instance.name: is_found = True break if not is_found: appended_service_instances.append(new_service_instance) #check for removed service instances and add it to the list of removed instances removed_service_instances = [] for updated_service_instance in updated_topology.service_instances: is_found = False for new_service_instance in new_topology.service_instances: if new_service_instance.name == updated_service_instance.name: is_found = True break if not is_found: removed_service_instances.append(updated_service_instance) #remove removed service instances for removed_service_instance in removed_service_instances: updated_topology.service_instances.remove(removed_service_instance) LOG.debug('Removed ServiceInstance \"%s\" from Topology \"%s\".' % (removed_service_instance.name, updated_topology.name)) #append additional service instances for appended_service_instance in appended_service_instances: appended_service_instance.topology_id = updated_topology.id updated_topology.service_instances.append( appended_service_instance) if appended_service_instance.policies is not None: for policy in appended_service_instance.policies: db.persist(policy) db.persist(appended_service_instance) LOG.debug('Appended ServiceInstance \"%s\" to Topology \"%s\".' % (appended_service_instance.name, updated_topology.name)) #Update all values for each service instance for updated_service_instance in updated_topology.service_instances: for new_service_instance in new_topology.service_instances: if updated_service_instance.name == new_service_instance.name: updated_service_instance.size = new_service_instance.size updated_service_instance.configuration = new_service_instance.configuration updated_service_instance.policies = new_service_instance.policies #updated_service_instance.service_type = new_service_instance.service_type if new_service_instance.service_type and updated_service_instance.service_type != new_service_instance.service_type: LOG.warning( "Cannot update service_type for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) if new_service_instance.adapter and updated_service_instance.adapter != new_service_instance.adapter: LOG.warning( "Cannot update adapter for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.flavor = new_service_instance.flavor if new_service_instance.flavor and updated_service_instance.flavor.name != new_service_instance.flavor.name: LOG.warning( "Cannot update flavor for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.image = new_service_instance.image if new_service_instance.image and updated_service_instance.image.name != new_service_instance.image.name: LOG.warning( "Cannot update image for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.networks = new_service_instance.networks if new_service_instance.networks is not None: LOG.warning( "Cannot update networks for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.requirements = new_service_instance.requirements if new_service_instance.requirements is not None: LOG.warning( "Cannot update networks for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) #updated_service_instance.user_data = new_service_instance.user_data if new_service_instance.user_data is not None: LOG.warning( "Cannot update user_data for %s->%s. Not Implemented." % (updated_topology.name, updated_service_instance.name)) if new_service_instance.key and updated_service_instance.key.name != new_service_instance.key.name: LOG.warning( "Cannot update key for %s->%s without replacement." % (updated_topology.name, updated_service_instance.name)) #Add or remove units according to minimal or maximal size for updated_service_instance in updated_topology.service_instances: if updated_service_instance not in appended_service_instances: if len(updated_service_instance.units ) < updated_service_instance.size.get('min'): for i in range( updated_service_instance.size.get('min') - len(updated_service_instance.units)): _hostname = '%s-%s' % ( updated_service_instance.name, str(len(updated_service_instance.units) + 1)) _state = 'DEFINED' new_unit = Unit(hostname=_hostname, state=_state) new_unit.service_instance_id = updated_service_instance.id updated_service_instance.units.append(new_unit) db.persist(new_unit) if len(updated_service_instance.units ) > updated_service_instance.size.get('max'): for i in range( len(updated_service_instance.units) - updated_service_instance.size.get('max')): removed_unit = updated_service_instance.units.pop( len(updated_service_instance.units) - 1) db.remove(removed_unit) return updated_topology
def get_all(cls): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) lst = db.get_all(Topology) return lst
def delete(cls, topology): conf = sys_util().get_sys_conf() db = FactoryAgent().get_agent(conf['database_manager']) db.remove(topology) return topology