def list(self, params): """Print all available roles and their conflicts for some release with id=1: fuel role --rel 1 """ release = Release(params.release, params=params) data = release.get_fresh_data() acceptable_keys = ("name", "conflicts") roles = [{ "name": role_name, "conflicts": ", ".join(metadata.get("conflicts", ["-"])) } for role_name, metadata in data["roles_metadata"].iteritems()] self.serializer.print_to_output( roles, format_table(roles, acceptable_keys=acceptable_keys))
def list(self, params): """Print all available releases: fuel release --list Print release with specific id=1: fuel release --rel 1 """ acceptable_keys = ("id", "name", "state", "operating_system", "version") if params.release: release = Release(params.release) data = [release.get_fresh_data()] else: data = Release.get_all_data() self.serializer.print_to_output( data, format_table(data, acceptable_keys=acceptable_keys))
def configure_release(self, params): """To configure RedHat release: fuel rel --rel <id of RedHat release> \\ -c -U <username> -P <password> To configure RedHat release with satellite server: fuel rel --rel <...> -c -U <...> -P <...> \\ --satellite-server-hostname <hostname> --activation-key <key> """ release = Release(params.release) release_response = release.configure(params.username, params.password, satellite_server_hostname=None, activation_key=None) self.serializer.print_to_output( release_response, "Credentials for release with id={0}" " were modified.".format(release.id))
def deployment_tasks(self, params): """Modify deployment_tasks for release. fuel rel --rel 1 --deployment-tasks --download fuel rel --rel 1 --deployment-tasks --upload """ release = Release(params.release) dir_path = self.full_path_directory( params.dir, 'release_{0}'.format(params.release)) full_path = '{0}/deployment_tasks'.format(dir_path) if params.download: tasks = release.get_deployment_tasks() self.serializer.write_to_path(full_path, tasks) print("Deployment tasks for release {0} " "downloaded into {1}.yaml.".format(release.id, full_path)) elif params.upload: tasks = self.serializer.read_from_file(full_path) release.update_deployment_tasks(tasks) print("Deployment tasks for release {0}" " uploaded from {1}.yaml".format(release.id, dir_path))
def network(self, params): """Modify release networks configuration. fuel rel --rel 1 --network --download fuel rel --rel 2 --network --upload """ release = Release(params.release) dir_path = self.full_path_directory( params.dir, 'release_{0}'.format(params.release)) full_path = '{0}/networks'.format(dir_path) if params.download: networks = release.get_networks() self.serializer.write_to_path(full_path, networks) print("Networks for release {0} " "downloaded into {1}.yaml".format(release.id, full_path)) elif params.upload: networks = self.serializer.read_from_file(full_path) release.update_networks(networks) print("Networks for release {0} uploaded from {1}.yaml".format( release.id, full_path))
def sync_deployment_tasks(self, params): """Upload tasks for different releases based on directories. The string identifier for the release(s) to update is expected to be found in the path (see `fuel release`), like: /etc/puppet/<release>/ /etc/puppet/liberty-9.0 fuel rel --sync-deployment-tasks --dir /etc/puppet/liberty-9.0/ fuel rel --sync-deployment-tasks --fp '*tasks.yaml' In case no directory was provided: fuel rel --sync-deployment-tasks The current directory will be used """ all_rels = Release.get_all_data() real_path = os.path.realpath(params.dir) serialized_tasks = defaultdict(list) versions = set([r['version'] for r in all_rels]) for file_name in utils.iterfiles(real_path, params.filepattern): for version in versions: if version in file_name: serialized_tasks[version].extend( self.serializer.read_from_full_path(file_name)) for rel in all_rels: release = Release(rel['id']) data = serialized_tasks.get(rel['version']) if data: release.update_deployment_tasks(data) print("Deployment tasks synchronized for release" " {0} of version {1}".format(rel['name'], rel['version'])) else: print("No tasks were synchronized for release {0} " "of version {1}.(Hint: nothing matched " "{2}/{1}/{3})".format(rel['name'], rel['version'], real_path, params.filepattern))
def sync_deployment_tasks(self, params): """Upload tasks for different releases based on directories. Unique identifier of the release should in the path, like: /etc/puppet/2014.2-6.0/ fuel rel --sync-deployment-tasks --dir /etc/puppet/2014.2-6.0/ fuel rel --sync-deployment-tasks --fp '*tasks.yaml' In case no directory will be provided: fuel rel --sync-deployment-tasks Current directory will be used """ all_rels = Release.get_all_data() real_path = os.path.realpath(params.dir) serialized_tasks = defaultdict(list) versions = set([r['version'] for r in all_rels]) for file_name in utils.iterfiles(real_path, params.filepattern): for version in versions: if version in file_name: serialized_tasks[version].extend( self.serializer.read_from_full_path(file_name)) for rel in all_rels: release = Release(rel['id']) data = serialized_tasks.get(rel['version']) if data: release.update_deployment_tasks(data) print("Deployment tasks synchronized for release" " {0} of version {1}".format(rel['name'], rel['version'])) else: print("No tasks found for release {0} " "of version {1}".format(rel['name'], rel['version']))