/srv/irclogs.ubuntu.com/2015/11/05/#juju.txt

=== natefinch-afk is now known as natefinch
gennadiyhi all, i have to use juju-reboot command in the end of install hook. but i got error - juju.worker.uniter.context context.go:559 updating agent status: cannot set invalid status "rebooting"08:09
gennadiyin the log file08:09
gennadiyis it ok?08:09
jamgennadiy: that sounds more like you are calling "status-set rebooting" before you call "juju-reboot". Is that true?08:10
gennadiyno08:10
jamthe syntax for status-set would be: status-set maintenance "rebooting"08:10
gennadiyi think this command tries to setup it08:10
jamhm, nm, it does look like rebooting is one of the status codes08:11
jamgennadiy:08:11
jamsorry, can you do "juju status" and pastebin it?08:11
gennadiyalso if you try to use `juju-reboot -now` - install process will be infinite08:11
jamIt sounds like there might be a version mismatche.08:12
gennadiyjuju version - 1.25.0-trusty-amd6408:12
gennadiycurrently juju status of my service is started. but i see the error in log of unit08:13
gennadiy2015-11-05 08:07:49 ERROR juju.worker.uniter.context context.go:559 updating agent status: cannot set invalid status "rebooting" 2015-11-05 08:07:49 ERROR juju.worker.uniter.filter filter.go:137 tomb: dying 2015-11-05 08:07:49 ERROR juju.worker runner.go:212 fatal "uniter": machine needs to reboot 2015-11-05 08:07:49 ERROR juju.api.watcher watcher.go:84 error trying to stop watcher: connection is shut down 2015-11-05 08:07:49 ERROR juju.api.watcher watcher.g08:14
gennadiyit's agent.conf grom machine08:15
gennadiytag: machine-162 datadir: /var/lib/juju logdir: /var/log/juju nonce: machine-0:3538ecd9-69aa-4c7f-840f-77857c0dc303 jobs: - JobHostUnits upgradedToVersion: 1.24.608:16
gennadiyseems we use different version of juju master and juju agents08:16
gennadiyam i right?08:16
gnuoyjamespage, fwiw I can't create the openvswitch-odl to neutron-gateway relationship with standard amulet, amulet refuses to create a relation when the interface isn't specified and juju refuses to create a relation when the interface is specified on both sides if that interface is juju-info09:23
stoI'm trying to deploy openstack liberty with juju and my installation is unable to finish because I can't configure keystone... my problem is the same as the one described in https://bugs.launchpad.net/charms/+source/keystone/+bug/150938211:58
mupBug #1509382: shared-db-relation-changed hook failure, unable to establish connection http://localhost:35347/v2.0/tenants <oil> <keystone (Juju Charms Collection):New> <https://launchpad.net/bugs/1509382>11:58
stoAny hints?11:58
=== jog_ is now known as jog
matt_dupreHi - I'm working on some OpenStack charms, and I've got a problem with the nova-compute charm where I'm not sure what the right solution is15:34
matt_dupreI need to install nova-api-metadata (in another charm), but the neutron_plugin_changed hook on nova-compute is purging it when metadata-shared-secret isn't set15:37
firlanyone on that knows how to set the http proxy for apt with maas 1.8?15:43
lazypowermatt_dupre: this sounds systemic with managing config in the wrong charm. Are you sending the data you need over the neutron_plugin interface so it can be rendered?15:50
lazypowermatt_dupre: if not, can you send a quick mail to the list that I can direct the OpenStack charmers team at to follow up on? I know that most of the openstack charms manage the config files so there's no conditions like you're outlining above, where nova is wiping your plugin config15:51
lazypoweractually matt_dupre - a bug would be best16:07
lazypowermatt_dupre - https://bugs.launchpad.net/charms/+source/nova-compute/+filebug16:07
matt_duprelazypower: Thanks - can I just check exactly what you think is wrong?16:10
matt_dupreI'm still trying to figure out exactly which components have responsibility for which bits of metadata16:10
lazypowermatt_dupre There's nova-api/neutron-api interfaces to send config data over, so the openstack charm in question manages that template file16:11
lazypowerif it doesn't get the bits it needs to manage, it will overwrite anything you do in your subordinate, when it re-runs its template generator16:11
lazypowerstokachu i'm moving us here, as we're talking about some stuff that the public will find interesting (hopefully) - looking @ interface layers, and writing reactive charms16:41
stokachulazypower: ok cool16:42
stokachugoing to try and reproduce the add-unit issue with global relation scope16:43
gennadiyhi all, i know if we try to deploy bundle by juju-gui it will not expose services(juju gui ignore expose: true). a few days ago it was confirmed in this channel too. but i can't find link to this bug. can somebody help me with this?16:43
lazypowero/ gennadiy16:45
lazypowergennadiy: it doesn't appear that it was filed - https://bugs.launchpad.net/juju-gui?field.searchtext=expose16:46
lazypowerstokachu cory_fu - so for reference, we're talking about https://pythonhosted.org/charms.reactive/charms.reactive.relations.html#charms.reactive.relations.scopes16:48
stokachu<cory_fu> stokachu: Regardless of the scope, handlers on each unit should still fire.  Also, handlers should still fire for each unit that's added to the conversation, though the data on the conversation may not change (and if the interface layer or handlers skip on no change, they could be filtered out that way)16:50
stokachucory_fu: ok, im going to try to reproduce this on a clean environment16:50
stokachui was getting install hook failures because my nodejs event wasn't being acted on16:50
cory_fuRight.  Conversation scopes are only about how the units data are grouped and not how handlers are triggered.16:51
stokachuso something else is going on?16:51
lazypowerah, cory_fu  - i thought you could negate some of the bheavior with scopes16:51
lazypowermy mistake16:51
cory_fuConversation scopes are definitely confusing.  Each state set by an interface layer is associated with a conversation.  The conversation can include one or more related units.  When a state handler is triggered, the Relation class contains a list of all the conversations that the state applies to, and each conversation has a list of related units that it includes.  Any data sent out to a conversation has the same data sent to all related units, and16:58
cory_futhe data coming in from a conversation is aggregated across all units (expected to be the same, or not set for all but one of the units)16:58
lazypowercory_fu : we need you + a white board + video/audio feed17:01
cory_fuThe idea is that the relation is a two-way evolving conversation between the two endpoints.  And different units can be at different stages of the conversation.  But sometimes it makes sense to group units of a service into a single conversation.  And sometimes you fully expect to only be having a single conversation.17:01
lazypowerVery true And I like that we now have sopes for relation conversations17:01
lazypowerhaving an illustration of what units are participating, and how, would be helpful to illustrate the scopes17:02
cory_fuOne important point to note is that conversations are about the communication protocol, and thus should be entirely handled by the Relation class in the interface layer.  They should *never* be exposed outside of the interface layer.17:03
lazypowerRight, at that oint you're only working with a databag that has the data points17:03
lazypoweror is waiting to receive the data points to relay over the wire17:03
cory_fuTo the charm layers, i.e., the state handlers, the Relation class should provide a meaningful API.  So you should be able to ask it things like "What databases are being requested and by whom" or "What datanodes are currently registered"17:08
stokachuok looks like i can't reproduce the add-unit issue17:09
stokachuso far all units are handling my nodejs reaction properly17:09
cory_fustokachu: What layers is this involving?17:11
stokachucory_fu: includes: ['layer:basic', 'layer:nodejs', 'layer:nginx', 'interface:mysql']17:11
stokachucory_fu: and this https://github.com/battlemidget/juju-layer-ghost/blob/master/reactive/ghost.py17:12
stokachuis the top level one17:12
cory_fustokachu: Which handler were you seeing not trigger?17:16
cory_fuAnd what were you doing an add-unit on?   The ghost charm?17:16
stokachucory_fu: well it looks like it is triggering on this run, but my upstart service is in a infinite loop17:16
stokachucory_fu: yea add-unit -n 3 ghost17:16
stokachuthe nodejs.install_runtime wasn't being called on my previous deploy17:16
stokachuand node wasn't available17:17
cory_fustokachu: I'm a little confused by how the nodejs and nginx layers are structured.  Is there ever a case where you would be using those layers but not want nginx or nodejs installed?17:29
stokachucory_fu: dont quite follow17:30
cory_fuThe point of these layers is to provide nginx and nodejs.  Why do you have them blocking install until the lower layer explicitly requests it?17:31
cory_fuI would expect each of those layers to just handle the install hook and install the software.17:32
stokachui was having issues where the install hook was being requested in a loop17:32
stokachuso i put the install hooks in the topmost (ghost) layer17:33
stokachuand just left reactive states in the other layers17:33
stokachualso if i have an install hook in the nginx layer and an install hook in the ghost layer17:33
stokachuhow will they react?17:34
cory_fuAs long as you're using charms.reactive.hook in a file under reactive/, they should work together just fine, though you won't be able to determine which runs first17:34
stokachuso that's my problem as ghost was running prior to nginx install hook17:35
cory_fuAlso, a given @hook block should only get called once per Juju hook invocation17:35
stokachuso if i have 2 install hooks in 2 seperate layers does that count as 1 juju hook invocation?17:35
stokachuwithout being able to call install hooks for each layer seperately i can't build on the previous layer17:37
stokachuso i have to rely on calling out reactive states17:37
cory_fu@hook handlers are just like state handlers, except that they run before any state handlers.17:38
cory_fuYou can have multiple, from any layers, and they will all be called17:38
stokachubut if my ghost hook handler runs before the nginx one17:38
stokachuhow will i know when nginx.available is set17:38
cory_fuIn general, you probably don't want to have @hook handlers in your charm layer, with the exception of config-changed17:39
cory_fuYou just want to have a @when('nginx.available')17:39
stokachuso my charm layer being ghost?17:39
cory_fuRight17:39
stokachuand what about nginx layer17:39
stokachuthat has the install hook?17:39
cory_fuSure.  As can the nodejs layer17:40
stokachuok lemme try that17:40
cory_fuHave you looked at how I did the apache-php layer?  https://github.com/johnsca/apache-php17:40
stokachuyea that's what i was basing it off of17:40
stokachubut i was hitting problems as described above17:40
stokachuthings firing and reinstalling the ghost application ina  loop etc17:41
cory_fuMy guess is that you need to add a @when_not('ghost.installed') or @only_once to prevent that17:41
stokachuah ok17:41
stokachucory_fu: one last thing, can i have 2 seperate @when decorators for a single method17:42
stokachuto reprenset or?17:42
cory_fuBecause state handlers will get re-run every time if their conditions are met.17:42
cory_fuYou can, but it's always and.  There's no way to say @when(A or B)  :(17:42
stokachuok that may be a nice feature to request17:43
cory_fuI'll probably be adding a @when_any17:43
stokachucory_fu: and are conditions persisted17:43
cory_fustokachu: Yes, states are persisted until being removed.  This is so that states set by relations are persisted until all required relation states are met17:43
cory_fuYou can remove a state at any time, though, with remove_state.  But a given layer should only remove states that it set17:44
stokachuok makes sense17:44
stokachuthat may be my problem to with things running in a loop17:44
cory_fu(Or that it is using as a communication channel, possibly)17:44
stokachuso if i run juju deploy, juju upgrade-charm17:45
stokachuany state that isn't removed is persisted17:45
stokachu?17:45
cory_fuYes17:45
stokachuok good to know, is that documented?17:45
stokachui may file a bug on it17:45
jcastrohttps://plus.google.com/hangouts/_/hoaevent/AP36tYfzoBSPiWHfP96qjEEawO6jFVkMeJg1WPdT6LbMApFNuQEvMA?hl=en&authuser=017:54
jcastrowe're having an office hours in 5 minutes if anyone wants to join!17:54
cory_fustokachu: I guess it's not explicitly called out, no17:55
dweavermarcoceppi_, where were all the benchmarking charms you used in the demo, e.g. siege, collector?18:31
lazypowerdweaver - here's the siege charm itself - https://github.com/juju-solutions/siege18:33
dweaverlazypower, thanks18:34
lazypowerdweaver - The collector + gui for benchmark ui (bui) - will be released soon. I'm sure we will announce to the list when that happens18:34
urthmoverbootstrapping juju errors out with "/var/lib/juju/tools/1.25.0-trusty-amd64/tools.tar.gz: No such file or directory\nERROR failed to bootstrap environment: subprocess encountered error code 1" http://paste.ubuntu.com/13114841/19:08
urthmoverCan anyone help me with this issue?19:08
stokachuurthmover: (7) Failed to connect to streams.canonical.com port 443: Connection timed out\ntools from https://streams.canonical.com/juju/tools/releases/juju-1.25.0-trusty-amd64.tgz19:12
stokachumake sure you've setup networking properly for MAAS19:12
stokachua common problem is not enabling IP Forwarding on the MAAS server19:12
stokachuhttps://wiki.ubuntu.com/OpenStack/Installer/debugging/multi-install19:13
urthmoverstokachu: thank you...checking19:13
urthmoverstokachu: I'm applied that nat'ing  retrying the juju bootstrapping.  Is there a way to test if it's working properly before I wait around for the install to finish?19:37
stokachuurthmover: you can do a simple juju boostrap outside of the installer19:38
stokachuurthmover: https://jujucharms.com/docs/1.25/config-maas19:38
urthmoverstokachu: ok...(looking up that syntax)19:38
urthmoverstokachu: awesome thanks for the link19:38
stokachunp19:38
stokachurun juju boostrap --debug19:38
stokachucory_fu: you mind doing a quick lookover my two layers, https://github.com/battlemidget/juju-layer-nginx and https://github.com/battlemidget/juju-layer-node19:45
stokachui did some refactoring19:45
cory_fuSure19:45
stokachucory_fu: i also updated https://github.com/battlemidget/juju-layer-ghost/blob/master/reactive/ghost.py to make use of the 2 emitted states from nginx and nodejs19:48
stokachubut it doesn't seem to be firing, the config-changed hook is run for the ghost charm though19:48
urthmoverstokachu: dude you're a genius....I think it' just went farther....scheeeet19:48
urthmoverschWeeeet19:49
stokachuurthmover: haha19:49
urthmover:)19:49
cory_fustokachu: Your nodejs layer is setting 'nodejs.available' but your ghost layer is looking for 'nodejs.installed'19:49
stokachuurthmover: if that works then you can destroy the environment and re-run the installer19:49
stokachucory_fu: crap19:49
cory_fuBut otherwise it looks really good19:50
urthmoverstokachu: actually this is re-running the installer......goes pretty fast cause it's all on a local vmware workstation instance (locally)19:50
stokachucory_fu: ok cool thanks :)19:50
cory_fuAlthough19:50
urthmoverstokachu: the only goofy part   (as I test this) is I have to manually start the machines...cause wakeonlan doesn't work right19:50
cory_fuYou also need to add a state to indicate that ghost is installed, or add @only_once to the install handler19:50
stokachucory_fu: so https://github.com/battlemidget/juju-layer-ghost/blob/master/reactive/ghost.py#L49 add @only_once decorator additionally?19:51
cory_fuYep19:51
stokachuok cool19:51
stokachucory_fu: do you have any example on using only_once?19:52
stokachuurthmover: yea that sucks, if you use straight bare metal with KVM it supports virsh so you don't have to manually power on/off those vm's19:53
stokachuassuming you aren't on awindows machine19:53
stokachucory_fu: like this: http://paste.ubuntu.com/13115254/19:56
stokachu?19:56
urthmoverstokachu: Here;s a highler level question for you then, I use a vmware cluster that is controlled by a hosting provider.  I have fullish vcenter access, but not api or cli access.  I'm able to build guests at will.  How would you reccomend I build out this environment to support openstack and containers(docker, rkt)?19:57
stokachuurthmover: so MAAS supports VMware as a power type so that may be your best bet for utilizing that19:59
urthmoverstokachu: my only mission is to support self contained *nix "server/containers" so that developers can have root install their software, run their apps, and probably break'm often.  I'm trying to move away from monolithic web servers that I'm not willing to give up root access19:59
stokachuas for the layout just make sure your VMS have 2 disks and 2 nics19:59
stokachui think autopilot is a minimum of 5-6 servers all having 2 disks and 2nics20:00
urthmoverstokachu: from what little that I've read though, you need cli or api access to control vmware from maas20:00
stokachuurthmover: sec lemme ask20:00
urthmoverstokachu: if building a case to request this from the hosting provider is necessary to gain cli/api access, I'm willing to do that, but the process is long and turn around on those changes take months with this big stupid provider20:01
urthmoverstokachu: thank you20:01
urthmoverstokachu: I'm not opposed to keeping all the time if that makes a difference20:02
cory_fustokachu: Yep!20:03
stokachucory_fu: perfect thanks20:03
stokachuurthmover: so far maas supports vmware workstations, esxi20:03
stokachuurthmover: im still waiting on what is supported vcenter wise20:03
stokachuand what the requirements are (if its only cli atm)20:04
urthmoverstokachu: ok20:04
urthmoverstokachu: perfect..thank you very much for asking20:04
urthmoverstokachu: I joined #juju-dev thinking maybe the conversation is in there20:05
stokachuurthmover: nah you want #maas20:05
urthmoverstokachu: ok cool I'll jump in there20:05
stokachuand montpillo is the guy who knows20:05
urthmoverstokachu: I'll watch for him to speak up  thank you a bunch for your help thus far20:06
=== ajmitch_ is now known as ajmitch

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!